Index: /code/branches/cpp11_v2/src/OrxonoxConfig.h.in
===================================================================
--- /code/branches/cpp11_v2/src/OrxonoxConfig.h.in	(revision 10770)
+++ /code/branches/cpp11_v2/src/OrxonoxConfig.h.in	(revision 10771)
@@ -216,24 +216,4 @@
 }
 
-// Import general purpose smart pointers
-namespace boost
-{
-    template<class T> class scoped_ptr;
-    template<class T> class shared_ptr;
-    template<class T> class weak_ptr;
-    template<class T> class intrusive_ptr;
-    template<class T> class shared_array;
-    template<class T> class scoped_array;
-}
-namespace orxonox
-{
-    using boost::scoped_ptr;
-    using boost::shared_ptr;
-    using boost::weak_ptr;
-    using boost::intrusive_ptr;
-    using boost::shared_array;
-    using boost::scoped_array;
-}
-
 // Define Boost Filesystem version
 #include <boost/version.hpp>
Index: /code/branches/cpp11_v2/src/external/cpptcl/cpptcl.cc
===================================================================
--- /code/branches/cpp11_v2/src/external/cpptcl/cpptcl.cc	(revision 10770)
+++ /code/branches/cpp11_v2/src/external/cpptcl/cpptcl.cc	(revision 10771)
@@ -17,7 +17,4 @@
 using namespace Tcl::details;
 using namespace std;
-// boost::shared_ptr conflicts with the new std::shared_ptr
-//using namespace boost;
-
 
 result::result(Tcl_Interp *interp) : interp_(interp) {}
@@ -168,5 +165,5 @@
 
 // map of polymorphic callbacks
-typedef map<string, boost::shared_ptr<callback_base> > callback_interp_map;
+typedef map<string, std::shared_ptr<callback_base> > callback_interp_map;
 typedef map<Tcl_Interp *, callback_interp_map> callback_map;
 
@@ -181,5 +178,5 @@
 
 // map of object handlers
-typedef map<string, boost::shared_ptr<class_handler_base> > class_interp_map;
+typedef map<string, std::shared_ptr<class_handler_base> > class_interp_map;
 typedef map<Tcl_Interp *, class_interp_map> class_handlers_map;
 
@@ -492,5 +489,5 @@
 
 void class_handler_base::register_method(string const &name,
-     boost::shared_ptr<object_cmd_base> ocb, policies const &p)
+     std::shared_ptr<object_cmd_base> ocb, policies const &p)
 {
      methods_[name] = ocb;
@@ -991,5 +988,5 @@
 
 void interpreter::add_function(string const &name,
-     boost::shared_ptr<callback_base> cb, policies const &p)
+     std::shared_ptr<callback_base> cb, policies const &p)
 {
      Tcl_CreateObjCommand(interp_, name.c_str(),
@@ -1001,5 +998,5 @@
 
 void interpreter::add_class(string const &name,
-     boost::shared_ptr<class_handler_base> chb)
+     std::shared_ptr<class_handler_base> chb)
 {
      class_handlers[interp_][name] = chb;
@@ -1007,5 +1004,5 @@
 
 void interpreter::add_constructor(string const &name,
-     boost::shared_ptr<class_handler_base> chb, boost::shared_ptr<callback_base> cb,
+     std::shared_ptr<class_handler_base> chb, std::shared_ptr<callback_base> cb,
      policies const &p)
 {
Index: /code/branches/cpp11_v2/src/external/cpptcl/cpptcl.h
===================================================================
--- /code/branches/cpp11_v2/src/external/cpptcl/cpptcl.h	(revision 10770)
+++ /code/branches/cpp11_v2/src/external/cpptcl/cpptcl.h	(revision 10771)
@@ -17,5 +17,4 @@
 #include <map>
 #include <vector>
-#include <boost/shared_ptr.hpp>
 #include <boost/bind.hpp>
 
@@ -141,5 +140,5 @@
 
      void register_method(std::string const &name,
-          boost::shared_ptr<object_cmd_base> ocb, policies const &p);
+          std::shared_ptr<object_cmd_base> ocb, policies const &p);
 
      policies & get_policies(std::string const &name);
@@ -148,5 +147,5 @@
      typedef std::map<
           std::string,
-          boost::shared_ptr<object_cmd_base>
+          std::shared_ptr<object_cmd_base>
           > method_map_type;
 
@@ -214,5 +213,5 @@
 {
 public:
-     class_definer(boost::shared_ptr<class_handler<C> > ch) : ch_(ch) {}
+     class_definer(std::shared_ptr<class_handler<C> > ch) : ch_(ch) {}
 
      template <typename R>
@@ -221,5 +220,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method0<C, R>(f)), p);
           return *this;
@@ -231,5 +230,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method0<C, R>(f)), p);
           return *this;
@@ -241,5 +240,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method1<C, R, T1>(f)), p);
           return *this;
@@ -251,5 +250,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method1<C, R, T1>(f)), p);
           return *this;
@@ -261,5 +260,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method2<C, R, T1, T2>(f)), p);
           return *this;
@@ -271,5 +270,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method2<C, R, T1, T2>(f)), p);
           return *this;
@@ -281,5 +280,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method3<C, R, T1, T2, T3>(f)), p);
           return *this;
@@ -291,5 +290,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method3<C, R, T1, T2, T3>(f)), p);
           return *this;
@@ -301,5 +300,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method4<C, R, T1, T2, T3, T4>(f)), p);
           return *this;
@@ -312,5 +311,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method4<C, R, T1, T2, T3, T4>(f)), p);
           return *this;
@@ -323,5 +322,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method5<C, R, T1, T2, T3, T4, T5>(f)), p);
           return *this;
@@ -334,5 +333,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method5<C, R, T1, T2, T3, T4, T5>(f)), p);
           return *this;
@@ -345,5 +344,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method6<C, R, T1, T2, T3, T4, T5, T6>(f)),
                p);
@@ -358,5 +357,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method6<C, R, T1, T2, T3, T4, T5, T6>(f)),
                p);
@@ -371,5 +370,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method7<C, R,
                     T1, T2, T3, T4, T5, T6, T7>(f)), p);
@@ -384,5 +383,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method7<C, R,
                     T1, T2, T3, T4, T5, T6, T7>(f)), p);
@@ -397,5 +396,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method8<C, R,
                     T1, T2, T3, T4, T5, T6, T7, T8>(f)), p);
@@ -410,5 +409,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method8<C, R,
                     T1, T2, T3, T4, T5, T6, T7, T8>(f)), p);
@@ -423,5 +422,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method9<C, R,
                     T1, T2, T3, T4, T5, T6, T7, T8, T9>(f)), p);
@@ -436,5 +435,5 @@
      {
           ch_->register_method(name,
-               boost::shared_ptr<details::object_cmd_base>(
+               std::shared_ptr<details::object_cmd_base>(
                     new details::method9<C, R,
                     T1, T2, T3, T4, T5, T6, T7, T8, T9>(f)), p);
@@ -443,5 +442,5 @@
 
 private:
-     boost::shared_ptr<class_handler<C> > ch_;
+     std::shared_ptr<class_handler<C> > ch_;
 };
 
@@ -482,5 +481,5 @@
      {
           add_function(name,
-               boost::shared_ptr<details::callback_base>(
+               std::shared_ptr<details::callback_base>(
                     new details::callback0<R>(f)), p);
      }
@@ -491,5 +490,5 @@
      {
           add_function(name,
-               boost::shared_ptr<details::callback_base>(
+               std::shared_ptr<details::callback_base>(
                     new details::callback1<R, T1>(f)), p);
      }
@@ -500,5 +499,5 @@
      {
           add_function(name,
-               boost::shared_ptr<details::callback_base>(
+               std::shared_ptr<details::callback_base>(
                     new details::callback2<R, T1, T2>(f)), p);
      }
@@ -509,5 +508,5 @@
      {
           add_function(name,
-               boost::shared_ptr<details::callback_base>(
+               std::shared_ptr<details::callback_base>(
                     new details::callback3<R, T1, T2, T3>(f)), p);
      }
@@ -518,5 +517,5 @@
      {
           add_function(name,
-               boost::shared_ptr<details::callback_base>(
+               std::shared_ptr<details::callback_base>(
                     new details::callback4<R, T1, T2, T3, T4>(f)), p);
      }
@@ -528,5 +527,5 @@
      {
           add_function(name,
-               boost::shared_ptr<details::callback_base>(
+               std::shared_ptr<details::callback_base>(
                     new details::callback5<R, T1, T2, T3, T4, T5>(f)), p);
      }
@@ -538,5 +537,5 @@
      {
           add_function(name,
-               boost::shared_ptr<details::callback_base>(
+               std::shared_ptr<details::callback_base>(
                     new details::callback6<R, T1, T2, T3, T4, T5, T6>(f)), p);
      }
@@ -548,5 +547,5 @@
      {
           add_function(name,
-               boost::shared_ptr<details::callback_base>(
+               std::shared_ptr<details::callback_base>(
                     new details::callback7<R,
                     T1, T2, T3, T4, T5, T6, T7>(f)), p);
@@ -559,5 +558,5 @@
      {
           add_function(name,
-               boost::shared_ptr<details::callback_base>(
+               std::shared_ptr<details::callback_base>(
                     new details::callback8<R,
                     T1, T2, T3, T4, T5, T6, T7, T8>(f)), p);
@@ -572,5 +571,5 @@
      {
           add_function(name,
-               boost::shared_ptr<details::callback_base>(
+               std::shared_ptr<details::callback_base>(
                     new details::callback9<R,
                     T1, T2, T3, T4, T5, T6, T7, T8, T9>(f)), p);
@@ -583,5 +582,5 @@
      details::class_definer<C> class_(std::string const &name)
      {
-          boost::shared_ptr<details::class_handler<C> > ch(
+          std::shared_ptr<details::class_handler<C> > ch(
                new details::class_handler<C>());
 
@@ -589,5 +588,5 @@
 
           add_constructor(name, ch,
-               boost::shared_ptr<details::callback_base>(
+               std::shared_ptr<details::callback_base>(
                     new details::callback0<C*>(&details::construct<
                          C, void, void, void, void, void, void, void,
@@ -608,5 +607,5 @@
                callback_type;
 
-          boost::shared_ptr<details::class_handler<C> > ch(
+          std::shared_ptr<details::class_handler<C> > ch(
                new details::class_handler<C>());
 
@@ -614,5 +613,5 @@
 
           add_constructor(name, ch,
-               boost::shared_ptr<details::callback_base>(
+               std::shared_ptr<details::callback_base>(
                     new callback_type(&details::construct<
                          C, T1, T2, T3, T4, T5, T6, T7, T8, T9>::doit)), p);
@@ -625,5 +624,5 @@
           std::string const &name, details::no_init_type const &)
      {
-          boost::shared_ptr<details::class_handler<C> > ch(
+          std::shared_ptr<details::class_handler<C> > ch(
                new details::class_handler<C>());
 
@@ -660,13 +659,13 @@
 
      void add_function(std::string const &name,
-          boost::shared_ptr<details::callback_base> cb,
+          std::shared_ptr<details::callback_base> cb,
           policies const &p = policies());
 
      void add_class(std::string const &name,
-          boost::shared_ptr<details::class_handler_base> chb);
+          std::shared_ptr<details::class_handler_base> chb);
 
      void add_constructor(std::string const &name,
-          boost::shared_ptr<details::class_handler_base> chb,
-          boost::shared_ptr<details::callback_base> cb,
+          std::shared_ptr<details::class_handler_base> chb,
+          std::shared_ptr<details::callback_base> cb,
           policies const &p = policies());
 
Index: /code/branches/cpp11_v2/src/libraries/core/CorePrecompiledHeaders.h
===================================================================
--- /code/branches/cpp11_v2/src/libraries/core/CorePrecompiledHeaders.h	(revision 10770)
+++ /code/branches/cpp11_v2/src/libraries/core/CorePrecompiledHeaders.h	(revision 10771)
@@ -50,4 +50,5 @@
 #include <sstream>  // 53
 #include <set>      // 50
+#include <memory>
 
 #include "util/Output.h" // 48
@@ -66,5 +67,4 @@
 #include <OgreColourValue.h> // 36
 #include <boost/preprocessor/cat.hpp> // 27
-#include <boost/shared_ptr.hpp> // 21
 
 #ifdef ORXONOX_COMPILER_MSVC
@@ -76,5 +76,4 @@
 #include "util/SubString.h"  // 14
 
-#include <boost/scoped_ptr.hpp> // 13
 #include <stack> // 12
 
Index: /code/branches/cpp11_v2/src/libraries/core/GUIManager.h
===================================================================
--- /code/branches/cpp11_v2/src/libraries/core/GUIManager.h	(revision 10770)
+++ /code/branches/cpp11_v2/src/libraries/core/GUIManager.h	(revision 10771)
@@ -40,4 +40,5 @@
 #include <map>
 #include <string>
+#include <memory>
 
 #if CEGUI_VERSION >= 0x000800
@@ -48,6 +49,4 @@
 #   include <CEGUIVersion.h>
 #endif
-
-#include <boost/shared_ptr.hpp>
 
 #include "util/DestructionHelper.h"
@@ -196,5 +195,5 @@
         CEGUI::LuaScriptModule*              scriptModule_;         //!< CEGUI's script module to use Lua
         CEGUI::System*                       guiSystem_;            //!< CEGUI's main system
-        shared_ptr<ResourceInfo>             rootFileInfo_;         //!< Resource information about the root script
+        std::shared_ptr<ResourceInfo>        rootFileInfo_;         //!< Resource information about the root script
         CEGUI::Logger*                       ceguiLogger_;          //!< CEGUI's logger to be able to log CEGUI errors in our log
         int                                  outputLevelCeguiLog_;  //!< CEGUI's log level
Index: /code/branches/cpp11_v2/src/libraries/core/Game.cc
===================================================================
--- /code/branches/cpp11_v2/src/libraries/core/Game.cc	(revision 10770)
+++ /code/branches/cpp11_v2/src/libraries/core/Game.cc	(revision 10771)
@@ -36,5 +36,4 @@
 
 #include <exception>
-#include <boost/weak_ptr.hpp>
 #include <loki/ScopeGuard.h>
 
@@ -72,6 +71,6 @@
     {
         std::string name_;
-        weak_ptr<GameStateTreeNode> parent_;
-        std::vector<shared_ptr<GameStateTreeNode>> children_;
+        std::weak_ptr<GameStateTreeNode> parent_;
+        std::vector<std::shared_ptr<GameStateTreeNode>> children_;
     };
 
@@ -124,5 +123,5 @@
 
         // The empty root state is ALWAYS loaded!
-        this->rootStateNode_ = shared_ptr<GameStateTreeNode>(new GameStateTreeNode());
+        this->rootStateNode_ = std::shared_ptr<GameStateTreeNode>(new GameStateTreeNode());
         this->rootStateNode_->name_ = "emptyRootGameState";
         this->loadedTopStateNode_ = this->rootStateNode_;
@@ -137,5 +136,5 @@
 
         assert(loadedStates_.size() <= 1); // Just empty root GameState
-        // Destroy all GameStates (shared_ptrs take care of actual destruction)
+        // Destroy all GameStates (std::shared_ptrs take care of actual destruction)
         constructedStates_.clear();
 
@@ -235,5 +234,5 @@
         while (this->requestedStateNodes_.size() > 0)
         {
-            shared_ptr<GameStateTreeNode> requestedStateNode = this->requestedStateNodes_.front();
+            std::shared_ptr<GameStateTreeNode> requestedStateNode = this->requestedStateNodes_.front();
             assert(this->loadedTopStateNode_);
             if (!this->loadedTopStateNode_->parent_.expired() && requestedStateNode == this->loadedTopStateNode_->parent_.lock())
@@ -281,5 +280,5 @@
                 orxout(user_error) << "This should really never happen!" << endl;
                 orxout(user_error) << "Unloading all GameStates depending on the one that crashed." << endl;
-                shared_ptr<GameStateTreeNode> current = this->loadedTopStateNode_;
+                std::shared_ptr<GameStateTreeNode> current = this->loadedTopStateNode_;
                 while (current->name_ != (*it)->getName() && current)
                     current = current->parent_.lock();
@@ -372,5 +371,5 @@
         }
 
-        shared_ptr<GameStateTreeNode> lastRequestedNode;
+        std::shared_ptr<GameStateTreeNode> lastRequestedNode;
         if (this->requestedStateNodes_.empty())
             lastRequestedNode = this->loadedTopStateNode_;
@@ -384,5 +383,5 @@
 
         // Check children first
-        std::vector<shared_ptr<GameStateTreeNode>> requestedNodes;
+        std::vector<std::shared_ptr<GameStateTreeNode>> requestedNodes;
         for (unsigned int i = 0; i < lastRequestedNode->children_.size(); ++i)
         {
@@ -397,5 +396,5 @@
         {
             // Check parent and all its grand parents
-            shared_ptr<GameStateTreeNode> currentNode = lastRequestedNode;
+            std::shared_ptr<GameStateTreeNode> currentNode = lastRequestedNode;
             while (currentNode != nullptr)
             {
@@ -424,5 +423,5 @@
     void Game::popState()
     {
-        shared_ptr<GameStateTreeNode> lastRequestedNode;
+        std::shared_ptr<GameStateTreeNode> lastRequestedNode;
         if (this->requestedStateNodes_.empty())
             lastRequestedNode = this->loadedTopStateNode_;
@@ -435,5 +434,5 @@
     }
 
-    shared_ptr<GameState> Game::getState(const std::string& name)
+    std::shared_ptr<GameState> Game::getState(const std::string& name)
     {
         GameStateMap::const_iterator it = constructedStates_.find(name);
@@ -447,5 +446,5 @@
             else
                 orxout(internal_error) << "Could not find GameState '" << name << "'." << endl;
-            return shared_ptr<GameState>();
+            return std::shared_ptr<GameState>();
         }
     }
@@ -479,5 +478,5 @@
     /*** Internal ***/
 
-    void Game::parseStates(std::vector<std::pair<std::string, int>>::const_iterator& it, shared_ptr<GameStateTreeNode> currentNode)
+    void Game::parseStates(std::vector<std::pair<std::string, int>>::const_iterator& it, std::shared_ptr<GameStateTreeNode> currentNode)
     {
         SubString tokens(it->first, ",");
@@ -491,5 +490,5 @@
             if (tokens[i] == this->rootStateNode_->name_)
                 ThrowException(GameState, "You shouldn't use 'emptyRootGameState' in the hierarchy...");
-            shared_ptr<GameStateTreeNode> node(new GameStateTreeNode());
+            std::shared_ptr<GameStateTreeNode> node(new GameStateTreeNode());
             node->name_ = tokens[i];
             node->parent_ = currentNode;
@@ -527,5 +526,5 @@
                 {
                     // Game state loading failure is serious --> don't catch
-                    shared_ptr<GameState> gameState = GameStateFactory::fabricate(it->second);
+                    std::shared_ptr<GameState> gameState = GameStateFactory::fabricate(it->second);
                     if (!constructedStates_.insert(std::make_pair(
                         it->second.stateName, gameState)).second)
@@ -582,5 +581,5 @@
             graphicsUnloader.Dismiss();
 
-        shared_ptr<GameState> state = this->getState(name);
+        std::shared_ptr<GameState> state = this->getState(name);
         state->activateInternal();
         if (!this->loadedStates_.empty())
@@ -599,5 +598,5 @@
         try
         {
-            shared_ptr<GameState> state = this->getState(name);
+            std::shared_ptr<GameState> state = this->getState(name);
             state->activity_.topState = false;
             this->loadedStates_.pop_back();
@@ -620,13 +619,13 @@
     }
 
-    /*static*/ std::map<std::string, shared_ptr<Game::GameStateFactory>>& Game::GameStateFactory::getFactories()
-    {
-        static std::map<std::string, shared_ptr<GameStateFactory>> factories;
+    /*static*/ std::map<std::string, std::shared_ptr<Game::GameStateFactory>>& Game::GameStateFactory::getFactories()
+    {
+        static std::map<std::string, std::shared_ptr<GameStateFactory>> factories;
         return factories;
     }
 
-    /*static*/ shared_ptr<GameState> Game::GameStateFactory::fabricate(const GameStateInfo& info)
-    {
-        std::map<std::string, shared_ptr<Game::GameStateFactory>>::const_iterator it = getFactories().find(info.className);
+    /*static*/ std::shared_ptr<GameState> Game::GameStateFactory::fabricate(const GameStateInfo& info)
+    {
+        std::map<std::string, std::shared_ptr<Game::GameStateFactory>>::const_iterator it = getFactories().find(info.className);
         assert(it != getFactories().end());
         return it->second->fabricateInternal(info);
Index: /code/branches/cpp11_v2/src/libraries/core/Game.h
===================================================================
--- /code/branches/cpp11_v2/src/libraries/core/Game.h	(revision 10770)
+++ /code/branches/cpp11_v2/src/libraries/core/Game.h	(revision 10771)
@@ -44,5 +44,5 @@
 #include <string>
 #include <vector>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include <boost/preprocessor/cat.hpp>
 
@@ -84,7 +84,7 @@
     { // tolua_export
         friend class Singleton<Game>;
-        typedef std::vector<shared_ptr<GameState>> GameStateVector;
-        typedef std::map<std::string, shared_ptr<GameState>> GameStateMap;
-        typedef shared_ptr<GameStateTreeNode> GameStateTreeNodePtr;
+        typedef std::vector<std::shared_ptr<GameState>> GameStateVector;
+        typedef std::map<std::string, std::shared_ptr<GameState>> GameStateMap;
+        typedef std::shared_ptr<GameStateTreeNode> GameStateTreeNodePtr;
 
     public:
@@ -97,5 +97,5 @@
 
         void setStateHierarchy(const std::string& str);
-        shared_ptr<GameState> getState(const std::string& name);
+        std::shared_ptr<GameState> getState(const std::string& name);
 
         void run();
@@ -123,11 +123,11 @@
         public:
             virtual ~GameStateFactory() { }
-            static shared_ptr<GameState> fabricate(const GameStateInfo& info);
+            static std::shared_ptr<GameState> fabricate(const GameStateInfo& info);
             template <class T>
             static void createFactory(const std::string& className)
                 { getFactories()[className].reset(new TemplateGameStateFactory<T>()); }
 
-            virtual shared_ptr<GameState> fabricateInternal(const GameStateInfo& info) = 0;
-            static std::map<std::string, shared_ptr<GameStateFactory>>& getFactories();
+            virtual std::shared_ptr<GameState> fabricateInternal(const GameStateInfo& info) = 0;
+            static std::map<std::string, std::shared_ptr<GameStateFactory>>& getFactories();
         };
         template <class T>
@@ -135,6 +135,6 @@
         {
         public:
-            shared_ptr<GameState> fabricateInternal(const GameStateInfo& info)
-                { return shared_ptr<GameState>(new T(info)); }
+            std::shared_ptr<GameState> fabricateInternal(const GameStateInfo& info)
+                { return std::shared_ptr<GameState>(new T(info)); }
         };
 
@@ -150,5 +150,5 @@
         void unloadGraphics(bool loadGraphicsManagerWithoutRenderer = true);
 
-        void parseStates(std::vector<std::pair<std::string, int>>::const_iterator& it, shared_ptr<GameStateTreeNode> currentNode);
+        void parseStates(std::vector<std::pair<std::string, int>>::const_iterator& it, std::shared_ptr<GameStateTreeNode> currentNode);
         bool checkState(const std::string& name) const;
         void loadState(const std::string& name);
Index: /code/branches/cpp11_v2/src/libraries/core/GraphicsManager.cc
===================================================================
--- /code/branches/cpp11_v2/src/libraries/core/GraphicsManager.cc	(revision 10770)
+++ /code/branches/cpp11_v2/src/libraries/core/GraphicsManager.cc	(revision 10771)
@@ -34,5 +34,4 @@
 #include <sstream>
 #include <boost/filesystem.hpp>
-#include <boost/shared_array.hpp>
 
 #include <OgreFrameListener.h>
Index: /code/branches/cpp11_v2/src/libraries/core/GraphicsManager.h
===================================================================
--- /code/branches/cpp11_v2/src/libraries/core/GraphicsManager.h	(revision 10770)
+++ /code/branches/cpp11_v2/src/libraries/core/GraphicsManager.h	(revision 10771)
@@ -47,6 +47,7 @@
 #include <cassert>
 #include <string>
+#include <memory>
+
 #include <OgreLog.h>
-#include <boost/shared_ptr.hpp>
 
 #include "util/DestructionHelper.h"
@@ -130,7 +131,7 @@
 
         // XML files for the resources and the debug overlay
-        shared_ptr<XMLFile> resources_;                //!< XML with resource locations
-        shared_ptr<XMLFile> extResources_;             //!< XML with resource locations in the external path (only for dev runs)
-        shared_ptr<XMLFile> debugOverlay_;             //!< XML with various debug overlays
+        std::shared_ptr<XMLFile> resources_;           //!< XML with resource locations
+        std::shared_ptr<XMLFile> extResources_;        //!< XML with resource locations in the external path (only for dev runs)
+        std::shared_ptr<XMLFile> debugOverlay_;        //!< XML with various debug overlays
 
         // config values
Index: /code/branches/cpp11_v2/src/libraries/core/Loader.cc
===================================================================
--- /code/branches/cpp11_v2/src/libraries/core/Loader.cc	(revision 10770)
+++ /code/branches/cpp11_v2/src/libraries/core/Loader.cc	(revision 10771)
@@ -73,5 +73,5 @@
         std::string xmlInput;
 
-        shared_ptr<std::vector<std::vector<std::pair<std::string, size_t>>>> lineTrace(new std::vector<std::vector<std::pair<std::string, size_t>>>());
+        std::shared_ptr<std::vector<std::vector<std::pair<std::string, size_t>>>> lineTrace(new std::vector<std::vector<std::pair<std::string, size_t>>>());
         lineTrace->reserve(1000); //arbitrary number
 
@@ -80,5 +80,5 @@
         {
             // Use the LuaState to replace the XML tags (calls our function)
-            scoped_ptr<LuaState> luaState(new LuaState());
+            boost::scoped_ptr<LuaState> luaState(new LuaState());
             luaState->setTraceMap(lineTrace);
             luaState->setIncludeParser(&Loader::replaceLuaTags);
@@ -88,5 +88,5 @@
         else
         {
-            shared_ptr<ResourceInfo> info = Resource::getInfo(file->getFilename());
+            std::shared_ptr<ResourceInfo> info = Resource::getInfo(file->getFilename());
             if (info == nullptr)
             {
Index: /code/branches/cpp11_v2/src/libraries/core/LuaState.cc
===================================================================
--- /code/branches/cpp11_v2/src/libraries/core/LuaState.cc	(revision 10770)
+++ /code/branches/cpp11_v2/src/libraries/core/LuaState.cc	(revision 10771)
@@ -79,8 +79,8 @@
     }
 
-    shared_ptr<ResourceInfo> LuaState::getFileInfo(const std::string& filename)
+    std::shared_ptr<ResourceInfo> LuaState::getFileInfo(const std::string& filename)
     {
         // Look in the current directory first
-        shared_ptr<ResourceInfo> sourceInfo = Resource::getInfo(sourceFileInfo_->path + filename);
+        std::shared_ptr<ResourceInfo> sourceInfo = Resource::getInfo(sourceFileInfo_->path + filename);
         // Continue search in root directories
         if (sourceInfo == nullptr && !sourceFileInfo_->path.empty())
@@ -91,5 +91,5 @@
     bool LuaState::includeFile(const std::string& filename)
     {
-        shared_ptr<ResourceInfo> sourceInfo = this->getFileInfo(filename);
+        std::shared_ptr<ResourceInfo> sourceInfo = this->getFileInfo(filename);
         if (sourceInfo != nullptr)
             return this->includeString(Resource::open(sourceInfo)->getAsString(), sourceInfo);
@@ -101,5 +101,5 @@
     }
 
-    bool LuaState::includeString(const std::string& code, const shared_ptr<ResourceInfo>& sourceFileInfo)
+    bool LuaState::includeString(const std::string& code, const std::shared_ptr<ResourceInfo>& sourceFileInfo)
     {
         // Parse string with provided include parser (otherwise don't preparse at all)
@@ -131,5 +131,5 @@
     bool LuaState::doFile(const std::string& filename)
     {
-        shared_ptr<ResourceInfo> sourceInfo = this->getFileInfo(filename);
+        std::shared_ptr<ResourceInfo> sourceInfo = this->getFileInfo(filename);
         if (sourceInfo != nullptr)
             return this->doString(Resource::open(sourceInfo)->getAsString(), sourceInfo);
@@ -141,8 +141,8 @@
     }
 
-    bool LuaState::doString(const std::string& code, const shared_ptr<ResourceInfo>& sourceFileInfo)
+    bool LuaState::doString(const std::string& code, const std::shared_ptr<ResourceInfo>& sourceFileInfo)
     {
         // Save the old source file info
-        shared_ptr<ResourceInfo> oldSourceFileInfo = sourceFileInfo_;
+        std::shared_ptr<ResourceInfo> oldSourceFileInfo = sourceFileInfo_;
         // Only override if sourceFileInfo provides useful information
         if (sourceFileInfo != nullptr)
@@ -285,5 +285,5 @@
     bool LuaState::fileExists(const std::string& filename)
     {
-        shared_ptr<ResourceInfo> info = this->getFileInfo(filename);
+        std::shared_ptr<ResourceInfo> info = this->getFileInfo(filename);
         if (info == nullptr)
             return false;
@@ -300,5 +300,5 @@
         if (it != this->sourceCodeMap_.end())
             return it->second;
-        shared_ptr<ResourceInfo> info = Resource::getInfo(filename);
+        std::shared_ptr<ResourceInfo> info = Resource::getInfo(filename);
         if (info == nullptr)
             return "";
Index: /code/branches/cpp11_v2/src/libraries/core/LuaState.h
===================================================================
--- /code/branches/cpp11_v2/src/libraries/core/LuaState.h	(revision 10770)
+++ /code/branches/cpp11_v2/src/libraries/core/LuaState.h	(revision 10771)
@@ -47,5 +47,5 @@
 #include <string>
 #include <vector>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 #include "util/Output.h"
@@ -79,8 +79,8 @@
 
         bool doFile(const std::string& filename); // tolua_export
-        bool doString(const std::string& code, const shared_ptr<ResourceInfo>& sourceFileInfo = shared_ptr<ResourceInfo>());
+        bool doString(const std::string& code, const std::shared_ptr<ResourceInfo>& sourceFileInfo = std::shared_ptr<ResourceInfo>());
 
         bool includeFile(const std::string& filename); // tolua_export
-        bool includeString(const std::string& code, const shared_ptr<ResourceInfo>& sourceFileInfo = shared_ptr<ResourceInfo>());
+        bool includeString(const std::string& code, const std::shared_ptr<ResourceInfo>& sourceFileInfo = std::shared_ptr<ResourceInfo>());
 
         void luaPrint(const std::string& str); // tolua_export
@@ -94,5 +94,5 @@
         void clearOutput() { output_.clear(); } // tolua_export
 
-        void setTraceMap(shared_ptr<std::vector<std::vector<std::pair<std::string, size_t>>>> map)
+        void setTraceMap(std::shared_ptr<std::vector<std::vector<std::pair<std::string, size_t>>>> map)
             { map->push_back(std::vector<std::pair<std::string, size_t>>()); lineTrace_ = map; }
 
@@ -100,6 +100,6 @@
         lua_State* getInternalLuaState() { return luaState_; }
 
-        void setDefaultResourceInfo(const shared_ptr<ResourceInfo>& sourceFileInfo) { this->sourceFileInfo_ = sourceFileInfo; }
-        const shared_ptr<ResourceInfo>& getDefaultResourceInfo() { return this->sourceFileInfo_; }
+        void setDefaultResourceInfo(const std::shared_ptr<ResourceInfo>& sourceFileInfo) { this->sourceFileInfo_ = sourceFileInfo; }
+        const std::shared_ptr<ResourceInfo>& getDefaultResourceInfo() { return this->sourceFileInfo_; }
 
         LuaFunctor* createLuaFunctor(const std::string& code) { return new LuaFunctor(code, this); } // tolua_export
@@ -115,11 +115,11 @@
 
     private:
-        shared_ptr<ResourceInfo> getFileInfo(const std::string& filename);
-        shared_ptr<std::vector<std::vector<std::pair<std::string, size_t>>>> lineTrace_;
+        std::shared_ptr<ResourceInfo> getFileInfo(const std::string& filename);
+        std::shared_ptr<std::vector<std::vector<std::pair<std::string, size_t>>>> lineTrace_;
         
         std::stringstream output_;
         lua_State* luaState_;
         bool bIsRunning_;
-        shared_ptr<ResourceInfo> sourceFileInfo_;
+        std::shared_ptr<ResourceInfo> sourceFileInfo_;
         std::map<std::string, std::string> sourceCodeMap_;
         std::string (*includeParseFunction_)(const std::string&);
Index: /code/branches/cpp11_v2/src/libraries/core/Resource.cc
===================================================================
--- /code/branches/cpp11_v2/src/libraries/core/Resource.cc	(revision 10770)
+++ /code/branches/cpp11_v2/src/libraries/core/Resource.cc	(revision 10771)
@@ -79,5 +79,5 @@
     }
 
-    shared_ptr<ResourceInfo> Resource::getInfo(const std::string& name)
+    std::shared_ptr<ResourceInfo> Resource::getInfo(const std::string& name)
     {
         std::string group;
@@ -88,5 +88,5 @@
         catch (const Ogre::Exception&)
         {
-            return shared_ptr<ResourceInfo>();
+            return std::shared_ptr<ResourceInfo>();
         }
         Ogre::FileInfoListPtr infos = Ogre::ResourceGroupManager::getSingleton().findResourceFileInfo(group, name);
@@ -95,5 +95,5 @@
             if (it->filename == name)
             {
-                shared_ptr<ResourceInfo> ptr(new ResourceInfo());
+                std::shared_ptr<ResourceInfo> ptr(new ResourceInfo());
                 ptr->filename = name;
                 ptr->path = it->path;
@@ -114,5 +114,5 @@
             }
         }
-        return shared_ptr<ResourceInfo>();
+        return std::shared_ptr<ResourceInfo>();
     }
 
Index: /code/branches/cpp11_v2/src/libraries/core/Resource.h
===================================================================
--- /code/branches/cpp11_v2/src/libraries/core/Resource.h	(revision 10770)
+++ /code/branches/cpp11_v2/src/libraries/core/Resource.h	(revision 10771)
@@ -42,5 +42,6 @@
 #include "CorePrereqs.h"
 
-#include <boost/shared_ptr.hpp>
+#include <memory>
+
 #include <OgreDataStream.h>
 #include <OgreStringVector.h>
@@ -93,5 +94,5 @@
 
         //! Similar to open(string, string, bool), but with a fileInfo struct
-        static DataStreamPtr open(shared_ptr<ResourceInfo> fileInfo)
+        static DataStreamPtr open(std::shared_ptr<ResourceInfo> fileInfo)
         {
             return open(fileInfo->filename);
@@ -125,5 +126,5 @@
             Fully qualified name of the file to test for
         */
-        static shared_ptr<ResourceInfo> getInfo(const std::string& name);
+        static std::shared_ptr<ResourceInfo> getInfo(const std::string& name);
 
         /**
Index: /code/branches/cpp11_v2/src/libraries/core/input/KeyBinder.cc
===================================================================
--- /code/branches/cpp11_v2/src/libraries/core/input/KeyBinder.cc	(revision 10770)
+++ /code/branches/cpp11_v2/src/libraries/core/input/KeyBinder.cc	(revision 10771)
@@ -188,7 +188,7 @@
     {
         while (joyStickAxes_.size() < joySticks_.size())
-            joyStickAxes_.push_back(shared_ptr<JoyStickAxisVector>(new JoyStickAxisVector()));
+            joyStickAxes_.push_back(std::shared_ptr<JoyStickAxisVector>(new JoyStickAxisVector()));
         while (joyStickButtons_.size() < joySticks_.size())
-            joyStickButtons_.push_back(shared_ptr<JoyStickButtonVector>(new JoyStickButtonVector()));
+            joyStickButtons_.push_back(std::shared_ptr<JoyStickButtonVector>(new JoyStickButtonVector()));
         // For the case the new size is smaller
         this->joyStickAxes_.resize(joySticks_.size());
Index: /code/branches/cpp11_v2/src/libraries/core/input/KeyBinder.h
===================================================================
--- /code/branches/cpp11_v2/src/libraries/core/input/KeyBinder.h	(revision 10770)
+++ /code/branches/cpp11_v2/src/libraries/core/input/KeyBinder.h	(revision 10771)
@@ -36,5 +36,5 @@
 #include <vector>
 #include <map>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 #include "InputHandler.h"
@@ -127,5 +127,5 @@
         };
         //! Actual key bindings for joy stick buttons
-        std::vector<shared_ptr<JoyStickButtonVector>> joyStickButtons_;
+        std::vector<std::shared_ptr<JoyStickButtonVector>> joyStickButtons_;
         //! Helper class to use something like std:vector<HalfAxis[48]>
         struct JoyStickAxisVector
@@ -135,5 +135,5 @@
         };
         //! Actual key bindings for joy stick axes (and sliders)
-        std::vector<shared_ptr<JoyStickAxisVector>> joyStickAxes_;
+        std::vector<std::shared_ptr<JoyStickAxisVector>> joyStickAxes_;
 
         //! Pointer map with all Buttons, including half axes
Index: /code/branches/cpp11_v2/src/orxonox/sound/AmbientSound.cc
===================================================================
--- /code/branches/cpp11_v2/src/orxonox/sound/AmbientSound.cc	(revision 10770)
+++ /code/branches/cpp11_v2/src/orxonox/sound/AmbientSound.cc	(revision 10771)
@@ -92,5 +92,5 @@
         {
             const std::string& path = "ambient/" + mood + '/' + this->ambientSource_;
-            shared_ptr<ResourceInfo> fileInfo = Resource::getInfo(path);
+            std::shared_ptr<ResourceInfo> fileInfo = Resource::getInfo(path);
             if (fileInfo != nullptr)
             {
Index: /code/branches/cpp11_v2/src/orxonox/sound/BaseSound.h
===================================================================
--- /code/branches/cpp11_v2/src/orxonox/sound/BaseSound.h	(revision 10770)
+++ /code/branches/cpp11_v2/src/orxonox/sound/BaseSound.h	(revision 10771)
@@ -33,5 +33,5 @@
 
 #include <string>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include <OgreDataStream.h>
 #include "core/object/Listable.h"
@@ -107,5 +107,5 @@
         ALuint          audioSource_;
         bool            bPooling_;
-        shared_ptr<SoundBuffer> soundBuffer_;
+        std::shared_ptr<SoundBuffer> soundBuffer_;
         std::string     source_;
         float           volume_;
Index: /code/branches/cpp11_v2/src/orxonox/sound/SoundBuffer.cc
===================================================================
--- /code/branches/cpp11_v2/src/orxonox/sound/SoundBuffer.cc	(revision 10770)
+++ /code/branches/cpp11_v2/src/orxonox/sound/SoundBuffer.cc	(revision 10771)
@@ -39,5 +39,5 @@
 namespace orxonox
 {
-    SoundBuffer::SoundBuffer(const std::string& filename, std::list<shared_ptr<SoundBuffer>>::iterator poolIterator)
+    SoundBuffer::SoundBuffer(const std::string& filename, std::list<std::shared_ptr<SoundBuffer>>::iterator poolIterator)
         : filename_(filename)
         , audioBuffer_(AL_NONE)
@@ -48,5 +48,5 @@
 
         // Get resource info
-        shared_ptr<ResourceInfo> fileInfo = Resource::getInfo(filename);
+        std::shared_ptr<ResourceInfo> fileInfo = Resource::getInfo(filename);
         if (fileInfo == nullptr)
         {
@@ -83,5 +83,5 @@
     }
 
-    void SoundBuffer::loadStandard(const shared_ptr<ResourceInfo>& fileInfo, DataStreamPtr dataStream)
+    void SoundBuffer::loadStandard(const std::shared_ptr<ResourceInfo>& fileInfo, DataStreamPtr dataStream)
     {
         // Read everything into a temporary buffer
@@ -127,5 +127,5 @@
     }
 
-    void SoundBuffer::loadOgg(const shared_ptr<ResourceInfo>& fileInfo, DataStreamPtr dataStream)
+    void SoundBuffer::loadOgg(const std::shared_ptr<ResourceInfo>& fileInfo, DataStreamPtr dataStream)
     {
         char inbuffer[256*1024];
Index: /code/branches/cpp11_v2/src/orxonox/sound/SoundBuffer.h
===================================================================
--- /code/branches/cpp11_v2/src/orxonox/sound/SoundBuffer.h	(revision 10770)
+++ /code/branches/cpp11_v2/src/orxonox/sound/SoundBuffer.h	(revision 10771)
@@ -33,5 +33,5 @@
 
 #include <list>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "core/Resource.h"
 
@@ -45,14 +45,7 @@
     {
         friend class SoundManager;
-#if !defined(_MSC_VER) || _MSC_VER >= 1500
-        // Make sure nobody deletes an instance (using strong pointers)
-        template <class T>
-        friend void boost::checked_delete(T*);
-#endif
 
     public:
-#if defined(_MSC_VER) && _MSC_VER < 1500
         ~SoundBuffer();
-#endif
         inline ALuint getBuffer()
             { return this->audioBuffer_; }
@@ -64,14 +57,11 @@
 
     private:
-        SoundBuffer(const std::string& filename, std::list<shared_ptr<SoundBuffer>>::iterator poolIterator);
-#if !defined(_MSC_VER) || _MSC_VER >= 1500
-        ~SoundBuffer();
-#endif
-        void loadStandard(const shared_ptr<ResourceInfo>& fileInfo, DataStreamPtr dataStream);
-        void loadOgg(const shared_ptr<ResourceInfo>& fileInfo, DataStreamPtr dataStream);
+        SoundBuffer(const std::string& filename, std::list<std::shared_ptr<SoundBuffer>>::iterator poolIterator);
+        void loadStandard(const std::shared_ptr<ResourceInfo>& fileInfo, DataStreamPtr dataStream);
+        void loadOgg(const std::shared_ptr<ResourceInfo>& fileInfo, DataStreamPtr dataStream);
 
         std::string filename_;
         ALuint audioBuffer_;
-        std::list<shared_ptr<SoundBuffer>>::iterator poolIterator_;
+        std::list<std::shared_ptr<SoundBuffer>>::iterator poolIterator_;
     };
 }
Index: /code/branches/cpp11_v2/src/orxonox/sound/SoundManager.cc
===================================================================
--- /code/branches/cpp11_v2/src/orxonox/sound/SoundManager.cc	(revision 10770)
+++ /code/branches/cpp11_v2/src/orxonox/sound/SoundManager.cc	(revision 10771)
@@ -505,7 +505,7 @@
     }
 
-    shared_ptr<SoundBuffer> SoundManager::getSoundBuffer(const std::string& filename)
-    {
-        shared_ptr<SoundBuffer> buffer;
+    std::shared_ptr<SoundBuffer> SoundManager::getSoundBuffer(const std::string& filename)
+    {
+        std::shared_ptr<SoundBuffer> buffer;
         // Check active or pooled buffers
         SoundBufferMap::const_iterator it = this->soundBuffers_.find(filename);
@@ -538,5 +538,5 @@
     }
 
-    void SoundManager::releaseSoundBuffer(const shared_ptr<SoundBuffer>& buffer, bool bPoolBuffer)
+    void SoundManager::releaseSoundBuffer(const std::shared_ptr<SoundBuffer>& buffer, bool bPoolBuffer)
     {
         // Check if others are still using the buffer
@@ -551,5 +551,5 @@
                 while (this->effectsPoolSize_ + it->second->getSize() > this->maxEffectsPoolSize_s && !this->effectsPool_.empty())
                 {
-                    shared_ptr<SoundBuffer> bufferDel = this->effectsPool_.back();
+                    std::shared_ptr<SoundBuffer> bufferDel = this->effectsPool_.back();
                     this->effectsPoolSize_ -= bufferDel->getSize();
                     bufferDel->poolIterator_ = this->effectsPool_.end();
Index: /code/branches/cpp11_v2/src/orxonox/sound/SoundManager.h
===================================================================
--- /code/branches/cpp11_v2/src/orxonox/sound/SoundManager.h	(revision 10770)
+++ /code/branches/cpp11_v2/src/orxonox/sound/SoundManager.h	(revision 10771)
@@ -36,5 +36,5 @@
 #include <map>
 #include <string>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 #include "util/Singleton.h"
@@ -96,6 +96,6 @@
         // tolua_end
 
-        shared_ptr<SoundBuffer> getSoundBuffer(const std::string& filename);
-        void releaseSoundBuffer(const shared_ptr<SoundBuffer>& buffer, bool bPoolBuffer);
+        std::shared_ptr<SoundBuffer> getSoundBuffer(const std::string& filename);
+        void releaseSoundBuffer(const std::shared_ptr<SoundBuffer>& buffer, bool bPoolBuffer);
 
         ALuint getSoundSource(BaseSound* object);
@@ -139,7 +139,7 @@
         static const unsigned int maxEffectsPoolSize_s = 40 * 1024 * 1024;
         unsigned int effectsPoolSize_;
-        typedef std::list<shared_ptr<SoundBuffer>> EffectsPoolList;
+        typedef std::list<std::shared_ptr<SoundBuffer>> EffectsPoolList;
         EffectsPoolList effectsPool_;
-        typedef std::map<std::string, shared_ptr<SoundBuffer>> SoundBufferMap;
+        typedef std::map<std::string, std::shared_ptr<SoundBuffer>> SoundBufferMap;
         SoundBufferMap soundBuffers_;
 
