diff --git a/src/FDM/CMakeLists.txt b/src/FDM/CMakeLists.txt
index 9f1b0308e..2f1dc6a09 100644
--- a/src/FDM/CMakeLists.txt
+++ b/src/FDM/CMakeLists.txt
@@ -7,6 +7,7 @@ set(SP_FDM_SOURCES
 	SP/Balloon.cxx
 	SP/BalloonSim.cpp
 	SP/MagicCarpet.cxx
+        SP/AISim.cpp
 	)
 endif()
 
diff --git a/src/FDM/fdm_shell.cxx b/src/FDM/fdm_shell.cxx
index 02c9efc82..b4ff7a6b2 100644
--- a/src/FDM/fdm_shell.cxx
+++ b/src/FDM/fdm_shell.cxx
@@ -41,6 +41,7 @@
 #include <FDM/SP/ACMS.hxx>
 #include <FDM/SP/MagicCarpet.hxx>
 #include <FDM/SP/Balloon.h>
+#include <FDM/SP/AISim.hpp>
 #endif
 #include <FDM/ExternalNet/ExternalNet.hxx>
 #include <FDM/ExternalPipe/ExternalPipe.hxx>
@@ -319,9 +320,11 @@ void FDMShell::createImplementation()
         _impl = new FGBalloonSim( dt );
     } else if ( model == "magic" ) {
         _impl = new FGMagicCarpet( dt );
+//  } else if ( model == "aisim" ) {
+//      _impl = new FGAISim( dt );
     }
 #else
-    else if (( model == "ada" )||(model == "acms")||( model == "balloon" )||( model == "magic" ))
+    else if (( model == "ada" )||(model == "acms")||( model == "balloon" )||( model == "magic" )||( model == "aisim" ))
     {
         fdmUnavailable = true;
     }
diff --git a/src/GUI/CocoaFileDialog.hxx b/src/GUI/CocoaFileDialog.hxx
index 71965215b..98e87c141 100644
--- a/src/GUI/CocoaFileDialog.hxx
+++ b/src/GUI/CocoaFileDialog.hxx
@@ -34,7 +34,7 @@ public:
     virtual void close();
 private:
     class CocoaFileDialogPrivate;
-    std::auto_ptr<CocoaFileDialogPrivate> d;
+    std::unique_ptr<CocoaFileDialogPrivate> d;
 };
 
 #endif // FG_COCOA_FILE_DIALOG_HXX
diff --git a/src/GUI/CocoaMouseCursor.hxx b/src/GUI/CocoaMouseCursor.hxx
index bc5f7b8b8..eee7279d6 100644
--- a/src/GUI/CocoaMouseCursor.hxx
+++ b/src/GUI/CocoaMouseCursor.hxx
@@ -20,7 +20,7 @@
 #ifndef FG_GUI_COCOA_MOUSE_CURSOR_HXX
 #define FG_GUI_COCOA_MOUSE_CURSOR_HXX
 
-#include <memory> // for auto_ptr
+#include <memory> // for unique_ptr
 
 #include "MouseCursor.hxx"
 
@@ -40,7 +40,7 @@ public:
 
 private:
     class CocoaMouseCursorPrivate;
-    std::auto_ptr<CocoaMouseCursorPrivate> d;
+    std::unique_ptr<CocoaMouseCursorPrivate> d;
 };
 
 
diff --git a/src/GUI/FGCocoaMenuBar.hxx b/src/GUI/FGCocoaMenuBar.hxx
index 694561aae..f18baf496 100644
--- a/src/GUI/FGCocoaMenuBar.hxx
+++ b/src/GUI/FGCocoaMenuBar.hxx
@@ -58,7 +58,7 @@ public:
   
   class CocoaMenuBarPrivate;
 private:
-  std::auto_ptr<CocoaMenuBarPrivate> p;
+  std::unique_ptr<CocoaMenuBarPrivate> p;
   
 };
 
diff --git a/src/GUI/FGFontCache.cxx b/src/GUI/FGFontCache.cxx
index 562de51cf..29d9cb8a7 100644
--- a/src/GUI/FGFontCache.cxx
+++ b/src/GUI/FGFontCache.cxx
@@ -34,7 +34,7 @@
 // FGFontCache class.
 ////////////////////////////////////////////////////////////////////////
 
-static std::auto_ptr<FGFontCache> global_fontCacheInstance;
+static std::unique_ptr<FGFontCache> global_fontCacheInstance;
 
 
 extern puFont FONT_HELVETICA_14;
diff --git a/src/GUI/FGWindowsMenuBar.hxx b/src/GUI/FGWindowsMenuBar.hxx
index de9deb98a..c0d46233d 100644
--- a/src/GUI/FGWindowsMenuBar.hxx
+++ b/src/GUI/FGWindowsMenuBar.hxx
@@ -58,7 +58,7 @@ public:
   
   class WindowsMenuBarPrivate;
 private:
-  std::auto_ptr<WindowsMenuBarPrivate> p;
+  std::unique_ptr<WindowsMenuBarPrivate> p;
 };
 
 #endif // __MENUBAR_HXX
diff --git a/src/GUI/FileDialog.hxx b/src/GUI/FileDialog.hxx
index 02323679f..f6331cc46 100644
--- a/src/GUI/FileDialog.hxx
+++ b/src/GUI/FileDialog.hxx
@@ -3,7 +3,7 @@
 #ifndef FG_GUI_FILE_DIALOG_HXX
 #define FG_GUI_FILE_DIALOG_HXX 1
 
-#include <memory> // for std::auto_ptr
+#include <memory> // for std::unique_ptr
 
 #include <simgear/misc/strutils.hxx> // for string_list
 #include <simgear/misc/sg_path.hxx>
@@ -79,7 +79,7 @@ protected:
     string_list _filterPatterns;
     std::string _placeholder;
     bool _showHidden;
-    std::auto_ptr<Callback> _callback;
+    std::unique_ptr<Callback> _callback;
 };
 
 #endif // FG_GUI_FILE_DIALOG_HXX
diff --git a/src/GUI/InstallSceneryDialog.cxx b/src/GUI/InstallSceneryDialog.cxx
index 390ff4847..f2a466249 100644
--- a/src/GUI/InstallSceneryDialog.cxx
+++ b/src/GUI/InstallSceneryDialog.cxx
@@ -122,7 +122,7 @@ private:
 
     QString m_extractDir;
     QStringList m_remainingPaths;
-    std::auto_ptr<simgear::TarExtractor> m_untar;
+    std::unique_ptr<simgear::TarExtractor> m_untar;
     bool m_error;
     quint64 m_totalBytes;
     quint64 m_bytesRead;
diff --git a/src/GUI/WindowsMouseCursor.hxx b/src/GUI/WindowsMouseCursor.hxx
index 6b9f5dca8..d2b55da73 100644
--- a/src/GUI/WindowsMouseCursor.hxx
+++ b/src/GUI/WindowsMouseCursor.hxx
@@ -20,7 +20,7 @@
 #ifndef FG_GUI_WINDOWS_MOUSE_CURSOR_HXX
 #define FG_GUI_WINDOWS_MOUSE_CURSOR_HXX
 
-#include <memory> // for auto_ptr
+#include <memory> // for unique_ptr
 
 #include "MouseCursor.hxx"
 
@@ -40,7 +40,7 @@ public:
 
 private:
     class WindowsMouseCursorPrivate;
-    std::auto_ptr<WindowsMouseCursorPrivate> d;
+    std::unique_ptr<WindowsMouseCursorPrivate> d;
 };
 
 
diff --git a/src/GUI/new_gui.hxx b/src/GUI/new_gui.hxx
index 4ebbdcb2c..4df077d48 100644
--- a/src/GUI/new_gui.hxx
+++ b/src/GUI/new_gui.hxx
@@ -9,7 +9,7 @@
 
 #include <vector>
 #include <map>
-#include <memory> // for auto_ptr on some systems
+#include <memory> // for unique_ptr on some systems
 #include <cstring> // for strcmp in lstr() (in this header, alas)
 
 class FGMenuBar;
@@ -222,7 +222,7 @@ private:
     // Read all the configuration files in a directory.
     void readDir (const SGPath& path);
 
-    std::auto_ptr<FGMenuBar> _menubar;
+    std::unique_ptr<FGMenuBar> _menubar;
     FGDialog * _active_dialog;
     typedef std::map<std::string,FGDialog *> DialogDict;
     DialogDict _active_dialogs;