Index: code/trunk/src/modules/pickup/CollectiblePickup.cc
===================================================================
--- code/trunk/src/modules/pickup/CollectiblePickup.cc	(revision 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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 9348)
+++ 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.
 
