Index: code/trunk/src/orxonox/worldentities/BigExplosion.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/BigExplosion.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/BigExplosion.cc	(revision 9667)
@@ -41,7 +41,7 @@
 namespace orxonox
 {
-    CreateFactory(BigExplosion);
-
-    BigExplosion::BigExplosion(BaseObject* creator) : StaticEntity(creator)
+    RegisterClass(BigExplosion);
+
+    BigExplosion::BigExplosion(Context* context) : StaticEntity(context)
     {
         RegisterObject(BigExplosion);
@@ -80,8 +80,8 @@
     void BigExplosion::init()
     {
-        this->debrisEntity1_ = new MovableEntity(this);
-        this->debrisEntity2_ = new MovableEntity(this);
-        this->debrisEntity3_ = new MovableEntity(this);
-        this->debrisEntity4_ = new MovableEntity(this);
+        this->debrisEntity1_ = new MovableEntity(this->getContext());
+        this->debrisEntity2_ = new MovableEntity(this->getContext());
+        this->debrisEntity3_ = new MovableEntity(this->getContext());
+        this->debrisEntity4_ = new MovableEntity(this->getContext());
 
         this->debrisEntity1_->setSyncMode(0);
@@ -90,8 +90,8 @@
         this->debrisEntity4_->setSyncMode(0);
 
-        this->debris1_ = new Model(this);
-        this->debris2_ = new Model(this);
-        this->debris3_ = new Model(this);
-        this->debris4_ = new Model(this);
+        this->debris1_ = new Model(this->getContext());
+        this->debris2_ = new Model(this->getContext());
+        this->debris3_ = new Model(this->getContext());
+        this->debris4_ = new Model(this->getContext());
 
         this->debris1_->setSyncMode(0);
@@ -100,5 +100,5 @@
         this->debris4_->setSyncMode(0);
 
-        this->explosion_ = new StaticEntity(this);
+        this->explosion_ = new StaticEntity(this->getContext());
         this->explosion_->setSyncMode(0);
 
@@ -148,5 +148,5 @@
         this->debrisEntity4_->attach(debris4_);
 
-        ParticleSpawner* effect = new ParticleSpawner(this->getCreator());
+        ParticleSpawner* effect = new ParticleSpawner(this->getContext());
         effect->setDestroyAfterLife(true);
         effect->setSource("Orxonox/explosion2b");
@@ -154,5 +154,5 @@
         effect->setSyncMode(0);
 
-        ParticleSpawner* effect2 = new ParticleSpawner(this->getCreator());
+        ParticleSpawner* effect2 = new ParticleSpawner(this->getContext());
         effect2->setDestroyAfterLife(true);
         effect2->setSource("Orxonox/smoke6");
@@ -172,9 +172,9 @@
         for(int i=0;i<10;i++)
         {
-            Model* part1 = new Model(this);
-            Model* part2 = new Model(this);
-
-            MovableEntity* partEntity1 = new MovableEntity(this);
-            MovableEntity* partEntity2 = new MovableEntity(this);
+            Model* part1 = new Model(this->getContext());
+            Model* part2 = new Model(this->getContext());
+
+            MovableEntity* partEntity1 = new MovableEntity(this->getContext());
+            MovableEntity* partEntity2 = new MovableEntity(this->getContext());
 
             part1->setSyncMode(0);
@@ -225,10 +225,10 @@
             {
                 this->debris1_->detachOgreObject(this->debrisFire1_->getParticleSystem());
-                this->debrisFire1_->destroy();
+                delete this->debrisFire1_;
             }
             if (this->debrisSmoke1_)
             {
                 this->debris1_->detachOgreObject(this->debrisSmoke1_->getParticleSystem());
-                this->debrisSmoke1_->destroy();
+                delete this->debrisSmoke1_;
             }
 
@@ -236,10 +236,10 @@
             {
                 this->debris2_->detachOgreObject(this->debrisFire2_->getParticleSystem());
-                this->debrisFire2_->destroy();
+                delete this->debrisFire2_;
             }
             if (this->debrisSmoke2_)
             {
                 this->debris2_->detachOgreObject(this->debrisSmoke2_->getParticleSystem());
-                this->debrisSmoke2_->destroy();
+                delete this->debrisSmoke2_;
             }
 
@@ -247,10 +247,10 @@
             {
                 this->debris3_->detachOgreObject(this->debrisFire3_->getParticleSystem());
-                this->debrisFire3_->destroy();
+                delete this->debrisFire3_;
             }
             if (this->debrisSmoke3_)
             {
                 this->debris3_->detachOgreObject(this->debrisSmoke3_->getParticleSystem());
-                this->debrisSmoke3_->destroy();
+                delete this->debrisSmoke3_;
             }
 
@@ -258,10 +258,10 @@
             {
                 this->debris4_->detachOgreObject(this->debrisFire4_->getParticleSystem());
-                this->debrisFire4_->destroy();
+                delete this->debrisFire4_;
             }
             if (this->debrisSmoke4_)
             {
                 this->debris4_->detachOgreObject(this->debrisSmoke4_->getParticleSystem());
-                this->debrisSmoke4_->destroy();
+                delete this->debrisSmoke4_;
             }
         }
Index: code/trunk/src/orxonox/worldentities/BigExplosion.h
===================================================================
--- code/trunk/src/orxonox/worldentities/BigExplosion.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/BigExplosion.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
         public:
-            BigExplosion(BaseObject* creator);
+            BigExplosion(Context* context);
             virtual ~BigExplosion();
 
Index: code/trunk/src/orxonox/worldentities/CameraPosition.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/CameraPosition.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/CameraPosition.cc	(revision 9667)
@@ -35,7 +35,7 @@
 namespace orxonox
 {
-    CreateFactory(CameraPosition);
+    RegisterClass(CameraPosition);
 
-    CameraPosition::CameraPosition(BaseObject* creator) : StaticEntity(creator)
+    CameraPosition::CameraPosition(Context* context) : StaticEntity(context)
     {
         RegisterObject(CameraPosition);
Index: code/trunk/src/orxonox/worldentities/CameraPosition.h
===================================================================
--- code/trunk/src/orxonox/worldentities/CameraPosition.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/CameraPosition.h	(revision 9667)
@@ -38,5 +38,5 @@
     {
         public:
-            CameraPosition(BaseObject* creator);
+            CameraPosition(Context* context);
             virtual ~CameraPosition();
 
Index: code/trunk/src/orxonox/worldentities/ControllableEntity.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/ControllableEntity.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/ControllableEntity.cc	(revision 9667)
@@ -33,5 +33,5 @@
 
 #include "core/CoreIncludes.h"
-#include "core/ConfigValueIncludes.h"
+#include "core/config/ConfigValueIncludes.h"
 #include "core/GameMode.h"
 #include "core/XMLPort.h"
@@ -47,10 +47,10 @@
 namespace orxonox
 {
-    CreateFactory(ControllableEntity);
+    RegisterClass(ControllableEntity);
 
     registerMemberNetworkFunction( ControllableEntity, fire );
     registerMemberNetworkFunction( ControllableEntity, setTargetInternal );
 
-    ControllableEntity::ControllableEntity(BaseObject* creator) : MobileEntity(creator)
+    ControllableEntity::ControllableEntity(Context* context) : MobileEntity(context)
     {
         RegisterObject(ControllableEntity);
@@ -397,5 +397,5 @@
         if (!this->camera_ && GameMode::showsGraphics())
         {
-            this->camera_ = new Camera(this);
+            this->camera_ = new Camera(this->getContext());
             this->camera_->requestFocus();
             if (!this->cameraPositionTemplate_.empty())
@@ -423,5 +423,5 @@
             if (!this->hudtemplate_.empty())
             {
-                this->hud_ = new OverlayGroup(this);
+                this->hud_ = new OverlayGroup(this->getContext());
                 this->hud_->addTemplate(this->hudtemplate_);
                 this->hud_->setOwner(this);
Index: code/trunk/src/orxonox/worldentities/ControllableEntity.h
===================================================================
--- code/trunk/src/orxonox/worldentities/ControllableEntity.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/ControllableEntity.h	(revision 9667)
@@ -44,5 +44,5 @@
 
         public:
-            ControllableEntity(BaseObject* creator);
+            ControllableEntity(Context* context);
             virtual ~ControllableEntity();
 
Index: code/trunk/src/orxonox/worldentities/Drone.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/Drone.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/Drone.cc	(revision 9667)
@@ -34,10 +34,10 @@
 namespace orxonox
 {
-    CreateFactory(Drone);
+    RegisterClass(Drone);
     /**
     @brief
         Constructor. Registers the object and initializes some default values.
     */
-    Drone::Drone(BaseObject* creator) : Pawn(creator)
+    Drone::Drone(Context* context) : Pawn(context)
     {
         RegisterObject(Drone);
@@ -50,5 +50,5 @@
         this->setCollisionType(WorldEntity::Dynamic);
 
-        myController_ = new DroneController(static_cast<BaseObject*>(this)); //!< Creates a new controller and passes our this pointer to it as creator.
+        myController_ = new DroneController(this->getContext()); //!< Creates a new controller and passes our this pointer to it as creator.
         myController_->setDrone(this);
 
Index: code/trunk/src/orxonox/worldentities/Drone.h
===================================================================
--- code/trunk/src/orxonox/worldentities/Drone.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/Drone.h	(revision 9667)
@@ -47,5 +47,5 @@
     {
         public:
-            Drone(BaseObject* creator);
+            Drone(Context* context);
             virtual ~Drone();
 
Index: code/trunk/src/orxonox/worldentities/EffectContainer.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/EffectContainer.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/EffectContainer.cc	(revision 9667)
@@ -40,8 +40,8 @@
 namespace orxonox
 {
-    CreateFactory(EffectContainer);
+    RegisterClass(EffectContainer);
 
-    EffectContainer::EffectContainer(BaseObject* creator)
-        : BaseObject(creator)
+    EffectContainer::EffectContainer(Context* context)
+        : BaseObject(context)
         , lua_(NULL)
     {
Index: code/trunk/src/orxonox/worldentities/EffectContainer.h
===================================================================
--- code/trunk/src/orxonox/worldentities/EffectContainer.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/EffectContainer.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
         public:
-            EffectContainer(BaseObject* creator);
+            EffectContainer(Context* context);
             virtual ~EffectContainer();
 
Index: code/trunk/src/orxonox/worldentities/ExplosionChunk.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/ExplosionChunk.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/ExplosionChunk.cc	(revision 9667)
@@ -38,7 +38,7 @@
 namespace orxonox
 {
-    CreateFactory(ExplosionChunk);
+    RegisterClass(ExplosionChunk);
 
-    ExplosionChunk::ExplosionChunk(BaseObject* creator) : MovableEntity(creator)
+    ExplosionChunk::ExplosionChunk(Context* context) : MovableEntity(context)
     {
         RegisterObject(ExplosionChunk);
@@ -92,10 +92,10 @@
             {
                 this->detachOgreObject(this->fire_->getParticleSystem());
-                this->fire_->destroy();
+                delete this->fire_;
             }
             if (this->smoke_)
             {
                 this->detachOgreObject(this->smoke_->getParticleSystem());
-                this->smoke_->destroy();
+                delete this->smoke_;
             }
         }
Index: code/trunk/src/orxonox/worldentities/ExplosionChunk.h
===================================================================
--- code/trunk/src/orxonox/worldentities/ExplosionChunk.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/ExplosionChunk.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
         public:
-            ExplosionChunk(BaseObject* creator);
+            ExplosionChunk(Context* context);
             virtual ~ExplosionChunk();
 
Index: code/trunk/src/orxonox/worldentities/MobileEntity.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/MobileEntity.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/MobileEntity.cc	(revision 9667)
@@ -39,5 +39,7 @@
 namespace orxonox
 {
-    MobileEntity::MobileEntity(BaseObject* creator) : WorldEntity(creator)
+    RegisterClass(MobileEntity);
+
+    MobileEntity::MobileEntity(Context* context) : WorldEntity(context)
     {
         RegisterObject(MobileEntity);
Index: code/trunk/src/orxonox/worldentities/MobileEntity.h
===================================================================
--- code/trunk/src/orxonox/worldentities/MobileEntity.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/MobileEntity.h	(revision 9667)
@@ -41,5 +41,5 @@
     {
         public:
-            MobileEntity(BaseObject* creator);
+            MobileEntity(Context* context);
             virtual ~MobileEntity();
 
Index: code/trunk/src/orxonox/worldentities/MovableEntity.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/MovableEntity.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/MovableEntity.cc	(revision 9667)
@@ -41,7 +41,7 @@
     static const float CONTINUOUS_SYNCHRONIZATION_TIME = 10.0f;
 
-    CreateFactory(MovableEntity);
+    RegisterClass(MovableEntity);
 
-    MovableEntity::MovableEntity(BaseObject* creator) : MobileEntity(creator)
+    MovableEntity::MovableEntity(Context* context) : MobileEntity(context)
     {
         RegisterObject(MovableEntity);
Index: code/trunk/src/orxonox/worldentities/MovableEntity.h
===================================================================
--- code/trunk/src/orxonox/worldentities/MovableEntity.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/MovableEntity.h	(revision 9667)
@@ -43,5 +43,5 @@
     {
         public:
-            MovableEntity(BaseObject* creator);
+            MovableEntity(Context* context);
             virtual ~MovableEntity();
 
Index: code/trunk/src/orxonox/worldentities/SpawnPoint.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/SpawnPoint.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/SpawnPoint.cc	(revision 9667)
@@ -37,7 +37,7 @@
 namespace orxonox
 {
-    CreateFactory(SpawnPoint);
+    RegisterClass(SpawnPoint);
 
-    SpawnPoint::SpawnPoint(BaseObject* creator) : StaticEntity(creator)
+    SpawnPoint::SpawnPoint(Context* context) : StaticEntity(context)
     {
         RegisterObject(SpawnPoint);
@@ -81,5 +81,5 @@
     Pawn* SpawnPoint::spawn()
     {
-        Pawn* entity = this->spawnclass_.fabricate(this);
+        Pawn* entity = this->spawnclass_.fabricate(this->getContext());
         if (entity)
         {
Index: code/trunk/src/orxonox/worldentities/SpawnPoint.h
===================================================================
--- code/trunk/src/orxonox/worldentities/SpawnPoint.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/SpawnPoint.h	(revision 9667)
@@ -33,5 +33,5 @@
 
 #include <string>
-#include "core/SubclassIdentifier.h"
+#include "core/class/SubclassIdentifier.h"
 #include "worldentities/StaticEntity.h"
 
@@ -41,5 +41,5 @@
     {
         public:
-            SpawnPoint(BaseObject* creator);
+            SpawnPoint(Context* context);
             virtual ~SpawnPoint() {}
 
Index: code/trunk/src/orxonox/worldentities/StaticEntity.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/StaticEntity.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/StaticEntity.cc	(revision 9667)
@@ -37,7 +37,7 @@
 namespace orxonox
 {
-    CreateFactory(StaticEntity);
+    RegisterClass(StaticEntity);
 
-    StaticEntity::StaticEntity(BaseObject* creator) : WorldEntity(creator)
+    StaticEntity::StaticEntity(Context* context) : WorldEntity(context)
     {
         RegisterObject(StaticEntity);
Index: code/trunk/src/orxonox/worldentities/StaticEntity.h
===================================================================
--- code/trunk/src/orxonox/worldentities/StaticEntity.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/StaticEntity.h	(revision 9667)
@@ -39,5 +39,5 @@
     {
         public:
-            StaticEntity(BaseObject* creator);
+            StaticEntity(Context* context);
             virtual ~StaticEntity();
 
Index: code/trunk/src/orxonox/worldentities/TeamSpawnPoint.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/TeamSpawnPoint.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/TeamSpawnPoint.cc	(revision 9667)
@@ -34,7 +34,7 @@
 namespace orxonox
 {
-    CreateFactory(TeamSpawnPoint);
+    RegisterClass(TeamSpawnPoint);
 
-    TeamSpawnPoint::TeamSpawnPoint(BaseObject* creator) : SpawnPoint(creator)
+    TeamSpawnPoint::TeamSpawnPoint(Context* context) : SpawnPoint(context)
     {
         RegisterObject(TeamSpawnPoint);
Index: code/trunk/src/orxonox/worldentities/TeamSpawnPoint.h
===================================================================
--- code/trunk/src/orxonox/worldentities/TeamSpawnPoint.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/TeamSpawnPoint.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
         public:
-            TeamSpawnPoint(BaseObject* creator);
+            TeamSpawnPoint(Context* context);
             virtual ~TeamSpawnPoint() {}
 
Index: code/trunk/src/orxonox/worldentities/WorldEntity.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/WorldEntity.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/WorldEntity.cc	(revision 9667)
@@ -61,4 +61,6 @@
     BOOST_STATIC_ASSERT((int)Ogre::Node::TS_WORLD  == (int)WorldEntity::World);
 
+    RegisterAbstractClass(WorldEntity).inheritsFrom(Class(BaseObject)).inheritsFrom(Class(Synchronisable));
+
     /**
     @brief
@@ -66,5 +68,5 @@
         All the default values are being set here.
     */
-    WorldEntity::WorldEntity(BaseObject* creator) : BaseObject(creator), Synchronisable(creator)
+    WorldEntity::WorldEntity(Context* context) : BaseObject(context), Synchronisable(context)
     {
         RegisterObject(WorldEntity);
@@ -92,5 +94,6 @@
         this->bPhysicsActiveSynchronised_    = false;
         this->bPhysicsActiveBeforeAttaching_ = false;
-        this->collisionShape_ = new WorldEntityCollisionShape(this);
+        this->collisionShape_ = new WorldEntityCollisionShape(this->getContext());
+        this->collisionShape_->setWorldEntityOwner(this);
         this->collisionType_             = None;
         this->collisionTypeSynchronised_ = None;
Index: code/trunk/src/orxonox/worldentities/WorldEntity.h
===================================================================
--- code/trunk/src/orxonox/worldentities/WorldEntity.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/WorldEntity.h	(revision 9667)
@@ -90,5 +90,5 @@
 
         public:
-            WorldEntity(BaseObject* creator);
+            WorldEntity(Context* context);
             virtual ~WorldEntity();
 
Index: code/trunk/src/orxonox/worldentities/pawns/Destroyer.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Destroyer.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/pawns/Destroyer.cc	(revision 9667)
@@ -34,7 +34,7 @@
 namespace orxonox
 {
-    CreateFactory(Destroyer);
+    RegisterClass(Destroyer);
 
-    Destroyer::Destroyer(BaseObject* creator) : SpaceShip(creator)
+    Destroyer::Destroyer(Context* context) : SpaceShip(context)
     {
         RegisterObject(Destroyer);
Index: code/trunk/src/orxonox/worldentities/pawns/Destroyer.h
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Destroyer.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/pawns/Destroyer.h	(revision 9667)
@@ -39,5 +39,5 @@
     {
         public:
-            Destroyer(BaseObject* creator);
+            Destroyer(Context* context);
             virtual ~Destroyer() {};
 
Index: code/trunk/src/orxonox/worldentities/pawns/FpsPlayer.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/FpsPlayer.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/pawns/FpsPlayer.cc	(revision 9667)
@@ -38,5 +38,5 @@
 
 #include "core/CoreIncludes.h"
-#include "core/ConfigValueIncludes.h"
+#include "core/config/ConfigValueIncludes.h"
 #include "core/Template.h"
 #include "core/XMLPort.h"
@@ -53,7 +53,7 @@
     const float orientationGain_ = 100;
     const float jumpValue_ = 300;
-    CreateFactory(FpsPlayer);
-
-    FpsPlayer::FpsPlayer(BaseObject* creator) : Pawn(creator)
+    RegisterClass(FpsPlayer);
+
+    FpsPlayer::FpsPlayer(Context* context) : Pawn(context)
     {
         RegisterObject(FpsPlayer);
Index: code/trunk/src/orxonox/worldentities/pawns/FpsPlayer.h
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/FpsPlayer.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/pawns/FpsPlayer.h	(revision 9667)
@@ -43,5 +43,5 @@
     {
         public:
-            FpsPlayer(BaseObject* creator);
+            FpsPlayer(Context* context);
             virtual ~FpsPlayer();
 
Index: code/trunk/src/orxonox/worldentities/pawns/Pawn.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Pawn.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/pawns/Pawn.cc	(revision 9667)
@@ -51,9 +51,9 @@
 namespace orxonox
 {
-    CreateFactory(Pawn);
-
-    Pawn::Pawn(BaseObject* creator)
-        : ControllableEntity(creator)
-        , RadarViewable(creator, static_cast<WorldEntity*>(this))
+    RegisterClass(Pawn);
+
+    Pawn::Pawn(Context* context)
+        : ControllableEntity(context)
+        , RadarViewable(this, static_cast<WorldEntity*>(this))
     {
         RegisterObject(Pawn);
@@ -86,5 +86,5 @@
         if (GameMode::isMaster())
         {
-            this->weaponSystem_ = new WeaponSystem(this);
+            this->weaponSystem_ = new WeaponSystem(this->getContext());
             this->weaponSystem_->setPawn(this);
         }
@@ -299,5 +299,5 @@
         if (!this->spawnparticlesource_.empty())
         {
-            ParticleSpawner* effect = new ParticleSpawner(this->getCreator());
+            ParticleSpawner* effect = new ParticleSpawner(this->getContext());
             effect->setPosition(this->getPosition());
             effect->setOrientation(this->getOrientation());
@@ -365,5 +365,5 @@
         this->setDestroyWhenPlayerLeft(false);
 
-        BigExplosion* chunk = new BigExplosion(this->getCreator());
+        BigExplosion* chunk = new BigExplosion(this->getContext());
         chunk->setPosition(this->getPosition());
 
@@ -373,5 +373,5 @@
         // play death effect
         {
-            ParticleSpawner* effect = new ParticleSpawner(this->getCreator());
+            ParticleSpawner* effect = new ParticleSpawner(this->getContext());
             effect->setPosition(this->getPosition());
             effect->setOrientation(this->getOrientation());
@@ -381,5 +381,5 @@
         }
         {
-            ParticleSpawner* effect = new ParticleSpawner(this->getCreator());
+            ParticleSpawner* effect = new ParticleSpawner(this->getContext());
             effect->setPosition(this->getPosition());
             effect->setOrientation(this->getOrientation());
@@ -389,5 +389,5 @@
         }
         {
-            ParticleSpawner* effect = new ParticleSpawner(this->getCreator());
+            ParticleSpawner* effect = new ParticleSpawner(this->getContext());
             effect->setPosition(this->getPosition());
             effect->setOrientation(this->getOrientation());
@@ -398,5 +398,5 @@
         for (unsigned int i = 0; i < this->numexplosionchunks_; ++i)
         {
-            ExplosionChunk* chunk = new ExplosionChunk(this->getCreator());
+            ExplosionChunk* chunk = new ExplosionChunk(this->getContext());
             chunk->setPosition(this->getPosition());
         }
Index: code/trunk/src/orxonox/worldentities/pawns/Pawn.h
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Pawn.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/pawns/Pawn.h	(revision 9667)
@@ -45,5 +45,5 @@
 
         public:
-            Pawn(BaseObject* creator);
+            Pawn(Context* context);
             virtual ~Pawn();
 
Index: code/trunk/src/orxonox/worldentities/pawns/SpaceShip.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/SpaceShip.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/pawns/SpaceShip.cc	(revision 9667)
@@ -32,5 +32,5 @@
 
 #include "core/CoreIncludes.h"
-#include "core/ConfigValueIncludes.h"
+#include "core/config/ConfigValueIncludes.h"
 #include "core/Template.h"
 #include "core/XMLPort.h"
@@ -46,7 +46,7 @@
 namespace orxonox
 {
-    CreateFactory(SpaceShip);
-
-    SpaceShip::SpaceShip(BaseObject* creator) : Pawn(creator), boostBlur_(NULL)
+    RegisterClass(SpaceShip);
+
+    SpaceShip::SpaceShip(Context* context) : Pawn(context), boostBlur_(NULL)
     {
         RegisterObject(SpaceShip);
@@ -96,5 +96,5 @@
 
             if (this->boostBlur_)
-                this->boostBlur_->destroy();
+                delete this->boostBlur_;
         }
     }
@@ -447,5 +447,5 @@
         if (!this->bEnableMotionBlur_ && this->boostBlur_ != NULL)
         {
-            this->boostBlur_->destroy();
+            delete this->boostBlur_;
             this->boostBlur_ = NULL;
         }
Index: code/trunk/src/orxonox/worldentities/pawns/SpaceShip.h
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/SpaceShip.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/pawns/SpaceShip.h	(revision 9667)
@@ -88,5 +88,5 @@
     {
         public:
-            SpaceShip(BaseObject* creator);
+            SpaceShip(Context* context);
             virtual ~SpaceShip();
 
Index: code/trunk/src/orxonox/worldentities/pawns/Spectator.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Spectator.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/pawns/Spectator.cc	(revision 9667)
@@ -31,5 +31,5 @@
 #include "util/Convert.h"
 #include "core/CoreIncludes.h"
-#include "core/ConfigValueIncludes.h"
+#include "core/config/ConfigValueIncludes.h"
 #include "core/GameMode.h"
 #include "core/command/CommandExecutor.h"
@@ -45,7 +45,7 @@
     extern const std::string __CC_suicide_name;
 
-    CreateFactory(Spectator);
-
-    Spectator::Spectator(BaseObject* creator) : ControllableEntity(creator)
+    RegisterClass(Spectator);
+
+    Spectator::Spectator(Context* context) : ControllableEntity(context)
     {
         RegisterObject(Spectator);
Index: code/trunk/src/orxonox/worldentities/pawns/Spectator.h
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Spectator.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/pawns/Spectator.h	(revision 9667)
@@ -40,5 +40,5 @@
     {
         public:
-            Spectator(BaseObject* creator);
+            Spectator(Context* context);
             virtual ~Spectator();
 
Index: code/trunk/src/orxonox/worldentities/pawns/TeamBaseMatchBase.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/TeamBaseMatchBase.cc	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/pawns/TeamBaseMatchBase.cc	(revision 9667)
@@ -37,7 +37,7 @@
 namespace orxonox
 {
-    CreateFactory(TeamBaseMatchBase);
+    RegisterClass(TeamBaseMatchBase);
 
-    TeamBaseMatchBase::TeamBaseMatchBase(BaseObject* creator) : Pawn(creator)
+    TeamBaseMatchBase::TeamBaseMatchBase(Context* context) : Pawn(context)
     {
         RegisterObject(TeamBaseMatchBase);
Index: code/trunk/src/orxonox/worldentities/pawns/TeamBaseMatchBase.h
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/TeamBaseMatchBase.h	(revision 9666)
+++ code/trunk/src/orxonox/worldentities/pawns/TeamBaseMatchBase.h	(revision 9667)
@@ -50,5 +50,5 @@
     {
         public:
-            TeamBaseMatchBase(BaseObject* creator);
+            TeamBaseMatchBase(Context* context);
 
             // if class closes, close everything
