Index: code/trunk/src/modules/designtools/CreateStars.cc
===================================================================
--- code/trunk/src/modules/designtools/CreateStars.cc	(revision 9550)
+++ code/trunk/src/modules/designtools/CreateStars.cc	(revision 9667)
@@ -37,7 +37,7 @@
 namespace orxonox
 {
-    CreateFactory(CreateStars);
+    RegisterClass(CreateStars);
 
-    CreateStars::CreateStars(BaseObject* creator) : BaseObject(creator)
+    CreateStars::CreateStars(Context* context) : BaseObject(context)
     {
         RegisterObject(CreateStars);
@@ -69,5 +69,5 @@
         for(int i=0; i < numStars_; i++)
         {
-            Billboard* bb = new Billboard(this);
+            Billboard* bb = new Billboard(this->getContext());
 
             float r = rnd(-colourDiff_,colourDiff_);
Index: code/trunk/src/modules/designtools/CreateStars.h
===================================================================
--- code/trunk/src/modules/designtools/CreateStars.h	(revision 9550)
+++ code/trunk/src/modules/designtools/CreateStars.h	(revision 9667)
@@ -38,5 +38,5 @@
     {
         public:
-            CreateStars(orxonox::BaseObject* creator);
+            CreateStars(Context* context);
             virtual ~CreateStars();
 
Index: code/trunk/src/modules/designtools/ScreenshotManager.cc
===================================================================
--- code/trunk/src/modules/designtools/ScreenshotManager.cc	(revision 9550)
+++ code/trunk/src/modules/designtools/ScreenshotManager.cc	(revision 9667)
@@ -42,5 +42,6 @@
 #include <OgreViewport.h>
 
-#include "core/ConfigValueIncludes.h"
+#include "core/CoreIncludes.h"
+#include "core/config/ConfigValueIncludes.h"
 #include "core/GraphicsManager.h"
 #include "core/PathConfig.h"
@@ -68,5 +69,5 @@
     ScreenshotManager::ScreenshotManager() : finalPicturePB_(NULL), data_(NULL)
     {
-        RegisterRootObject(ScreenshotManager);
+        RegisterObject(ScreenshotManager);
         
         this->setConfigValues();
Index: code/trunk/src/modules/designtools/ScreenshotManager.h
===================================================================
--- code/trunk/src/modules/designtools/ScreenshotManager.h	(revision 9550)
+++ code/trunk/src/modules/designtools/ScreenshotManager.h	(revision 9667)
@@ -44,5 +44,5 @@
 
 #include "util/Singleton.h"
-#include "core/OrxonoxClass.h"
+#include "core/config/Configurable.h"
 
 namespace orxonox
@@ -61,5 +61,5 @@
     @ingroup Designtools
     */
-    class ScreenshotManager : public OrxonoxClass, public Singleton<ScreenshotManager>
+    class ScreenshotManager : public Configurable, public Singleton<ScreenshotManager>
     {
         friend class Singleton<ScreenshotManager>;
Index: code/trunk/src/modules/designtools/SkyboxGenerator.cc
===================================================================
--- code/trunk/src/modules/designtools/SkyboxGenerator.cc	(revision 9550)
+++ code/trunk/src/modules/designtools/SkyboxGenerator.cc	(revision 9667)
@@ -40,5 +40,5 @@
 #include "util/ScopedSingletonManager.h"
 #include "core/CoreIncludes.h"
-#include "core/ConfigValueIncludes.h"
+#include "core/config/ConfigValueIncludes.h"
 #include "core/GraphicsManager.h"
 #include "core/PathConfig.h"
@@ -68,5 +68,5 @@
     SkyboxGenerator::SkyboxGenerator()
     {
-        RegisterRootObject(SkyboxGenerator);
+        RegisterObject(SkyboxGenerator);
 
         this->setConfigValues();
Index: code/trunk/src/modules/designtools/SkyboxGenerator.h
===================================================================
--- code/trunk/src/modules/designtools/SkyboxGenerator.h	(revision 9550)
+++ code/trunk/src/modules/designtools/SkyboxGenerator.h	(revision 9667)
@@ -36,5 +36,5 @@
 #define __SkyboxGenerator_h__
 
-#include "core/OrxonoxClass.h"
+#include "core/config/Configurable.h"
 #include "util/Singleton.h"
 #include "tools/interfaces/Tickable.h"
@@ -58,5 +58,5 @@
     @ingroup Designtools
     */
-    class SkyboxGenerator : public virtual OrxonoxClass, public Singleton<SkyboxGenerator>, public Tickable
+    class SkyboxGenerator : public virtual Configurable, public Singleton<SkyboxGenerator>, public Tickable
     {
         friend class Singleton<SkyboxGenerator>;
Index: code/trunk/src/modules/docking/Dock.cc
===================================================================
--- code/trunk/src/modules/docking/Dock.cc	(revision 9550)
+++ code/trunk/src/modules/docking/Dock.cc	(revision 9667)
@@ -46,5 +46,5 @@
 namespace orxonox
 {
-    CreateFactory(Dock);
+    RegisterClass(Dock);
 
     SetConsoleCommand("Dock", "dock",    &Dock::cmdDock).addShortcut().setAsInputCommand();
@@ -53,5 +53,5 @@
     registerStaticNetworkFunction(Dock::showDockingDialog);
 
-    Dock::Dock(BaseObject* creator) : StaticEntity(creator)
+    Dock::Dock(Context* context) : StaticEntity(context)
     {
         RegisterObject(Dock);
Index: code/trunk/src/modules/docking/Dock.h
===================================================================
--- code/trunk/src/modules/docking/Dock.h	(revision 9550)
+++ code/trunk/src/modules/docking/Dock.h	(revision 9667)
@@ -40,5 +40,4 @@
 #include <set>
 
-#include "core/CoreIncludes.h"
 #include "core/EventIncludes.h"
 #include "core/XMLPort.h"
@@ -58,5 +57,5 @@
     { // tolua_export
         public:
-            Dock(BaseObject* creator);
+            Dock(Context* context);
             virtual ~Dock();
 
Index: code/trunk/src/modules/docking/DockToShip.cc
===================================================================
--- code/trunk/src/modules/docking/DockToShip.cc	(revision 9550)
+++ code/trunk/src/modules/docking/DockToShip.cc	(revision 9667)
@@ -38,7 +38,7 @@
 namespace orxonox
 {
-    CreateFactory(DockToShip);
+    RegisterClass(DockToShip);
 
-    DockToShip::DockToShip(BaseObject* creator) : DockingEffect(creator)
+    DockToShip::DockToShip(Context* context) : DockingEffect(context)
     {
         RegisterObject(DockToShip);
Index: code/trunk/src/modules/docking/DockToShip.h
===================================================================
--- code/trunk/src/modules/docking/DockToShip.h	(revision 9550)
+++ code/trunk/src/modules/docking/DockToShip.h	(revision 9667)
@@ -57,5 +57,5 @@
     {
         public:
-            DockToShip(BaseObject* creator);
+            DockToShip(Context* context);
             virtual ~DockToShip();
 
Index: code/trunk/src/modules/docking/DockingAnimation.cc
===================================================================
--- code/trunk/src/modules/docking/DockingAnimation.cc	(revision 9550)
+++ code/trunk/src/modules/docking/DockingAnimation.cc	(revision 9667)
@@ -35,8 +35,11 @@
 
 #include "DockingEffect.h"  // For DockingEffect::findTarget
+#include "core/CoreIncludes.h"
 
 namespace orxonox
 {
-    DockingAnimation::DockingAnimation(BaseObject* creator) : BaseObject(creator)
+    RegisterAbstractClass(DockingAnimation).inheritsFrom(Class(BaseObject));
+
+    DockingAnimation::DockingAnimation(Context* context) : BaseObject(context)
     {
         RegisterObject(DockingAnimation);
Index: code/trunk/src/modules/docking/DockingAnimation.h
===================================================================
--- code/trunk/src/modules/docking/DockingAnimation.h	(revision 9550)
+++ code/trunk/src/modules/docking/DockingAnimation.h	(revision 9667)
@@ -36,5 +36,4 @@
 #define _DockingAnimation_H__
 
-#include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
 
@@ -64,5 +63,5 @@
     {
         public:
-            DockingAnimation(BaseObject* creator);
+            DockingAnimation(Context* context);
             virtual ~DockingAnimation();
 
Index: code/trunk/src/modules/docking/DockingController.cc
===================================================================
--- code/trunk/src/modules/docking/DockingController.cc	(revision 9550)
+++ code/trunk/src/modules/docking/DockingController.cc	(revision 9667)
@@ -34,10 +34,11 @@
 #include "worldentities/ControllableEntity.h"
 #include "Dock.h"
+#include "core/CoreIncludes.h"
 
 namespace orxonox
 {
-    CreateFactory(DockingController);
+    RegisterClass(DockingController);
 
-    DockingController::DockingController(BaseObject* creator) : ArtificialController(creator)
+    DockingController::DockingController(Context* context) : ArtificialController(context)
     {
         RegisterObject(DockingController);
Index: code/trunk/src/modules/docking/DockingController.h
===================================================================
--- code/trunk/src/modules/docking/DockingController.h	(revision 9550)
+++ code/trunk/src/modules/docking/DockingController.h	(revision 9667)
@@ -42,5 +42,5 @@
     {
         public:
-            DockingController(BaseObject* creator);
+            DockingController(Context* context);
             virtual ~DockingController();
 
Index: code/trunk/src/modules/docking/DockingEffect.cc
===================================================================
--- code/trunk/src/modules/docking/DockingEffect.cc	(revision 9550)
+++ code/trunk/src/modules/docking/DockingEffect.cc	(revision 9667)
@@ -33,8 +33,11 @@
 
 #include "DockingEffect.h"
+#include "core/CoreIncludes.h"
 
 namespace orxonox
 {
-    DockingEffect::DockingEffect(BaseObject* creator) : BaseObject(creator)
+    RegisterAbstractClass(DockingEffect).inheritsFrom(Class(BaseObject));
+
+    DockingEffect::DockingEffect(Context* context) : BaseObject(context)
     {
         RegisterObject(DockingEffect);
Index: code/trunk/src/modules/docking/DockingEffect.h
===================================================================
--- code/trunk/src/modules/docking/DockingEffect.h	(revision 9550)
+++ code/trunk/src/modules/docking/DockingEffect.h	(revision 9667)
@@ -36,5 +36,4 @@
 #define _DockingEffect_H__
 
-#include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
 
@@ -62,5 +61,5 @@
     {
         public:
-            DockingEffect(BaseObject* creator);
+            DockingEffect(Context* context);
             virtual ~DockingEffect();
 
Index: code/trunk/src/modules/docking/DockingPrecompiledHeaders.h
===================================================================
--- code/trunk/src/modules/docking/DockingPrecompiledHeaders.h	(revision 9550)
+++ code/trunk/src/modules/docking/DockingPrecompiledHeaders.h	(revision 9667)
@@ -45,5 +45,4 @@
 
 #include "core/BaseObject.h"
-#include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
 
Index: code/trunk/src/modules/docking/DockingTarget.cc
===================================================================
--- code/trunk/src/modules/docking/DockingTarget.cc	(revision 9550)
+++ code/trunk/src/modules/docking/DockingTarget.cc	(revision 9667)
@@ -33,4 +33,5 @@
 
 #include "DockingTarget.h"
+#include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
 
@@ -38,7 +39,7 @@
 namespace orxonox
 {
-    CreateFactory(DockingTarget);
+    RegisterClass(DockingTarget);
 
-    DockingTarget::DockingTarget(BaseObject* creator) : StaticEntity(creator)
+    DockingTarget::DockingTarget(Context* context) : StaticEntity(context)
     {
         RegisterObject(DockingTarget);
Index: code/trunk/src/modules/docking/DockingTarget.h
===================================================================
--- code/trunk/src/modules/docking/DockingTarget.h	(revision 9550)
+++ code/trunk/src/modules/docking/DockingTarget.h	(revision 9667)
@@ -55,5 +55,5 @@
     {
         public:
-            DockingTarget(BaseObject* creator);
+            DockingTarget(Context* context);
             virtual ~DockingTarget();
 
Index: code/trunk/src/modules/docking/MoveToDockingTarget.cc
===================================================================
--- code/trunk/src/modules/docking/MoveToDockingTarget.cc	(revision 9550)
+++ code/trunk/src/modules/docking/MoveToDockingTarget.cc	(revision 9667)
@@ -36,10 +36,11 @@
 
 #include "core/XMLPort.h"
+#include "core/CoreIncludes.h"
 
 namespace orxonox
 {
-    CreateFactory(MoveToDockingTarget);
+    RegisterClass(MoveToDockingTarget);
 
-    MoveToDockingTarget::MoveToDockingTarget(BaseObject *creator) : DockingAnimation(creator)
+    MoveToDockingTarget::MoveToDockingTarget(Context* context) : DockingAnimation(context)
     {
         RegisterObject(MoveToDockingTarget);
@@ -54,5 +55,5 @@
         assert(this->parent_);
 
-        DockingController *dockingController = new DockingController(this);
+        DockingController *dockingController = new DockingController(this->getContext());
         dockingController->setDock(this->parent_);
         dockingController->setPlayer(player);
Index: code/trunk/src/modules/docking/MoveToDockingTarget.h
===================================================================
--- code/trunk/src/modules/docking/MoveToDockingTarget.h	(revision 9550)
+++ code/trunk/src/modules/docking/MoveToDockingTarget.h	(revision 9667)
@@ -56,5 +56,5 @@
     {
         public:
-            MoveToDockingTarget(BaseObject* creator);
+            MoveToDockingTarget(Context* context);
             virtual ~MoveToDockingTarget();
 
Index: code/trunk/src/modules/gametypes/OldRaceCheckPoint.cc
===================================================================
--- code/trunk/src/modules/gametypes/OldRaceCheckPoint.cc	(revision 9550)
+++ code/trunk/src/modules/gametypes/OldRaceCheckPoint.cc	(revision 9667)
@@ -38,7 +38,7 @@
 namespace orxonox
 {
-    CreateFactory(OldRaceCheckPoint);
+    RegisterClass(OldRaceCheckPoint);
 
-    OldRaceCheckPoint::OldRaceCheckPoint(BaseObject* creator): DistanceTrigger(creator), RadarViewable(creator, static_cast<WorldEntity*>(this))
+    OldRaceCheckPoint::OldRaceCheckPoint(Context* context): DistanceTrigger(context), RadarViewable(this, static_cast<WorldEntity*>(this))
     {
         RegisterObject(OldRaceCheckPoint);
Index: code/trunk/src/modules/gametypes/OldRaceCheckPoint.h
===================================================================
--- code/trunk/src/modules/gametypes/OldRaceCheckPoint.h	(revision 9550)
+++ code/trunk/src/modules/gametypes/OldRaceCheckPoint.h	(revision 9667)
@@ -45,5 +45,5 @@
     {
         public:
-            OldRaceCheckPoint(BaseObject* creator);
+            OldRaceCheckPoint(Context* context);
             virtual ~OldRaceCheckPoint();
 
Index: code/trunk/src/modules/gametypes/OldSpaceRace.cc
===================================================================
--- code/trunk/src/modules/gametypes/OldSpaceRace.cc	(revision 9550)
+++ code/trunk/src/modules/gametypes/OldSpaceRace.cc	(revision 9667)
@@ -36,7 +36,7 @@
 namespace orxonox
 {
-    CreateUnloadableFactory(OldSpaceRace);
+    RegisterUnloadableClass(OldSpaceRace);
 
-    OldSpaceRace::OldSpaceRace(BaseObject* creator) : Gametype(creator)
+    OldSpaceRace::OldSpaceRace(Context* context) : Gametype(context)
     {
         RegisterObject(OldSpaceRace);
Index: code/trunk/src/modules/gametypes/OldSpaceRace.h
===================================================================
--- code/trunk/src/modules/gametypes/OldSpaceRace.h	(revision 9550)
+++ code/trunk/src/modules/gametypes/OldSpaceRace.h	(revision 9667)
@@ -52,5 +52,5 @@
 
         public:
-            OldSpaceRace(BaseObject* creator);
+            OldSpaceRace(Context* context);
             virtual ~OldSpaceRace() {}
 
Index: code/trunk/src/modules/gametypes/RaceCheckPoint.cc
===================================================================
--- code/trunk/src/modules/gametypes/RaceCheckPoint.cc	(revision 9550)
+++ code/trunk/src/modules/gametypes/RaceCheckPoint.cc	(revision 9667)
@@ -41,8 +41,8 @@
 namespace orxonox
 {
-    CreateFactory(RaceCheckPoint);
-
-    RaceCheckPoint::RaceCheckPoint(BaseObject* creator) : DistanceMultiTrigger(creator),
-            RadarViewable(creator, static_cast<WorldEntity*> (this))
+    RegisterClass(RaceCheckPoint);
+
+    RaceCheckPoint::RaceCheckPoint(Context* context) : DistanceMultiTrigger(context),
+            RadarViewable(this, static_cast<WorldEntity*> (this))
     {
         RegisterObject(RaceCheckPoint);
@@ -157,5 +157,5 @@
         if (players_.size() > 0)
         {
-            for (int i = 0; i < players_.size(); i++)
+            for (size_t i = 0; i < players_.size(); i++)
             {
                 if (this->players_[i]->getClientID() == clientID)
@@ -172,5 +172,5 @@
         if (players_.size() > 0)
         {
-            for (int i = 0; i < players_.size(); i++)
+            for (size_t i = 0; i < players_.size(); i++)
             {
                 if (this->players_[i] == player)
Index: code/trunk/src/modules/gametypes/RaceCheckPoint.h
===================================================================
--- code/trunk/src/modules/gametypes/RaceCheckPoint.h	(revision 9550)
+++ code/trunk/src/modules/gametypes/RaceCheckPoint.h	(revision 9667)
@@ -45,5 +45,5 @@
     {
         public:
-            RaceCheckPoint(BaseObject* creator);
+            RaceCheckPoint(Context* context);
             virtual ~RaceCheckPoint();
 
@@ -70,5 +70,5 @@
             }
 
-            const std::set<int>& getNextCheckpoints()
+            std::set<int> getNextCheckpoints()
             {
                 return nextCheckpoints_;
Index: code/trunk/src/modules/gametypes/SpaceRace.cc
===================================================================
--- code/trunk/src/modules/gametypes/SpaceRace.cc	(revision 9550)
+++ code/trunk/src/modules/gametypes/SpaceRace.cc	(revision 9667)
@@ -40,7 +40,7 @@
 namespace orxonox
 {
-    CreateUnloadableFactory(SpaceRace);
+    RegisterUnloadableClass(SpaceRace);
 
-    SpaceRace::SpaceRace(BaseObject* creator) : Gametype(creator)
+    SpaceRace::SpaceRace(Context* context) : Gametype(context)
     {
         RegisterObject(SpaceRace);
Index: code/trunk/src/modules/gametypes/SpaceRace.h
===================================================================
--- code/trunk/src/modules/gametypes/SpaceRace.h	(revision 9550)
+++ code/trunk/src/modules/gametypes/SpaceRace.h	(revision 9667)
@@ -54,5 +54,5 @@
 
         public:
-            SpaceRace(BaseObject* creator);
+            SpaceRace(Context* context);
             virtual ~SpaceRace() {}
 
Index: code/trunk/src/modules/gametypes/SpaceRaceBot.cc
===================================================================
--- code/trunk/src/modules/gametypes/SpaceRaceBot.cc	(revision 9550)
+++ code/trunk/src/modules/gametypes/SpaceRaceBot.cc	(revision 9667)
@@ -29,7 +29,7 @@
 namespace orxonox
 {
-    CreateFactory(SpaceRaceBot);
+    RegisterClass(SpaceRaceBot);
 
-    SpaceRaceBot::SpaceRaceBot(BaseObject* creator) : Bot(creator){
+    SpaceRaceBot::SpaceRaceBot(Context* context) : Bot(context){
         RegisterObject(SpaceRaceBot);
         this->defaultController_ = Class(SpaceRaceController);// ClassByString("")
Index: code/trunk/src/modules/gametypes/SpaceRaceBot.h
===================================================================
--- code/trunk/src/modules/gametypes/SpaceRaceBot.h	(revision 9550)
+++ code/trunk/src/modules/gametypes/SpaceRaceBot.h	(revision 9667)
@@ -41,5 +41,5 @@
     {
         public:
-        SpaceRaceBot(BaseObject* creator);
+        SpaceRaceBot(Context* context);
             virtual ~SpaceRaceBot() {}
     };
Index: code/trunk/src/modules/gametypes/SpaceRaceController.cc
===================================================================
--- code/trunk/src/modules/gametypes/SpaceRaceController.cc	(revision 9550)
+++ code/trunk/src/modules/gametypes/SpaceRaceController.cc	(revision 9667)
@@ -45,5 +45,5 @@
 namespace orxonox
 {
-    CreateFactory(SpaceRaceController);
+    RegisterClass(SpaceRaceController);
 
     const int ADJUSTDISTANCE = 500;
@@ -52,6 +52,6 @@
      * Idea: Find static Point (checkpoints the spaceship has to reach)
      */
-    SpaceRaceController::SpaceRaceController(BaseObject* creator) :
-        ArtificialController(creator)
+    SpaceRaceController::SpaceRaceController(Context* context) :
+        ArtificialController(context)
     {
         RegisterObject(SpaceRaceController)
@@ -86,5 +86,5 @@
 
         }//ausgabe*/
-
+        /*
         for (std::vector<RaceCheckPoint*>::iterator it = checkpoints.begin(); it != checkpoints.end(); ++it)
         {
@@ -100,5 +100,7 @@
                 }
             }
-        }/*
+        }
+        */
+        /*
         for(std::vector<RaceCheckPoint*>::iterator it=checkpoints_.begin(); it!=checkpoints_.end(); it++)
         {
@@ -301,6 +303,6 @@
     {
         for (size_t i = 0; i < this->checkpoints_.size(); ++i)
-        if (this->checkpoints_[i]->getCheckpointIndex() == index)
-        return this->checkpoints_[i];
+            if (this->checkpoints_[i]->getCheckpointIndex() == index)
+                return this->checkpoints_[i];
         return NULL;
     }
@@ -340,8 +342,8 @@
         //orxout()<<"temp nach ausgabe: "<<previousCheckpoint->getVirtualNextCheckpointsAsVector3().x<<previousCheckpoint->getVirtualNextCheckpointsAsVector3().y<<previousCheckpoint->getVirtualNextCheckpointsAsVector3().z<<endl;
         //OrxAssert(virtualCheckPointIndex < -1, "TO much virtual cp");
-        /*orxout()<<"id: "<< previousCheckpoint->getCheckpointIndex() <<", following:"<<indexFollowingCheckPoint<<" :       "<<temp.x<<", "<<temp.y<<", "<<temp.z<<";       ";
+        orxout()<<"id: "<< previousCheckpoint->getCheckpointIndex() <<", following:"<<indexFollowingCheckPoint<<" :       "<<temp.x<<", "<<temp.y<<", "<<temp.z<<";       ";
          temp=previousCheckpoint->getNextCheckpointsAsVector3();
          orxout()<<"id: "<< previousCheckpoint->getCheckpointIndex() <<":       "<<temp.x<<", "<<temp.y<<", "<<temp.z<<";       ";
-         orxout()<<endl;*//*
+         orxout()<<endl;
         return newTempRaceCheckPoint;
     }*/
Index: code/trunk/src/modules/gametypes/SpaceRaceController.h
===================================================================
--- code/trunk/src/modules/gametypes/SpaceRaceController.h	(revision 9550)
+++ code/trunk/src/modules/gametypes/SpaceRaceController.h	(revision 9667)
@@ -65,5 +65,5 @@
 
         public:
-            SpaceRaceController(BaseObject* creator);
+            SpaceRaceController(Context* context);
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
             virtual ~SpaceRaceController();
Index: code/trunk/src/modules/gametypes/SpaceRaceManager.cc
===================================================================
--- code/trunk/src/modules/gametypes/SpaceRaceManager.cc	(revision 9550)
+++ code/trunk/src/modules/gametypes/SpaceRaceManager.cc	(revision 9667)
@@ -40,8 +40,8 @@
 namespace orxonox
 {
-    CreateFactory(SpaceRaceManager);
+    RegisterClass(SpaceRaceManager);
 
-    SpaceRaceManager::SpaceRaceManager(BaseObject* creator) :
-        BaseObject(creator)
+    SpaceRaceManager::SpaceRaceManager(Context* context) :
+        BaseObject(context)
     {
         RegisterObject(SpaceRaceManager);
Index: code/trunk/src/modules/gametypes/SpaceRaceManager.h
===================================================================
--- code/trunk/src/modules/gametypes/SpaceRaceManager.h	(revision 9550)
+++ code/trunk/src/modules/gametypes/SpaceRaceManager.h	(revision 9667)
@@ -55,5 +55,5 @@
 
         public:
-            SpaceRaceManager(BaseObject* creator);
+            SpaceRaceManager(Context* context);
             virtual ~SpaceRaceManager() ;
 
Index: code/trunk/src/modules/notifications/NotificationDispatcher.cc
===================================================================
--- code/trunk/src/modules/notifications/NotificationDispatcher.cc	(revision 9550)
+++ code/trunk/src/modules/notifications/NotificationDispatcher.cc	(revision 9667)
@@ -48,5 +48,5 @@
 {
 
-    CreateUnloadableFactory(NotificationDispatcher);
+    RegisterUnloadableClass(NotificationDispatcher);
 
     registerMemberNetworkFunction(NotificationDispatcher, broadcastHelper);
@@ -57,5 +57,5 @@
         Default constructor. Initializes the object.
     */
-    NotificationDispatcher::NotificationDispatcher(BaseObject* creator) : BaseObject(creator), Synchronisable(creator)
+    NotificationDispatcher::NotificationDispatcher(Context* context) : BaseObject(context), Synchronisable(context)
     {
         RegisterObject(NotificationDispatcher);
Index: code/trunk/src/modules/notifications/NotificationDispatcher.h
===================================================================
--- code/trunk/src/modules/notifications/NotificationDispatcher.h	(revision 9550)
+++ code/trunk/src/modules/notifications/NotificationDispatcher.h	(revision 9667)
@@ -76,5 +76,5 @@
     {
         public:
-            NotificationDispatcher(BaseObject* creator); //!< Default constructor. Initializes the object.
+            NotificationDispatcher(Context* context); //!< Default constructor. Initializes the object.
             virtual ~NotificationDispatcher(); //!< Destructor.
 
Index: code/trunk/src/modules/notifications/NotificationManager.cc
===================================================================
--- code/trunk/src/modules/notifications/NotificationManager.cc	(revision 9550)
+++ code/trunk/src/modules/notifications/NotificationManager.cc	(revision 9667)
@@ -55,5 +55,5 @@
     NotificationManager::NotificationManager()
     {
-        RegisterRootObject(NotificationManager);
+        RegisterObject(NotificationManager);
 
         orxout(internal_info, context::notifications) << "NotificatioManager created." << endl;
Index: code/trunk/src/modules/notifications/NotificationManager.h
===================================================================
--- code/trunk/src/modules/notifications/NotificationManager.h	(revision 9550)
+++ code/trunk/src/modules/notifications/NotificationManager.h	(revision 9667)
@@ -42,5 +42,4 @@
 #include <string>
 
-#include "core/OrxonoxClass.h"
 #include "util/Singleton.h"
 #include "interfaces/NotificationListener.h"
Index: code/trunk/src/modules/notifications/NotificationQueue.cc
===================================================================
--- code/trunk/src/modules/notifications/NotificationQueue.cc	(revision 9550)
+++ code/trunk/src/modules/notifications/NotificationQueue.cc	(revision 9667)
@@ -44,5 +44,5 @@
 {
 
-    CreateFactory(NotificationQueue);
+    RegisterClass(NotificationQueue);
 
     /**
@@ -52,5 +52,5 @@
         The creator of the NotificationQueue.
     */
-    NotificationQueue::NotificationQueue(BaseObject* creator) : BaseObject(creator), Synchronisable(creator), registered_(false)
+    NotificationQueue::NotificationQueue(Context* context) : BaseObject(context), Synchronisable(context), registered_(false)
     {
         RegisterObject(NotificationQueue);
Index: code/trunk/src/modules/notifications/NotificationQueue.h
===================================================================
--- code/trunk/src/modules/notifications/NotificationQueue.h	(revision 9550)
+++ code/trunk/src/modules/notifications/NotificationQueue.h	(revision 9667)
@@ -94,5 +94,5 @@
 
         public:
-            NotificationQueue(BaseObject* creator);
+            NotificationQueue(Context* context);
             virtual ~NotificationQueue();
 
Index: code/trunk/src/modules/notifications/NotificationQueueCEGUI.cc
===================================================================
--- code/trunk/src/modules/notifications/NotificationQueueCEGUI.cc	(revision 9550)
+++ code/trunk/src/modules/notifications/NotificationQueueCEGUI.cc	(revision 9667)
@@ -46,9 +46,9 @@
 {
 
-    CreateFactory(NotificationQueueCEGUI);
+    RegisterClass(NotificationQueueCEGUI);
 
     /*static*/ const std::string NotificationQueueCEGUI::NOTIFICATION_LAYER("NotificationLayer");
 
-    NotificationQueueCEGUI::NotificationQueueCEGUI(BaseObject* creator) : NotificationQueue(creator)
+    NotificationQueueCEGUI::NotificationQueueCEGUI(Context* context) : NotificationQueue(context)
     {
         RegisterObject(NotificationQueueCEGUI);
Index: code/trunk/src/modules/notifications/NotificationQueueCEGUI.h
===================================================================
--- code/trunk/src/modules/notifications/NotificationQueueCEGUI.h	(revision 9550)
+++ code/trunk/src/modules/notifications/NotificationQueueCEGUI.h	(revision 9667)
@@ -70,5 +70,5 @@
 
         public:
-            NotificationQueueCEGUI(BaseObject* creator);
+            NotificationQueueCEGUI(Context* context);
             virtual ~NotificationQueueCEGUI();
 
Index: code/trunk/src/modules/notifications/dispatchers/CommandNotification.cc
===================================================================
--- code/trunk/src/modules/notifications/dispatchers/CommandNotification.cc	(revision 9550)
+++ code/trunk/src/modules/notifications/dispatchers/CommandNotification.cc	(revision 9667)
@@ -44,5 +44,5 @@
 namespace orxonox {
 
-    CreateFactory(CommandNotification);
+    RegisterClass(CommandNotification);
 
     /**
@@ -50,5 +50,5 @@
         Default Constructor. Registers the object and initializes variables.
     */
-    CommandNotification::CommandNotification(BaseObject* creator) : NotificationDispatcher(creator)
+    CommandNotification::CommandNotification(Context* context) : NotificationDispatcher(context)
     {
         RegisterObject(CommandNotification);
Index: code/trunk/src/modules/notifications/dispatchers/CommandNotification.h
===================================================================
--- code/trunk/src/modules/notifications/dispatchers/CommandNotification.h	(revision 9550)
+++ code/trunk/src/modules/notifications/dispatchers/CommandNotification.h	(revision 9667)
@@ -70,5 +70,5 @@
 
         public:
-            CommandNotification(BaseObject* creator); //!< Default Constructor.
+            CommandNotification(Context* context); //!< Default Constructor.
             virtual ~CommandNotification(); //!< Destructor.
 
Index: code/trunk/src/modules/notifications/dispatchers/SimpleNotification.cc
===================================================================
--- code/trunk/src/modules/notifications/dispatchers/SimpleNotification.cc	(revision 9550)
+++ code/trunk/src/modules/notifications/dispatchers/SimpleNotification.cc	(revision 9667)
@@ -39,5 +39,5 @@
 namespace orxonox {
 
-    CreateFactory(SimpleNotification);
+    RegisterClass(SimpleNotification);
 
     /**
@@ -45,5 +45,5 @@
         Default Constructor. Registers the object and initializes variables.
     */
-    SimpleNotification::SimpleNotification(BaseObject* creator) : NotificationDispatcher(creator)
+    SimpleNotification::SimpleNotification(Context* context) : NotificationDispatcher(context)
     {
         RegisterObject(SimpleNotification);
Index: code/trunk/src/modules/notifications/dispatchers/SimpleNotification.h
===================================================================
--- code/trunk/src/modules/notifications/dispatchers/SimpleNotification.h	(revision 9550)
+++ code/trunk/src/modules/notifications/dispatchers/SimpleNotification.h	(revision 9667)
@@ -67,5 +67,5 @@
     {
         public:
-            SimpleNotification(BaseObject* creator); //!< Default Constructor.
+            SimpleNotification(Context* context); //!< Default Constructor.
             virtual ~SimpleNotification(); //!< Destructor.
 
Index: code/trunk/src/modules/objects/Attacher.cc
===================================================================
--- code/trunk/src/modules/objects/Attacher.cc	(revision 9550)
+++ code/trunk/src/modules/objects/Attacher.cc	(revision 9667)
@@ -34,7 +34,7 @@
 namespace orxonox
 {
-    CreateFactory(Attacher);
+    RegisterClass(Attacher);
 
-    Attacher::Attacher(BaseObject* creator) : StaticEntity(creator)
+    Attacher::Attacher(Context* context) : StaticEntity(context)
     {
         RegisterObject(Attacher);
Index: code/trunk/src/modules/objects/Attacher.h
===================================================================
--- code/trunk/src/modules/objects/Attacher.h	(revision 9550)
+++ code/trunk/src/modules/objects/Attacher.h	(revision 9667)
@@ -48,5 +48,5 @@
     {
         public:
-            Attacher(BaseObject* creator);
+            Attacher(Context* context);
             virtual ~Attacher() {}
 
Index: code/trunk/src/modules/objects/ForceField.cc
===================================================================
--- code/trunk/src/modules/objects/ForceField.cc	(revision 9550)
+++ code/trunk/src/modules/objects/ForceField.cc	(revision 9667)
@@ -40,5 +40,5 @@
 namespace orxonox
 {
-    CreateFactory(ForceField);
+    RegisterClass(ForceField);
 
     /*static*/ const std::string ForceField::modeTube_s = "tube";
@@ -53,5 +53,5 @@
         Constructor. Registers the object and initializes some values.
     */
-    ForceField::ForceField(BaseObject* creator) : StaticEntity(creator)
+    ForceField::ForceField(Context* context) : StaticEntity(context)
     {
         RegisterObject(ForceField);
Index: code/trunk/src/modules/objects/ForceField.h
===================================================================
--- code/trunk/src/modules/objects/ForceField.h	(revision 9550)
+++ code/trunk/src/modules/objects/ForceField.h	(revision 9667)
@@ -86,5 +86,5 @@
     {
         public:
-            ForceField(BaseObject* creator);
+            ForceField(Context* context);
             virtual ~ForceField();
 
Index: code/trunk/src/modules/objects/Planet.cc
===================================================================
--- code/trunk/src/modules/objects/Planet.cc	(revision 9550)
+++ code/trunk/src/modules/objects/Planet.cc	(revision 9667)
@@ -42,10 +42,10 @@
 namespace orxonox
 {
-    CreateFactory(Planet);
+    RegisterClass(Planet);
 
     /**
      * @brief Constructor
      */
-    Planet::Planet(BaseObject* creator) : MovableEntity(creator)
+    Planet::Planet(Context* context) : MovableEntity(context)
     {
         RegisterObject(Planet);
Index: code/trunk/src/modules/objects/Planet.h
===================================================================
--- code/trunk/src/modules/objects/Planet.h	(revision 9550)
+++ code/trunk/src/modules/objects/Planet.h	(revision 9667)
@@ -48,5 +48,5 @@
     {
         public:
-            Planet(BaseObject* creator);
+            Planet(Context* context);
 
             virtual ~Planet();
Index: code/trunk/src/modules/objects/Script.cc
===================================================================
--- code/trunk/src/modules/objects/Script.cc	(revision 9550)
+++ code/trunk/src/modules/objects/Script.cc	(revision 9667)
@@ -46,5 +46,5 @@
 namespace orxonox
 {
-    CreateFactory(Script);
+    RegisterClass(Script);
 
     registerStaticNetworkFunction(Script::executeHelper);
@@ -61,5 +61,5 @@
         The creator of this object.
     */
-    Script::Script(BaseObject* creator) : BaseObject(creator)
+    Script::Script(Context* context) : BaseObject(context)
     {
         RegisterObject(Script);
Index: code/trunk/src/modules/objects/Script.h
===================================================================
--- code/trunk/src/modules/objects/Script.h	(revision 9550)
+++ code/trunk/src/modules/objects/Script.h	(revision 9667)
@@ -95,5 +95,5 @@
     {
         public:
-            Script(BaseObject* creator);
+            Script(Context* context);
             virtual ~Script();
 
Index: code/trunk/src/modules/objects/SpaceBoundaries.cc
===================================================================
--- code/trunk/src/modules/objects/SpaceBoundaries.cc	(revision 9550)
+++ code/trunk/src/modules/objects/SpaceBoundaries.cc	(revision 9667)
@@ -32,5 +32,5 @@
 
 #include "core/CoreIncludes.h"
-#include "core/ObjectListIterator.h"
+#include "core/object/ObjectListIterator.h"
 #include "core/XMLPort.h"
 
@@ -42,7 +42,7 @@
 namespace orxonox
 {
-    CreateFactory(SpaceBoundaries);
-
-    SpaceBoundaries::SpaceBoundaries(BaseObject* creator) : StaticEntity(creator)
+    RegisterClass(SpaceBoundaries);
+
+    SpaceBoundaries::SpaceBoundaries(Context* context) : StaticEntity(context)
     {
         RegisterObject(SpaceBoundaries);
@@ -73,5 +73,5 @@
     {
         pawnsIn_.clear();
-        for(ObjectListIterator<Pawn> current = ObjectList<Pawn>::begin(); current != ObjectList<Pawn>::end(); ++current)
+        for(ObjectList<Pawn>::iterator current = ObjectList<Pawn>::begin(); current != ObjectList<Pawn>::end(); ++current)
         {
             Pawn* currentPawn = *current;
@@ -104,5 +104,5 @@
         if (current == this->billboards_.size())
         {
-            Billboard* billboard = new Billboard(this);
+            Billboard* billboard = new Billboard(this->getContext());
             billboard->setPosition(position);
             billboard->setSyncMode(ObjectDirection::None);
Index: code/trunk/src/modules/objects/SpaceBoundaries.h
===================================================================
--- code/trunk/src/modules/objects/SpaceBoundaries.h	(revision 9550)
+++ code/trunk/src/modules/objects/SpaceBoundaries.h	(revision 9667)
@@ -36,6 +36,5 @@
 #include <vector>
 
-#include "core/CoreIncludes.h"
-#include "core/WeakPtr.h"
+#include "core/object/WeakPtr.h"
 
 #include "tools/interfaces/Tickable.h"
@@ -76,5 +75,5 @@
     {
         public:
-            SpaceBoundaries(BaseObject* creator);
+            SpaceBoundaries(Context* context);
             ~SpaceBoundaries();
 
Index: code/trunk/src/modules/objects/Turret.cc
===================================================================
--- code/trunk/src/modules/objects/Turret.cc	(revision 9550)
+++ code/trunk/src/modules/objects/Turret.cc	(revision 9667)
@@ -35,13 +35,13 @@
 namespace orxonox
 {
-    CreateFactory(Turret);
+    RegisterClass(Turret);
 
     /**
      * @brief Constructor
      */
-    Turret::Turret(BaseObject* creator) : SpaceShip(creator)
+    Turret::Turret(Context* context) : SpaceShip(context)
     {
         RegisterObject(Turret);
-        this->controller_ = new WaypointPatrolController(this);
+        this->controller_ = new WaypointPatrolController(this->getContext());
     }
 
Index: code/trunk/src/modules/objects/Turret.h
===================================================================
--- code/trunk/src/modules/objects/Turret.h	(revision 9550)
+++ code/trunk/src/modules/objects/Turret.h	(revision 9667)
@@ -45,5 +45,5 @@
     {
         public:
-            Turret(BaseObject* creator);
+            Turret(Context* context);
             virtual ~Turret();
 
Index: code/trunk/src/modules/objects/collisionshapes/BoxCollisionShape.cc
===================================================================
--- code/trunk/src/modules/objects/collisionshapes/BoxCollisionShape.cc	(revision 9550)
+++ code/trunk/src/modules/objects/collisionshapes/BoxCollisionShape.cc	(revision 9667)
@@ -42,5 +42,5 @@
 namespace orxonox
 {
-    CreateFactory(BoxCollisionShape);
+    RegisterClass(BoxCollisionShape);
 
     /**
@@ -48,5 +48,5 @@
         Constructor. Registers and initializes the object.
     */
-    BoxCollisionShape::BoxCollisionShape(BaseObject* creator) : CollisionShape(creator)
+    BoxCollisionShape::BoxCollisionShape(Context* context) : CollisionShape(context)
     {
         RegisterObject(BoxCollisionShape);
Index: code/trunk/src/modules/objects/collisionshapes/BoxCollisionShape.h
===================================================================
--- code/trunk/src/modules/objects/collisionshapes/BoxCollisionShape.h	(revision 9550)
+++ code/trunk/src/modules/objects/collisionshapes/BoxCollisionShape.h	(revision 9667)
@@ -57,5 +57,5 @@
     {
         public:
-            BoxCollisionShape(BaseObject* creator);
+            BoxCollisionShape(Context* context);
             virtual ~BoxCollisionShape();
 
Index: code/trunk/src/modules/objects/collisionshapes/ConeCollisionShape.cc
===================================================================
--- code/trunk/src/modules/objects/collisionshapes/ConeCollisionShape.cc	(revision 9550)
+++ code/trunk/src/modules/objects/collisionshapes/ConeCollisionShape.cc	(revision 9667)
@@ -42,5 +42,5 @@
 namespace orxonox
 {
-    CreateFactory(ConeCollisionShape);
+    RegisterClass(ConeCollisionShape);
 
     /**
@@ -48,5 +48,5 @@
         Constructor. Registers and initializes the object.
     */
-    ConeCollisionShape::ConeCollisionShape(BaseObject* creator) : CollisionShape(creator)
+    ConeCollisionShape::ConeCollisionShape(Context* context) : CollisionShape(context)
     {
         RegisterObject(ConeCollisionShape);
Index: code/trunk/src/modules/objects/collisionshapes/ConeCollisionShape.h
===================================================================
--- code/trunk/src/modules/objects/collisionshapes/ConeCollisionShape.h	(revision 9550)
+++ code/trunk/src/modules/objects/collisionshapes/ConeCollisionShape.h	(revision 9667)
@@ -55,5 +55,5 @@
     {
         public:
-            ConeCollisionShape(BaseObject* creator);
+            ConeCollisionShape(Context* context);
             virtual ~ConeCollisionShape();
 
Index: code/trunk/src/modules/objects/collisionshapes/PlaneCollisionShape.cc
===================================================================
--- code/trunk/src/modules/objects/collisionshapes/PlaneCollisionShape.cc	(revision 9550)
+++ code/trunk/src/modules/objects/collisionshapes/PlaneCollisionShape.cc	(revision 9667)
@@ -42,5 +42,5 @@
 namespace orxonox
 {
-    CreateFactory(PlaneCollisionShape);
+    RegisterClass(PlaneCollisionShape);
 
     /**
@@ -48,5 +48,5 @@
         Constructor. Registers and initializes the object.
     */
-    PlaneCollisionShape::PlaneCollisionShape(BaseObject* creator) : CollisionShape(creator)
+    PlaneCollisionShape::PlaneCollisionShape(Context* context) : CollisionShape(context)
     {
         RegisterObject(PlaneCollisionShape);
Index: code/trunk/src/modules/objects/collisionshapes/PlaneCollisionShape.h
===================================================================
--- code/trunk/src/modules/objects/collisionshapes/PlaneCollisionShape.h	(revision 9550)
+++ code/trunk/src/modules/objects/collisionshapes/PlaneCollisionShape.h	(revision 9667)
@@ -57,5 +57,5 @@
     {
         public:
-            PlaneCollisionShape(BaseObject* creator);
+            PlaneCollisionShape(Context* context);
             virtual ~PlaneCollisionShape();
 
Index: code/trunk/src/modules/objects/collisionshapes/SphereCollisionShape.cc
===================================================================
--- code/trunk/src/modules/objects/collisionshapes/SphereCollisionShape.cc	(revision 9550)
+++ code/trunk/src/modules/objects/collisionshapes/SphereCollisionShape.cc	(revision 9667)
@@ -42,5 +42,5 @@
 namespace orxonox
 {
-    CreateFactory(SphereCollisionShape);
+    RegisterClass(SphereCollisionShape);
 
     /**
@@ -48,5 +48,5 @@
         Constructor. registers and initializes the object.
     */
-    SphereCollisionShape::SphereCollisionShape(BaseObject* creator) : CollisionShape(creator)
+    SphereCollisionShape::SphereCollisionShape(Context* context) : CollisionShape(context)
     {
         RegisterObject(SphereCollisionShape);
Index: code/trunk/src/modules/objects/collisionshapes/SphereCollisionShape.h
===================================================================
--- code/trunk/src/modules/objects/collisionshapes/SphereCollisionShape.h	(revision 9550)
+++ code/trunk/src/modules/objects/collisionshapes/SphereCollisionShape.h	(revision 9667)
@@ -55,5 +55,5 @@
     {
         public:
-            SphereCollisionShape(BaseObject* creator);
+            SphereCollisionShape(Context* context);
             virtual ~SphereCollisionShape();
 
Index: code/trunk/src/modules/objects/eventsystem/EventDispatcher.cc
===================================================================
--- code/trunk/src/modules/objects/eventsystem/EventDispatcher.cc	(revision 9550)
+++ code/trunk/src/modules/objects/eventsystem/EventDispatcher.cc	(revision 9667)
@@ -35,7 +35,7 @@
 namespace orxonox
 {
-    CreateFactory(EventDispatcher);
+    RegisterClass(EventDispatcher);
 
-    EventDispatcher::EventDispatcher(BaseObject* creator) : BaseObject(creator)
+    EventDispatcher::EventDispatcher(Context* context) : BaseObject(context)
     {
         RegisterObject(EventDispatcher);
Index: code/trunk/src/modules/objects/eventsystem/EventDispatcher.h
===================================================================
--- code/trunk/src/modules/objects/eventsystem/EventDispatcher.h	(revision 9550)
+++ code/trunk/src/modules/objects/eventsystem/EventDispatcher.h	(revision 9667)
@@ -46,5 +46,5 @@
     {
         public:
-            EventDispatcher(BaseObject* creator);
+            EventDispatcher(Context* context);
             virtual ~EventDispatcher();
 
Index: code/trunk/src/modules/objects/eventsystem/EventFilter.cc
===================================================================
--- code/trunk/src/modules/objects/eventsystem/EventFilter.cc	(revision 9550)
+++ code/trunk/src/modules/objects/eventsystem/EventFilter.cc	(revision 9667)
@@ -36,7 +36,7 @@
 namespace orxonox
 {
-    CreateFactory(EventFilter);
+    RegisterClass(EventFilter);
 
-    EventFilter::EventFilter(BaseObject* creator) : BaseObject(creator)
+    EventFilter::EventFilter(Context* context) : BaseObject(context)
     {
         RegisterObject(EventFilter);
Index: code/trunk/src/modules/objects/eventsystem/EventFilter.h
===================================================================
--- code/trunk/src/modules/objects/eventsystem/EventFilter.h	(revision 9550)
+++ code/trunk/src/modules/objects/eventsystem/EventFilter.h	(revision 9667)
@@ -46,5 +46,5 @@
     {
         public:
-            EventFilter(BaseObject* creator);
+            EventFilter(Context* context);
             virtual ~EventFilter();
 
Index: code/trunk/src/modules/objects/eventsystem/EventListener.cc
===================================================================
--- code/trunk/src/modules/objects/eventsystem/EventListener.cc	(revision 9550)
+++ code/trunk/src/modules/objects/eventsystem/EventListener.cc	(revision 9667)
@@ -35,7 +35,7 @@
 namespace orxonox
 {
-    CreateFactory(EventListener);
+    RegisterClass(EventListener);
 
-    EventListener::EventListener(BaseObject* creator) : BaseObject(creator)
+    EventListener::EventListener(Context* context) : BaseObject(context)
     {
         RegisterObject(EventListener);
Index: code/trunk/src/modules/objects/eventsystem/EventListener.h
===================================================================
--- code/trunk/src/modules/objects/eventsystem/EventListener.h	(revision 9550)
+++ code/trunk/src/modules/objects/eventsystem/EventListener.h	(revision 9667)
@@ -47,5 +47,5 @@
     {
         public:
-            EventListener(BaseObject* creator);
+            EventListener(Context* context);
             virtual ~EventListener();
 
Index: code/trunk/src/modules/objects/eventsystem/EventName.cc
===================================================================
--- code/trunk/src/modules/objects/eventsystem/EventName.cc	(revision 9550)
+++ code/trunk/src/modules/objects/eventsystem/EventName.cc	(revision 9667)
@@ -32,7 +32,7 @@
 namespace orxonox
 {
-    CreateFactory(EventName);
+    RegisterClass(EventName);
 
-    EventName::EventName(BaseObject* creator) : BaseObject(creator)
+    EventName::EventName(Context* context) : BaseObject(context)
     {
         RegisterObject(EventName);
Index: code/trunk/src/modules/objects/eventsystem/EventName.h
===================================================================
--- code/trunk/src/modules/objects/eventsystem/EventName.h	(revision 9550)
+++ code/trunk/src/modules/objects/eventsystem/EventName.h	(revision 9667)
@@ -45,5 +45,5 @@
     {
         public:
-            EventName(BaseObject* creator);
+            EventName(Context* context);
             virtual ~EventName() {}
     };
Index: code/trunk/src/modules/objects/eventsystem/EventTarget.cc
===================================================================
--- code/trunk/src/modules/objects/eventsystem/EventTarget.cc	(revision 9550)
+++ code/trunk/src/modules/objects/eventsystem/EventTarget.cc	(revision 9667)
@@ -33,7 +33,7 @@
 namespace orxonox
 {
-    CreateFactory(EventTarget);
+    RegisterClass(EventTarget);
 
-    EventTarget::EventTarget(BaseObject* creator) : BaseObject(creator)
+    EventTarget::EventTarget(Context* context) : BaseObject(context)
     {
         RegisterObject(EventTarget);
Index: code/trunk/src/modules/objects/eventsystem/EventTarget.h
===================================================================
--- code/trunk/src/modules/objects/eventsystem/EventTarget.h	(revision 9550)
+++ code/trunk/src/modules/objects/eventsystem/EventTarget.h	(revision 9667)
@@ -46,5 +46,5 @@
     {
         public:
-            EventTarget(BaseObject* creator);
+            EventTarget(Context* context);
             virtual ~EventTarget();
 
Index: code/trunk/src/modules/objects/triggers/CheckPoint.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/CheckPoint.cc	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/CheckPoint.cc	(revision 9667)
@@ -42,9 +42,9 @@
 namespace orxonox
 {
-    CreateFactory(CheckPoint);
+    RegisterClass(CheckPoint);
 
-    CheckPoint::CheckPoint(BaseObject* creator)
-        : DistanceTrigger(creator)
-        , RadarViewable(creator, static_cast<WorldEntity*>(this))
+    CheckPoint::CheckPoint(Context* context)
+        : DistanceTrigger(context)
+        , RadarViewable(this, static_cast<WorldEntity*>(this))
     {
         RegisterObject(CheckPoint);
Index: code/trunk/src/modules/objects/triggers/CheckPoint.h
===================================================================
--- code/trunk/src/modules/objects/triggers/CheckPoint.h	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/CheckPoint.h	(revision 9667)
@@ -55,5 +55,5 @@
     {
     public:
-        CheckPoint(BaseObject* creator);
+        CheckPoint(Context* context);
         virtual ~CheckPoint();
 
Index: code/trunk/src/modules/objects/triggers/DistanceMultiTrigger.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/DistanceMultiTrigger.cc	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/DistanceMultiTrigger.cc	(revision 9667)
@@ -47,5 +47,5 @@
     /*static*/ const std::string DistanceMultiTrigger::beaconModeExlcude_s = "exclude";
     
-    CreateFactory(DistanceMultiTrigger);
+    RegisterClass(DistanceMultiTrigger);
 
     /**
@@ -53,5 +53,5 @@
         Default Constructor. Registers the object and initializes default values.
     */
-    DistanceMultiTrigger::DistanceMultiTrigger(BaseObject* creator) : MultiTrigger(creator)
+    DistanceMultiTrigger::DistanceMultiTrigger(Context* context) : MultiTrigger(context)
     {
         RegisterObject(DistanceMultiTrigger);
Index: code/trunk/src/modules/objects/triggers/DistanceMultiTrigger.h
===================================================================
--- code/trunk/src/modules/objects/triggers/DistanceMultiTrigger.h	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/DistanceMultiTrigger.h	(revision 9667)
@@ -40,5 +40,5 @@
 #include <map>
 
-#include "core/WeakPtr.h"
+#include "core/object/WeakPtr.h"
 
 #include "worldentities/WorldEntity.h"
@@ -95,5 +95,5 @@
 
         public:
-            DistanceMultiTrigger(BaseObject* creator); // Default Constructor. Registers the object and initializes default values.
+            DistanceMultiTrigger(Context* context); // Default Constructor. Registers the object and initializes default values.
             virtual ~DistanceMultiTrigger(); // Destructor.
 
Index: code/trunk/src/modules/objects/triggers/DistanceTrigger.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/DistanceTrigger.cc	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/DistanceTrigger.cc	(revision 9667)
@@ -49,5 +49,5 @@
     /*static*/ const std::string DistanceTrigger::beaconModeExlcude_s = "exclude";
 
-    CreateFactory(DistanceTrigger);
+    RegisterClass(DistanceTrigger);
 
     /**
@@ -57,5 +57,5 @@
         The creator of this trigger.
     */
-    DistanceTrigger::DistanceTrigger(BaseObject* creator) : Trigger(creator)
+    DistanceTrigger::DistanceTrigger(Context* context) : Trigger(context)
     {
         RegisterObject(DistanceTrigger);
Index: code/trunk/src/modules/objects/triggers/DistanceTrigger.h
===================================================================
--- code/trunk/src/modules/objects/triggers/DistanceTrigger.h	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/DistanceTrigger.h	(revision 9667)
@@ -97,5 +97,5 @@
     {
         public:
-            DistanceTrigger(BaseObject* creator); // Constructor. Registers and initializes the object.
+            DistanceTrigger(Context* context); // Constructor. Registers and initializes the object.
             virtual ~DistanceTrigger();
 
Index: code/trunk/src/modules/objects/triggers/DistanceTriggerBeacon.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/DistanceTriggerBeacon.cc	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/DistanceTriggerBeacon.cc	(revision 9667)
@@ -40,5 +40,5 @@
 {
 
-    CreateFactory(DistanceTriggerBeacon);
+    RegisterClass(DistanceTriggerBeacon);
 
     /**
@@ -48,5 +48,5 @@
         The creator of this object.
     */
-    DistanceTriggerBeacon::DistanceTriggerBeacon(BaseObject* creator) : StaticEntity(creator)
+    DistanceTriggerBeacon::DistanceTriggerBeacon(Context* context) : StaticEntity(context)
     {
         RegisterObject(DistanceTriggerBeacon);
Index: code/trunk/src/modules/objects/triggers/DistanceTriggerBeacon.h
===================================================================
--- code/trunk/src/modules/objects/triggers/DistanceTriggerBeacon.h	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/DistanceTriggerBeacon.h	(revision 9667)
@@ -57,5 +57,5 @@
 
         public:
-            DistanceTriggerBeacon(BaseObject* creator); //!< Constructor.
+            DistanceTriggerBeacon(Context* context); //!< Constructor.
             virtual ~DistanceTriggerBeacon() {} //!< Destructor.
 
Index: code/trunk/src/modules/objects/triggers/EventMultiTrigger.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/EventMultiTrigger.cc	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/EventMultiTrigger.cc	(revision 9667)
@@ -43,5 +43,5 @@
 {
 
-    CreateFactory(EventMultiTrigger);
+    RegisterClass(EventMultiTrigger);
 
     /**
@@ -49,5 +49,5 @@
         Constructor. Registers the object.
     */
-    EventMultiTrigger::EventMultiTrigger(BaseObject* creator) : MultiTrigger(creator)
+    EventMultiTrigger::EventMultiTrigger(Context* context) : MultiTrigger(context)
     {
         RegisterObject(EventMultiTrigger);
Index: code/trunk/src/modules/objects/triggers/EventMultiTrigger.h
===================================================================
--- code/trunk/src/modules/objects/triggers/EventMultiTrigger.h	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/EventMultiTrigger.h	(revision 9667)
@@ -73,5 +73,5 @@
 
         public:
-            EventMultiTrigger(BaseObject* creator); //!< Constructor. Registers the object.
+            EventMultiTrigger(Context* context); //!< Constructor. Registers the object.
             virtual ~EventMultiTrigger(); //!< Destructor.
 
Index: code/trunk/src/modules/objects/triggers/EventTrigger.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/EventTrigger.cc	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/EventTrigger.cc	(revision 9667)
@@ -40,5 +40,5 @@
 namespace orxonox
 {
-    CreateFactory(EventTrigger);
+    RegisterClass(EventTrigger);
 
     /**
@@ -48,5 +48,5 @@
         The creator of the EventTrigger.
     */
-    EventTrigger::EventTrigger(BaseObject* creator) : Trigger(creator)
+    EventTrigger::EventTrigger(Context* context) : Trigger(context)
     {
         RegisterObject(EventTrigger);
Index: code/trunk/src/modules/objects/triggers/EventTrigger.h
===================================================================
--- code/trunk/src/modules/objects/triggers/EventTrigger.h	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/EventTrigger.h	(revision 9667)
@@ -70,5 +70,5 @@
     {
         public:
-            EventTrigger(BaseObject* creator); // Constructor. Registers and initializes the object.
+            EventTrigger(Context* context); // Constructor. Registers and initializes the object.
             virtual ~EventTrigger();
 
Index: code/trunk/src/modules/objects/triggers/MultiTrigger.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/MultiTrigger.cc	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/MultiTrigger.cc	(revision 9667)
@@ -43,5 +43,5 @@
 {
 
-    CreateFactory(MultiTrigger);
+    RegisterClass(MultiTrigger);
 
     /**
@@ -51,5 +51,5 @@
         The creator.
     */
-    MultiTrigger::MultiTrigger(BaseObject* creator) : TriggerBase(creator)
+    MultiTrigger::MultiTrigger(Context* context) : TriggerBase(context)
     {
         RegisterObject(MultiTrigger);
@@ -451,5 +451,5 @@
         }
 
-        MultiTriggerContainer* container = new MultiTriggerContainer(this, this, originator);
+        MultiTriggerContainer* container = new MultiTriggerContainer(this->getContext(), this, originator);
         this->fireEvent(status, container);
         orxout(verbose, context::triggers) << "MultiTrigger '" <<  this->getName() << "' (&" << this << "): Fired event. originator: " << originator->getIdentifier()->getName() << " (&" << originator << "), status: " << status << "." << endl;
Index: code/trunk/src/modules/objects/triggers/MultiTrigger.h
===================================================================
--- code/trunk/src/modules/objects/triggers/MultiTrigger.h	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/MultiTrigger.h	(revision 9667)
@@ -99,5 +99,5 @@
     {
         public:
-            MultiTrigger(BaseObject* creator); //!< Constructor. Registers the objects and initializes default values.
+            MultiTrigger(Context* context); //!< Constructor. Registers the objects and initializes default values.
             virtual ~MultiTrigger(); //!< Destructor.
 
Index: code/trunk/src/modules/objects/triggers/MultiTriggerContainer.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/MultiTriggerContainer.cc	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/MultiTriggerContainer.cc	(revision 9667)
@@ -42,5 +42,5 @@
 {
 
-    CreateUnloadableFactory(MultiTriggerContainer);
+    RegisterUnloadableClass(MultiTriggerContainer);
 
     /**
@@ -50,5 +50,5 @@
         The creator.
     */
-    MultiTriggerContainer::MultiTriggerContainer(BaseObject* creator) : BaseObject(creator), originator_(NULL), data_(NULL)
+    MultiTriggerContainer::MultiTriggerContainer(Context* context) : BaseObject(context), originator_(NULL), data_(NULL)
     {
         RegisterObject(MultiTriggerContainer);
@@ -65,5 +65,5 @@
         A pointer to the data that should be sent with the container.
     */
-    MultiTriggerContainer::MultiTriggerContainer(BaseObject* creator, MultiTrigger* originator, BaseObject* data) : BaseObject(creator), originator_(originator), data_(data)
+    MultiTriggerContainer::MultiTriggerContainer(Context* context, MultiTrigger* originator, BaseObject* data) : BaseObject(context), originator_(originator), data_(data)
     {
         RegisterObject(MultiTriggerContainer);
Index: code/trunk/src/modules/objects/triggers/MultiTriggerContainer.h
===================================================================
--- code/trunk/src/modules/objects/triggers/MultiTriggerContainer.h	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/MultiTriggerContainer.h	(revision 9667)
@@ -58,6 +58,6 @@
 
         public:
-            MultiTriggerContainer(BaseObject* creator); //!< Default constructor. Registers the object and creates an empty container.
-            MultiTriggerContainer(BaseObject* creator, MultiTrigger* originator, BaseObject* data); //!< Constructor. Registers the object and sets the input values.
+            MultiTriggerContainer(Context* context); //!< Default constructor. Registers the object and creates an empty container.
+            MultiTriggerContainer(Context* context, MultiTrigger* originator, BaseObject* data); //!< Constructor. Registers the object and sets the input values.
             virtual ~MultiTriggerContainer(); //!< Destructor.
 
Index: code/trunk/src/modules/objects/triggers/Trigger.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/Trigger.cc	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/Trigger.cc	(revision 9667)
@@ -47,5 +47,5 @@
     SetConsoleCommand("Trigger", "debugFlares", &Trigger::debugFlares).defaultValues(false);
 
-    CreateFactory(Trigger);
+    RegisterClass(Trigger);
 
     /**
@@ -55,5 +55,5 @@
         The creator of the Trigger.
     */
-    Trigger::Trigger(BaseObject* creator) : TriggerBase(creator)
+    Trigger::Trigger(Context* context) : TriggerBase(context)
     {
         RegisterObject(Trigger);
Index: code/trunk/src/modules/objects/triggers/Trigger.h
===================================================================
--- code/trunk/src/modules/objects/triggers/Trigger.h	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/Trigger.h	(revision 9667)
@@ -80,5 +80,5 @@
     {
         public:
-            Trigger(BaseObject* creator); // Constructor. Registers and initializes the object.
+            Trigger(Context* context); // Constructor. Registers and initializes the object.
             virtual ~Trigger();
 
Index: code/trunk/src/modules/objects/triggers/TriggerBase.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/TriggerBase.cc	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/TriggerBase.cc	(revision 9667)
@@ -46,5 +46,5 @@
     /*static*/ const std::string TriggerBase::xor_s = "xor";
 
-    CreateFactory(TriggerBase);
+    RegisterClass(TriggerBase);
 
     /**
@@ -52,5 +52,5 @@
         Constructor. Registers the object and initializes some values.
     */
-    TriggerBase::TriggerBase(BaseObject* creator) : StaticEntity(creator)
+    TriggerBase::TriggerBase(Context* context) : StaticEntity(context)
     {
         RegisterObject(TriggerBase);
Index: code/trunk/src/modules/objects/triggers/TriggerBase.h
===================================================================
--- code/trunk/src/modules/objects/triggers/TriggerBase.h	(revision 9550)
+++ code/trunk/src/modules/objects/triggers/TriggerBase.h	(revision 9667)
@@ -74,5 +74,5 @@
     {
         public:
-            TriggerBase(BaseObject* creator);
+            TriggerBase(Context* context);
             virtual ~TriggerBase();
 
Index: code/trunk/src/modules/overlays/FadeoutText.cc
===================================================================
--- code/trunk/src/modules/overlays/FadeoutText.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/FadeoutText.cc	(revision 9667)
@@ -36,7 +36,7 @@
 namespace orxonox
 {
-    CreateFactory(FadeoutText);
+    RegisterClass(FadeoutText);
 
-    FadeoutText::FadeoutText(BaseObject* creator) : OverlayText(creator)
+    FadeoutText::FadeoutText(Context* context) : OverlayText(context)
     {
         RegisterObject(FadeoutText);
Index: code/trunk/src/modules/overlays/FadeoutText.h
===================================================================
--- code/trunk/src/modules/overlays/FadeoutText.h	(revision 9550)
+++ code/trunk/src/modules/overlays/FadeoutText.h	(revision 9667)
@@ -41,5 +41,5 @@
     {
         public:
-            FadeoutText(BaseObject* creator);
+            FadeoutText(Context* context);
             virtual ~FadeoutText() {}
 
Index: code/trunk/src/modules/overlays/GUIOverlay.cc
===================================================================
--- code/trunk/src/modules/overlays/GUIOverlay.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/GUIOverlay.cc	(revision 9667)
@@ -41,7 +41,7 @@
 namespace orxonox
 {
-    CreateFactory(GUIOverlay);
+    RegisterClass(GUIOverlay);
 
-    GUIOverlay::GUIOverlay(BaseObject* creator) : OrxonoxOverlay(creator)
+    GUIOverlay::GUIOverlay(Context* context) : OrxonoxOverlay(context)
     {
         RegisterObject(GUIOverlay);
Index: code/trunk/src/modules/overlays/GUIOverlay.h
===================================================================
--- code/trunk/src/modules/overlays/GUIOverlay.h	(revision 9550)
+++ code/trunk/src/modules/overlays/GUIOverlay.h	(revision 9667)
@@ -41,5 +41,5 @@
         public:
 
-            GUIOverlay(BaseObject* creator);
+            GUIOverlay(Context* context);
             virtual ~GUIOverlay();
 
Index: code/trunk/src/modules/overlays/OverlayText.cc
===================================================================
--- code/trunk/src/modules/overlays/OverlayText.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/OverlayText.cc	(revision 9667)
@@ -41,5 +41,5 @@
 namespace orxonox
 {
-    CreateFactory(OverlayText);
+    RegisterClass(OverlayText);
 
     BOOST_STATIC_ASSERT((int)Ogre::TextAreaOverlayElement::Left   == (int)OverlayText::Left);
@@ -47,6 +47,6 @@
     BOOST_STATIC_ASSERT((int)Ogre::TextAreaOverlayElement::Right  == (int)OverlayText::Right);
 
-    OverlayText::OverlayText(BaseObject* creator)
-        : OrxonoxOverlay(creator)
+    OverlayText::OverlayText(Context* context)
+        : OrxonoxOverlay(context)
     {
         RegisterObject(OverlayText);
Index: code/trunk/src/modules/overlays/OverlayText.h
===================================================================
--- code/trunk/src/modules/overlays/OverlayText.h	(revision 9550)
+++ code/trunk/src/modules/overlays/OverlayText.h	(revision 9667)
@@ -49,5 +49,5 @@
         };
 
-        OverlayText(BaseObject* creator);
+        OverlayText(Context* context);
         virtual ~OverlayText();
 
Index: code/trunk/src/modules/overlays/debugging/DebugFPSText.cc
===================================================================
--- code/trunk/src/modules/overlays/debugging/DebugFPSText.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/debugging/DebugFPSText.cc	(revision 9667)
@@ -35,7 +35,7 @@
 namespace orxonox
 {
-    CreateFactory(DebugFPSText);
+    RegisterClass(DebugFPSText);
 
-    DebugFPSText::DebugFPSText(BaseObject* creator) : OverlayText(creator)
+    DebugFPSText::DebugFPSText(Context* context) : OverlayText(context)
     {
         RegisterObject(DebugFPSText);
Index: code/trunk/src/modules/overlays/debugging/DebugFPSText.h
===================================================================
--- code/trunk/src/modules/overlays/debugging/DebugFPSText.h	(revision 9550)
+++ code/trunk/src/modules/overlays/debugging/DebugFPSText.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
     public:
-        DebugFPSText(BaseObject* creator);
+        DebugFPSText(Context* context);
         virtual ~DebugFPSText();
 
Index: code/trunk/src/modules/overlays/debugging/DebugRTRText.cc
===================================================================
--- code/trunk/src/modules/overlays/debugging/DebugRTRText.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/debugging/DebugRTRText.cc	(revision 9667)
@@ -35,7 +35,7 @@
 namespace orxonox
 {
-    CreateFactory(DebugRTRText);
+    RegisterClass(DebugRTRText);
 
-    DebugRTRText::DebugRTRText(BaseObject* creator) : OverlayText(creator)
+    DebugRTRText::DebugRTRText(Context* context) : OverlayText(context)
     {
         RegisterObject(DebugRTRText);
Index: code/trunk/src/modules/overlays/debugging/DebugRTRText.h
===================================================================
--- code/trunk/src/modules/overlays/debugging/DebugRTRText.h	(revision 9550)
+++ code/trunk/src/modules/overlays/debugging/DebugRTRText.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
     public:
-        DebugRTRText(BaseObject* creator);
+        DebugRTRText(Context* context);
         virtual ~DebugRTRText();
 
Index: code/trunk/src/modules/overlays/hud/AnnounceMessage.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/AnnounceMessage.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/AnnounceMessage.cc	(revision 9667)
@@ -34,7 +34,7 @@
 namespace orxonox
 {
-    CreateFactory(AnnounceMessage);
+    RegisterClass(AnnounceMessage);
 
-    AnnounceMessage::AnnounceMessage(BaseObject* creator) : FadeoutText(creator)
+    AnnounceMessage::AnnounceMessage(Context* context) : FadeoutText(context)
     {
         RegisterObject(AnnounceMessage);
Index: code/trunk/src/modules/overlays/hud/AnnounceMessage.h
===================================================================
--- code/trunk/src/modules/overlays/hud/AnnounceMessage.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/AnnounceMessage.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
         public:
-            AnnounceMessage(BaseObject* creator);
+            AnnounceMessage(Context* context);
             virtual ~AnnounceMessage() {}
 
Index: code/trunk/src/modules/overlays/hud/ChatOverlay.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/ChatOverlay.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/ChatOverlay.cc	(revision 9667)
@@ -35,5 +35,5 @@
 #include "util/DisplayStringConversions.h"
 #include "core/CoreIncludes.h"
-#include "core/ConfigValueIncludes.h"
+#include "core/config/ConfigValueIncludes.h"
 #include "core/command/Executor.h"
 
@@ -44,8 +44,8 @@
 namespace orxonox
 {
-    CreateFactory(ChatOverlay);
+    RegisterClass(ChatOverlay);
 
-    ChatOverlay::ChatOverlay(BaseObject* creator)
-        : OverlayText(creator)
+    ChatOverlay::ChatOverlay(Context* context)
+        : OverlayText(context)
     {
         RegisterObject(ChatOverlay);
Index: code/trunk/src/modules/overlays/hud/ChatOverlay.h
===================================================================
--- code/trunk/src/modules/overlays/hud/ChatOverlay.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/ChatOverlay.h	(revision 9667)
@@ -43,5 +43,5 @@
     {
         public:
-            ChatOverlay(BaseObject* creator);
+            ChatOverlay(Context* context);
             virtual ~ChatOverlay();
 
Index: code/trunk/src/modules/overlays/hud/DeathMessage.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/DeathMessage.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/DeathMessage.cc	(revision 9667)
@@ -34,7 +34,7 @@
 namespace orxonox
 {
-    CreateFactory(DeathMessage);
+    RegisterClass(DeathMessage);
 
-    DeathMessage::DeathMessage(BaseObject* creator) : FadeoutText(creator)
+    DeathMessage::DeathMessage(Context* context) : FadeoutText(context)
     {
         RegisterObject(DeathMessage);
Index: code/trunk/src/modules/overlays/hud/DeathMessage.h
===================================================================
--- code/trunk/src/modules/overlays/hud/DeathMessage.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/DeathMessage.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
         public:
-            DeathMessage(BaseObject* creator);
+            DeathMessage(Context* context);
             virtual ~DeathMessage() {}
 
Index: code/trunk/src/modules/overlays/hud/GametypeFadingMessage.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/GametypeFadingMessage.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/GametypeFadingMessage.cc	(revision 9667)
@@ -34,7 +34,7 @@
 namespace orxonox
 {
-    CreateFactory(GametypeFadingMessage);
+    RegisterClass(GametypeFadingMessage);
 
-    GametypeFadingMessage::GametypeFadingMessage(BaseObject* creator) : FadeoutText(creator)
+    GametypeFadingMessage::GametypeFadingMessage(Context* context) : FadeoutText(context)
     {
         RegisterObject(GametypeFadingMessage);
Index: code/trunk/src/modules/overlays/hud/GametypeFadingMessage.h
===================================================================
--- code/trunk/src/modules/overlays/hud/GametypeFadingMessage.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/GametypeFadingMessage.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
         public:
-            GametypeFadingMessage(BaseObject* creator);
+            GametypeFadingMessage(Context* context);
             virtual ~GametypeFadingMessage();
 
Index: code/trunk/src/modules/overlays/hud/GametypeStaticMessage.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/GametypeStaticMessage.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/GametypeStaticMessage.cc	(revision 9667)
@@ -36,8 +36,8 @@
 namespace orxonox
 {
-    CreateFactory(GametypeStaticMessage);
+    RegisterClass(GametypeStaticMessage);
 
 
-    GametypeStaticMessage::GametypeStaticMessage(BaseObject* creator) : OverlayText(creator)
+    GametypeStaticMessage::GametypeStaticMessage(Context* context) : OverlayText(context)
     {
         RegisterObject(GametypeStaticMessage);
Index: code/trunk/src/modules/overlays/hud/GametypeStaticMessage.h
===================================================================
--- code/trunk/src/modules/overlays/hud/GametypeStaticMessage.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/GametypeStaticMessage.h	(revision 9667)
@@ -43,5 +43,5 @@
     {
         public:
-            GametypeStaticMessage(BaseObject* creator);
+            GametypeStaticMessage(Context* context);
             virtual ~GametypeStaticMessage();
 
Index: code/trunk/src/modules/overlays/hud/HUDBar.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDBar.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDBar.cc	(revision 9667)
@@ -45,8 +45,8 @@
 namespace orxonox
 {
-    CreateFactory(BarColour);
-
-    BarColour::BarColour(BaseObject* creator)
-        : BaseObject(creator)
+    RegisterClass(BarColour);
+
+    BarColour::BarColour(Context* context)
+        : BaseObject(context)
     {
         RegisterObject(BarColour);
@@ -67,6 +67,8 @@
     unsigned int HUDBar::materialcount_s = 0;
 
-    HUDBar::HUDBar(BaseObject* creator)
-        : OrxonoxOverlay(creator), right2Left_(false), autoColour_(false)
+    RegisterClass(HUDBar);
+
+    HUDBar::HUDBar(Context* context)
+        : OrxonoxOverlay(context), right2Left_(false), autoColour_(false)
     {
         RegisterObject(HUDBar);
Index: code/trunk/src/modules/overlays/hud/HUDBar.h
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDBar.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDBar.h	(revision 9667)
@@ -48,5 +48,5 @@
     {
     public:
-        BarColour(BaseObject* creator);
+        BarColour(Context* context);
         virtual ~BarColour() { }
 
@@ -68,5 +68,5 @@
     {
     public:
-        HUDBar(BaseObject* creator);
+        HUDBar(Context* context);
         virtual ~HUDBar();
 
Index: code/trunk/src/modules/overlays/hud/HUDBoostBar.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDBoostBar.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDBoostBar.cc	(revision 9667)
@@ -35,8 +35,8 @@
 namespace orxonox
 {
-    CreateFactory(HUDBoostBar);
+    RegisterClass(HUDBoostBar);
 
-    HUDBoostBar::HUDBoostBar(BaseObject* creator)
-        : HUDBar(creator)
+    HUDBoostBar::HUDBoostBar(Context* context)
+        : HUDBar(context)
     {
         RegisterObject(HUDBoostBar);
Index: code/trunk/src/modules/overlays/hud/HUDBoostBar.h
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDBoostBar.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDBoostBar.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
     public:
-        HUDBoostBar(BaseObject* creator);
+        HUDBoostBar(Context* context);
         virtual ~HUDBoostBar();
 
Index: code/trunk/src/modules/overlays/hud/HUDEnemyHealthBar.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDEnemyHealthBar.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDEnemyHealthBar.cc	(revision 9667)
@@ -29,12 +29,12 @@
 #include "HUDEnemyHealthBar.h"
 
-#include "core/ConfigValueIncludes.h"
+#include "core/config/ConfigValueIncludes.h"
 #include "worldentities/pawns/Pawn.h"
 
 namespace orxonox
 {
-    CreateFactory(HUDEnemyHealthBar);
+    RegisterClass(HUDEnemyHealthBar);
 
-    HUDEnemyHealthBar::HUDEnemyHealthBar(BaseObject* creator) : HUDHealthBar(creator)
+    HUDEnemyHealthBar::HUDEnemyHealthBar(Context* context) : HUDHealthBar(context)
     {
         RegisterObject(HUDEnemyHealthBar);
Index: code/trunk/src/modules/overlays/hud/HUDEnemyHealthBar.h
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDEnemyHealthBar.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDEnemyHealthBar.h	(revision 9667)
@@ -37,5 +37,5 @@
     {
         public:
-            HUDEnemyHealthBar(BaseObject* creator);
+            HUDEnemyHealthBar(Context* context);
             virtual ~HUDEnemyHealthBar();
 
Index: code/trunk/src/modules/overlays/hud/HUDHealthBar.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDHealthBar.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDHealthBar.cc	(revision 9667)
@@ -37,7 +37,7 @@
 namespace orxonox
 {
-    CreateFactory(HUDHealthBar);
+    RegisterClass(HUDHealthBar);
 
-    HUDHealthBar::HUDHealthBar(BaseObject* creator) : HUDBar(creator)
+    HUDHealthBar::HUDHealthBar(Context* context) : HUDBar(context)
     {
         RegisterObject(HUDHealthBar);
@@ -46,5 +46,5 @@
         this->bUseBarColour_ = false;
 
-        this->textoverlay_ = new OverlayText(this);
+        this->textoverlay_ = new OverlayText(this->getContext());
 
         assert(this->textoverlay_.get());
Index: code/trunk/src/modules/overlays/hud/HUDHealthBar.h
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDHealthBar.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDHealthBar.h	(revision 9667)
@@ -42,5 +42,5 @@
     {
         public:
-            HUDHealthBar(BaseObject* creator);
+            HUDHealthBar(Context* context);
             virtual ~HUDHealthBar();
 
Index: code/trunk/src/modules/overlays/hud/HUDNavigation.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDNavigation.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDNavigation.cc	(revision 9667)
@@ -51,5 +51,5 @@
 #include "worldentities/pawns/Pawn.h"
 #include "worldentities/WorldEntity.h"
-#include "core/ConfigValueIncludes.h"
+#include "core/config/ConfigValueIncludes.h"
 #include "tools/TextureGenerator.h"
 // #include <boost/bind/bind_template.hpp>
@@ -67,10 +67,10 @@
         return a.second < b.second;
     }
-    CreateFactory ( HUDNavigation );
+    RegisterClass ( HUDNavigation );
 
     HUDNavigation* HUDNavigation::localHUD_s = 0;
 
-    HUDNavigation::HUDNavigation(BaseObject* creator) :
-        OrxonoxOverlay(creator)
+    HUDNavigation::HUDNavigation(Context* context) :
+        OrxonoxOverlay(context)
     {
         RegisterObject(HUDNavigation)
Index: code/trunk/src/modules/overlays/hud/HUDNavigation.h
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDNavigation.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDNavigation.h	(revision 9667)
@@ -46,5 +46,5 @@
     {
         public:
-            HUDNavigation(BaseObject* creator);
+            HUDNavigation(Context* context);
             virtual ~HUDNavigation();
 
Index: code/trunk/src/modules/overlays/hud/HUDRadar.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDRadar.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDRadar.cc	(revision 9667)
@@ -44,8 +44,8 @@
 namespace orxonox
 {
-    CreateFactory(HUDRadar);
-
-    HUDRadar::HUDRadar(BaseObject* creator)
-        : OrxonoxOverlay(creator)
+    RegisterClass(HUDRadar);
+
+    HUDRadar::HUDRadar(Context* context)
+        : OrxonoxOverlay(context)
     {
         RegisterObject(HUDRadar);
Index: code/trunk/src/modules/overlays/hud/HUDRadar.h
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDRadar.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDRadar.h	(revision 9667)
@@ -46,5 +46,5 @@
     {
     public:
-        HUDRadar(BaseObject* creator);
+        HUDRadar(Context* context);
         virtual ~HUDRadar();
 
Index: code/trunk/src/modules/overlays/hud/HUDSpeedBar.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDSpeedBar.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDSpeedBar.cc	(revision 9667)
@@ -36,8 +36,8 @@
 namespace orxonox
 {
-    CreateFactory(HUDSpeedBar);
+    RegisterClass(HUDSpeedBar);
 
-    HUDSpeedBar::HUDSpeedBar(BaseObject* creator)
-        : HUDBar(creator)
+    HUDSpeedBar::HUDSpeedBar(Context* context)
+        : HUDBar(context)
     {
         RegisterObject(HUDSpeedBar);
Index: code/trunk/src/modules/overlays/hud/HUDSpeedBar.h
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDSpeedBar.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDSpeedBar.h	(revision 9667)
@@ -41,5 +41,5 @@
     {
     public:
-        HUDSpeedBar(BaseObject* creator);
+        HUDSpeedBar(Context* context);
         virtual ~HUDSpeedBar();
 
Index: code/trunk/src/modules/overlays/hud/HUDTimer.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDTimer.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDTimer.cc	(revision 9667)
@@ -36,7 +36,7 @@
 namespace orxonox
 {
-    CreateFactory(HUDTimer);
+    RegisterClass(HUDTimer);
 
-    HUDTimer::HUDTimer(BaseObject* creator) : OverlayText(creator)
+    HUDTimer::HUDTimer(Context* context) : OverlayText(context)
     {
         RegisterObject(HUDTimer);
Index: code/trunk/src/modules/overlays/hud/HUDTimer.h
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDTimer.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/HUDTimer.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
     public:
-        HUDTimer(BaseObject* creator);
+        HUDTimer(Context* context);
         virtual ~HUDTimer();
 
Index: code/trunk/src/modules/overlays/hud/KillMessage.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/KillMessage.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/KillMessage.cc	(revision 9667)
@@ -34,7 +34,7 @@
 namespace orxonox
 {
-    CreateFactory(KillMessage);
+    RegisterClass(KillMessage);
 
-    KillMessage::KillMessage(BaseObject* creator) : FadeoutText(creator)
+    KillMessage::KillMessage(Context* context) : FadeoutText(context)
     {
         RegisterObject(KillMessage);
Index: code/trunk/src/modules/overlays/hud/KillMessage.h
===================================================================
--- code/trunk/src/modules/overlays/hud/KillMessage.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/KillMessage.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
         public:
-            KillMessage(BaseObject* creator);
+            KillMessage(Context* context);
             virtual ~KillMessage() {}
 
Index: code/trunk/src/modules/overlays/hud/LastManStandingInfos.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/LastManStandingInfos.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/LastManStandingInfos.cc	(revision 9667)
@@ -37,7 +37,7 @@
 namespace orxonox
 {
-    CreateFactory(LastManStandingInfos);
+    RegisterClass(LastManStandingInfos);
 
-    LastManStandingInfos::LastManStandingInfos(BaseObject* creator) : OverlayText(creator)
+    LastManStandingInfos::LastManStandingInfos(Context* context) : OverlayText(context)
     {
         RegisterObject(LastManStandingInfos);
Index: code/trunk/src/modules/overlays/hud/LastManStandingInfos.h
===================================================================
--- code/trunk/src/modules/overlays/hud/LastManStandingInfos.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/LastManStandingInfos.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
         public:
-            LastManStandingInfos(BaseObject* creator);
+            LastManStandingInfos(Context* context);
             virtual ~LastManStandingInfos();
 
Index: code/trunk/src/modules/overlays/hud/LastTeamStandingInfos.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/LastTeamStandingInfos.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/LastTeamStandingInfos.cc	(revision 9667)
@@ -37,7 +37,7 @@
 namespace orxonox
 {
-    CreateFactory(LastTeamStandingInfos);
+    RegisterClass(LastTeamStandingInfos);
 
-    LastTeamStandingInfos::LastTeamStandingInfos(BaseObject* creator) : OverlayText(creator)
+    LastTeamStandingInfos::LastTeamStandingInfos(Context* context) : OverlayText(context)
     {
         RegisterObject(LastTeamStandingInfos);
Index: code/trunk/src/modules/overlays/hud/LastTeamStandingInfos.h
===================================================================
--- code/trunk/src/modules/overlays/hud/LastTeamStandingInfos.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/LastTeamStandingInfos.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
         public:
-            LastTeamStandingInfos(BaseObject* creator);
+            LastTeamStandingInfos(Context* context);
             virtual ~LastTeamStandingInfos();
 
Index: code/trunk/src/modules/overlays/hud/PauseNotice.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/PauseNotice.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/PauseNotice.cc	(revision 9667)
@@ -34,7 +34,7 @@
 namespace orxonox
 {
-    CreateFactory(PauseNotice);
+    RegisterClass(PauseNotice);
 
-    PauseNotice::PauseNotice(BaseObject* creator) : OverlayText(creator)
+    PauseNotice::PauseNotice(Context* context) : OverlayText(context)
     {
         RegisterObject(PauseNotice);
Index: code/trunk/src/modules/overlays/hud/PauseNotice.h
===================================================================
--- code/trunk/src/modules/overlays/hud/PauseNotice.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/PauseNotice.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
         public:
-            PauseNotice(BaseObject* creator);
+            PauseNotice(Context* context);
 
             virtual void changedOwner();
Index: code/trunk/src/modules/overlays/hud/TeamBaseMatchScore.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/TeamBaseMatchScore.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/TeamBaseMatchScore.cc	(revision 9667)
@@ -37,7 +37,7 @@
 namespace orxonox
 {
-    CreateFactory(TeamBaseMatchScore);
+    RegisterClass(TeamBaseMatchScore);
 
-    TeamBaseMatchScore::TeamBaseMatchScore(BaseObject* creator) : OverlayText(creator)
+    TeamBaseMatchScore::TeamBaseMatchScore(Context* context) : OverlayText(context)
     {
         RegisterObject(TeamBaseMatchScore);
Index: code/trunk/src/modules/overlays/hud/TeamBaseMatchScore.h
===================================================================
--- code/trunk/src/modules/overlays/hud/TeamBaseMatchScore.h	(revision 9550)
+++ code/trunk/src/modules/overlays/hud/TeamBaseMatchScore.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
         public:
-            TeamBaseMatchScore(BaseObject* creator);
+            TeamBaseMatchScore(Context* context);
             virtual ~TeamBaseMatchScore();
 
Index: code/trunk/src/modules/overlays/stats/Scoreboard.cc
===================================================================
--- code/trunk/src/modules/overlays/stats/Scoreboard.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/stats/Scoreboard.cc	(revision 9667)
@@ -35,11 +35,11 @@
 namespace orxonox
 {
-    CreateFactory(Scoreboard);
+    RegisterClass(Scoreboard);
 
     /**
         @brief Constructor: Creates the scoreboard.
     */
-    Scoreboard::Scoreboard(BaseObject* creator)
-        : OrxonoxOverlay(creator)
+    Scoreboard::Scoreboard(Context* context)
+        : OrxonoxOverlay(context)
     {
         RegisterObject(Scoreboard);
Index: code/trunk/src/modules/overlays/stats/Scoreboard.h
===================================================================
--- code/trunk/src/modules/overlays/stats/Scoreboard.h	(revision 9550)
+++ code/trunk/src/modules/overlays/stats/Scoreboard.h	(revision 9667)
@@ -41,5 +41,5 @@
     {
     public: // functions
-        Scoreboard(BaseObject* creator);
+        Scoreboard(Context* context);
         virtual ~Scoreboard();
 
Index: code/trunk/src/modules/overlays/stats/Stats.cc
===================================================================
--- code/trunk/src/modules/overlays/stats/Stats.cc	(revision 9550)
+++ code/trunk/src/modules/overlays/stats/Stats.cc	(revision 9667)
@@ -35,15 +35,15 @@
 #include "util/StringUtils.h"
 #include "core/CoreIncludes.h"
-#include "core/ConfigValueIncludes.h"
+#include "core/config/ConfigValueIncludes.h"
 
 namespace orxonox
 {
-    CreateFactory(Stats);
+    RegisterClass(Stats);
 
     /**
         @brief Constructor: Creates and initializes the Stats panel.
     */
-    Stats::Stats(BaseObject* creator)
-        : OrxonoxOverlay(creator)
+    Stats::Stats(Context* context)
+        : OrxonoxOverlay(context)
         , statsOverlayNoise_(0)
         , statsOverlayBorder_(0)
Index: code/trunk/src/modules/overlays/stats/Stats.h
===================================================================
--- code/trunk/src/modules/overlays/stats/Stats.h	(revision 9550)
+++ code/trunk/src/modules/overlays/stats/Stats.h	(revision 9667)
@@ -41,5 +41,5 @@
     {
     public: // functions
-        Stats(BaseObject* creator);
+        Stats(Context* context);
         virtual ~Stats();
 
Index: code/trunk/src/modules/pickup/CollectiblePickup.cc
===================================================================
--- code/trunk/src/modules/pickup/CollectiblePickup.cc	(revision 9550)
+++ code/trunk/src/modules/pickup/CollectiblePickup.cc	(revision 9667)
@@ -38,5 +38,7 @@
 #include "PickupCollection.h"
 
-namespace orxonox {
+namespace orxonox
+{
+    RegisterAbstractClass(CollectiblePickup).inheritsFrom(Class(Pickupable));
 
     /**
Index: code/trunk/src/modules/pickup/Pickup.cc
===================================================================
--- code/trunk/src/modules/pickup/Pickup.cc	(revision 9550)
+++ code/trunk/src/modules/pickup/Pickup.cc	(revision 9667)
@@ -48,5 +48,5 @@
     /*static*/ const std::string Pickup::durationTypeContinuous_s = "continuous";
 
-    CreateUnloadableFactory(Pickup);
+    RegisterUnloadableClass(Pickup);
 
     /**
@@ -56,5 +56,5 @@
         The objects creator.
     */
-    Pickup::Pickup(BaseObject* creator) : BaseObject(creator)
+    Pickup::Pickup(Context* context) : BaseObject(context)
     {
         RegisterObject(Pickup);
@@ -187,5 +187,5 @@
     bool Pickup::createSpawner(void)
     {
-        PickupSpawner::createDroppedPickup(this, this, this->getCarrier());
+        PickupSpawner::createDroppedPickup(this->getContext(), this, this->getCarrier());
         return true;
     }
Index: code/trunk/src/modules/pickup/Pickup.h
===================================================================
--- code/trunk/src/modules/pickup/Pickup.h	(revision 9550)
+++ code/trunk/src/modules/pickup/Pickup.h	(revision 9667)
@@ -100,5 +100,5 @@
 
         public:
-            Pickup(BaseObject* creator); //!< Constructor.
+            Pickup(Context* context); //!< Constructor.
             virtual ~Pickup(); //!< Destructor.
 
Index: code/trunk/src/modules/pickup/PickupCollection.cc
===================================================================
--- code/trunk/src/modules/pickup/PickupCollection.cc	(revision 9550)
+++ code/trunk/src/modules/pickup/PickupCollection.cc	(revision 9667)
@@ -45,5 +45,5 @@
 {
 
-    CreateFactory(PickupCollection);
+    RegisterClass(PickupCollection);
 
     /**
@@ -53,5 +53,5 @@
         The creator of the object.
     */
-    PickupCollection::PickupCollection(BaseObject* creator) : BaseObject(creator)
+    PickupCollection::PickupCollection(Context* context) : BaseObject(context)
     {
         RegisterObject(PickupCollection);
@@ -328,5 +328,5 @@
     bool PickupCollection::createSpawner(void)
     {
-        PickupSpawner::createDroppedPickup(this, this, this->getCarrier());
+        PickupSpawner::createDroppedPickup(this->getContext(), this, this->getCarrier());
         return true;
     }
Index: code/trunk/src/modules/pickup/PickupCollection.h
===================================================================
--- code/trunk/src/modules/pickup/PickupCollection.h	(revision 9550)
+++ code/trunk/src/modules/pickup/PickupCollection.h	(revision 9667)
@@ -70,5 +70,5 @@
 
         public:
-            PickupCollection(BaseObject* creator); //!< Default Constructor.
+            PickupCollection(Context* context); //!< Default Constructor.
             virtual ~PickupCollection(); //!< Destructor.
 
Index: code/trunk/src/modules/pickup/PickupManager.cc
===================================================================
--- code/trunk/src/modules/pickup/PickupManager.cc	(revision 9550)
+++ code/trunk/src/modules/pickup/PickupManager.cc	(revision 9667)
@@ -37,5 +37,5 @@
 #include "core/LuaState.h"
 #include "core/GUIManager.h"
-#include "core/Identifier.h"
+#include "core/class/Identifier.h"
 #include "network/Host.h"
 #include "network/NetworkFunction.h"
Index: code/trunk/src/modules/pickup/PickupManager.h
===================================================================
--- code/trunk/src/modules/pickup/PickupManager.h	(revision 9550)
+++ code/trunk/src/modules/pickup/PickupManager.h	(revision 9667)
@@ -39,5 +39,5 @@
 
 #include <map>
-#include "core/WeakPtr.h"
+#include "core/object/WeakPtr.h"
 
 #include "PickupRepresentation.h"
Index: code/trunk/src/modules/pickup/PickupRepresentation.cc
===================================================================
--- code/trunk/src/modules/pickup/PickupRepresentation.cc	(revision 9550)
+++ code/trunk/src/modules/pickup/PickupRepresentation.cc	(revision 9667)
@@ -45,5 +45,5 @@
 {
 
-    CreateFactory(PickupRepresentation);
+    RegisterClass(PickupRepresentation);
 
     /**
@@ -64,5 +64,5 @@
         Default Constructor. Registers the object and initializes its member variables.
     */
-    PickupRepresentation::PickupRepresentation(BaseObject* creator) : BaseObject(creator), Synchronisable(creator), spawnerRepresentation_(NULL)
+    PickupRepresentation::PickupRepresentation(Context* context) : BaseObject(context), Synchronisable(context), spawnerRepresentation_(NULL)
     {
         RegisterObject(PickupRepresentation);
@@ -180,10 +180,10 @@
     StaticEntity* PickupRepresentation::getDefaultSpawnerRepresentation(PickupSpawner* spawner)
     {
-        StaticEntity* representation = new StaticEntity(spawner);
-        Billboard* sphere = new Billboard(spawner);
+        StaticEntity* representation = new StaticEntity(spawner->getContext());
+        Billboard* sphere = new Billboard(spawner->getContext());
         sphere->setColour(ColourValue(0.95f, 0.85f, 0.27f));
         sphere->setMaterial("Sphere2");
         sphere->setScale(0.1f);
-        Billboard* icon = new Billboard(spawner);
+        Billboard* icon = new Billboard(spawner->getContext());
         icon->setColour(ColourValue(0.89f, 0.79f, 0.08f));
         icon->setMaterial("asterisk");
Index: code/trunk/src/modules/pickup/PickupRepresentation.h
===================================================================
--- code/trunk/src/modules/pickup/PickupRepresentation.h	(revision 9550)
+++ code/trunk/src/modules/pickup/PickupRepresentation.h	(revision 9667)
@@ -95,5 +95,5 @@
         public:
             PickupRepresentation(); //!< Constructor
-            PickupRepresentation(BaseObject* creator); //!< Default constructor.
+            PickupRepresentation(Context* context); //!< Default constructor.
             virtual ~PickupRepresentation(); //!< Destructor.
 
Index: code/trunk/src/modules/pickup/PickupSpawner.cc
===================================================================
--- code/trunk/src/modules/pickup/PickupSpawner.cc	(revision 9550)
+++ code/trunk/src/modules/pickup/PickupSpawner.cc	(revision 9667)
@@ -47,5 +47,5 @@
 {
 
-    CreateFactory(PickupSpawner);
+    RegisterClass(PickupSpawner);
 
     /**
@@ -55,5 +55,5 @@
         Pointer to the object which created this item.
     */
-    PickupSpawner::PickupSpawner(BaseObject* creator) : StaticEntity(creator), pickup_(NULL), representation_(NULL), pickupTemplate_(NULL)
+    PickupSpawner::PickupSpawner(Context* context) : StaticEntity(context), pickup_(NULL), representation_(NULL), pickupTemplate_(NULL)
     {
         RegisterObject(PickupSpawner);
@@ -99,7 +99,7 @@
         The distance at which the PickupSpawner will trigger.
     */
-    /*static*/ PickupSpawner* PickupSpawner::createDroppedPickup(BaseObject* creator, Pickupable* pickup, PickupCarrier* carrier, float triggerDistance)
-    {
-        PickupSpawner* spawner = new PickupSpawner(creator);
+    /*static*/ PickupSpawner* PickupSpawner::createDroppedPickup(Context* context, Pickupable* pickup, PickupCarrier* carrier, float triggerDistance)
+    {
+        PickupSpawner* spawner = new PickupSpawner(context);
 
         spawner->setPickupable(pickup);
@@ -289,5 +289,5 @@
             if (identifier != NULL)
             {
-                Pickupable* pickup = orxonox_cast<Pickupable*>(identifier->fabricate(this));
+                Pickupable* pickup = orxonox_cast<Pickupable*>(identifier->fabricate(this->getContext()));
                 orxonox_cast<BaseObject*>(pickup)->addTemplate(this->pickupTemplate_);
                 return pickup;
Index: code/trunk/src/modules/pickup/PickupSpawner.h
===================================================================
--- code/trunk/src/modules/pickup/PickupSpawner.h	(revision 9550)
+++ code/trunk/src/modules/pickup/PickupSpawner.h	(revision 9667)
@@ -77,8 +77,8 @@
     {
         public:
-            PickupSpawner(BaseObject* creator); //!< Default Constructor.
+            PickupSpawner(Context* context); //!< Default Constructor.
             virtual ~PickupSpawner(); //!< Destructor.
 
-            static PickupSpawner* createDroppedPickup(BaseObject* creator, Pickupable* pickup, PickupCarrier* carrier, float triggerDistance = 10.0);
+            static PickupSpawner* createDroppedPickup(Context* context, Pickupable* pickup, PickupCarrier* carrier, float triggerDistance = 10.0);
 
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);  //!< Method for creating a PickupSpawner through XML.
Index: code/trunk/src/modules/pickup/items/DamageBoostPickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/DamageBoostPickup.cc	(revision 9550)
+++ code/trunk/src/modules/pickup/items/DamageBoostPickup.cc	(revision 9667)
@@ -42,5 +42,5 @@
 namespace orxonox
 {
-    CreateFactory(DamageBoostPickup);
+    RegisterClass(DamageBoostPickup);
 
     /**
@@ -48,5 +48,5 @@
         Constructor. Registers the object and initializes the member variables.
     */
-    DamageBoostPickup::DamageBoostPickup(BaseObject* creator) : Pickup(creator)
+    DamageBoostPickup::DamageBoostPickup(Context* context) : Pickup(context)
     {
         RegisterObject(DamageBoostPickup);
Index: code/trunk/src/modules/pickup/items/DamageBoostPickup.h
===================================================================
--- code/trunk/src/modules/pickup/items/DamageBoostPickup.h	(revision 9550)
+++ code/trunk/src/modules/pickup/items/DamageBoostPickup.h	(revision 9667)
@@ -49,5 +49,5 @@
         public:
 
-            DamageBoostPickup(BaseObject* creator); //!< Constructor.
+            DamageBoostPickup(Context* context); //!< Constructor.
             virtual ~DamageBoostPickup(); //!< Destructor.
 
Index: code/trunk/src/modules/pickup/items/DronePickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/DronePickup.cc	(revision 9550)
+++ code/trunk/src/modules/pickup/items/DronePickup.cc	(revision 9667)
@@ -45,5 +45,5 @@
 {
 
-    CreateFactory(DronePickup);
+    RegisterClass(DronePickup);
 
     /**
@@ -51,5 +51,5 @@
         Constructor. Registers the object and initializes the member variables.
     */
-    DronePickup::DronePickup(BaseObject* creator) : Pickup(creator)
+    DronePickup::DronePickup(Context* context) : Pickup(context)
     {
         RegisterObject(DronePickup);
@@ -126,5 +126,5 @@
 
                 //Attach to pawn
-                Drone* drone = new Drone(pawn->getCreator()); // this is neccessary because the projectiles fired need a valid creator for the particlespawner (when colliding against something)
+                Drone* drone = new Drone(pawn->getContext()); // this is neccessary because the projectiles fired need a valid creator for the particlespawner (when colliding against something)
                 drone->addTemplate(this->getDroneTemplate());
 
Index: code/trunk/src/modules/pickup/items/DronePickup.h
===================================================================
--- code/trunk/src/modules/pickup/items/DronePickup.h	(revision 9550)
+++ code/trunk/src/modules/pickup/items/DronePickup.h	(revision 9667)
@@ -64,5 +64,5 @@
         public:
 
-            DronePickup(BaseObject* creator); //!< Constructor.
+            DronePickup(Context* context); //!< Constructor.
             virtual ~DronePickup(); //!< Destructor.
 
Index: code/trunk/src/modules/pickup/items/HealthPickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/HealthPickup.cc	(revision 9550)
+++ code/trunk/src/modules/pickup/items/HealthPickup.cc	(revision 9667)
@@ -47,5 +47,5 @@
     /*static*/ const std::string HealthPickup::healthTypePermanent_s = "permanent";
 
-    CreateFactory(HealthPickup);
+    RegisterClass(HealthPickup);
 
     /**
@@ -53,5 +53,5 @@
         Constructor. Registers the object and initializes the member variables.
     */
-    HealthPickup::HealthPickup(BaseObject* creator) : Pickup(creator)
+    HealthPickup::HealthPickup(Context* context) : Pickup(context)
     {
         RegisterObject(HealthPickup);
Index: code/trunk/src/modules/pickup/items/HealthPickup.h
===================================================================
--- code/trunk/src/modules/pickup/items/HealthPickup.h	(revision 9550)
+++ code/trunk/src/modules/pickup/items/HealthPickup.h	(revision 9667)
@@ -90,5 +90,5 @@
         public:
 
-            HealthPickup(BaseObject* creator); //!< Constructor.
+            HealthPickup(Context* context); //!< Constructor.
             virtual ~HealthPickup(); //!< Destructor.
 
Index: code/trunk/src/modules/pickup/items/InvisiblePickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/InvisiblePickup.cc	(revision 9550)
+++ code/trunk/src/modules/pickup/items/InvisiblePickup.cc	(revision 9667)
@@ -45,5 +45,5 @@
 {
 
-    CreateFactory(InvisiblePickup);
+    RegisterClass(InvisiblePickup);
 
     /**
@@ -51,5 +51,5 @@
         Constructor. Registers the object and initializes the member variables.
     */
-    InvisiblePickup::InvisiblePickup(BaseObject* creator) : Pickup(creator)
+    InvisiblePickup::InvisiblePickup(Context* context) : Pickup(context)
     {
         RegisterObject(InvisiblePickup);
Index: code/trunk/src/modules/pickup/items/InvisiblePickup.h
===================================================================
--- code/trunk/src/modules/pickup/items/InvisiblePickup.h	(revision 9550)
+++ code/trunk/src/modules/pickup/items/InvisiblePickup.h	(revision 9667)
@@ -70,5 +70,5 @@
         public:
 
-            InvisiblePickup(BaseObject* creator); //!< Constructor.
+            InvisiblePickup(Context* context); //!< Constructor.
             virtual ~InvisiblePickup(); //!< Destructor.
 
Index: code/trunk/src/modules/pickup/items/MetaPickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/MetaPickup.cc	(revision 9550)
+++ code/trunk/src/modules/pickup/items/MetaPickup.cc	(revision 9667)
@@ -42,5 +42,5 @@
 namespace orxonox {
 
-    CreateFactory(MetaPickup);
+    RegisterClass(MetaPickup);
 
     //! Setting the static variables to their values.
@@ -55,5 +55,5 @@
         Constructor. Registers and initializes the object.
     */
-    MetaPickup::MetaPickup(BaseObject* creator) : Pickup(creator)
+    MetaPickup::MetaPickup(Context* context) : Pickup(context)
     {
         RegisterObject(MetaPickup);
Index: code/trunk/src/modules/pickup/items/MetaPickup.h
===================================================================
--- code/trunk/src/modules/pickup/items/MetaPickup.h	(revision 9550)
+++ code/trunk/src/modules/pickup/items/MetaPickup.h	(revision 9667)
@@ -89,5 +89,5 @@
 
         public:
-            MetaPickup(BaseObject* creator); //!< Constructor. Registers and initializes the object.
+            MetaPickup(Context* context); //!< Constructor. Registers and initializes the object.
             virtual ~MetaPickup(); //!< Destructor.
 
Index: code/trunk/src/modules/pickup/items/ShieldPickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/ShieldPickup.cc	(revision 9550)
+++ code/trunk/src/modules/pickup/items/ShieldPickup.cc	(revision 9667)
@@ -42,5 +42,5 @@
 namespace orxonox
 {
-    CreateFactory(ShieldPickup);
+    RegisterClass(ShieldPickup);
 
     /**
@@ -48,5 +48,5 @@
         Constructor. Registers the object and initializes the member variables.
     */
-    ShieldPickup::ShieldPickup(BaseObject* creator) : Pickup(creator)
+    ShieldPickup::ShieldPickup(Context* context) : Pickup(context)
     {
         RegisterObject(ShieldPickup);
Index: code/trunk/src/modules/pickup/items/ShieldPickup.h
===================================================================
--- code/trunk/src/modules/pickup/items/ShieldPickup.h	(revision 9550)
+++ code/trunk/src/modules/pickup/items/ShieldPickup.h	(revision 9667)
@@ -76,5 +76,5 @@
         public:
 
-            ShieldPickup(BaseObject* creator); //!< Constructor.
+            ShieldPickup(Context* context); //!< Constructor.
             virtual ~ShieldPickup(); //!< Destructor.
 
Index: code/trunk/src/modules/pickup/items/ShrinkPickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/ShrinkPickup.cc	(revision 9550)
+++ code/trunk/src/modules/pickup/items/ShrinkPickup.cc	(revision 9667)
@@ -46,5 +46,5 @@
 namespace orxonox
 {
-    CreateFactory(ShrinkPickup);
+    RegisterClass(ShrinkPickup);
 
     /**
@@ -52,5 +52,5 @@
         Constructor: Initializes the Pickup.
     */
-    ShrinkPickup::ShrinkPickup(BaseObject* creator) : Pickup(creator)
+    ShrinkPickup::ShrinkPickup(Context* context) : Pickup(context)
     {
         RegisterObject(ShrinkPickup);
Index: code/trunk/src/modules/pickup/items/ShrinkPickup.h
===================================================================
--- code/trunk/src/modules/pickup/items/ShrinkPickup.h	(revision 9550)
+++ code/trunk/src/modules/pickup/items/ShrinkPickup.h	(revision 9667)
@@ -72,5 +72,5 @@
     {
         public:
-            ShrinkPickup(BaseObject* creator); // Constructor.
+            ShrinkPickup(Context* context); // Constructor.
             virtual ~ShrinkPickup(); // Destructor.
 
Index: code/trunk/src/modules/pickup/items/SpeedPickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/SpeedPickup.cc	(revision 9550)
+++ code/trunk/src/modules/pickup/items/SpeedPickup.cc	(revision 9667)
@@ -42,5 +42,5 @@
 namespace orxonox
 {
-    CreateFactory(SpeedPickup);
+    RegisterClass(SpeedPickup);
 
     /**
@@ -48,5 +48,5 @@
         Constructor. Registers the object and initializes the member variables.
     */
-    SpeedPickup::SpeedPickup(BaseObject* creator) : Pickup(creator)
+    SpeedPickup::SpeedPickup(Context* context) : Pickup(context)
     {
         RegisterObject(SpeedPickup);
Index: code/trunk/src/modules/pickup/items/SpeedPickup.h
===================================================================
--- code/trunk/src/modules/pickup/items/SpeedPickup.h	(revision 9550)
+++ code/trunk/src/modules/pickup/items/SpeedPickup.h	(revision 9667)
@@ -75,5 +75,5 @@
         public:
 
-            SpeedPickup(BaseObject* creator); //!< Constructor.
+            SpeedPickup(Context* context); //!< Constructor.
             virtual ~SpeedPickup(); //!< Destructor.
 
Index: code/trunk/src/modules/pong/Pong.cc
===================================================================
--- code/trunk/src/modules/pong/Pong.cc	(revision 9550)
+++ code/trunk/src/modules/pong/Pong.cc	(revision 9667)
@@ -37,5 +37,5 @@
 #include "core/EventIncludes.h"
 #include "core/command/Executor.h"
-#include "core/ConfigValueIncludes.h"
+#include "core/config/ConfigValueIncludes.h"
 
 #include "gamestates/GSLevel.h"
@@ -53,5 +53,5 @@
     CreateEventName(PongCenterpoint, left);
 
-    CreateUnloadableFactory(Pong);
+    RegisterUnloadableClass(Pong);
 
     /**
@@ -59,5 +59,5 @@
         Constructor. Registers and initializes the object.
     */
-    Pong::Pong(BaseObject* creator) : Deathmatch(creator)
+    Pong::Pong(Context* context) : Deathmatch(context)
     {
         RegisterObject(Pong);
@@ -129,5 +129,5 @@
             if (this->ball_ == NULL) // If there is no ball, create a new ball.
             {
-                this->ball_ = new PongBall(this->center_);
+                this->ball_ = new PongBall(this->center_->getContext());
                 // Apply the template for the ball specified by the centerpoint.
                 this->ball_->addTemplate(this->center_->getBalltemplate());
@@ -147,5 +147,5 @@
                 if (this->bat_[i] == NULL)
                 {
-                    this->bat_[i] = new PongBat(this->center_);
+                    this->bat_[i] = new PongBat(this->center_->getContext());
                     this->bat_[i]->addTemplate(this->center_->getBattemplate());
                 }
Index: code/trunk/src/modules/pong/Pong.h
===================================================================
--- code/trunk/src/modules/pong/Pong.h	(revision 9550)
+++ code/trunk/src/modules/pong/Pong.h	(revision 9667)
@@ -65,5 +65,5 @@
     {
         public:
-            Pong(BaseObject* creator); //!< Constructor. Registers and initializes the object.
+            Pong(Context* context); //!< Constructor. Registers and initializes the object.
             virtual ~Pong(); //!< Destructor. Cleans up, if initialized.
 
Index: code/trunk/src/modules/pong/PongAI.cc
===================================================================
--- code/trunk/src/modules/pong/PongAI.cc	(revision 9550)
+++ code/trunk/src/modules/pong/PongAI.cc	(revision 9667)
@@ -35,5 +35,5 @@
 
 #include "core/CoreIncludes.h"
-#include "core/ConfigValueIncludes.h"
+#include "core/config/ConfigValueIncludes.h"
 #include "core/command/Executor.h"
 #include "tools/Timer.h"
@@ -45,5 +45,5 @@
 namespace orxonox
 {
-    CreateUnloadableFactory(PongAI);
+    RegisterUnloadableClass(PongAI);
 
     const static float MAX_REACTION_TIME = 0.4f;
@@ -53,5 +53,5 @@
         Constructor. Registers and initializes the object.
     */
-    PongAI::PongAI(BaseObject* creator) : Controller(creator)
+    PongAI::PongAI(Context* context) : Controller(context)
     {
         RegisterObject(PongAI);
Index: code/trunk/src/modules/pong/PongAI.h
===================================================================
--- code/trunk/src/modules/pong/PongAI.h	(revision 9550)
+++ code/trunk/src/modules/pong/PongAI.h	(revision 9667)
@@ -44,4 +44,5 @@
 
 #include "controllers/Controller.h"
+#include "PongBall.h"
 
 namespace orxonox
@@ -60,5 +61,5 @@
     {
         public:
-            PongAI(BaseObject* creator); //!< Constructor. Registers and initializes the object.
+            PongAI(Context* context); //!< Constructor. Registers and initializes the object.
             virtual ~PongAI();
 
Index: code/trunk/src/modules/pong/PongBall.cc
===================================================================
--- code/trunk/src/modules/pong/PongBall.cc	(revision 9550)
+++ code/trunk/src/modules/pong/PongBall.cc	(revision 9667)
@@ -43,5 +43,5 @@
 namespace orxonox
 {
-    CreateFactory(PongBall);
+    RegisterClass(PongBall);
 
     const float PongBall::MAX_REL_Z_VELOCITY = 1.5;
@@ -51,6 +51,6 @@
         Constructor. Registers and initializes the object.
     */
-    PongBall::PongBall(BaseObject* creator)
-        : MovableEntity(creator)
+    PongBall::PongBall(Context* context)
+        : MovableEntity(context)
     {
         RegisterObject(PongBall);
Index: code/trunk/src/modules/pong/PongBall.h
===================================================================
--- code/trunk/src/modules/pong/PongBall.h	(revision 9550)
+++ code/trunk/src/modules/pong/PongBall.h	(revision 9667)
@@ -59,5 +59,5 @@
     {
         public:
-            PongBall(BaseObject* creator);
+            PongBall(Context* context);
             virtual ~PongBall();
 
Index: code/trunk/src/modules/pong/PongBat.cc
===================================================================
--- code/trunk/src/modules/pong/PongBat.cc	(revision 9550)
+++ code/trunk/src/modules/pong/PongBat.cc	(revision 9667)
@@ -39,5 +39,5 @@
 namespace orxonox
 {
-    CreateFactory(PongBat);
+    RegisterClass(PongBat);
 
     /**
@@ -45,5 +45,5 @@
         Constructor. Registers and initializes the object.
     */
-    PongBat::PongBat(BaseObject* creator) : ControllableEntity(creator)
+    PongBat::PongBat(Context* context) : ControllableEntity(context)
     {
         RegisterObject(PongBat);
Index: code/trunk/src/modules/pong/PongBat.h
===================================================================
--- code/trunk/src/modules/pong/PongBat.h	(revision 9550)
+++ code/trunk/src/modules/pong/PongBat.h	(revision 9667)
@@ -57,5 +57,5 @@
     {
         public:
-            PongBat(BaseObject* creator); //!< Constructor. Registers and initializes the object.
+            PongBat(Context* context); //!< Constructor. Registers and initializes the object.
             virtual ~PongBat() {}
 
Index: code/trunk/src/modules/pong/PongBot.cc
===================================================================
--- code/trunk/src/modules/pong/PongBot.cc	(revision 9550)
+++ code/trunk/src/modules/pong/PongBot.cc	(revision 9667)
@@ -39,5 +39,5 @@
 namespace orxonox
 {
-    CreateFactory(PongBot);
+    RegisterClass(PongBot);
 
     /**
@@ -45,5 +45,5 @@
         Constructor. Registers the object and creates a PongAI controller.
     */
-    PongBot::PongBot(BaseObject* creator) : Bot(creator)
+    PongBot::PongBot(Context* context) : Bot(context)
     {
         RegisterObject(PongBot);
Index: code/trunk/src/modules/pong/PongBot.h
===================================================================
--- code/trunk/src/modules/pong/PongBot.h	(revision 9550)
+++ code/trunk/src/modules/pong/PongBot.h	(revision 9667)
@@ -56,5 +56,5 @@
     {
         public:
-            PongBot(BaseObject* creator);
+            PongBot(Context* context);
             virtual ~PongBot() {}
     };
Index: code/trunk/src/modules/pong/PongCenterpoint.cc
===================================================================
--- code/trunk/src/modules/pong/PongCenterpoint.cc	(revision 9550)
+++ code/trunk/src/modules/pong/PongCenterpoint.cc	(revision 9667)
@@ -41,5 +41,5 @@
 namespace orxonox
 {
-    CreateFactory(PongCenterpoint);
+    RegisterClass(PongCenterpoint);
 
     /**
@@ -47,5 +47,5 @@
         Constructor. Registers and initializes the object and checks whether the gametype is actually Pong.
     */
-    PongCenterpoint::PongCenterpoint(BaseObject* creator) : StaticEntity(creator)
+    PongCenterpoint::PongCenterpoint(Context* context) : StaticEntity(context)
     {
         RegisterObject(PongCenterpoint);
Index: code/trunk/src/modules/pong/PongCenterpoint.h
===================================================================
--- code/trunk/src/modules/pong/PongCenterpoint.h	(revision 9550)
+++ code/trunk/src/modules/pong/PongCenterpoint.h	(revision 9667)
@@ -121,5 +121,5 @@
     {
         public:
-            PongCenterpoint(BaseObject* creator); //!< Constructor. Registers and initializes the object and checks whether the gametype is actually Pong.
+            PongCenterpoint(Context* context); //!< Constructor. Registers and initializes the object and checks whether the gametype is actually Pong.
             virtual ~PongCenterpoint() {}
 
Index: code/trunk/src/modules/pong/PongScore.cc
===================================================================
--- code/trunk/src/modules/pong/PongScore.cc	(revision 9550)
+++ code/trunk/src/modules/pong/PongScore.cc	(revision 9667)
@@ -44,5 +44,5 @@
 namespace orxonox
 {
-    CreateFactory(PongScore);
+    RegisterClass(PongScore);
 
     /**
@@ -50,5 +50,5 @@
         Constructor. Registers and initializes the object.
     */
-    PongScore::PongScore(BaseObject* creator) : OverlayText(creator)
+    PongScore::PongScore(Context* context) : OverlayText(context)
     {
         RegisterObject(PongScore);
Index: code/trunk/src/modules/pong/PongScore.h
===================================================================
--- code/trunk/src/modules/pong/PongScore.h	(revision 9550)
+++ code/trunk/src/modules/pong/PongScore.h	(revision 9667)
@@ -57,5 +57,5 @@
     {
         public:
-            PongScore(BaseObject* creator);
+            PongScore(Context* context);
             virtual ~PongScore();
 
Index: code/trunk/src/modules/portals/PortalEndPoint.cc
===================================================================
--- code/trunk/src/modules/portals/PortalEndPoint.cc	(revision 9550)
+++ code/trunk/src/modules/portals/PortalEndPoint.cc	(revision 9667)
@@ -42,5 +42,5 @@
 namespace orxonox
 {
-    CreateFactory(PortalEndPoint);
+    RegisterClass(PortalEndPoint);
 
     /*static*/ const std::string PortalEndPoint::EVENTFUNCTIONNAME = "execute";
@@ -48,9 +48,9 @@
     std::map<unsigned int, PortalEndPoint *> PortalEndPoint::idMap_s;
 
-    PortalEndPoint::PortalEndPoint(BaseObject* creator) : StaticEntity(creator), RadarViewable(creator, static_cast<WorldEntity*>(this)), id_(0), trigger_(NULL), reenterDelay_(0)
+    PortalEndPoint::PortalEndPoint(Context* context) : StaticEntity(context), RadarViewable(this, static_cast<WorldEntity*>(this)), id_(0), trigger_(NULL), reenterDelay_(0)
     {
         RegisterObject(PortalEndPoint);
 
-        this->trigger_ = new DistanceMultiTrigger(this);
+        this->trigger_ = new DistanceMultiTrigger(this->getContext());
         this->trigger_->setName("portal");
         this->attach(this->trigger_);
@@ -61,5 +61,5 @@
         if( GameMode::isMaster() )
         {
-            this->portalSound_ = new WorldSound(this);
+            this->portalSound_ = new WorldSound(this->getContext());
             this->portalSound_->setLooping(false);
             this->attach(this->portalSound_);
Index: code/trunk/src/modules/portals/PortalEndPoint.h
===================================================================
--- code/trunk/src/modules/portals/PortalEndPoint.h	(revision 9550)
+++ code/trunk/src/modules/portals/PortalEndPoint.h	(revision 9667)
@@ -60,5 +60,5 @@
     {
         public:
-            PortalEndPoint(BaseObject* creator);
+            PortalEndPoint(Context* context);
             virtual ~PortalEndPoint();
 
Index: code/trunk/src/modules/portals/PortalLink.cc
===================================================================
--- code/trunk/src/modules/portals/PortalLink.cc	(revision 9550)
+++ code/trunk/src/modules/portals/PortalLink.cc	(revision 9667)
@@ -36,9 +36,9 @@
 namespace orxonox
 {
-    CreateFactory(PortalLink);
+    RegisterClass(PortalLink);
 
     std::map<PortalEndPoint *, PortalEndPoint *> PortalLink::links_s;
 
-    PortalLink::PortalLink(BaseObject* creator) : BaseObject(creator), fromID_(0), toID_(0), from_(0), to_(0)
+    PortalLink::PortalLink(Context* context) : BaseObject(context), fromID_(0), toID_(0), from_(0), to_(0)
     {
         RegisterObject(PortalLink);
Index: code/trunk/src/modules/portals/PortalLink.h
===================================================================
--- code/trunk/src/modules/portals/PortalLink.h	(revision 9550)
+++ code/trunk/src/modules/portals/PortalLink.h	(revision 9667)
@@ -54,5 +54,5 @@
     {
         public:
-            PortalLink(BaseObject* creator);
+            PortalLink(Context* context);
             virtual ~PortalLink();
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
Index: code/trunk/src/modules/questsystem/GlobalQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/GlobalQuest.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/GlobalQuest.cc	(revision 9667)
@@ -41,5 +41,5 @@
 namespace orxonox
 {
-    CreateFactory(GlobalQuest);
+    RegisterClass(GlobalQuest);
 
     /**
@@ -47,5 +47,5 @@
         Constructor. Registers the object.
     */
-    GlobalQuest::GlobalQuest(BaseObject* creator) : Quest(creator)
+    GlobalQuest::GlobalQuest(Context* context) : Quest(context)
     {
         RegisterObject(GlobalQuest);
Index: code/trunk/src/modules/questsystem/GlobalQuest.h
===================================================================
--- code/trunk/src/modules/questsystem/GlobalQuest.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/GlobalQuest.h	(revision 9667)
@@ -90,5 +90,5 @@
     {
         public:
-            GlobalQuest(BaseObject* creator);
+            GlobalQuest(Context* context);
             virtual ~GlobalQuest();
 
Index: code/trunk/src/modules/questsystem/LocalQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/LocalQuest.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/LocalQuest.cc	(revision 9667)
@@ -41,5 +41,5 @@
 namespace orxonox
 {
-    CreateFactory(LocalQuest);
+    RegisterClass(LocalQuest);
 
     /**
@@ -47,5 +47,5 @@
         Constructor. Registers and initializes the object.
     */
-    LocalQuest::LocalQuest(BaseObject* creator) : Quest(creator)
+    LocalQuest::LocalQuest(Context* context) : Quest(context)
     {
         RegisterObject(LocalQuest);
Index: code/trunk/src/modules/questsystem/LocalQuest.h
===================================================================
--- code/trunk/src/modules/questsystem/LocalQuest.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/LocalQuest.h	(revision 9667)
@@ -84,5 +84,5 @@
     {
         public:
-            LocalQuest(BaseObject* creator);
+            LocalQuest(Context* context);
             virtual ~LocalQuest();
 
Index: code/trunk/src/modules/questsystem/Quest.cc
===================================================================
--- code/trunk/src/modules/questsystem/Quest.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/Quest.cc	(revision 9667)
@@ -45,9 +45,11 @@
 namespace orxonox
 {
+    RegisterAbstractClass(Quest).inheritsFrom(Class(QuestItem));
+
     /**
     @brief
         Constructor. Registers and initializes object.
     */
-    Quest::Quest(BaseObject* creator) : QuestItem(creator)
+    Quest::Quest(Context* context) : QuestItem(context)
     {
         RegisterObject(Quest);
Index: code/trunk/src/modules/questsystem/Quest.h
===================================================================
--- code/trunk/src/modules/questsystem/Quest.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/Quest.h	(revision 9667)
@@ -82,5 +82,5 @@
     { // tolua_export
         public:
-            Quest(BaseObject* creator);
+            Quest(Context* context);
             virtual ~Quest();
 
Index: code/trunk/src/modules/questsystem/QuestDescription.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestDescription.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/QuestDescription.cc	(revision 9667)
@@ -44,5 +44,5 @@
 namespace orxonox
 {
-    CreateFactory(QuestDescription);
+    RegisterClass(QuestDescription);
 
     /*static*/ const std::string QuestDescription::SENDER = "questsystem";
@@ -52,5 +52,5 @@
         Constructor. Registers and initializes the object.
     */
-    QuestDescription::QuestDescription(BaseObject* creator) : BaseObject(creator)
+    QuestDescription::QuestDescription(Context* context) : BaseObject(context)
     {
         RegisterObject(QuestDescription);
Index: code/trunk/src/modules/questsystem/QuestDescription.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestDescription.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/QuestDescription.h	(revision 9667)
@@ -64,5 +64,5 @@
 // tolua_end
         public:
-            QuestDescription(BaseObject* creator);
+            QuestDescription(Context* context);
             virtual ~QuestDescription();
 
Index: code/trunk/src/modules/questsystem/QuestEffect.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestEffect.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/QuestEffect.cc	(revision 9667)
@@ -37,4 +37,6 @@
 namespace orxonox
 {
+    RegisterAbstractClass(QuestEffect).inheritsFrom(Class(BaseObject));
+
     /**
     @brief
@@ -42,5 +44,5 @@
         Is not meant to be invoked directly, since this is only an interface.
     */
-    QuestEffect::QuestEffect(BaseObject* creator) : BaseObject(creator)
+    QuestEffect::QuestEffect(Context* context) : BaseObject(context)
     {
         RegisterObject(QuestEffect);
Index: code/trunk/src/modules/questsystem/QuestEffect.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestEffect.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/QuestEffect.h	(revision 9667)
@@ -57,5 +57,5 @@
     {
         public:
-            QuestEffect(BaseObject* creator);
+            QuestEffect(Context* context);
             virtual ~QuestEffect();
 
Index: code/trunk/src/modules/questsystem/QuestEffectBeacon.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestEffectBeacon.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/QuestEffectBeacon.cc	(revision 9667)
@@ -45,5 +45,5 @@
 namespace orxonox
 {
-    CreateFactory(QuestEffectBeacon);
+    RegisterClass(QuestEffectBeacon);
 
     /**
@@ -51,5 +51,5 @@
         Constructor. Registers the object and initializes defaults.
     */
-    QuestEffectBeacon::QuestEffectBeacon(BaseObject* creator) : StaticEntity(creator)
+    QuestEffectBeacon::QuestEffectBeacon(Context* context) : StaticEntity(context)
     {
         RegisterObject(QuestEffectBeacon);
Index: code/trunk/src/modules/questsystem/QuestEffectBeacon.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestEffectBeacon.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/QuestEffectBeacon.h	(revision 9667)
@@ -93,5 +93,5 @@
     {
         public:
-            QuestEffectBeacon(BaseObject* creator);
+            QuestEffectBeacon(Context* context);
             virtual ~QuestEffectBeacon();
 
Index: code/trunk/src/modules/questsystem/QuestHint.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestHint.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/QuestHint.cc	(revision 9667)
@@ -43,5 +43,5 @@
 namespace orxonox
 {
-    CreateFactory(QuestHint);
+    RegisterClass(QuestHint);
 
     /**
@@ -49,5 +49,5 @@
         Constructor. Registers the object.
     */
-    QuestHint::QuestHint(BaseObject* creator) : QuestItem(creator)
+    QuestHint::QuestHint(Context* context) : QuestItem(context)
     {
         RegisterObject(QuestHint);
Index: code/trunk/src/modules/questsystem/QuestHint.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestHint.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/QuestHint.h	(revision 9667)
@@ -82,5 +82,5 @@
 
         public:
-            QuestHint(BaseObject* creator);
+            QuestHint(Context* context);
             virtual ~QuestHint();
 
Index: code/trunk/src/modules/questsystem/QuestItem.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestItem.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/QuestItem.cc	(revision 9667)
@@ -42,5 +42,5 @@
 {
 
-    CreateUnloadableFactory(QuestItem);
+    RegisterUnloadableClass(QuestItem);
 
     /**
@@ -48,5 +48,5 @@
         Constructor. Registers and initializes the object.
     */
-    QuestItem::QuestItem(BaseObject* creator) : BaseObject(creator)
+    QuestItem::QuestItem(Context* context) : BaseObject(context)
     {
         this->registered_ = false;
Index: code/trunk/src/modules/questsystem/QuestItem.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestItem.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/QuestItem.h	(revision 9667)
@@ -60,5 +60,5 @@
 
         public:
-            QuestItem(BaseObject* creator);
+            QuestItem(Context* context);
             virtual ~QuestItem();
 
Index: code/trunk/src/modules/questsystem/QuestListener.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestListener.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/QuestListener.cc	(revision 9667)
@@ -42,5 +42,5 @@
 namespace orxonox
 {
-    CreateFactory(QuestListener);
+    RegisterClass(QuestListener);
 
     // Initialization of the static variables for the modes as strings.
@@ -54,5 +54,5 @@
         Constructor. Registers the object and initializes variables.
     */
-    QuestListener::QuestListener(BaseObject* creator) : BaseObject(creator)
+    QuestListener::QuestListener(Context* context) : BaseObject(context)
     {
         RegisterObject(QuestListener);
Index: code/trunk/src/modules/questsystem/QuestListener.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestListener.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/QuestListener.h	(revision 9667)
@@ -87,5 +87,5 @@
 
         public:
-            QuestListener(BaseObject* creator);
+            QuestListener(Context* context);
             virtual ~QuestListener();
 
Index: code/trunk/src/modules/questsystem/QuestManager.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestManager.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/QuestManager.cc	(revision 9667)
@@ -38,5 +38,4 @@
 #include "util/ScopedSingletonManager.h"
 #include "core/command/ConsoleCommand.h"
-#include "core/CoreIncludes.h"
 #include "core/GUIManager.h"
 #include "core/LuaState.h"
@@ -60,5 +59,4 @@
     QuestManager::QuestManager()
     {
-        RegisterRootObject(QuestManager);
         orxout(internal_info, context::quests) << "QuestManager created." << endl;
     }
Index: code/trunk/src/modules/questsystem/QuestManager.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestManager.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/QuestManager.h	(revision 9667)
@@ -43,5 +43,4 @@
 
 #include "util/Singleton.h"
-#include "core/OrxonoxClass.h"
 
 namespace orxonox  // tolua_export
@@ -59,5 +58,5 @@
     */
     class _QuestsystemExport QuestManager  // tolua_export
-        : public Singleton<QuestManager>, public orxonox::OrxonoxClass
+        : public Singleton<QuestManager>
     { // tolua_export
 
Index: code/trunk/src/modules/questsystem/effects/AddQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/effects/AddQuest.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/effects/AddQuest.cc	(revision 9667)
@@ -43,5 +43,5 @@
 namespace orxonox
 {
-    CreateFactory(AddQuest);
+    RegisterClass(AddQuest);
 
     /**
@@ -49,5 +49,5 @@
         Constructor. Registers the object.
     */
-    AddQuest::AddQuest(BaseObject* creator) : ChangeQuestStatus(creator)
+    AddQuest::AddQuest(Context* context) : ChangeQuestStatus(context)
     {
         RegisterObject(AddQuest);
Index: code/trunk/src/modules/questsystem/effects/AddQuest.h
===================================================================
--- code/trunk/src/modules/questsystem/effects/AddQuest.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/effects/AddQuest.h	(revision 9667)
@@ -59,5 +59,5 @@
     {
         public:
-        AddQuest(BaseObject* creator);
+        AddQuest(Context* context);
         virtual ~AddQuest();
 
Index: code/trunk/src/modules/questsystem/effects/AddQuestHint.cc
===================================================================
--- code/trunk/src/modules/questsystem/effects/AddQuestHint.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/effects/AddQuestHint.cc	(revision 9667)
@@ -44,5 +44,5 @@
 namespace orxonox
 {
-    CreateFactory(AddQuestHint);
+    RegisterClass(AddQuestHint);
 
     /**
@@ -50,5 +50,5 @@
         Constructor. Registers the object.
     */
-    AddQuestHint::AddQuestHint(BaseObject* creator) : QuestEffect(creator)
+    AddQuestHint::AddQuestHint(Context* context) : QuestEffect(context)
     {
         RegisterObject(AddQuestHint);
Index: code/trunk/src/modules/questsystem/effects/AddQuestHint.h
===================================================================
--- code/trunk/src/modules/questsystem/effects/AddQuestHint.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/effects/AddQuestHint.h	(revision 9667)
@@ -61,5 +61,5 @@
     {
         public:
-            AddQuestHint(BaseObject* creator);
+            AddQuestHint(Context* context);
             virtual ~AddQuestHint();
 
Index: code/trunk/src/modules/questsystem/effects/AddReward.cc
===================================================================
--- code/trunk/src/modules/questsystem/effects/AddReward.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/effects/AddReward.cc	(revision 9667)
@@ -41,5 +41,5 @@
 namespace orxonox
 {
-    CreateFactory(AddReward);
+    RegisterClass(AddReward);
 
     /**
@@ -47,5 +47,5 @@
         Constructor. Registers the object.
     */
-    AddReward::AddReward(BaseObject* creator) : QuestEffect(creator)
+    AddReward::AddReward(Context* context) : QuestEffect(context)
     {
         RegisterObject(AddReward);
Index: code/trunk/src/modules/questsystem/effects/AddReward.h
===================================================================
--- code/trunk/src/modules/questsystem/effects/AddReward.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/effects/AddReward.h	(revision 9667)
@@ -65,5 +65,5 @@
     {
         public:
-            AddReward(BaseObject* creator);
+            AddReward(Context* context);
             virtual ~AddReward();
 
Index: code/trunk/src/modules/questsystem/effects/ChangeQuestStatus.cc
===================================================================
--- code/trunk/src/modules/questsystem/effects/ChangeQuestStatus.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/effects/ChangeQuestStatus.cc	(revision 9667)
@@ -42,9 +42,11 @@
 namespace orxonox
 {
+    RegisterAbstractClass(ChangeQuestStatus).inheritsFrom(Class(QuestEffect));
+
     /**
     @brief
         Constructor. Registers the object.
     */
-    ChangeQuestStatus::ChangeQuestStatus(BaseObject* creator) : QuestEffect(creator)
+    ChangeQuestStatus::ChangeQuestStatus(Context* context) : QuestEffect(context)
     {
         RegisterObject(ChangeQuestStatus);
Index: code/trunk/src/modules/questsystem/effects/ChangeQuestStatus.h
===================================================================
--- code/trunk/src/modules/questsystem/effects/ChangeQuestStatus.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/effects/ChangeQuestStatus.h	(revision 9667)
@@ -56,5 +56,5 @@
     {
         public:
-            ChangeQuestStatus(BaseObject* creator);
+            ChangeQuestStatus(Context* context);
             virtual ~ChangeQuestStatus();
 
Index: code/trunk/src/modules/questsystem/effects/CompleteQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/effects/CompleteQuest.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/effects/CompleteQuest.cc	(revision 9667)
@@ -42,5 +42,5 @@
 namespace orxonox
 {
-    CreateFactory(CompleteQuest);
+    RegisterClass(CompleteQuest);
 
     /**
@@ -48,5 +48,5 @@
         Constructor. Registers the object.
     */
-    CompleteQuest::CompleteQuest(BaseObject* creator) : ChangeQuestStatus(creator)
+    CompleteQuest::CompleteQuest(Context* context) : ChangeQuestStatus(context)
     {
         RegisterObject(CompleteQuest);
Index: code/trunk/src/modules/questsystem/effects/CompleteQuest.h
===================================================================
--- code/trunk/src/modules/questsystem/effects/CompleteQuest.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/effects/CompleteQuest.h	(revision 9667)
@@ -59,5 +59,5 @@
     {
         public:
-            CompleteQuest(BaseObject* creator);
+            CompleteQuest(Context* context);
             virtual ~CompleteQuest();
 
Index: code/trunk/src/modules/questsystem/effects/FailQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/effects/FailQuest.cc	(revision 9550)
+++ code/trunk/src/modules/questsystem/effects/FailQuest.cc	(revision 9667)
@@ -42,5 +42,5 @@
 namespace orxonox
 {
-    CreateFactory(FailQuest);
+    RegisterClass(FailQuest);
 
     /**
@@ -48,5 +48,5 @@
         Constructor. Registers the object.
     */
-    FailQuest::FailQuest(BaseObject* creator) : ChangeQuestStatus(creator)
+    FailQuest::FailQuest(Context* context) : ChangeQuestStatus(context)
     {
         RegisterObject(FailQuest);
Index: code/trunk/src/modules/questsystem/effects/FailQuest.h
===================================================================
--- code/trunk/src/modules/questsystem/effects/FailQuest.h	(revision 9550)
+++ code/trunk/src/modules/questsystem/effects/FailQuest.h	(revision 9667)
@@ -59,5 +59,5 @@
     {
         public:
-            FailQuest(BaseObject* creator);
+            FailQuest(Context* context);
             virtual ~FailQuest();
 
Index: code/trunk/src/modules/tetris/Tetris.cc
===================================================================
--- code/trunk/src/modules/tetris/Tetris.cc	(revision 9550)
+++ code/trunk/src/modules/tetris/Tetris.cc	(revision 9667)
@@ -54,5 +54,5 @@
 {
 
-    CreateUnloadableFactory(Tetris);
+    RegisterUnloadableClass(Tetris);
 
     /**
@@ -61,5 +61,5 @@
     @ingroup Tetris
     */
-    Tetris::Tetris(BaseObject* creator) : Deathmatch(creator)
+    Tetris::Tetris(Context* context) : Deathmatch(context)
     {
         RegisterObject(Tetris);
@@ -379,5 +379,5 @@
     {
         // create new futureBrick_
-        this->futureBrick_ = new TetrisBrick(this->center_);
+        this->futureBrick_ = new TetrisBrick(this->center_->getContext());
 
 
Index: code/trunk/src/modules/tetris/Tetris.h
===================================================================
--- code/trunk/src/modules/tetris/Tetris.h	(revision 9550)
+++ code/trunk/src/modules/tetris/Tetris.h	(revision 9667)
@@ -55,5 +55,5 @@
     {
         public:
-            Tetris(BaseObject* creator); //!< Constructor. Registers and initializes the object.
+            Tetris(Context* context); //!< Constructor. Registers and initializes the object.
             virtual ~Tetris(); //!< Destructor. Cleans up, if initialized.
 
Index: code/trunk/src/modules/tetris/TetrisBrick.cc
===================================================================
--- code/trunk/src/modules/tetris/TetrisBrick.cc	(revision 9550)
+++ code/trunk/src/modules/tetris/TetrisBrick.cc	(revision 9667)
@@ -44,5 +44,5 @@
 namespace orxonox
 {
-    CreateFactory(TetrisBrick);
+    RegisterClass(TetrisBrick);
 
     /**
@@ -51,5 +51,5 @@
     @ingroup Tetris
     */
-    TetrisBrick::TetrisBrick(BaseObject* creator): ControllableEntity(creator)
+    TetrisBrick::TetrisBrick(Context* context): ControllableEntity(context)
     {
         RegisterObject(TetrisBrick);
@@ -77,5 +77,5 @@
         {
             // Create a new stone and add it to the brick.
-            TetrisStone* stone = new TetrisStone(this);
+            TetrisStone* stone = new TetrisStone(this->getContext());
             this->brickStones_.push_back(stone);
             this->attach(stone);
Index: code/trunk/src/modules/tetris/TetrisBrick.h
===================================================================
--- code/trunk/src/modules/tetris/TetrisBrick.h	(revision 9550)
+++ code/trunk/src/modules/tetris/TetrisBrick.h	(revision 9667)
@@ -54,5 +54,5 @@
     {
         public:
-            TetrisBrick(BaseObject* creator); //!< Constructor. Registers and initializes the object.
+            TetrisBrick(Context* context); //!< Constructor. Registers and initializes the object.
             virtual ~TetrisBrick() {}
 
Index: code/trunk/src/modules/tetris/TetrisCenterpoint.cc
===================================================================
--- code/trunk/src/modules/tetris/TetrisCenterpoint.cc	(revision 9550)
+++ code/trunk/src/modules/tetris/TetrisCenterpoint.cc	(revision 9667)
@@ -42,5 +42,5 @@
 namespace orxonox
 {
-    CreateFactory(TetrisCenterpoint);
+    RegisterClass(TetrisCenterpoint);
 
     /**
@@ -48,5 +48,5 @@
         Constructor. Registers and initializes the object and checks whether the gametype is actually Tetris.
     */
-    TetrisCenterpoint::TetrisCenterpoint(BaseObject* creator) : StaticEntity(creator)
+    TetrisCenterpoint::TetrisCenterpoint(Context* context) : StaticEntity(context)
     {
         RegisterObject(TetrisCenterpoint);
Index: code/trunk/src/modules/tetris/TetrisCenterpoint.h
===================================================================
--- code/trunk/src/modules/tetris/TetrisCenterpoint.h	(revision 9550)
+++ code/trunk/src/modules/tetris/TetrisCenterpoint.h	(revision 9667)
@@ -59,5 +59,5 @@
     {
         public:
-            TetrisCenterpoint(BaseObject* creator); //!< Constructor. Registers and initializes the object and checks whether the gametype is actually Tetris.
+            TetrisCenterpoint(Context* context); //!< Constructor. Registers and initializes the object and checks whether the gametype is actually Tetris.
             virtual ~TetrisCenterpoint() {}
 
Index: code/trunk/src/modules/tetris/TetrisScore.cc
===================================================================
--- code/trunk/src/modules/tetris/TetrisScore.cc	(revision 9550)
+++ code/trunk/src/modules/tetris/TetrisScore.cc	(revision 9667)
@@ -45,5 +45,5 @@
 namespace orxonox
 {
-    CreateFactory(TetrisScore);
+    RegisterClass(TetrisScore);
 
     /**
@@ -52,5 +52,5 @@
     @ingroup Tetris
     */
-    TetrisScore::TetrisScore(BaseObject* creator) : OverlayText(creator)
+    TetrisScore::TetrisScore(Context* context) : OverlayText(context)
     {
         RegisterObject(TetrisScore);
Index: code/trunk/src/modules/tetris/TetrisScore.h
===================================================================
--- code/trunk/src/modules/tetris/TetrisScore.h	(revision 9550)
+++ code/trunk/src/modules/tetris/TetrisScore.h	(revision 9667)
@@ -57,5 +57,5 @@
     {
         public:
-            TetrisScore(BaseObject* creator);
+            TetrisScore(Context* context);
             virtual ~TetrisScore();
 
Index: code/trunk/src/modules/tetris/TetrisStone.cc
===================================================================
--- code/trunk/src/modules/tetris/TetrisStone.cc	(revision 9550)
+++ code/trunk/src/modules/tetris/TetrisStone.cc	(revision 9667)
@@ -42,5 +42,5 @@
 namespace orxonox
 {
-    CreateFactory(TetrisStone);
+    RegisterClass(TetrisStone);
 
     /**
@@ -48,5 +48,5 @@
         Constructor. Registers and initializes the object.
     */
-    TetrisStone::TetrisStone(BaseObject* creator) : MovableEntity(creator)
+    TetrisStone::TetrisStone(Context* context) : MovableEntity(context)
     {
         RegisterObject(TetrisStone);
Index: code/trunk/src/modules/tetris/TetrisStone.h
===================================================================
--- code/trunk/src/modules/tetris/TetrisStone.h	(revision 9550)
+++ code/trunk/src/modules/tetris/TetrisStone.h	(revision 9667)
@@ -54,5 +54,5 @@
     {
         public:
-            TetrisStone(BaseObject* creator); //!< Constructor. Registers and initializes the object.
+            TetrisStone(Context* context); //!< Constructor. Registers and initializes the object.
             virtual ~TetrisStone() {}
 
Index: code/trunk/src/modules/towerdefense/Tower.cc
===================================================================
--- code/trunk/src/modules/towerdefense/Tower.cc	(revision 9550)
+++ code/trunk/src/modules/towerdefense/Tower.cc	(revision 9667)
@@ -16,5 +16,5 @@
 namespace orxonox
 {
-    CreateFactory(Tower);
+    RegisterClass(Tower);
 
     /**
@@ -22,5 +22,5 @@
         Constructor. Registers and initializes the object.
     */
-    Tower::Tower(BaseObject* creator) : Pawn(creator)
+    Tower::Tower(Context* context) : Pawn(context)
     {
         RegisterObject(Tower);
Index: code/trunk/src/modules/towerdefense/Tower.h
===================================================================
--- code/trunk/src/modules/towerdefense/Tower.h	(revision 9550)
+++ code/trunk/src/modules/towerdefense/Tower.h	(revision 9667)
@@ -27,5 +27,5 @@
     {
     public:
-        Tower(BaseObject* creator);
+        Tower(Context* context);
         virtual ~Tower() {};
 
Index: code/trunk/src/modules/towerdefense/TowerDefense.cc
===================================================================
--- code/trunk/src/modules/towerdefense/TowerDefense.cc	(revision 9550)
+++ code/trunk/src/modules/towerdefense/TowerDefense.cc	(revision 9667)
@@ -87,4 +87,5 @@
 
 #include "chat/ChatManager.h"
+#include "core/CoreIncludes.h"
 
 /* Part of a temporary hack to allow the player to add towers */
@@ -93,7 +94,7 @@
 namespace orxonox
 {
-    CreateUnloadableFactory(TowerDefense);
-
-    TowerDefense::TowerDefense(BaseObject* creator) : Deathmatch(creator)
+    RegisterUnloadableClass(TowerDefense);
+
+    TowerDefense::TowerDefense(Context* context) : Deathmatch(context)
     {
         RegisterObject(TowerDefense);
@@ -189,5 +190,5 @@
 
         // Create tower
-        Tower* newTower = new Tower(this->center_);
+        Tower* newTower = new Tower(this->center_->getContext());
         newTower->addTemplate(this->center_->getTowerTemplate());
 
Index: code/trunk/src/modules/towerdefense/TowerDefense.h
===================================================================
--- code/trunk/src/modules/towerdefense/TowerDefense.h	(revision 9550)
+++ code/trunk/src/modules/towerdefense/TowerDefense.h	(revision 9667)
@@ -48,5 +48,5 @@
     {
     public:
-        TowerDefense(BaseObject* creator);
+        TowerDefense(Context* context);
         virtual ~TowerDefense();
 
Index: code/trunk/src/modules/towerdefense/TowerDefenseCenterpoint.cc
===================================================================
--- code/trunk/src/modules/towerdefense/TowerDefenseCenterpoint.cc	(revision 9550)
+++ code/trunk/src/modules/towerdefense/TowerDefenseCenterpoint.cc	(revision 9667)
@@ -41,5 +41,5 @@
 namespace orxonox
 {
-    CreateFactory(TowerDefenseCenterpoint);
+    RegisterClass(TowerDefenseCenterpoint);
 
     /**
@@ -47,5 +47,5 @@
         Constructor. Registers and initializes the object and checks whether the gametype is actually TowerDefense.
     */
-    TowerDefenseCenterpoint::TowerDefenseCenterpoint(BaseObject* creator) : MobileEntity(creator)
+    TowerDefenseCenterpoint::TowerDefenseCenterpoint(Context* context) : MobileEntity(context)
     {
         RegisterObject(TowerDefenseCenterpoint);
Index: code/trunk/src/modules/towerdefense/TowerDefenseCenterpoint.h
===================================================================
--- code/trunk/src/modules/towerdefense/TowerDefenseCenterpoint.h	(revision 9550)
+++ code/trunk/src/modules/towerdefense/TowerDefenseCenterpoint.h	(revision 9667)
@@ -49,5 +49,5 @@
     {
         public:
-            TowerDefenseCenterpoint(BaseObject* creator);
+            TowerDefenseCenterpoint(Context* context);
             virtual ~TowerDefenseCenterpoint() {}
 
Index: code/trunk/src/modules/towerdefense/TowerDefenseController.cc
===================================================================
--- code/trunk/src/modules/towerdefense/TowerDefenseController.cc	(revision 9550)
+++ code/trunk/src/modules/towerdefense/TowerDefenseController.cc	(revision 9667)
@@ -36,7 +36,7 @@
 namespace orxonox
 {
-    CreateFactory(TowerDefenseController);
+    RegisterClass(TowerDefenseController);
 
-    TowerDefenseController::TowerDefenseController(BaseObject* creator) : WaypointController(creator)
+    TowerDefenseController::TowerDefenseController(Context* context) : WaypointController(context)
     {
         RegisterObject(TowerDefenseController);
Index: code/trunk/src/modules/towerdefense/TowerDefenseController.h
===================================================================
--- code/trunk/src/modules/towerdefense/TowerDefenseController.h	(revision 9550)
+++ code/trunk/src/modules/towerdefense/TowerDefenseController.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
         public:
-            TowerDefenseController(BaseObject* creator);
+            TowerDefenseController(Context* context);
             virtual ~TowerDefenseController() {}
 
Index: code/trunk/src/modules/towerdefense/TowerDefenseHUDController.cc
===================================================================
--- code/trunk/src/modules/towerdefense/TowerDefenseHUDController.cc	(revision 9550)
+++ code/trunk/src/modules/towerdefense/TowerDefenseHUDController.cc	(revision 9667)
@@ -35,7 +35,7 @@
 namespace orxonox
 {
-    CreateFactory(TowerDefenseHUDController);
+    RegisterClass(TowerDefenseHUDController);
 
-    TowerDefenseHUDController::TowerDefenseHUDController(BaseObject* creator) : OverlayText(creator)
+    TowerDefenseHUDController::TowerDefenseHUDController(Context* context) : OverlayText(context)
     {
         RegisterObject(TowerDefenseHUDController);
Index: code/trunk/src/modules/towerdefense/TowerDefenseHUDController.h
===================================================================
--- code/trunk/src/modules/towerdefense/TowerDefenseHUDController.h	(revision 9550)
+++ code/trunk/src/modules/towerdefense/TowerDefenseHUDController.h	(revision 9667)
@@ -49,5 +49,5 @@
     {
     public:
-        TowerDefenseHUDController(BaseObject* creator);
+        TowerDefenseHUDController(Context* context);
         virtual ~TowerDefenseHUDController();
 
Index: code/trunk/src/modules/weapons/MuzzleFlash.cc
===================================================================
--- code/trunk/src/modules/weapons/MuzzleFlash.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/MuzzleFlash.cc	(revision 9667)
@@ -39,7 +39,7 @@
 namespace orxonox
 {
-    CreateFactory(MuzzleFlash);
+    RegisterClass(MuzzleFlash);
 
-    MuzzleFlash::MuzzleFlash(BaseObject* creator) : Billboard(creator)
+    MuzzleFlash::MuzzleFlash(Context* context) : Billboard(context)
     {
         RegisterObject(MuzzleFlash);
Index: code/trunk/src/modules/weapons/MuzzleFlash.h
===================================================================
--- code/trunk/src/modules/weapons/MuzzleFlash.h	(revision 9550)
+++ code/trunk/src/modules/weapons/MuzzleFlash.h	(revision 9667)
@@ -55,5 +55,5 @@
     {
         public:
-            MuzzleFlash(BaseObject* creator);
+            MuzzleFlash(Context* context);
             virtual ~MuzzleFlash() {}
 
Index: code/trunk/src/modules/weapons/RocketController.cc
===================================================================
--- code/trunk/src/modules/weapons/RocketController.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/RocketController.cc	(revision 9667)
@@ -45,5 +45,5 @@
         Constructor.
     */
-    RocketController::RocketController(BaseObject* creator) : Controller(creator)
+    RocketController::RocketController(Context* context) : Controller(context)
     {
         RegisterObject(RocketController);
@@ -51,5 +51,5 @@
 
         // Create a rocket for the controller.
-        this->rocket_ = new SimpleRocket(this);
+        this->rocket_ = new SimpleRocket(this->getContext());
         this->rocket_->setController(this);
         this->setControllableEntity(orxonox_cast<ControllableEntity*>(this->rocket_));
Index: code/trunk/src/modules/weapons/RocketController.h
===================================================================
--- code/trunk/src/modules/weapons/RocketController.h	(revision 9550)
+++ code/trunk/src/modules/weapons/RocketController.h	(revision 9667)
@@ -52,5 +52,5 @@
     {
         public:
-            RocketController(BaseObject* creator);
+            RocketController(Context* context);
             virtual ~RocketController();
 
Index: code/trunk/src/modules/weapons/munitions/FusionMunition.cc
===================================================================
--- code/trunk/src/modules/weapons/munitions/FusionMunition.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/munitions/FusionMunition.cc	(revision 9667)
@@ -37,7 +37,7 @@
 namespace orxonox
 {
-    CreateFactory(FusionMunition);
+    RegisterClass(FusionMunition);
 
-    FusionMunition::FusionMunition(BaseObject* creator) : Munition(creator)
+    FusionMunition::FusionMunition(Context* context) : Munition(context)
     {
         RegisterObject(FusionMunition);
Index: code/trunk/src/modules/weapons/munitions/FusionMunition.h
===================================================================
--- code/trunk/src/modules/weapons/munitions/FusionMunition.h	(revision 9550)
+++ code/trunk/src/modules/weapons/munitions/FusionMunition.h	(revision 9667)
@@ -51,5 +51,5 @@
     {
         public:
-            FusionMunition(BaseObject* creator);
+            FusionMunition(Context* context);
             virtual ~FusionMunition() {}
     };
Index: code/trunk/src/modules/weapons/munitions/LaserMunition.cc
===================================================================
--- code/trunk/src/modules/weapons/munitions/LaserMunition.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/munitions/LaserMunition.cc	(revision 9667)
@@ -37,7 +37,7 @@
 namespace orxonox
 {
-    CreateFactory(LaserMunition);
+    RegisterClass(LaserMunition);
 
-    LaserMunition::LaserMunition(BaseObject* creator) : ReplenishingMunition(creator)
+    LaserMunition::LaserMunition(Context* context) : ReplenishingMunition(context)
     {
         RegisterObject(LaserMunition);
Index: code/trunk/src/modules/weapons/munitions/LaserMunition.h
===================================================================
--- code/trunk/src/modules/weapons/munitions/LaserMunition.h	(revision 9550)
+++ code/trunk/src/modules/weapons/munitions/LaserMunition.h	(revision 9667)
@@ -51,5 +51,5 @@
     {
         public:
-            LaserMunition(BaseObject* creator);
+            LaserMunition(Context* context);
             virtual ~LaserMunition() {}
     };
Index: code/trunk/src/modules/weapons/munitions/ReplenishingMunition.cc
===================================================================
--- code/trunk/src/modules/weapons/munitions/ReplenishingMunition.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/munitions/ReplenishingMunition.cc	(revision 9667)
@@ -39,7 +39,7 @@
 namespace orxonox
 {
-    CreateFactory(ReplenishingMunition);
+    RegisterClass(ReplenishingMunition);
 
-    ReplenishingMunition::ReplenishingMunition(BaseObject* creator) : Munition(creator)
+    ReplenishingMunition::ReplenishingMunition(Context* context) : Munition(context)
     {
         RegisterObject(ReplenishingMunition);
Index: code/trunk/src/modules/weapons/munitions/ReplenishingMunition.h
===================================================================
--- code/trunk/src/modules/weapons/munitions/ReplenishingMunition.h	(revision 9550)
+++ code/trunk/src/modules/weapons/munitions/ReplenishingMunition.h	(revision 9667)
@@ -53,5 +53,5 @@
     {
         public:
-            ReplenishingMunition(BaseObject* creator);
+            ReplenishingMunition(Context* context);
             virtual ~ReplenishingMunition() {}
 
Index: code/trunk/src/modules/weapons/munitions/RocketMunition.cc
===================================================================
--- code/trunk/src/modules/weapons/munitions/RocketMunition.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/munitions/RocketMunition.cc	(revision 9667)
@@ -37,7 +37,7 @@
 namespace orxonox
 {
-    CreateFactory(RocketMunition);
+    RegisterClass(RocketMunition);
 
-    RocketMunition::RocketMunition(BaseObject* creator) : Munition(creator)
+    RocketMunition::RocketMunition(Context* context) : Munition(context)
     {
         RegisterObject(RocketMunition);
Index: code/trunk/src/modules/weapons/munitions/RocketMunition.h
===================================================================
--- code/trunk/src/modules/weapons/munitions/RocketMunition.h	(revision 9550)
+++ code/trunk/src/modules/weapons/munitions/RocketMunition.h	(revision 9667)
@@ -51,5 +51,5 @@
     {
         public:
-            RocketMunition(BaseObject* creator);
+            RocketMunition(Context* context);
             virtual ~RocketMunition() {}
     };
Index: code/trunk/src/modules/weapons/projectiles/BasicProjectile.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/BasicProjectile.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/projectiles/BasicProjectile.cc	(revision 9667)
@@ -42,11 +42,13 @@
 namespace orxonox
 {
+    RegisterClassNoArgs(BasicProjectile);
+
     /**
     @brief
         Constructor. Registers the object and initializes some default values.
     */
-    BasicProjectile::BasicProjectile() : OrxonoxClass()
+    BasicProjectile::BasicProjectile()
     {
-        RegisterRootObject(BasicProjectile);// Register the BasicProjectile class to the core
+        RegisterObject(BasicProjectile);// Register the BasicProjectile class to the core
 
         this->bDestroy_ = false;
@@ -106,5 +108,5 @@
                 {
                     {
-                        ParticleSpawner* effect = new ParticleSpawner(this->getShooter()->getCreator());
+                        ParticleSpawner* effect = new ParticleSpawner(this->getShooter()->getContext());
                         effect->setPosition(entity->getPosition());
                         effect->setOrientation(entity->getOrientation());
@@ -115,5 +117,5 @@
                     // Second effect with same condition
                     {
-                        ParticleSpawner* effect = new ParticleSpawner(this->getShooter()->getCreator());
+                        ParticleSpawner* effect = new ParticleSpawner(this->getShooter()->getContext());
                         effect->setPosition(entity->getPosition());
                         effect->setOrientation(entity->getOrientation());
@@ -127,5 +129,5 @@
                 if (victim && victim->hasShield() && (this->getDamage() > 0.0f || this->getShieldDamage() > 0.0f) && victim->getHealth() > 0.0f)
                 {
-                    ParticleSpawner* effect = new ParticleSpawner(this->getShooter()->getCreator());
+                    ParticleSpawner* effect = new ParticleSpawner(this->getShooter()->getContext());
                     effect->setDestroyAfterLife(true);
                     effect->setSource("Orxonox/Shield");
Index: code/trunk/src/modules/weapons/projectiles/BasicProjectile.h
===================================================================
--- code/trunk/src/modules/weapons/projectiles/BasicProjectile.h	(revision 9550)
+++ code/trunk/src/modules/weapons/projectiles/BasicProjectile.h	(revision 9667)
@@ -39,5 +39,5 @@
 #include "worldentities/pawns/Pawn.h"
 
-#include "core/OrxonoxClass.h"
+#include "core/class/OrxonoxInterface.h"
 
 namespace orxonox
@@ -52,5 +52,5 @@
     @ingroup WeaponsProjectiles
     */
-    class _WeaponsExport BasicProjectile : public virtual OrxonoxClass
+    class _WeaponsExport BasicProjectile : public virtual OrxonoxInterface
     {
         public:
Index: code/trunk/src/modules/weapons/projectiles/BillboardProjectile.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/BillboardProjectile.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/projectiles/BillboardProjectile.cc	(revision 9667)
@@ -40,7 +40,7 @@
 namespace orxonox
 {
-    CreateFactory(BillboardProjectile);
+    RegisterClass(BillboardProjectile);
 
-    BillboardProjectile::BillboardProjectile(BaseObject* creator) : Projectile(creator)
+    BillboardProjectile::BillboardProjectile(Context* context) : Projectile(context)
     {
         RegisterObject(BillboardProjectile);
Index: code/trunk/src/modules/weapons/projectiles/BillboardProjectile.h
===================================================================
--- code/trunk/src/modules/weapons/projectiles/BillboardProjectile.h	(revision 9550)
+++ code/trunk/src/modules/weapons/projectiles/BillboardProjectile.h	(revision 9667)
@@ -55,5 +55,5 @@
     {
         public:
-            BillboardProjectile(BaseObject* creator);
+            BillboardProjectile(Context* context);
             virtual ~BillboardProjectile();
 
Index: code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.cc	(revision 9667)
@@ -40,7 +40,7 @@
 namespace orxonox
 {
-    CreateFactory(LightningGunProjectile);
+    RegisterClass(LightningGunProjectile);
 
-    LightningGunProjectile::LightningGunProjectile(BaseObject* creator) : BillboardProjectile(creator)
+    LightningGunProjectile::LightningGunProjectile(Context* context) : BillboardProjectile(context)
     {
         RegisterObject(LightningGunProjectile);
Index: code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.h
===================================================================
--- code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.h	(revision 9550)
+++ code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.h	(revision 9667)
@@ -55,5 +55,5 @@
     {
         public:
-            LightningGunProjectile(BaseObject* creator);
+            LightningGunProjectile(Context* context);
             virtual ~LightningGunProjectile() {}
 
Index: code/trunk/src/modules/weapons/projectiles/ParticleProjectile.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/ParticleProjectile.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/projectiles/ParticleProjectile.cc	(revision 9667)
@@ -41,7 +41,7 @@
 namespace orxonox
 {
-    CreateFactory(ParticleProjectile);
+    RegisterClass(ParticleProjectile);
 
-    ParticleProjectile::ParticleProjectile(BaseObject* creator) : BillboardProjectile(creator)
+    ParticleProjectile::ParticleProjectile(Context* context) : BillboardProjectile(context)
     {
         RegisterObject(ParticleProjectile);
@@ -65,5 +65,5 @@
         {
             this->detachOgreObject(this->particles_->getParticleSystem());
-            this->particles_->destroy();
+            delete this->particles_;
         }
     }
Index: code/trunk/src/modules/weapons/projectiles/ParticleProjectile.h
===================================================================
--- code/trunk/src/modules/weapons/projectiles/ParticleProjectile.h	(revision 9550)
+++ code/trunk/src/modules/weapons/projectiles/ParticleProjectile.h	(revision 9667)
@@ -51,5 +51,5 @@
     {
         public:
-            ParticleProjectile(BaseObject* creator);
+            ParticleProjectile(Context* context);
             virtual ~ParticleProjectile();
             virtual void changedVisibility();
Index: code/trunk/src/modules/weapons/projectiles/Projectile.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/Projectile.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/projectiles/Projectile.cc	(revision 9667)
@@ -34,5 +34,5 @@
 #include "Projectile.h"
 
-#include "core/ConfigValueIncludes.h"
+#include "core/config/ConfigValueIncludes.h"
 #include "core/CoreIncludes.h"
 #include "core/GameMode.h"
@@ -44,7 +44,7 @@
 namespace orxonox
 {
-    CreateFactory(Projectile);
+    RegisterClass(Projectile);
 
-    Projectile::Projectile(BaseObject* creator) : MovableEntity(creator), BasicProjectile()
+    Projectile::Projectile(Context* context) : MovableEntity(context), BasicProjectile()
     {
         RegisterObject(Projectile);
@@ -60,5 +60,5 @@
             this->setCollisionType(Kinematic);
 
-            SphereCollisionShape* shape = new SphereCollisionShape(this);
+            SphereCollisionShape* shape = new SphereCollisionShape(this->getContext());
             shape->setRadius(20.0f);
             this->attachCollisionShape(shape);
Index: code/trunk/src/modules/weapons/projectiles/Projectile.h
===================================================================
--- code/trunk/src/modules/weapons/projectiles/Projectile.h	(revision 9550)
+++ code/trunk/src/modules/weapons/projectiles/Projectile.h	(revision 9667)
@@ -58,5 +58,5 @@
     {
         public:
-            Projectile(BaseObject* creator);
+            Projectile(Context* context);
             virtual ~Projectile();
 
Index: code/trunk/src/modules/weapons/projectiles/Rocket.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/Rocket.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/projectiles/Rocket.cc	(revision 9667)
@@ -51,5 +51,5 @@
 namespace orxonox
 {
-    CreateFactory(Rocket);
+    RegisterClass(Rocket);
 
     /**
@@ -57,8 +57,8 @@
         Constructor. Registers the object and initializes some default values.
     */
-    Rocket::Rocket(BaseObject* creator)
-        : ControllableEntity(creator)
+    Rocket::Rocket(Context* context)
+        : ControllableEntity(context)
         , BasicProjectile()
-        , RadarViewable(creator, static_cast<WorldEntity*>(this))
+        , RadarViewable(this, static_cast<WorldEntity*>(this))
     {
         RegisterObject(Rocket);// Register the Rocket class to the core
@@ -73,5 +73,5 @@
 
             // Create rocket model
-            Model* model = new Model(this);
+            Model* model = new Model(this->getContext());
             model->setMeshSource("rocket.mesh");
             model->scale(0.7f);
@@ -79,5 +79,5 @@
 
             // Add effects.
-            ParticleEmitter* fire = new ParticleEmitter(this);
+            ParticleEmitter* fire = new ParticleEmitter(this->getContext());
             this->attach(fire);
             fire->setOrientation(this->getOrientation());
@@ -89,5 +89,5 @@
 
             // Add collision shape
-            ConeCollisionShape* collisionShape = new ConeCollisionShape(this);
+            ConeCollisionShape* collisionShape = new ConeCollisionShape(this->getContext());
             collisionShape->setRadius(3);
             collisionShape->setHeight(500);
@@ -97,5 +97,5 @@
 
             // Add sound
-            this->defSndWpnEngine_ = new WorldSound(this);
+            this->defSndWpnEngine_ = new WorldSound(this->getContext());
             this->defSndWpnEngine_->setLooping(true);
             this->defSndWpnEngine_->setSource("sounds/Rocket_engine.ogg");
@@ -103,5 +103,5 @@
             this->attach(defSndWpnEngine_);
 
-            this->defSndWpnLaunch_ = new WorldSound(this);
+            this->defSndWpnLaunch_ = new WorldSound(this->getContext());
             this->defSndWpnLaunch_->setLooping(false);
             this->defSndWpnLaunch_->setSource("sounds/Rocket_launch.ogg");
@@ -116,5 +116,5 @@
 
         // Add camera
-        CameraPosition* camPosition = new CameraPosition(this);
+        CameraPosition* camPosition = new CameraPosition(this->getContext());
         camPosition->setPosition(0,4,15);
         camPosition->setAllowMouseLook(true);
@@ -226,11 +226,11 @@
         if(this->getShooter())
         {
-            effect1 = new ParticleSpawner(this->getShooter()->getCreator());
-            effect2 = new ParticleSpawner(this->getShooter()->getCreator());
+            effect1 = new ParticleSpawner(this->getShooter()->getContext());
+            effect2 = new ParticleSpawner(this->getShooter()->getContext());
         }
         else
         {
-            effect1 = new ParticleSpawner(static_cast<BaseObject*>(this->getScene().get()));
-            effect2 = new ParticleSpawner(static_cast<BaseObject*>(this->getScene().get()));
+            effect1 = new ParticleSpawner(this->getContext());
+            effect2 = new ParticleSpawner(this->getContext());
         }
 
Index: code/trunk/src/modules/weapons/projectiles/Rocket.h
===================================================================
--- code/trunk/src/modules/weapons/projectiles/Rocket.h	(revision 9550)
+++ code/trunk/src/modules/weapons/projectiles/Rocket.h	(revision 9667)
@@ -59,5 +59,5 @@
     {
         public:
-            Rocket(BaseObject* creator);
+            Rocket(Context* context);
             virtual ~Rocket();
 
Index: code/trunk/src/modules/weapons/projectiles/SimpleRocket.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/SimpleRocket.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/projectiles/SimpleRocket.cc	(revision 9667)
@@ -52,12 +52,12 @@
 namespace orxonox
 {
-    CreateFactory(SimpleRocket);
+    RegisterClass(SimpleRocket);
 
     const float SimpleRocket::FUEL_PERCENTAGE = 0.8f;
 
-    SimpleRocket::SimpleRocket(BaseObject* creator)
-        : ControllableEntity(creator)
+    SimpleRocket::SimpleRocket(Context* context)
+        : ControllableEntity(context)
         , BasicProjectile()
-        , RadarViewable(creator, static_cast<WorldEntity*>(this))
+        , RadarViewable(this, static_cast<WorldEntity*>(this))
     {
         RegisterObject(SimpleRocket);// Register the SimpleRocket class to the core
@@ -74,5 +74,5 @@
 
             // Create rocket model.
-            Model* model = new Model(this);
+            Model* model = new Model(this->getContext());
             model->setMeshSource("rocket.mesh");
             model->scale(0.7f);
@@ -80,5 +80,5 @@
 
             // Add effects.
-            this->fire_ = new ParticleEmitter(this);
+            this->fire_ = new ParticleEmitter(this->getContext());
             this->attach(this->fire_);
 
@@ -91,5 +91,5 @@
             // Add collision shape.
             // TODO: fix the orientation and size of this collision shape to match the rocket
-            ConeCollisionShape* collisionShape = new ConeCollisionShape(this);
+            ConeCollisionShape* collisionShape = new ConeCollisionShape(this->getContext());
             collisionShape->setOrientation(this->getOrientation());
             collisionShape->setRadius(1.5f);
Index: code/trunk/src/modules/weapons/projectiles/SimpleRocket.h
===================================================================
--- code/trunk/src/modules/weapons/projectiles/SimpleRocket.h	(revision 9550)
+++ code/trunk/src/modules/weapons/projectiles/SimpleRocket.h	(revision 9667)
@@ -60,5 +60,5 @@
     {
         public:
-            SimpleRocket(BaseObject* creator);
+            SimpleRocket(Context* context);
             virtual ~SimpleRocket();
             virtual void tick(float dt);
Index: code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.cc	(revision 9667)
@@ -49,7 +49,7 @@
 namespace orxonox
 {
-    CreateFactory(EnergyDrink);
+    RegisterClass(EnergyDrink);
 
-    EnergyDrink::EnergyDrink(BaseObject* creator) : WeaponMode(creator)
+    EnergyDrink::EnergyDrink(Context* context) : WeaponMode(context)
     {
         RegisterObject(EnergyDrink);
@@ -101,6 +101,6 @@
     {
         // Create the projectile
-        Projectile* projectile = new Projectile(this);
-        Model* model = new Model(projectile);
+        Projectile* projectile = new Projectile(this->getContext());
+        Model* model = new Model(projectile->getContext());
         model->setMeshSource("can.mesh");
         model->setCastShadows(false);
@@ -127,5 +127,5 @@
     void EnergyDrink::muzzleflash()
     {
-        MuzzleFlash *muzzleFlash = new MuzzleFlash(this);
+        MuzzleFlash *muzzleFlash = new MuzzleFlash(this->getContext());
         this->getWeapon()->attach(muzzleFlash);
         muzzleFlash->setPosition(this->getMuzzleOffset());
Index: code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.h
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.h	(revision 9550)
+++ code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.h	(revision 9667)
@@ -54,5 +54,5 @@
     {
         public:
-            EnergyDrink(BaseObject* creator);
+            EnergyDrink(Context* context);
             virtual ~EnergyDrink() {}
 
Index: code/trunk/src/modules/weapons/weaponmodes/FusionFire.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/FusionFire.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/weaponmodes/FusionFire.cc	(revision 9667)
@@ -46,7 +46,7 @@
 namespace orxonox
 {
-    CreateFactory(FusionFire);
+    RegisterClass(FusionFire);
 
-    FusionFire::FusionFire(BaseObject* creator) : WeaponMode(creator)
+    FusionFire::FusionFire(Context* context) : WeaponMode(context)
     {
         RegisterObject(FusionFire);
@@ -66,5 +66,5 @@
     void FusionFire::fire()
     {
-        BillboardProjectile* projectile = new BillboardProjectile(this);
+        BillboardProjectile* projectile = new BillboardProjectile(this->getContext());
 
         projectile->setOrientation(this->getMuzzleOrientation());
Index: code/trunk/src/modules/weapons/weaponmodes/FusionFire.h
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/FusionFire.h	(revision 9550)
+++ code/trunk/src/modules/weapons/weaponmodes/FusionFire.h	(revision 9667)
@@ -51,5 +51,5 @@
     {
         public:
-            FusionFire(BaseObject* creator);
+            FusionFire(Context* context);
             virtual ~FusionFire() {}
 
Index: code/trunk/src/modules/weapons/weaponmodes/HsW01.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/HsW01.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/weaponmodes/HsW01.cc	(revision 9667)
@@ -50,7 +50,7 @@
 namespace orxonox
 {
-    CreateFactory(HsW01);
+    RegisterClass(HsW01);
 
-    HsW01::HsW01(BaseObject* creator) : WeaponMode(creator)
+    HsW01::HsW01(Context* context) : WeaponMode(context)
     {
         RegisterObject(HsW01);
@@ -111,6 +111,6 @@
 
         // Create the projectile.
-        Projectile* projectile = new Projectile(this);
-        Model* model = new Model(projectile);
+        Projectile* projectile = new Projectile(this->getContext());
+        Model* model = new Model(projectile->getContext());
         model->setMeshSource(mesh_);
         model->setCastShadows(false);
@@ -138,5 +138,5 @@
     void HsW01::muzzleflash()
     {
-        MuzzleFlash *muzzleFlash = new MuzzleFlash(this);
+        MuzzleFlash *muzzleFlash = new MuzzleFlash(this->getContext());
         this->getWeapon()->attach(muzzleFlash);
         muzzleFlash->setPosition(this->getMuzzleOffset());
Index: code/trunk/src/modules/weapons/weaponmodes/HsW01.h
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/HsW01.h	(revision 9550)
+++ code/trunk/src/modules/weapons/weaponmodes/HsW01.h	(revision 9667)
@@ -53,5 +53,5 @@
     {
         public:
-            HsW01(BaseObject* creator);
+            HsW01(Context* context);
             virtual ~HsW01();
 
Index: code/trunk/src/modules/weapons/weaponmodes/LaserFire.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/LaserFire.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/weaponmodes/LaserFire.cc	(revision 9667)
@@ -45,7 +45,7 @@
 namespace orxonox
 {
-    CreateFactory(LaserFire);
+    RegisterClass(LaserFire);
 
-    LaserFire::LaserFire(BaseObject* creator) : WeaponMode(creator)
+    LaserFire::LaserFire(Context* context) : WeaponMode(context)
     {
         RegisterObject(LaserFire);
@@ -64,5 +64,5 @@
     void LaserFire::fire()
     {
-        ParticleProjectile* projectile = new ParticleProjectile(this);
+        ParticleProjectile* projectile = new ParticleProjectile(this->getContext());
 
         projectile->setOrientation(this->getMuzzleOrientation());
Index: code/trunk/src/modules/weapons/weaponmodes/LaserFire.h
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/LaserFire.h	(revision 9550)
+++ code/trunk/src/modules/weapons/weaponmodes/LaserFire.h	(revision 9667)
@@ -51,5 +51,5 @@
     {
         public:
-            LaserFire(BaseObject* creator);
+            LaserFire(Context* context);
             virtual ~LaserFire() {}
 
Index: code/trunk/src/modules/weapons/weaponmodes/LightningGun.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/LightningGun.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/weaponmodes/LightningGun.cc	(revision 9667)
@@ -44,7 +44,7 @@
 namespace orxonox
 {
-    CreateFactory(LightningGun);
+    RegisterClass(LightningGun);
 
-    LightningGun::LightningGun(BaseObject* creator) : WeaponMode(creator)
+    LightningGun::LightningGun(Context* context) : WeaponMode(context)
     {
         RegisterObject(LightningGun);
@@ -68,5 +68,5 @@
     void LightningGun::fire()
     {
-        LightningGunProjectile* projectile = new LightningGunProjectile(this);
+        LightningGunProjectile* projectile = new LightningGunProjectile(this->getContext());
         projectile->setMaterial("Flares/LightningBall_");
 
Index: code/trunk/src/modules/weapons/weaponmodes/LightningGun.h
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/LightningGun.h	(revision 9550)
+++ code/trunk/src/modules/weapons/weaponmodes/LightningGun.h	(revision 9667)
@@ -51,5 +51,5 @@
     {
         public:
-            LightningGun(BaseObject* creator);
+            LightningGun(Context* context);
             virtual ~LightningGun();
 
Index: code/trunk/src/modules/weapons/weaponmodes/RocketFire.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/RocketFire.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/weaponmodes/RocketFire.cc	(revision 9667)
@@ -46,7 +46,7 @@
 namespace orxonox
 {
-    CreateFactory(RocketFire);
+    RegisterClass(RocketFire);
 
-    RocketFire::RocketFire(BaseObject* creator) : WeaponMode(creator)
+    RocketFire::RocketFire(Context* context) : WeaponMode(context)
     {
         RegisterObject(RocketFire);
@@ -71,5 +71,5 @@
     void RocketFire::fire()
     {
-        Rocket* rocket = new Rocket(this);
+        Rocket* rocket = new Rocket(this->getContext());
 
         this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
Index: code/trunk/src/modules/weapons/weaponmodes/RocketFire.h
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/RocketFire.h	(revision 9550)
+++ code/trunk/src/modules/weapons/weaponmodes/RocketFire.h	(revision 9667)
@@ -51,5 +51,5 @@
     {
         public:
-            RocketFire(BaseObject* creator);
+            RocketFire(Context* context);
             virtual ~RocketFire();
 
Index: code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.cc	(revision 9550)
+++ code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.cc	(revision 9667)
@@ -50,7 +50,7 @@
 {
 
-    CreateFactory(SimpleRocketFire);
+    RegisterClass(SimpleRocketFire);
 
-    SimpleRocketFire::SimpleRocketFire(BaseObject* creator) : WeaponMode(creator)
+    SimpleRocketFire::SimpleRocketFire(Context* context) : WeaponMode(context)
     {
         RegisterObject(SimpleRocketFire);
@@ -76,5 +76,5 @@
     void SimpleRocketFire::fire()
     {
-        RocketController* controller = new RocketController(this);
+        RocketController* controller = new RocketController(this->getContext());
         SimpleRocket* rocket = controller->getRocket();
         this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
Index: code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.h
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.h	(revision 9550)
+++ code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.h	(revision 9667)
@@ -50,5 +50,5 @@
     {
         public:
-            SimpleRocketFire(BaseObject* creator);
+            SimpleRocketFire(Context* context);
             virtual ~SimpleRocketFire();
             void deactivateFire();
