Index: branches/network/src/lib/network/network_game_manager.cc
===================================================================
--- branches/network/src/lib/network/network_game_manager.cc	(revision 6246)
+++ branches/network/src/lib/network/network_game_manager.cc	(revision 6250)
@@ -38,4 +38,6 @@
 NetworkGameManager::NetworkGameManager()
 {
+  PRINTF(0)("START\n");
+
   /* set the class id for the base object */
   this->setClassID(CL_ENTITY_MANAGER, "EntityManager");
@@ -204,4 +206,51 @@
 }
 
+
+/*!
+ * Checks whether this is connected to a server or a client
+ * and afterwards creates the needed entity
+ * @param classID: The ID of the class of which an entity should be created
+ */
+BaseObject* NetworkGameManager::createEntity( TiXmlElement* element)
+{
+  if ( this->isServer() )
+  {
+    if ( newUniqueID < 0 )
+    {
+      PRINTF(1)("Cannot create entity! There are no more uniqueIDs left!\n");
+      return NULL;
+    }
+    newUniqueID++;
+
+    BaseObject * b = Factory::fabricate( element );
+
+    if ( !b )
+    {
+      PRINTF(1)("Could not fabricate Object with classID %x\n", element->Value() );
+      return NULL;
+    }
+
+    if ( b->isA(CL_SYNCHRONIZEABLE) )
+    {
+      Synchronizeable * s = dynamic_cast<Synchronizeable*>(b);
+      s->setUniqueID( newUniqueID );
+      s->setOwner( 0 );
+      this->networkStream->connectSynchronizeable( *s );
+      return b;
+    }
+    else
+    {
+      PRINTF(1)("Class %s is not a synchronizeable!\n", b->getClassName() );
+      delete b;
+    }
+  }
+  else
+  {
+    PRINTF(1)("This node is not a server and cannot create id %x\n", element->Value());
+  }
+  return NULL;
+}
+
+
 /*!
  * Checks whether this is connected to a server or a client
Index: branches/network/src/lib/network/network_game_manager.h
===================================================================
--- branches/network/src/lib/network/network_game_manager.h	(revision 6246)
+++ branches/network/src/lib/network/network_game_manager.h	(revision 6250)
@@ -14,4 +14,5 @@
 
 
+class TiXmlElement;
 
 /**
@@ -72,4 +73,5 @@
 
     void createEntity( ClassID classID, int owner = 0 );
+    BaseObject* createEntity( TiXmlElement* element);
     void removeEntity( int uniqueID );
     void sendYouAre( int uniqueID, int userID );
Index: branches/network/src/lib/network/network_manager.cc
===================================================================
--- branches/network/src/lib/network/network_manager.cc	(revision 6246)
+++ branches/network/src/lib/network/network_manager.cc	(revision 6250)
@@ -44,4 +44,5 @@
   /* set the class id for the base object */
   this->setClassID(CL_NETWORK_MANAGER, "NetworkManager");
+  PRINTF(0)("START\n");
 
   /* initialize the references */
@@ -49,4 +50,5 @@
   this->syncList = NULL;
   this->tmpStream = NULL;
+
   this->hostID = -1;
   this->bGameServer = false;
@@ -107,4 +109,6 @@
 int NetworkManager::createServer(unsigned int port)
 {
+  this->hostID = 0;
+  this->bGameServer = true;
   this->tmpStream = new NetworkStream(port);
   this->bGameServer = true;
@@ -124,18 +128,4 @@
   this->tmpStream = new NetworkStream(address);
   this->tmpStream->connectSynchronizeable(sync);
-}
-
-
-/**
- *  creates a new NetworkStream of server type
- * @param sync: the listener
- */
-NetworkStream& NetworkManager::createServer(Synchronizeable& sync, unsigned int port)
-{
-  PRINTF(0)("Create a new server socket\n");
-  /* creating a new network stream, it will register itself automaticaly to the class list */
-  this->tmpStream = new NetworkStream(port);
-  this->tmpStream->connectSynchronizeable(sync);
-  this->bGameServer = true;
 }
 
@@ -178,4 +168,4 @@
 void NetworkManager::setHostID(int id)
 {
-  this->hostID = id;
+    this->hostID = id;
 }
Index: branches/network/src/lib/network/network_manager.h
===================================================================
--- branches/network/src/lib/network/network_manager.h	(revision 6246)
+++ branches/network/src/lib/network/network_manager.h	(revision 6250)
@@ -39,5 +39,4 @@
 
     NetworkStream& establishConnection(IPaddress& address, Synchronizeable& sync);
-    NetworkStream& createServer(Synchronizeable& sync, unsigned int port);
     void shutdownConnection();
 
Index: branches/network/src/lib/network/synchronizeable.cc
===================================================================
--- branches/network/src/lib/network/synchronizeable.cc	(revision 6246)
+++ branches/network/src/lib/network/synchronizeable.cc	(revision 6250)
@@ -28,7 +28,9 @@
 Synchronizeable::Synchronizeable()
 {
-
+  this->setClassID(CL_SYNCHRONIZEABLE, "Synchronizeable");
   owner = 0;
   hostID = NetworkManager::getInstance()->getHostID();
+  this->setIsServer(this->hostID == 0);
+  PRINTF(0)("sync created,id %i\n", this->hostID);
   uniqueID = -1;
   this->networkStream = NULL;
@@ -37,12 +39,4 @@
 }
 
-/**
- *  default constructor
- */
-Synchronizeable::Synchronizeable(const char* name)
-{
-  this->setName(name);
-  this->networkStream = NULL;
-}
 
 
Index: branches/network/src/lib/network/synchronizeable.h
===================================================================
--- branches/network/src/lib/network/synchronizeable.h	(revision 6246)
+++ branches/network/src/lib/network/synchronizeable.h	(revision 6250)
@@ -25,6 +25,4 @@
   {
   public:
-
-    Synchronizeable(const char* name);
     Synchronizeable();
     ~Synchronizeable();
Index: branches/network/src/story_entities/network_world.cc
===================================================================
--- branches/network/src/story_entities/network_world.cc	(revision 6246)
+++ branches/network/src/story_entities/network_world.cc	(revision 6250)
@@ -70,4 +70,5 @@
 #include "playable.h"
 #include "network_manager.h"
+#include "network_game_manager.h"
 #include "playable.h"
 
@@ -168,4 +169,5 @@
 {
   this->setClassID(CL_WORLD, "NetworkWorld");
+  PRINTF(0)("START\n");
 
   this->setName(name);
@@ -354,5 +356,5 @@
       {
 
-        BaseObject* created = Factory::fabricate(element);
+        BaseObject* created = NetworkGameManager::getInstance()->createEntity(element);
         if( created != NULL )
         {
@@ -361,4 +363,6 @@
           printf("Created a %s: %s\n", created->getClassName(), created->getName());
         }
+        else
+          PRINTF(1)("NetworkWorld: could not create this entity\n");
 
           // if we load a 'Player' we use it as localPlayer
@@ -442,13 +446,13 @@
 //   this->spawn(testEntity);
 
-  for(int i = 0; i < 100; i++)
-  {
-    WorldEntity* tmp = new NPCTest1();
-    char npcChar[10];
-    sprintf (npcChar, "NPC_%d", i);
-        tmp->setName(npcChar);
-    tmp->setAbsCoor(((float)rand()/RAND_MAX) * 5000, 50/*+ (float)rand()/RAND_MAX*20*/, ((float)rand()/RAND_MAX -.5) *30);
-    this->spawn(tmp);
-  }
+//   for(int i = 0; i < 100; i++)
+//   {
+//     WorldEntity* tmp = NetworkGameManager::;
+//     char npcChar[10];
+//     sprintf (npcChar, "NPC_%d", i);
+//         tmp->setName(npcChar);
+//     tmp->setAbsCoor(((float)rand()/RAND_MAX) * 5000, 50/*+ (float)rand()/RAND_MAX*20*/, ((float)rand()/RAND_MAX -.5) *30);
+//     this->spawn(tmp);
+//   }
 
   this->music = NULL;
Index: branches/network/src/util/loading/factory.cc
===================================================================
--- branches/network/src/util/loading/factory.cc	(revision 6246)
+++ branches/network/src/util/loading/factory.cc	(revision 6250)
@@ -155,4 +155,5 @@
 }
 
+
 /**
  * Creates a new Object of type classID
