Index: code/trunk/src/modules/weapons/MuzzleFlash.cc
===================================================================
--- code/trunk/src/modules/weapons/MuzzleFlash.cc	(revision 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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 9526)
+++ 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();
