Index: code/branches/objecthierarchy/src/orxonox/objects/infos/HumanPlayer.cc
===================================================================
--- code/branches/objecthierarchy/src/orxonox/objects/infos/HumanPlayer.cc	(revision 2040)
+++ code/branches/objecthierarchy/src/orxonox/objects/infos/HumanPlayer.cc	(revision 2041)
@@ -55,9 +55,35 @@
         this->registerVariables();
 
-        COUT(0) << "HumanPlayer created" << std::endl;
+COUT(0) << this->getObjectID() << ": HumanPlayer created" << std::endl;
+        network::Synchronisable* temp = dynamic_cast<network::Synchronisable*>(creator);
+        if (temp)
+        {
+COUT(0) << this->getObjectID() << ": CreatorID: " << temp->getObjectID() << std::endl;
+        }
+        else
+        {
+COUT(0) << this->getObjectID() << ": Creator is no Synchronisable" << std::endl;
+        }
+    unsigned int creatorID = network::OBJECTID_UNKNOWN;
+    searchcreatorID:
+    if (creator)
+    {
+        if (creator->isA(Class(Synchronisable)))
+        {
+            Synchronisable* synchronisable_creator = dynamic_cast<Synchronisable*>(creator);
+            creatorID = synchronisable_creator->getObjectID();
+        }
+        else if (creator != creator->getCreator())
+        {
+            creator = creator->getCreator();
+            goto searchcreatorID;
+        }
+    }
+COUT(0) << this->getObjectID() << ": ### tranmitted creatorID: " << creatorID << std::endl;
     }
 
     HumanPlayer::~HumanPlayer()
     {
+COUT(0) << this->getObjectID() << ": HumanPlayer destroyed" << std::endl;
     }
 
@@ -94,6 +120,8 @@
     void HumanPlayer::networkcallback_clientIDchanged()
     {
+COUT(0) << this->getObjectID() << ": PI: clientID changed to " << this->clientID_ << std::endl;
         if (this->clientID_ == network::Host::getPlayerID())
         {
+COUT(0) << this->getObjectID() << ": PI: it's my clientID" << std::endl;
             this->bLocalPlayer_ = true;
             this->synchronize_nick_ = this->nick_;
@@ -101,5 +129,8 @@
 
             if (!Core::isMaster())
+            {
                 this->setObjectMode(network::direction::bidirectional);
+COUT(0) << this->getObjectID() << ": PI: set objectmode to bidirectional" << std::endl;
+            }
             else
                 this->setName(this->nick_);
@@ -112,10 +143,15 @@
     {
         this->client_ready_ = true;
+COUT(0) << this->getObjectID() << ": PI: server ready, client set ready too" << std::endl;
     }
 
     void HumanPlayer::networkcallback_client_ready()
     {
+COUT(0) << this->getObjectID() << ": PI: client ready" << std::endl;
         if (this->getGametype())
+        {
+COUT(0) << this->getObjectID() << ": PI: adding client to gametype" << std::endl;
             this->getGametype()->playerEntered(this);
+        }
     }
 
@@ -137,4 +173,5 @@
     void HumanPlayer::setClientID(unsigned int clientID)
     {
+COUT(0) << this->getObjectID() << ": PI: set clientID to " << clientID << std::endl;
         this->clientID_ = clientID;
         this->networkcallback_clientIDchanged();
Index: code/branches/objecthierarchy/src/orxonox/objects/infos/PlayerInfo.cc
===================================================================
--- code/branches/objecthierarchy/src/orxonox/objects/infos/PlayerInfo.cc	(revision 2040)
+++ code/branches/objecthierarchy/src/orxonox/objects/infos/PlayerInfo.cc	(revision 2041)
@@ -71,4 +71,5 @@
         REGISTERSTRING(this->name_,                 network::direction::toclient, new network::NetworkCallback<PlayerInfo>(this, &PlayerInfo::changedName));
         REGISTERDATA  (this->controllableEntityID_, network::direction::toclient, new network::NetworkCallback<PlayerInfo>(this, &PlayerInfo::networkcallback_changedcontrollableentityID));
+        REGISTERDATA  (this->bReadyToSpawn_,        network::direction::toserver);
     }
 
@@ -127,10 +128,10 @@
             this->controllableEntityID_ = network::OBJECTID_UNKNOWN;
         }
-
+COUT(0) << this->getObjectID() << ": PI: start control" << std::endl;
         if (this->controller_)
             this->controller_->setControllableEntity(entity);
     }
 
-    void PlayerInfo::stopControl(ControllableEntity* entity)
+    void PlayerInfo::stopControl(ControllableEntity* entity, bool callback)
     {
         if (entity && this->controllableEntity_ == entity)
@@ -142,5 +143,6 @@
                 this->controller_->setControllableEntity(0);
 
-            entity->removePlayer();
+            if (callback)
+                entity->removePlayer();
         }
     }
Index: code/branches/objecthierarchy/src/orxonox/objects/infos/PlayerInfo.h
===================================================================
--- code/branches/objecthierarchy/src/orxonox/objects/infos/PlayerInfo.h	(revision 2040)
+++ code/branches/objecthierarchy/src/orxonox/objects/infos/PlayerInfo.h	(revision 2041)
@@ -66,5 +66,5 @@
 
             void startControl(ControllableEntity* entity);
-            void stopControl(ControllableEntity* entity);
+            void stopControl(ControllableEntity* entity, bool callback = true);
 
             inline ControllableEntity* getControllableEntity() const
