Index: /code/branches/objecthierarchy/src/core/CoreIncludes.h
===================================================================
--- /code/branches/objecthierarchy/src/core/CoreIncludes.h	(revision 2033)
+++ /code/branches/objecthierarchy/src/core/CoreIncludes.h	(revision 2034)
@@ -112,5 +112,5 @@
 */
 #define Class(ClassName) \
-    ClassIdentifier<ClassName>::getIdentifier()
+    orxonox::ClassIdentifier<ClassName>::getIdentifier()
 
 /**
Index: /code/branches/objecthierarchy/src/network/GamestateManager.cc
===================================================================
--- /code/branches/objecthierarchy/src/network/GamestateManager.cc	(revision 2033)
+++ /code/branches/objecthierarchy/src/network/GamestateManager.cc	(revision 2034)
@@ -80,5 +80,6 @@
     // now push only the most recent gamestates we received (ignore obsolete ones)
     for(it = gamestateQueue.begin(); it!=gamestateQueue.end(); it++){
-      assert(processGamestate(it->second));
+      bool b = processGamestate(it->second);
+//      assert(b);
       delete it->second;
     }
Index: /code/branches/objecthierarchy/src/network/Synchronisable.cc
===================================================================
--- /code/branches/objecthierarchy/src/network/Synchronisable.cc	(revision 2033)
+++ /code/branches/objecthierarchy/src/network/Synchronisable.cc	(revision 2034)
@@ -63,5 +63,5 @@
   * Initializes all Variables and sets the right objectID
   */
-  Synchronisable::Synchronisable(){
+  Synchronisable::Synchronisable(orxonox::BaseObject* creator){
     RegisterRootObject(Synchronisable);
     static uint32_t idCounter=0;
@@ -71,4 +71,21 @@
     classID = (unsigned int)-1;
     syncList = new std::list<synchronisableVariable *>;
+
+    this->creatorID = OBJECTID_UNKNOWN;
+
+    searchcreatorID:
+    if (creator)
+    {
+        if (creator->isA(Class(Synchronisable)))
+        {
+            Synchronisable* synchronisable_creator = dynamic_cast<Synchronisable*>(creator);
+            this->creatorID = synchronisable_creator->getObjectID();
+        }
+        else if (creator != creator->getCreator())
+        {
+            creator = creator->getCreator();
+            goto searchcreatorID;
+        }
+    }
   }
 
@@ -134,5 +151,15 @@
     orxonox::Identifier* id = ClassByID(header->classID);
     assert(id);
-    orxonox::BaseObject *bo = id->fabricate(0); //TODO: get BaseObject* from header->creatorID here
+    orxonox::BaseObject* creator = 0;
+    if (header->creatorID != OBJECTID_UNKNOWN)
+    {
+        Synchronisable* synchronisable_creator = Synchronisable::getSynchronisable(header->creatorID);
+        if (!synchronisable_creator)
+            return 0;
+        else
+            creator = dynamic_cast<orxonox::BaseObject*>(synchronisable_creator);
+    }
+    orxonox::BaseObject *bo = id->fabricate(creator);
+    assert(bo);
     Synchronisable *no = dynamic_cast<Synchronisable *>(bo);
     assert(no);
Index: /code/branches/objecthierarchy/src/network/Synchronisable.h
===================================================================
--- /code/branches/objecthierarchy/src/network/Synchronisable.h	(revision 2033)
+++ /code/branches/objecthierarchy/src/network/Synchronisable.h	(revision 2034)
@@ -115,5 +115,5 @@
     inline unsigned int getClassID(){return classID;}
   protected:
-    Synchronisable();
+    Synchronisable(orxonox::BaseObject* creator);
     void registerVar(void *var, int size, variableType t, int mode=1, NetworkCallbackBase *cb=0);
     void setObjectMode(int mode);
Index: /code/branches/objecthierarchy/src/network/packet/Gamestate.cc
===================================================================
--- /code/branches/objecthierarchy/src/network/packet/Gamestate.cc	(revision 2033)
+++ /code/branches/objecthierarchy/src/network/packet/Gamestate.cc	(revision 2034)
@@ -158,5 +158,5 @@
     {
       s = Synchronisable::fabricate(mem, mode);
-      assert(s);
+      return false;
 //       if(!s)
 //         return false;
Index: /code/branches/objecthierarchy/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/gamestates/GSLevel.cc	(revision 2033)
+++ /code/branches/objecthierarchy/src/orxonox/gamestates/GSLevel.cc	(revision 2034)
@@ -197,5 +197,10 @@
     void GSLevel::unloadLevel()
     {
-        Loader::unload(startFile_);
+        //////////////////////////////////////////////////////////////////////////////////////////
+        // TODO // TODO // TODO // TODO // TODO // TODO // TODO // TODO // TODO // TODO // TODO //
+        //////////////////////////////////////////////////////////////////////////////////////////
+        // Loader::unload(startFile_); // TODO: REACTIVATE THIS IF LOADER::UNLOAD WORKS PROPERLY /
+        //////////////////////////////////////////////////////////////////////////////////////////
+
         delete this->startFile_;
     }
Index: /code/branches/objecthierarchy/src/orxonox/objects/Scene.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/Scene.cc	(revision 2033)
+++ /code/branches/objecthierarchy/src/orxonox/objects/Scene.cc	(revision 2034)
@@ -43,5 +43,5 @@
     CreateFactory(Scene);
 
-    Scene::Scene(BaseObject* creator) : BaseObject(creator)
+    Scene::Scene(BaseObject* creator) : BaseObject(creator), network::Synchronisable(creator)
     {
         RegisterObject(Scene);
@@ -81,5 +81,5 @@
         }
         // test test test
-        
+
         this->registerVariables();
     }
Index: /code/branches/objecthierarchy/src/orxonox/objects/Test.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/Test.cc	(revision 2033)
+++ /code/branches/objecthierarchy/src/orxonox/objects/Test.cc	(revision 2034)
@@ -36,5 +36,5 @@
 	CreateFactory ( Test );
 
-	Test::Test(BaseObject* creator) : BaseObject(creator)
+	Test::Test(BaseObject* creator) : BaseObject(creator), network::Synchronisable(creator)
 	{
 		RegisterObject ( Test );
Index: /code/branches/objecthierarchy/src/orxonox/objects/infos/Info.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/infos/Info.cc	(revision 2033)
+++ /code/branches/objecthierarchy/src/orxonox/objects/infos/Info.cc	(revision 2034)
@@ -34,5 +34,5 @@
 namespace orxonox
 {
-    Info::Info(BaseObject* creator) : BaseObject(creator)
+    Info::Info(BaseObject* creator) : BaseObject(creator), network::Synchronisable(creator)
     {
         RegisterObject(Info);
Index: /code/branches/objecthierarchy/src/orxonox/objects/worldentities/SpawnPoint.h
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/worldentities/SpawnPoint.h	(revision 2033)
+++ /code/branches/objecthierarchy/src/orxonox/objects/worldentities/SpawnPoint.h	(revision 2034)
@@ -60,5 +60,5 @@
             void spawn(ControllableEntity* entity);
 
-        public:
+        private:
             void setSpawnClassName(const std::string& name);
             inline const std::string& getSpawnClassName() const
Index: /code/branches/objecthierarchy/src/orxonox/objects/worldentities/WorldEntity.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2033)
+++ /code/branches/objecthierarchy/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2034)
@@ -48,5 +48,5 @@
     const Vector3 WorldEntity::UP    = Vector3::UNIT_Y;
 
-    WorldEntity::WorldEntity(BaseObject* creator) : BaseObject(creator)
+    WorldEntity::WorldEntity(BaseObject* creator) : BaseObject(creator), network::Synchronisable(creator)
     {
         RegisterObject(WorldEntity);
Index: /code/branches/objecthierarchy/src/util/Debug.h
===================================================================
--- /code/branches/objecthierarchy/src/util/Debug.h	(revision 2033)
+++ /code/branches/objecthierarchy/src/util/Debug.h	(revision 2034)
@@ -77,4 +77,8 @@
 }
 
+namespace orxonox
+{
+    using std::endl;
+}
 
 // DEFINE ERROR MODES
