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