Index: code/trunk/src/orxonox/CameraManager.cc
===================================================================
--- code/trunk/src/orxonox/CameraManager.cc	(revision 11052)
+++ code/trunk/src/orxonox/CameraManager.cc	(revision 11071)
@@ -60,5 +60,5 @@
             return this->cameraList_.front();
         else
-            return 0;
+            return nullptr;
     }
 
@@ -93,5 +93,5 @@
                 this->cameraList_.front()->setFocus();
             else
-                this->useCamera(NULL);
+                this->useCamera(nullptr);
         }
         else
Index: code/trunk/src/orxonox/CameraManager.h
===================================================================
--- code/trunk/src/orxonox/CameraManager.h	(revision 11052)
+++ code/trunk/src/orxonox/CameraManager.h	(revision 11071)
@@ -59,5 +59,7 @@
 
         private:
-            CameraManager(const CameraManager&); // don't use
+            // non-copyable:
+            CameraManager(const CameraManager&) = delete;
+            CameraManager& operator=(const CameraManager&) = delete;
 
             std::list<Camera*>    cameraList_;
Index: code/trunk/src/orxonox/Level.cc
===================================================================
--- code/trunk/src/orxonox/Level.cc	(revision 11052)
+++ code/trunk/src/orxonox/Level.cc	(revision 11071)
@@ -30,4 +30,5 @@
 
 #include "util/Math.h"
+#include "util/SubString.h"
 #include "core/CoreIncludes.h"
 #include "core/Loader.h"
@@ -54,5 +55,5 @@
         this->registerVariables();
         this->xmlfilename_ = this->getFilename();
-        this->xmlfile_ = 0;
+        this->xmlfile_ = nullptr;
     }
 
@@ -105,8 +106,8 @@
     void Level::networkCallbackTemplatesChanged()
     {
-        for( std::set<std::string>::iterator it = this->networkTemplateNames_.begin(); it!=this->networkTemplateNames_.end(); ++it )
-        {
-            assert(Template::getTemplate(*it));
-            Template::getTemplate(*it)->applyOn(this);
+        for(const std::string& name : this->networkTemplateNames_)
+        {
+            assert(Template::getTemplate(name));
+            Template::getTemplate(name)->applyOn(this);
         }
     }
@@ -134,6 +135,6 @@
         //       objects alive when ~Level is called. This is the reason why we cannot directly destroy() the Plugins - instead we need
         //       to call destroyLater() to ensure that no instances from this plugin exist anymore.
-        for (std::list<PluginReference*>::iterator it = this->plugins_.begin(); it != this->plugins_.end(); ++it)
-            (*it)->destroyLater();
+        for (PluginReference* plugin : this->plugins_)
+            plugin->destroyLater();
         this->plugins_.clear();
     }
@@ -172,11 +173,11 @@
     {
         unsigned int i = 0;
-        for (std::list<BaseObject*>::const_iterator it = this->objects_.begin(); it != this->objects_.end(); ++it)
+        for (BaseObject* object : this->objects_)
         {
             if (i == index)
-                return (*it);
+                return object;
             ++i;
         }
-        return 0;
+        return nullptr;
     }
 
@@ -195,5 +196,5 @@
             return this->lodInformation_.find(meshName)->second;
 
-        return 0;
+        return nullptr;
     }
 
@@ -207,5 +208,5 @@
     {
         orxout(internal_info) << "player left level (id: " << player->getClientID() << ", name: " << player->getName() << ')' << endl;
-        player->switchGametype(0);
+        player->switchGametype(nullptr);
     }
 }
Index: code/trunk/src/orxonox/Level.h
===================================================================
--- code/trunk/src/orxonox/Level.h	(revision 11052)
+++ code/trunk/src/orxonox/Level.h	(revision 11071)
@@ -37,4 +37,5 @@
 #include "core/BaseObject.h"
 #include "network/synchronisable/Synchronisable.h"
+#include "core/object/Context.h"
 #include "graphics/MeshLodInformation.h"
 
@@ -47,5 +48,5 @@
             virtual ~Level();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             void playerEntered(PlayerInfo* player);
Index: code/trunk/src/orxonox/LevelInfo.cc
===================================================================
--- code/trunk/src/orxonox/LevelInfo.cc	(revision 11052)
+++ code/trunk/src/orxonox/LevelInfo.cc	(revision 11071)
@@ -106,7 +106,7 @@
     {
         SubString substr = SubString(tags, ",", " "); // Split the string into tags.
-        const std::vector<std::string>& strings = substr.getAllStrings();
-        for (std::vector<std::string>::const_iterator it = strings.begin(); it != strings.end(); it++)
-            this->addTag(*it, false);
+        const std::vector<std::string>& tokens = substr.getAllStrings();
+        for (const std::string& token : tokens)
+            this->addTag(token, false);
 
         this->tagsUpdated();
@@ -121,7 +121,7 @@
     {
         SubString substr = SubString(ships, ",", " "); // Split the string into tags.
-        const std::vector<std::string>& strings = substr.getAllStrings();
-        for(std::vector<std::string>::const_iterator it = strings.begin(); it != strings.end(); it++)
-            this->addStartingShip(*it, false);
+        const std::vector<std::string>& tokens = substr.getAllStrings();
+        for(const std::string& token : tokens)
+            this->addStartingShip(token, false);
 
         this->startingshipsUpdated();
Index: code/trunk/src/orxonox/LevelInfo.h
===================================================================
--- code/trunk/src/orxonox/LevelInfo.h	(revision 11052)
+++ code/trunk/src/orxonox/LevelInfo.h	(revision 11071)
@@ -207,5 +207,5 @@
             virtual ~LevelInfo();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Creates a LevelInfo object through XML.
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override; //!< Creates a LevelInfo object through XML.
 
             /**
Index: code/trunk/src/orxonox/LevelManager.cc
===================================================================
--- code/trunk/src/orxonox/LevelManager.cc	(revision 11052)
+++ code/trunk/src/orxonox/LevelManager.cc	(revision 11071)
@@ -78,7 +78,6 @@
     {
         // Delete all the LevelInfoItem objects because the LevelManager created them
-        std::set<LevelInfoItem*, LevelInfoCompare>::iterator it = availableLevels_.begin();
-        for (; it != availableLevels_.end(); ++it)
-            (*it)->destroy();
+        for (LevelInfoItem* info : availableLevels_)
+            info->destroy();
     }
 
@@ -154,5 +153,5 @@
         Get the currently active Level.
     @return
-        Returns a pointer to the currently active level or NULL if there currently are no active Levels.
+        Returns a pointer to the currently active level or nullptr if there currently are no active Levels.
     */
     Level* LevelManager::getActiveLevel()
@@ -161,5 +160,5 @@
             return this->levels_.front();
         else
-            return 0;
+            return nullptr;
     }
 
@@ -175,6 +174,6 @@
             this->levels_.front()->setActive(true);
             // Make every player enter the newly activated level.
-            for (std::map<unsigned int, PlayerInfo*>::const_iterator it = PlayerManager::getInstance().getClients().begin(); it != PlayerManager::getInstance().getClients().end(); ++it)
-                this->levels_.front()->playerEntered(it->second);
+            for (const auto& mapEntry : PlayerManager::getInstance().getClients())
+                this->levels_.front()->playerEntered(mapEntry.second);
         }
     }
@@ -218,5 +217,5 @@
     {
         if(index >= this->availableLevels_.size())
-            return NULL;
+            return nullptr;
 
         // If this index directly follows the last we can optimize a lot.
@@ -272,5 +271,5 @@
             if (it->find("old/") != 0)
             {
-                LevelInfoItem* info = NULL;
+                LevelInfoItem* info = nullptr;
 
                 // Load the LevelInfo object from the level file.
@@ -279,12 +278,12 @@
 
                 // Find the LevelInfo object we've just loaded (if there was one)
-                for(ObjectList<LevelInfo>::iterator item = ObjectList<LevelInfo>::begin(); item != ObjectList<LevelInfo>::end(); ++item)
-                    if(item->getXMLFilename() == *it)
-                        info = item->copy();
+                for(LevelInfo* levelInfo : ObjectList<LevelInfo>())
+                    if(levelInfo->getXMLFilename() == *it)
+                        info = levelInfo->copy();
 
                 // We don't need the loaded stuff anymore
                 Loader::getInstance().unload(&file);
 
-                if(info == NULL)
+                if(info == nullptr)
                 {
                     // Create a default LevelInfoItem object that merely contains the name
Index: code/trunk/src/orxonox/LevelManager.h
===================================================================
--- code/trunk/src/orxonox/LevelManager.h	(revision 11052)
+++ code/trunk/src/orxonox/LevelManager.h	(revision 11071)
@@ -109,5 +109,7 @@
 
         private:
-            LevelManager(const LevelManager&);
+            // non-copyable:
+            LevelManager(const LevelManager&) = delete;
+            LevelManager& operator=(const LevelManager&) = delete;
 
             void activateNextLevel(); //!< Activate the next level.
Index: code/trunk/src/orxonox/Main.h
===================================================================
--- code/trunk/src/orxonox/Main.h	(revision 11052)
+++ code/trunk/src/orxonox/Main.h	(revision 11071)
@@ -33,4 +33,6 @@
 #include "OrxonoxPrereqs.h"
 
+#include <string>
+
 namespace orxonox
 {
Index: code/trunk/src/orxonox/MoodManager.cc
===================================================================
--- code/trunk/src/orxonox/MoodManager.cc	(revision 11052)
+++ code/trunk/src/orxonox/MoodManager.cc	(revision 11071)
@@ -103,6 +103,6 @@
     /*static*/ void MoodListener::changedMood(const std::string& mood)
     {
-        for (ObjectList<MoodListener>::iterator it = ObjectList<MoodListener>::begin(); it; ++it)
-            it->moodChanged(mood);
+        for (MoodListener* listener : ObjectList<MoodListener>())
+            listener->moodChanged(mood);
     }
 }
Index: code/trunk/src/orxonox/PlayerManager.cc
===================================================================
--- code/trunk/src/orxonox/PlayerManager.cc	(revision 11052)
+++ code/trunk/src/orxonox/PlayerManager.cc	(revision 11071)
@@ -62,5 +62,5 @@
 
             // create new HumanPlayer instance
-            HumanPlayer* player = new HumanPlayer(0);
+            HumanPlayer* player = new HumanPlayer(nullptr);
             player->setClientID(clientID);
 
@@ -111,9 +111,9 @@
         else
         {
-            for (ObjectList<PlayerInfo>::iterator it = ObjectList<PlayerInfo>::begin(); it != ObjectList<PlayerInfo>::end(); ++it)
-                if (it->getClientID() == clientID)
-                    return (*it);
+            for (PlayerInfo* info : ObjectList<PlayerInfo>())
+                if (info->getClientID() == clientID)
+                    return info;
         }
-        return 0;
+        return nullptr;
     }
 }
Index: code/trunk/src/orxonox/PlayerManager.h
===================================================================
--- code/trunk/src/orxonox/PlayerManager.h	(revision 11052)
+++ code/trunk/src/orxonox/PlayerManager.h	(revision 11071)
@@ -50,6 +50,6 @@
                 { return this->clients_; }
 
-            void clientConnected(unsigned int clientID);
-            void clientDisconnected(unsigned int clientID);
+            virtual void clientConnected(unsigned int clientID) override;
+            virtual void clientDisconnected(unsigned int clientID) override;
             void disconnectAllClients();
 
Index: code/trunk/src/orxonox/Radar.cc
===================================================================
--- code/trunk/src/orxonox/Radar.cc	(revision 11052)
+++ code/trunk/src/orxonox/Radar.cc	(revision 11071)
@@ -49,13 +49,13 @@
 
     Radar::Radar()
-        : itFocus_(0)
-        , focus_(0)
+        : itFocus_(nullptr)
+        , focus_(nullptr)
         , objectTypeCounter_(0)
     {
         // TODO: make this mapping configurable. Maybe there's a possibility with self configured
         //       configValues..
-        this->objectTypes_["Asteroid"] = RadarViewable::Dot;
-        this->objectTypes_["SpaceShip"] = RadarViewable::Square;
-        this->objectTypes_["AsdfQwerty"] = RadarViewable::Triangle;
+        this->objectTypes_["Asteroid"] = RadarViewable::Shape::Dot;
+        this->objectTypes_["SpaceShip"] = RadarViewable::Shape::Square;
+        this->objectTypes_["AsdfQwerty"] = RadarViewable::Shape::Triangle;
 
         /*WorldEntity* object;
@@ -84,7 +84,7 @@
         this->radarObjects_.insert(rv);
         // iterate through all radarlisteners and notify them
-        for (ObjectList<RadarListener>::iterator itListener = ObjectList<RadarListener>::begin(); itListener; ++itListener)
-        {
-            (*itListener)->addObject(rv);
+        for (RadarListener* listener : ObjectList<RadarListener>())
+        {
+            listener->addObject(rv);
         }
     }
@@ -95,7 +95,7 @@
         this->radarObjects_.erase(rv);
         // iterate through all radarlisteners and notify them
-        for (ObjectList<RadarListener>::iterator itListener = ObjectList<RadarListener>::begin(); itListener; ++itListener)
-        {
-            (*itListener)->removeObject(rv);
+        for (RadarListener* listener : ObjectList<RadarListener>())
+        {
+            listener->removeObject(rv);
         }
     }
@@ -106,5 +106,5 @@
             return *(this->itFocus_);
         else
-            return 0;
+            return nullptr;
     }
 
@@ -113,5 +113,5 @@
         std::map<std::string, RadarViewable::Shape>::iterator it = this->objectTypes_.find(name);
         if (it == this->objectTypes_.end())
-            return this->objectTypes_[name] = RadarViewable::Square; // default, configure!!
+            return this->objectTypes_[name] = RadarViewable::Shape::Square; // default, configure!!
         else
             return this->objectTypes_[name];
@@ -126,11 +126,11 @@
         {
             // focus object was deleted, release focus
-            this->focus_ = 0;
-            this->itFocus_ = 0;
-        }
-
-        for (ObjectList<RadarListener>::iterator itListener = ObjectList<RadarListener>::begin(); itListener; ++itListener)
-        {
-            (*itListener)->radarTick(dt);
+            this->focus_ = nullptr;
+            this->itFocus_ = nullptr;
+        }
+
+        for (RadarListener* listener : ObjectList<RadarListener>())
+        {
+            listener->radarTick(dt);
         }
     }
@@ -138,9 +138,10 @@
     void Radar::cycleFocus()
     {
-        if (ObjectList<RadarViewable>::begin() == ObjectList<RadarViewable>::end())
+        ObjectList<RadarViewable> listRadarViewable;
+        if (listRadarViewable.size() == 0)
         {
             // list is empty
-            this->itFocus_ = 0;
-            this->focus_ = 0;
+            this->itFocus_ = nullptr;
+            this->focus_ = nullptr;
         }
 
@@ -156,7 +157,7 @@
             float nextDistance = FLT_MAX;
             float minimumDistance = FLT_MAX;
-            ObjectList<RadarViewable>::iterator itFallback = 0;
-
-            for (ObjectList<RadarViewable>::iterator it = ObjectList<RadarViewable>::begin(); it; ++it)
+            ObjectList<RadarViewable>::iterator itFallback = nullptr;
+
+            for (ObjectList<RadarViewable>::iterator it = listRadarViewable.begin(); it; ++it)
             {
                 if (*it == static_cast<RadarViewable*>(HumanController::getLocalControllerEntityAsPawn()))
@@ -191,6 +192,6 @@
     void Radar::releaseFocus()
     {
-        this->itFocus_ = 0;
-        this->focus_ = 0;
+        this->itFocus_ = nullptr;
+        this->focus_ = nullptr;
     }
 
@@ -200,7 +201,8 @@
         // iterate through all Radar Objects
         unsigned int i = 0;
-        for (ObjectList<RadarViewable>::iterator it = ObjectList<RadarViewable>::begin(); it; ++it, ++i)
-        {
-            orxout(debug_output) << i++ << ": " << (*it)->getRVWorldPosition() << endl;
+        for (RadarViewable* viewable : ObjectList<RadarViewable>())
+        {
+            orxout(debug_output) << i++ << ": " << viewable->getRVWorldPosition() << endl;
+            ++i;
         }
     }
@@ -208,7 +210,7 @@
     void Radar::radarObjectChanged(RadarViewable* rv)
     {
-        for (ObjectList<RadarListener>::iterator itListener = ObjectList<RadarListener>::begin(); itListener; ++itListener)
-        {
-          (*itListener)->objectChanged(rv);
+        for (RadarListener* listener : ObjectList<RadarListener>())
+        {
+            listener->objectChanged(rv);
         }
     }
Index: code/trunk/src/orxonox/Radar.h
===================================================================
--- code/trunk/src/orxonox/Radar.h	(revision 11052)
+++ code/trunk/src/orxonox/Radar.h	(revision 11071)
@@ -54,5 +54,5 @@
         virtual ~Radar();
 
-        virtual void tick(float dt);
+        virtual void tick(float dt) override;
 
         const RadarViewable* getFocus();
Index: code/trunk/src/orxonox/Scene.cc
===================================================================
--- code/trunk/src/orxonox/Scene.cc	(revision 11052)
+++ code/trunk/src/orxonox/Scene.cc	(revision 11071)
@@ -66,5 +66,5 @@
         this->bShadows_ = true;
         this->bDebugDrawPhysics_ = false;
-        this->debugDrawer_ = NULL;
+        this->debugDrawer_ = nullptr;
         this->soundReferenceDistance_ = 20.0;
         this->bIsUpdatingPhysics_ = false;
@@ -84,5 +84,5 @@
             this->rootSceneNode_ = this->sceneManager_->getRootSceneNode();
 
-            this->radar_ = 0;
+            this->radar_ = nullptr;
         }
 
@@ -92,9 +92,9 @@
         this->positiveWorldRange_ = Vector3::UNIT_SCALE *  defaultMaxWorldSize;
         this->gravity_ = Vector3::ZERO;
-        this->physicalWorld_   = 0;
-        this->solver_          = 0;
-        this->dispatcher_      = 0;
-        this->collisionConfig_ = 0;
-        this->broadphase_      = 0;
+        this->physicalWorld_   = nullptr;
+        this->solver_          = nullptr;
+        this->dispatcher_      = nullptr;
+        this->collisionConfig_ = nullptr;
+        this->broadphase_      = nullptr;
 
         this->registerVariables();
@@ -220,9 +220,8 @@
         {
             // Remove all WorldEntities and shove them to the queue since they would still like to be in a physical world.
-            for (std::set<WorldEntity*>::const_iterator it = this->physicalObjects_.begin();
-                it != this->physicalObjects_.end(); ++it)
+            for (WorldEntity* object : this->physicalObjects_)
             {
-                this->physicalWorld_->removeRigidBody((*it)->physicalBody_);
-                this->physicalObjectQueue_.insert(*it);
+                this->physicalWorld_->removeRigidBody(object->physicalBody_);
+                this->physicalObjectQueue_.insert(object);
             }
             this->physicalObjects_.clear();
@@ -234,9 +233,9 @@
             delete this->collisionConfig_;
             delete this->broadphase_;
-            this->physicalWorld_   = 0;
-            this->solver_          = 0;
-            this->dispatcher_      = 0;
-            this->collisionConfig_ = 0;
-            this->broadphase_      = 0;
+            this->physicalWorld_   = nullptr;
+            this->solver_          = nullptr;
+            this->dispatcher_      = nullptr;
+            this->collisionConfig_ = nullptr;
+            this->broadphase_      = nullptr;
         }
     }
@@ -256,9 +255,8 @@
             {
                 // Add all scheduled WorldEntities
-                for (std::set<WorldEntity*>::const_iterator it = this->physicalObjectQueue_.begin();
-                    it != this->physicalObjectQueue_.end(); ++it)
+                for (WorldEntity* object : this->physicalObjectQueue_)
                 {
-                    this->physicalWorld_->addRigidBody((*it)->physicalBody_);
-                    this->physicalObjects_.insert(*it);
+                    this->physicalWorld_->addRigidBody(object->physicalBody_);
+                    this->physicalObjects_.insert(object);
                 }
                 this->physicalObjectQueue_.clear();
@@ -321,11 +319,11 @@
     {
         unsigned int i = 0;
-        for (std::list<BaseObject*>::const_iterator it = this->objects_.begin(); it != this->objects_.end(); ++it)
+        for (BaseObject* object : this->objects_)
         {
             if (i == index)
-                return (*it);
+                return object;
             ++i;
         }
-        return 0;
+        return nullptr;
     }
 
@@ -391,6 +389,6 @@
     /*static*/ void Scene::consoleCommand_debugDrawPhysics(bool bDraw, bool bFill, float fillAlpha)
     {
-        for (ObjectListIterator<Scene> it = ObjectList<Scene>::begin(); it != ObjectList<Scene>::end(); ++it)
-            it->setDebugDrawPhysics(bDraw, bFill, fillAlpha);
+        for (Scene* scene : ObjectList<Scene>())
+            scene->setDebugDrawPhysics(bDraw, bFill, fillAlpha);
     }
 }
Index: code/trunk/src/orxonox/Scene.h
===================================================================
--- code/trunk/src/orxonox/Scene.h	(revision 11052)
+++ code/trunk/src/orxonox/Scene.h	(revision 11071)
@@ -40,4 +40,5 @@
 #include "util/OgreForwardRefs.h"
 #include "core/BaseObject.h"
+#include "core/object/Context.h"
 #include "network/synchronisable/Synchronisable.h"
 #include "tools/interfaces/Tickable.h"
@@ -51,5 +52,5 @@
             virtual ~Scene();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
             void registerVariables();
 
@@ -79,7 +80,7 @@
                 { return this->radar_; }
 
-            inline virtual uint32_t getSceneID() const { return this->getObjectID(); }
+            virtual inline uint32_t getSceneID() const override { return this->getObjectID(); }
 
-            virtual void tick(float dt);
+            virtual void tick(float dt) override;
 
         private:
@@ -111,5 +112,5 @@
         public:
             inline bool hasPhysics() const
-                { return this->physicalWorld_ != 0; }
+                { return this->physicalWorld_ != nullptr; }
             void setPhysicalWorld(bool wantsPhysics);
 
Index: code/trunk/src/orxonox/Test.cc
===================================================================
--- code/trunk/src/orxonox/Test.cc	(revision 11052)
+++ code/trunk/src/orxonox/Test.cc	(revision 11071)
@@ -54,9 +54,9 @@
     registerMemberNetworkFunction( Test, printBlaBla );
 
-    Test* Test::instance_ = 0;
+    Test* Test::instance_ = nullptr;
 
     Test::Test(Context* context) : BaseObject(context), Synchronisable(context)
     {
-        assert(instance_==0);
+        assert(instance_==nullptr);
         instance_=this;
         RegisterObject ( Test );
@@ -64,10 +64,10 @@
         registerVariables();
         setSyncMode(0x3);
-        this->pointer_ = 0;
+        this->pointer_ = nullptr;
     }
 
     Test::~Test()
     {
-        instance_=0;
+        instance_=nullptr;
     }
 
Index: code/trunk/src/orxonox/chat/ChatHistory.cc
===================================================================
--- code/trunk/src/orxonox/chat/ChatHistory.cc	(revision 11052)
+++ code/trunk/src/orxonox/chat/ChatHistory.cc	(revision 11071)
@@ -30,4 +30,5 @@
 #include "core/singleton/ScopedSingletonIncludes.h"
 #include "core/ConfigurablePaths.h"
+#include "core/CoreIncludes.h"
 
 #ifndef CHATTEST
@@ -159,11 +160,7 @@
   void ChatHistory::debug_printhist()
   {
-    /* create deque iterator */
-    std::deque<std::string>::iterator it;
-
     /* output all the strings */
-    for( it = this->hist_buffer.begin(); it != this->hist_buffer.end();
-      ++it )
-      orxout(debug_output) << *it << endl;
+    for( const std::string& hist : this->hist_buffer )
+      orxout(debug_output) << hist << endl;
 
     /* output size */
Index: code/trunk/src/orxonox/chat/ChatHistory.h
===================================================================
--- code/trunk/src/orxonox/chat/ChatHistory.h	(revision 11052)
+++ code/trunk/src/orxonox/chat/ChatHistory.h	(revision 11071)
@@ -82,5 +82,5 @@
        * \param senderID Identification number of the sender
        */
-      virtual void incomingChat(const std::string& message, const std::string& name);
+      virtual void incomingChat(const std::string& message, const std::string& name) override;
 
       /** Synchronize logfile onto the hard drive
Index: code/trunk/src/orxonox/chat/ChatInputHandler.cc
===================================================================
--- code/trunk/src/orxonox/chat/ChatInputHandler.cc	(revision 11052)
+++ code/trunk/src/orxonox/chat/ChatInputHandler.cc	(revision 11071)
@@ -79,5 +79,5 @@
     this->inpbuf = new InputBuffer();
     this->disp_offset = 0;
-    assert( this->inpbuf != NULL );
+    assert( this->inpbuf != nullptr );
 
     /* generate chatbox ui and chatbox-inputonly ui */
Index: code/trunk/src/orxonox/chat/ChatInputHandler.h
===================================================================
--- code/trunk/src/orxonox/chat/ChatInputHandler.h	(revision 11052)
+++ code/trunk/src/orxonox/chat/ChatInputHandler.h	(revision 11071)
@@ -125,5 +125,5 @@
        * history window of the full chat window)
        */
-      void incomingChat(const std::string& message, const std::string& name);
+      virtual void incomingChat(const std::string& message, const std::string& name) override;
 
       /** \param full true means show full chat window with history,
Index: code/trunk/src/orxonox/chat/ChatManager.cc
===================================================================
--- code/trunk/src/orxonox/chat/ChatManager.cc	(revision 11052)
+++ code/trunk/src/orxonox/chat/ChatManager.cc	(revision 11071)
@@ -107,6 +107,6 @@
 
         // notify all listeners
-        for (ObjectList<ChatListener>::iterator it = ObjectList<ChatListener>::begin(); it != ObjectList<ChatListener>::end(); ++it)
-            it->incomingChat(text, name);
+        for (ChatListener* listener : ObjectList<ChatListener>())
+            listener->incomingChat(text, name);
     }
 
Index: code/trunk/src/orxonox/chat/ChatManager.h
===================================================================
--- code/trunk/src/orxonox/chat/ChatManager.h	(revision 11052)
+++ code/trunk/src/orxonox/chat/ChatManager.h	(revision 11071)
@@ -47,5 +47,5 @@
         public:
             ChatManager();
-            virtual ~ChatManager() {}
+            virtual ~ChatManager() = default;
 
             static void message(const std::string& message, unsigned int targetID = NETWORK_PEER_ID_BROADCAST);
@@ -53,7 +53,9 @@
 
         protected:
-            ChatManager(const ChatManager&);
+            // non-copyable:
+            ChatManager(const ChatManager&) = delete;
+            ChatManager& operator=(const ChatManager&) = delete;
 
-            virtual void incomingChat(const std::string& message, unsigned int sourceID);
+            virtual void incomingChat(const std::string& message, unsigned int sourceID) override;
 
             static ChatManager* singletonPtr_s;
Index: code/trunk/src/orxonox/collisionshapes/CollisionShape.cc
===================================================================
--- code/trunk/src/orxonox/collisionshapes/CollisionShape.cc	(revision 11052)
+++ code/trunk/src/orxonox/collisionshapes/CollisionShape.cc	(revision 11071)
@@ -57,7 +57,7 @@
         RegisterObject(CollisionShape);
 
-        this->parent_ = 0;
+        this->parent_ = nullptr;
         this->parentID_ = OBJECTID_UNKNOWN;
-        this->collisionShape_ = 0;
+        this->collisionShape_ = nullptr;
         this->position_ = Vector3::ZERO;
         this->orientation_ = Quaternion::IDENTITY;
@@ -154,5 +154,5 @@
     void CollisionShape::notifyDetached()
     {
-        this->parent_ = 0;
+        this->parent_ = nullptr;
         this->parentID_ = OBJECTID_UNKNOWN;
     }
Index: code/trunk/src/orxonox/collisionshapes/CollisionShape.h
===================================================================
--- code/trunk/src/orxonox/collisionshapes/CollisionShape.h	(revision 11052)
+++ code/trunk/src/orxonox/collisionshapes/CollisionShape.h	(revision 11071)
@@ -61,5 +61,5 @@
             virtual ~CollisionShape();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             /**
@@ -181,5 +181,5 @@
 
             btCollisionShape*       collisionShape_; //!< The bullet collision shape of this CollisionShape.
-            CompoundCollisionShape* parent_; //!< The CompoundCollisionShape this CollisionShape belongs to, NULL if it doesn't belong to one.
+            CompoundCollisionShape* parent_; //!< The CompoundCollisionShape this CollisionShape belongs to, nullptr if it doesn't belong to one.
             unsigned int            parentID_; //!< The objectID of the parent of this CollisionShape, which can either be a CompoundCollisionShape or a WorldEntity.
 
Index: code/trunk/src/orxonox/collisionshapes/CompoundCollisionShape.cc
===================================================================
--- code/trunk/src/orxonox/collisionshapes/CompoundCollisionShape.cc	(revision 11052)
+++ code/trunk/src/orxonox/collisionshapes/CompoundCollisionShape.cc	(revision 11071)
@@ -65,17 +65,16 @@
         {
             // Delete all children
-            for (std::map<CollisionShape*, btCollisionShape*>::iterator it = this->attachedShapes_.begin();
-                it != this->attachedShapes_.end(); ++it)
+            for (const auto& mapEntry : this->attachedShapes_)
             {
                 // make sure that the child doesn't want to detach itself --> speedup because of the missing update
-                it->first->notifyDetached();
-                it->first->destroy();
-                if (this->collisionShape_ == it->second)
-                    this->collisionShape_ = NULL; // don't destroy it twice
+                mapEntry.first->notifyDetached();
+                mapEntry.first->destroy();
+                if (this->collisionShape_ == mapEntry.second)
+                    this->collisionShape_ = nullptr; // don't destroy it twice
             }
 
             delete this->compoundShape_;
             if (this->collisionShape_ == this->compoundShape_)
-                this->collisionShape_ = NULL; // don't destroy it twice
+                this->collisionShape_ = nullptr; // don't destroy it twice
         }
     }
@@ -96,5 +95,5 @@
     void CompoundCollisionShape::attach(CollisionShape* shape)
     {
-        // If either the input shape is NULL or we try to attach the CollisionShape to itself.
+        // If either the input shape is nullptr or we try to attach the CollisionShape to itself.
         if (!shape || static_cast<CollisionShape*>(this) == shape)
             return;
@@ -197,16 +196,16 @@
     void CompoundCollisionShape::updatePublicShape()
     {
-        btCollisionShape* primitive = 0; // The primitive shape, if there is one.
+        btCollisionShape* primitive = nullptr; // The primitive shape, if there is one.
         bool bPrimitive = true; // Whether the CompoundCollisionShape has just one non-empty CollisionShape. And that shape also has no transformation.
         bool bEmpty = true; // Whether the CompoundCollisionShape is empty.
         // Iterate over all CollisionShapes that belong to this CompoundCollisionShape.
-        for (std::map<CollisionShape*, btCollisionShape*>::const_iterator it = this->attachedShapes_.begin(); it != this->attachedShapes_.end(); ++it)
+        for (const auto& mapEntry : this->attachedShapes_)
         {
             // TODO: Make sure this is correct.
-            if (it->second)
+            if (mapEntry.second)
             {
                 bEmpty = false;
-                if (!it->first->hasTransform() && bPrimitive)
-                    primitive = it->second;
+                if (!mapEntry.first->hasTransform() && bPrimitive)
+                    primitive = mapEntry.second;
                 else
                 {
@@ -221,7 +220,7 @@
         {
             // If there was none all along, nothing needs to be changed.
-            if (this->collisionShape_ == 0)
+            if (this->collisionShape_ == nullptr)
                 return;
-            this->collisionShape_ = 0;
+            this->collisionShape_ = nullptr;
         }
         // If the CompoundCollisionShape is just a primitive.
@@ -247,11 +246,11 @@
     {
         unsigned int i = 0;
-        for (std::map<CollisionShape*, btCollisionShape*>::const_iterator it = this->attachedShapes_.begin(); it != this->attachedShapes_.end(); ++it)
+        for (const auto& mapEntry : this->attachedShapes_)
         {
             if (i == index)
-                return it->first;
+                return mapEntry.first;
             ++i;
         }
-        return 0;
+        return nullptr;
     }
 
@@ -267,6 +266,6 @@
         std::vector<CollisionShape*> shapes;
         // Iterate through all attached CollisionShapes and add them to the list of shapes.
-        for(std::map<CollisionShape*, btCollisionShape*>::iterator it = this->attachedShapes_.begin(); it != this->attachedShapes_.end(); it++)
-            shapes.push_back(it->first);
+        for(const auto& mapEntry : this->attachedShapes_)
+            shapes.push_back(mapEntry.first);
 
         // Delete the compound shape and create a new one.
@@ -275,7 +274,6 @@
 
         // Re-attach all CollisionShapes.
-        for(std::vector<CollisionShape*>::iterator it = shapes.begin(); it != shapes.end(); it++)
-        {
-            CollisionShape* shape = *it;
+        for(CollisionShape* shape : shapes)
+        {
             shape->setScale3D(this->getScale3D());
             // Only actually attach if we didn't pick a CompoundCollisionShape with no content.
Index: code/trunk/src/orxonox/collisionshapes/CompoundCollisionShape.h
===================================================================
--- code/trunk/src/orxonox/collisionshapes/CompoundCollisionShape.h	(revision 11052)
+++ code/trunk/src/orxonox/collisionshapes/CompoundCollisionShape.h	(revision 11071)
@@ -61,5 +61,5 @@
             virtual ~CompoundCollisionShape();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             void attach(CollisionShape* shape);
@@ -70,10 +70,10 @@
             void updateAttachedShape(CollisionShape* shape);
 
-            virtual void changedScale();
+            virtual void changedScale() override;
 
         private:
             void updatePublicShape();
-            inline virtual btCollisionShape* createNewShape() const
-                { assert(false); return 0; }
+            virtual inline btCollisionShape* createNewShape() const override
+                { assert(false); return nullptr; }
 
             btCompoundShape* compoundShape_;
Index: code/trunk/src/orxonox/collisionshapes/WorldEntityCollisionShape.cc
===================================================================
--- code/trunk/src/orxonox/collisionshapes/WorldEntityCollisionShape.cc	(revision 11052)
+++ code/trunk/src/orxonox/collisionshapes/WorldEntityCollisionShape.cc	(revision 11071)
@@ -43,5 +43,5 @@
         RegisterObject(WorldEntityCollisionShape);
 
-        this->worldEntityOwner_ = NULL;
+        this->worldEntityOwner_ = nullptr;
         // suppress synchronisation
         this->setSyncMode(ObjectDirection::None);
@@ -54,5 +54,5 @@
         CollisionShape::updateParent();
 
-        assert(this->worldEntityOwner_ != 0);
+        assert(this->worldEntityOwner_ != nullptr);
         this->worldEntityOwner_->notifyCollisionShapeChanged();
     }
Index: code/trunk/src/orxonox/collisionshapes/WorldEntityCollisionShape.h
===================================================================
--- code/trunk/src/orxonox/collisionshapes/WorldEntityCollisionShape.h	(revision 11052)
+++ code/trunk/src/orxonox/collisionshapes/WorldEntityCollisionShape.h	(revision 11071)
@@ -46,8 +46,8 @@
 
         protected:
-            virtual void updateParent();
+            virtual void updateParent() override;
 
         private:
-            void parentChanged();
+            virtual void parentChanged() override;
 
             WorldEntity* worldEntityOwner_;
Index: code/trunk/src/orxonox/controllers/AIController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/AIController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/AIController.cc	(revision 11071)
@@ -249,5 +249,5 @@
             }
             else
-                this->setPreviousMode();//If bot dies -> getControllableEntity == NULL -> get out of ROCKET mode
+                this->setPreviousMode();//If bot dies -> getControllableEntity == nullptr -> get out of ROCKET mode
         }//END_OF ROCKET MODE
 
Index: code/trunk/src/orxonox/controllers/AIController.h
===================================================================
--- code/trunk/src/orxonox/controllers/AIController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/AIController.h	(revision 11071)
@@ -44,5 +44,5 @@
             virtual ~AIController();
 
-            virtual void tick(float dt); //<! Carrying out the targets set in action().
+            virtual void tick(float dt) override; //<! Carrying out the targets set in action().
 
         protected:
Index: code/trunk/src/orxonox/controllers/ActionpointController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/ActionpointController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/ActionpointController.cc	(revision 11071)
@@ -339,5 +339,5 @@
             inLoop = this->bInLoop_;
 
-            Action::Value value;
+            Action value;
             
             if ( actionName == "FIGHT" )
@@ -371,8 +371,8 @@
             return this->actionpoints_[index];
         else
-            return 0;
+            return nullptr;
     }
     //XML method
-    Action::Value ActionpointController::getAction ()
+    Action ActionpointController::getAction ()
     {
         return this->action_;
@@ -401,10 +401,10 @@
     }
     //XML method
-    void ActionpointController::setAction (Action::Value action)
+    void ActionpointController::setAction (Action action)
     {
         this->action_ = action;
     }
     //set action and target/protect
-    void ActionpointController::setAction (Action::Value action, ControllableEntity* target)
+    void ActionpointController::setAction (Action action, ControllableEntity* target)
     {
         if (!this || !this->getControllableEntity())
@@ -423,5 +423,5 @@
     }
     //set action and target position
-    void ActionpointController::setAction (Action::Value action, const Vector3& target)
+    void ActionpointController::setAction (Action action, const Vector3& target)
     {
         if (!this || !this->getControllableEntity())
@@ -434,5 +434,5 @@
     }
     //set action and target position and orientation
-    void ActionpointController::setAction (Action::Value action, const Vector3& target,  const Quaternion& orient )
+    void ActionpointController::setAction (Action action, const Vector3& target,  const Quaternion& orient )
     {
         if (!this || !this->getControllableEntity())
@@ -476,5 +476,5 @@
                 return;
 
-            this->setTarget(0);
+            this->setTarget(nullptr);
             this->setTargetPosition(this->getControllableEntity()->getWorldPosition());
             this->action_ = Action::NONE;
@@ -506,11 +506,11 @@
                 if (targetName == "")
                     break;
-                for (ObjectList<Pawn>::iterator itP = ObjectList<Pawn>::begin(); itP; ++itP)
-                {
-                    if (!this || !this->getControllableEntity())
-                        return;
-                    if (CommonController::getName(*itP) == targetName)
+                for (Pawn* pawn : ObjectList<Pawn>())
+                {
+                    if (!this || !this->getControllableEntity())
+                        return;
+                    if (CommonController::getName(pawn) == targetName)
                     {
-                        this->setTarget (static_cast<ControllableEntity*>(*itP));
+                        this->setTarget (static_cast<ControllableEntity*>(pawn));
                     }
                 }
@@ -541,9 +541,9 @@
                 if (protectName == "reservedKeyword:human")
                 {
-                    for (ObjectList<Pawn>::iterator itP = ObjectList<Pawn>::begin(); itP; ++itP)
+                    for (Pawn* pawn : ObjectList<Pawn>())
                     {
-                        if (orxonox_cast<ControllableEntity*>(*itP) && ((*itP)->getController()) && ((*itP)->getController()->getIdentifier()->getName() == "NewHumanController"))
+                        if (orxonox_cast<ControllableEntity*>(pawn) && (pawn->getController()) && (pawn->getController()->getIdentifier()->getName() == "NewHumanController"))
                         {
-                            this->setProtect (static_cast<ControllableEntity*>(*itP));
+                            this->setProtect (static_cast<ControllableEntity*>(pawn));
                         }
                     }
@@ -551,9 +551,9 @@
                 else
                 {
-                    for (ObjectList<Pawn>::iterator itP = ObjectList<Pawn>::begin(); itP; ++itP)
+                    for (Pawn* pawn : ObjectList<Pawn>())
                     {
-                        if (CommonController::getName(*itP) == protectName)
+                        if (CommonController::getName(pawn) == protectName)
                         {
-                            this->setProtect (static_cast<ControllableEntity*>(*itP));
+                            this->setProtect (static_cast<ControllableEntity*>(pawn));
                         }
                     }                            
@@ -578,11 +578,11 @@
                 std::string targetName = p.name;
 
-                for (ObjectList<Pawn>::iterator itP = ObjectList<Pawn>::begin(); itP; ++itP)
-                {
-                    if (CommonController::getName(*itP) == targetName)
+                for (Pawn* pawn : ObjectList<Pawn>())
+                {
+                    if (CommonController::getName(pawn) == targetName)
                     {
                         if (!this || !this->getControllableEntity())
                             return;
-                        this->setTarget (static_cast<ControllableEntity*>(*itP));
+                        this->setTarget (static_cast<ControllableEntity*>(pawn));
                     }
                 }
@@ -702,20 +702,20 @@
     {
         if (!this || !this->getControllableEntity())
-            return 0;
-
-        Pawn* closestTarget = 0;
+            return nullptr;
+
+        Pawn* closestTarget = nullptr;
         float minDistance =  std::numeric_limits<float>::infinity();
         Gametype* gt = this->getGametype();
-        for (ObjectList<Pawn>::iterator itP = ObjectList<Pawn>::begin(); itP; ++itP)
+        for (Pawn* pawn : ObjectList<Pawn>())
         {
             if (!this || !this->getControllableEntity())
-                return 0;
-            if ( CommonController::sameTeam (this->getControllableEntity(), static_cast<ControllableEntity*>(*itP), gt) )
+                return nullptr;
+            if ( CommonController::sameTeam (this->getControllableEntity(), static_cast<ControllableEntity*>(pawn), gt) )
                 continue;
 
-            float distance = CommonController::distance (*itP, this->getControllableEntity());
+            float distance = CommonController::distance (pawn, this->getControllableEntity());
             if (distance < minDistance)
             {
-                closestTarget = *itP;
+                closestTarget = pawn;
                 minDistance = distance;
             }
@@ -725,5 +725,5 @@
            return closestTarget;
         } 
-        return 0;  
+        return nullptr;
     }
     //push action FIGHT to the stack and set target to the closest enemy
Index: code/trunk/src/orxonox/controllers/ActionpointController.h
===================================================================
--- code/trunk/src/orxonox/controllers/ActionpointController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/ActionpointController.h	(revision 11071)
@@ -65,26 +65,15 @@
         All the demos are in a file called AITest.oxw. In the menu look for New AI Testing Level.
     */
-    namespace Action
+    enum class Action
     {  
-        enum Value
-        {
-            NONE, FLY, FIGHT, PROTECT, FIGHTALL, ATTACK
-        };
-        
-    }
+        NONE, FLY, FIGHT, PROTECT, FIGHTALL, ATTACK
+    };
     
     struct Point {
-        Action::Value action;
+        Action action;
         std::string name;
         Vector3 position;
         bool inLoop;
-    } ;
-    namespace PickupType
-    {
-        enum Value
-        {  
-            NONE, DAMAGE, HEALTH, SPEED, PORTAL
-        };
-    }
+    };
 
     class _OrxonoxExport ActionpointController : public FightingController, public Tickable
@@ -94,5 +83,5 @@
             ActionpointController(Context* context);
             virtual ~ActionpointController();
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);          
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
                
             /**
@@ -101,5 +90,5 @@
                 In tick ship flies and fires.
             */
-            virtual void tick(float dt);   
+            virtual void tick(float dt) override;
             /**
             @brief
@@ -186,11 +175,11 @@
             virtual void takeActionpoints (const std::vector<Point>& vector, const std::vector<Point>& loop, bool b);
 
-            virtual Action::Value getAction ();
+            virtual Action getAction ();
             virtual std::string getActionName();
 
-            void setAction (Action::Value action);
-            void setAction (Action::Value action, ControllableEntity* target);
-            void setAction (Action::Value action, const Vector3& target);
-            void setAction (Action::Value action, const Vector3& target,  const Quaternion& orient );
+            void setAction (Action action);
+            void setAction (Action action, ControllableEntity* target);
+            void setAction (Action action, const Vector3& target);
+            void setAction (Action action, const Vector3& target,  const Quaternion& orient );
 
             virtual bool setWingman(ActionpointController* wingman)
@@ -210,11 +199,11 @@
                 WeakPtr<ActionpointController> myDivisionLeader_;
             //----[Actionpoint information]----
-                Action::Value action_;
+                Action action_;
                 std::string protectName_;
                 std::string targetName_;
-                std::vector<WeakPtr<WorldEntity> > actionpoints_;
+                std::vector<WeakPtr<WorldEntity>> actionpoints_;
                 float squaredaccuracy_;
-                std::vector<Point > parsedActionpoints_;//<! actionpoints as they are stored here after being parsed from XML
-                std::vector<Point > loopActionpoints_;  //<! actionpoints that are to be looped
+                std::vector<Point> parsedActionpoints_; //<! actionpoints as they are stored here after being parsed from XML
+                std::vector<Point> loopActionpoints_;   //<! actionpoints that are to be looped
                 bool bInLoop_;                          //<! variable for addActionpoint method
                 bool bLoop_;                            //<! is state machine looping?
Index: code/trunk/src/orxonox/controllers/ArtificialController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/ArtificialController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/ArtificialController.cc	(revision 11071)
@@ -56,5 +56,5 @@
         this->currentWaypoint_ = 0;
         this->setAccuracy(5);
-        this->defaultWaypoint_ = NULL;
+        this->defaultWaypoint_ = nullptr;
         this->mode_ = DEFAULT;//Vector-implementation: mode_.push_back(DEFAULT);
     }
@@ -177,8 +177,8 @@
             {
                 this->weaponModes_.clear(); // reset previous weapon information
-                WeaponSlot* wSlot = 0;
+                WeaponSlot* wSlot = nullptr;
                 for(int l=0; (wSlot = pawn->getWeaponSlot(l)) ; l++)
                 {
-                    WeaponMode* wMode = 0;
+                    WeaponMode* wMode = nullptr;
                     for(int i=0; (wMode = wSlot->getWeapon()->getWeaponmode(i)) ; i++)
                     {
@@ -207,6 +207,6 @@
     void ArtificialController::setAllBotLevel(float level)
     {
-        for (ObjectList<ArtificialController>::iterator it = ObjectList<ArtificialController>::begin(); it != ObjectList<ArtificialController>::end(); ++it)
-            it->setBotLevel(level);
+        for (ArtificialController* controller : ObjectList<ArtificialController>())
+            controller->setBotLevel(level);
     }
 
@@ -222,5 +222,5 @@
     {
         SpaceShip* ship = orxonox_cast<SpaceShip*>(this->getControllableEntity());
-        if(ship == NULL) return;
+        if(ship == nullptr) return;
         if(ship->getBoostPower()*1.5f > ship->getInitialBoostPower() ) //upper limit ->boost
             this->getControllableEntity()->boost(true);
@@ -231,8 +231,8 @@
     int ArtificialController::getFiremode(std::string name)
     {
-        for (std::map< std::string, int >::iterator it = this->weaponModes_.begin(); it != this->weaponModes_.end(); ++it)
-        {
-            if (it->first == name)
-                return it->second;
+        for (const auto& mapEntry : this->weaponModes_)
+        {
+            if (mapEntry.first == name)
+                return mapEntry.second;
         }
         return -1;
@@ -249,5 +249,5 @@
             return this->waypoints_[index];
         else
-            return 0;
+            return nullptr;
     }
 
@@ -258,12 +258,12 @@
     void ArtificialController::updatePointsOfInterest(std::string name, float searchDistance)
     {
-        WorldEntity* waypoint = NULL;
-        for (ObjectList<WorldEntity>::iterator it = ObjectList<WorldEntity>::begin(); it != ObjectList<WorldEntity>::end(); ++it)
-        {
-            if((*it)->getIdentifier() == ClassByString(name))
+        WorldEntity* waypoint = nullptr;
+        for (WorldEntity* we : ObjectList<WorldEntity>())
+        {
+            if(we->getIdentifier() == ClassByString(name))
             {
                 ControllableEntity* controllable = this->getControllableEntity();
                 if(!controllable) continue;
-                float actualDistance = ( (*it)->getPosition() - controllable->getPosition() ).length();
+                float actualDistance = ( we->getPosition() - controllable->getPosition() ).length();
                 if(actualDistance > searchDistance || actualDistance < 5.0f) continue;
                     // TODO: PickupSpawner: adjust waypoint accuracy to PickupSpawner's triggerdistance
@@ -271,5 +271,5 @@
                 else
                 {
-                    waypoint = *it;
+                    waypoint = we;
                     break;
                 }
Index: code/trunk/src/orxonox/controllers/ArtificialController.h
===================================================================
--- code/trunk/src/orxonox/controllers/ArtificialController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/ArtificialController.h	(revision 11071)
@@ -42,9 +42,9 @@
             virtual ~ArtificialController();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             void abandonTarget(Pawn* target);
 
-            virtual void changedControllableEntity();
+            virtual void changedControllableEntity() override;
 
             virtual void doFire();
@@ -89,5 +89,5 @@
 
             //WAYPOINT DATA
-            std::vector<WeakPtr<WorldEntity> > waypoints_;
+            std::vector<WeakPtr<WorldEntity>> waypoints_;
             size_t currentWaypoint_;
             float squaredaccuracy_;
Index: code/trunk/src/orxonox/controllers/CommonController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/CommonController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/CommonController.cc	(revision 11071)
@@ -83,5 +83,5 @@
         int team2 = entity2->getTeam();
 
-        Controller* controller = 0;
+        Controller* controller = nullptr;
         if (entity1->getController())
             controller = entity1->getController();
@@ -120,5 +120,5 @@
         }
 
-        TeamBaseMatchBase* base = 0;
+        TeamBaseMatchBase* base = nullptr;
         base = orxonox_cast<TeamBaseMatchBase*>(entity1);
         if (base)
@@ -154,5 +154,5 @@
         }
 
-        DroneController* droneController = 0;
+        DroneController* droneController = nullptr;
         droneController = orxonox_cast<DroneController*>(entity1->getController());
         if (droneController && static_cast<ControllableEntity*>(droneController->getOwner()) == entity2)
Index: code/trunk/src/orxonox/controllers/Controller.cc
===================================================================
--- code/trunk/src/orxonox/controllers/Controller.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/Controller.cc	(revision 11071)
@@ -40,6 +40,6 @@
         RegisterObject(Controller);
 
-        this->player_ = 0;
-        this->controllableEntity_ = 0;
+        this->player_ = nullptr;
+        this->controllableEntity_ = nullptr;
         this->bGodMode_ = false;
         this->team_=-1;
Index: code/trunk/src/orxonox/controllers/Controller.h
===================================================================
--- code/trunk/src/orxonox/controllers/Controller.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/Controller.h	(revision 11071)
@@ -45,5 +45,5 @@
             Controller(Context* context);
             virtual ~Controller();
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
             inline void setPlayer(PlayerInfo* player)
                 { this->player_ = player; }
Index: code/trunk/src/orxonox/controllers/ControllerDirector.cc
===================================================================
--- code/trunk/src/orxonox/controllers/ControllerDirector.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/ControllerDirector.cc	(revision 11071)
@@ -32,7 +32,7 @@
 
         // Initialize member variables
-        this->player_ = NULL;
-        this->entity_ = NULL;
-        this->pTrigger_ = NULL;
+        this->player_ = nullptr;
+        this->entity_ = nullptr;
+        this->pTrigger_ = nullptr;
         this->context_ = context;
     }
@@ -110,10 +110,10 @@
     {
         this->pTrigger_ = orxonox_cast<PlayerTrigger*>(trigger);
-        this->player_ = NULL;
+        this->player_ = nullptr;
 
         orxout(verbose) << "Preparation to take Control!" << endl; 
 
         // Check whether it is a player trigger and extract pawn from it
-        if(this->pTrigger_ != NULL)
+        if(this->pTrigger_ != nullptr)
         {
             // Get the object which triggered the event.
@@ -121,5 +121,5 @@
 
             // Check if there actually was a player returned.
-            if( this->player_ == NULL) return false;
+            if( this->player_ == nullptr) return false;
         }
         else
Index: code/trunk/src/orxonox/controllers/ControllerDirector.h
===================================================================
--- code/trunk/src/orxonox/controllers/ControllerDirector.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/ControllerDirector.h	(revision 11071)
@@ -43,7 +43,7 @@
             virtual ~ControllerDirector() { }
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
             bool party(bool bTriggered, BaseObject* trigger);
-            virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             inline void setScriptName(const std::string& name) { this->scriptname_ = name; }
Index: code/trunk/src/orxonox/controllers/DivisionController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/DivisionController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/DivisionController.cc	(revision 11071)
@@ -40,33 +40,19 @@
         RegisterObject(DivisionController);
         this->setFormationMode(FormationMode::DIAMOND);
-        this->target_ = 0;
-        this->myFollower_ = 0;
-        this->myWingman_ = 0;
+        this->target_ = nullptr;
+        this->myFollower_ = nullptr;
+        this->myWingman_ = nullptr;
     }
 
     DivisionController::~DivisionController()
     {
-        for (size_t i = 0; i < this->actionpoints_.size(); ++i)
+        for (WorldEntity* actionpoint : this->actionpoints_)
         {
-            if(this->actionpoints_[i])
-                this->actionpoints_[i]->destroy();
+            if (actionpoint)
+                actionpoint->destroy();
         }
         this->parsedActionpoints_.clear();
         this->actionpoints_.clear();
     } 
-
-    void DivisionController::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(DivisionController, XMLPort, xmlelement, mode);
-        
-    }
-    void DivisionController::tick(float dt)
-    {   
-        if (!this->isActive())
-            return;   
-        
-        SUPER(DivisionController, tick, dt);
-        
-    }
     void DivisionController::action()
     {   
Index: code/trunk/src/orxonox/controllers/DivisionController.h
===================================================================
--- code/trunk/src/orxonox/controllers/DivisionController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/DivisionController.h	(revision 11071)
@@ -50,22 +50,16 @@
             //----[/language demanded functions]----            
 
-            //----[orxonox demanded functions]----
-                virtual void tick(float dt); 
-
-                virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);          
-            //----[orxonox demanded functions]----
-
             //----[own functions]----
-                virtual bool setFollower(ActionpointController* newFollower);
-                virtual bool setWingman(ActionpointController* newWingman);
-                virtual bool hasWingman();
-                virtual bool hasFollower();
+                virtual bool setFollower(ActionpointController* newFollower) override;
+                virtual bool setWingman(ActionpointController* newWingman) override;
+                virtual bool hasWingman() override;
+                virtual bool hasFollower() override;
                 
             //----[/own functions]----
-            virtual void stayNearProtect();
+            virtual void stayNearProtect() override;
 
         protected:
             //----action must only be managed by this----
-            virtual void action(); //<! action() is called in regular intervals managing the bot's behaviour.
+            virtual void action() override; //<! action() is called in regular intervals managing the bot's behaviour.
 
         private:
Index: code/trunk/src/orxonox/controllers/DroneController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/DroneController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/DroneController.cc	(revision 11071)
@@ -49,6 +49,6 @@
         RegisterObject(DroneController);
 
-        this->owner_ = 0;
-        this->drone_ = 0;
+        this->owner_ = nullptr;
+        this->drone_ = nullptr;
         this->isShooting_ = false;
         this->setAccuracy(10);
Index: code/trunk/src/orxonox/controllers/DroneController.h
===================================================================
--- code/trunk/src/orxonox/controllers/DroneController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/DroneController.h	(revision 11071)
@@ -53,5 +53,5 @@
             virtual ~DroneController();
 
-            virtual void tick(float dt); //!< The controlling happens here. This method defines what the controller has to do each tick.
+            virtual void tick(float dt) override; //!< The controlling happens here. This method defines what the controller has to do each tick.
 
             void setOwner(Pawn* owner);
Index: code/trunk/src/orxonox/controllers/FightingController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/FightingController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/FightingController.cc	(revision 11071)
@@ -27,5 +27,4 @@
  */
 #include "controllers/FightingController.h"
-#include "core/XMLPort.h"
 #include "util/Math.h"
 
@@ -56,8 +55,4 @@
     {
         
-    }
-    void FightingController::XMLPort( Element& xmlelement, XMLPort::Mode mode )
-    {
-        SUPER( FightingController, XMLPort, xmlelement, mode );
     }
     void FightingController::lookAtTarget(float dt)
@@ -243,18 +238,18 @@
     {
         if (!this || !this->getControllableEntity())
-            return 0;
-
-        Pawn* closestTarget = 0;
+            return nullptr;
+
+        Pawn* closestTarget = nullptr;
         float minDistance =  std::numeric_limits<float>::infinity();
         Gametype* gt = this->getGametype();
-        for (ObjectList<Pawn>::iterator itP = ObjectList<Pawn>::begin(); itP; ++itP)
-        {
-            if ( CommonController::sameTeam (this->getControllableEntity(), static_cast<ControllableEntity*>(*itP), gt) )
+        for (Pawn* pawn : ObjectList<Pawn>())
+        {
+            if ( CommonController::sameTeam (this->getControllableEntity(), static_cast<ControllableEntity*>(pawn), gt) )
                 continue;
 
-            float distance = CommonController::distance (*itP, this->getControllableEntity());
+            float distance = CommonController::distance (pawn, this->getControllableEntity());
             if (distance < minDistance)
             {
-                closestTarget = *itP;
+                closestTarget = pawn;
                 minDistance = distance;
             }
@@ -264,5 +259,5 @@
            return closestTarget;
         } 
-        return 0;  
+        return nullptr;
     }
     //I checked it out, rockets DO NOT cause any problems! this->getControllableEntity() is always a SpaceShip
@@ -340,8 +335,8 @@
             {
                 this->weaponModes_.clear(); // reset previous weapon information
-                WeaponSlot* wSlot = 0;
+                WeaponSlot* wSlot = nullptr;
                 for(int l=0; (wSlot = pawn->getWeaponSlot(l)) ; l++)
                 {
-                    WeaponMode* wMode = 0;
+                    WeaponMode* wMode = nullptr;
                     for(int i=0; (wMode = wSlot->getWeapon()->getWeaponmode(i)) ; i++)
                     {
@@ -361,10 +356,10 @@
     }
 
-    int FightingController::getFiremode(std::string name)
-    {
-        for (std::map< std::string, int >::iterator it = this->weaponModes_.begin(); it != this->weaponModes_.end(); ++it)
-        {
-            if (it->first == name)
-                return it->second;
+    int FightingController::getFiremode(const std::string& name)
+    {
+        for (const auto& mapEntry : this->weaponModes_)
+        {
+            if (mapEntry.first == name)
+                return mapEntry.second;
         }
         return -1;
Index: code/trunk/src/orxonox/controllers/FightingController.h
===================================================================
--- code/trunk/src/orxonox/controllers/FightingController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/FightingController.h	(revision 11071)
@@ -50,6 +50,4 @@
             virtual ~FightingController();
             
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-       
             float squaredDistanceToTarget() const;
             bool isLookingAtTarget(float angle) const;
@@ -74,5 +72,4 @@
                                                                         //<! this and target_ plus or minus some amount in difference vector direction,
                                                                         //<! depending on whether it is better to close up or survive.
-            void dodgeTowards (Vector3& position);  //fly towards position and awoid being hit
             void doFire();  //<! choose weapon, set aim at target_ and fire
             WeakPtr<ControllableEntity> target_;
@@ -99,5 +96,5 @@
             void setupWeapons(); //<! Defines which weapons are available for a bot. Is recalled whenever a bot was killed.
             bool bSetupWorked; //<! If false, setupWeapons() is called.
-            int getFiremode(std::string name);
+            int getFiremode(const std::string& name);
           
     };
Index: code/trunk/src/orxonox/controllers/FlyingController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/FlyingController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/FlyingController.cc	(revision 11071)
@@ -61,8 +61,8 @@
     }
    
-    void FlyingController::setFormationModeXML(std::string val)
+    void FlyingController::setFormationModeXML(const std::string& val)
     {
         const std::string valUpper = getUppercase(val);
-        FormationMode::Value value;
+        FormationMode value;
         
         if (valUpper == "WALL")
@@ -233,5 +233,5 @@
             return;
         SpaceShip* ship = orxonox_cast<SpaceShip*>(this->getControllableEntity());
-        if(ship == NULL) return;
+        if(ship == nullptr) return;
         if(ship->getBoostPower()*1.5f > ship->getInitialBoostPower()) //upper limit ->boost
         {
Index: code/trunk/src/orxonox/controllers/FlyingController.h
===================================================================
--- code/trunk/src/orxonox/controllers/FlyingController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/FlyingController.h	(revision 11071)
@@ -41,11 +41,8 @@
 
     //Formation mode for the divisions
-    namespace FormationMode
+    enum class FormationMode
     {
-        enum Value
-        {
-            FINGER4, DIAMOND, WALL
-        };
-    }
+        FINGER4, DIAMOND, WALL
+    };
 
     class _OrxonoxExport FlyingController : public CommonController
@@ -58,5 +55,5 @@
             FlyingController(Context* context);
             virtual ~FlyingController();
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             void setSpread (int spread)                         //<! spread is a multiplier for formation flight, should be bigger than 100
@@ -65,10 +62,10 @@
                 { return this->spread_; }
 
-            void setFormationModeXML(std::string val);
+            void setFormationModeXML(const std::string& val);
             std::string getFormationModeXML() const;
 
-            void setFormationMode(FormationMode::Value val)
+            void setFormationMode(FormationMode val)
                 { this->formationMode_ = val; }
-            FormationMode::Value getFormationMode() const
+            FormationMode getFormationMode() const
                 { return this->formationMode_; }
             bool bCopyOrientation_;                             //<! set to true by default, MasterController sets it in its tick(),
@@ -91,5 +88,5 @@
                                                                     //<! this stays in a certain position relative to leader      
             
-            FormationMode::Value formationMode_;
+            FormationMode formationMode_;
           
             float rotationProgress_;    //<! for slerping 
Index: code/trunk/src/orxonox/controllers/FormationController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/FormationController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/FormationController.cc	(revision 11071)
@@ -58,13 +58,13 @@
     RegisterClass(FormationController);
 
-    static const unsigned int STANDARD_MAX_FORMATION_SIZE = 9;
-    static const int RADIUS_TO_SEARCH_FOR_MASTERS = 5000;
-    static const float FORMATION_LENGTH =  110;
-    static const float FORMATION_WIDTH =  110;
-    static const int FREEDOM_COUNT = 4; //seconds the slaves in a formation will be set free when master attacks an enemy
-    static const float SPEED_MASTER = 0.6f;
-    static const float ROTATEFACTOR_MASTER = 0.2f;
-    static const float SPEED_FREE = 0.8f;
-    static const float ROTATEFACTOR_FREE = 0.8f;
+    static constexpr unsigned int STANDARD_MAX_FORMATION_SIZE = 9;
+    static constexpr int RADIUS_TO_SEARCH_FOR_MASTERS = 5000;
+    static constexpr float FORMATION_LENGTH =  110;
+    static constexpr float FORMATION_WIDTH =  110;
+    static constexpr int FREEDOM_COUNT = 4; //seconds the slaves in a formation will be set free when master attacks an enemy
+    static constexpr float SPEED_MASTER = 0.6f;
+    static constexpr float ROTATEFACTOR_MASTER = 0.2f;
+    static constexpr float SPEED_FREE = 0.8f;
+    static constexpr float ROTATEFACTOR_FREE = 0.8f;
 
     FormationController::FormationController(Context* context) : Controller(context)
@@ -72,9 +72,9 @@
         RegisterObject(FormationController);
 
-        this->target_ = 0;
+        this->target_ = nullptr;
         this->formationFlight_ = false;
         this->passive_ = false;
         this->maxFormationSize_ = STANDARD_MAX_FORMATION_SIZE;
-        this->myMaster_ = 0;
+        this->myMaster_ = nullptr;
         this->freedomCount_ = 0;
 
@@ -97,21 +97,21 @@
             this->removeFromFormation();
 
-            for (ObjectList<FormationController>::iterator it = ObjectList<FormationController>::begin(); it; ++it)
-            {
-                if (*it != this)
+            for (FormationController* controller : ObjectList<FormationController>())
+            {
+                if (controller != this)
                 {
-                    if (it->myMaster_ == this)
+                    if (controller->myMaster_ == this)
                     {
-                        orxout(internal_error) << this << " is still master in " << (*it) << endl;
-                        it->myMaster_ = 0;
+                        orxout(internal_error) << this << " is still master in " << controller << endl;
+                        controller->myMaster_ = nullptr;
                     }
 
                     while (true)
                     {
-                        std::vector<FormationController*>::iterator it2 = std::find(it->slaves_.begin(), it->slaves_.end(), this);
-                        if (it2 != it->slaves_.end())
+                        std::vector<FormationController*>::iterator it2 = std::find(controller->slaves_.begin(), controller->slaves_.end(), this);
+                        if (it2 != controller->slaves_.end())
                         {
-                            orxout(internal_error) << this << " is still slave in " << (*it) << endl;
-                            it->slaves_.erase(it2);
+                            orxout(internal_error) << this << " is still slave in " << controller << endl;
+                            controller->slaves_.erase(it2);
                         }
                         else
@@ -140,12 +140,12 @@
     void FormationController::formationflight(const bool form)
     {
-        for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it; ++it)
-        {
-            Controller* controller = 0;
-
-            if (it->getController())
-                controller = it->getController();
-            else if (it->getXMLController())
-                controller = it->getXMLController();
+        for (Pawn* pawn : ObjectList<Pawn>())
+        {
+            Controller* controller = nullptr;
+
+            if (pawn->getController())
+                controller = pawn->getController();
+            else if (pawn->getXMLController())
+                controller = pawn->getXMLController();
 
             if (!controller)
@@ -171,12 +171,12 @@
     void FormationController::masteraction(const int action)
     {
-        for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it; ++it)
-        {
-            Controller* controller = 0;
-
-            if (it->getController())
-                controller = it->getController();
-            else if (it->getXMLController())
-                controller = it->getXMLController();
+        for (Pawn* pawn : ObjectList<Pawn>())
+        {
+            Controller* controller = nullptr;
+
+            if (pawn->getController())
+                controller = pawn->getController();
+            else if (pawn->getXMLController())
+                controller = pawn->getXMLController();
 
             if (!controller)
@@ -201,12 +201,12 @@
     void FormationController::passivebehaviour(const bool passive)
     {
-        for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it; ++it)
-        {
-            Controller* controller = 0;
-
-            if (it->getController())
-                controller = it->getController();
-            else if (it->getXMLController())
-                controller = it->getXMLController();
+        for (Pawn* pawn : ObjectList<Pawn>())
+        {
+            Controller* controller = nullptr;
+
+            if (pawn->getController())
+                controller = pawn->getController();
+            else if (pawn->getXMLController())
+                controller = pawn->getXMLController();
 
             if (!controller)
@@ -228,12 +228,12 @@
     void FormationController::formationsize(const int size)
     {
-        for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it; ++it)
-        {
-            Controller* controller = 0;
-
-            if (it->getController())
-                controller = it->getController();
-            else if (it->getXMLController())
-                controller = it->getXMLController();
+        for (Pawn* pawn : ObjectList<Pawn>())
+        {
+            Controller* controller = nullptr;
+
+            if (pawn->getController())
+                controller = pawn->getController();
+            else if (pawn->getXMLController())
+                controller = pawn->getXMLController();
 
             if (!controller)
@@ -383,5 +383,5 @@
         }
 
-        this->myMaster_ = 0;
+        this->myMaster_ = nullptr;
         this->state_ = FREE;
     }
@@ -398,5 +398,5 @@
         int teamSize = 0;
         //go through all pawns
-        for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it; ++it)
+        for (Pawn* pawn : ObjectList<Pawn>())
         {
 
@@ -405,16 +405,16 @@
             if (!gt)
             {
-                gt=it->getGametype();
-            }
-            if (!FormationController::sameTeam(this->getControllableEntity(), static_cast<ControllableEntity*>(*it),gt))
+                gt=pawn->getGametype();
+            }
+            if (!FormationController::sameTeam(this->getControllableEntity(), static_cast<ControllableEntity*>(pawn),gt))
                 continue;
 
             //has it an FormationController?
-            Controller* controller = 0;
-
-            if (it->getController())
-                controller = it->getController();
-            else if (it->getXMLController())
-                controller = it->getXMLController();
+            Controller* controller = nullptr;
+
+            if (pawn->getController())
+                controller = pawn->getController();
+            else if (pawn->getXMLController())
+                controller = pawn->getXMLController();
 
             if (!controller)
@@ -422,5 +422,5 @@
 
             //is pawn oneself?
-            if (orxonox_cast<ControllableEntity*>(*it) == this->getControllableEntity())
+            if (orxonox_cast<ControllableEntity*>(pawn) == this->getControllableEntity())
                 continue;
 
@@ -433,5 +433,5 @@
                 continue;
 
-            float distance = (it->getPosition() - this->getControllableEntity()->getPosition()).length();
+            float distance = (pawn->getPosition() - this->getControllableEntity()->getPosition()).length();
 
             // is pawn in range?
@@ -440,8 +440,8 @@
                 if(newMaster->slaves_.size() > this->maxFormationSize_) continue;
 
-                for(std::vector<FormationController*>::iterator itSlave = this->slaves_.begin(); itSlave != this->slaves_.end(); itSlave++)
+                for(FormationController* slave : this->slaves_)
                 {
-                    (*itSlave)->myMaster_ = newMaster;
-                    newMaster->slaves_.push_back(*itSlave);
+                    slave->myMaster_ = newMaster;
+                    newMaster->slaves_.push_back(slave);
                 }
                 this->slaves_.clear();
@@ -458,5 +458,5 @@
         {
             this->state_ = MASTER;
-            this->myMaster_ = 0;
+            this->myMaster_ = nullptr;
         }
     }
@@ -486,5 +486,5 @@
             int i = 1;
 
-            for(std::vector<FormationController*>::iterator it = slaves_.begin(); it != slaves_.end(); it++)
+            for(FormationController* slave : slaves_)
             {
                 pos = Vector3::ZERO;
@@ -497,6 +497,6 @@
                     dest+=FORMATION_LENGTH*(orient*WorldEntity::BACK);
                 }
-                (*it)->setTargetOrientation(orient);
-                (*it)->setTargetPosition(pos);
+                slave->setTargetOrientation(orient);
+                slave->setTargetPosition(pos);
                 left=!left;
             }
@@ -518,9 +518,9 @@
             newMaster->state_ = MASTER;
             newMaster->slaves_ = this->slaves_;
-            newMaster->myMaster_ = 0;
-
-            for(std::vector<FormationController*>::iterator it = newMaster->slaves_.begin(); it != newMaster->slaves_.end(); it++)
-            {
-                (*it)->myMaster_ = newMaster;
+            newMaster->myMaster_ = nullptr;
+
+            for(FormationController* slave : newMaster->slaves_)
+            {
+                slave->myMaster_ = newMaster;
             }
         }
@@ -547,9 +547,9 @@
                 newMaster->state_ = MASTER;
                 newMaster->slaves_ = this->slaves_;
-                newMaster->myMaster_ = 0;
-
-                for(std::vector<FormationController*>::iterator it = newMaster->slaves_.begin(); it != newMaster->slaves_.end(); it++)
+                newMaster->myMaster_ = nullptr;
+
+                for(FormationController* slave : newMaster->slaves_)
                 {
-                    (*it)->myMaster_ = newMaster;
+                    slave->myMaster_ = newMaster;
                 }
             }
@@ -569,8 +569,8 @@
         if(this->state_ != MASTER) return;
 
-        for(std::vector<FormationController*>::iterator it = slaves_.begin(); it != slaves_.end(); it++)
-        {
-            (*it)->state_ = FREE;
-            (*it)->myMaster_ = 0;
+        for(FormationController* slave : slaves_)
+        {
+            slave->state_ = FREE;
+            slave->myMaster_ = nullptr;
         }
         this->slaves_.clear();
@@ -584,10 +584,10 @@
         if(this->state_ != MASTER) return;
 
-        for(std::vector<FormationController*>::iterator it = slaves_.begin(); it != slaves_.end(); it++)
-        {
-            (*it)->state_ = FREE;
-            (*it)->forceFreedom();
-            (*it)->targetPosition_ = this->targetPosition_;
-            (*it)->bShooting_ = true;
+        for(FormationController* slave : slaves_)
+        {
+            slave->state_ = FREE;
+            slave->forceFreedom();
+            slave->targetPosition_ = this->targetPosition_;
+            slave->bShooting_ = true;
 //             (*it)->getControllableEntity()->fire(0);// fire once for fun
         }
@@ -629,5 +629,5 @@
 
         //search new Master, then take lead
-        if (this->state_==FREE && this->myMaster_==0)
+        if (this->state_==FREE && this->myMaster_==nullptr)
         {
           searchNewMaster();
@@ -650,9 +650,9 @@
             this->slaves_.push_back(this->myMaster_);
             //set this as new master
-            for(std::vector<FormationController*>::iterator it = slaves_.begin(); it != slaves_.end(); it++)
-            {
-                 (*it)->myMaster_=this;
-            }
-            this->myMaster_=0;
+            for(FormationController* slave : slaves_)
+            {
+                 slave->myMaster_=this;
+            }
+            this->myMaster_=nullptr;
             this->state_=MASTER;
         }
@@ -694,9 +694,9 @@
         if (this->state_ == MASTER)
         {
-            for(std::vector<FormationController*>::iterator it = slaves_.begin(); it != slaves_.end(); it++)
-            {
-                 (*it)->formationMode_ = val;
+            for(FormationController* slave : slaves_)
+            {
+                 slave->formationMode_ = val;
                  if (val == ATTACK)
-                     (*it)->forgetTarget();
+                     slave->forgetTarget();
             }
         }
@@ -773,16 +773,16 @@
     {
 
-        Pawn *humanPawn = NULL;
-        NewHumanController *currentHumanController = NULL;
+        Pawn *humanPawn = nullptr;
+        NewHumanController *currentHumanController = nullptr;
         std::vector<FormationController*> allMasters;
 
-        for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it; ++it)
-        {
-            Controller* controller = 0;
-
-            if (it->getController())
-                controller = it->getController();
-            else if (it->getXMLController())
-                controller = it->getXMLController();
+        for (Pawn* pawn : ObjectList<Pawn>())
+        {
+            Controller* controller = nullptr;
+
+            if (pawn->getController())
+                controller = pawn->getController();
+            else if (pawn->getXMLController())
+                controller = pawn->getXMLController();
 
             if (!controller)
@@ -791,5 +791,5 @@
             currentHumanController = orxonox_cast<NewHumanController*>(controller);
 
-            if(currentHumanController) humanPawn = *it;
+            if(currentHumanController) humanPawn = pawn;
 
             FormationController *aiController = orxonox_cast<FormationController*>(controller);
@@ -800,5 +800,5 @@
         }
 
-        if((humanPawn != NULL) && (allMasters.size() != 0))
+        if((humanPawn != nullptr) && (allMasters.size() != 0))
         {
             float posHuman = humanPawn->getPosition().length();
@@ -808,9 +808,10 @@
             int i = 0;
 
-            for(std::vector<FormationController*>::iterator it = allMasters.begin(); it != allMasters.end(); it++, i++)
-            {
-                if (!FormationController::sameTeam((*it)->getControllableEntity(), humanPawn, (*it)->getGametype())) continue;
-                distance = posHuman - (*it)->getControllableEntity()->getPosition().length();
+            for(FormationController* master : allMasters)
+            {
+                if (!FormationController::sameTeam(master->getControllableEntity(), humanPawn, master->getGametype())) continue;
+                distance = posHuman - master->getControllableEntity()->getPosition().length();
                 if(distance < minDistance) index = i;
+                i++;
             }
             allMasters[index]->followInit(humanPawn);
@@ -826,5 +827,5 @@
     void FormationController::followInit(Pawn* pawn, const bool always, const int secondsToFollow)
     {
-        if (pawn == NULL || this->state_ != MASTER)
+        if (pawn == nullptr || this->state_ != MASTER)
             return;
         this->specificMasterAction_  =  FOLLOW;
@@ -844,22 +845,22 @@
     {
 
-        Pawn *humanPawn = NULL;
-        NewHumanController *currentHumanController = NULL;
-
-        for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it; ++it)
-        {
-            if (!it->getController())
+        Pawn *humanPawn = nullptr;
+        NewHumanController *currentHumanController = nullptr;
+
+        for (Pawn* pawn : ObjectList<Pawn>())
+        {
+            if (!pawn->getController())
                 continue;
 
-            currentHumanController = orxonox_cast<NewHumanController*>(it->getController());
+            currentHumanController = orxonox_cast<NewHumanController*>(pawn->getController());
             if(currentHumanController)
             {
-                if (!FormationController::sameTeam(this->getControllableEntity(), *it, this->getGametype())) continue;
-                humanPawn = *it;
+                if (!FormationController::sameTeam(this->getControllableEntity(), pawn, this->getGametype())) continue;
+                humanPawn = pawn;
                 break;
             }
         }
 
-        if((humanPawn != NULL))
+        if((humanPawn != nullptr))
                 this->followInit(humanPawn);
     }
@@ -918,22 +919,22 @@
         this->forgetTarget();
 
-        for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it; ++it)
-        {
-            if (FormationController::sameTeam(this->getControllableEntity(), static_cast<ControllableEntity*>(*it), this->getGametype()))
+        for (Pawn* pawn : ObjectList<Pawn>())
+        {
+            if (FormationController::sameTeam(this->getControllableEntity(), static_cast<ControllableEntity*>(pawn), this->getGametype()))
                 continue;
 
             /* So AI won't choose invisible Spaceships as target */
-            if (!it->getRadarVisibility())
+            if (!pawn->getRadarVisibility())
                 continue;
 
-            if (static_cast<ControllableEntity*>(*it) != this->getControllableEntity())
+            if (static_cast<ControllableEntity*>(pawn) != this->getControllableEntity())
             {
                 float speed = this->getControllableEntity()->getVelocity().length();
                 Vector3 distanceCurrent = this->targetPosition_ - this->getControllableEntity()->getPosition();
-                Vector3 distanceNew = it->getPosition() - this->getControllableEntity()->getPosition();
-                if (!this->target_ || it->getPosition().squaredDistance(this->getControllableEntity()->getPosition()) * (1.5f + acos((this->getControllableEntity()->getOrientation() * WorldEntity::FRONT).dotProduct(distanceNew) / speed / distanceNew.length()) / math::twoPi)
+                Vector3 distanceNew = pawn->getPosition() - this->getControllableEntity()->getPosition();
+                if (!this->target_ || pawn->getPosition().squaredDistance(this->getControllableEntity()->getPosition()) * (1.5f + acos((this->getControllableEntity()->getOrientation() * WorldEntity::FRONT).dotProduct(distanceNew) / speed / distanceNew.length()) / math::twoPi)
                         < this->targetPosition_.squaredDistance(this->getControllableEntity()->getPosition()) * (1.5f + acos((this->getControllableEntity()->getOrientation() * WorldEntity::FRONT).dotProduct(distanceCurrent) / speed / distanceCurrent.length()) / math::twoPi) + rnd(-250, 250))
                 {
-                    this->setTarget(*it);
+                    this->setTarget(pawn);
                 }
             }
@@ -943,5 +944,5 @@
     void FormationController::forgetTarget()
     {
-        this->target_ = 0;
+        this->target_ = nullptr;
         this->bShooting_ = false;
     }
@@ -963,5 +964,5 @@
         int team2 = entity2->getTeam();
 
-        Controller* controller = 0;
+        Controller* controller = nullptr;
         if (entity1->getController())
             controller = entity1->getController();
@@ -1000,5 +1001,5 @@
         }
 
-        TeamBaseMatchBase* base = 0;
+        TeamBaseMatchBase* base = nullptr;
         base = orxonox_cast<TeamBaseMatchBase*>(entity1);
         if (base)
@@ -1034,5 +1035,5 @@
         }
 
-        DroneController* droneController = 0;
+        DroneController* droneController = nullptr;
         droneController = orxonox_cast<DroneController*>(entity1->getController());
         if (droneController && static_cast<ControllableEntity*>(droneController->getOwner()) == entity2)
Index: code/trunk/src/orxonox/controllers/FormationController.h
===================================================================
--- code/trunk/src/orxonox/controllers/FormationController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/FormationController.h	(revision 11071)
@@ -50,5 +50,5 @@
       virtual ~FormationController();
 
-      virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+      virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
 
@@ -93,5 +93,5 @@
            { return this->formationMode_; }
 
-      virtual void hit(Pawn* originator, btManifoldPoint& contactpoint, float damage);
+      virtual void hit(Pawn* originator, btManifoldPoint& contactpoint, float damage) override;
 
       FormationController* getMaster( void ) { return myMaster_; }
@@ -99,5 +99,5 @@
       FormationController* getSlave( void ) { return this->slaves_.back(); }
 
-      virtual void changedControllableEntity();
+      virtual void changedControllableEntity() override;
 
   protected:
Index: code/trunk/src/orxonox/controllers/HumanController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/HumanController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/HumanController.cc	(revision 11071)
@@ -65,5 +65,5 @@
     RegisterUnloadableClass(HumanController);
 
-    HumanController* HumanController::localController_s = 0;
+    HumanController* HumanController::localController_s = nullptr;
 
     HumanController::HumanController(Context* context) : FormationController(context)
@@ -81,5 +81,5 @@
             HumanController::localController_s->removeFromFormation();
         }
-        HumanController::localController_s = 0;
+        HumanController::localController_s = nullptr;
     }
 
@@ -321,5 +321,5 @@
             return orxonox_cast<Pawn*>(HumanController::localController_s->getControllableEntity());
         else
-            return NULL;
+            return nullptr;
     }
 
Index: code/trunk/src/orxonox/controllers/HumanController.h
===================================================================
--- code/trunk/src/orxonox/controllers/HumanController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/HumanController.h	(revision 11071)
@@ -47,5 +47,5 @@
             virtual ~HumanController();
 
-            virtual void tick(float dt);
+            virtual void tick(float dt) override;
 
             static void moveFrontBack(const Vector2& value);
Index: code/trunk/src/orxonox/controllers/MasterController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/MasterController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/MasterController.cc	(revision 11071)
@@ -58,10 +58,10 @@
         {
             //fill the vector in the first tick
-            for (ObjectList<ActionpointController>::iterator it = ObjectList<ActionpointController>::begin(); it; ++it)
+            for (ActionpointController* controller : ObjectList<ActionpointController>())
             {
                 //----0ptr?----
-                if (!it)
+                if (!controller)
                     continue;
-                this->controllers_.push_back(*it);
+                this->controllers_.push_back(controller);
             }
         }
Index: code/trunk/src/orxonox/controllers/MasterController.h
===================================================================
--- code/trunk/src/orxonox/controllers/MasterController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/MasterController.h	(revision 11071)
@@ -61,5 +61,5 @@
 
             //----[orxonox demanded functions]----
-                virtual void tick(float dt); 
+                virtual void tick(float dt) override;
 
             //----[orxonox demanded functions]----
@@ -68,5 +68,5 @@
           
         private:
-            std::vector<WeakPtr<ActionpointController> > controllers_;  //<! vector of controllers, which action(), canFire() and maneuver() methods are to be called
+            std::vector<WeakPtr<ActionpointController>> controllers_;//<! vector of controllers, which action(), canFire() and maneuver() methods are to be called
             size_t indexOfCurrentController_;                        //<! index of current controller
             unsigned int numberOfTicksPassedSinceLastActionCall_;
Index: code/trunk/src/orxonox/controllers/NewHumanController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/NewHumanController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/NewHumanController.cc	(revision 11071)
@@ -58,22 +58,22 @@
     RegisterUnloadableClass(NewHumanController);
 
-    NewHumanController* NewHumanController::localController_s = 0;
+    NewHumanController* NewHumanController::localController_s = nullptr;
 
     NewHumanController::NewHumanController(Context* context)
         : HumanController(context)
-        , crossHairOverlay_(NULL)
-        , centerOverlay_(NULL)
-        , damageOverlayTop_(NULL)
-        , damageOverlayRight_(NULL)
-        , damageOverlayBottom_(NULL)
-        , damageOverlayLeft_(NULL)
+        , crossHairOverlay_(nullptr)
+        , centerOverlay_(nullptr)
+        , damageOverlayTop_(nullptr)
+        , damageOverlayRight_(nullptr)
+        , damageOverlayBottom_(nullptr)
+        , damageOverlayLeft_(nullptr)
         , damageOverlayTT_(0)
         , damageOverlayTR_(0)
         , damageOverlayTB_(0)
         , damageOverlayTL_(0)
-        , arrowsOverlay1_(NULL)
-        , arrowsOverlay2_(NULL)
-        , arrowsOverlay3_(NULL)
-        , arrowsOverlay4_(NULL)
+        , arrowsOverlay1_(nullptr)
+        , arrowsOverlay2_(nullptr)
+        , arrowsOverlay3_(nullptr)
+        , arrowsOverlay4_(nullptr)
     {
         RegisterObject(NewHumanController);
@@ -445,6 +445,6 @@
             pawn->setAimPosition( mouseRay.getOrigin() + mouseRay.getDirection() * 3000 );
 
-        if( this->getControllableEntity() && this->getControllableEntity()->getTarget() != 0 )
-            this->getControllableEntity()->setTarget( 0 );
+        if( this->getControllableEntity() && this->getControllableEntity()->getTarget() != nullptr )
+            this->getControllableEntity()->setTarget( nullptr );
 
         //return this->controllableEntity_->getWorldPosition() + (this->controllableEntity_->getWorldOrientation() * Vector3::NEGATIVE_UNIT_Z * 2000);
Index: code/trunk/src/orxonox/controllers/NewHumanController.h
===================================================================
--- code/trunk/src/orxonox/controllers/NewHumanController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/NewHumanController.h	(revision 11071)
@@ -45,16 +45,16 @@
             virtual ~NewHumanController();
 
-            virtual void tick(float dt);
+            virtual void tick(float dt) override;
 
-            virtual void frontback(const Vector2& value);
-            virtual void yaw(const Vector2& value);
-            virtual void pitch(const Vector2& value);
+            virtual void frontback(const Vector2& value) override;
+            virtual void yaw(const Vector2& value) override;
+            virtual void pitch(const Vector2& value) override;
 
             static void accelerate();
             static void decelerate();
 
-            virtual void doFire(unsigned int firemode);
+            virtual void doFire(unsigned int firemode) override;
 
-            virtual void hit(Pawn* originator, btManifoldPoint& contactpoint, float damage);
+            virtual void hit(Pawn* originator, btManifoldPoint& contactpoint, float damage) override;
 
             static void unfire();
@@ -65,7 +65,7 @@
             static void changeMode();
 
-            virtual void changedControllableEntity();
-            virtual void doPauseControl();
-            virtual void doResumeControl();
+            virtual void changedControllableEntity() override;
+            virtual void doPauseControl() override;
+            virtual void doResumeControl() override;
 
             float getCurrentYaw(){ return this->currentYaw_; }
Index: code/trunk/src/orxonox/controllers/ScriptController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/ScriptController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/ScriptController.cc	(revision 11071)
@@ -64,6 +64,6 @@
         /* Set default values for all variables */
         /* - pointers to zero */
-        this->player_ = NULL;
-        this->entity_ = NULL;
+        this->player_ = nullptr;
+        this->entity_ = nullptr;
 
         /* - times */
@@ -121,22 +121,18 @@
 
       /* Debugging: print all the scriptcontroller object pointers */
-      for(ObjectList<ScriptController>::iterator it = 
-        ObjectList<ScriptController>::begin(); 
-        it != ObjectList<ScriptController>::end(); ++it)
-      { orxout(verbose) << "Have object in list: " << *it << endl; }
+      for(ScriptController* controller : ObjectList<ScriptController>())
+      { orxout(verbose) << "Have object in list: " << controller << endl; }
 
       /* Find the first one with a nonzero ID */
-      for(ObjectList<ScriptController>::iterator it = 
-        ObjectList<ScriptController>::begin(); 
-        it != ObjectList<ScriptController>::end(); ++it)
+      for(ScriptController* controller : ObjectList<ScriptController>())
       { 
         // TODO: do some selection here. Currently just returns the first one
-        if( (*it)->getID() > 0 )
-        { orxout(verbose) << "Controller to return: " << *it << endl;
-          return *it; 
+        if( controller->getID() > 0 )
+        { orxout(verbose) << "Controller to return: " << controller << endl;
+          return controller;
         }
       
       }
-      return NULL;
+      return nullptr;
     }
 
Index: code/trunk/src/orxonox/controllers/ScriptController.h
===================================================================
--- code/trunk/src/orxonox/controllers/ScriptController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/ScriptController.h	(revision 11071)
@@ -71,5 +71,5 @@
             void setPlayer(PlayerInfo* player) { this->player_ = player; }
            
-            virtual void tick(float dt);
+            virtual void tick(float dt) override;
 
             // LUA interface
Index: code/trunk/src/orxonox/controllers/SectionController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/SectionController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/SectionController.cc	(revision 11071)
@@ -40,6 +40,6 @@
         this->setFormationMode(FormationMode::FINGER4);
 
-        this->myWingman_ = 0;
-        this->myDivisionLeader_ = 0;
+        this->myWingman_ = nullptr;
+        this->myDivisionLeader_ = nullptr;
         this->bFirstAction_ = true;
 
@@ -48,25 +48,11 @@
     SectionController::~SectionController()
     {
-       for (size_t i = 0; i < this->actionpoints_.size(); ++i)
-        {
-            if(this->actionpoints_[i])
-                this->actionpoints_[i]->destroy();
+        for (WorldEntity* actionpoint : this->actionpoints_)
+        {
+            if (actionpoint)
+                actionpoint->destroy();
         }
         this->parsedActionpoints_.clear();
         this->actionpoints_.clear();
-    }
-    void SectionController::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(SectionController, XMLPort, xmlelement, mode);
-    }
-
-    //----in tick, move (or look) and shoot----
-    void SectionController::tick(float dt)
-    {
-        if (!this->isActive())
-            return;
-   
-        SUPER(SectionController, tick, dt);
-        
     }
 
@@ -131,5 +117,5 @@
     {
         //----If division leader fights, cover him by fighting emenies close to his target----
-        Action::Value action = this->myDivisionLeader_->getAction();
+        Action action = this->myDivisionLeader_->getAction();
 
         if (action == Action::FIGHT || action == Action::FIGHTALL || action == Action::ATTACK)
@@ -147,15 +133,15 @@
                     Vector3 divisionTargetPosition = this->myDivisionLeader_->getTarget()->getWorldPosition();
                     Gametype* gt = this->getGametype();
-                    for (ObjectList<Pawn>::iterator itP = ObjectList<Pawn>::begin(); itP; ++itP)
+                    for (Pawn* pawn : ObjectList<Pawn>())
                     {
                         //----is enemy?----
-                        if ( CommonController::sameTeam (this->getControllableEntity(), static_cast<ControllableEntity*>(*itP), gt) )
+                        if ( CommonController::sameTeam (this->getControllableEntity(), static_cast<ControllableEntity*>(pawn), gt) )
                             continue;           
                         //----in range?----
-                        if (((*itP)->getWorldPosition() - divisionTargetPosition).length() < 3000 && 
-                            (*itP) != this->myDivisionLeader_->getTarget())
+                        if ((pawn->getWorldPosition() - divisionTargetPosition).length() < 3000 &&
+                            pawn != this->myDivisionLeader_->getTarget())
                         {
                             foundTarget = true;
-                            target =  (*itP);
+                            target = pawn;
                             break; 
                         }
@@ -188,26 +174,17 @@
         this->setFormationMode( this->myDivisionLeader_->getFormationMode() );
         this->spread_ = this->myDivisionLeader_->getSpread();
-        Vector3* targetRelativePosition;
         switch (this->formationMode_){
             case FormationMode::WALL:
-            {
-                targetRelativePosition = new Vector3 (-2.0f*this->spread_, 0, 0);   
-                break;
-            }
+                return Vector3 (-2.0f*this->spread_, 0, 0);
+
             case FormationMode::FINGER4: 
-            {
-                targetRelativePosition = new Vector3 (-2.0f*this->spread_, 0, 1.0f*this->spread_);   
-                break;
-            }
+                return Vector3 (-2.0f*this->spread_, 0, 1.0f*this->spread_);
             
             case FormationMode::DIAMOND: 
-            {
-                targetRelativePosition = new Vector3 (-2.0f*this->spread_, 0, 1.0f*this->spread_);
-                break;
-            }
-        }
-        Vector3 result = *targetRelativePosition;
-        delete targetRelativePosition;
-        return result;
+                return Vector3 (-2.0f*this->spread_, 0, 1.0f*this->spread_);
+
+            default:
+                return Vector3::ZERO;
+        }
     }
 
@@ -226,27 +203,27 @@
 
         if (!this->getControllableEntity())
-            return 0;
-
-        ActionpointController* closestLeader = 0;
+            return nullptr;
+
+        ActionpointController* closestLeader = nullptr;
         float minDistance =  std::numeric_limits<float>::infinity();
         //go through all pawns
-        for (ObjectList<ActionpointController>::iterator it = ObjectList<ActionpointController>::begin(); it; ++it)
+        for (ActionpointController* controller : ObjectList<ActionpointController>())
         {
             //0ptr or not DivisionController?
-            if (!(it) || !((it)->getIdentifier()->getName() == "DivisionController") || !(it->getControllableEntity()))
+            if (!controller || !(controller->getIdentifier()->getName() == "DivisionController") || !(controller->getControllableEntity()))
                 continue;
             //same team?
-            if ((this->getControllableEntity()->getTeam() != (it)->getControllableEntity()->getTeam()))
+            if ((this->getControllableEntity()->getTeam() != controller->getControllableEntity()->getTeam()))
                 continue;
 
             //is equal to this?
-            if (orxonox_cast<ControllableEntity*>(*it) == this->getControllableEntity())
+            if (orxonox_cast<ControllableEntity*>(controller) == this->getControllableEntity())
                 continue;
 
-            float distance = CommonController::distance (it->getControllableEntity(), this->getControllableEntity());
+            float distance = CommonController::distance (controller->getControllableEntity(), this->getControllableEntity());
             
-            if (distance < minDistance && !(it->hasFollower()))
-            {
-                closestLeader = *it;
+            if (distance < minDistance && !(controller->hasFollower()))
+            {
+                closestLeader = controller;
                 minDistance = distance;
             }
@@ -258,5 +235,5 @@
                 return closestLeader;
         }
-        return 0;
+        return nullptr;
     }
 
Index: code/trunk/src/orxonox/controllers/SectionController.h
===================================================================
--- code/trunk/src/orxonox/controllers/SectionController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/SectionController.h	(revision 11071)
@@ -49,16 +49,10 @@
             //----[/language demanded functions]----
             
-            //----[orxonox demanded functions]----
-                virtual void tick(float dt); 
-                
-                virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            //----[/orxonox demanded functions]----
-            
             //----[own functions]----
                 ActionpointController* findNewDivisionLeader();
 
-                virtual bool setWingman(ActionpointController* newWingman);
-                virtual bool hasWingman();
-                virtual bool hasFollower()
+                virtual bool setWingman(ActionpointController* newWingman) override;
+                virtual bool hasWingman() override;
+                virtual bool hasFollower() override
                     { return false; }
                 void chooseTarget();
@@ -67,5 +61,5 @@
         protected:       
             //----action must only be managed by this----     
-                virtual void action(); //<! action() is called in regular intervals by MasterController managing the bot's behaviour.
+                virtual void action() override; //<! action() is called in regular intervals by MasterController managing the bot's behaviour.
                 Vector3 getFormationPosition ();
                 void keepFormation();
Index: code/trunk/src/orxonox/controllers/WaypointController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/WaypointController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/WaypointController.cc	(revision 11071)
@@ -44,8 +44,8 @@
     WaypointController::~WaypointController()
     {
-        for (size_t i = 0; i < this->waypoints_.size(); ++i)
+        for (WorldEntity* waypoint : this->waypoints_)
         {
-            if(this->waypoints_[i])
-                this->waypoints_[i]->destroy();
+            if(waypoint)
+                waypoint->destroy();
         }
     }
Index: code/trunk/src/orxonox/controllers/WaypointController.h
===================================================================
--- code/trunk/src/orxonox/controllers/WaypointController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/WaypointController.h	(revision 11071)
@@ -44,5 +44,5 @@
             virtual ~WaypointController();
 
-            virtual void tick(float dt);
+            virtual void tick(float dt) override;
 
         protected:
Index: code/trunk/src/orxonox/controllers/WaypointPatrolController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/WaypointPatrolController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/WaypointPatrolController.cc	(revision 11071)
@@ -87,19 +87,19 @@
         float shortestsqdistance = (float)static_cast<unsigned int>(-1);
 
-        for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it != ObjectList<Pawn>::end(); ++it)
+        for (Pawn* pawn : ObjectList<Pawn>())
         {
-            if (ArtificialController::sameTeam(this->getControllableEntity(), static_cast<ControllableEntity*>(*it), this->getGametype()))
+            if (ArtificialController::sameTeam(this->getControllableEntity(), static_cast<ControllableEntity*>(pawn), this->getGametype()))
                 continue;
 
-            float sqdistance = it->getPosition().squaredDistance(myposition);
+            float sqdistance = pawn->getPosition().squaredDistance(myposition);
             if (sqdistance < shortestsqdistance)
             {
                 shortestsqdistance = sqdistance;
-                this->target_ = (*it);
+                this->target_ = pawn;
             }
         }
 
         if (shortestsqdistance > (this->alertnessradius_ * this->alertnessradius_))
-            this->target_ = 0;
+            this->target_ = nullptr;
     }
 }
Index: code/trunk/src/orxonox/controllers/WaypointPatrolController.h
===================================================================
--- code/trunk/src/orxonox/controllers/WaypointPatrolController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/WaypointPatrolController.h	(revision 11071)
@@ -43,6 +43,6 @@
             virtual ~WaypointPatrolController() {}
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            virtual void tick(float dt);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+            virtual void tick(float dt) override;
 
             inline void setAlertnessRadius(float radius)
Index: code/trunk/src/orxonox/controllers/WingmanController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/WingmanController.cc	(revision 11052)
+++ code/trunk/src/orxonox/controllers/WingmanController.cc	(revision 11071)
@@ -39,5 +39,5 @@
     {
         RegisterObject(WingmanController);
-        this->myLeader_ = 0;
+        this->myLeader_ = nullptr;
         this->bFirstAction_ = true;
 
@@ -46,26 +46,11 @@
     WingmanController::~WingmanController()
     {
-        for (size_t i = 0; i < this->actionpoints_.size(); ++i)
+        for (WorldEntity* actionpoint : this->actionpoints_)
         {
-            if(this->actionpoints_[i])
-                this->actionpoints_[i]->destroy();
+            if (actionpoint)
+                actionpoint->destroy();
         }
         this->parsedActionpoints_.clear();
         this->actionpoints_.clear();
-    }
-  
-    void WingmanController::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(WingmanController, XMLPort, xmlelement, mode);
-    }
-    
-    //----in tick, move (or look) and shoot----
-    void WingmanController::tick(float dt)
-    {   
-        if (!this->isActive())
-            return; 
-        
-        SUPER(WingmanController, tick, dt);
-
     }
     
@@ -122,8 +107,5 @@
     Vector3 WingmanController::getFormationPosition ()
     {
-
-
         this->setFormationMode( this->myLeader_->getFormationMode() );
-        Vector3* targetRelativePosition;
         this->spread_ = this->myLeader_->getSpread();
         if (this->myLeader_->getIdentifier()->getName() == "DivisionController")
@@ -131,18 +113,11 @@
             switch (this->formationMode_){
                 case FormationMode::WALL:
-                {
-                    targetRelativePosition = new Vector3 (2.0f*this->spread_, 0, 0 - 1.0f*this->tolerance_);
-                    break;
-                }
+                    return Vector3 (2.0f*this->spread_, 0, 0 - 1.0f*this->tolerance_);
                 case FormationMode::FINGER4: 
-                {
-                    targetRelativePosition = new Vector3 (2.0f*this->spread_, 0, this->spread_ - 1.0f*this->tolerance_);
-                    break;
-                }
+                    return Vector3 (2.0f*this->spread_, 0, this->spread_ - 1.0f*this->tolerance_);
                 case FormationMode::DIAMOND: 
-                {
-                    targetRelativePosition = new Vector3 (2.0f*this->spread_, 0, this->spread_ - 1.0f*this->tolerance_);
-                    break;
-                }
+                    return Vector3 (2.0f*this->spread_, 0, this->spread_ - 1.0f*this->tolerance_);
+                default:
+                    return Vector3::ZERO;
             }
         }
@@ -151,23 +126,13 @@
             switch (this->formationMode_){
                 case FormationMode::WALL:
-                {
-                    targetRelativePosition = new Vector3 (-2.0f*this->spread_, 0, 0 - 1.0f*this->tolerance_);
-                    break;
-                }
+                    return Vector3 (-2.0f*this->spread_, 0, 0 - 1.0f*this->tolerance_);
                 case FormationMode::FINGER4: 
-                {
-                    targetRelativePosition = new Vector3 (-2.0f*this->spread_, 0, this->spread_ - 1.0f*this->tolerance_);
-                    break;
-                }
+                    return Vector3 (-2.0f*this->spread_, 0, this->spread_ - 1.0f*this->tolerance_);
                 case FormationMode::DIAMOND: 
-                {
-                    targetRelativePosition = new Vector3 (2.0f*this->spread_, -1.0f*this->spread_, 0 - 1.0f*this->tolerance_);
-                    break;
-                }
+                    return Vector3 (2.0f*this->spread_, -1.0f*this->spread_, 0 - 1.0f*this->tolerance_);
+                default:
+                    return Vector3::ZERO;
             }
         }
-        Vector3 result = *targetRelativePosition;
-        delete targetRelativePosition;
-        return result;
     }
     void WingmanController::keepFormation()
@@ -185,28 +150,28 @@
 
         if (!this->getControllableEntity())
-            return 0;
+            return nullptr;
 
         //----vars for finding the closest leader----
-        ActionpointController* closestLeader = 0;
+        ActionpointController* closestLeader = nullptr;
         float minDistance =  std::numeric_limits<float>::infinity();
         Gametype* gt = this->getGametype();
 
-        for (ObjectList<ActionpointController>::iterator it = ObjectList<ActionpointController>::begin(); it; ++it)
+        for (ActionpointController* controller : ObjectList<ActionpointController>())
         {
             //----0ptr or not a leader or dead?----
-            if (!it || 
-                (it->getIdentifier()->getName() != "SectionController" && it->getIdentifier()->getName() != "DivisionController") || 
-                !(it->getControllableEntity()))
+            if (!controller ||
+                (controller->getIdentifier()->getName() != "SectionController" && controller->getIdentifier()->getName() != "DivisionController") ||
+                !(controller->getControllableEntity()))
                 continue;
             
             //----same team?----
-            if ( !CommonController::sameTeam (this->getControllableEntity(), (it)->getControllableEntity(), gt) )
+            if ( !CommonController::sameTeam (this->getControllableEntity(), controller->getControllableEntity(), gt) )
                 continue;
             
             //----check distance----
-            float distance = CommonController::distance (it->getControllableEntity(), this->getControllableEntity());
-            if (distance < minDistance && !(it->hasWingman()))
+            float distance = CommonController::distance (controller->getControllableEntity(), this->getControllableEntity());
+            if (distance < minDistance && !(controller->hasWingman()))
             {
-                closestLeader = *it;
+                closestLeader = controller;
                 minDistance = distance;
             }
@@ -222,5 +187,5 @@
             }
         }
-        return 0;
+        return nullptr;
     }
 
Index: code/trunk/src/orxonox/controllers/WingmanController.h
===================================================================
--- code/trunk/src/orxonox/controllers/WingmanController.h	(revision 11052)
+++ code/trunk/src/orxonox/controllers/WingmanController.h	(revision 11071)
@@ -51,10 +51,7 @@
             
             //----[orxonox demanded functions]----
-                virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-
-                virtual void tick(float dt); 
-                virtual bool hasWingman()
+                virtual bool hasWingman() override
                     { return false; }
-                virtual bool hasFollower()
+                virtual bool hasFollower() override
                     { return false; }
             //----[/orxonox demanded functions]----
@@ -66,5 +63,5 @@
         protected:
             //----action must only be managed by this----
-                virtual void action(); //<! action() is called in regular intervals managing the bot's behaviour.
+                virtual void action() override; //<! action() is called in regular intervals managing the bot's behaviour.
                 Vector3 getFormationPosition ();
                 void keepFormation();
Index: code/trunk/src/orxonox/gamestates/GSClient.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSClient.h	(revision 11052)
+++ code/trunk/src/orxonox/gamestates/GSClient.h	(revision 11071)
@@ -43,7 +43,7 @@
         ~GSClient();
 
-        void activate();
-        void deactivate();
-        void update(const Clock& time);
+        virtual void activate() override;
+        virtual void deactivate() override;
+        virtual void update(const Clock& time) override;
     };
 }
Index: code/trunk/src/orxonox/gamestates/GSGraphics.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSGraphics.h	(revision 11052)
+++ code/trunk/src/orxonox/gamestates/GSGraphics.h	(revision 11071)
@@ -53,7 +53,7 @@
         ~GSGraphics();
 
-        void activate();
-        void deactivate();
-        void update(const Clock& time);
+        virtual void activate() override;
+        virtual void deactivate() override;
+        virtual void update(const Clock& time) override;
 
     private:
Index: code/trunk/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSLevel.cc	(revision 11052)
+++ code/trunk/src/orxonox/gamestates/GSLevel.cc	(revision 11071)
@@ -65,8 +65,8 @@
     GSLevel::GSLevel(const GameStateInfo& info)
         : GameState(info)
-        , gameInputState_(0)
-        , guiMouseOnlyInputState_(0)
-        , guiKeysOnlyInputState_(0)
-        , startFile_(0)
+        , gameInputState_(nullptr)
+        , guiMouseOnlyInputState_(nullptr)
+        , guiKeysOnlyInputState_(nullptr)
+        , startFile_(nullptr)
         , bShowIngameGUI_(false)
     {
@@ -143,7 +143,7 @@
 #endif
 
-            gameInputState_->setHandler(0);
-            guiMouseOnlyInputState_->setHandler(0);
-            guiKeysOnlyInputState_->setHandler(0);
+            gameInputState_->setHandler(nullptr);
+            guiMouseOnlyInputState_->setHandler(nullptr);
+            guiKeysOnlyInputState_->setHandler(nullptr);
             InputManager::getInstance().destroyState("game");
             InputManager::getInstance().destroyState("guiKeysOnly");
@@ -156,5 +156,5 @@
         {
             ModifyConsoleCommand(__CC_changeGame_name).deactivate();
-            ModifyConsoleCommand(__CC_reloadLevel_name).setObject(NULL).deactivate();
+            ModifyConsoleCommand(__CC_reloadLevel_name).setObject(nullptr).deactivate();
         }
     }
@@ -164,12 +164,12 @@
         // Note: Temporarily moved to GSRoot.
         //// Call the scene objects
-        //for (ObjectList<Tickable>::iterator it = ObjectList<Tickable>::begin(); it; ++it)
-        //    it->tick(time.getDeltaTime() * this->timeFactor_);
+        //for (Tickable* tickable : ObjectList<Tickable>())
+        //    tickable->tick(time.getDeltaTime() * this->timeFactor_);
     }
 
     void GSLevel::prepareObjectTracking()
     {
-        for (ObjectList<BaseObject>::iterator it = ObjectList<BaseObject>::begin(); it != ObjectList<BaseObject>::end(); ++it)
-            this->staticObjects_.insert(*it);
+        for (BaseObject* baseObject : ObjectList<BaseObject>())
+            this->staticObjects_.insert(baseObject);
     }
 
@@ -178,10 +178,10 @@
         orxout(internal_info) << "Remaining objects:" << endl;
         unsigned int i = 0;
-        for (ObjectList<BaseObject>::iterator it = ObjectList<BaseObject>::begin(); it != ObjectList<BaseObject>::end(); ++it)
-        {
-            std::set<BaseObject*>::const_iterator find = this->staticObjects_.find(*it);
+        for (BaseObject* baseObject : ObjectList<BaseObject>())
+        {
+            std::set<BaseObject*>::const_iterator find = this->staticObjects_.find(baseObject);
             if (find == this->staticObjects_.end())
             {
-                orxout(internal_warning) << ++i << ": " << it->getIdentifier()->getName() << " (" << *it << "), references: " << it->getReferenceCount() << endl;
+                orxout(internal_warning) << ++i << ": " << baseObject->getIdentifier()->getName() << " (" << baseObject << "), references: " << baseObject->getReferenceCount() << endl;
             }
         }
@@ -215,12 +215,15 @@
     void GSLevel::unloadLevelAsClient()
     {
-        for (ObjectList<Level>::iterator it = ObjectList<Level>::begin(); it != ObjectList<Level>::end(); )
+        ObjectList<Level> listLevel;
+        for (ObjectList<Level>::iterator it = listLevel.begin(); it != listLevel.end(); )
         {
             StrongPtr<Level> level = *(it++); // StrongPtr prevents that the Level gets destroyed while we loop over it
-            for (ObjectList<BaseObject>::iterator it = ObjectList<BaseObject>::begin(level); it != ObjectList<BaseObject>::end(level); )
+            ObjectList<BaseObject> listBaseObject(level);
+            for (ObjectList<BaseObject>::iterator it = listBaseObject.begin(); it != listBaseObject.end(); )
                 (it++)->destroy();
         }
 
-        for (ObjectList<Synchronisable>::iterator it = ObjectList<Synchronisable>::begin(); it != ObjectList<Synchronisable>::end(); )
+        ObjectList<Synchronisable> listSynchronisable;
+        for (ObjectList<Synchronisable>::iterator it = listSynchronisable.begin(); it != listSynchronisable.end(); )
         {
             if (it->getSyncMode() != 0x0)
@@ -235,7 +238,7 @@
         // export all states
         std::vector<GSLevelMementoState*> states;
-        for (ObjectList<GSLevelMemento>::iterator it = ObjectList<GSLevelMemento>::begin(); it != ObjectList<GSLevelMemento>::end(); ++it)
-        {
-            GSLevelMementoState* state = it->exportMementoState();
+        for (GSLevelMemento* memento : ObjectList<GSLevelMemento>())
+        {
+            GSLevelMementoState* state = memento->exportMementoState();
             if (state)
                 states.push_back(state);
@@ -247,10 +250,10 @@
 
         // import all states
-        for (ObjectList<GSLevelMemento>::iterator it = ObjectList<GSLevelMemento>::begin(); it != ObjectList<GSLevelMemento>::end(); ++it)
-            it->importMementoState(states);
+        for (GSLevelMemento* memento : ObjectList<GSLevelMemento>())
+            memento->importMementoState(states);
 
         // delete states
-        for (size_t i = 0; i < states.size(); ++i)
-            delete states[i];
+        for (GSLevelMementoState* state : states)
+            delete state;
     }
 
Index: code/trunk/src/orxonox/gamestates/GSLevel.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSLevel.h	(revision 11052)
+++ code/trunk/src/orxonox/gamestates/GSLevel.h	(revision 11071)
@@ -44,7 +44,7 @@
         ~GSLevel();
 
-        void activate();
-        void deactivate();
-        void update(const Clock& time);
+        virtual void activate() override;
+        virtual void deactivate() override;
+        virtual void update(const Clock& time) override;
 
         static void startMainMenu(void); //!< Starts the MainMenu
Index: code/trunk/src/orxonox/gamestates/GSLevelMemento.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSLevelMemento.h	(revision 11052)
+++ code/trunk/src/orxonox/gamestates/GSLevelMemento.h	(revision 11071)
@@ -48,5 +48,5 @@
         protected:
             /**
-             * Returns the state of this memento. Returns NULL if no state needed to persist.
+             * Returns the state of this memento. Returns nullptr if no state needed to persist.
              */
             virtual GSLevelMementoState* exportMementoState() = 0;
Index: code/trunk/src/orxonox/gamestates/GSMainMenu.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSMainMenu.cc	(revision 11052)
+++ code/trunk/src/orxonox/gamestates/GSMainMenu.cc	(revision 11071)
@@ -73,5 +73,5 @@
 
         // create an empty Scene
-        this->scene_ = new Scene(NULL);
+        this->scene_ = new Scene(nullptr);
         this->scene_->setSyncMode( 0x0 );
         // and a Camera
@@ -132,5 +132,5 @@
         InputManager::getInstance().leaveState("MainMenuHackery");
 
-        GraphicsManager::getInstance().setCamera(0);
+        GraphicsManager::getInstance().setCamera(nullptr);
         GUIManager::getInstance().setBackgroundImage("");
         GUIManager::hideGUI("MainMenu");
@@ -140,5 +140,5 @@
         ModifyConsoleCommand(__CC_startClient_name    ).deactivate();
         ModifyConsoleCommand(__CC_startDedicated_name ).deactivate();
-        ModifyConsoleCommand(__CC_setMainMenuSoundPath_name).setObject(0);
+        ModifyConsoleCommand(__CC_setMainMenuSoundPath_name).setObject(nullptr);
     }
 
Index: code/trunk/src/orxonox/gamestates/GSMainMenu.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSMainMenu.h	(revision 11052)
+++ code/trunk/src/orxonox/gamestates/GSMainMenu.h	(revision 11071)
@@ -44,7 +44,7 @@
         ~GSMainMenu();
 
-        void activate();
-        void deactivate();
-        void update(const Clock& time);
+        virtual void activate() override;
+        virtual void deactivate() override;
+        virtual void update(const Clock& time) override;
 
         void setConfigValues();
Index: code/trunk/src/orxonox/gamestates/GSMasterServer.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSMasterServer.h	(revision 11052)
+++ code/trunk/src/orxonox/gamestates/GSMasterServer.h	(revision 11071)
@@ -45,7 +45,7 @@
       ~GSMasterServer();
 
-      void activate();
-      void deactivate();
-      void update(const Clock& time);
+      virtual void activate() override;
+      virtual void deactivate() override;
+      virtual void update(const Clock& time) override;
 
     private:
Index: code/trunk/src/orxonox/gamestates/GSRoot.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSRoot.cc	(revision 11052)
+++ code/trunk/src/orxonox/gamestates/GSRoot.cc	(revision 11071)
@@ -34,4 +34,5 @@
 #include "core/GameMode.h"
 #include "core/command/ConsoleCommandIncludes.h"
+#include "core/object/ObjectList.h"
 #include "network/NetworkFunctionIncludes.h"
 #include "tools/Timer.h"
@@ -73,11 +74,11 @@
     {
         unsigned int nr=0;
-        for (ObjectList<BaseObject>::iterator it = ObjectList<BaseObject>::begin(); it; ++it)
-        {
-            Synchronisable* synchronisable = orxonox_cast<Synchronisable*>(*it);
+        for (BaseObject* baseObject : ObjectList<BaseObject>())
+        {
+            Synchronisable* synchronisable = orxonox_cast<Synchronisable*>(baseObject);
             if (synchronisable)
-                orxout(debug_output) << "object: " << it->getIdentifier()->getName() << " id: " << synchronisable->getObjectID() << endl;
+                orxout(debug_output) << "object: " << baseObject->getIdentifier()->getName() << " id: " << synchronisable->getObjectID() << endl;
             else
-                orxout(debug_output) << "object: " << it->getIdentifier()->getName() << endl;
+                orxout(debug_output) << "object: " << baseObject->getIdentifier()->getName() << endl;
             nr++;
         }
@@ -98,8 +99,8 @@
     void GSRoot::deactivate()
     {
-        ModifyConsoleCommand(__CC_setTimeFactor_name).setObject(0);
-        ModifyConsoleCommand(__CC_getTimeFactor_name).setObject(0);
-        ModifyConsoleCommand(__CC_setPause_name).setObject(0);
-        ModifyConsoleCommand(__CC_pause_name).setObject(0);
+        ModifyConsoleCommand(__CC_setTimeFactor_name).setObject(nullptr);
+        ModifyConsoleCommand(__CC_getTimeFactor_name).setObject(nullptr);
+        ModifyConsoleCommand(__CC_setPause_name).setObject(nullptr);
+        ModifyConsoleCommand(__CC_pause_name).setObject(nullptr);
     }
 
@@ -112,5 +113,6 @@
         }
 
-        for (ObjectList<Timer>::iterator it = ObjectList<Timer>::begin(); it; )
+        ObjectList<Timer> listTimer;
+        for (ObjectList<Timer>::iterator it = listTimer.begin(); it; )
         {
             Timer* object = *it;
@@ -128,5 +130,6 @@
         }
         float realdt = leveldt * TimeFactorListener::getTimeFactor();
-        for (ObjectList<Tickable>::iterator it = ObjectList<Tickable>::begin(); it; )
+        ObjectList<Tickable> listTickable;
+        for (ObjectList<Tickable>::iterator it = listTickable.begin(); it; )
         {
             Tickable* object = *it;
Index: code/trunk/src/orxonox/gamestates/GSRoot.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSRoot.h	(revision 11052)
+++ code/trunk/src/orxonox/gamestates/GSRoot.h	(revision 11071)
@@ -44,7 +44,7 @@
         static void printObjects();
 
-        void activate();
-        void deactivate();
-        void update(const Clock& time);
+        virtual void activate() override;
+        virtual void deactivate() override;
+        virtual void update(const Clock& time) override;
 
         // this has to be public because proteced triggers a bug in msvc
@@ -59,5 +59,5 @@
 
     protected:
-        virtual void changedTimeFactor(float factor_new, float factor_old);
+        virtual void changedTimeFactor(float factor_new, float factor_old) override;
 
     private:
Index: code/trunk/src/orxonox/gamestates/GSServer.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSServer.cc	(revision 11052)
+++ code/trunk/src/orxonox/gamestates/GSServer.cc	(revision 11071)
@@ -44,5 +44,5 @@
     GSServer::GSServer(const GameStateInfo& info)
         : GameState(info)
-        , server_(0)
+        , server_(nullptr)
     {
     }
Index: code/trunk/src/orxonox/gamestates/GSServer.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSServer.h	(revision 11052)
+++ code/trunk/src/orxonox/gamestates/GSServer.h	(revision 11071)
@@ -43,7 +43,7 @@
         ~GSServer();
 
-        void activate();
-        void deactivate();
-        void update(const Clock& time);
+        virtual void activate() override;
+        virtual void deactivate() override;
+        virtual void update(const Clock& time) override;
 
     private:
Index: code/trunk/src/orxonox/gamestates/GSStandalone.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSStandalone.h	(revision 11052)
+++ code/trunk/src/orxonox/gamestates/GSStandalone.h	(revision 11071)
@@ -41,7 +41,7 @@
         ~GSStandalone();
 
-        void activate();
-        void deactivate();
-        void update(const Clock& time);
+        virtual void activate() override;
+        virtual void deactivate() override;
+        virtual void update(const Clock& time) override;
 
     private:
Index: code/trunk/src/orxonox/gametypes/Asteroids.h
===================================================================
--- code/trunk/src/orxonox/gametypes/Asteroids.h	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/Asteroids.h	(revision 11071)
@@ -41,8 +41,8 @@
             virtual ~Asteroids() {}
 
-            virtual void tick(float dt);
+            virtual void tick(float dt) override;
 
-            virtual void start();
-            virtual void end();
+            virtual void start() override;
+            virtual void end() override;
 
             inline void firstCheckpointReached(bool reached)
@@ -50,5 +50,5 @@
 
         protected:
-            virtual void pawnKilled(Pawn* victim, Pawn* killer = 0);
+            virtual void pawnKilled(Pawn* victim, Pawn* killer = nullptr) override;
 
         private:
Index: code/trunk/src/orxonox/gametypes/Deathmatch.h
===================================================================
--- code/trunk/src/orxonox/gametypes/Deathmatch.h	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/Deathmatch.h	(revision 11071)
@@ -41,12 +41,12 @@
             virtual ~Deathmatch() {}
 
-            virtual void start();
-            virtual void end();
-            virtual void playerEntered(PlayerInfo* player);
-            virtual bool playerLeft(PlayerInfo* player);
-            virtual bool playerChangedName(PlayerInfo* player);
+            virtual void start() override;
+            virtual void end() override;
+            virtual void playerEntered(PlayerInfo* player) override;
+            virtual bool playerLeft(PlayerInfo* player) override;
+            virtual bool playerChangedName(PlayerInfo* player) override;
 
-            virtual void pawnKilled(Pawn* victim, Pawn* killer = 0);
-            virtual void playerScored(PlayerInfo* player, int score = 1);
+            virtual void pawnKilled(Pawn* victim, Pawn* killer = nullptr) override;
+            virtual void playerScored(PlayerInfo* player, int score = 1) override;
     };
 }
Index: code/trunk/src/orxonox/gametypes/Dynamicmatch.cc
===================================================================
--- code/trunk/src/orxonox/gametypes/Dynamicmatch.cc	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/Dynamicmatch.cc	(revision 11071)
@@ -88,6 +88,6 @@
     Dynamicmatch::~Dynamicmatch()
     {
-        for (std::set<Timer*>::iterator it = this->piggyTimers_.begin(); it != this->piggyTimers_.end(); ++it)
-            delete (*it);
+        for (Timer* timer : this->piggyTimers_)
+            delete timer;
     }
 
@@ -413,9 +413,9 @@
     void Dynamicmatch::rewardPig()
     {
-        for (std::map< PlayerInfo*, int >::iterator it = this->playerParty_.begin(); it != this->playerParty_.end(); ++it) //durch alle Spieler iterieren und alle piggys finden
-        {
-            if (it->second==piggy)//Spieler mit der Pig-party frags++
-            {
-                 this->playerScored(it->first);
+        for (const auto& mapEntry : this->playerParty_) //durch alle Spieler iterieren und alle piggys finden
+        {
+            if (mapEntry.second==piggy)//Spieler mit der Pig-party frags++
+            {
+                 this->playerScored(mapEntry.first);
             }
         }
@@ -430,9 +430,9 @@
 
                 std::set<WorldEntity*> pawnAttachments = pawn->getAttachedObjects();
-                for (std::set<WorldEntity*>::iterator it = pawnAttachments.begin(); it != pawnAttachments.end(); ++it)
-                {
-                    if ((*it)->isA(Class(TeamColourable)))
+                for (WorldEntity* pawnAttachment : pawnAttachments)
+                {
+                    if (pawnAttachment->isA(Class(TeamColourable)))
                     {
-                        TeamColourable* tc = orxonox_cast<TeamColourable*>(*it);
+                        TeamColourable* tc = orxonox_cast<TeamColourable*>(pawnAttachment);
                         tc->setTeamColour(this->partyColours_[it_player->second]);
                     }
@@ -449,11 +449,11 @@
             if (tutorial) // Announce selectionphase
             {
-             for (std::map<PlayerInfo*, int>::iterator it = this->playerParty_.begin(); it != this->playerParty_.end(); ++it)
-                {
-                    if (!it->first)//in order to catch nullpointer
+             for (const auto& mapEntry : this->playerParty_)
+                {
+                    if (!mapEntry.first)//in order to catch nullpointer
                         continue;
-                    if (it->first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
+                    if (mapEntry.first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
                         continue;
-                    this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",it->first->getClientID(),ColourValue(1.0f, 1.0f, 0.5f));
+                    this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",mapEntry.first->getClientID(),ColourValue(1.0f, 1.0f, 0.5f));
                 }
             }
@@ -464,26 +464,26 @@
              if(tutorial&&(!notEnoughKillers)&&(!notEnoughChasers)) //Selection phase over
              {
-                  for (std::map<PlayerInfo*, int>::iterator it = this->playerParty_.begin(); it != this->playerParty_.end(); ++it)
+                  for (const auto& mapEntry : this->playerParty_)
                   {
-                       if (!it->first)//in order to catch nullpointer
+                       if (!mapEntry.first)//in order to catch nullpointer
                            continue;
-                       if (it->first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
+                       if (mapEntry.first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
                            continue;
-                       else if (it->second==chaser)
+                       else if (mapEntry.second==chaser)
                        {
                            if (numberOf[killer]>0)
-                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",it->first->getClientID(),partyColours_[piggy]);
+                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",mapEntry.first->getClientID(),partyColours_[piggy]);
                            else
-                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",it->first->getClientID(),partyColours_[piggy]);
+                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",mapEntry.first->getClientID(),partyColours_[piggy]);
                            //this->gtinfo_->sendFadingMessage("You're now a chaser.",it->first->getClientID());
                        }
-                       else if (it->second==piggy)
-                       {
-                           this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it->first->getClientID(),partyColours_[chaser]);
+                       else if (mapEntry.second==piggy)
+                       {
+                           this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",mapEntry.first->getClientID(),partyColours_[chaser]);
                            //this->gtinfo_->sendFadingMessage("You're now a victim.",it->first->getClientID());
                        }
-                       else if (it->second==killer)
-                       {
-                           this->gtinfo_->sendStaticMessage("Take the chasers down.",it->first->getClientID(),partyColours_[chaser]);
+                       else if (mapEntry.second==killer)
+                       {
+                           this->gtinfo_->sendStaticMessage("Take the chasers down.",mapEntry.first->getClientID(),partyColours_[chaser]);
                            //this->gtinfo_->sendFadingMessage("You're now a killer.",it->first->getClientID());
                        }
@@ -498,11 +498,11 @@
             if (tutorial) // Announce selectionphase
             {
-             for (std::map<PlayerInfo*, int>::iterator it = this->playerParty_.begin(); it != this->playerParty_.end(); ++it)
-                {
-                    if (!it->first)//in order to catch nullpointer
+             for (const auto& mapEntry : this->playerParty_)
+                {
+                    if (!mapEntry.first)//in order to catch nullpointer
                         continue;
-                    if (it->first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
+                    if (mapEntry.first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
                         continue;
-                    this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",it->first->getClientID(),ColourValue(1.0f, 1.0f, 0.5f));
+                    this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",mapEntry.first->getClientID(),ColourValue(1.0f, 1.0f, 0.5f));
                 }
             }
@@ -513,26 +513,26 @@
             if(tutorial&&(!notEnoughPigs)&&(!notEnoughChasers)) //Selection phase over
              {
-                  for (std::map<PlayerInfo*, int>::iterator it = this->playerParty_.begin(); it != this->playerParty_.end(); ++it)
+                  for (const auto& mapEntry : this->playerParty_)
                   {
-                       if (!it->first)
+                       if (!mapEntry.first)
                            continue;
-                       if (it->first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
+                       if (mapEntry.first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
                            continue;
-                       else if (it->second==chaser)
+                       else if (mapEntry.second==chaser)
                        {
                            if (numberOf[killer]>0)
-                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",it->first->getClientID(),partyColours_[piggy]);
+                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",mapEntry.first->getClientID(),partyColours_[piggy]);
                            else
-                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",it->first->getClientID(),partyColours_[piggy]);
+                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",mapEntry.first->getClientID(),partyColours_[piggy]);
                            //this->gtinfo_->sendFadingMessage("You're now a chaser.",it->first->getClientID());
                        }
-                       else if (it->second==piggy)
-                       {
-                           this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it->first->getClientID(),partyColours_[piggy]);
+                       else if (mapEntry.second==piggy)
+                       {
+                           this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",mapEntry.first->getClientID(),partyColours_[piggy]);
                            //this->gtinfo_->sendFadingMessage("You're now a victim.",it->first->getClientID());
                        }
-                       else if (it->second==killer)
-                       {
-                           this->gtinfo_->sendStaticMessage("Take the chasers down.",it->first->getClientID(),partyColours_[piggy]);
+                       else if (mapEntry.second==killer)
+                       {
+                           this->gtinfo_->sendStaticMessage("Take the chasers down.",mapEntry.first->getClientID(),partyColours_[piggy]);
                            //this->gtinfo_->sendFadingMessage("You're now a killer.",it->first->getClientID());
                        }
@@ -548,11 +548,11 @@
             if (tutorial) // Announce selectionphase
             {
-             for (std::map<PlayerInfo*, int>::iterator it = this->playerParty_.begin(); it != this->playerParty_.end(); ++it)
-                {
-                    if (!it->first)//in order to catch nullpointer
+             for (const auto& mapEntry : this->playerParty_)
+                {
+                    if (!mapEntry.first)//in order to catch nullpointer
                         continue;
-                    if (it->first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
+                    if (mapEntry.first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
                         continue;
-                    this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",it->first->getClientID(),ColourValue(1.0f, 1.0f, 0.5f));
+                    this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",mapEntry.first->getClientID(),ColourValue(1.0f, 1.0f, 0.5f));
                 }
             }
@@ -563,26 +563,26 @@
              if(tutorial&&(!notEnoughPigs)&&(!notEnoughKillers)) //Selection phase over
              {
-                  for (std::map<PlayerInfo*, int>::iterator it = this->playerParty_.begin(); it != this->playerParty_.end(); ++it)
+                  for (const auto& mapEntry : this->playerParty_)
                   {
-                       if (!it->first)
+                       if (!mapEntry.first)
                            continue;
-                       if (it->first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
+                       if (mapEntry.first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
                            continue;
-                       else if (it->second==chaser)
+                       else if (mapEntry.second==chaser)
                        {
                            if (numberOf[killer]>0)
-                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",it->first->getClientID(),partyColours_[piggy]);
+                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",mapEntry.first->getClientID(),partyColours_[piggy]);
                            else
-                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",it->first->getClientID(),partyColours_[piggy]);
+                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",mapEntry.first->getClientID(),partyColours_[piggy]);
                            //this->gtinfo_->sendFadingMessage("You're now a chaser.",it->first->getClientID());
                        }
-                       else if (it->second==piggy)
-                       {
-                           this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it->first->getClientID(),partyColours_[chaser]);
+                       else if (mapEntry.second==piggy)
+                       {
+                           this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",mapEntry.first->getClientID(),partyColours_[chaser]);
                            //this->gtinfo_->sendFadingMessage("You're now a victim.",it->first->getClientID());
                        }
-                       else if (it->second==killer)
-                       {
-                           this->gtinfo_->sendStaticMessage("Take the chasers down.",it->first->getClientID(),partyColours_[chaser]);
+                       else if (mapEntry.second==killer)
+                       {
+                           this->gtinfo_->sendStaticMessage("Take the chasers down.",mapEntry.first->getClientID(),partyColours_[chaser]);
                            //this->gtinfo_->sendFadingMessage("You're now a killer.",it->first->getClientID());
                        }
@@ -631,9 +631,9 @@
         else if(tutorial) // Announce selectionphase
         {
-            for (std::map<PlayerInfo*, int>::iterator it = this->playerParty_.begin(); it != this->playerParty_.end(); ++it)
-            {
-                if (it->first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
+            for (const auto& mapEntry : this->playerParty_)
+            {
+                if (mapEntry.first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
                     continue;
-                this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",it->first->getClientID(),ColourValue(1.0f, 1.0f, 0.5f));
+                this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",mapEntry.first->getClientID(),ColourValue(1.0f, 1.0f, 0.5f));
             }
         }
@@ -687,8 +687,8 @@
             unsigned int randomspawn = static_cast<unsigned int>(rnd(static_cast<float>(teamSpawnPoints.size())));
             unsigned int index = 0;
-            for (std::set<SpawnPoint*>::const_iterator it = teamSpawnPoints.begin(); it != teamSpawnPoints.end(); ++it)
+            for (SpawnPoint* teamSpawnPoint : teamSpawnPoints)
             {
                 if (index == randomspawn)
-                    return (*it);
+                    return teamSpawnPoint;
 
                 ++index;
@@ -696,5 +696,5 @@
         }
 
-        return 0;
+        return nullptr;
     }
 
Index: code/trunk/src/orxonox/gametypes/Dynamicmatch.h
===================================================================
--- code/trunk/src/orxonox/gametypes/Dynamicmatch.h	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/Dynamicmatch.h	(revision 11071)
@@ -65,12 +65,12 @@
             bool tutorial; //goal: new players receive messages how the new gametype works - later it can be switched off.
 
-            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator = 0); //ok - score function and management of parties
-            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = 0); //ok - simple
-            virtual void start();
-            virtual void end(); //Wie geht das mit der Punkteausgabe aendern? Z.B: Persoenliche Nachricht?
-            virtual void playerEntered(PlayerInfo* player);
-            virtual void playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn);//is used to initialize the player's party and colour
-            virtual bool playerLeft(PlayerInfo* player);
-            virtual bool playerChangedName(PlayerInfo* player);//unchanged
+            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator = nullptr) override; //ok - score function and management of parties
+            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = nullptr) override; //ok - simple
+            virtual void start() override;
+            virtual void end() override; //Wie geht das mit der Punkteausgabe aendern? Z.B: Persoenliche Nachricht?
+            virtual void playerEntered(PlayerInfo* player) override;
+            virtual void playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn) override;//is used to initialize the player's party and colour
+            virtual bool playerLeft(PlayerInfo* player) override;
+            virtual bool playerChangedName(PlayerInfo* player) override;//unchanged
 
             /*virtual void instructions();
@@ -79,6 +79,6 @@
             void grantPigBoost(SpaceShip* spaceship); // Grant the piggy a boost.
             void resetSpeedFactor(SpaceShip* spaceship, Timer* timer);
-            void tick (float dt);// used to end the game
-            SpawnPoint* getBestSpawnPoint(PlayerInfo* player) const;
+            virtual void tick (float dt) override;// used to end the game
+            virtual SpawnPoint* getBestSpawnPoint(PlayerInfo* player) const override;
 
 
Index: code/trunk/src/orxonox/gametypes/Gametype.cc
===================================================================
--- code/trunk/src/orxonox/gametypes/Gametype.cc	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/Gametype.cc	(revision 11071)
@@ -66,5 +66,5 @@
 
         this->defaultControllableEntity_ = Class(Spectator);
-        this->scoreboard_ = 0;
+        this->scoreboard_ = nullptr;
 
         this->bAutoStart_ = false;
@@ -92,6 +92,6 @@
                 this->gtinfo_->destroy();
 
-            ModifyConsoleCommand(__CC_addBots_name).setObject(NULL);
-            ModifyConsoleCommand(__CC_killBots_name).setObject(NULL);
+            ModifyConsoleCommand(__CC_addBots_name).setObject(nullptr);
+            ModifyConsoleCommand(__CC_killBots_name).setObject(nullptr);
         }
     }
@@ -139,9 +139,9 @@
         if (!this->gtinfo_->hasStarted())
         {
-            for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)
+            for (const auto& mapEntry : this->players_)
             {
                 // Inform the GametypeInfo that the player is ready to spawn.
-                if(it->first->isHumanPlayer() && it->first->isReadyToSpawn())
-                    this->gtinfo_->playerReadyToSpawn(it->first);
+                if(mapEntry.first->isHumanPlayer() && mapEntry.first->isReadyToSpawn())
+                    this->gtinfo_->playerReadyToSpawn(mapEntry.first);
             }
 
@@ -169,9 +169,9 @@
         }
 
-        for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)
-        {
-            if (it->first->getControllableEntity())
-            {
-                ControllableEntity* oldentity = it->first->getControllableEntity();
+        for (const auto& mapEntry : this->players_)
+        {
+            if (mapEntry.first->getControllableEntity())
+            {
+                ControllableEntity* oldentity = mapEntry.first->getControllableEntity();
 
                 ControllableEntity* entity = this->defaultControllableEntity_.fabricate(oldentity->getContext());
@@ -186,8 +186,8 @@
                     entity->setOrientation(oldentity->getWorldOrientation());
                 }
-                it->first->startControl(entity);
+                mapEntry.first->startControl(entity);
             }
             else
-                this->spawnPlayerAsDefaultPawn(it->first);
+                this->spawnPlayerAsDefaultPawn(mapEntry.first);
         }
     }
@@ -337,15 +337,15 @@
         {
             // Fallback spawn point if there is no active one, choose a random one.
-            SpawnPoint* fallbackSpawnPoint = NULL;
+            SpawnPoint* fallbackSpawnPoint = nullptr;
             unsigned int randomspawn = static_cast<unsigned int>(rnd(static_cast<float>(this->spawnpoints_.size())));
             unsigned int index = 0;
             std::vector<SpawnPoint*> activeSpawnPoints;
-            for (std::set<SpawnPoint*>::const_iterator it = this->spawnpoints_.begin(); it != this->spawnpoints_.end(); ++it)
+            for (SpawnPoint* spawnpoint : this->spawnpoints_)
             {
                 if (index == randomspawn)
-                    fallbackSpawnPoint = (*it);
-
-                if (*it != NULL && (*it)->isActive())
-                    activeSpawnPoints.push_back(*it);
+                    fallbackSpawnPoint = spawnpoint;
+
+                if (spawnpoint != nullptr && spawnpoint->isActive())
+                    activeSpawnPoints.push_back(spawnpoint);
 
                 ++index;
@@ -361,19 +361,19 @@
             return fallbackSpawnPoint;
         }
-        return 0;
+        return nullptr;
     }
 
     void Gametype::assignDefaultPawnsIfNeeded()
     {
-        for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)
-        {
-            if (!it->first->getControllableEntity())
-            {
-                it->second.state_ = PlayerState::Dead;
-
-                if (!it->first->isReadyToSpawn() || !this->gtinfo_->hasStarted())
-                {
-                    this->spawnPlayerAsDefaultPawn(it->first);
-                    it->second.state_ = PlayerState::Dead;
+        for (auto& mapEntry : this->players_)
+        {
+            if (!mapEntry.first->getControllableEntity())
+            {
+                mapEntry.second.state_ = PlayerState::Dead;
+
+                if (!mapEntry.first->isReadyToSpawn() || !this->gtinfo_->hasStarted())
+                {
+                    this->spawnPlayerAsDefaultPawn(mapEntry.first);
+                    mapEntry.second.state_ = PlayerState::Dead;
                 }
             }
@@ -404,9 +404,9 @@
                     bool allplayersready = true;
                     bool hashumanplayers = false;
-                    for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)
+                    for (const auto& mapEntry : this->players_)
                     {
-                        if (!it->first->isReadyToSpawn())
+                        if (!mapEntry.first->isReadyToSpawn())
                             allplayersready = false;
-                        if (it->first->isHumanPlayer())
+                        if (mapEntry.first->isHumanPlayer())
                             hashumanplayers = true;
                     }
@@ -430,8 +430,8 @@
     void Gametype::spawnPlayersIfRequested()
     {
-        for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)
-        {
-            if (it->first->isReadyToSpawn() || this->bForceSpawn_)
-                this->spawnPlayer(it->first);
+        for (const auto& mapEntry : this->players_)
+        {
+            if (mapEntry.first->isReadyToSpawn() || this->bForceSpawn_)
+                this->spawnPlayer(mapEntry.first);
         }
     }
@@ -439,8 +439,8 @@
     void Gametype::spawnDeadPlayersIfRequested()
     {
-        for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)
-            if (it->second.state_ == PlayerState::Dead)
-                if (it->first->isReadyToSpawn() || this->bForceSpawn_)
-                    this->spawnPlayer(it->first);
+        for (const auto& mapEntry : this->players_)
+            if (mapEntry.second.state_ == PlayerState::Dead)
+                if (mapEntry.first->isReadyToSpawn() || this->bForceSpawn_)
+                    this->spawnPlayer(mapEntry.first);
     }
 
@@ -492,5 +492,6 @@
     {
         unsigned int i = 0;
-        for (ObjectList<Bot>::iterator it = ObjectList<Bot>::begin(); (it != ObjectList<Bot>::end()) && ((amount == 0) || (i < amount)); )
+        ObjectList<Bot> list;
+        for (ObjectList<Bot>::iterator it = list.begin(); (it != list.end()) && ((amount == 0) || (i < amount)); )
         {
             if (it->getGametype() == this)
@@ -538,9 +539,9 @@
     GSLevelMementoState* Gametype::exportMementoState()
     {
-        for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)
-        {
-            if (it->first->isHumanPlayer() && it->first->getControllableEntity() && it->first->getControllableEntity()->getCamera())
-            {
-                Camera* camera = it->first->getControllableEntity()->getCamera();
+        for (const auto& mapEntry : this->players_)
+        {
+            if (mapEntry.first->isHumanPlayer() && mapEntry.first->getControllableEntity() && mapEntry.first->getControllableEntity()->getCamera())
+            {
+                Camera* camera = mapEntry.first->getControllableEntity()->getCamera();
 
                 GametypeMementoState* state = new GametypeMementoState();
@@ -552,5 +553,5 @@
         }
 
-        return NULL;
+        return nullptr;
     }
 
@@ -558,8 +559,8 @@
     {
         // find correct memento state
-        GametypeMementoState* state = NULL;
-        for (size_t i = 0; i < states.size(); ++i)
-        {
-            state = dynamic_cast<GametypeMementoState*>(states[i]);
+        GametypeMementoState* state = nullptr;
+        for (GSLevelMementoState* temp : states)
+        {
+            state = dynamic_cast<GametypeMementoState*>(temp);
             if (state)
                 break;
@@ -570,10 +571,10 @@
 
         // find correct scene
-        Scene* scene = NULL;
-        for (ObjectList<Scene>::iterator it = ObjectList<Scene>::begin(); it != ObjectList<Scene>::end(); ++it)
-        {
-            if (it->getName() == state->sceneName_)
-            {
-                scene = *it;
+        Scene* scene = nullptr;
+        for (Scene* someScene : ObjectList<Scene>())
+        {
+            if (someScene->getName() == state->sceneName_)
+            {
+                scene = someScene;
                 break;
             }
@@ -587,12 +588,12 @@
 
         // find correct player and assign default entity with original position & orientation
-        for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)
-        {
-            if (it->first->isHumanPlayer())
+        for (const auto& mapEntry : this->players_)
+        {
+            if (mapEntry.first->isHumanPlayer())
             {
                 ControllableEntity* entity = this->defaultControllableEntity_.fabricate(scene->getContext());
                 entity->setPosition(state->cameraPosition_);
                 entity->setOrientation(state->cameraOrientation_);
-                it->first->startControl(entity);
+                mapEntry.first->startControl(entity);
                 break;
             }
Index: code/trunk/src/orxonox/gametypes/Gametype.h
===================================================================
--- code/trunk/src/orxonox/gametypes/Gametype.h	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/Gametype.h	(revision 11071)
@@ -45,19 +45,16 @@
 namespace orxonox
 {
-    namespace PlayerState
-    {
-        enum Value
-        {
-            Uninitialized,
-            Joined,
-            Alive,
-            Dead
-        };
-    }
+    enum class PlayerState
+    {
+        Uninitialized,
+        Joined,
+        Alive,
+        Dead
+    };
 
     struct Player
     {
         PlayerInfo* info_;
-        PlayerState::Value state_;
+        PlayerState state_;
         int frags_;
         int killed_;
@@ -76,5 +73,5 @@
             void setConfigValues();
 
-            virtual void tick(float dt);
+            virtual void tick(float dt) override;
 
             inline const GametypeInfo* getGametypeInfo() const
@@ -96,9 +93,9 @@
             virtual void playerScored(PlayerInfo* player, int score = 1);
 
-            virtual bool allowPawnHit(Pawn* victim, Pawn* originator = 0);
-            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator = 0);
-            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = 0);
-
-            virtual void pawnKilled(Pawn* victim, Pawn* killer = 0);
+            virtual bool allowPawnHit(Pawn* victim, Pawn* originator = nullptr);
+            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator = nullptr);
+            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = nullptr);
+
+            virtual void pawnKilled(Pawn* victim, Pawn* killer = nullptr);
             virtual void pawnPreSpawn(Pawn* pawn);
             virtual void pawnPostSpawn(Pawn* pawn);
@@ -175,6 +172,6 @@
             virtual void spawnDeadPlayersIfRequested();
 
-            virtual GSLevelMementoState* exportMementoState();
-            virtual void importMementoState(const std::vector<GSLevelMementoState*>& states);
+            virtual GSLevelMementoState* exportMementoState() override;
+            virtual void importMementoState(const std::vector<GSLevelMementoState*>& states) override;
 
             WeakPtr<GametypeInfo> gtinfo_;
Index: code/trunk/src/orxonox/gametypes/LastManStanding.cc
===================================================================
--- code/trunk/src/orxonox/gametypes/LastManStanding.cc	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/LastManStanding.cc	(revision 11071)
@@ -56,11 +56,11 @@
     void LastManStanding::spawnDeadPlayersIfRequested()
     {
-        for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)
-            if (it->second.state_ == PlayerState::Dead)
-            {
-                bool alive = (0<playerLives_[it->first]&&(inGame_[it->first]));
-                if (alive&&(it->first->isReadyToSpawn() || this->bForceSpawn_))
-                {
-                    this->spawnPlayer(it->first);
+        for (const auto& mapEntry : this->players_)
+            if (mapEntry.second.state_ == PlayerState::Dead)
+            {
+                bool alive = (0<playerLives_[mapEntry.first]&&(inGame_[mapEntry.first]));
+                if (alive&&(mapEntry.first->isReadyToSpawn() || this->bForceSpawn_))
+                {
+                    this->spawnPlayer(mapEntry.first);
                 }
             }
@@ -114,10 +114,10 @@
     {
         int min=lives;
-        for (std::map<PlayerInfo*, int>::iterator it = this->playerLives_.begin(); it != this->playerLives_.end(); ++it)
-        {
-            if (it->second<=0)
+        for (const auto& mapEntry : this->playerLives_)
+        {
+            if (mapEntry.second<=0)
                 continue;
-            if (it->second<lives)
-                min=it->second;
+            if (mapEntry.second<lives)
+                min=mapEntry.second;
         }
         return min;
@@ -128,13 +128,13 @@
         Gametype::end();
 
-        for (std::map<PlayerInfo*, int>::iterator it = this->playerLives_.begin(); it != this->playerLives_.end(); ++it)
-        {
-            if (it->first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
+        for (const auto& mapEntry : this->playerLives_)
+        {
+            if (mapEntry.first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
                 continue;
 
-            if (it->second > 0)
-                this->gtinfo_->sendAnnounceMessage("You have won the match!", it->first->getClientID());
+            if (mapEntry.second > 0)
+                this->gtinfo_->sendAnnounceMessage("You have won the match!", mapEntry.first->getClientID());
             else
-                this->gtinfo_->sendAnnounceMessage("You have lost the match!", it->first->getClientID());
+                this->gtinfo_->sendAnnounceMessage("You have lost the match!", mapEntry.first->getClientID());
         }
     }
@@ -237,39 +237,39 @@
                 this->end();
             }
-            for (std::map<PlayerInfo*, float>::iterator it = this->timeToAct_.begin(); it != this->timeToAct_.end(); ++it)
-            {
-                if (playerGetLives(it->first)<=0)//Players without lives shouldn't be affected by time.
+            for (auto& mapEntry : this->timeToAct_)
+            {
+                if (playerGetLives(mapEntry.first)<=0)//Players without lives shouldn't be affected by time.
                     continue;
-                it->second-=dt;//Decreases punishment time.
-                if (!inGame_[it->first])//Manages respawn delay - player is forced to respawn after the delaytime is used up.
-                {
-                    playerDelayTime_[it->first]-=dt;
-                    if (playerDelayTime_[it->first]<=0)
-                    this->inGame_[it->first]=true;
-
-                    if (it->first->getClientID()== NETWORK_PEER_ID_UNKNOWN)
+                mapEntry.second-=dt;//Decreases punishment time.
+                if (!inGame_[mapEntry.first])//Manages respawn delay - player is forced to respawn after the delaytime is used up.
+                {
+                    playerDelayTime_[mapEntry.first]-=dt;
+                    if (playerDelayTime_[mapEntry.first]<=0)
+                    this->inGame_[mapEntry.first]=true;
+
+                    if (mapEntry.first->getClientID()== NETWORK_PEER_ID_UNKNOWN)
                         continue;
-                    int output=1+(int)playerDelayTime_[it->first];
+                    int output=1+(int)playerDelayTime_[mapEntry.first];
                     const std::string& message = "Respawn in " +multi_cast<std::string>(output)+ " seconds." ;//Countdown
-                    this->gtinfo_->sendFadingMessage(message,it->first->getClientID());
-                }
-                else if (it->second<0.0f)
-                {
-                    it->second=timeRemaining+3.0f;//reset punishment-timer
-                    if (playerGetLives(it->first)>0)
+                    this->gtinfo_->sendFadingMessage(message,mapEntry.first->getClientID());
+                }
+                else if (mapEntry.second<0.0f)
+                {
+                    mapEntry.second=timeRemaining+3.0f;//reset punishment-timer
+                    if (playerGetLives(mapEntry.first)>0)
                     {
-                        this->punishPlayer(it->first);
-                        if (it->first->getClientID()== NETWORK_PEER_ID_UNKNOWN)
+                        this->punishPlayer(mapEntry.first);
+                        if (mapEntry.first->getClientID()== NETWORK_PEER_ID_UNKNOWN)
                             return;
                         const std::string& message = ""; // resets Camper-Warning-message
-                        this->gtinfo_->sendFadingMessage(message,it->first->getClientID());
+                        this->gtinfo_->sendFadingMessage(message,mapEntry.first->getClientID());
                     }
                 }
-                else if (it->second<timeRemaining/5)//Warning message
-                {
-                    if (it->first->getClientID()== NETWORK_PEER_ID_UNKNOWN)
+                else if (mapEntry.second<timeRemaining/5)//Warning message
+                {
+                    if (mapEntry.first->getClientID()== NETWORK_PEER_ID_UNKNOWN)
                         continue;
                     const std::string& message = "Camper Warning! Don't forget to shoot.";
-                    this->gtinfo_->sendFadingMessage(message,it->first->getClientID());
+                    this->gtinfo_->sendFadingMessage(message,mapEntry.first->getClientID());
                 }
             }
Index: code/trunk/src/orxonox/gametypes/LastManStanding.h
===================================================================
--- code/trunk/src/orxonox/gametypes/LastManStanding.h	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/LastManStanding.h	(revision 11071)
@@ -61,5 +61,5 @@
             bool bHardPunishment; //!< Switches between damage and death as punishment.
             float punishDamageRate; //!< Makes Damage adjustable.
-            virtual void spawnDeadPlayersIfRequested(); //!< Prevents dead players to respawn.
+            virtual void spawnDeadPlayersIfRequested() override; //!< Prevents dead players to respawn.
             virtual int getMinLives(); //!< Returns minimum of each player's lives; players with 0 lives are skipped; 
 
@@ -69,16 +69,16 @@
             void setConfigValues(); //!< Makes values configurable.
 
-            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator = 0); //!< If a player shoot's an opponent, his punishment countdown will be resetted.
-            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = 0); //!< Manages each players lives.
+            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator = nullptr) override; //!< If a player shoot's an opponent, his punishment countdown will be resetted.
+            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = nullptr) override; //!< Manages each players lives.
 
-            virtual void end(); //!< Sends an end message.
+            virtual void end() override; //!< Sends an end message.
             int playerGetLives(PlayerInfo* player); //!< getFunction for the map "playerLives_".
             int getNumPlayersAlive() const; //!< Returns the number of players that are still alive.
-            virtual void playerEntered(PlayerInfo* player); //!< Initializes values.
-            virtual bool playerLeft(PlayerInfo* player); //!< Manages all local variables.
-            virtual void playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn); //!< Resets punishment time and respawn delay.
+            virtual void playerEntered(PlayerInfo* player) override; //!< Initializes values.
+            virtual bool playerLeft(PlayerInfo* player) override; //!< Manages all local variables.
+            virtual void playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn) override; //!< Resets punishment time and respawn delay.
 
             void punishPlayer(PlayerInfo* player); //!< Function in order to kill a player. Punishment for hiding longer than "timeRemaining".
-            void tick (float dt); //!< used to end the game
+            virtual void tick (float dt) override; //!< used to end the game
     };
 }
Index: code/trunk/src/orxonox/gametypes/LastTeamStanding.cc
===================================================================
--- code/trunk/src/orxonox/gametypes/LastTeamStanding.cc	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/LastTeamStanding.cc	(revision 11071)
@@ -145,11 +145,11 @@
     void LastTeamStanding::spawnDeadPlayersIfRequested()
     {
-        for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)
-            if (it->second.state_ == PlayerState::Dead)
-            {
-                bool alive = (0 < playerLives_[it->first]&&(inGame_[it->first]));
-                if (alive&&(it->first->isReadyToSpawn() || this->bForceSpawn_))
-                {
-                    this->spawnPlayer(it->first);
+        for (const auto& mapEntry : this->players_)
+            if (mapEntry.second.state_ == PlayerState::Dead)
+            {
+                bool alive = (0 < playerLives_[mapEntry.first]&&(inGame_[mapEntry.first]));
+                if (alive&&(mapEntry.first->isReadyToSpawn() || this->bForceSpawn_))
+                {
+                    this->spawnPlayer(mapEntry.first);
                 }
             }
@@ -184,39 +184,39 @@
                 this->end();
             }
-            for (std::map<PlayerInfo*, float>::iterator it = this->timeToAct_.begin(); it != this->timeToAct_.end(); ++it)
-            {
-                if (playerGetLives(it->first) <= 0)//Players without lives shouldn't be affected by time.
+            for (auto& mapEntry : this->timeToAct_)
+            {
+                if (playerGetLives(mapEntry.first) <= 0)//Players without lives shouldn't be affected by time.
                     continue;
-                it->second -= dt;//Decreases punishment time.
-                if (!inGame_[it->first])//Manages respawn delay - player is forced to respawn after the delaytime is used up.
-                {
-                    playerDelayTime_[it->first] -= dt;
-                    if (playerDelayTime_[it->first] <= 0)
-                    this->inGame_[it->first] = true;
-
-                    if (it->first->getClientID()== NETWORK_PEER_ID_UNKNOWN)
+                mapEntry.second -= dt;//Decreases punishment time.
+                if (!inGame_[mapEntry.first])//Manages respawn delay - player is forced to respawn after the delaytime is used up.
+                {
+                    playerDelayTime_[mapEntry.first] -= dt;
+                    if (playerDelayTime_[mapEntry.first] <= 0)
+                    this->inGame_[mapEntry.first] = true;
+
+                    if (mapEntry.first->getClientID()== NETWORK_PEER_ID_UNKNOWN)
                         continue;
-                    int output = 1 + (int)playerDelayTime_[it->first];
+                    int output = 1 + (int)playerDelayTime_[mapEntry.first];
                     const std::string& message = "Respawn in " +multi_cast<std::string>(output)+ " seconds." ;//Countdown
-                    this->gtinfo_->sendFadingMessage(message,it->first->getClientID());
-                }
-                else if (it->second < 0.0f)
-                {
-                    it->second = timeRemaining + 3.0f;//reset punishment-timer
-                    if (playerGetLives(it->first) > 0)
+                    this->gtinfo_->sendFadingMessage(message,mapEntry.first->getClientID());
+                }
+                else if (mapEntry.second < 0.0f)
+                {
+                    mapEntry.second = timeRemaining + 3.0f;//reset punishment-timer
+                    if (playerGetLives(mapEntry.first) > 0)
                     {
-                        this->punishPlayer(it->first);
-                        if (it->first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
+                        this->punishPlayer(mapEntry.first);
+                        if (mapEntry.first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
                             return;
                         const std::string& message = ""; // resets Camper-Warning-message
-                        this->gtinfo_->sendFadingMessage(message, it->first->getClientID());
+                        this->gtinfo_->sendFadingMessage(message, mapEntry.first->getClientID());
                     }
                 }
-                else if (it->second < timeRemaining/5)//Warning message
-                {
-                  if (it->first->getClientID()== NETWORK_PEER_ID_UNKNOWN)
+                else if (mapEntry.second < timeRemaining/5)//Warning message
+                {
+                  if (mapEntry.first->getClientID()== NETWORK_PEER_ID_UNKNOWN)
                         continue;
                     const std::string& message = "Camper Warning! Don't forget to shoot.";
-                    this->gtinfo_->sendFadingMessage(message, it->first->getClientID());
+                    this->gtinfo_->sendFadingMessage(message, mapEntry.first->getClientID());
                 }
             }
@@ -229,13 +229,13 @@
         int party = -1;
         //find a player who survived
-        for (std::map<PlayerInfo*, int>::iterator it = this->playerLives_.begin(); it != this->playerLives_.end(); ++it)
-        {
-          if (it->first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
+        for (const auto& mapEntry : this->playerLives_)
+        {
+          if (mapEntry.first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
                 continue;
 
-            if (it->second > 0)//a player that is alive
+            if (mapEntry.second > 0)//a player that is alive
             {
                 //which party has survived?
-                std::map<PlayerInfo*, int>::iterator it2 = this->teamnumbers_.find(it->first);
+                std::map<PlayerInfo*, int>::iterator it2 = this->teamnumbers_.find(mapEntry.first);
                 if (it2 != this->teamnumbers_.end())
                 {
@@ -255,10 +255,10 @@
     {
         int min = lives;
-        for (std::map<PlayerInfo*, int>::iterator it = this->playerLives_.begin(); it != this->playerLives_.end(); ++it)
-        {
-            if (it->second <= 0)
+        for (const auto& mapEntry : this->playerLives_)
+        {
+            if (mapEntry.second <= 0)
                 continue;
-            if (it->second < lives)
-                min = it->second;
+            if (mapEntry.second < lives)
+                min = mapEntry.second;
         }
         return min;
Index: code/trunk/src/orxonox/gametypes/LastTeamStanding.h
===================================================================
--- code/trunk/src/orxonox/gametypes/LastTeamStanding.h	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/LastTeamStanding.h	(revision 11071)
@@ -67,5 +67,5 @@
             std::map<PlayerInfo*, bool> inGame_; //!< Indicates each Player's state.
 
-            virtual void spawnDeadPlayersIfRequested(); //!< Prevents dead players to respawn.
+            virtual void spawnDeadPlayersIfRequested() override; //!< Prevents dead players to respawn.
             virtual int getMinLives(); //!< Returns minimum of each player's lives; players with 0 lives are skipped;
 
@@ -74,12 +74,12 @@
             virtual ~LastTeamStanding(); //!< Default Destructor.
 
-            virtual void playerEntered(PlayerInfo* player); //!< Initializes values.
-            virtual bool playerLeft(PlayerInfo* player); //!< Manages all local variables.
+            virtual void playerEntered(PlayerInfo* player) override; //!< Initializes values.
+            virtual bool playerLeft(PlayerInfo* player) override; //!< Manages all local variables.
 
-            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = 0); //!< Manages each player's lost lives.
-            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator = 0); //!< If a player shoot's an opponent, his punishment countdown will be resetted.
-            virtual void playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn); //!< Resets punishment time and respawn delay.
-            void tick (float dt); //!< used to end the game
-            virtual void end(); //!< Sends an end message.
+            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = nullptr) override; //!< Manages each player's lost lives.
+            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator = nullptr) override; //!< If a player shoot's an opponent, his punishment countdown will be resetted.
+            virtual void playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn) override; //!< Resets punishment time and respawn delay.
+            virtual void tick (float dt) override; //!< used to end the game
+            virtual void end() override; //!< Sends an end message.
             void punishPlayer(PlayerInfo* player); //!< Function in order to kill a player. Punishment for hiding longer than "timeRemaining".
             int playerGetLives(PlayerInfo* player); //!< getFunction for the map "playerLives_".
Index: code/trunk/src/orxonox/gametypes/Mission.cc
===================================================================
--- code/trunk/src/orxonox/gametypes/Mission.cc	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/Mission.cc	(revision 11071)
@@ -101,7 +101,6 @@
     void Mission::setTeams()
     { //Set pawn-colours
-        for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it != ObjectList<Pawn>::end(); ++it)
+        for (Pawn* pawn : ObjectList<Pawn>())
         {
-            Pawn* pawn = static_cast<Pawn*>(*it);
             if (!pawn)
                 continue;
@@ -111,8 +110,8 @@
     void Mission::endMission(bool accomplished)
     {
-        for (ObjectList<Mission>::iterator it = ObjectList<Mission>::begin(); it != ObjectList<Mission>::end(); ++it)
+        for (Mission* mission : ObjectList<Mission>())
         { //TODO: make sure that only the desired mission is ended !! This is a dirty HACK, that would end ALL missions!
-            it->setMissionAccomplished(accomplished);
-            it->end();
+            mission->setMissionAccomplished(accomplished);
+            mission->end();
         }
     }
@@ -120,7 +119,7 @@
     void Mission::setLivesWrapper(unsigned int amount)
     {
-        for (ObjectList<Mission>::iterator it = ObjectList<Mission>::begin(); it != ObjectList<Mission>::end(); ++it)
+        for (Mission* mission : ObjectList<Mission>())
         { //TODO: make sure that only the desired mission is ended !! This is a dirty HACK, that would affect ALL missions!
-            it->setLives(amount);
+            mission->setLives(amount);
         }
     }
Index: code/trunk/src/orxonox/gametypes/Mission.h
===================================================================
--- code/trunk/src/orxonox/gametypes/Mission.h	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/Mission.h	(revision 11071)
@@ -42,10 +42,10 @@
             virtual ~Mission() {}
 
-            virtual void tick(float dt);
+            virtual void tick(float dt) override;
 
-            virtual void start();
-            virtual void end();
+            virtual void start() override;
+            virtual void end() override;
             virtual void setTeams();
-            virtual void addBots(unsigned int amount){} //<! overwrite function in order to bypass the addbots command
+            virtual void addBots(unsigned int amount) override{} //<! overwrite function in order to bypass the addbots command
             inline void setLives(unsigned int amount)
                 {this->lives_ = amount;}
@@ -58,5 +58,5 @@
 
         protected:
-            virtual void pawnKilled(Pawn* victim, Pawn* killer = 0);
+            virtual void pawnKilled(Pawn* victim, Pawn* killer = nullptr) override;
             bool missionAccomplished_; //<! indicates if player successfully finsihed the mission;
             int lives_; //<! amount of player's lives <-> nr. of retries
Index: code/trunk/src/orxonox/gametypes/TeamBaseMatch.cc
===================================================================
--- code/trunk/src/orxonox/gametypes/TeamBaseMatch.cc	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/TeamBaseMatch.cc	(revision 11071)
@@ -152,11 +152,11 @@
         int amountControlled2 = 0;
 
-        for (std::set<TeamBaseMatchBase*>::const_iterator it = this->bases_.begin(); it != this->bases_.end(); ++it)
-        {
-            if((*it)->getState() == BaseState::ControlTeam1)
+        for (TeamBaseMatchBase* base : this->bases_)
+        {
+            if(base->getState() == BaseState::ControlTeam1)
             {
                 amountControlled++;
             }
-            if((*it)->getState() == BaseState::ControlTeam2)
+            if(base->getState() == BaseState::ControlTeam2)
             {
                 amountControlled2++;
@@ -187,13 +187,13 @@
             }
 
-            for (std::map<PlayerInfo*, int>::iterator it = this->teamnumbers_.begin(); it != this->teamnumbers_.end(); ++it)
-            {
-                if (it->first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
+            for (const auto& mapEntry : this->teamnumbers_)
+            {
+                if (mapEntry.first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
                     continue;
 
-                if (it->second == winningteam)
-                    this->gtinfo_->sendAnnounceMessage("You have won the match!", it->first->getClientID());
+                if (mapEntry.second == winningteam)
+                    this->gtinfo_->sendAnnounceMessage("You have won the match!", mapEntry.first->getClientID());
                 else
-                    this->gtinfo_->sendAnnounceMessage("You have lost the match!", it->first->getClientID());
+                    this->gtinfo_->sendAnnounceMessage("You have lost the match!", mapEntry.first->getClientID());
             }
 
@@ -238,9 +238,9 @@
         int count = 0;
 
-        for (std::set<TeamBaseMatchBase*>::const_iterator it = this->bases_.begin(); it != this->bases_.end(); ++it)
-        {
-            if ((*it)->getState() == BaseState::ControlTeam1 && team == 0)
+        for (TeamBaseMatchBase* base : this->bases_)
+        {
+            if (base->getState() == BaseState::ControlTeam1 && team == 0)
                 count++;
-            if ((*it)->getState() == BaseState::ControlTeam2 && team == 1)
+            if (base->getState() == BaseState::ControlTeam2 && team == 1)
                 count++;
         }
@@ -258,11 +258,11 @@
     {
         unsigned int i = 0;
-        for (std::set<TeamBaseMatchBase*>::const_iterator it = this->bases_.begin(); it != this->bases_.end(); ++it)
+        for (TeamBaseMatchBase* base : this->bases_)
         {
             i++;
             if (i > index)
-                return (*it);
-        }
-        return 0;
+                return base;
+        }
+        return nullptr;
     }
 
Index: code/trunk/src/orxonox/gametypes/TeamBaseMatch.h
===================================================================
--- code/trunk/src/orxonox/gametypes/TeamBaseMatch.h	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/TeamBaseMatch.h	(revision 11071)
@@ -44,8 +44,8 @@
             virtual ~TeamBaseMatch() {}
 
-            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = 0);
-            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator);
+            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = nullptr) override;
+            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator) override;
 
-            virtual void playerScored(PlayerInfo* player, int score = 1);
+            virtual void playerScored(PlayerInfo* player, int score = 1) override;
             virtual void showPoints();
             virtual void endGame();
Index: code/trunk/src/orxonox/gametypes/TeamDeathmatch.cc
===================================================================
--- code/trunk/src/orxonox/gametypes/TeamDeathmatch.cc	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/TeamDeathmatch.cc	(revision 11071)
@@ -69,10 +69,10 @@
         int winnerTeam = 0;
         int highestScore = 0;
-        for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)
+        for (const auto& mapEntry : this->players_)
         {
-            if ( this->getTeamScore(it->first) > highestScore )
+            if ( this->getTeamScore(mapEntry.first) > highestScore )
             {
-                winnerTeam = this->getTeam(it->first);
-                highestScore = this->getTeamScore(it->first);
+                winnerTeam = this->getTeam(mapEntry.first);
+                highestScore = this->getTeamScore(mapEntry.first);
             }
         }
Index: code/trunk/src/orxonox/gametypes/TeamDeathmatch.h
===================================================================
--- code/trunk/src/orxonox/gametypes/TeamDeathmatch.h	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/TeamDeathmatch.h	(revision 11071)
@@ -42,12 +42,12 @@
 
             void setConfigValues();
-            virtual void start();
-            virtual void end();
-            virtual void playerEntered(PlayerInfo* player);
-            virtual bool playerLeft(PlayerInfo* player);
-            virtual bool playerChangedName(PlayerInfo* player);
+            virtual void start() override;
+            virtual void end() override;
+            virtual void playerEntered(PlayerInfo* player) override;
+            virtual bool playerLeft(PlayerInfo* player) override;
+            virtual bool playerChangedName(PlayerInfo* player) override;
 
-            virtual void pawnKilled(Pawn* victim, Pawn* killer = 0);
-            virtual void playerScored(PlayerInfo* player, int score = 1);
+            virtual void pawnKilled(Pawn* victim, Pawn* killer = nullptr) override;
+            virtual void playerScored(PlayerInfo* player, int score = 1) override;
        protected:
             int maxScore_; 
Index: code/trunk/src/orxonox/gametypes/TeamGametype.cc
===================================================================
--- code/trunk/src/orxonox/gametypes/TeamGametype.cc	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/TeamGametype.cc	(revision 11071)
@@ -75,5 +75,5 @@
     void TeamGametype::playerEntered(PlayerInfo* player)
     {
-        if(player == NULL) return; // catch null pointers
+        if(player == nullptr) return; // catch null pointers
         Gametype::playerEntered(player);
         this->findAndSetTeam(player);
@@ -96,10 +96,10 @@
     void TeamGametype::findAndSetTeam(PlayerInfo* player)
     {
-        if(player == NULL) return; // catch null pointers
+        if(player == nullptr) return; // catch null pointers
         std::vector<unsigned int> playersperteam(this->teams_, 0);
 
-        for (std::map<PlayerInfo*, int>::iterator it = this->teamnumbers_.begin(); it != this->teamnumbers_.end(); ++it)
-            if (it->second < static_cast<int>(this->teams_) && it->second >= 0)
-                playersperteam[it->second]++;
+        for (const auto& mapEntry : this->teamnumbers_)
+            if (mapEntry.second < static_cast<int>(this->teams_) && mapEntry.second >= 0)
+                playersperteam[mapEntry.second]++;
 
         unsigned int minplayers = static_cast<unsigned int>(-1);
@@ -123,8 +123,8 @@
         if( (this->players_.size() >= maxPlayers_) && (allowedInGame_[player] == true) ) // if there's a "waiting list"
         {
-            for (std::map<PlayerInfo*, bool>::iterator it = this->allowedInGame_.begin(); it != this->allowedInGame_.end(); ++it)
-            {
-                 if(it->second == false) // waiting player found
-                 {it->second = true; break;} // allow player to enter
+            for (auto& mapEntry : this->allowedInGame_)
+            {
+                 if(mapEntry.second == false) // waiting player found
+                 {mapEntry.second = true; break;} // allow player to enter
             }
         }
@@ -141,15 +141,15 @@
     void TeamGametype::spawnDeadPlayersIfRequested()
     {
-        for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)\
-        {
-            if(allowedInGame_[it->first] == false)//check if dead player is allowed to enter
+        for (const auto& mapEntry : this->players_)\
+        {
+            if(allowedInGame_[mapEntry.first] == false)//check if dead player is allowed to enter
             {
                 continue;
             }
-            if (it->second.state_ == PlayerState::Dead)
-            {
-                if ((it->first->isReadyToSpawn() || this->bForceSpawn_))
+            if (mapEntry.second.state_ == PlayerState::Dead)
+            {
+                if ((mapEntry.first->isReadyToSpawn() || this->bForceSpawn_))
                 {
-                   this->spawnPlayer(it->first);
+                   this->spawnPlayer(mapEntry.first);
                 }
             }
@@ -178,9 +178,9 @@
         if(!player || this->getTeam(player) == -1)
             return 0;
-        for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)
-        {
-            if ( this->getTeam(it->first) ==  this->getTeam(player) )
-            {
-                teamscore += it->second.frags_;
+        for (const auto& mapEntry : this->players_)
+        {
+            if ( this->getTeam(mapEntry.first) ==  this->getTeam(player) )
+            {
+                teamscore += mapEntry.second.frags_;
             }
         }
@@ -191,7 +191,7 @@
     {
         int teamSize = 0;
-        for (std::map<PlayerInfo*, int>::iterator it = this->teamnumbers_.begin(); it != this->teamnumbers_.end(); ++it)
-        {
-            if (it->second == team)
+        for (const auto& mapEntry : this->teamnumbers_)
+        {
+            if (mapEntry.second == team)
                 teamSize++;
         }
@@ -202,7 +202,7 @@
     {
         int teamSize = 0;
-        for (std::map<PlayerInfo*, int>::iterator it = this->teamnumbers_.begin(); it != this->teamnumbers_.end(); ++it)
-        {
-            if (it->second == team  && it->first->isHumanPlayer())
+        for (const auto& mapEntry : this->teamnumbers_)
+        {
+            if (mapEntry.second == team  && mapEntry.first->isHumanPlayer())
                 teamSize++;
         }
@@ -235,5 +235,5 @@
         }
 
-        SpawnPoint* fallbackSpawnPoint = NULL;
+        SpawnPoint* fallbackSpawnPoint = nullptr;
         if (teamSpawnPoints.size() > 0)
         {
@@ -241,9 +241,9 @@
             unsigned int index = 0;
             // Get random fallback spawnpoint in case there is no active SpawnPoint.
-            for (std::set<SpawnPoint*>::const_iterator it = teamSpawnPoints.begin(); it != teamSpawnPoints.end(); ++it)
+            for (SpawnPoint* teamSpawnPoint : teamSpawnPoints)
             {
                 if (index == randomspawn)
                 {
-                    fallbackSpawnPoint = (*it);
+                    fallbackSpawnPoint = teamSpawnPoint;
                     break;
                 }
@@ -266,8 +266,8 @@
             randomspawn = static_cast<unsigned int>(rnd(static_cast<float>(teamSpawnPoints.size())));
             index = 0;
-            for (std::set<SpawnPoint*>::const_iterator it = teamSpawnPoints.begin(); it != teamSpawnPoints.end(); ++it)
+            for (SpawnPoint* teamSpawnPoint : teamSpawnPoints)
             {
                 if (index == randomspawn)
-                    return (*it);
+                    return teamSpawnPoint;
 
                 ++index;
@@ -277,5 +277,5 @@
         }
 
-        return 0;
+        return nullptr;
     }
 
@@ -328,5 +328,5 @@
     void TeamGametype::setDefaultObjectColour(Pawn* pawn)
     {
-        if(pawn == NULL)
+        if(pawn == nullptr)
             return;
 
@@ -340,5 +340,5 @@
         ControllableEntity* entity = orxonox_cast<ControllableEntity*>(pawn);
 
-        Controller* controller = 0;
+        Controller* controller = nullptr;
         if (entity->getController())
             controller = entity->getController();
@@ -350,5 +350,5 @@
         ArtificialController* artificial =  orxonox_cast<ArtificialController*>(controller);
         //get Teamnumber - get the data
-        if(artificial == NULL)
+        if(artificial == nullptr)
             return;
         teamnumber= artificial->getTeam();
@@ -360,13 +360,13 @@
     void TeamGametype::colourPawn(Pawn* pawn, int teamNr)
     {// catch: no-colouring-case and wrong input
-        if(teamNr < 0 || teamNr+1 > int(this->teamcolours_.size()) ||pawn == NULL) return;
+        if(teamNr < 0 || teamNr+1 > int(this->teamcolours_.size()) ||pawn == nullptr) return;
         pawn->setRadarObjectColour(this->teamcolours_[teamNr]);
 
         std::set<WorldEntity*> pawnAttachments = pawn->getAttachedObjects();
-        for (std::set<WorldEntity*>::iterator it = pawnAttachments.begin(); it != pawnAttachments.end(); ++it)
-        {
-            if ((*it)->isA(Class(TeamColourable)))
-            {
-                TeamColourable* tc = orxonox_cast<TeamColourable*>(*it);
+        for (WorldEntity* pawnAttachment : pawnAttachments)
+        {
+            if (pawnAttachment->isA(Class(TeamColourable)))
+            {
+                TeamColourable* tc = orxonox_cast<TeamColourable*>(pawnAttachment);
                 tc->setTeamColour(this->teamcolours_[teamNr]);
             }
@@ -376,15 +376,15 @@
     void TeamGametype::announceTeamWin(int winnerTeam)
     {
-        for (std::map<PlayerInfo*, int>::iterator it3 = this->teamnumbers_.begin(); it3 != this->teamnumbers_.end(); ++it3)
-        {
-            if (it3->first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
+        for (const auto& mapEntry : this->teamnumbers_)
+        {
+            if (mapEntry.first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
                 continue;
-            if (it3->second == winnerTeam)
-            {
-                this->gtinfo_->sendAnnounceMessage("Your team has won the match!", it3->first->getClientID());
+            if (mapEntry.second == winnerTeam)
+            {
+                this->gtinfo_->sendAnnounceMessage("Your team has won the match!", mapEntry.first->getClientID());
             }
             else
             {
-                this->gtinfo_->sendAnnounceMessage("Your team has lost the match!", it3->first->getClientID());
+                this->gtinfo_->sendAnnounceMessage("Your team has lost the match!", mapEntry.first->getClientID());
             }
         }   
Index: code/trunk/src/orxonox/gametypes/TeamGametype.h
===================================================================
--- code/trunk/src/orxonox/gametypes/TeamGametype.h	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/TeamGametype.h	(revision 11071)
@@ -46,14 +46,14 @@
             void setConfigValues();
 
-            virtual void playerEntered(PlayerInfo* player);
+            virtual void playerEntered(PlayerInfo* player) override;
             virtual void findAndSetTeam(PlayerInfo* player);
-            virtual bool playerLeft(PlayerInfo* player);
-            virtual void spawnDeadPlayersIfRequested(); //!< Prevents players to respawn.
+            virtual bool playerLeft(PlayerInfo* player) override;
+            virtual void spawnDeadPlayersIfRequested() override; //!< Prevents players to respawn.
 
-            virtual bool allowPawnHit(Pawn* victim, Pawn* originator = 0);
-            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator = 0);
-            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = 0);
+            virtual bool allowPawnHit(Pawn* victim, Pawn* originator = nullptr) override;
+            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator = nullptr) override;
+            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = nullptr) override;
 
-            virtual void playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn);
+            virtual void playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn) override;
 
 
@@ -67,5 +67,5 @@
 
         protected:
-            virtual SpawnPoint* getBestSpawnPoint(PlayerInfo* player) const;
+            virtual SpawnPoint* getBestSpawnPoint(PlayerInfo* player) const override;
             bool pawnsAreInTheSameTeam(Pawn* pawn1, Pawn* pawn2);
 
Index: code/trunk/src/orxonox/gametypes/UnderAttack.cc
===================================================================
--- code/trunk/src/orxonox/gametypes/UnderAttack.cc	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/UnderAttack.cc	(revision 11071)
@@ -48,5 +48,5 @@
         this->gameTime_ = 180;
         this->teams_ = 2;
-        this->destroyer_ = 0;
+        this->destroyer_ = nullptr;
         this->destroyer_.setCallback(createFunctor(&UnderAttack::killedDestroyer, this));
         this->gameEnded_ = false;
@@ -74,13 +74,13 @@
         this->gameEnded_ = true;
 
-        for (std::map<PlayerInfo*, int>::iterator it = this->teamnumbers_.begin(); it != this->teamnumbers_.end(); ++it)
-        {
-            if (it->first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
+        for (const auto& mapEntry : this->teamnumbers_)
+        {
+            if (mapEntry.first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
                 continue;
 
-            if (it->second == attacker_)
-                this->gtinfo_->sendAnnounceMessage("You have won the match!", it->first->getClientID());
+            if (mapEntry.second == attacker_)
+                this->gtinfo_->sendAnnounceMessage("You have won the match!", mapEntry.first->getClientID());
             else
-                this->gtinfo_->sendAnnounceMessage("You have lost the match!", it->first->getClientID());
+                this->gtinfo_->sendAnnounceMessage("You have lost the match!", mapEntry.first->getClientID());
         }
     }
@@ -155,13 +155,13 @@
                 ChatManager::message(message);
 
-                for (std::map<PlayerInfo*, int>::iterator it = this->teamnumbers_.begin(); it != this->teamnumbers_.end(); ++it)
-                {
-                    if (it->first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
+                for (const auto& mapEntry : this->teamnumbers_)
+                {
+                    if (mapEntry.first->getClientID() == NETWORK_PEER_ID_UNKNOWN)
                         continue;
 
-                    if (it->second == 1)
-                        this->gtinfo_->sendAnnounceMessage("You have won the match!", it->first->getClientID());
+                    if (mapEntry.second == 1)
+                        this->gtinfo_->sendAnnounceMessage("You have won the match!", mapEntry.first->getClientID());
                     else
-                        this->gtinfo_->sendAnnounceMessage("You have lost the match!", it->first->getClientID());
+                        this->gtinfo_->sendAnnounceMessage("You have lost the match!", mapEntry.first->getClientID());
                 }
             }
@@ -202,5 +202,5 @@
     void UnderAttack::setTransporterHealth()
     {
-        if (this->destroyer_ != 0)
+        if (this->destroyer_ != nullptr)
         {
             //Calculation: Each attacker deals about 3500 damage. A human attacker deals 1500 damage additionally.
Index: code/trunk/src/orxonox/gametypes/UnderAttack.h
===================================================================
--- code/trunk/src/orxonox/gametypes/UnderAttack.h	(revision 11052)
+++ code/trunk/src/orxonox/gametypes/UnderAttack.h	(revision 11071)
@@ -43,13 +43,13 @@
 
             void setConfigValues();
-            void tick (float dt);
+            virtual void tick (float dt) override;
             void addDestroyer(Destroyer* destroyer);
             inline Destroyer* getDestroyer() const
                 { return this->destroyer_; }
 
-            virtual bool allowPawnHit(Pawn* victim, Pawn* originator = 0);
-            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator = 0);
-            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = 0);
-            virtual void playerEntered(PlayerInfo* player);
+            virtual bool allowPawnHit(Pawn* victim, Pawn* originator = nullptr) override;
+            virtual bool allowPawnDamage(Pawn* victim, Pawn* originator = nullptr) override;
+            virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = nullptr) override;
+            virtual void playerEntered(PlayerInfo* player) override;
 
         protected:
Index: code/trunk/src/orxonox/graphics/AnimatedModel.h
===================================================================
--- code/trunk/src/orxonox/graphics/AnimatedModel.h	(revision 11052)
+++ code/trunk/src/orxonox/graphics/AnimatedModel.h	(revision 11071)
@@ -44,5 +44,5 @@
             virtual ~AnimatedModel();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
             void registerVariables();
 
@@ -51,5 +51,5 @@
             virtual void setAnimEnabled(bool enabled);
             virtual void setAnimLoop(bool loop);
-            virtual void tick(float dt);
+            virtual void tick(float dt) override;
             virtual void changedMesh();
 
Index: code/trunk/src/orxonox/graphics/Backlight.cc
===================================================================
--- code/trunk/src/orxonox/graphics/Backlight.cc	(revision 11052)
+++ code/trunk/src/orxonox/graphics/Backlight.cc	(revision 11071)
@@ -51,6 +51,6 @@
         RegisterObject(Backlight);
 
-        this->ribbonTrail_ = 0;
-        this->ribbonTrailNode_ = 0;
+        this->ribbonTrail_ = nullptr;
+        this->ribbonTrailNode_ = nullptr;
 
         this->width_ = 0;
Index: code/trunk/src/orxonox/graphics/Backlight.h
===================================================================
--- code/trunk/src/orxonox/graphics/Backlight.h	(revision 11052)
+++ code/trunk/src/orxonox/graphics/Backlight.h	(revision 11071)
@@ -44,8 +44,8 @@
             virtual ~Backlight();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            virtual void tick(float dt);
-            virtual void changedVisibility();
+            virtual void tick(float dt) override;
+            virtual void changedVisibility() override;
 
             inline void setWidth(float width)
@@ -74,15 +74,15 @@
                 { return this->trailmaterial_; }
 
-            virtual void changedScale();
+            virtual void changedScale() override;
 
         protected:
-            virtual void changedTimeFactor(float factor_new, float factor_old);
+            virtual void changedTimeFactor(float factor_new, float factor_old) override;
 
         private:
             void registerVariables();
-            virtual void startturnonoff();
-            virtual void stopturnonoff();
-            virtual void poststopturnonoff();
-            virtual void changedColour();
+            virtual void startturnonoff() override;
+            virtual void stopturnonoff() override;
+            virtual void poststopturnonoff() override;
+            virtual void changedColour() override;
             void update_width();
             void update_lifetime();
Index: code/trunk/src/orxonox/graphics/Billboard.cc
===================================================================
--- code/trunk/src/orxonox/graphics/Billboard.cc	(revision 11052)
+++ code/trunk/src/orxonox/graphics/Billboard.cc	(revision 11071)
@@ -139,5 +139,5 @@
     {
         Ogre::BillboardSet* bSet = this->billboard_.getBillboardSet();
-        if( bSet != NULL )
+        if( bSet != nullptr )
         {
             bSet->setBillboardType(bbt);
@@ -148,5 +148,5 @@
     {
         Ogre::BillboardSet* bSet = this->billboard_.getBillboardSet();
-        if( bSet != NULL )
+        if( bSet != nullptr )
         {
             bSet->setCommonDirection( vec );
@@ -157,5 +157,5 @@
     {
         Ogre::BillboardSet* bSet = this->billboard_.getBillboardSet();
-        if( bSet != NULL )
+        if( bSet != nullptr )
         {
             bSet->setCommonUpVector( vec );
@@ -166,5 +166,5 @@
     {
         Ogre::BillboardSet* bSet = this->billboard_.getBillboardSet();
-        if( bSet != NULL )
+        if( bSet != nullptr )
         {
             bSet->setDefaultDimensions(width, height);
Index: code/trunk/src/orxonox/graphics/Billboard.h
===================================================================
--- code/trunk/src/orxonox/graphics/Billboard.h	(revision 11052)
+++ code/trunk/src/orxonox/graphics/Billboard.h	(revision 11071)
@@ -47,7 +47,7 @@
             virtual ~Billboard();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            virtual void changedVisibility();
+            virtual void changedVisibility() override;
 
             inline const BillboardSet& getBillboardSet() const
@@ -71,5 +71,5 @@
 
 
-            virtual void setTeamColour(const ColourValue& colour)
+            virtual void setTeamColour(const ColourValue& colour) override
                 { this->setColour(colour); }
                 
Index: code/trunk/src/orxonox/graphics/BlinkingBillboard.h
===================================================================
--- code/trunk/src/orxonox/graphics/BlinkingBillboard.h	(revision 11052)
+++ code/trunk/src/orxonox/graphics/BlinkingBillboard.h	(revision 11071)
@@ -44,7 +44,7 @@
             virtual ~BlinkingBillboard();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            virtual void tick(float dt);
+            virtual void tick(float dt) override;
 
             inline void setAmplitude(float amplitude)
Index: code/trunk/src/orxonox/graphics/Camera.h
===================================================================
--- code/trunk/src/orxonox/graphics/Camera.h	(revision 11052)
+++ code/trunk/src/orxonox/graphics/Camera.h	(revision 11071)
@@ -50,5 +50,5 @@
 
             void setConfigValues();
-            virtual void tick(float dt);
+            virtual void tick(float dt) override;
 
             void requestFocus();
@@ -72,5 +72,5 @@
             void configvaluecallback_changedNearClipDistance();
 
-            void windowResized(unsigned int newWidth, unsigned int newHeight);
+            virtual void windowResized(unsigned int newWidth, unsigned int newHeight) override;
 
             Ogre::Camera*    camera_;
Index: code/trunk/src/orxonox/graphics/FadingBillboard.h
===================================================================
--- code/trunk/src/orxonox/graphics/FadingBillboard.h	(revision 11052)
+++ code/trunk/src/orxonox/graphics/FadingBillboard.h	(revision 11071)
@@ -45,9 +45,9 @@
             virtual ~FadingBillboard();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            virtual void tick(float dt);
-            virtual void changedActivity();
-            virtual void changedVisibility();
+            virtual void tick(float dt) override;
+            virtual void changedActivity() override;
+            virtual void changedVisibility() override;
 
             inline void setTurnOnTime(float turnontime)
@@ -69,5 +69,5 @@
             virtual void stopturnonoff();
             virtual void poststopturnonoff();
-            virtual void changedColour();
+            virtual void changedColour() override;
 
             float turnontime_;
Index: code/trunk/src/orxonox/graphics/GlobalShader.h
===================================================================
--- code/trunk/src/orxonox/graphics/GlobalShader.h	(revision 11052)
+++ code/trunk/src/orxonox/graphics/GlobalShader.h	(revision 11071)
@@ -44,7 +44,7 @@
             virtual ~GlobalShader();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            virtual void changedVisibility();
+            virtual void changedVisibility() override;
 
             inline const Shader& getShader() const
Index: code/trunk/src/orxonox/graphics/Light.cc
===================================================================
--- code/trunk/src/orxonox/graphics/Light.cc	(revision 11052)
+++ code/trunk/src/orxonox/graphics/Light.cc	(revision 11071)
@@ -31,5 +31,4 @@
 #include <OgreSceneManager.h>
 #include <OgreLight.h>
-#include <boost/static_assert.hpp>
 
 #include "util/StringUtils.h"
@@ -45,7 +44,7 @@
 
     // Be sure we don't do bad conversions
-    BOOST_STATIC_ASSERT((int)Ogre::Light::LT_POINT       == (int)Light::Point);
-    BOOST_STATIC_ASSERT((int)Ogre::Light::LT_DIRECTIONAL == (int)Light::Directional);
-    BOOST_STATIC_ASSERT((int)Ogre::Light::LT_SPOTLIGHT   == (int)Light::Spotlight);
+    static_assert((int)Ogre::Light::LT_POINT       == (int)Light::Type::Point,       "check enum");
+    static_assert((int)Ogre::Light::LT_DIRECTIONAL == (int)Light::Type::Directional, "check enum");
+    static_assert((int)Ogre::Light::LT_SPOTLIGHT   == (int)Light::Type::Spotlight,   "check enum");
 
     Light::Light(Context* context) : StaticEntity(context)
@@ -53,8 +52,8 @@
         RegisterObject(Light);
 
-        this->light_ = 0;
+        this->light_ = nullptr;
         this->diffuse_ = ColourValue::White;
         this->specular_ = ColourValue::White;
-        this->type_ = Light::Point;
+        this->type_ = Type::Point;
         this->attenuation_ = Vector4(100000, 1, 0, 0);
         this->spotlightRange_ = Vector3(40.0f, 30.0f, 1.0f);
@@ -106,5 +105,5 @@
     void Light::registerVariables()
     {
-        registerVariable((int&)this->type_,     VariableDirection::ToClient, new NetworkCallback<Light>(this, &Light::updateType));
+        registerVariable(this->type_,           VariableDirection::ToClient, new NetworkCallback<Light>(this, &Light::updateType));
         registerVariable(this->diffuse_,        VariableDirection::ToClient, new NetworkCallback<Light>(this, &Light::updateDiffuseColour));
         registerVariable(this->specular_,       VariableDirection::ToClient, new NetworkCallback<Light>(this, &Light::updateSpecularColour));
@@ -127,5 +126,5 @@
     void Light::updateAttenuation()
     {
-        if (this->light_ && this->type_ != Light::Directional)
+        if (this->light_ && this->type_ != Type::Directional)
             this->light_->setAttenuation(this->attenuation_.x, this->attenuation_.y, this->attenuation_.z, this->attenuation_.w);
     }
@@ -133,5 +132,5 @@
     void Light::updateSpotlightRange()
     {
-        if (this->light_ && this->type_ == Light::Spotlight)
+        if (this->light_ && this->type_ == Type::Spotlight)
             this->light_->setSpotlightRange(Degree(this->spotlightRange_.x), Degree(this->spotlightRange_.y), this->spotlightRange_.z);
     }
@@ -140,11 +139,11 @@
     {
         if (type == "point")
-            this->setType(Light::Point);
+            this->setType(Type::Point);
         else if (type == "directional")
-            this->setType(Light::Directional);
+            this->setType(Type::Directional);
         else if (type == "spotlight")
-            this->setType(Light::Spotlight);
+            this->setType(Type::Spotlight);
         else
-            this->setType(Light::Point);
+            this->setType(Type::Point);
     }
 
@@ -153,9 +152,9 @@
         switch (this->type_)
         {
-            case Light::Directional:
+            case Type::Directional:
                 return "directional";
-            case Light::Spotlight:
+            case Type::Spotlight:
                 return "spotlight";
-            case Light::Point:
+            case Type::Point:
             default:
                 return "point";
@@ -169,7 +168,7 @@
             this->light_->setType(static_cast<Ogre::Light::LightTypes>(this->type_));
 
-            if (this->type_ != Light::Directional)
+            if (this->type_ != Type::Directional)
                 this->updateAttenuation();
-            if (this->type_ == Light::Spotlight)
+            if (this->type_ == Type::Spotlight)
                 this->updateSpotlightRange();
         }
Index: code/trunk/src/orxonox/graphics/Light.h
===================================================================
--- code/trunk/src/orxonox/graphics/Light.h	(revision 11052)
+++ code/trunk/src/orxonox/graphics/Light.h	(revision 11071)
@@ -42,5 +42,5 @@
     {
         public:
-            enum LightTypes // Copy from the Ogre enum
+            enum class Type // Copy from the Ogre enum
             {
                 /// Point light sources give off light equally in all directions, so require only position not direction
@@ -56,14 +56,14 @@
             virtual ~Light();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            virtual void changedVisibility();
+            virtual void changedVisibility() override;
 
             inline Ogre::Light* getLight()
                 { return this->light_; }
 
-            inline void setType(Light::LightTypes type)
+            inline void setType(Light::Type type)
                 { this->type_ = type; this->updateType(); }
-            inline Light::LightTypes getType() const
+            inline Light::Type getType() const
                 { return this->type_; }
 
@@ -78,5 +78,5 @@
                 { return this->specular_; }
 
-            virtual void setTeamColour(const ColourValue& colour)
+            virtual void setTeamColour(const ColourValue& colour) override
                 { this->setDiffuseColour(colour); this->setSpecularColour(colour); }
 
@@ -144,5 +144,5 @@
 
             Ogre::Light* light_;
-            LightTypes type_;
+            Light::Type type_;
             ColourValue diffuse_;
             ColourValue specular_;
Index: code/trunk/src/orxonox/graphics/MeshLodInformation.h
===================================================================
--- code/trunk/src/orxonox/graphics/MeshLodInformation.h	(revision 11052)
+++ code/trunk/src/orxonox/graphics/MeshLodInformation.h	(revision 11071)
@@ -50,5 +50,5 @@
             float getReductionRate(){ return this->reductionRate_; }
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
         private:
Index: code/trunk/src/orxonox/graphics/Model.cc
===================================================================
--- code/trunk/src/orxonox/graphics/Model.cc	(revision 11052)
+++ code/trunk/src/orxonox/graphics/Model.cc	(revision 11071)
@@ -134,5 +134,5 @@
             Level* level = this->getLevel();
 
-            assert( level != 0 );
+            assert( level != nullptr );
 
             MeshLodInformation* lodInfo = level->getLodInfo(this->meshSrc_);
@@ -157,5 +157,5 @@
                 BaseObject* creatorPtr = this;
 
-                while(creatorPtr!=NULL&&orxonox_cast<WorldEntity*>(creatorPtr))
+                while(creatorPtr!=nullptr&&orxonox_cast<WorldEntity*>(creatorPtr))
                 {
                     scaleFactor *= getBiggestScale(((WorldEntity*) creatorPtr)->getScale3D());
Index: code/trunk/src/orxonox/graphics/Model.h
===================================================================
--- code/trunk/src/orxonox/graphics/Model.h	(revision 11052)
+++ code/trunk/src/orxonox/graphics/Model.h	(revision 11071)
@@ -46,7 +46,7 @@
             void setConfigValues();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            virtual void changedVisibility();
+            virtual void changedVisibility() override;
 
             inline const Mesh& getMesh() const
Index: code/trunk/src/orxonox/graphics/ParticleEmitter.cc
===================================================================
--- code/trunk/src/orxonox/graphics/ParticleEmitter.cc	(revision 11052)
+++ code/trunk/src/orxonox/graphics/ParticleEmitter.cc	(revision 11071)
@@ -52,5 +52,5 @@
             ThrowException(AbortLoading, "Can't create ParticleEmitter, no scene or no scene manager given.");
 
-        this->particles_ = 0;
+        this->particles_ = nullptr;
         this->LOD_ = LODParticle::Normal;
 
@@ -102,5 +102,5 @@
         {
             delete this->particles_;
-            this->particles_ = 0;
+            this->particles_ = nullptr;
         }
 
Index: code/trunk/src/orxonox/graphics/ParticleEmitter.h
===================================================================
--- code/trunk/src/orxonox/graphics/ParticleEmitter.h	(revision 11052)
+++ code/trunk/src/orxonox/graphics/ParticleEmitter.h	(revision 11071)
@@ -43,8 +43,8 @@
             virtual ~ParticleEmitter();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            virtual void changedVisibility();
-            virtual void changedActivity();
+            virtual void changedVisibility() override;
+            virtual void changedActivity() override;
 
             inline ParticleInterface* getParticleInterface() const
Index: code/trunk/src/orxonox/graphics/ParticleSpawner.h
===================================================================
--- code/trunk/src/orxonox/graphics/ParticleSpawner.h	(revision 11052)
+++ code/trunk/src/orxonox/graphics/ParticleSpawner.h	(revision 11071)
@@ -43,6 +43,6 @@
             virtual ~ParticleSpawner();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+            virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             inline void stop(bool bDestroy)
Index: code/trunk/src/orxonox/infos/Bot.h
===================================================================
--- code/trunk/src/orxonox/infos/Bot.h	(revision 11052)
+++ code/trunk/src/orxonox/infos/Bot.h	(revision 11071)
@@ -45,9 +45,9 @@
             void setConfigValues();
 
-            inline bool isInitialized() const
+            virtual inline bool isInitialized() const override
                 { return true; }
-            inline float getPing() const
+            virtual inline float getPing() const override
                 { return 0; }
-            inline float getPacketLossRatio() const
+            virtual inline float getPacketLossRatio() const override
                 { return 0; }
 
Index: code/trunk/src/orxonox/infos/GametypeInfo.cc
===================================================================
--- code/trunk/src/orxonox/infos/GametypeInfo.cc	(revision 11052)
+++ code/trunk/src/orxonox/infos/GametypeInfo.cc	(revision 11071)
@@ -291,5 +291,5 @@
         if(GameMode::isMaster())
         {
-            NotificationListener::sendNotification("Press [Fire] to respawn", GametypeInfo::NOTIFICATION_SENDER, notificationMessageType::info, notificationSendMode::network, player->getClientID());
+            NotificationListener::sendNotification("Press [Fire] to respawn", GametypeInfo::NOTIFICATION_SENDER, NotificationMessageType::info, NotificationSendMode::network, player->getClientID());
             // Remove the player from the list of players that have spawned, since it currently is not.
             this->spawnedPlayers_.erase(player);
@@ -346,8 +346,8 @@
                 // Display "Press [Fire] to start the match" if the game has not yet ended.
                 if(!this->hasEnded())
-                    NotificationListener::sendNotification("Press [Fire] to start the match", GametypeInfo::NOTIFICATION_SENDER, notificationMessageType::info, notificationSendMode::network, player->getClientID());
+                    NotificationListener::sendNotification("Press [Fire] to start the match", GametypeInfo::NOTIFICATION_SENDER, NotificationMessageType::info, NotificationSendMode::network, player->getClientID());
                 // Else display "Game has ended".
                 else
-                    NotificationListener::sendNotification("Game has ended", GametypeInfo::NOTIFICATION_SENDER, notificationMessageType::info, notificationSendMode::network, player->getClientID());
+                    NotificationListener::sendNotification("Game has ended", GametypeInfo::NOTIFICATION_SENDER, NotificationMessageType::info, NotificationSendMode::network, player->getClientID());
             }
         }
@@ -461,30 +461,30 @@
     void GametypeInfo::dispatchAnnounceMessage(const std::string& message) const
     {
-        for (ObjectList<GametypeMessageListener>::iterator it = ObjectList<GametypeMessageListener>::begin(); it != ObjectList<GametypeMessageListener>::end(); ++it)
-            it->announcemessage(this, message);
+        for (GametypeMessageListener* listener : ObjectList<GametypeMessageListener>())
+            listener->announcemessage(this, message);
     }
 
     void GametypeInfo::dispatchKillMessage(const std::string& message) const
     {
-        for (ObjectList<GametypeMessageListener>::iterator it = ObjectList<GametypeMessageListener>::begin(); it != ObjectList<GametypeMessageListener>::end(); ++it)
-            it->killmessage(this, message);
+        for (GametypeMessageListener* listener : ObjectList<GametypeMessageListener>())
+            listener->killmessage(this, message);
     }
 
     void GametypeInfo::dispatchDeathMessage(const std::string& message) const
     {
-        for (ObjectList<GametypeMessageListener>::iterator it = ObjectList<GametypeMessageListener>::begin(); it != ObjectList<GametypeMessageListener>::end(); ++it)
-            it->deathmessage(this, message);
+        for (GametypeMessageListener* listener : ObjectList<GametypeMessageListener>())
+            listener->deathmessage(this, message);
     }
 
      void GametypeInfo::dispatchStaticMessage(const std::string& message, const ColourValue& colour) const
     {
-        for (ObjectList<GametypeMessageListener>::iterator it = ObjectList<GametypeMessageListener>::begin(); it != ObjectList<GametypeMessageListener>::end(); ++it)
-            it->staticmessage(this, message, colour);
+        for (GametypeMessageListener* listener : ObjectList<GametypeMessageListener>())
+            listener->staticmessage(this, message, colour);
     }
 
      void GametypeInfo::dispatchFadingMessage(const std::string& message) const
     {
-        for (ObjectList<GametypeMessageListener>::iterator it = ObjectList<GametypeMessageListener>::begin(); it != ObjectList<GametypeMessageListener>::end(); ++it)
-            it->fadingmessage(this, message);
+        for (GametypeMessageListener* listener : ObjectList<GametypeMessageListener>())
+            listener->fadingmessage(this, message);
     }
 }
Index: code/trunk/src/orxonox/infos/HumanPlayer.cc
===================================================================
--- code/trunk/src/orxonox/infos/HumanPlayer.cc	(revision 11052)
+++ code/trunk/src/orxonox/infos/HumanPlayer.cc	(revision 11071)
@@ -53,6 +53,6 @@
         this->defaultController_ = Class(NewHumanController);
 
-        this->humanHud_ = 0;
-        this->gametypeHud_ = 0;
+        this->humanHud_ = nullptr;
+        this->gametypeHud_ = nullptr;
 
         this->setConfigValues();
@@ -178,5 +178,5 @@
         {
             this->humanHud_->destroy();
-            this->humanHud_ = 0;
+            this->humanHud_ = nullptr;
         }
 
@@ -194,5 +194,5 @@
         {
             this->gametypeHud_->destroy();
-            this->gametypeHud_ = 0;
+            this->gametypeHud_ = nullptr;
         }
 
Index: code/trunk/src/orxonox/infos/HumanPlayer.h
===================================================================
--- code/trunk/src/orxonox/infos/HumanPlayer.h	(revision 11052)
+++ code/trunk/src/orxonox/infos/HumanPlayer.h	(revision 11071)
@@ -45,11 +45,11 @@
             void setConfigValues();
 
-            bool isInitialized() const;
-            float getPing() const;
-            float getPacketLossRatio() const;
+            virtual bool isInitialized() const override;
+            virtual float getPing() const override;
+            virtual float getPacketLossRatio() const override;
 
             void setClientID(unsigned int clientID);
 
-            virtual void switchGametype(Gametype* gametype);
+            virtual void switchGametype(Gametype* gametype) override;
 
             inline void setHumanHUDTemplate(const std::string& name)
Index: code/trunk/src/orxonox/infos/PlayerInfo.cc
===================================================================
--- code/trunk/src/orxonox/infos/PlayerInfo.cc	(revision 11052)
+++ code/trunk/src/orxonox/infos/PlayerInfo.cc	(revision 11071)
@@ -51,9 +51,9 @@
         this->bReadyToSpawn_ = false;
         this->bSetUnreadyAfterSpawn_ = true;
-        this->controller_ = 0;
-        this->controllableEntity_ = 0;
+        this->controller_ = nullptr;
+        this->controllableEntity_ = nullptr;
         this->controllableEntityID_ = OBJECTID_UNKNOWN;
 
-        this->gtinfo_ = 0;
+        this->gtinfo_ = nullptr;
         this->gtinfoID_ = OBJECTID_UNKNOWN;
         this->updateGametypeInfo(this->getGametype());
@@ -72,5 +72,5 @@
             {
                 this->controller_->destroy();
-                this->controller_ = 0;
+                this->controller_ = nullptr;
             }
 
@@ -126,5 +126,5 @@
     void PlayerInfo::updateGametypeInfo(Gametype* gametype)
     {
-        this->gtinfo_ = 0;
+        this->gtinfo_ = nullptr;
         this->gtinfoID_ = OBJECTID_UNKNOWN;
 
@@ -141,5 +141,5 @@
         {
             this->controller_->destroy();
-            this->controller_ = 0;
+            this->controller_ = nullptr;
         }
         this->controller_ = this->defaultController_.fabricate(this->getContext());
@@ -181,5 +181,5 @@
 
         RadarViewable* radarviewable = orxonox_cast<RadarViewable*>(entity);
-        if (radarviewable != NULL)
+        if (radarviewable != nullptr)
             radarviewable->setRadarName(this->getName());
     }
@@ -218,10 +218,10 @@
             return;
 
-        this->controllableEntity_->setController(0);
-        this->controllableEntity_ = 0;
+        this->controllableEntity_->setController(nullptr);
+        this->controllableEntity_ = nullptr;
         this->controllableEntityID_ = OBJECTID_UNKNOWN;
 
         if (this->controller_)
-            this->controller_->setControllableEntity(0);
+            this->controller_->setControllableEntity(nullptr);
 
         if ( GameMode::isMaster() )
@@ -239,12 +239,12 @@
 
         Controller* tmp =this->controllableEntity_->getController();
-        if (tmp == NULL)
-        {
-            orxout(verbose) <<  "PlayerInfo: pauseControl, Controller is NULL " << endl;
+        if (tmp == nullptr)
+        {
+            orxout(verbose) <<  "PlayerInfo: pauseControl, Controller is nullptr " << endl;
             return;
         }
         tmp->setActive(false);
-        //this->controllableEntity_->getController()->setControllableEntity(NULL);
-        this->controllableEntity_->setController(0);
+        //this->controllableEntity_->getController()->setControllableEntity(nullptr);
+        this->controllableEntity_->setController(nullptr);
     }
 
@@ -253,5 +253,5 @@
         ControllableEntity* entity = this->controllableEntity_;
 
-        assert(this->controllableEntity_ != NULL);
+        assert(this->controllableEntity_ != nullptr);
         if( !entity || this->previousControllableEntity_.size() == 0 )
             return;
@@ -259,5 +259,5 @@
         entity->destroyHud(); // HACK-ish
 
-        this->controllableEntity_->setController(0);
+        this->controllableEntity_->setController(nullptr);
         if(this->isHumanPlayer()) // TODO: Multiplayer?
             this->controllableEntity_->destroyHud(); // HACK-ish
@@ -266,13 +266,13 @@
         do {
             this->controllableEntity_ = this->previousControllableEntity_.back();
-        } while(this->controllableEntity_ == NULL && this->previousControllableEntity_.size() > 0);
+        } while(this->controllableEntity_ == nullptr && this->previousControllableEntity_.size() > 0);
         this->controllableEntityID_ = this->controllableEntity_->getObjectID();
         this->previousControllableEntity_.pop_back();
 
-        if ( this->controllableEntity_ != NULL && this->controller_ != NULL)
+        if ( this->controllableEntity_ != nullptr && this->controller_ != nullptr)
             this->controller_->setControllableEntity(this->controllableEntity_);
 
          // HACK-ish
-        if(this->controllableEntity_ != NULL && this->isHumanPlayer())
+        if(this->controllableEntity_ != nullptr && this->isHumanPlayer())
             this->controllableEntity_->createHud();
 
Index: code/trunk/src/orxonox/infos/PlayerInfo.h
===================================================================
--- code/trunk/src/orxonox/infos/PlayerInfo.h	(revision 11052)
+++ code/trunk/src/orxonox/infos/PlayerInfo.h	(revision 11071)
@@ -44,5 +44,5 @@
             virtual ~PlayerInfo();
 
-            virtual void changedName();
+            virtual void changedName() override;
             virtual void switchGametype(Gametype* gametype);
 
@@ -99,5 +99,5 @@
             Controller* controller_;
             ControllableEntity* controllableEntity_;
-            std::vector< WeakPtr<ControllableEntity> > previousControllableEntity_; //!< List of the previous ControllableEntities if repeatedly startTemporary control was called. The ControllableEntity at the back is the most recent.
+            std::vector<WeakPtr<ControllableEntity>> previousControllableEntity_; //!< List of the previous ControllableEntities if repeatedly startTemporary control was called. The ControllableEntity at the back is the most recent.
             unsigned int controllableEntityID_;
 
Index: code/trunk/src/orxonox/interfaces/NotificationListener.cc
===================================================================
--- code/trunk/src/orxonox/interfaces/NotificationListener.cc	(revision 11052)
+++ code/trunk/src/orxonox/interfaces/NotificationListener.cc	(revision 11071)
@@ -74,20 +74,20 @@
         The type of the notification, can be either 'info' or 'important'.
     */
-    /*static*/ void NotificationListener::sendNetworkHelper(const std::string& message, const std::string& sender, notificationSendMode::Value sendMode, unsigned int clientId, bool isCommand, notificationMessageType::Value messageType)
+    /*static*/ void NotificationListener::sendNetworkHelper(const std::string& message, const std::string& sender, NotificationSendMode sendMode, unsigned int clientId, bool isCommand, NotificationMessageType messageType)
     {
         // If we're in standalone mode or we're already no the right client we create and send the notification/command.
-        if(GameMode::isStandalone() || sendMode == notificationSendMode::local || (sendMode ==  notificationSendMode::network && Host::getPlayerID() == clientId))
+        if(GameMode::isStandalone() || sendMode == NotificationSendMode::local || (sendMode ==  NotificationSendMode::network && Host::getPlayerID() == clientId))
         {
             sendHelper(message, sender, isCommand, messageType);
         }
         // If we're on the server (and the server is not the intended recipient of the notification/command) we send it over the network.
-        else if(GameMode::isServer() && sendMode == notificationSendMode::network && Host::getPlayerID() != clientId)
+        else if(GameMode::isServer() && sendMode == NotificationSendMode::network && Host::getPlayerID() != clientId)
         {
-            callStaticNetworkFunction(&NotificationListener::sendHelper, clientId, message, sender, isCommand, (unsigned int)messageType);
+            callStaticNetworkFunction(&NotificationListener::sendHelper, clientId, message, sender, isCommand, messageType);
         }
-        else if(GameMode::isServer() && sendMode == notificationSendMode::broadcast)
+        else if(GameMode::isServer() && sendMode == NotificationSendMode::broadcast)
         {
             // TODO: Works as intended?
-            callStaticNetworkFunction(&NotificationListener::sendHelper, NETWORK_PEER_ID_BROADCAST, message, sender, isCommand, (unsigned int)messageType);
+            callStaticNetworkFunction(&NotificationListener::sendHelper, NETWORK_PEER_ID_BROADCAST, message, sender, isCommand, messageType);
         }
     }
@@ -105,19 +105,19 @@
         The type of the notification.
     */
-    /*static*/ void NotificationListener::sendHelper(const std::string& message, const std::string& sender, bool isCommand, unsigned int messageType)
+    /*static*/ void NotificationListener::sendHelper(const std::string& message, const std::string& sender, bool isCommand, NotificationMessageType type)
     {
         // Iterate through all NotificationListeners and notify them by calling the method they overloaded.
-        for(ObjectList<NotificationListener>::iterator it = ObjectList<NotificationListener>::begin(); it != ObjectList<NotificationListener>::end(); ++it)
+        for(NotificationListener* listener : ObjectList<NotificationListener>())
         {
             // If the notification is a message.
             if(!isCommand)
-                it->registerNotification(message, sender, notificationMessageType::Value(messageType));
+                listener->registerNotification(message, sender, type);
 
             // If the notification is a command.
             if(isCommand)
             {
-                notificationCommand::Value command = str2Command(message);
-                if(command != notificationCommand::none)
-                    it->executeCommand(command, sender);
+                NotificationCommand command = str2Command(message);
+                if(command != NotificationCommand::none)
+                    listener->executeCommand(command, sender);
             }
         }
@@ -130,12 +130,12 @@
         The string to be converted.
     @return
-        Returns the corresponding enum, notificationCommand::none if the command doesn't exist.
+        Returns the corresponding enum, NotificationCommand::none if the command doesn't exist.
     */
-    /*static*/ notificationCommand::Value NotificationListener::str2Command(const std::string& string)
+    /*static*/ NotificationCommand NotificationListener::str2Command(const std::string& string)
     {
-        notificationCommand::Value command = notificationCommand::none;
+        NotificationCommand command = NotificationCommand::none;
 
         if(string == NotificationListener::COMMAND_CLEAR)
-            command = notificationCommand::clear;
+            command = NotificationCommand::clear;
 
         return command;
@@ -150,9 +150,9 @@
         Returns the corresponding string.
     */
-    /*static*/ const std::string& NotificationListener::command2Str(notificationCommand::Value command)
+    /*static*/ const std::string& NotificationListener::command2Str(NotificationCommand command)
     {
         switch(command)
         {
-            case notificationCommand::clear:
+            case NotificationCommand::clear:
                 return NotificationListener::COMMAND_CLEAR;
             default:
Index: code/trunk/src/orxonox/interfaces/NotificationListener.h
===================================================================
--- code/trunk/src/orxonox/interfaces/NotificationListener.h	(revision 11052)
+++ code/trunk/src/orxonox/interfaces/NotificationListener.h	(revision 11071)
@@ -49,28 +49,19 @@
 {
     // TODO: Document.
-    namespace notificationMessageType
-    {
-        enum Value {
-            info,
-            important
-        };
-    }
+    enum class NotificationMessageType {
+        info,
+        important
+    };
     
-    namespace notificationSendMode
-    {
-        enum Value {
-            local,
-            network,
-            broadcast
-        };
-    }
+    enum class NotificationSendMode {
+        local,
+        network,
+        broadcast
+    };
     
-    namespace notificationCommand
-    {
-        enum Value {
-            none,
-            clear
-        };
-    }
+    enum class NotificationCommand {
+        none,
+        clear
+    };
 
     // TODO: Update doc.
@@ -101,8 +92,8 @@
             @param sender The sender that sent the notification. Default is 'none'.
             @param messageType The type of the message, can be either 'info' or 'important'. Default is 'info'.
-            @param sendMode The mode in which the notification is sent, can be 'local' to send the notification to the client where this function is executed, 'network' if the notification is to be sent to the client with the specified clientID, or 'broadcast' if the notification should be sent to all hosts. Default is notificationSendMode::local.
+            @param sendMode The mode in which the notification is sent, can be 'local' to send the notification to the client where this function is executed, 'network' if the notification is to be sent to the client with the specified clientID, or 'broadcast' if the notification should be sent to all hosts. Default is NotificationSendMode::local.
             @param clientId The id of the client the notification should be sent to. Default is 0.
             */
-            static void sendNotification(const std::string& message, const std::string& sender = NotificationListener::NONE, notificationMessageType::Value messageType = notificationMessageType::info, notificationSendMode::Value sendMode = notificationSendMode::local, unsigned int clientId = 0)
+            static void sendNotification(const std::string& message, const std::string& sender = NotificationListener::NONE, NotificationMessageType messageType = NotificationMessageType::info, NotificationSendMode sendMode = NotificationSendMode::local, unsigned int clientId = 0)
                 { NotificationListener::sendNetworkHelper(message, sender, sendMode, clientId, false, messageType); }
             /**
@@ -110,11 +101,11 @@
             @param command The command that should be sent (and later executed).
             @param sender The sender that sent the notification. Default is 'none'.
-            @param sendMode The mode in which the command is sent, can be 'local' to send the command to the client where this function is executed, 'network' if the command is to be sent to the client with the specified clientID, or 'broadcast' if the command should be sent to all hosts. Default is notificationSendMode::local.
+            @param sendMode The mode in which the command is sent, can be 'local' to send the command to the client where this function is executed, 'network' if the command is to be sent to the client with the specified clientID, or 'broadcast' if the command should be sent to all hosts. Default is NotificationSendMode::local.
             @param clientId The id of the client the command should be sent to. Default is 0.
             */
-            static void sendCommand(const std::string& command, const std::string& sender = NotificationListener::NONE, notificationSendMode::Value sendMode = notificationSendMode::local, unsigned int clientId = 0)
+            static void sendCommand(const std::string& command, const std::string& sender = NotificationListener::NONE, NotificationSendMode sendMode = NotificationSendMode::local, unsigned int clientId = 0)
                 { NotificationListener::sendNetworkHelper(command, sender, sendMode, clientId, true); }
 
-            static void sendHelper(const std::string& message, const std::string& sender, bool isCommand = false, unsigned int messageMode = 0); // Helper method to register a notification/execute a command with all NotificationListeners after it has been sent over the network.
+            static void sendHelper(const std::string& message, const std::string& sender, bool isCommand, NotificationMessageType type); // Helper method to register a notification/execute a command with all NotificationListeners after it has been sent over the network.
 
             //TODO: Make protected?
@@ -128,5 +119,5 @@
             @return Returns true if the notification was successfully registered, false if not.
             */
-            virtual bool registerNotification(const std::string& message, const std::string& sender, notificationMessageType::Value type)
+            virtual bool registerNotification(const std::string& message, const std::string& sender, NotificationMessageType type)
                 { return false; }
             /**
@@ -137,5 +128,5 @@
             @return Returns true if the command was successfully executed, false if not.
             */
-            virtual bool executeCommand(notificationCommand::Value command, const std::string& sender) { return false; }
+            virtual bool executeCommand(NotificationCommand command, const std::string& sender) { return false; }
 
         public:
@@ -149,8 +140,8 @@
             
         protected:
-            static void sendNetworkHelper(const std::string& message, const std::string& sender, notificationSendMode::Value sendMode, unsigned int clientId, bool isCommand = false, notificationMessageType::Value messageType = notificationMessageType::info); // Helper method to send both notifications and commands over the network.
+            static void sendNetworkHelper(const std::string& message, const std::string& sender, NotificationSendMode sendMode, unsigned int clientId, bool isCommand = false, NotificationMessageType messageType = NotificationMessageType::info); // Helper method to send both notifications and commands over the network.
 
-            static notificationCommand::Value str2Command(const std::string& string); // Helper method. Converts a string into the enum for a command.
-            static const std::string& command2Str(notificationCommand::Value command); // Helper method. Converts a command enum into its corresponding string.
+            static NotificationCommand str2Command(const std::string& string); // Helper method. Converts a string into the enum for a command.
+            static const std::string& command2Str(NotificationCommand command); // Helper method. Converts a command enum into its corresponding string.
     };
 }
Index: code/trunk/src/orxonox/interfaces/PickupCarrier.cc
===================================================================
--- code/trunk/src/orxonox/interfaces/PickupCarrier.cc	(revision 11052)
+++ code/trunk/src/orxonox/interfaces/PickupCarrier.cc	(revision 11071)
@@ -101,7 +101,7 @@
         // Go recursively through all children to check whether they are a target.
         std::vector<PickupCarrier*>* children = this->getCarrierChildren();
-        for(std::vector<PickupCarrier*>::const_iterator it = children->begin(); it != children->end(); it++)
+        for(PickupCarrier* carrier : *children)
         {
-            if((*it)->isTarget(pickup))
+            if(carrier->isTarget(pickup))
             {
                 isTarget = true;
@@ -127,17 +127,17 @@
     {
         if(!this->isTarget(pickup))
-            return NULL;
+            return nullptr;
 
         if(pickup->isTarget(this)) // If the PickupCarrier itself is a target.
             return this;
 
-        PickupCarrier* target = NULL;
+        PickupCarrier* target = nullptr;
         // Go recursively through all children to check whether they are the target.
         std::vector<PickupCarrier*>* children = this->getCarrierChildren();
-        for(std::vector<PickupCarrier*>::iterator it = children->begin(); it != children->end(); it++)
+        for(PickupCarrier* child : *children)
         {
-            if(pickup->isTarget(*it))
+            if(pickup->isTarget(child))
             {
-                target = *it;
+                target = child;
                 break;
             }
Index: code/trunk/src/orxonox/interfaces/PickupCarrier.h
===================================================================
--- code/trunk/src/orxonox/interfaces/PickupCarrier.h	(revision 11052)
+++ code/trunk/src/orxonox/interfaces/PickupCarrier.h	(revision 11071)
@@ -59,5 +59,5 @@
         But this structure has to be established first.
         - <b>getCarrierChildren()</b> To this end a PickupCarrier needs to implement getCarrierChildren() which returns a list of its direct PickupCarrier children. If you need an example, have a look at @ref orxonox::Pawn "Pawn" and @ref orxonox::Engine "Engine".
-        - <b>getCarrierParent()</b> This is the method in the other direction. It returns the parent of this PickupCarrier, or NULL if the PickupCarrier is a root node in this hierarchy.
+        - <b>getCarrierParent()</b> This is the method in the other direction. It returns the parent of this PickupCarrier, or nullptr if the PickupCarrier is a root node in this hierarchy.
 
     @author
@@ -77,5 +77,5 @@
             PickupCarrier(); //!< Constructor.
             virtual ~PickupCarrier(); //!< Destructor.
-            void preDestroy(void); //!< Is called before the PickupCarrier is effectively destroyed.
+            virtual void preDestroy(void) override; //!< Is called before the PickupCarrier is effectively destroyed.
 
             bool isTarget(const Pickupable* pickup) const; //!< Can be used to check whether the PickupCarrier or a child of his is a target ot the input Pickupable.
Index: code/trunk/src/orxonox/interfaces/PickupListener.cc
===================================================================
--- code/trunk/src/orxonox/interfaces/PickupListener.cc	(revision 11052)
+++ code/trunk/src/orxonox/interfaces/PickupListener.cc	(revision 11071)
@@ -74,6 +74,6 @@
 
         // Iterate through all PickupListeners and notify them by calling the method they overloaded.
-        for(ObjectList<PickupListener>::iterator it = ObjectList<PickupListener>::begin(); it != ObjectList<PickupListener>::end(); ++it)
-            it->pickupChangedUsed(pickup, used);
+        for(PickupListener* listener : ObjectList<PickupListener>())
+            listener->pickupChangedUsed(pickup, used);
     }
 
@@ -92,6 +92,6 @@
 
         // Iterate through all PickupListeners and notify them by calling the method they overloaded.
-        for(ObjectList<PickupListener>::iterator it = ObjectList<PickupListener>::begin(); it != ObjectList<PickupListener>::end(); ++it)
-            it->pickupChangedPickedUp(pickup, pickedUp);
+        for(PickupListener* listener : ObjectList<PickupListener>())
+            listener->pickupChangedPickedUp(pickup, pickedUp);
     }
 
Index: code/trunk/src/orxonox/interfaces/Pickupable.cc
===================================================================
--- code/trunk/src/orxonox/interfaces/Pickupable.cc	(revision 11052)
+++ code/trunk/src/orxonox/interfaces/Pickupable.cc	(revision 11071)
@@ -56,5 +56,5 @@
         RegisterObject(Pickupable);
 
-        this->carrier_ = NULL;
+        this->carrier_ = nullptr;
 
         this->beingDestroyed_ = false;
@@ -143,5 +143,5 @@
     bool Pickupable::isTarget(const PickupCarrier* carrier) const
     {
-        if(carrier == NULL)
+        if(carrier == nullptr)
             return false;
 
@@ -160,7 +160,7 @@
     {
         // Iterate through all targets of this Pickupable.
-        for(std::list<Identifier*>::const_iterator it = this->targets_.begin(); it != this->targets_.end(); it++)
+        for(Identifier* target : this->targets_)
         {
-            if(identifier->isA(*it))
+            if(identifier->isA(target))
                 return true;
         }
@@ -210,5 +210,5 @@
     bool Pickupable::pickup(PickupCarrier* carrier)
     {
-        if(carrier == NULL || this->isPickedUp()) // If carrier is NULL or the Pickupable is already picked up.
+        if(carrier == nullptr || this->isPickedUp()) // If carrier is nullptr or the Pickupable is already picked up.
             return false;
 
@@ -237,5 +237,5 @@
             return false;
 
-        assert(this->getCarrier()); // The Carrier cannot be NULL at this point.
+        assert(this->getCarrier()); // The Carrier cannot be nullptr at this point.
         if(!this->getCarrier()->removePickup(this)) //TODO Shouldn't this be a little later?
             orxout(internal_warning, context::pickups) << "Pickupable (&" << this << ", " << this->getIdentifier()->getName() << ") is being dropped, but it was not present in the PickupCarriers list of pickups." << endl;
@@ -249,5 +249,5 @@
             created = this->createSpawner();
 
-        this->setCarrier(NULL);
+        this->setCarrier(nullptr);
 
         if(!created && createSpawner) // If a PickupSpawner should have been created but wasn't.
@@ -301,5 +301,5 @@
         orxout(verbose, context::pickups) << "Pickupable (&" << this << ") changed Carrier (& " << carrier << ")." << endl;
 
-        if(carrier != NULL && tell)
+        if(carrier != nullptr && tell)
         {
             if(!carrier->addPickup(this))
Index: code/trunk/src/orxonox/interfaces/Pickupable.h
===================================================================
--- code/trunk/src/orxonox/interfaces/Pickupable.h	(revision 11052)
+++ code/trunk/src/orxonox/interfaces/Pickupable.h	(revision 11071)
@@ -144,5 +144,5 @@
 
         protected:
-            virtual void preDestroy(void); //!< A method that is called by Destroyable::destroy() before the object is actually destroyed.
+            virtual void preDestroy(void) override; //!< A method that is called by Destroyable::destroy() before the object is actually destroyed.
             virtual void destroyPickup(void); //!< Destroys a Pickupable.
             virtual void carrierDestroyed(void); //!< Is called by the PickupCarrier when it is being destroyed.
@@ -182,5 +182,5 @@
         // For implementing the Rewardable interface:
         public:
-            virtual bool reward(PlayerInfo* player); //!< Method to transcribe a Pickupable as a Rewardable to the player.
+            virtual bool reward(PlayerInfo* player) override; //!< Method to transcribe a Pickupable as a Rewardable to the player.
 
     };
Index: code/trunk/src/orxonox/interfaces/RadarViewable.cc
===================================================================
--- code/trunk/src/orxonox/interfaces/RadarViewable.cc	(revision 11052)
+++ code/trunk/src/orxonox/interfaces/RadarViewable.cc	(revision 11071)
@@ -49,5 +49,5 @@
         , wePtr_(wePtr)
         , radarObjectCamouflage_(0.0f)
-        , radarObjectShape_(Dot)
+        , radarObjectShape_(Shape::Dot)
         , radarObjectDescription_("staticObject")
         , scale_(1.0f)
Index: code/trunk/src/orxonox/interfaces/RadarViewable.h
===================================================================
--- code/trunk/src/orxonox/interfaces/RadarViewable.h	(revision 11052)
+++ code/trunk/src/orxonox/interfaces/RadarViewable.h	(revision 11071)
@@ -49,5 +49,5 @@
     {
     public:
-        enum Shape
+        enum class Shape
         {
             Square,
@@ -66,5 +66,5 @@
                 if (name == "HIDDEN")
                 {
-                    this->bVisibility_ = 0;
+                    this->bVisibility_ = false;
                     this->settingsChanged();
                 }
Index: code/trunk/src/orxonox/items/Engine.cc
===================================================================
--- code/trunk/src/orxonox/items/Engine.cc	(revision 11052)
+++ code/trunk/src/orxonox/items/Engine.cc	(revision 11071)
@@ -50,5 +50,5 @@
         RegisterObject(Engine);
 
-        this->ship_ = 0;
+        this->ship_ = nullptr;
         this->shipID_ = OBJECTID_UNKNOWN;
         this->relativePosition_ = Vector3::ZERO;
@@ -136,5 +136,5 @@
     void Engine::networkcallback_shipID()
     {
-        this->ship_ = 0;
+        this->ship_ = nullptr;
 
         if (this->shipID_ != OBJECTID_UNKNOWN)
@@ -155,5 +155,5 @@
     void Engine::run(float dt)
     {
-        if (this->ship_ == NULL)
+        if (this->ship_ == nullptr)
         {
             if (this->shipID_ != 0)
@@ -161,5 +161,5 @@
                 this->networkcallback_shipID();
 
-                if (this->ship_ == NULL)
+                if (this->ship_ == nullptr)
                     return;
             }
Index: code/trunk/src/orxonox/items/Engine.h
===================================================================
--- code/trunk/src/orxonox/items/Engine.h	(revision 11052)
+++ code/trunk/src/orxonox/items/Engine.h	(revision 11071)
@@ -59,5 +59,5 @@
             virtual ~Engine();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
             void setConfigValues();
 
@@ -67,5 +67,5 @@
             /**
             @brief Get the SpaceShip this Engine is mounted on.
-            @return Returns a pointer to the SpaceShip. NULL if it isn't mounted on any ship.
+            @return Returns a pointer to the SpaceShip. nullptr if it isn't mounted on any ship.
             */
             inline SpaceShip* getShip() const
Index: code/trunk/src/orxonox/items/MultiStateEngine.cc
===================================================================
--- code/trunk/src/orxonox/items/MultiStateEngine.cc	(revision 11052)
+++ code/trunk/src/orxonox/items/MultiStateEngine.cc	(revision 11071)
@@ -67,7 +67,7 @@
         else
         {
-            this->defEngineSndBoost_ = 0;
-            this->defEngineSndNormal_ = 0;
-            this->lua_ = 0;
+            this->defEngineSndBoost_ = nullptr;
+            this->defEngineSndNormal_ = nullptr;
+            this->lua_ = nullptr;
         }
         this->state_ = 0;
@@ -85,7 +85,7 @@
             {
                 // We have no ship, so the effects are not attached and won't be destroyed automatically
-                for (std::vector<EffectContainer*>::const_iterator it = this->effectContainers_.begin(); it != this->effectContainers_.end(); ++it)
-                    for (std::vector<WorldEntity*>::const_iterator it2 = (*it)->getEffectsBegin(); it2 != (*it)->getEffectsBegin(); ++it2)
-                        (*it2)->destroy();
+                for (EffectContainer* container : this->effectContainers_)
+                    for (WorldEntity* effect : container->getEffects())
+                        effect->destroy();
                 if (this->defEngineSndNormal_)
                     this->defEngineSndNormal_->destroy();
@@ -124,14 +124,14 @@
                 this->state_ = 0;
                 if (this->getShip()->isBoosting() && forward)
-                    this->state_ = Boost;
+                    this->state_ = EngineState::Boost;
                 else if (forward && !this->state_) // this->state_ == Boost
-                    this->state_ = Normal;
+                    this->state_ = EngineState::Normal;
                 else if (direction.z > 0.0 && velocity.z < 0.0)
-                    this->state_ = Brake;
+                    this->state_ = EngineState::Brake;
                 else
-                    this->state_ = Idle;
-
-                if (this->state_ == Idle && this->getSpeedAdd() > 0)
-                    this->state_ = Normal;
+                    this->state_ = EngineState::Idle;
+
+                if (this->state_ == EngineState::Idle && this->getSpeedAdd() > 0)
+                    this->state_ = EngineState::Normal;
             }
 
@@ -141,33 +141,33 @@
 
                 float pitch = velocity.length();
-                if (this->state_ & Normal)
+                if (this->state_ & EngineState::Normal)
                     defEngineSndNormal_->setPitch(clamp(pitch/MAX_VELOCITY_NORMAL + 1, 0.5f, 2.0f));
-                if (this->state_ & Boost)
+                if (this->state_ & EngineState::Boost)
                     defEngineSndBoost_->setPitch(clamp(pitch/MAX_VELOCITY_BOOST + 1, 0.5f, 2.0f));
 
-                if (changes & Idle)
-                {
-                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & Idle);
+                if (changes & EngineState::Idle)
+                {
+                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & EngineState::Idle);
                     lua_setglobal(this->lua_->getInternalLuaState(), "idle");
                 }
-                if (changes & Normal)
-                {
-                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & Normal);
+                if (changes & EngineState::Normal)
+                {
+                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & EngineState::Normal);
                     lua_setglobal(this->lua_->getInternalLuaState(), "normal");
-                    if (this->state_ & Normal)
+                    if (this->state_ & EngineState::Normal)
                         defEngineSndNormal_->play();
                     else
                         defEngineSndNormal_->stop();
                 }
-                if (changes & Brake)
-                {
-                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & Brake);
+                if (changes & EngineState::Brake)
+                {
+                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & EngineState::Brake);
                     lua_setglobal(this->lua_->getInternalLuaState(), "brake");
                 }
-                if (changes & Boost)
-                {
-                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & Boost);
+                if (changes & EngineState::Boost)
+                {
+                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & EngineState::Boost);
                     lua_setglobal(this->lua_->getInternalLuaState(), "boost");
-                    if (this->state_ & Boost)
+                    if (this->state_ & EngineState::Boost)
                         defEngineSndBoost_->play();
                     else
@@ -178,6 +178,6 @@
 
                 // Update all effect conditions
-                for (std::vector<EffectContainer*>::const_iterator it = this->effectContainers_.begin(); it != this->effectContainers_.end(); ++it)
-                    (*it)->updateCondition();
+                for (EffectContainer* container : this->effectContainers_)
+                    container->updateCondition();
             }
         }
@@ -198,19 +198,19 @@
             this->getShip()->attach(defEngineSndBoost_);
 
-        for (std::vector<EffectContainer*>::const_iterator it = this->effectContainers_.begin(); it != this->effectContainers_.end(); ++it)
-            for (std::vector<WorldEntity*>::const_iterator it2 = (*it)->getEffectsBegin(); it2 != (*it)->getEffectsEnd(); ++it2)
-                this->getShip()->attach(*it2);
-    }
-
-    void MultiStateEngine::addEffectContainer(EffectContainer* effect)
-    {
-        if (effect == NULL)
+        for (EffectContainer* container : this->effectContainers_)
+            for (WorldEntity* effect : container->getEffects())
+                this->getShip()->attach(effect);
+    }
+
+    void MultiStateEngine::addEffectContainer(EffectContainer* container)
+    {
+        if (container == nullptr)
             return;
-        effect->setLuaState(this->lua_, 'f' + multi_cast<std::string>(this->effectContainers_.size()));
-        this->effectContainers_.push_back(effect);
+        container->setLuaState(this->lua_, 'f' + multi_cast<std::string>(this->effectContainers_.size()));
+        this->effectContainers_.push_back(container);
         if (this->getShip())
         {
-            for (std::vector<WorldEntity*>::const_iterator it = effect->getEffectsBegin(); it != effect->getEffectsBegin(); ++it)
-                this->getShip()->attach(*it);
+            for (WorldEntity* effect : container->getEffects())
+                this->getShip()->attach(effect);
         }
     }
@@ -219,10 +219,11 @@
     {
         unsigned int i = 0;
-        for (std::vector<EffectContainer*>::const_iterator it = this->effectContainers_.begin(); it != this->effectContainers_.end(); ++it)
+        for (EffectContainer* effectContainer : this->effectContainers_)
         {
             if (i == index)
-                return (*it);
-        }
-        return NULL;
+                return effectContainer;
+            i++;
+        }
+        return nullptr;
     }
 
Index: code/trunk/src/orxonox/items/MultiStateEngine.h
===================================================================
--- code/trunk/src/orxonox/items/MultiStateEngine.h	(revision 11052)
+++ code/trunk/src/orxonox/items/MultiStateEngine.h	(revision 11071)
@@ -41,10 +41,10 @@
     {
         public:
-            enum EngineState
+            struct EngineState
             {
-                Idle    = 1,
-                Normal  = 2,
-                Brake   = 4,
-                Boost   = 8
+                static constexpr int Idle    = 1;
+                static constexpr int Normal  = 2;
+                static constexpr int Brake   = 4;
+                static constexpr int Boost   = 8;
             };
 
@@ -52,9 +52,9 @@
             virtual ~MultiStateEngine();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            virtual void run(float dt);
+            virtual void run(float dt) override;
 
-            virtual void addToSpaceShip(SpaceShip* ship);
+            virtual void addToSpaceShip(SpaceShip* ship) override;
 
             void addEffectContainer(EffectContainer* effect);
Index: code/trunk/src/orxonox/items/PartDestructionEvent.cc
===================================================================
--- code/trunk/src/orxonox/items/PartDestructionEvent.cc	(revision 11052)
+++ code/trunk/src/orxonox/items/PartDestructionEvent.cc	(revision 11071)
@@ -98,14 +98,14 @@
         {
             switch (this->targetParam_) {
-            case shieldhealth:
+            case TargetParam::shieldhealth:
                 this->parent_->getParent()->setShieldHealth(operate(this->parent_->getParent()->getShieldHealth()));
                 break;
-            case boostpower:
+            case TargetParam::boostpower:
                 this->parent_->getParent()->setInitialBoostPower(operate(this->parent_->getParent()->getInitialBoostPower()));
                 break;
-            case boostpowerrate:
+            case TargetParam::boostpowerrate:
                 this->parent_->getParent()->setBoostPowerRate(operate(this->parent_->getParent()->getBoostPowerRate()));
                 break;
-            case rotationthrust:
+            case TargetParam::rotationthrust:
                 this->parent_->getParent()->setRotationThrust(operate(this->parent_->getParent()->getRotationThrust()));
                 break;
@@ -120,14 +120,14 @@
         {
             switch (this->targetParam_) {
-            case null:
+            case TargetParam::null:
                 this->parent_->getParent()->getEngineByName(targetName_)->destroy();
                 break;
-            case boostfactor:
+            case TargetParam::boostfactor:
                 this->parent_->getParent()->getEngineByName(targetName_)->setBoostFactor(operate(this->parent_->getParent()->getEngineByName(targetName_)->getBoostFactor()));
                 break;
-            case speedfront:
+            case TargetParam::speedfront:
                 this->parent_->getParent()->getEngineByName(targetName_)->setMaxSpeedFront(operate(this->parent_->getParent()->getEngineByName(targetName_)->getMaxSpeedFront()));
                 break;
-            case accelerationfront:
+            case TargetParam::accelerationfront:
                 this->parent_->getParent()->getEngineByName(targetName_)->setAccelerationFront(operate(this->parent_->getParent()->getEngineByName(targetName_)->getAccelerationFront()));
                 break;
@@ -142,5 +142,5 @@
         {
             switch (this->targetParam_) {
-            case null:
+            case TargetParam::null:
                 if (!this->parent_->getParent()->getShipPartByName(targetName_))
                     return;
@@ -214,20 +214,20 @@
             if (param == "NULL")
             {
-                this->targetParam_ = null;
+                this->targetParam_ = TargetParam::null;
                 return;
             }
             if (param == "boostfactor")
             {
-                this->targetParam_ = boostfactor;
+                this->targetParam_ = TargetParam::boostfactor;
                 return;
             }
             if (param == "speedfront")
             {
-                this->targetParam_ = speedfront;
+                this->targetParam_ = TargetParam::speedfront;
                 return;
             }
             if (param == "accelerationfront")
             {
-                this->targetParam_ = accelerationfront;
+                this->targetParam_ = TargetParam::accelerationfront;
                 return;
             }
@@ -244,20 +244,20 @@
             if (param == "shieldhealth")
             {
-                this->targetParam_ = shieldhealth;
+                this->targetParam_ = TargetParam::shieldhealth;
                 return;
             }
             if (param == "boostpower")
             {
-                this->targetParam_ = boostpower;
+                this->targetParam_ = TargetParam::boostpower;
                 return;
             }
             if (param == "boostpowerrate")
             {
-                this->targetParam_ = boostpowerrate;
+                this->targetParam_ = TargetParam::boostpowerrate;
                 return;
             }
             if (param == "rotationthrust")
             {
-                this->targetParam_ = rotationthrust;
+                this->targetParam_ = TargetParam::rotationthrust;
                 return;
             }
@@ -271,5 +271,5 @@
             if (param == "NULL")
             {
-                this->targetParam_ = null;
+                this->targetParam_ = TargetParam::null;
                 return;
             }
Index: code/trunk/src/orxonox/items/PartDestructionEvent.h
===================================================================
--- code/trunk/src/orxonox/items/PartDestructionEvent.h	(revision 11052)
+++ code/trunk/src/orxonox/items/PartDestructionEvent.h	(revision 11071)
@@ -82,5 +82,5 @@
                     List of all allowed parameters.
                 */
-            enum TargetParam
+            enum class TargetParam
             {
                 shieldhealth,
@@ -100,5 +100,5 @@
             virtual ~PartDestructionEvent();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             void execute();
Index: code/trunk/src/orxonox/items/ShipPart.cc
===================================================================
--- code/trunk/src/orxonox/items/ShipPart.cc	(revision 11052)
+++ code/trunk/src/orxonox/items/ShipPart.cc	(revision 11071)
@@ -49,5 +49,5 @@
 
     ShipPart::ShipPart(Context* context)
-        : Item(context), parent_(NULL)
+        : Item(context), parent_(nullptr)
     {
         RegisterObject(ShipPart);
@@ -121,5 +121,5 @@
     void ShipPart::addEntity(StaticEntity* entity)
     {
-        OrxAssert(entity != NULL, "The Entity cannot be NULL.");
+        OrxAssert(entity != nullptr, "The Entity cannot be nullptr.");
         this->entityList_.push_back(entity);
     }
@@ -129,10 +129,10 @@
         Get the i-th StaticEntity of the ShipPart.
     @return
-        Returns a pointer to the i-the StaticEntity. NULL if there is no StaticEntity with that index.
+        Returns a pointer to the i-the StaticEntity. nullptr if there is no StaticEntity with that index.
     */
     StaticEntity* ShipPart::getEntity(unsigned int index)
     {
         if(this->entityList_.size() >= index)
-            return NULL;
+            return nullptr;
         else
             return this->entityList_[index];
@@ -142,12 +142,12 @@
     @brief
         Check whether the ShipPart has a particular Entity.
-    @param engine
+    @param search
         A pointer to the Entity to be checked.
     */
-    bool ShipPart::hasEntity(StaticEntity* entity) const
-    {
-        for(unsigned int i = 0; i < this->entityList_.size(); i++)
-        {
-            if(this->entityList_[i] == entity)
+    bool ShipPart::hasEntity(StaticEntity* search) const
+    {
+        for(StaticEntity* entity : this->entityList_)
+        {
+            if(entity == search)
                 return true;
         }
@@ -163,5 +163,5 @@
     void ShipPart::addDestructionEvent(PartDestructionEvent* event)
     {
-        OrxAssert(event != NULL, "The PartDestructionEvent cannot be NULL.");
+        OrxAssert(event != nullptr, "The PartDestructionEvent cannot be nullptr.");
         event->setParent(this);
         this->eventList_.push_back(event);
@@ -172,31 +172,17 @@
         Get the i-th PartDestructionEvent of the ShipPart.
     @return
-        Returns a pointer to the i-the PartDestructionEvent. NULL if there is no PartDestructionEvent with that index.
+        Returns a pointer to the i-the PartDestructionEvent. nullptr if there is no PartDestructionEvent with that index.
     */
     PartDestructionEvent* ShipPart::getDestructionEvent(unsigned int index)
     {
         if(this->eventList_.size() <= index)
-            return NULL;
+            return nullptr;
         else
             return this->eventList_[index];
     }
 
-    void ShipPart::setDamageAbsorption(float value)
-    {
-        this->damageAbsorption_ = value;
-    }
-
     void ShipPart::setParent(ModularSpaceShip* ship)
     {
         this->parent_ = ship;
-    }
-
-    /**
-    @brief
-        Sets the health of the ShipPart.
-    */
-    void ShipPart::setHealth(float health)
-    {
-        this->health_ = health;
     }
 
Index: code/trunk/src/orxonox/items/ShipPart.h
===================================================================
--- code/trunk/src/orxonox/items/ShipPart.h	(revision 11052)
+++ code/trunk/src/orxonox/items/ShipPart.h	(revision 11071)
@@ -47,5 +47,5 @@
             virtual ~ShipPart();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             virtual void handleHit(float damage, float healthdamage, float shielddamage, Pawn* originator);
@@ -64,18 +64,20 @@
             PartDestructionEvent* getDestructionEvent(unsigned int index);
 
-            virtual void setDamageAbsorption(float value);
-            inline float getDamageAbsorption()
+            inline void setDamageAbsorption(float value)
+                { this->damageAbsorption_ = value; }
+            inline float getDamageAbsorption() const
                 { return this->damageAbsorption_; }
 
             void setParent(ModularSpaceShip* ship);
-            inline ModularSpaceShip* getParent()
+            inline ModularSpaceShip* getParent() const
                 { return this->parent_; }
 
             inline void setEventExecution(bool var)
                 { this->eventExecution_ = var; }
-            inline bool isEventExecution()
+            inline bool isEventExecution() const
                 { return this->eventExecution_; }
 
-            virtual void setHealth(float health);
+            inline void setHealth(float health)
+                { this->health_ = health; }
             inline void addHealth(float health)
                 { this->setHealth(this->health_ + health); }
Index: code/trunk/src/orxonox/overlays/GUISheet.h
===================================================================
--- code/trunk/src/orxonox/overlays/GUISheet.h	(revision 11052)
+++ code/trunk/src/orxonox/overlays/GUISheet.h	(revision 11071)
@@ -44,5 +44,5 @@
         ~GUISheet();
 
-        void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
         void show();
Index: code/trunk/src/orxonox/overlays/InGameConsole.cc
===================================================================
--- code/trunk/src/orxonox/overlays/InGameConsole.cc	(revision 11052)
+++ code/trunk/src/orxonox/overlays/InGameConsole.cc	(revision 11071)
@@ -75,11 +75,11 @@
         : shell_(new Shell("InGameConsole", true))
         , bShowCursor_(false)
-        , consoleOverlay_(0)
-        , consoleOverlayContainer_(0)
-        , consoleOverlayNoise_(0)
-        , consoleOverlayCursor_(0)
-        , consoleOverlayBorder_(0)
-        , consoleOverlayTextAreas_(0)
-        , inputState_(0)
+        , consoleOverlay_(nullptr)
+        , consoleOverlayContainer_(nullptr)
+        , consoleOverlayNoise_(nullptr)
+        , consoleOverlayCursor_(nullptr)
+        , consoleOverlayBorder_(nullptr)
+        , consoleOverlayTextAreas_(nullptr)
+        , inputState_(nullptr)
     {
         RegisterObject(InGameConsole);
@@ -130,5 +130,5 @@
                     if (this->consoleOverlayTextAreas_[i])
                         Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->consoleOverlayTextAreas_[i]);
-                    this->consoleOverlayTextAreas_[i] = 0;
+                    this->consoleOverlayTextAreas_[i] = nullptr;
                 }
 
@@ -140,5 +140,5 @@
         {
             delete[] this->consoleOverlayTextAreas_;
-            this->consoleOverlayTextAreas_ = 0;
+            this->consoleOverlayTextAreas_ = nullptr;
         }
 
@@ -175,6 +175,6 @@
             else
             {
-                inputState_->setMouseHandler(0);
-                inputState_->setJoyStickHandler(0);
+                inputState_->setMouseHandler(nullptr);
+                inputState_->setJoyStickHandler(nullptr);
             }
         }
@@ -292,5 +292,5 @@
 
         for (int i = LINES - 1; i > max; --i)
-            this->print("", Shell::DebugOutput, i, true);
+            this->print("", Shell::LineType::DebugOutput, i, true);
 
         for (int i = max; i >= 1; --i)
@@ -318,5 +318,5 @@
     {
         if (LINES > 0)
-            this->print(this->shell_->getInput(), Shell::Input, 0);
+            this->print(this->shell_->getInput(), Shell::LineType::Input, 0);
 
         if (this->shell_->getInput().empty())
@@ -342,5 +342,5 @@
     void InGameConsole::executed()
     {
-        this->shell_->addOutput(this->shell_->getInput(), Shell::Command);
+        this->shell_->addOutput(this->shell_->getInput(), Shell::LineType::Command);
     }
 
@@ -562,26 +562,26 @@
         switch (type)
         {
-            case Shell::Message:
-            case Shell::DebugOutput:     colourTop = ColourValue(0.9f, 0.9f, 0.9f); break;
-
-            case Shell::UserError:       colourTop = ColourValue(0.9f, 0.0f, 0.0f); break;
-            case Shell::UserWarning:     colourTop = ColourValue(0.9f, 0.5f, 0.0f); break;
-            case Shell::UserStatus:      colourTop = ColourValue(0.0f, 0.9f, 0.0f); break;
-            case Shell::UserInfo:        colourTop = ColourValue(0.0f, 0.8f, 0.8f); break;
-
-            case Shell::InternalError:   colourTop = ColourValue(0.5f, 0.0f, 0.0f); break;
-            case Shell::InternalWarning: colourTop = ColourValue(0.5f, 0.2f, 0.0f); break;
-            case Shell::InternalStatus:  colourTop = ColourValue(0.0f, 0.5f, 0.0f); break;
-            case Shell::InternalInfo:    colourTop = ColourValue(0.0f, 0.4f, 0.4f); break;
-
-            case Shell::Verbose:         colourTop = ColourValue(0.3f, 0.3f, 0.9f); break;
-            case Shell::VerboseMore:     colourTop = ColourValue(0.2f, 0.2f, 0.7f); break;
-            case Shell::VerboseUltra:    colourTop = ColourValue(0.1f, 0.1f, 0.5f); break;
-
-            case Shell::Command:         colourTop = ColourValue(0.8f, 0.2f, 0.8f); break;
-            case Shell::Hint:            colourTop = ColourValue(0.4f, 0.0f, 0.4f); break;
-            case Shell::Input:           colourTop = ColourValue(0.9f, 0.9f, 0.9f); break;
-
-            default:                     colourTop = ColourValue(0.5f, 0.5f, 0.5f); break;
+            case Shell::LineType::Message:
+            case Shell::LineType::DebugOutput:     colourTop = ColourValue(0.9f, 0.9f, 0.9f); break;
+
+            case Shell::LineType::UserError:       colourTop = ColourValue(0.9f, 0.0f, 0.0f); break;
+            case Shell::LineType::UserWarning:     colourTop = ColourValue(0.9f, 0.5f, 0.0f); break;
+            case Shell::LineType::UserStatus:      colourTop = ColourValue(0.0f, 0.9f, 0.0f); break;
+            case Shell::LineType::UserInfo:        colourTop = ColourValue(0.0f, 0.8f, 0.8f); break;
+
+            case Shell::LineType::InternalError:   colourTop = ColourValue(0.5f, 0.0f, 0.0f); break;
+            case Shell::LineType::InternalWarning: colourTop = ColourValue(0.5f, 0.2f, 0.0f); break;
+            case Shell::LineType::InternalStatus:  colourTop = ColourValue(0.0f, 0.5f, 0.0f); break;
+            case Shell::LineType::InternalInfo:    colourTop = ColourValue(0.0f, 0.4f, 0.4f); break;
+
+            case Shell::LineType::Verbose:         colourTop = ColourValue(0.3f, 0.3f, 0.9f); break;
+            case Shell::LineType::VerboseMore:     colourTop = ColourValue(0.2f, 0.2f, 0.7f); break;
+            case Shell::LineType::VerboseUltra:    colourTop = ColourValue(0.1f, 0.1f, 0.5f); break;
+
+            case Shell::LineType::Command:         colourTop = ColourValue(0.8f, 0.2f, 0.8f); break;
+            case Shell::LineType::Hint:            colourTop = ColourValue(0.4f, 0.0f, 0.4f); break;
+            case Shell::LineType::Input:           colourTop = ColourValue(0.9f, 0.9f, 0.9f); break;
+
+            default:                               colourTop = ColourValue(0.5f, 0.5f, 0.5f); break;
         }
 
Index: code/trunk/src/orxonox/overlays/InGameConsole.h
===================================================================
--- code/trunk/src/orxonox/overlays/InGameConsole.h	(revision 11052)
+++ code/trunk/src/orxonox/overlays/InGameConsole.h	(revision 11071)
@@ -53,6 +53,6 @@
         void setConfigValues();
 
-        void preUpdate(const Clock& time);
-        void postUpdate(const Clock& time) { /*no action*/ }
+        virtual void preUpdate(const Clock& time) override;
+        virtual void postUpdate(const Clock& time) override { /*no action*/ }
 
         static void openConsole();
@@ -65,10 +65,10 @@
         void deactivate();
 
-        void linesChanged();
-        void lineAdded();
-        void inputChanged();
-        void cursorChanged();
-        void executed();
-        void exit();
+        virtual void linesChanged() override;
+        virtual void lineAdded() override;
+        virtual void inputChanged() override;
+        virtual void cursorChanged() override;
+        virtual void executed() override;
+        virtual void exit() override;
 
         void shiftLines();
@@ -77,5 +77,5 @@
         void print(const std::string& text, Shell::LineType type, int index, bool alwaysShift = false);
 
-        void windowResized(unsigned int newWidth, unsigned int newHeight);
+        virtual void windowResized(unsigned int newWidth, unsigned int newHeight) override;
 
         // config value related
Index: code/trunk/src/orxonox/overlays/OrxonoxOverlay.cc
===================================================================
--- code/trunk/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 11052)
+++ code/trunk/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 11071)
@@ -70,6 +70,6 @@
         RegisterObject(OrxonoxOverlay);
 
-        this->owner_ = 0;
-        this->group_ = 0;
+        this->owner_ = nullptr;
+        this->group_ = nullptr;
 
         if (!GameMode::showsGraphics())
@@ -94,5 +94,5 @@
         this->angle_ = Degree(0.0);
         this->bCorrectAspect_ = false;
-        this->rotState_ = Horizontal;
+        this->rotState_ = RotationState::Horizontal;
         this->angleChanged(); // updates all other values as well
 
@@ -259,15 +259,15 @@
             {
                 tempAspect = 1.0f / this->windowAspectRatio_;
-                rotState_ = Vertical;
+                rotState_ = RotationState::Vertical;
             }
             else if (angle > 179 || angle < 1)
             {
                 tempAspect = this->windowAspectRatio_;
-                rotState_ = Horizontal;
+                rotState_ = RotationState::Horizontal;
             }
             else
             {
                 tempAspect = 1.0f;
-                rotState_ = Inbetween;
+                rotState_ = RotationState::Inbetween;
             }
 
Index: code/trunk/src/orxonox/overlays/OrxonoxOverlay.h
===================================================================
--- code/trunk/src/orxonox/overlays/OrxonoxOverlay.h	(revision 11052)
+++ code/trunk/src/orxonox/overlays/OrxonoxOverlay.h	(revision 11071)
@@ -79,5 +79,5 @@
             and in between is everything else.
         */
-        enum RotationState
+        enum class RotationState
         {
             Horizontal,
@@ -90,7 +90,7 @@
         virtual ~OrxonoxOverlay();
 
-        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-
-        virtual void changedName();
+        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+
+        virtual void changedName() override;
 
         //! Shows the overlay with an detour to BaseObject::visibility_
@@ -167,5 +167,5 @@
         void setBackgroundColour(ColourValue colour);
 
-        virtual void changedVisibility();
+        virtual void changedVisibility() override;
 
         inline void setOwner(BaseObject* owner)
@@ -186,5 +186,5 @@
         virtual void changedOverlayGroup()
             { this->changedVisibility(); }
-        virtual void setZOrder(unsigned short order);
+        void setZOrder(unsigned short order);
 
     protected:
@@ -207,5 +207,5 @@
 
     private:
-        void windowResized(unsigned int newWidth, unsigned int newHeight);
+        virtual void windowResized(unsigned int newWidth, unsigned int newHeight) override;
 
         static unsigned int hudOverlayCounter_s;   //!< Static counter for hud elements
Index: code/trunk/src/orxonox/overlays/OverlayGroup.cc
===================================================================
--- code/trunk/src/orxonox/overlays/OverlayGroup.cc	(revision 11052)
+++ code/trunk/src/orxonox/overlays/OverlayGroup.cc	(revision 11071)
@@ -51,6 +51,6 @@
         {
             ArgumentCompletionList names;
-            for (ObjectList<OverlayGroup>::iterator it = ObjectList<OverlayGroup>::begin(); it; ++it)
-                names.push_back(ArgumentCompletionListElement(it->getName(), getLowercase(it->getName())));
+            for (OverlayGroup* overlayGroup : ObjectList<OverlayGroup>())
+                names.push_back(ArgumentCompletionListElement(overlayGroup->getName(), getLowercase(overlayGroup->getName())));
             return names;
         }
@@ -69,5 +69,5 @@
         RegisterObject(OverlayGroup);
 
-        this->owner_ = 0;
+        this->owner_ = nullptr;
 
         setScale(Vector2(1.0, 1.0));
@@ -77,6 +77,6 @@
     OverlayGroup::~OverlayGroup()
     {
-        for (std::set< StrongPtr<OrxonoxOverlay> >::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
-            (*it)->destroy();
+        for (OrxonoxOverlay* hudElement : hudElements_)
+            hudElement->destroy();
         this->hudElements_.clear();
     }
@@ -101,6 +101,6 @@
     void OverlayGroup::setScale(const Vector2& scale)
     {
-        for (std::set< StrongPtr<OrxonoxOverlay> >::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
-            (*it)->scale(scale / this->scale_);
+        for (OrxonoxOverlay* hudElement : hudElements_)
+            hudElement->scale(scale / this->scale_);
         this->scale_ = scale;
     }
@@ -109,6 +109,6 @@
     void OverlayGroup::setScroll(const Vector2& scroll)
     {
-        for (std::set< StrongPtr<OrxonoxOverlay> >::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
-            (*it)->scroll(scroll - this->scroll_);
+        for (OrxonoxOverlay* hudElement : hudElements_)
+            hudElement->scroll(scroll - this->scroll_);
         this->scroll_ = scroll;
     }
@@ -148,5 +148,5 @@
         if (index < this->hudElements_.size())
         {
-            std::set< StrongPtr<OrxonoxOverlay> >::const_iterator it = hudElements_.begin();
+            std::set<StrongPtr<OrxonoxOverlay>>::const_iterator it = hudElements_.begin();
             for (unsigned int i = 0; i != index; ++it, ++i)
                 ;
@@ -154,5 +154,5 @@
         }
         else
-            return 0;
+            return nullptr;
     }
 
@@ -162,6 +162,6 @@
         SUPER( OverlayGroup, changedVisibility );
 
-        for (std::set< StrongPtr<OrxonoxOverlay> >::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
-            (*it)->changedVisibility(); //inform all Child Overlays that our visibility has changed
+        for (OrxonoxOverlay* hudElement : hudElements_)
+            hudElement->changedVisibility(); //inform all Child Overlays that our visibility has changed
     }
 
@@ -170,6 +170,6 @@
         this->owner_ = owner;
 
-        for (std::set< StrongPtr<OrxonoxOverlay> >::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
-            (*it)->setOwner(owner);
+        for (OrxonoxOverlay* hudElement : hudElements_)
+            hudElement->setOwner(owner);
     }
 
@@ -185,8 +185,8 @@
     /*static*/ void OverlayGroup::toggleVisibility(const std::string& name)
     {
-        for (ObjectList<OverlayGroup>::iterator it = ObjectList<OverlayGroup>::begin(); it; ++it)
-        {
-            if ((*it)->getName() == name)
-                (*it)->setVisible(!((*it)->isVisible()));
+        for (OverlayGroup* group : ObjectList<OverlayGroup>())
+        {
+            if (group->getName() == name)
+                group->setVisible(!(group->isVisible()));
         }
     }
@@ -200,12 +200,12 @@
     /*static*/ void OverlayGroup::show(const std::string& name)
     {
-        for (ObjectList<OverlayGroup>::iterator it = ObjectList<OverlayGroup>::begin(); it; ++it)
-        {
-            if ((*it)->getName() == name)
+        for (OverlayGroup* group : ObjectList<OverlayGroup>())
+        {
+            if (group->getName() == name)
             {
-                if((*it)->isVisible())
-                    (*it)->changedVisibility();
+                if(group->isVisible())
+                    group->changedVisibility();
                 else
-                    (*it)->setVisible(!((*it)->isVisible()));
+                    group->setVisible(!(group->isVisible()));
             }
         }
@@ -223,8 +223,8 @@
     /*static*/ void OverlayGroup::scaleGroup(const std::string& name, float scale)
     {
-        for (ObjectList<OverlayGroup>::iterator it = ObjectList<OverlayGroup>::begin(); it; ++it)
-        {
-            if ((*it)->getName() == name)
-                (*it)->scale(Vector2(scale, scale));
+        for (OverlayGroup* group : ObjectList<OverlayGroup>())
+        {
+            if (group->getName() == name)
+                group->scale(Vector2(scale, scale));
         }
     }
@@ -241,8 +241,8 @@
     /*static*/ void OverlayGroup::scrollGroup(const std::string& name, const Vector2& scroll)
     {
-        for (ObjectList<OverlayGroup>::iterator it = ObjectList<OverlayGroup>::begin(); it; ++it)
-        {
-            if ((*it)->getName() == name)
-                (*it)->scroll(scroll);
+        for (OverlayGroup* group : ObjectList<OverlayGroup>())
+        {
+            if (group->getName() == name)
+                group->scroll(scroll);
         }
     }
Index: code/trunk/src/orxonox/overlays/OverlayGroup.h
===================================================================
--- code/trunk/src/orxonox/overlays/OverlayGroup.h	(revision 11052)
+++ code/trunk/src/orxonox/overlays/OverlayGroup.h	(revision 11071)
@@ -58,5 +58,5 @@
         ~OverlayGroup();
 
-        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
         static void toggleVisibility(const std::string& name);
@@ -65,8 +65,8 @@
         static void scrollGroup(const std::string& name, const Vector2& scroll);
 
-        inline const std::set< StrongPtr<OrxonoxOverlay> >& getOverlays() const
+        inline const std::set<StrongPtr<OrxonoxOverlay>>& getOverlays() const
             { return this->hudElements_; }
 
-        virtual void changedVisibility();
+        virtual void changedVisibility() override;
 
         void setOwner(BaseObject* owner);
@@ -91,5 +91,5 @@
 
     private:
-        std::set< StrongPtr<OrxonoxOverlay> > hudElements_;    //!< Contains all the OrxonoxOverlays of the this group.
+        std::set<StrongPtr<OrxonoxOverlay>> hudElements_;    //!< Contains all the OrxonoxOverlays of the this group.
         Vector2 scale_;                            //!< Current scale (independent of the elements).
         Vector2 scroll_;                           //!< Current scrolling offset.
Index: code/trunk/src/orxonox/sound/AmbientSound.cc
===================================================================
--- code/trunk/src/orxonox/sound/AmbientSound.cc	(revision 11052)
+++ code/trunk/src/orxonox/sound/AmbientSound.cc	(revision 11071)
@@ -92,6 +92,6 @@
         {
             const std::string& path = "ambient/" + mood + '/' + this->ambientSource_;
-            shared_ptr<ResourceInfo> fileInfo = Resource::getInfo(path);
-            if (fileInfo != NULL)
+            std::shared_ptr<ResourceInfo> fileInfo = Resource::getInfo(path);
+            if (fileInfo != nullptr)
             {
                 orxout(user_info) << "Loading ambient sound " << path << "..." << endl; // TODO: make this output internal if we implement sound streaming
Index: code/trunk/src/orxonox/sound/AmbientSound.h
===================================================================
--- code/trunk/src/orxonox/sound/AmbientSound.h	(revision 11052)
+++ code/trunk/src/orxonox/sound/AmbientSound.h	(revision 11071)
@@ -50,7 +50,7 @@
         AmbientSound();
 
-        void play();
-        bool stop();
-        void pause();
+        virtual void play() override;
+        virtual bool stop() override;
+        virtual void pause() override;
 
         bool setAmbientSource(const std::string& source);
@@ -66,7 +66,7 @@
 
     private:
-        void preDestroy();
-        float getRealVolume();
-        bool moodChanged(const std::string& mood);
+        virtual void preDestroy() override;
+        virtual float getRealVolume() override;
+        virtual bool moodChanged(const std::string& mood) override;
         inline void ambientSourceChanged()
             { this->setAmbientSource(this->ambientSource_); }
Index: code/trunk/src/orxonox/sound/BaseSound.cc
===================================================================
--- code/trunk/src/orxonox/sound/BaseSound.cc	(revision 11052)
+++ code/trunk/src/orxonox/sound/BaseSound.cc	(revision 11071)
@@ -49,5 +49,5 @@
         , volume_(0.7)
         , bLooping_(false)
-        , state_(Stopped)
+        , state_(State::Stopped)
         , pitch_ (1.0)
     {
@@ -63,8 +63,8 @@
     BaseSound::~BaseSound()
     {
-        if (this->state_ != Stopped)
+        if (this->state_ != State::Stopped)
             this->stop();
         // Release buffer
-        if (this->soundBuffer_ != NULL)
+        if (this->soundBuffer_ != nullptr)
         {
             assert(GameMode::playsSound());
@@ -83,6 +83,6 @@
     void BaseSound::doPlay()
     {
-        this->state_ = Playing;
-        if (GameMode::playsSound() && this->getSourceState() != AL_PLAYING && this->soundBuffer_ != NULL)
+        this->state_ = State::Playing;
+        if (GameMode::playsSound() && this->getSourceState() != AL_PLAYING && this->soundBuffer_ != nullptr)
         {
             if (!alIsSource(this->audioSource_))
@@ -102,5 +102,5 @@
     bool BaseSound::doStop()
     {
-        this->state_ = Stopped;
+        this->state_ = State::Stopped;
         if (alIsSource(this->audioSource_))
         {
@@ -123,5 +123,5 @@
         if (this->isStopped())
             return;
-        this->state_ = Paused;
+        this->state_ = State::Paused;
         if (alIsSource(this->audioSource_))
             alSourcePause(this->audioSource_);
@@ -151,5 +151,5 @@
             orxout(internal_warning, context::sound) << "Setting source parameters to 0 failed: "
                                                      << SoundManager::getALErrorString(error) << endl;
-        assert(this->soundBuffer_ != NULL);
+        assert(this->soundBuffer_ != nullptr);
         alSourcei(this->audioSource_, AL_BUFFER, this->soundBuffer_->getBuffer());
         if (ALuint error = alGetError())
@@ -209,5 +209,5 @@
         }
 
-        if (this->soundBuffer_ != NULL)
+        if (this->soundBuffer_ != nullptr)
         {
             if (this->soundBuffer_->getFilename() == source)
@@ -233,5 +233,5 @@
         // Get new sound buffer
         this->soundBuffer_ = SoundManager::getInstance().getSoundBuffer(this->source_);
-        if (this->soundBuffer_ == NULL)
+        if (this->soundBuffer_ == nullptr)
             return;
 
@@ -256,10 +256,10 @@
         else // No source acquired so far, but might be set to playing or paused
         {
-            State state = static_cast<State>(this->state_); // save
+            State state = this->state_; // save
             if (this->isPlaying() || this->isPaused())
                 doPlay();
-            if (state == Paused)
-            {
-                this->state_ = Paused;
+            if (state == State::Paused)
+            {
+                this->state_ = State::Paused;
                 doPause();
             }
@@ -271,11 +271,11 @@
         switch (this->state_)
         {
-            case Playing:
+            case State::Playing:
                 this->play();
                 break;
-            case Paused:
+            case State::Paused:
                 this->pause();
                 break;
-            case Stopped:
+            case State::Stopped:
             default:
                 this->stop();
Index: code/trunk/src/orxonox/sound/BaseSound.h
===================================================================
--- code/trunk/src/orxonox/sound/BaseSound.h	(revision 11052)
+++ code/trunk/src/orxonox/sound/BaseSound.h	(revision 11071)
@@ -33,5 +33,5 @@
 
 #include <string>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include <OgreDataStream.h>
 #include "core/object/Listable.h"
@@ -54,7 +54,7 @@
         virtual void pause() { this->doPause(); }
 
-        bool isPlaying() const { return this->state_ == Playing; }
-        bool isPaused()  const { return this->state_ == Paused; }
-        bool isStopped() const { return this->state_ == Stopped; }
+        bool isPlaying() const { return this->state_ == State::Playing; }
+        bool isPaused()  const { return this->state_ == State::Paused; }
+        bool isStopped() const { return this->state_ == State::Stopped; }
 
         virtual void setSource(const std::string& source);
@@ -76,5 +76,5 @@
 
     protected:
-        enum State
+        enum class State
         {
             Stopped,
@@ -107,9 +107,9 @@
         ALuint          audioSource_;
         bool            bPooling_;
-        shared_ptr<SoundBuffer> soundBuffer_;
+        std::shared_ptr<SoundBuffer> soundBuffer_;
         std::string     source_;
         float           volume_;
         bool            bLooping_;
-        uint8_t         state_;       // This Variable is actually of type State
+        State           state_;       // This Variable is actually of type State
         float           pitch_;
 
Index: code/trunk/src/orxonox/sound/SoundBuffer.cc
===================================================================
--- code/trunk/src/orxonox/sound/SoundBuffer.cc	(revision 11052)
+++ code/trunk/src/orxonox/sound/SoundBuffer.cc	(revision 11071)
@@ -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)
@@ -45,9 +45,9 @@
     {
         if (this->filename_.empty())
-            ThrowException(General, "SoundBuffer construction: fileInfo was NULL");
+            ThrowException(General, "SoundBuffer construction: fileInfo was nullptr");
 
         // Get resource info
-        shared_ptr<ResourceInfo> fileInfo = Resource::getInfo(filename);
-        if (fileInfo == NULL)
+        std::shared_ptr<ResourceInfo> fileInfo = Resource::getInfo(filename);
+        if (fileInfo == nullptr)
         {
             orxout(internal_error, context::sound) << "Sound file '" << filename << "' not found" << endl;
@@ -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];
@@ -138,8 +138,8 @@
         vorbisCallbacks.seek_func  = &seekVorbis;
         vorbisCallbacks.tell_func  = &tellVorbis;
-        vorbisCallbacks.close_func = NULL;
+        vorbisCallbacks.close_func = nullptr;
 
         OggVorbis_File vf;
-        int ret = ov_open_callbacks(dataStream.get(), &vf, NULL, 0, vorbisCallbacks);
+        int ret = ov_open_callbacks(dataStream.get(), &vf, nullptr, 0, vorbisCallbacks);
         if (ret < 0)
         {
Index: code/trunk/src/orxonox/sound/SoundBuffer.h
===================================================================
--- code/trunk/src/orxonox/sound/SoundBuffer.h	(revision 11052)
+++ code/trunk/src/orxonox/sound/SoundBuffer.h	(revision 11071)
@@ -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/trunk/src/orxonox/sound/SoundManager.cc
===================================================================
--- code/trunk/src/orxonox/sound/SoundManager.cc	(revision 11052)
+++ code/trunk/src/orxonox/sound/SoundManager.cc	(revision 11071)
@@ -83,5 +83,5 @@
             ThrowException(InitialisationAborted, "Sound: Not loading at all");
 #if !defined(ORXONOX_PLATFORM_APPLE)
-        if (!alutInitWithoutContext(NULL, NULL))
+        if (!alutInitWithoutContext(nullptr, nullptr))
             ThrowException(InitialisationFailed, "Sound Error: ALUT initialisation failed: " << alutGetErrorString(alutGetError()));
         Loki::ScopeGuard alutExitGuard = Loki::MakeGuard(&alutExit);
@@ -90,5 +90,5 @@
 /*
         // Get list of available sound devices and display them
-        const char* devices = alcGetString(NULL, ALC_DEVICE_SPECIFIER);
+        const char* devices = alcGetString(nullptr, ALC_DEVICE_SPECIFIER);
         char* device = new char[strlen(devices)+1];
         strcpy(device, devices);
@@ -110,12 +110,12 @@
         this->device_ = alcOpenDevice(renderDevice.c_str());
 */
-        this->device_ = alcOpenDevice(NULL);
-        if (this->device_ == NULL)
+        this->device_ = alcOpenDevice(nullptr);
+        if (this->device_ == nullptr)
             ThrowException(InitialisationFailed, "Sound Error: Could not open sound device.");
         Loki::ScopeGuard closeDeviceGuard = Loki::MakeGuard(&alcCloseDevice, this->device_);
 
         // Create sound context and make it the currently used one
-        this->context_ = alcCreateContext(this->device_, NULL);
-        if (this->context_ == NULL)
+        this->context_ = alcCreateContext(this->device_, nullptr);
+        if (this->context_ == nullptr)
             ThrowException(InitialisationFailed, "Sound Error: Could not create ALC context");
         Loki::ScopeGuard desroyContextGuard = Loki::MakeGuard(&alcDestroyContext, this->context_);
@@ -189,5 +189,5 @@
 
         // Relieve context to destroy it
-        if (!alcMakeContextCurrent(NULL))
+        if (!alcMakeContextCurrent(nullptr))
             orxout(internal_error, context::sound) << "Could not unset ALC context" << endl;
         alcDestroyContext(this->context_);
@@ -294,14 +294,14 @@
         {
         case SoundType::All:
-            for (ObjectList<BaseSound>::iterator it = ObjectList<BaseSound>::begin(); it != ObjectList<BaseSound>::end(); ++it)
-                (*it)->updateVolume();
+            for (BaseSound* sound : ObjectList<BaseSound>())
+                sound->updateVolume();
             break;
         case SoundType::Music:
-            for (ObjectList<AmbientSound>::iterator it = ObjectList<AmbientSound>::begin(); it != ObjectList<AmbientSound>::end(); ++it)
-                (*it)->updateVolume();
+            for (AmbientSound* sound : ObjectList<AmbientSound>())
+                sound->updateVolume();
             break;
         case SoundType::Effects:
-            for (ObjectList<WorldSound>::iterator it = ObjectList<WorldSound>::begin(); it != ObjectList<WorldSound>::end(); ++it)
-                (*it)->updateVolume();
+            for (WorldSound* sound : ObjectList<WorldSound>())
+                sound->updateVolume();
             break;
         default:
@@ -350,5 +350,5 @@
     void SoundManager::registerAmbientSound(AmbientSound* newAmbient)
     {
-        if (newAmbient != NULL && !this->bDestructorCalled_)
+        if (newAmbient != nullptr && !this->bDestructorCalled_)
         {
             for (AmbientList::const_iterator it = this->ambientSounds_.begin(); it != this->ambientSounds_.end(); ++it)
@@ -373,5 +373,5 @@
     void SoundManager::unregisterAmbientSound(AmbientSound* oldAmbient)
     {
-        if (oldAmbient == NULL || ambientSounds_.empty() || this->bDestructorCalled_)
+        if (oldAmbient == nullptr || ambientSounds_.empty() || this->bDestructorCalled_)
             return;
 
@@ -405,12 +405,12 @@
     void SoundManager::pauseAmbientSound(AmbientSound* ambient)
     {
-        if (ambient != NULL)
-        {
-            for (AmbientList::iterator it = this->ambientSounds_.begin(); it != this->ambientSounds_.end(); ++it)
-            {
-                if (it->first == ambient)
+        if (ambient != nullptr)
+        {
+            for (std::pair<AmbientSound*, bool>& pair : this->ambientSounds_)
+            {
+                if (pair.first == ambient)
                 {
-                    it->second = true;
-                    this->fadeOut(it->first);
+                    pair.second = true;
+                    this->fadeOut(pair.first);
                     return;
                 }
@@ -422,5 +422,5 @@
     {
         // If we're already fading out --> remove that
-        for (std::list<StrongPtr<AmbientSound> >::iterator it = this->fadeOutList_.begin(); it != this->fadeOutList_.end(); it++)
+        for (std::list<StrongPtr<AmbientSound>>::iterator it = this->fadeOutList_.begin(); it != this->fadeOutList_.end(); it++)
         {
             if (*it == sound)
@@ -438,5 +438,5 @@
     {
         // If we're already fading in --> remove that
-        for (std::list<StrongPtr<AmbientSound> >::iterator it = this->fadeInList_.begin(); it != this->fadeInList_.end(); it++)
+        for (std::list<StrongPtr<AmbientSound>>::iterator it = this->fadeInList_.begin(); it != this->fadeInList_.end(); it++)
         {
             if (*it == sound)
@@ -461,5 +461,5 @@
 
         // FADE IN
-        for (std::list<StrongPtr<AmbientSound> >::iterator it= this->fadeInList_.begin(); it != this->fadeInList_.end(); )
+        for (std::list<StrongPtr<AmbientSound>>::iterator it= this->fadeInList_.begin(); it != this->fadeInList_.end(); )
         {
             if ((*it)->getVolume() + this->crossFadeStep_*dt > 1.0f)
@@ -476,5 +476,5 @@
 
         // FADE OUT
-        for (std::list<StrongPtr<AmbientSound> >::iterator it = this->fadeOutList_.begin(); it != this->fadeOutList_.end(); )
+        for (std::list<StrongPtr<AmbientSound>>::iterator it = this->fadeOutList_.begin(); it != this->fadeOutList_.end(); )
         {
             if ((*it)->getVolume() - this->crossFadeStep_*dt < 0.0f)
@@ -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();
@@ -576,5 +576,5 @@
             ALuint source = this->availableSoundSources_.back();
             this->availableSoundSources_.pop_back();
-            this->usedSoundSources_.push_back(std::make_pair(source, object));
+            this->usedSoundSources_.emplace_back(source, object);
             return source;
         }
@@ -588,5 +588,5 @@
                 if (alIsSource(source) && !alGetError())
                 {
-                    this->usedSoundSources_.push_back(std::make_pair(source, object));
+                    this->usedSoundSources_.emplace_back(source, object);
                     return source;
                 }
@@ -606,5 +606,5 @@
 #endif
         this->availableSoundSources_.push_back(source);
-        for (std::vector<std::pair<ALuint, BaseSound*> >::iterator it = this->usedSoundSources_.begin();
+        for (std::vector<std::pair<ALuint, BaseSound*>>::iterator it = this->usedSoundSources_.begin();
             it != this->usedSoundSources_.end(); ++it)
         {
Index: code/trunk/src/orxonox/sound/SoundManager.h
===================================================================
--- code/trunk/src/orxonox/sound/SoundManager.h	(revision 11052)
+++ code/trunk/src/orxonox/sound/SoundManager.h	(revision 11071)
@@ -36,5 +36,5 @@
 #include <map>
 #include <string>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 #include "util/Singleton.h"
@@ -68,6 +68,6 @@
         ~SoundManager();
 
-        void preUpdate(const Clock& time);
-        void postUpdate(const Clock& time) { /*no action*/ }
+        virtual void preUpdate(const Clock& time) override;
+        virtual void postUpdate(const Clock& time) override { /*no action*/ }
         void setConfigValues();
 
@@ -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);
@@ -125,10 +125,10 @@
 
         // Ambient sound related
-        typedef std::list<std::pair<AmbientSound*, bool> > AmbientList;
+        typedef std::list<std::pair<AmbientSound*, bool>> AmbientList;
         AmbientList                        ambientSounds_;
         //! Absolute change per second (0.1 means 10% of the nominal volume) for cross fading
         float                              crossFadeStep_;
-        std::list<StrongPtr<AmbientSound> > fadeInList_;
-        std::list<StrongPtr<AmbientSound> > fadeOutList_;
+        std::list<StrongPtr<AmbientSound>> fadeInList_;
+        std::list<StrongPtr<AmbientSound>> fadeOutList_;
 
         // Volume related
@@ -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_;
 
@@ -148,5 +148,5 @@
         unsigned int maxSources_;
         std::vector<ALuint> availableSoundSources_;
-        std::vector<std::pair<ALuint, BaseSound*> > usedSoundSources_;
+        std::vector<std::pair<ALuint, BaseSound*>> usedSoundSources_;
 
         bool bDestructorCalled_; ///< Becomes true if the destructor is called - used to prevent ambient sounds from registering after the lists were cleared
Index: code/trunk/src/orxonox/sound/SoundStreamer.cc
===================================================================
--- code/trunk/src/orxonox/sound/SoundStreamer.cc	(revision 11052)
+++ code/trunk/src/orxonox/sound/SoundStreamer.cc	(revision 11071)
@@ -45,8 +45,8 @@
         vorbisCallbacks.seek_func  = &seekVorbis;
         vorbisCallbacks.tell_func  = &tellVorbis;
-        vorbisCallbacks.close_func = NULL;
+        vorbisCallbacks.close_func = nullptr;
 
         OggVorbis_File vf;
-        int ret = ov_open_callbacks(dataStream.get(), &vf, NULL, 0, vorbisCallbacks);
+        int ret = ov_open_callbacks(dataStream.get(), &vf, nullptr, 0, vorbisCallbacks);
         if (ret < 0)
         {
@@ -68,5 +68,5 @@
         int current_section;
 
-        for(int i = 0; i < 4; i++)
+        for(ALuint& initbuffer : initbuffers)
         {
             long ret = ov_read(&vf, inbuffer, sizeof(inbuffer), 0, 2, 1, &current_section);
@@ -82,5 +82,5 @@
             }
 
-            alBufferData(initbuffers[i], format, &inbuffer, ret, vorbisInfo->rate);
+            alBufferData(initbuffer, format, &inbuffer, ret, vorbisInfo->rate);
         }
         alSourceQueueBuffers(audioSource, 4, initbuffers);
Index: code/trunk/src/orxonox/sound/WorldAmbientSound.cc
===================================================================
--- code/trunk/src/orxonox/sound/WorldAmbientSound.cc	(revision 11052)
+++ code/trunk/src/orxonox/sound/WorldAmbientSound.cc	(revision 11071)
@@ -49,13 +49,13 @@
         this->ambientSound_ = new AmbientSound();
         this->registerVariables();
-        soundList_.push_back("Earth.ogg");
-        soundList_.push_back("Jupiter.ogg");
-        soundList_.push_back("Mars.ogg");
-        soundList_.push_back("allgorythm-lift_up.ogg");
-        soundList_.push_back("allgorythm-resonance_blaster.ogg");
-        soundList_.push_back("AlphaCentauri.ogg");
-        soundList_.push_back("Asteroid_rocks.ogg");
-        soundList_.push_back("Ganymede.ogg");
-        soundList_.push_back("luke_grey_-_hypermode.ogg");
+        soundList_.emplace_back("Earth.ogg");
+        soundList_.emplace_back("Jupiter.ogg");
+        soundList_.emplace_back("Mars.ogg");
+        soundList_.emplace_back("allgorythm-lift_up.ogg");
+        soundList_.emplace_back("allgorythm-resonance_blaster.ogg");
+        soundList_.emplace_back("AlphaCentauri.ogg");
+        soundList_.emplace_back("Asteroid_rocks.ogg");
+        soundList_.emplace_back("Ganymede.ogg");
+        soundList_.emplace_back("luke_grey_-_hypermode.ogg");
 
     }
@@ -114,8 +114,7 @@
 
         //HACK: Assuption - there is only one WorldAmbientSound in a level and only one level is used.
-        for (ObjectList<WorldAmbientSound>::iterator it = ObjectList<WorldAmbientSound>::begin();
-             it != ObjectList<WorldAmbientSound>::end(); ++it)
+        for (WorldAmbientSound* sound : ObjectList<WorldAmbientSound>())
         {
-            while(it->ambientSound_->setAmbientSource(WorldAmbientSound::soundList_[WorldAmbientSound::soundNumber_]) == false){
+            while(sound->ambientSound_->setAmbientSource(WorldAmbientSound::soundList_[WorldAmbientSound::soundNumber_]) == false){
                 WorldAmbientSound::soundNumber_ = (WorldAmbientSound::soundNumber_ + 1) % WorldAmbientSound::soundList_.size();
             }
Index: code/trunk/src/orxonox/sound/WorldAmbientSound.h
===================================================================
--- code/trunk/src/orxonox/sound/WorldAmbientSound.h	(revision 11052)
+++ code/trunk/src/orxonox/sound/WorldAmbientSound.h	(revision 11071)
@@ -50,8 +50,8 @@
             virtual ~WorldAmbientSound();
 
-            void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+            virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            virtual void changedActivity();
+            virtual void changedActivity() override;
 
             void play();
Index: code/trunk/src/orxonox/sound/WorldSound.cc
===================================================================
--- code/trunk/src/orxonox/sound/WorldSound.cc	(revision 11052)
+++ code/trunk/src/orxonox/sound/WorldSound.cc	(revision 11071)
@@ -58,5 +58,5 @@
         registerVariable(bLooping_, ObjectDirection::ToClient, new NetworkCallback<WorldSound>(this, &WorldSound::loopingChanged));
         registerVariable(pitch_,    ObjectDirection::ToClient, new NetworkCallback<WorldSound>(this, &WorldSound::pitchChanged));
-        registerVariable((uint8_t&)(BaseSound::state_), ObjectDirection::ToClient, new NetworkCallback<WorldSound>(this, &WorldSound::stateChanged));
+        registerVariable(BaseSound::state_, ObjectDirection::ToClient, new NetworkCallback<WorldSound>(this, &WorldSound::stateChanged));
     }
 
Index: code/trunk/src/orxonox/sound/WorldSound.h
===================================================================
--- code/trunk/src/orxonox/sound/WorldSound.h	(revision 11052)
+++ code/trunk/src/orxonox/sound/WorldSound.h	(revision 11071)
@@ -47,9 +47,9 @@
         WorldSound(Context* context);
 
-        void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-        void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
-        void changedActivity();
+        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+        virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode) override;
+        virtual void changedActivity() override;
 
-        void tick(float dt);
+        virtual void tick(float dt) override;
 
     protected:
@@ -58,6 +58,6 @@
     private:
         void registerVariables();
-        void initialiseSource();
-        float getRealVolume();
+        virtual void initialiseSource() override;
+        virtual float getRealVolume() override;
     };
 }
Index: code/trunk/src/orxonox/weaponsystem/DefaultWeaponmodeLink.h
===================================================================
--- code/trunk/src/orxonox/weaponsystem/DefaultWeaponmodeLink.h	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/DefaultWeaponmodeLink.h	(revision 11071)
@@ -42,5 +42,5 @@
             virtual ~DefaultWeaponmodeLink();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             inline void setFiremode(const unsigned int firemode)
Index: code/trunk/src/orxonox/weaponsystem/Munition.cc
===================================================================
--- code/trunk/src/orxonox/weaponsystem/Munition.cc	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/Munition.cc	(revision 11071)
@@ -52,11 +52,11 @@
         this->reloadTime_ = 0.5f;
 
-        this->lastFilledWeaponMode_ = NULL;
+        this->lastFilledWeaponMode_ = nullptr;
     }
 
     Munition::~Munition()
     {
-        for (std::map<WeaponMode*, Magazine*>::iterator it = this->assignedMagazines_.begin(); it != this->assignedMagazines_.end(); ++it)
-            delete it->second;
+        for (const auto& mapEntry : this->assignedMagazines_)
+            delete mapEntry.second;
     }
 
@@ -76,5 +76,5 @@
             // For separated magazines we definitively need a given user
             if (!user)
-                return 0;
+                return nullptr;
 
             // Use the map to get the magazine assigned to the given user
@@ -90,5 +90,5 @@
         }
 
-        return 0;
+        return nullptr;
     }
 
@@ -200,5 +200,5 @@
                     magazine->munition_ = 0;
 
-                    if (this->reload(NULL))
+                    if (this->reload(nullptr))
                         // Successfully reloaded, continue recursively
                         return this->takeMunition(amount, 0);
@@ -262,5 +262,5 @@
         if (deployment_ != MunitionDeployment::Separate)
         {
-            user = NULL;
+            user = nullptr;
         }
 
@@ -271,5 +271,5 @@
             if (it->first == lastFilledWeaponMode_)
             {
-                lastFilledWeaponMode_ = NULL;
+                lastFilledWeaponMode_ = nullptr;
             }            
             delete it->second;
@@ -299,6 +299,6 @@
         {
             // Return true if any of the current magazines is not full (loading counts as full although it returns 0 munition)
-            for (std::map<WeaponMode*, Magazine*>::const_iterator it = this->assignedMagazines_.begin(); it != this->assignedMagazines_.end(); ++it)
-                if (it->second->munition_ < this->maxMunitionPerMagazine_ && it->second->bLoaded_)
+            for (const auto& mapEntry : this->assignedMagazines_)
+                if (mapEntry.second->munition_ < this->maxMunitionPerMagazine_ && mapEntry.second->bLoaded_)
                     return true;
         }
@@ -315,5 +315,5 @@
         {
             // Stacking munition means, if a magazine gets full, the munition adds to a new magazine
-            Magazine* magazine = this->getMagazine(NULL);
+            Magazine* magazine = this->getMagazine(nullptr);
             if (magazine)
             {
@@ -345,7 +345,7 @@
             std::map<WeaponMode*, Magazine*>::iterator it;
 
-            // If the pointer to the weapon mode whose magazine got munition added to is NULL, then set the iterator to the beginning of the map
+            // If the pointer to the weapon mode whose magazine got munition added to is nullptr, then set the iterator to the beginning of the map
             // Otherwise set it to the next weapon mode
-            if (lastFilledWeaponMode_ == NULL)
+            if (lastFilledWeaponMode_ == nullptr)
             {
                 it = this->assignedMagazines_.begin();
@@ -441,9 +441,9 @@
         for (unsigned int i = 0; i < addedMagazines; ++i)
         {
-            for (std::map<WeaponMode*, Magazine*>::iterator it = this->assignedMagazines_.begin(); it != this->assignedMagazines_.end(); ++it)
-            {
-                if (needReload(it->first))
-                {
-                    reload(it->first);
+            for (const auto& mapEntry : this->assignedMagazines_)
+            {
+                if (needReload(mapEntry.first))
+                {
+                    reload(mapEntry.first);
                     break;
                 }
@@ -515,5 +515,5 @@
         // If we don't use separate magazines, set user to 0
         if (deployment_ != MunitionDeployment::Separate)
-            user = NULL;
+            user = nullptr;
 
         // Remove the current magazine for the given user
@@ -523,5 +523,5 @@
             if (it->first == lastFilledWeaponMode_)
             {
-                lastFilledWeaponMode_ = NULL;
+                lastFilledWeaponMode_ = nullptr;
             }
             delete it->second;
Index: code/trunk/src/orxonox/weaponsystem/Munition.h
===================================================================
--- code/trunk/src/orxonox/weaponsystem/Munition.h	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/Munition.h	(revision 11071)
@@ -39,13 +39,10 @@
 namespace orxonox
 {
-    namespace MunitionDeployment
+    enum class MunitionDeployment
     {
-        enum Value
-        {
-            Separate, // Every comsuming weapon mode has its own magazine. It is possible that one weapon mode is out of ammo while another still has some.
-            Share, // All comsuming weapon modes take their munition from the same magazine. If this magazine is empty a new one is loaded.
-            Stack // There is only one magazine where all the munition is stored. Use this deployment mode for heavy weapons loke rockets, bombs, ...
-        };
-    }
+        Separate, // Every comsuming weapon mode has its own magazine. It is possible that one weapon mode is out of ammo while another still has some.
+        Share, // All comsuming weapon modes take their munition from the same magazine. If this magazine is empty a new one is loaded.
+        Stack // There is only one magazine where all the munition is stored. Use this deployment mode for heavy weapons loke rockets, bombs, ...
+    };
 
     class _OrxonoxExport Munition : public BaseObject
@@ -69,5 +66,5 @@
             virtual ~Munition();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             unsigned int getNumMunition(WeaponMode* user) const;
@@ -80,5 +77,5 @@
             inline unsigned int getMaxMunitionPerMagazine() const
                 { return this->maxMunitionPerMagazine_; }
-            inline MunitionDeployment::Value getMunitionDeployment() const
+            inline MunitionDeployment getMunitionDeployment() const
                 { return deployment_; }
 
@@ -115,5 +112,5 @@
             std::map<WeaponMode*, Magazine*> assignedMagazines_; // Maps weapon modes to magazines that are currently used.
 
-            MunitionDeployment::Value deployment_; // Defines the behaviour how munition and magazines are distributed to the consuming weapon modes.
+            MunitionDeployment deployment_; // Defines the behaviour how munition and magazines are distributed to the consuming weapon modes.
 
             bool bAllowMunitionRefilling_;
Index: code/trunk/src/orxonox/weaponsystem/ReplenishingMunition.h
===================================================================
--- code/trunk/src/orxonox/weaponsystem/ReplenishingMunition.h	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/ReplenishingMunition.h	(revision 11071)
@@ -52,9 +52,9 @@
         public:
             ReplenishingMunition(Context* context);
-            virtual ~ReplenishingMunition() {}
+            virtual ~ReplenishingMunition() = default;
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
             
-            virtual float getProgress();
+            float getProgress();
             inline unsigned int getReplenishAmount() const
                 { return replenishAmount_; }
Index: code/trunk/src/orxonox/weaponsystem/Weapon.cc
===================================================================
--- code/trunk/src/orxonox/weaponsystem/Weapon.cc	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/Weapon.cc	(revision 11071)
@@ -45,6 +45,6 @@
         RegisterObject(Weapon);
 
-        this->weaponPack_ = 0;
-        this->weaponSlot_ = 0;
+        this->weaponPack_ = nullptr;
+        this->weaponSlot_ = nullptr;
         this->bReloading_ = false;
         this->reloadingWeaponmode_ = WeaponSystem::WEAPON_MODE_UNASSIGNED;
@@ -61,6 +61,6 @@
                 this->weaponPack_->removeWeapon(this);
 
-            for (std::multimap<unsigned int, WeaponMode*>::iterator it = this->weaponmodes_.begin(); it != this->weaponmodes_.end(); ++it)
-                it->second->destroy();
+            for (const auto& mapEntry : this->weaponmodes_)
+                mapEntry.second->destroy();
         }
     }
@@ -85,12 +85,12 @@
     {
         unsigned int i = 0;
-        for (std::multimap<unsigned int, WeaponMode*>::const_iterator it = this->weaponmodes_.begin(); it != this->weaponmodes_.end(); ++it)
+        for (const auto& mapEntry : this->weaponmodes_)
         {
             if (i == index)
-                return it->second;
+                return mapEntry.second;
 
             ++i;
         }
-        return 0;
+        return nullptr;
     }
 
@@ -140,6 +140,6 @@
     void Weapon::reload()
     {
-        for (std::multimap<unsigned int, WeaponMode*>::iterator it = this->weaponmodes_.begin(); it != this->weaponmodes_.end(); ++it)
-            it->second->reload();
+        for (const auto& mapEntry : this->weaponmodes_)
+            mapEntry.second->reload();
     }
 
@@ -152,12 +152,12 @@
     void Weapon::notifyWeaponModes()
     {
-        for (std::multimap<unsigned int, WeaponMode*>::iterator it = this->weaponmodes_.begin(); it != this->weaponmodes_.end(); ++it)
-            it->second->setWeapon(this);
+        for (const auto& mapEntry : this->weaponmodes_)
+            mapEntry.second->setWeapon(this);
     }
 
     void Weapon::updateMunition()
     {
-        for (std::multimap<unsigned int, WeaponMode*>::iterator it = this->weaponmodes_.begin(); it != this->weaponmodes_.end(); ++it)
-            it->second->updateMunition();
+        for (const auto& mapEnty : this->weaponmodes_)
+            mapEnty.second->updateMunition();
     }
 }
Index: code/trunk/src/orxonox/weaponsystem/Weapon.h
===================================================================
--- code/trunk/src/orxonox/weaponsystem/Weapon.h	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/Weapon.h	(revision 11071)
@@ -50,5 +50,5 @@
             virtual ~Weapon();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             void fire(unsigned int mode);
@@ -57,6 +57,6 @@
             void addWeaponmode(WeaponMode* weaponmode);
             WeaponMode* getWeaponmode(unsigned int index) const;
-            inline std::multimap<unsigned int, WeaponMode*>* getAllWeaponmodes()
-                { return &weaponmodes_; }
+            inline const std::multimap<unsigned int, WeaponMode*>& getAllWeaponmodes() const
+                { return weaponmodes_; }
             inline int getNumWeaponModes() const
                 { return weaponmodes_.size(); }
Index: code/trunk/src/orxonox/weaponsystem/WeaponMode.cc
===================================================================
--- code/trunk/src/orxonox/weaponsystem/WeaponMode.cc	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/WeaponMode.cc	(revision 11071)
@@ -51,8 +51,8 @@
         RegisterObject(WeaponMode);
 
-        this->weapon_ = 0;
+        this->weapon_ = nullptr;
         this->mode_ = WeaponSystem::WEAPON_MODE_UNASSIGNED;
 
-        this->munition_ = 0;
+        this->munition_ = nullptr;
         this->initialMunition_ = 0;
         this->initialMagazines_ = 0;
@@ -244,5 +244,5 @@
         else
         {
-            this->munition_ = NULL;
+            this->munition_ = nullptr;
         }
     }
Index: code/trunk/src/orxonox/weaponsystem/WeaponMode.h
===================================================================
--- code/trunk/src/orxonox/weaponsystem/WeaponMode.h	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/WeaponMode.h	(revision 11071)
@@ -52,5 +52,5 @@
             virtual ~WeaponMode();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             bool fire(float* reloadTime);
Index: code/trunk/src/orxonox/weaponsystem/WeaponPack.cc
===================================================================
--- code/trunk/src/orxonox/weaponsystem/WeaponPack.cc	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/WeaponPack.cc	(revision 11071)
@@ -44,5 +44,5 @@
         RegisterObject(WeaponPack);
 
-        this->weaponSystem_ = 0;
+        this->weaponSystem_ = nullptr;
     }
 
@@ -76,6 +76,6 @@
     void WeaponPack::fire(unsigned int weaponmode)
     {
-        for (std::vector<Weapon *>::iterator it = this->weapons_.begin(); it != this->weapons_.end(); ++it)
-            (*it)->fire(weaponmode);
+        for (Weapon* weapon : this->weapons_)
+            weapon->fire(weaponmode);
     }
 
@@ -86,6 +86,6 @@
     void WeaponPack::reload()
     {
-        for (std::vector<Weapon *>::iterator it = this->weapons_.begin(); it != this->weapons_.end(); ++it)
-            (*it)->reload();
+        for (Weapon* weapon : this->weapons_)
+            weapon->reload();
     }
 
@@ -107,5 +107,5 @@
         assert(it != this->weapons_.end());
         this->weapons_.erase(it);
-        weapon->setWeaponPack(0);
+        weapon->setWeaponPack(nullptr);
     }
 
@@ -114,18 +114,13 @@
         unsigned int i = 0;
 
-        for (std::vector<Weapon *>::const_iterator it = this->weapons_.begin(); it != this->weapons_.end(); ++it)
+        for (Weapon* weapon : this->weapons_)
         {
             if (i == index)
-                return (*it);
+                return weapon;
             ++i;
         }
 
-        return 0;
+        return nullptr;
     }
-
-    std::vector<Weapon*>* WeaponPack::getAllWeapons()
-    {
-        return &weapons_;        
-    }    
 
     void WeaponPack::addDefaultWeaponmodeLink(DefaultWeaponmodeLink* link)
@@ -137,19 +132,19 @@
     {
         unsigned int i = 0;
-        for (std::set<DefaultWeaponmodeLink*>::const_iterator it = this->links_.begin(); it != this->links_.end(); ++it)
+        for (DefaultWeaponmodeLink* link : this->links_)
         {
             if (i == index)
-                return (*it);
+                return link;
 
             ++i;
         }
-        return 0;
+        return nullptr;
     }
 
     unsigned int WeaponPack::getDesiredWeaponmode(unsigned int firemode) const
     {
-        for (std::set<DefaultWeaponmodeLink*>::const_iterator it = this->links_.begin(); it != this->links_.end(); ++it)
-            if ((*it)->getFiremode() == firemode)
-                return (*it)->getWeaponmode();
+        for (DefaultWeaponmodeLink* link : this->links_)
+            if (link->getFiremode() == firemode)
+                return link->getWeaponmode();
 
         return WeaponSystem::WEAPON_MODE_UNASSIGNED;
@@ -158,12 +153,12 @@
     void WeaponPack::notifyWeapons()
     {
-        for (std::vector<Weapon *>::const_iterator it = this->weapons_.begin(); it != this->weapons_.end(); ++it)
-            (*it)->setWeaponPack(this);
+        for (Weapon* weapon : this->weapons_)
+            weapon->setWeaponPack(this);
     }
 
     void WeaponPack::updateMunition()
     {
-        for (std::vector<Weapon *>::const_iterator it = this->weapons_.begin(); it != this->weapons_.end(); ++it)
-            (*it)->updateMunition();
+        for (Weapon* weapon : this->weapons_)
+            weapon->updateMunition();
     }
 }
Index: code/trunk/src/orxonox/weaponsystem/WeaponPack.h
===================================================================
--- code/trunk/src/orxonox/weaponsystem/WeaponPack.h	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/WeaponPack.h	(revision 11071)
@@ -44,5 +44,5 @@
             virtual ~WeaponPack();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             void fire(unsigned int weaponmode);
@@ -52,5 +52,6 @@
             void removeWeapon(Weapon * weapon);
             Weapon * getWeapon(unsigned int index) const;
-            std::vector<Weapon*>* getAllWeapons();
+            inline const std::vector<Weapon*>& getAllWeapons() const
+                { return weapons_; }
 
             inline size_t getNumWeapons() const
Index: code/trunk/src/orxonox/weaponsystem/WeaponSet.cc
===================================================================
--- code/trunk/src/orxonox/weaponsystem/WeaponSet.cc	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/WeaponSet.cc	(revision 11071)
@@ -43,5 +43,5 @@
         RegisterObject(WeaponSet);
 
-        this->weaponSystem_ = 0;
+        this->weaponSystem_ = nullptr;
         this->desiredFiremode_ = WeaponSystem::FIRE_MODE_UNASSIGNED;
     }
@@ -63,7 +63,7 @@
     {
         // Fire all WeaponPacks with their defined weaponmode
-        for (std::map<WeaponPack*, unsigned int>::iterator it = this->weaponpacks_.begin(); it != this->weaponpacks_.end(); ++it)
-            if (it->second != WeaponSystem::WEAPON_MODE_UNASSIGNED)
-                it->first->fire(it->second);
+        for (const auto& mapEntry : this->weaponpacks_)
+            if (mapEntry.second != WeaponSystem::WEAPON_MODE_UNASSIGNED)
+                mapEntry.first->fire(mapEntry.second);
     }
 
@@ -71,6 +71,6 @@
     {
         // Reload all WeaponPacks with their defined weaponmode
-        for (std::map<WeaponPack*, unsigned int>::iterator it = this->weaponpacks_.begin(); it != this->weaponpacks_.end(); ++it)
-            it->first->reload();
+        for (const auto& mapEntry : this->weaponpacks_)
+            mapEntry.first->reload();
     }
 
Index: code/trunk/src/orxonox/weaponsystem/WeaponSet.h
===================================================================
--- code/trunk/src/orxonox/weaponsystem/WeaponSet.h	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/WeaponSet.h	(revision 11071)
@@ -44,5 +44,5 @@
             virtual ~WeaponSet();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             void fire();
Index: code/trunk/src/orxonox/weaponsystem/WeaponSlot.cc
===================================================================
--- code/trunk/src/orxonox/weaponsystem/WeaponSlot.cc	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/WeaponSlot.cc	(revision 11071)
@@ -43,6 +43,6 @@
         RegisterObject(WeaponSlot);
 
-        this->weaponSystem_ = 0;
-        this->weapon_ = 0;
+        this->weaponSystem_ = nullptr;
+        this->weapon_ = nullptr;
 
         this->setSyncMode(ObjectDirection::None);
@@ -88,6 +88,6 @@
         if (this->weapon_)
         {
-            this->weapon_->setWeaponSlot(0);
-            this->weapon_ = 0;
+            this->weapon_->setWeaponSlot(nullptr);
+            this->weapon_ = nullptr;
         }
     }
Index: code/trunk/src/orxonox/weaponsystem/WeaponSlot.h
===================================================================
--- code/trunk/src/orxonox/weaponsystem/WeaponSlot.h	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/WeaponSlot.h	(revision 11071)
@@ -62,5 +62,5 @@
             virtual ~WeaponSlot();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             void attachWeapon(Weapon * weapon);
@@ -74,5 +74,5 @@
             */
             inline bool isOccupied() const
-                { return (this->weapon_ != 0); }
+                { return (this->weapon_ != nullptr); }
 
             inline void setWeaponSystem(WeaponSystem * weaponSystem)
Index: code/trunk/src/orxonox/weaponsystem/WeaponSystem.cc
===================================================================
--- code/trunk/src/orxonox/weaponsystem/WeaponSystem.cc	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/WeaponSystem.cc	(revision 11071)
@@ -52,5 +52,5 @@
         RegisterObject(WeaponSystem);
 
-        this->pawn_ = 0;
+        this->pawn_ = nullptr;
     }
 
@@ -60,5 +60,5 @@
         {
             if (this->pawn_)
-                this->pawn_->setWeaponSystem(0);
+                this->pawn_->setWeaponSystem(nullptr);
 
             while (!this->weaponSets_.empty())
@@ -106,11 +106,11 @@
     {
         unsigned int i = 0;
-        for (std::vector<WeaponSlot*>::const_iterator it = this->weaponSlots_.begin(); it != this->weaponSlots_.end(); ++it)
+        for (WeaponSlot* weaponSlot : this->weaponSlots_)
         {
             ++i;
             if (i > index)
-                return (*it);
-        }
-        return 0;
+                return weaponSlot;
+        }
+        return nullptr;
     }
 
@@ -153,11 +153,11 @@
     {
         unsigned int i = 0;
-        for (std::map<unsigned int, WeaponSet*>::const_iterator it = this->weaponSets_.begin(); it != this->weaponSets_.end(); ++it)
+        for (const auto& mapEntry : this->weaponSets_)
         {
             ++i;
             if (i > index)
-                return it->second;
-        }
-        return 0;
+                return mapEntry.second;
+        }
+        return nullptr;
     }
 
@@ -168,7 +168,7 @@
 
         unsigned int freeSlots = 0;
-        for (std::vector<WeaponSlot*>::iterator it = this->weaponSlots_.begin(); it != this->weaponSlots_.end(); ++it)
-        {
-            if (!(*it)->isOccupied())
+        for (WeaponSlot* weaponSlot : this->weaponSlots_)
+        {
+            if (!weaponSlot->isOccupied())
                 ++freeSlots;
         }
@@ -184,10 +184,10 @@
         // Attach all weapons to the first free slots (and to the Pawn)
         unsigned int i = 0;
-        for (std::vector<WeaponSlot*>::iterator it = this->weaponSlots_.begin(); it != this->weaponSlots_.end(); ++it)
-        {
-            if (!(*it)->isOccupied() && i < wPack->getNumWeapons())
+        for (WeaponSlot* weaponSlot : this->weaponSlots_)
+        {
+            if (!weaponSlot->isOccupied() && i < wPack->getNumWeapons())
             {
                 Weapon* weapon = wPack->getWeapon(i);
-                (*it)->attachWeapon(weapon);
+                weaponSlot->attachWeapon(weapon);
                 this->getPawn()->attach(weapon);
                 ++i;
@@ -196,9 +196,9 @@
 
         // Assign the desired weaponmode to the firemodes
-        for (std::map<unsigned int, WeaponSet *>::iterator it = this->weaponSets_.begin(); it != this->weaponSets_.end(); ++it)
-        {
-            unsigned int weaponmode = wPack->getDesiredWeaponmode(it->first);
+        for (const auto& mapEntry : this->weaponSets_)
+        {
+            unsigned int weaponmode = wPack->getDesiredWeaponmode(mapEntry.first);
             if (weaponmode != WeaponSystem::WEAPON_MODE_UNASSIGNED)
-                it->second->setWeaponmodeLink(wPack, weaponmode);
+                mapEntry.second->setWeaponmodeLink(wPack, weaponmode);
         }
 
@@ -213,5 +213,5 @@
         // Remove all weapons from their WeaponSlot
         unsigned int i = 0;
-        Weapon* weapon = 0;
+        Weapon* weapon = nullptr;
         while ((weapon = wPack->getWeapon(i++)))
             if (weapon->getWeaponSlot())
@@ -219,6 +219,6 @@
 
         // Remove all added links from the WeaponSets
-        for (std::map<unsigned int, WeaponSet *>::iterator it = this->weaponSets_.begin(); it != this->weaponSets_.end(); ++it)
-            it->second->removeWeaponmodeLink(wPack);
+        for (const auto& mapEntry : this->weaponSets_)
+            mapEntry.second->removeWeaponmodeLink(wPack);
 
         // Remove the WeaponPack from the WeaponSystem
@@ -231,17 +231,12 @@
     {
         unsigned int i = 0;
-        for (std::vector<WeaponPack*>::const_iterator it = this->weaponPacks_.begin(); it != this->weaponPacks_.end(); ++it)
+        for (WeaponPack* weaponPack : this->weaponPacks_)
         {
             ++i;
             if (i > index)
-                return (*it);
-        }
-        return 0;
-    }
-
-    std::vector<WeaponPack *> * WeaponSystem::getAllWeaponPacks()
-    {
-        return &weaponPacks_;
-    }    
+                return weaponPack;
+        }
+        return nullptr;
+    }
 
     bool WeaponSystem::swapWeaponSlots(WeaponSlot * wSlot1, WeaponSlot * wSlot2)
@@ -273,7 +268,7 @@
         // Check if the WeaponSet belongs to this WeaponSystem
         bool foundWeaponSet = false;
-        for (std::map<unsigned int, WeaponSet *>::iterator it2 = this->weaponSets_.begin(); it2 != this->weaponSets_.end(); ++it2)
-        {
-            if (it2->second == wSet)
+        for (const auto& mapEntry : this->weaponSets_)
+        {
+            if (mapEntry.second == wSet)
             {
                 foundWeaponSet = true;
@@ -301,6 +296,6 @@
     void WeaponSystem::reload()
     {
-        for (std::map<unsigned int, WeaponSet *>::iterator it = this->weaponSets_.begin(); it != this->weaponSets_.end(); ++it)
-            it->second->reload();
+        for (const auto& mapEntry : this->weaponSets_)
+            mapEntry.second->reload();
     }
 
@@ -308,5 +303,5 @@
     {
         if (!identifier || !identifier->getIdentifier())
-            return 0;
+            return nullptr;
 
         std::map<Identifier *, Munition *>::iterator it = this->munitions_.find(identifier->getIdentifier());
@@ -317,5 +312,5 @@
         else
         {
-            return NULL;
+            return nullptr;
         }
     }
@@ -323,5 +318,5 @@
     void WeaponSystem::addMunition(Munition* munition)
     {
-        if (munition == NULL)
+        if (munition == nullptr)
         {
             return;
@@ -337,5 +332,5 @@
         else
         {
-            orxout(internal_warning) << "Adding munition failed. identifier == NULL " << endl;
+            orxout(internal_warning) << "Adding munition failed. identifier == nullptr " << endl;
         }
     }
@@ -343,7 +338,7 @@
     void WeaponSystem::updateMunition()
     {
-        for (std::vector<WeaponPack*>::iterator it = this->weaponPacks_.begin(); it != this->weaponPacks_.end(); ++it)
-        {
-            (*it)->updateMunition();
+        for (WeaponPack* weaponPack : this->weaponPacks_)
+        {
+            weaponPack->updateMunition();
         }
     }
Index: code/trunk/src/orxonox/weaponsystem/WeaponSystem.h
===================================================================
--- code/trunk/src/orxonox/weaponsystem/WeaponSystem.h	(revision 11052)
+++ code/trunk/src/orxonox/weaponsystem/WeaponSystem.h	(revision 11071)
@@ -67,5 +67,6 @@
             void removeWeaponPack(WeaponPack * wPack);
             WeaponPack * getWeaponPack(unsigned int index) const;
-            std::vector<WeaponPack *> * getAllWeaponPacks();
+            inline const std::vector<WeaponPack *>& getAllWeaponPacks() const
+                { return weaponPacks_; }
 
             // configure slots and firemodes
Index: code/trunk/src/orxonox/worldentities/Actionpoint.h
===================================================================
--- code/trunk/src/orxonox/worldentities/Actionpoint.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/Actionpoint.h	(revision 11071)
@@ -92,7 +92,7 @@
         public:
             Actionpoint(Context* context);
-            virtual ~Actionpoint() {}
+            virtual ~Actionpoint() = default;
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             /** @brief Decides what AI will do. @param val action to execute */
Index: code/trunk/src/orxonox/worldentities/CameraPosition.h
===================================================================
--- code/trunk/src/orxonox/worldentities/CameraPosition.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/CameraPosition.h	(revision 11071)
@@ -41,5 +41,5 @@
             virtual ~CameraPosition();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             inline void setDrag(bool bDrag)
Index: code/trunk/src/orxonox/worldentities/ControllableEntity.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/ControllableEntity.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/ControllableEntity.cc	(revision 11071)
@@ -61,15 +61,15 @@
         this->server_overwrite_ = 0;
         this->client_overwrite_ = 0;
-        this->player_ = 0;
-        this->formerPlayer_ = NULL;
+        this->player_ = nullptr;
+        this->formerPlayer_ = nullptr;
         this->playerID_ = OBJECTID_UNKNOWN;
-        this->hud_ = 0;
-        this->camera_ = 0;
-        this->xmlcontroller_ = 0;
-        //this->controller_ = 0;
-        this->reverseCamera_ = 0;
+        this->hud_ = nullptr;
+        this->camera_ = nullptr;
+        this->xmlcontroller_ = nullptr;
+        //this->controller_ = nullptr;
+        this->reverseCamera_ = nullptr;
         this->bDestroyWhenPlayerLeft_ = false;
         this->cameraPositionRootNode_ = this->node_->createChildSceneNode();
-        this->currentCameraPosition_ = 0;
+        this->currentCameraPosition_ = nullptr;
         this->bMouseLook_ = false;
         this->mouseLookSpeed_ = 200;
@@ -108,6 +108,6 @@
                 this->camera_->destroy();
 
-            for (std::list<StrongPtr<CameraPosition> >::const_iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
-                (*it)->destroy();
+            for (CameraPosition* cameraPosition : this->cameraPositions_)
+                cameraPosition->destroy();
 
             if (this->getScene()->getSceneManager())
@@ -165,11 +165,11 @@
     {
         unsigned int i = 0;
-        for (std::list<StrongPtr<CameraPosition> >::const_iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
+        for (CameraPosition* cameraPosition : this->cameraPositions_)
         {
             if (i == index)
-                return (*it);
+                return cameraPosition;
             ++i;
         }
-        return 0;
+        return nullptr;
     }
 
@@ -180,7 +180,7 @@
 
         unsigned int counter = 0;
-        for (std::list<StrongPtr<CameraPosition> >::const_iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
-        {
-            if ((*it) == this->currentCameraPosition_)
+        for (CameraPosition* cameraPosition : this->cameraPositions_)
+        {
+            if (cameraPosition == this->currentCameraPosition_)
                 break;
             counter++;
@@ -194,5 +194,5 @@
     bool ControllableEntity::setCameraPosition(unsigned int index)
     {
-        if(this->camera_ != NULL && this->cameraPositions_.size() > 0)
+        if(this->camera_ != nullptr && this->cameraPositions_.size() > 0)
         {
             if(index >= this->cameraPositions_.size())
@@ -219,5 +219,5 @@
             else if (this->cameraPositions_.size() > 0)
             {
-                for (std::list<StrongPtr<CameraPosition> >::const_iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
+                for (std::list<StrongPtr<CameraPosition>>::const_iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
                 {
                     if ((*it) == this->camera_->getParent())
@@ -241,5 +241,5 @@
             {
                 this->camera_->attachToNode(this->cameraPositionRootNode_);
-                this->currentCameraPosition_ = 0;
+                this->currentCameraPosition_ = nullptr;
             }
 
@@ -321,5 +321,5 @@
         if ( !GameMode::isMaster() )
         {
-            if ( target != 0 )
+            if ( target != nullptr )
             {
                 callMemberNetworkFunction(&ControllableEntity::setTargetInternal, this->getObjectID(), 0, target->getObjectID() );
@@ -350,5 +350,5 @@
         this->bHasLocalController_ = player->isLocalPlayer();
         this->bHasHumanController_ = player->isHumanPlayer();
-        if(controller_ != NULL)
+        if(controller_ != nullptr)
             this->team_ = controller_->getTeam(); // forward controller team number
 
@@ -372,5 +372,5 @@
             this->stopLocalHumanControl();
 
-        this->player_ = 0;
+        this->player_ = nullptr;
         this->playerID_ = OBJECTID_UNKNOWN;
         this->bHasLocalController_ = false;
@@ -411,5 +411,5 @@
             {
                 this->camera_->attachToNode(this->cameraPositionRootNode_);
-                this->currentCameraPosition_ = 0;
+                this->currentCameraPosition_ = nullptr;
             }
         }
@@ -434,8 +434,8 @@
     void ControllableEntity::destroyHud(void)
     {
-        if (this->hud_ != NULL)
+        if (this->hud_ != nullptr)
         {
             this->hud_->destroy();
-            this->hud_ = NULL;
+            this->hud_ = nullptr;
         }
     }
@@ -447,5 +447,5 @@
             this->camera_->detachFromParent();
             this->camera_->destroy();
-            this->camera_ = 0;
+            this->camera_ = nullptr;
         }
 
@@ -453,5 +453,5 @@
         {
             this->hud_->destroy();
-            this->hud_ = 0;
+            this->hud_ = nullptr;
         }
     }
@@ -477,7 +477,7 @@
         if (parent)
         {
-            for (std::list<StrongPtr<CameraPosition> >::iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
-                if ((*it)->getIsAbsolute())
-                    parent->attach((*it));
+            for (CameraPosition* cameraPosition : this->cameraPositions_)
+                if (cameraPosition->getIsAbsolute())
+                    parent->attach(cameraPosition);
         }
     }
Index: code/trunk/src/orxonox/worldentities/ControllableEntity.h
===================================================================
--- code/trunk/src/orxonox/worldentities/ControllableEntity.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/ControllableEntity.h	(revision 11071)
@@ -54,6 +54,6 @@
             virtual ~ControllableEntity();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            virtual void tick(float dt);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+            virtual void tick(float dt) override;
             void setConfigValues();
 
@@ -121,5 +121,5 @@
             void addCameraPosition(CameraPosition* position);
             CameraPosition* getCameraPosition(unsigned int index) const;
-            inline const std::list<StrongPtr<CameraPosition> >& getCameraPositions() const
+            inline const std::list<StrongPtr<CameraPosition>>& getCameraPositions() const
                 { return this->cameraPositions_; }
             unsigned int getCurrentCameraIndex() const;
@@ -141,8 +141,8 @@
             using MobileEntity::setAngularVelocity;
 
-            void setPosition(const Vector3& position);
-            void setOrientation(const Quaternion& orientation);
-            void setVelocity(const Vector3& velocity);
-            void setAngularVelocity(const Vector3& velocity);
+            virtual void setPosition(const Vector3& position) override;
+            virtual void setOrientation(const Quaternion& orientation) override;
+            virtual void setVelocity(const Vector3& velocity) override;
+            virtual void setAngularVelocity(const Vector3& velocity) override;
 
             inline bool hasLocalController() const
@@ -177,5 +177,5 @@
 
         protected:
-            virtual void preDestroy();
+            virtual void preDestroy() override;
 
             virtual void setPlayer(PlayerInfo* player); // don't call this directly, use friend class PlayerInfo instead
@@ -184,5 +184,5 @@
             virtual void startLocalHumanControl();
             virtual void stopLocalHumanControl();
-            virtual void parentChanged();
+            virtual void parentChanged() override;
 
             inline void setHudTemplate(const std::string& name)
@@ -214,5 +214,5 @@
 
             // Bullet btMotionState related
-            void setWorldTransform(const btTransform& worldTrans);
+            virtual void setWorldTransform(const btTransform& worldTrans) override;
 
             unsigned int server_overwrite_;
@@ -242,5 +242,5 @@
             bool bMouseLook_;
             float mouseLookSpeed_;
-            std::list<StrongPtr<CameraPosition> > cameraPositions_;
+            std::list<StrongPtr<CameraPosition>> cameraPositions_;
             CameraPosition* currentCameraPosition_;
             std::string cameraPositionTemplate_;
Index: code/trunk/src/orxonox/worldentities/Drone.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/Drone.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/Drone.cc	(revision 11071)
@@ -30,4 +30,5 @@
 
 #include "core/XMLPort.h"
+#include "core/CoreIncludes.h"
 #include "BulletDynamics/Dynamics/btRigidBody.h"
 
@@ -43,10 +44,10 @@
         RegisterObject(Drone);
 
-        this->myController_ = 0;
+        this->myController_ = nullptr;
 
         this->localLinearAcceleration_.setValue(0, 0, 0);
         this->localAngularAcceleration_.setValue(0, 0, 0);
         this->setRadarVisibility(false);
-        this->setCollisionType(WorldEntity::Dynamic);
+        this->setCollisionType(WorldEntity::CollisionType::Dynamic);
 
         myController_ = new DroneController(this->getContext()); //!< Creates a new controller and passes our this pointer to it as creator.
Index: code/trunk/src/orxonox/worldentities/Drone.h
===================================================================
--- code/trunk/src/orxonox/worldentities/Drone.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/Drone.h	(revision 11071)
@@ -50,15 +50,15 @@
             virtual ~Drone();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a Drone through XML.
-            virtual void tick(float dt); //!< Defines which actions the Drone has to take in each tick.
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override; //!< Method for creating a Drone through XML.
+            virtual void tick(float dt) override; //!< Defines which actions the Drone has to take in each tick.
 
 
-            virtual void moveFrontBack(const Vector2& value);
-            virtual void moveRightLeft(const Vector2& value);
-            virtual void moveUpDown(const Vector2& value);
+            virtual void moveFrontBack(const Vector2& value) override;
+            virtual void moveRightLeft(const Vector2& value) override;
+            virtual void moveUpDown(const Vector2& value) override;
 
-            virtual void rotateYaw(const Vector2& value);
-            virtual void rotatePitch(const Vector2& value);
-            virtual void rotateRoll(const Vector2& value);
+            virtual void rotateYaw(const Vector2& value) override;
+            virtual void rotatePitch(const Vector2& value) override;
+            virtual void rotateRoll(const Vector2& value) override;
 
             /**
Index: code/trunk/src/orxonox/worldentities/EffectContainer.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/EffectContainer.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/EffectContainer.cc	(revision 11071)
@@ -44,5 +44,5 @@
     EffectContainer::EffectContainer(Context* context)
         : BaseObject(context)
-        , lua_(NULL)
+        , lua_(nullptr)
     {
         RegisterObject(EffectContainer);
@@ -89,8 +89,8 @@
     {
         unsigned int i = 0;
-        for (std::vector<WorldEntity*>::const_iterator it = this->effects_.begin(); it != this->effects_.end(); ++it)
+        for (WorldEntity* effect : this->effects_)
             if (i == index)
-                return (*it);
-        return NULL;
+                return effect;
+        return nullptr;
     }
 
@@ -103,7 +103,7 @@
             bool result = (bool)lua_toboolean(this->lua_->getInternalLuaState(), -1);
             lua_pop(this->lua_->getInternalLuaState(), 1);
-            for (std::vector<WorldEntity*>::const_iterator it = this->effects_.begin(); it != this->effects_.end(); ++it)
+            for (WorldEntity* effect : this->effects_)
             {
-                (*it)->setMainState(result);
+                effect->setMainState(result);
             }
         }
Index: code/trunk/src/orxonox/worldentities/EffectContainer.h
===================================================================
--- code/trunk/src/orxonox/worldentities/EffectContainer.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/EffectContainer.h	(revision 11071)
@@ -43,5 +43,5 @@
             virtual ~EffectContainer();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             void setLuaState(LuaState* state, const std::string& functionName);
@@ -54,8 +54,6 @@
             WorldEntity* getEffect(unsigned int index) const;
 
-            inline std::vector<WorldEntity*>::const_iterator getEffectsBegin()
-                { return this->effects_.begin(); }
-            inline std::vector<WorldEntity*>::const_iterator getEffectsEnd()
-                { return this->effects_.end(); }
+            inline const std::vector<WorldEntity*>& getEffects() const
+                { return this->effects_; }
 
             void updateCondition();
Index: code/trunk/src/orxonox/worldentities/ExplosionChunk.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/ExplosionChunk.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/ExplosionChunk.cc	(revision 11071)
@@ -62,12 +62,12 @@
             {
                 orxout(internal_error) << "Couldn't load particle effect in ExplosionChunk: " << ex.what() << endl;
-                this->fire_ = 0;
-                this->smoke_ = 0;
+                this->fire_ = nullptr;
+                this->smoke_ = nullptr;
             }
         }
         else
         {
-            this->fire_ = 0;
-            this->smoke_ = 0;
+            this->fire_ = nullptr;
+            this->smoke_ = nullptr;
         }
 
Index: code/trunk/src/orxonox/worldentities/ExplosionChunk.h
===================================================================
--- code/trunk/src/orxonox/worldentities/ExplosionChunk.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/ExplosionChunk.h	(revision 11071)
@@ -43,5 +43,5 @@
             virtual ~ExplosionChunk();
 
-            virtual void tick(float dt);
+            virtual void tick(float dt) override;
 
             inline void setLOD(LODParticle::Value level)
Index: code/trunk/src/orxonox/worldentities/ExplosionPart.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/ExplosionPart.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/ExplosionPart.cc	(revision 11071)
@@ -47,6 +47,6 @@
         this->effect2_ = "";
         this->model_= new Model(this->getContext());
-        this->effect1Particle_= NULL;
-        this->effect2Particle_= NULL;
+        this->effect1Particle_= nullptr;
+        this->effect2Particle_= nullptr;
         this->explosionEntity_ = new MovableEntity(this->getContext());
         this->posOffset_ = Vector3::ZERO;
Index: code/trunk/src/orxonox/worldentities/ExplosionPart.h
===================================================================
--- code/trunk/src/orxonox/worldentities/ExplosionPart.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/ExplosionPart.h	(revision 11071)
@@ -51,5 +51,6 @@
             ExplosionPart(Context* context);
             ~ExplosionPart();
-            void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+
             void Explode();
             void stop();
Index: code/trunk/src/orxonox/worldentities/MobileEntity.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/MobileEntity.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/MobileEntity.cc	(revision 11071)
@@ -189,5 +189,5 @@
     bool MobileEntity::isCollisionTypeLegal(WorldEntity::CollisionType type) const
     {
-        if (type == WorldEntity::Static)
+        if (type == WorldEntity::CollisionType::Static)
         {
             orxout(internal_warning) << "Cannot tell a MobileEntity to have static collision type! Ignoring." << endl;
Index: code/trunk/src/orxonox/worldentities/MobileEntity.h
===================================================================
--- code/trunk/src/orxonox/worldentities/MobileEntity.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/MobileEntity.h	(revision 11071)
@@ -57,14 +57,14 @@
             virtual ~MobileEntity();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            virtual void tick(float dt);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+            virtual void tick(float dt) override;
 
-            virtual void setPosition(const Vector3& position);
-            virtual void setOrientation(const Quaternion& orientation);
+            virtual void setPosition(const Vector3& position) override;
+            virtual void setOrientation(const Quaternion& orientation) override;
 
             virtual void setVelocity(const Vector3& velocity);
             inline void setVelocity(float x, float y, float z)
                 { this->setVelocity(Vector3(x, y, z)); }
-            inline const Vector3& getVelocity() const
+            virtual inline const Vector3& getVelocity() const override
                 { return this->linearVelocity_; }
             /**
@@ -110,6 +110,6 @@
         protected:
             // Bullet btMotionState related
-            virtual void setWorldTransform(const btTransform& worldTrans);
-            void getWorldTransform(btTransform& worldTrans) const;
+            virtual void setWorldTransform(const btTransform& worldTrans) override;
+            virtual void getWorldTransform(btTransform& worldTrans) const override;
 
             Vector3 linearAcceleration_;
@@ -119,5 +119,5 @@
 
         private:
-            virtual bool isCollisionTypeLegal(WorldEntity::CollisionType type) const;
+            virtual bool isCollisionTypeLegal(WorldEntity::CollisionType type) const override;
     };
 }
Index: code/trunk/src/orxonox/worldentities/MovableEntity.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/MovableEntity.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/MovableEntity.cc	(revision 11071)
@@ -50,5 +50,5 @@
         this->overwrite_orientation_ = Quaternion::IDENTITY;
 
-        this->continuousResynchroTimer_ = 0;
+        this->continuousResynchroTimer_ = nullptr;
 
         this->setPriority(Priority::Low);
@@ -80,5 +80,5 @@
             {
                 float damage = this->collisionDamage_ * (victim->getVelocity() - this->getVelocity()).length();
-                victim->hit(0, contactPoint, ownCollisionShape, damage);
+                victim->hit(nullptr, contactPoint, ownCollisionShape, damage);
             }
         }
Index: code/trunk/src/orxonox/worldentities/MovableEntity.h
===================================================================
--- code/trunk/src/orxonox/worldentities/MovableEntity.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/MovableEntity.h	(revision 11071)
@@ -46,13 +46,13 @@
             virtual ~MovableEntity();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint) override;
 
             using WorldEntity::setPosition;
             using WorldEntity::setOrientation;
 
-            inline void setPosition(const Vector3& position)
+            virtual inline void setPosition(const Vector3& position) override
                 { MobileEntity::setPosition(position); this->overwrite_position_ = this->getPosition(); }
-            inline void setOrientation(const Quaternion& orientation)
+            virtual inline void setOrientation(const Quaternion& orientation) override
                 { MobileEntity::setOrientation(orientation); this->overwrite_orientation_ = this->getOrientation(); }
 
@@ -79,6 +79,6 @@
         private:
             void registerVariables();
-            void clientConnected(unsigned int clientID);
-            void clientDisconnected(unsigned int clientID);
+            virtual void clientConnected(unsigned int clientID) override;
+            virtual void clientDisconnected(unsigned int clientID) override;
             void resynchronize();
 
Index: code/trunk/src/orxonox/worldentities/SpawnPoint.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/SpawnPoint.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/SpawnPoint.cc	(revision 11071)
@@ -43,5 +43,5 @@
         RegisterObject(SpawnPoint);
 
-        this->template_ = 0;
+        this->template_ = nullptr;
 
         if (this->getGametype())
Index: code/trunk/src/orxonox/worldentities/SpawnPoint.h
===================================================================
--- code/trunk/src/orxonox/worldentities/SpawnPoint.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/SpawnPoint.h	(revision 11071)
@@ -44,5 +44,5 @@
             virtual ~SpawnPoint() {}
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             inline void setSpawnClass(Identifier* identifier)
Index: code/trunk/src/orxonox/worldentities/StaticEntity.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/StaticEntity.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/StaticEntity.cc	(revision 11071)
@@ -95,5 +95,5 @@
     bool StaticEntity::isCollisionTypeLegal(WorldEntity::CollisionType type) const
     {
-        if (type == WorldEntity::Kinematic || type == WorldEntity::Dynamic)
+        if (type == WorldEntity::CollisionType::Kinematic || type == WorldEntity::CollisionType::Dynamic)
         {
             orxout(internal_warning) << "Cannot tell a StaticEntity to have kinematic or dynamic collision type! Ignoring." << endl;
Index: code/trunk/src/orxonox/worldentities/StaticEntity.h
===================================================================
--- code/trunk/src/orxonox/worldentities/StaticEntity.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/StaticEntity.h	(revision 11071)
@@ -57,10 +57,10 @@
             using WorldEntity::setOrientation;
 
-            void setPosition(const Vector3& position);
-            void setOrientation(const Quaternion& orientation);
+            virtual void setPosition(const Vector3& position) override;
+            virtual void setOrientation(const Quaternion& orientation) override;
 
         private:
             void registerVariables();
-            bool isCollisionTypeLegal(CollisionType type) const;
+            virtual bool isCollisionTypeLegal(CollisionType type) const override;
 
             // network callbacks
@@ -71,6 +71,6 @@
 
             // Bullet btMotionState related
-            void setWorldTransform(const btTransform& worldTrans);
-            void getWorldTransform(btTransform& worldTrans) const;
+            virtual void setWorldTransform(const btTransform& worldTrans) override;
+            virtual void getWorldTransform(btTransform& worldTrans) const override;
     };
 }
Index: code/trunk/src/orxonox/worldentities/TeamSpawnPoint.h
===================================================================
--- code/trunk/src/orxonox/worldentities/TeamSpawnPoint.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/TeamSpawnPoint.h	(revision 11071)
@@ -43,5 +43,5 @@
             virtual ~TeamSpawnPoint() {}
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             void setTeamNumber(unsigned int team)
@@ -49,5 +49,5 @@
             unsigned int getTeamNumber() const
                 { return this->teamNumber_; }
-            virtual Pawn* spawn();
+            virtual Pawn* spawn() override;
 
         private:
Index: code/trunk/src/orxonox/worldentities/WorldEntity.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/WorldEntity.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/WorldEntity.cc	(revision 11071)
@@ -37,5 +37,4 @@
 #include <OgreSceneNode.h>
 #include <BulletDynamics/Dynamics/btRigidBody.h>
-#include <boost/static_assert.hpp>
 
 #include "util/OrxAssert.h"
@@ -57,7 +56,7 @@
 
     // Be sure we don't do bad conversions
-    BOOST_STATIC_ASSERT((int)Ogre::Node::TS_LOCAL  == (int)WorldEntity::Local);
-    BOOST_STATIC_ASSERT((int)Ogre::Node::TS_PARENT == (int)WorldEntity::Parent);
-    BOOST_STATIC_ASSERT((int)Ogre::Node::TS_WORLD  == (int)WorldEntity::World);
+    static_assert((int)Ogre::Node::TS_LOCAL  == (int)WorldEntity::TransformSpace::Local,  "check enum");
+    static_assert((int)Ogre::Node::TS_PARENT == (int)WorldEntity::TransformSpace::Parent, "check enum");
+    static_assert((int)Ogre::Node::TS_WORLD  == (int)WorldEntity::TransformSpace::World,  "check enum");
 
     RegisterAbstractClass(WorldEntity).inheritsFrom<BaseObject>().inheritsFrom<Synchronisable>();
@@ -77,5 +76,5 @@
         this->node_ = this->getScene()->getRootSceneNode()->createChildSceneNode();
 
-        this->parent_ = 0;
+        this->parent_ = nullptr;
         this->parentID_ = OBJECTID_UNKNOWN;
         this->bDeleteWithParent_ = true;
@@ -90,5 +89,5 @@
 
         // Default behaviour does not include physics
-        this->physicalBody_   = 0;
+        this->physicalBody_   = nullptr;
         this->bPhysicsActive_ = false;
         this->bPhysicsActiveSynchronised_    = false;
@@ -96,6 +95,6 @@
         this->collisionShape_ = new WorldEntityCollisionShape(this->getContext());
         this->collisionShape_->setWorldEntityOwner(this);
-        this->collisionType_             = None;
-        this->collisionTypeSynchronised_ = None;
+        this->collisionType_             = CollisionType::None;
+        this->collisionTypeSynchronised_ = CollisionType::None;
         this->mass_                 = 1.0f;
         this->childrenMass_         = 0;
@@ -208,5 +207,5 @@
         registerVariable(this->bCollisionResponseActive_,
                                                 VariableDirection::ToClient, new NetworkCallback<WorldEntity>(this, &WorldEntity::collisionResponseActivityChanged));
-        registerVariable((int&)this->collisionTypeSynchronised_,
+        registerVariable(this->collisionTypeSynchronised_,
                                                 VariableDirection::ToClient, new NetworkCallback<WorldEntity>(this, &WorldEntity::collisionTypeChanged));
         registerVariable(this->bPhysicsActiveSynchronised_,
@@ -234,14 +233,14 @@
 
             // iterate over all children and change their activity as well
-            for (std::set<WorldEntity*>::const_iterator it = this->getAttachedObjects().begin(); it != this->getAttachedObjects().end(); it++)
+            for (WorldEntity* object : this->getAttachedObjects())
             {
                 if(!this->isActive())
                 {
-                    (*it)->bActiveMem_ = (*it)->isActive();
-                    (*it)->setActive(this->isActive());
+                    object->bActiveMem_ = object->isActive();
+                    object->setActive(this->isActive());
                 }
                 else
                 {
-                    (*it)->setActive((*it)->bActiveMem_);
+                    object->setActive(object->bActiveMem_);
                 }
             }
@@ -260,14 +259,14 @@
         {
             // iterate over all children and change their visibility as well
-            for (std::set<WorldEntity*>::const_iterator it = this->getAttachedObjects().begin(); it != this->getAttachedObjects().end(); it++)
+            for (WorldEntity* object : this->getAttachedObjects())
             {
                 if(!this->isVisible())
                 {
-                    (*it)->bVisibleMem_ = (*it)->isVisible();
-                    (*it)->setVisible(this->isVisible());
+                    object->bVisibleMem_ = object->isVisible();
+                    object->setVisible(this->isVisible());
                 }
                 else
                 {
-                    (*it)->setVisible((*it)->bVisibleMem_);
+                    object->setVisible(object->bVisibleMem_);
                 }
             }
@@ -323,8 +322,8 @@
     void WorldEntity::collisionTypeChanged()
     {
-        if (this->collisionTypeSynchronised_ != Dynamic &&
-            this->collisionTypeSynchronised_ != Kinematic &&
-            this->collisionTypeSynchronised_ != Static &&
-            this->collisionTypeSynchronised_ != None)
+        if (this->collisionTypeSynchronised_ != CollisionType::Dynamic &&
+            this->collisionTypeSynchronised_ != CollisionType::Kinematic &&
+            this->collisionTypeSynchronised_ != CollisionType::Static &&
+            this->collisionTypeSynchronised_ != CollisionType::None)
         {
             orxout(internal_error) << "Error when collsion Type was received over network. Unknown enum value:" << this->collisionTypeSynchronised_ << endl;
@@ -498,5 +497,5 @@
     void WorldEntity::notifyDetached()
     {
-        this->parent_ = 0;
+        this->parent_ = nullptr;
         this->parentID_ = OBJECTID_UNKNOWN;
 
@@ -519,11 +518,11 @@
     {
         unsigned int i = 0;
-        for (std::set<WorldEntity*>::const_iterator it = this->children_.begin(); it != this->children_.end(); ++it)
+        for (WorldEntity* child : this->children_)
         {
             if (i == index)
-                return (*it);
+                return child;
             ++i;
         }
-        return 0;
+        return nullptr;
     }
 
@@ -563,5 +562,5 @@
     void WorldEntity::detachOgreObject(Ogre::MovableObject* object)
     {
-        object->setUserAny(Ogre::Any(static_cast<OrxonoxClass*>(NULL)));
+        object->setUserAny(Ogre::Any(static_cast<OrxonoxClass*>(nullptr)));
         this->node_->detachObject(object);
     }
@@ -660,5 +659,5 @@
     {
         // If physics is enabled scale the attached CollisionShape.
-        /*if (this->hasPhysics() && this->collisionShape_ != NULL)
+        /*if (this->hasPhysics() && this->collisionShape_ != nullptr)
         {
             this->collisionShape_->setScale3D(scale);
@@ -682,12 +681,12 @@
         switch (relativeTo)
         {
-        case WorldEntity::Local:
+        case TransformSpace::Local:
             // position is relative to parent so transform downwards
             this->setPosition(this->getPosition() + this->getOrientation() * distance);
             break;
-        case WorldEntity::Parent:
+        case TransformSpace::Parent:
             this->setPosition(this->getPosition() + distance);
             break;
-        case WorldEntity::World:
+        case TransformSpace::World:
             // position is relative to parent so transform upwards
             if (this->node_->getParent())
@@ -712,12 +711,12 @@
         switch(relativeTo)
         {
-        case WorldEntity::Local:
+        case TransformSpace::Local:
             this->setOrientation(this->getOrientation() * rotation);
             break;
-        case WorldEntity::Parent:
+        case TransformSpace::Parent:
             // Rotations are normally relative to local axes, transform up
             this->setOrientation(rotation * this->getOrientation());
             break;
-        case WorldEntity::World:
+        case TransformSpace::World:
             // Rotations are normally relative to local axes, transform up
             this->setOrientation(this->getOrientation() * this->getWorldOrientation().Inverse()
@@ -742,11 +741,11 @@
         switch (relativeTo)
         {
-        case WorldEntity::Local:
+        case TransformSpace::Local:
             origin = Vector3::ZERO;
             break;
-        case WorldEntity::Parent:
+        case TransformSpace::Parent:
             origin = this->getPosition();
             break;
-        case WorldEntity::World:
+        case TransformSpace::World:
             origin = this->getWorldPosition();
             break;
@@ -832,5 +831,5 @@
 
         // Check whether we have to create or destroy.
-        if (type != None && this->collisionType_ == None)
+        if (type != CollisionType::None && this->collisionType_ == CollisionType::None)
         {
 /*
@@ -850,5 +849,5 @@
             this->physicalBody_->setActivationState(DISABLE_DEACTIVATION);
         }
-        else if (type == None && this->collisionType_ != None)
+        else if (type == CollisionType::None && this->collisionType_ != CollisionType::None)
         {
             // Destroy rigid body
@@ -856,7 +855,7 @@
             deactivatePhysics();
             delete this->physicalBody_;
-            this->physicalBody_ = 0;
-            this->collisionType_ = None;
-            this->collisionTypeSynchronised_ = None;
+            this->physicalBody_ = nullptr;
+            this->collisionType_ = CollisionType::None;
+            this->collisionTypeSynchronised_ = CollisionType::None;
             return;
         }
@@ -865,14 +864,14 @@
         switch (type)
         {
-        case Dynamic:
+        case CollisionType::Dynamic:
             this->physicalBody_->setCollisionFlags(this->physicalBody_->getCollisionFlags() & !btCollisionObject::CF_STATIC_OBJECT & !btCollisionObject::CF_KINEMATIC_OBJECT);
             break;
-        case Kinematic:
+        case CollisionType::Kinematic:
             this->physicalBody_->setCollisionFlags((this->physicalBody_->getCollisionFlags() & !btCollisionObject::CF_STATIC_OBJECT) | btCollisionObject::CF_KINEMATIC_OBJECT);
             break;
-        case Static:
+        case CollisionType::Static:
             this->physicalBody_->setCollisionFlags((this->physicalBody_->getCollisionFlags() & !btCollisionObject::CF_KINEMATIC_OBJECT) | btCollisionObject::CF_STATIC_OBJECT);
             break;
-        case None:
+        case CollisionType::None:
             assert(false); // Doesn't happen
             return;
@@ -896,11 +895,11 @@
         CollisionType type;
         if (typeStrLower == "dynamic")
-            type = Dynamic;
+            type = CollisionType::Dynamic;
         else if (typeStrLower == "static")
-            type = Static;
+            type = CollisionType::Static;
         else if (typeStrLower == "kinematic")
-            type = Kinematic;
+            type = CollisionType::Kinematic;
         else if (typeStrLower == "none")
-            type = None;
+            type = CollisionType::None;
         else
             ThrowException(ParseError, std::string("Attempting to set an unknown collision type: '") + typeStr + "'.");
@@ -913,11 +912,11 @@
         switch (this->getCollisionType())
         {
-            case Dynamic:
+            case CollisionType::Dynamic:
                 return "dynamic";
-            case Kinematic:
+            case CollisionType::Kinematic:
                 return "kinematic";
-            case Static:
+            case CollisionType::Static:
                 return "static";
-            case None:
+            case CollisionType::None:
                 return "none";
             default:
@@ -939,6 +938,6 @@
         // Recalculate mass
         this->childrenMass_ = 0.0f;
-        for (std::set<WorldEntity*>::const_iterator it = this->children_.begin(); it != this->children_.end(); ++it)
-            this->childrenMass_ += (*it)->getMass();
+        for (WorldEntity* child : this->children_)
+            this->childrenMass_ += child->getMass();
         recalculateMassProps();
         // Notify parent WE
Index: code/trunk/src/orxonox/worldentities/WorldEntity.h
===================================================================
--- code/trunk/src/orxonox/worldentities/WorldEntity.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/WorldEntity.h	(revision 11071)
@@ -82,5 +82,5 @@
                 Enumeration denoting the spaces which a transform can be relative to.
             */
-            enum TransformSpace
+            enum class TransformSpace
             {
                 //! Transform is relative to the local space
@@ -96,5 +96,5 @@
             virtual ~WorldEntity();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
             inline const Ogre::SceneNode* getNode() const
@@ -108,6 +108,6 @@
             static const Vector3 UP;
 
-            virtual void changedActivity(void);
-            virtual void changedVisibility(void);
+            virtual void changedActivity(void) override;
+            virtual void changedVisibility(void) override;
 
             virtual void setPosition(const Vector3& position) = 0;
@@ -117,6 +117,6 @@
             const Vector3& getWorldPosition() const;
 
-            void translate(const Vector3& distance, TransformSpace relativeTo = WorldEntity::Parent);
-            inline void translate(float x, float y, float z, TransformSpace relativeTo = WorldEntity::Parent)
+            void translate(const Vector3& distance, TransformSpace relativeTo = TransformSpace::Parent);
+            inline void translate(float x, float y, float z, TransformSpace relativeTo = TransformSpace::Parent)
                 { this->translate(Vector3(x, y, z), relativeTo); }
 
@@ -134,18 +134,18 @@
             const Quaternion& getWorldOrientation() const;
 
-            void rotate(const Quaternion& rotation, TransformSpace relativeTo = WorldEntity::Local);
-            inline void rotate(const Vector3& axis, const Degree& angle, TransformSpace relativeTo = WorldEntity::Local)
+            void rotate(const Quaternion& rotation, TransformSpace relativeTo = TransformSpace::Local);
+            inline void rotate(const Vector3& axis, const Degree& angle, TransformSpace relativeTo = TransformSpace::Local)
                 { this->rotate(Quaternion(angle, axis), relativeTo); }
 
-            inline void yaw(const Degree& angle, TransformSpace relativeTo = WorldEntity::Local)
+            inline void yaw(const Degree& angle, TransformSpace relativeTo = TransformSpace::Local)
                 { this->rotate(Quaternion(angle, Vector3::UNIT_Y), relativeTo); }
-            inline void pitch(const Degree& angle, TransformSpace relativeTo = WorldEntity::Local)
+            inline void pitch(const Degree& angle, TransformSpace relativeTo = TransformSpace::Local)
                 { this->rotate(Quaternion(angle, Vector3::UNIT_X), relativeTo); }
-            inline void roll(const Degree& angle, TransformSpace relativeTo = WorldEntity::Local)
+            inline void roll(const Degree& angle, TransformSpace relativeTo = TransformSpace::Local)
                 { this->rotate(Quaternion(angle, Vector3::UNIT_Z), relativeTo); }
 
-            void lookAt(const Vector3& target, TransformSpace relativeTo = WorldEntity::Parent, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
-            void setDirection(const Vector3& direction, TransformSpace relativeTo = WorldEntity::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
-            inline void setDirection(float x, float y, float z, TransformSpace relativeTo = WorldEntity::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z)
+            void lookAt(const Vector3& target, TransformSpace relativeTo = TransformSpace::Parent, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
+            void setDirection(const Vector3& direction, TransformSpace relativeTo = TransformSpace::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
+            inline void setDirection(float x, float y, float z, TransformSpace relativeTo = TransformSpace::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z)
                 { this->setDirection(Vector3(x, y, z), relativeTo, localDirectionVector); }
 
@@ -257,5 +257,5 @@
                 None:      The object has no physics at all.
             */
-            enum CollisionType
+            enum class CollisionType
             {
                 Dynamic,
@@ -266,11 +266,11 @@
 
             //! Tells whether the object has any connection to the Bullet physics engine. If hasPhysics() is false, the object may still have a velocity.
-            bool hasPhysics()       const { return getCollisionType() != None     ; }
+            bool hasPhysics()       const { return getCollisionType() != CollisionType::None     ; }
             //! @see CollisionType
-            bool isStatic()         const { return getCollisionType() == Static   ; }
+            bool isStatic()         const { return getCollisionType() == CollisionType::Static   ; }
             //! @see CollisionType
-            bool isKinematic()      const { return getCollisionType() == Kinematic; }
+            bool isKinematic()      const { return getCollisionType() == CollisionType::Kinematic; }
             //! @see CollisionType
-            bool isDynamic()        const { return getCollisionType() == Dynamic  ; }
+            bool isDynamic()        const { return getCollisionType() == CollisionType::Dynamic  ; }
             //! Tells whether physics has been activated (you can temporarily deactivate it)
             bool isPhysicsActive()  const { return this->bPhysicsActive_; }
Index: code/trunk/src/orxonox/worldentities/pawns/FpsPlayer.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/FpsPlayer.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/pawns/FpsPlayer.cc	(revision 11071)
@@ -79,5 +79,5 @@
         // FpsPlayer is always a physical object per default
         // Be aware of this call: The collision type legality check will not reach derived classes!
-        this->setCollisionType(WorldEntity::Dynamic);
+        this->setCollisionType(WorldEntity::CollisionType::Dynamic);
         // Get notification about collisions
         this->enableCollisionCallback();
@@ -130,5 +130,5 @@
     bool FpsPlayer::isCollisionTypeLegal(WorldEntity::CollisionType type) const
     {
-        if (type != WorldEntity::Dynamic)
+        if (type != WorldEntity::CollisionType::Dynamic)
         {
             orxout(internal_warning) << "Cannot tell a FpsPlayer not to be dynamic! Ignoring." << endl;
@@ -168,5 +168,5 @@
             if (!this->isInMouseLook())
             {
-                this->yaw(Radian(this->yaw_ * this->getMouseLookSpeed()), WorldEntity::Parent);
+                this->yaw(Radian(this->yaw_ * this->getMouseLookSpeed()), WorldEntity::TransformSpace::Parent);
 
                 Radian pitch = this->cameraPositionRootNode_->getOrientation().getPitch();
@@ -282,5 +282,5 @@
     }
 
-    bool FpsPlayer::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
+    bool FpsPlayer::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
     {
         if (contactPoint.m_normalWorldOnB.y() > 0.6)
Index: code/trunk/src/orxonox/worldentities/pawns/FpsPlayer.h
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/FpsPlayer.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/pawns/FpsPlayer.h	(revision 11071)
@@ -69,5 +69,5 @@
             virtual void fire();
 
-            bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
+            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
 
             virtual void addedWeaponPack(WeaponPack* wPack);
Index: code/trunk/src/orxonox/worldentities/pawns/ModularSpaceShip.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/ModularSpaceShip.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/pawns/ModularSpaceShip.cc	(revision 11071)
@@ -53,5 +53,5 @@
     RegisterClass(ModularSpaceShip);
 
-    std::map<StaticEntity*, ShipPart*>* ModularSpaceShip::partMap_s = 0;
+    std::map<StaticEntity*, ShipPart*>* ModularSpaceShip::partMap_s = nullptr;
 
     ModularSpaceShip::ModularSpaceShip(Context* context) : SpaceShip(context)
@@ -94,18 +94,18 @@
         for (unsigned int i=0; i < this->getAttachedObjects().size(); i++)
         {
-            if (this->getAttachedObject(i) == NULL)
+            if (this->getAttachedObject(i) == nullptr)
             {
                 break;
             }
             // iterate through all attached parts
-            for(unsigned int j = 0; j < this->partList_.size(); j++)
+            for(ShipPart* part : this->partList_)
             {
                 // if the name of the part matches the name of the object, add the object to that parts entitylist (unless it was already done).
-                if((this->partList_[j]->getName() == this->getAttachedObject(i)->getName()) && !this->partList_[j]->hasEntity(orxonox_cast<StaticEntity*>(this->getAttachedObject(i))))
+                if((part->getName() == this->getAttachedObject(i)->getName()) && !part->hasEntity(orxonox_cast<StaticEntity*>(this->getAttachedObject(i))))
                 {
                     // The Entity is added to the part's entityList_
-                    this->partList_[j]->addEntity(orxonox_cast<StaticEntity*>(this->getAttachedObject(i)));
+                    part->addEntity(orxonox_cast<StaticEntity*>(this->getAttachedObject(i)));
                     // An entry in the partMap_ is created, assigning the part to the entity.
-                    this->addPartEntityAssignment((StaticEntity*)(this->getAttachedObject(i)), this->partList_[j]);
+                    this->addPartEntityAssignment((StaticEntity*)(this->getAttachedObject(i)), part);
                 }
             }
@@ -146,10 +146,10 @@
     ShipPart* ModularSpaceShip::getPartOfEntity(StaticEntity* entity) const
     {
-        for (std::map<StaticEntity*, ShipPart*>::const_iterator it = this->partMap_.begin(); it != this->partMap_.end(); ++it)
-        {
-            if (it->first == entity)
-                return it->second;
-        }
-        return NULL;
+        for (const auto& mapEntry : this->partMap_)
+        {
+            if (mapEntry.first == entity)
+                return mapEntry.second;
+        }
+        return nullptr;
     }
 
@@ -160,5 +160,5 @@
     void ModularSpaceShip::damage(float damage, float healthdamage, float shielddamage, Pawn* originator, const btCollisionShape* cs)
     {
-        if (cs != NULL && this->getPartOfEntity((StaticEntity*)(cs->getUserPointer())) != NULL)
+        if (cs != nullptr && this->getPartOfEntity((StaticEntity*)(cs->getUserPointer())) != nullptr)
             this->getPartOfEntity((StaticEntity*)(cs->getUserPointer()))->handleHit(damage, healthdamage, shielddamage, originator);
         else
@@ -174,9 +174,9 @@
     void ModularSpaceShip::killShipPartStatic(std::string name)
     {
-        for (std::map<StaticEntity*, ShipPart*>::const_iterator it = ModularSpaceShip::partMap_s->begin(); it != ModularSpaceShip::partMap_s->end(); ++it)
-        {
-            if (it->second->getName() == name)
-            {
-                it->second->death();
+        for (const auto& mapEntry : *ModularSpaceShip::partMap_s)
+        {
+            if (mapEntry.second->getName() == name)
+            {
+                mapEntry.second->death();
                 return;
             }
@@ -193,9 +193,9 @@
     void ModularSpaceShip::killShipPart(std::string name)
     {
-        for (std::map<StaticEntity*, ShipPart*>::const_iterator it = ModularSpaceShip::partMap_.begin(); it != ModularSpaceShip::partMap_.end(); ++it)
-        {
-            if (it->second->getName() == name)
-            {
-                it->second->death();
+        for (const auto& mapEntry : ModularSpaceShip::partMap_)
+        {
+            if (mapEntry.second->getName() == name)
+            {
+                mapEntry.second->death();
                 return;
             }
@@ -212,5 +212,5 @@
     void ModularSpaceShip::addShipPart(ShipPart* part)
     {
-        OrxAssert(part != NULL, "The ShipPart cannot be NULL.");
+        OrxAssert(part != nullptr, "The ShipPart cannot be nullptr.");
         this->partList_.push_back(part);
         part->setParent(this);
@@ -222,10 +222,10 @@
         Get the i-th ShipPart of the SpaceShip.
     @return
-        Returns a pointer to the i-the ShipPart. NULL if there is no ShipPart with that index.
+        Returns a pointer to the i-the ShipPart. nullptr if there is no ShipPart with that index.
     */
     ShipPart* ModularSpaceShip::getShipPart(unsigned int index)
     {
         if(this->partList_.size() <= index)
-            return NULL;
+            return nullptr;
         else
             return this->partList_[index];
@@ -238,17 +238,17 @@
         The name of the ShipPart to be returned.
     @return
-        Pointer to the ShipPart with the given name, or NULL if not found.
+        Pointer to the ShipPart with the given name, or nullptr if not found.
     */
     ShipPart* ModularSpaceShip::getShipPartByName(std::string name)
     {
-        for(std::vector<ShipPart*>::iterator it = this->partList_.begin(); it != this->partList_.end(); ++it)
-        {
-            if(orxonox_cast<ShipPart*>(*it)->getName() == name)
-            {
-                return orxonox_cast<ShipPart*>(*it);
+        for(ShipPart* part : this->partList_)
+        {
+            if(orxonox_cast<ShipPart*>(part)->getName() == name)
+            {
+                return orxonox_cast<ShipPart*>(part);
             }
         }
         orxout(internal_warning) << "Couldn't find ShipPart with name \"" << name << "\"." << endl;
-        return NULL;
+        return nullptr;
     }
 
@@ -256,12 +256,12 @@
     @brief
         Check whether the SpaceShip has a particular Engine.
-    @param engine
+    @param search
         A pointer to the Engine to be checked.
     */
-    bool ModularSpaceShip::hasShipPart(ShipPart* part) const
-    {
-        for(unsigned int i = 0; i < this->partList_.size(); i++)
-        {
-            if(this->partList_[i] == part)
+    bool ModularSpaceShip::hasShipPart(ShipPart* search) const
+    {
+        for(ShipPart* part : this->partList_)
+        {
+            if(part == search)
                 return true;
         }
Index: code/trunk/src/orxonox/worldentities/pawns/ModularSpaceShip.h
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/ModularSpaceShip.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/pawns/ModularSpaceShip.h	(revision 11071)
@@ -109,5 +109,5 @@
             ShipPart* getPartOfEntity(StaticEntity* entity) const;
 
-            virtual void damage(float damage, float healthdamage = 0.0f, float shielddamage = 0.0f, Pawn* originator = NULL, const btCollisionShape* cs = NULL);
+            virtual void damage(float damage, float healthdamage = 0.0f, float shielddamage = 0.0f, Pawn* originator = nullptr, const btCollisionShape* cs = nullptr);
 
             static void killShipPartStatic(std::string name);
Index: code/trunk/src/orxonox/worldentities/pawns/Pawn.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Pawn.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/pawns/Pawn.cc	(revision 11071)
@@ -77,5 +77,5 @@
         this->shieldRechargeWaitCountdown_ = 0;
 
-        this->lastHitOriginator_ = 0;
+        this->lastHitOriginator_ = nullptr;
 
         // set damage multiplier to default value 1, meaning nominal damage
@@ -86,5 +86,5 @@
         this->aimPosition_ = Vector3::ZERO;
 
-        //this->explosionPartList_ = NULL;
+        //this->explosionPartList_ = nullptr;
 
         if (GameMode::isMaster())
@@ -94,8 +94,8 @@
         }
         else
-            this->weaponSystem_ = 0;
+            this->weaponSystem_ = nullptr;
 
         this->setRadarObjectColour(ColourValue::Red);
-        this->setRadarObjectShape(RadarViewable::Dot);
+        this->setRadarObjectShape(RadarViewable::Shape::Dot);
 
         this->registerVariables();
@@ -112,5 +112,5 @@
         else
         {
-            this->explosionSound_ = 0;
+            this->explosionSound_ = nullptr;
         }
     }
@@ -373,5 +373,5 @@
                     {
                         // delete the AIController // <-- TODO: delete? nothing is deleted here... should we delete the controller?
-                        slave->setControllableEntity(0);
+                        slave->setControllableEntity(nullptr);
 
                         // set a new master within the formation
@@ -468,5 +468,5 @@
             return this->weaponSystem_->getWeaponSlot(index);
         else
-            return 0;
+            return nullptr;
     }
 
@@ -482,5 +482,5 @@
             return this->weaponSystem_->getWeaponSet(index);
         else
-            return 0;
+            return nullptr;
     }
 
@@ -510,13 +510,5 @@
             return this->weaponSystem_->getWeaponPack(index);
         else
-            return 0;
-    }
-
-    std::vector<WeaponPack *> * Pawn::getAllWeaponPacks()
-    {
-        if (this->weaponSystem_)
-            return this->weaponSystem_->getAllWeaponPacks();
-        else
-            return 0;        
+            return nullptr;
     }
 
@@ -531,5 +523,5 @@
     Munition* Pawn::getMunitionXML() const
     {
-        return NULL;
+        return nullptr;
     }
 
@@ -541,5 +533,5 @@
         }
 
-        return NULL;
+        return nullptr;
     }
 
@@ -564,10 +556,8 @@
     bool Pawn::hasSlaves()
     {
-        for (ObjectList<FormationController>::iterator it =
-             ObjectList<FormationController>::begin();
-             it != ObjectList<FormationController>::end(); ++it )
+        for (FormationController* controller : ObjectList<FormationController>())
         {
             // checks if the pawn's controller has a slave
-            if (this->hasHumanController() && it->getMaster() == this->getPlayer()->getController())
+            if (this->hasHumanController() && controller->getMaster() == this->getPlayer()->getController())
                 return true;
         }
@@ -577,12 +567,10 @@
     // A function that returns a slave of the pawn's controller
     Controller* Pawn::getSlave(){
-        for (ObjectList<FormationController>::iterator it =
-                ObjectList<FormationController>::begin();
-                it != ObjectList<FormationController>::end(); ++it )
-        {
-            if (this->hasHumanController() && it->getMaster() == this->getPlayer()->getController())
-                return it->getController();
-        }
-        return 0;
+        for (FormationController* controller : ObjectList<FormationController>())
+        {
+            if (this->hasHumanController() && controller->getMaster() == this->getPlayer()->getController())
+                return controller->getController();
+        }
+        return nullptr;
     }
 
Index: code/trunk/src/orxonox/worldentities/pawns/Pawn.h
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Pawn.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/pawns/Pawn.h	(revision 11071)
@@ -63,7 +63,7 @@
             virtual ~Pawn();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
-            virtual void tick(float dt);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+            virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode) override;
+            virtual void tick(float dt) override;
 
             inline bool isAlive() const
@@ -71,5 +71,5 @@
 
 
-            virtual void setHealth(float health);
+            void setHealth(float health);
             inline void addHealth(float health)
                 { this->setHealth(this->health_ + health); }
@@ -89,5 +89,5 @@
                 { return this->initialHealth_; }
 
-            virtual void setShieldHealth(float shieldHealth);
+            void setShieldHealth(float shieldHealth);
 
             inline float getShieldHealth()
@@ -100,5 +100,5 @@
                 { return (this->getShieldHealth() > 0); }
 
-            virtual void setMaxShieldHealth(float maxshieldhealth);
+            void setMaxShieldHealth(float maxshieldhealth);
             inline float getMaxShieldHealth() const
                 { return this->maxShieldHealth_; }
@@ -119,9 +119,9 @@
                 { return this->shieldAbsorption_; }
 
-            virtual void setShieldRechargeRate(float shieldRechargeRate);
+            void setShieldRechargeRate(float shieldRechargeRate);
             inline float getShieldRechargeRate() const
                 { return this->shieldRechargeRate_; }
 
-            virtual void setShieldRechargeWaitTime(float shieldRechargeWaitTime);
+            void setShieldRechargeWaitTime(float shieldRechargeWaitTime);
             inline float getShieldRechargeWaitTime() const
                 { return this->shieldRechargeWaitTime_; }
@@ -133,5 +133,5 @@
                 { this->shieldRechargeWaitCountdown_ = this->getShieldRechargeWaitTime(); } // TODO: Implement in Projectile.cc
 
-            virtual void decreaseShieldRechargeCountdownTime(float dt);
+            void decreaseShieldRechargeCountdownTime(float dt);
 
             /** @brief Sets the state of the pawns vulnerability. @param bVulnerable */
@@ -157,5 +157,5 @@
             virtual void kill();
 
-            virtual void fired(unsigned int firemode);
+            virtual void fired(unsigned int firemode) override;
             virtual void postSpawn();
 
@@ -170,5 +170,4 @@
             void addWeaponPackXML(WeaponPack * wPack);
             WeaponPack * getWeaponPack(unsigned int index) const;
-            std::vector<WeaponPack *> * getAllWeaponPacks();
 
             void addMunitionXML(Munition* munition);
@@ -201,5 +200,5 @@
 
 
-            virtual void startLocalHumanControl();
+            virtual void startLocalHumanControl() override;
 
             void setAimPosition( Vector3 position )
@@ -208,20 +207,20 @@
                 { return this->aimPosition_; }
 
-            virtual const Vector3& getCarrierPosition(void) const
+            virtual const Vector3& getCarrierPosition(void) const override
                 { return this->getWorldPosition(); };
 
-            virtual void changedVisibility();
+            virtual void changedVisibility() override;
 
             void setExplosionSound(const std::string& engineSound);
             const std::string& getExplosionSound();
 
-            virtual const WeaponSystem* getWeaponSystem() const
+            inline const WeaponSystem* getWeaponSystem() const
                 { return this->weaponSystem_; }
 
         protected:
-            virtual void preDestroy();
-
-            virtual void setPlayer(PlayerInfo* player);
-            virtual void removePlayer();
+            virtual void preDestroy() override;
+
+            virtual void setPlayer(PlayerInfo* player) override;
+            virtual void removePlayer() override;
 
             virtual void death();
@@ -231,13 +230,13 @@
             virtual void spawneffect();
 
-            virtual void damage(float damage, float healthdamage = 0.0f, float shielddamage = 0.0f, Pawn* originator = NULL, const btCollisionShape* cs = NULL);
+            virtual void damage(float damage, float healthdamage = 0.0f, float shielddamage = 0.0f, Pawn* originator = nullptr, const btCollisionShape* cs = nullptr);
 
             bool bAlive_;
             bool bVulnerable_; ///< If false the pawn may not ged damaged
 
-            virtual std::vector<PickupCarrier*>* getCarrierChildren(void) const
+            virtual std::vector<PickupCarrier*>* getCarrierChildren(void) const override
                 { return new std::vector<PickupCarrier*>(); }
-            virtual PickupCarrier* getCarrierParent(void) const
-                { return NULL; }
+            virtual PickupCarrier* getCarrierParent(void) const override
+                { return nullptr; }
 
 
Index: code/trunk/src/orxonox/worldentities/pawns/SpaceShip.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/SpaceShip.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/pawns/SpaceShip.cc	(revision 11071)
@@ -48,5 +48,5 @@
     RegisterClass(SpaceShip);
 
-    SpaceShip::SpaceShip(Context* context) : Pawn(context), boostBlur_(NULL)
+    SpaceShip::SpaceShip(Context* context) : Pawn(context), boostBlur_(nullptr)
     {
         RegisterObject(SpaceShip);
@@ -80,5 +80,5 @@
         // SpaceShip is always a physical object per default
         // Be aware of this call: The collision type legality check will not reach derived classes!
-        this->setCollisionType(WorldEntity::Dynamic);
+        this->setCollisionType(WorldEntity::CollisionType::Dynamic);
         // Get notification about collisions
         this->enableCollisionCallback();
@@ -145,5 +145,5 @@
     bool SpaceShip::isCollisionTypeLegal(WorldEntity::CollisionType type) const
     {
-        if (type != WorldEntity::Dynamic)
+        if (type != WorldEntity::CollisionType::Dynamic)
         {
             orxout(internal_warning) << "Cannot tell a SpaceShip not to be dynamic! Ignoring." << endl;
@@ -160,6 +160,6 @@
 
         // Run the engines
-        for(std::vector<Engine*>::iterator it = this->engineList_.begin(); it != this->engineList_.end(); it++)
-            (*it)->run(dt);
+        for(Engine* engine : this->engineList_)
+            engine->run(dt);
 
         if (this->hasLocalController())
@@ -198,5 +198,5 @@
             if(this->bEnableMotionBlur_)
             {
-                if (this->boostBlur_ == NULL && this->hasLocalController() && this->hasHumanController())
+                if (this->boostBlur_ == nullptr && this->hasLocalController() && this->hasHumanController())
                 {
                     this->boostBlur_ = new Shader(this->getScene()->getSceneManager());
@@ -325,5 +325,5 @@
     void SpaceShip::addEngine(orxonox::Engine* engine)
     {
-        OrxAssert(engine != NULL, "The engine cannot be NULL.");
+        OrxAssert(engine != nullptr, "The engine cannot be nullptr.");
         this->engineList_.push_back(engine);
         engine->addToSpaceShip(this);
@@ -333,12 +333,12 @@
     @brief
         Check whether the SpaceShip has a particular Engine.
-    @param engine
+    @param search
         A pointer to the Engine to be checked.
     */
-    bool SpaceShip::hasEngine(Engine* engine) const
-    {
-        for(unsigned int i = 0; i < this->engineList_.size(); i++)
-        {
-            if(this->engineList_[i] == engine)
+    bool SpaceShip::hasEngine(Engine* search) const
+    {
+        for(Engine* engine : this->engineList_)
+        {
+            if(engine == search)
                 return true;
         }
@@ -350,10 +350,10 @@
         Get the i-th Engine of the SpaceShip.
     @return
-        Returns a pointer to the i-the Engine. NULL if there is no Engine with that index.
+        Returns a pointer to the i-the Engine. nullptr if there is no Engine with that index.
     */
     Engine* SpaceShip::getEngine(unsigned int i)
     {
         if(this->engineList_.size() >= i)
-            return NULL;
+            return nullptr;
         else
             return this->engineList_[i];
@@ -366,14 +366,14 @@
         The name of the engine to be returned.
     @return
-        Pointer to the engine with the given name, or NULL if not found.
+        Pointer to the engine with the given name, or nullptr if not found.
     */
     Engine* SpaceShip::getEngineByName(const std::string& name)
     {
-        for(size_t i = 0; i < this->engineList_.size(); ++i)
-            if(this->engineList_[i]->getName() == name)
-                return this->engineList_[i];
+        for(Engine* engine : this->engineList_)
+            if(engine->getName() == name)
+                return engine;
 
         orxout(internal_warning) << "Couldn't find Engine with name \"" << name << "\"." << endl;
-        return NULL;
+        return nullptr;
     }
 
@@ -416,6 +416,6 @@
     void SpaceShip::addSpeedFactor(float factor)
     {
-        for(unsigned int i=0; i<this->engineList_.size(); i++)
-            this->engineList_[i]->addSpeedMultiply(factor);
+        for(Engine* engine : this->engineList_)
+            engine->addSpeedMultiply(factor);
     }
 
@@ -428,6 +428,6 @@
     void SpaceShip::addSpeed(float speed)
     {
-        for(unsigned int i=0; i<this->engineList_.size(); i++)
-            this->engineList_[i]->addSpeedAdd(speed);
+        for(Engine* engine : this->engineList_)
+            engine->addSpeedAdd(speed);
     }
 
@@ -456,8 +456,8 @@
     {
         float speed=0;
-        for(unsigned int i=0; i<this->engineList_.size(); i++)
-        {
-            if(this->engineList_[i]->getMaxSpeedFront() > speed)
-                speed = this->engineList_[i]->getMaxSpeedFront();
+        for(Engine* engine : this->engineList_)
+        {
+            if(engine->getMaxSpeedFront() > speed)
+                speed = engine->getMaxSpeedFront();
         }
         return speed;
@@ -485,8 +485,8 @@
     void SpaceShip::changedEnableMotionBlur()
     {
-        if (!this->bEnableMotionBlur_ && this->boostBlur_ != NULL)
+        if (!this->bEnableMotionBlur_ && this->boostBlur_ != nullptr)
         {
             delete this->boostBlur_;
-            this->boostBlur_ = NULL;
+            this->boostBlur_ = nullptr;
         }
     }
@@ -514,5 +514,5 @@
             Camera* camera = this->getCamera();
             //Shaking Camera effect
-            if (camera != 0)
+            if (camera != nullptr)
                 camera->setOrientation(Vector3::UNIT_X, angle);
 
@@ -530,5 +530,5 @@
     {
         Camera* camera = CameraManager::getInstance().getActiveCamera();
-        if(camera != NULL)
+        if(camera != nullptr)
         {
             this->cameraOriginalPosition_ = camera->getPosition();
@@ -546,5 +546,5 @@
         {
             Camera *camera = this->getCamera();
-            if (camera == 0)
+            if (camera == nullptr)
             {
                 orxout(internal_warning) << "Failed to reset camera!" << endl;
Index: code/trunk/src/orxonox/worldentities/pawns/Spectator.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Spectator.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/pawns/Spectator.cc	(revision 11071)
@@ -58,5 +58,5 @@
         this->localVelocity_ = Vector3::ZERO;
         this->setHudTemplate("spectatorhud");
-        this->greetingFlare_ = 0;
+        this->greetingFlare_ = nullptr;
 
         this->setDestroyWhenPlayerLeft(true);
Index: code/trunk/src/orxonox/worldentities/pawns/TeamBaseMatchBase.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/TeamBaseMatchBase.cc	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/pawns/TeamBaseMatchBase.cc	(revision 11071)
@@ -51,5 +51,5 @@
         }
 
-        this->setRadarObjectShape(RadarViewable::Triangle);
+        this->setRadarObjectShape(RadarViewable::Shape::Triangle);
     }
 
@@ -80,9 +80,9 @@
 
         std::set<WorldEntity*> attachments = this->getAttachedObjects();
-        for (std::set<WorldEntity*>::iterator it = attachments.begin(); it != attachments.end(); ++it)
+        for (WorldEntity* attachment : attachments)
         {
-            if ((*it)->isA(Class(TeamColourable)))
+            if (attachment->isA(Class(TeamColourable)))
             {
-                TeamColourable* tc = orxonox_cast<TeamColourable*>(*it);
+                TeamColourable* tc = orxonox_cast<TeamColourable*>(attachment);
                 tc->setTeamColour(colour);
             }
@@ -92,6 +92,6 @@
 
         // Call this so bots stop shooting at the base after they converted it
-        for (ObjectList<ArtificialController>::iterator it = ObjectList<ArtificialController>::begin(); it != ObjectList<ArtificialController>::end(); ++it)
-            it->abandonTarget(this);
+        for (ArtificialController* controller : ObjectList<ArtificialController>())
+            controller->abandonTarget(this);
     }
 }
Index: code/trunk/src/orxonox/worldentities/pawns/TeamBaseMatchBase.h
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/TeamBaseMatchBase.h	(revision 11052)
+++ code/trunk/src/orxonox/worldentities/pawns/TeamBaseMatchBase.h	(revision 11071)
@@ -36,13 +36,10 @@
 namespace orxonox
 {
-    namespace BaseState
+    enum class BaseState
     {
-        enum Value
-        {
-            Uncontrolled,
-            ControlTeam1,
-            ControlTeam2,
-        };
-    }
+        Uncontrolled,
+        ControlTeam1,
+        ControlTeam2,
+    };
 
 
@@ -58,5 +55,5 @@
 
             // Set the state of a base to whatever the argument of the function is
-            void setState(BaseState::Value state)
+            void setState(BaseState state)
             {
                 this->state_ = state;
@@ -66,5 +63,5 @@
 
             // Get the state of a base as a return value
-            BaseState::Value getState() const
+            BaseState getState() const
             {
                 return this->state_;
@@ -75,5 +72,5 @@
             void changeTeamColour();
 
-            BaseState::Value state_;
+            BaseState state_;
     };
 }
