Index: /code/branches/objecthierarchy/src/network/ClientInformation.cc
===================================================================
--- /code/branches/objecthierarchy/src/network/ClientInformation.cc	(revision 1989)
+++ /code/branches/objecthierarchy/src/network/ClientInformation.cc	(revision 1990)
@@ -59,10 +59,10 @@
 
   ClientInformation::~ClientInformation() {
-    if(this==head_)
-      head_=next();
     if(prev()!=0)
       prev()->setNext(this->next());
     if(next()!=0)
       next()->setPrev(this->prev());
+    if(this==head_)
+      head_=next();
   }
 
Index: /code/branches/objecthierarchy/src/network/GamestateClient.cc
===================================================================
--- /code/branches/objecthierarchy/src/network/GamestateClient.cc	(revision 1989)
+++ /code/branches/objecthierarchy/src/network/GamestateClient.cc	(revision 1990)
@@ -43,5 +43,5 @@
   struct _NetworkExport GameStateItem{
     packet::Gamestate *state;
-    int id;
+    unsigned int id;
   };
 
@@ -56,9 +56,9 @@
   }
 
-  bool GamestateClient::ack(int gamestateID, int clientID){
+  bool GamestateClient::ack(unsigned int gamestateID, unsigned int clientID){
     return true;
   }
 
-  bool GamestateClient::add(packet::Gamestate *gs, int clientID){
+  bool GamestateClient::add(packet::Gamestate *gs, unsigned int clientID){
     if(tempGamestate_!=NULL){
       //delete the obsolete gamestate
@@ -110,5 +110,5 @@
 
   void GamestateClient::cleanup(){
-    std::map<int, packet::Gamestate*>::iterator temp, it = gamestateMap_.begin();
+    std::map<unsigned int, packet::Gamestate*>::iterator temp, it = gamestateMap_.begin();
     while(it!=gamestateMap_.end()){
       if(it->first>=last_diff_)
@@ -123,5 +123,5 @@
 
   void GamestateClient::printGamestateMap(){
-    std::map<int, packet::Gamestate*>::iterator it;
+    std::map<unsigned int, packet::Gamestate*>::iterator it;
     COUT(4) << "gamestates: ";
     for(it=gamestateMap_.begin(); it!=gamestateMap_.end(); it++){
Index: /code/branches/objecthierarchy/src/network/GamestateClient.h
===================================================================
--- /code/branches/objecthierarchy/src/network/GamestateClient.h	(revision 1989)
+++ /code/branches/objecthierarchy/src/network/GamestateClient.h	(revision 1990)
@@ -48,5 +48,5 @@
 #include "GamestateHandler.h"
 
-#define GAMESTATEID_INITIAL -1
+const unsigned int GAMESTATEID_INITIAL=-1;
 
 namespace network
@@ -58,6 +58,6 @@
     ~GamestateClient();
 
-    bool add(packet::Gamestate *gs, int clientID);
-    bool ack(int gamestateID, int clientID);
+    bool add(packet::Gamestate *gs, unsigned int clientID);
+    bool ack(unsigned int gamestateID, unsigned int clientID);
 
     bool processGamestates();
@@ -70,7 +70,7 @@
     bool sendAck(unsigned int gamestateID);
 
-    int           last_diff_;
-    int           last_gamestate_;
-    std::map<int, packet::Gamestate *> gamestateMap_;
+    unsigned int           last_diff_;
+    unsigned int           last_gamestate_;
+    std::map<unsigned int, packet::Gamestate *> gamestateMap_;
     packet::Gamestate *tempGamestate_; // we save the received gamestates here during processQueue
     unsigned char *shipCache_;
Index: /code/branches/objecthierarchy/src/network/GamestateHandler.h
===================================================================
--- /code/branches/objecthierarchy/src/network/GamestateHandler.h	(revision 1989)
+++ /code/branches/objecthierarchy/src/network/GamestateHandler.h	(revision 1990)
@@ -41,6 +41,6 @@
 class _NetworkExport GamestateHandler{
   private:
-    virtual bool add(packet::Gamestate *gs, int clientID)=0;
-    virtual bool ack(int gamestateID, int clientID)=0;
+    virtual bool add(packet::Gamestate *gs, unsigned int clientID)=0;
+    virtual bool ack(unsigned int gamestateID, unsigned int clientID)=0;
 
     static GamestateHandler *instance_;
@@ -52,6 +52,6 @@
 
   public:
-    static bool addGamestate(packet::Gamestate *gs, int clientID){ return instance_->add(gs, clientID); }
-    static bool ackGamestate(int gamestateID, int clientID){ return instance_->ack(gamestateID, clientID); }
+    static bool addGamestate(packet::Gamestate *gs, unsigned int clientID){ return instance_->add(gs, clientID); }
+    static bool ackGamestate(unsigned int gamestateID, unsigned int clientID){ return instance_->ack(gamestateID, clientID); }
 };
 
Index: /code/branches/objecthierarchy/src/network/GamestateManager.cc
===================================================================
--- /code/branches/objecthierarchy/src/network/GamestateManager.cc	(revision 1989)
+++ /code/branches/objecthierarchy/src/network/GamestateManager.cc	(revision 1990)
@@ -65,7 +65,7 @@
   }
 
-  bool GamestateManager::add(packet::Gamestate *gs, int clientID){
+  bool GamestateManager::add(packet::Gamestate *gs, unsigned int clientID){
     assert(gs);
-    std::map<int, packet::Gamestate*>::iterator it = gamestateQueue.find(clientID);
+    std::map<unsigned int, packet::Gamestate*>::iterator it = gamestateQueue.find(clientID);
     if(it!=gamestateQueue.end()){
       // delete obsolete gamestate
@@ -77,5 +77,5 @@
 
   bool GamestateManager::processGamestates(){
-    std::map<int, packet::Gamestate*>::iterator it;
+    std::map<unsigned int, packet::Gamestate*>::iterator it;
     // now push only the most recent gamestates we received (ignore obsolete ones)
     for(it = gamestateQueue.begin(); it!=gamestateQueue.end(); it++){
@@ -126,5 +126,5 @@
   }*/
 
-  packet::Gamestate *GamestateManager::popGameState(int clientID) {
+  packet::Gamestate *GamestateManager::popGameState(unsigned int clientID) {
     //why are we searching the same client's gamestate id as we searched in
     //Server::sendGameState?
@@ -141,7 +141,7 @@
     packet::Gamestate *client=NULL;
     if(gID != GAMESTATEID_INITIAL){
-      std::map<unsigned int, std::map<int, packet::Gamestate*> >::iterator clientMap = gamestateMap_.find(clientID);
+      std::map<unsigned int, std::map<unsigned int, packet::Gamestate*> >::iterator clientMap = gamestateMap_.find(clientID);
       if(clientMap!=gamestateMap_.end()){
-        std::map<int, packet::Gamestate*>::iterator it = clientMap->second.find(gID);
+        std::map<unsigned int, packet::Gamestate*>::iterator it = clientMap->second.find(gID);
         if(it!=clientMap->second.end())
           client = it->second;
@@ -162,5 +162,5 @@
 
 
-  bool GamestateManager::ack(int gamestateID, int clientID) {
+  bool GamestateManager::ack(unsigned int gamestateID, unsigned int clientID) {
     ClientInformation *temp = ClientInformation::findClient(clientID);
     assert(temp);
@@ -172,7 +172,7 @@
     }
 
-    assert(curid<gamestateID);
+    assert(curid==(unsigned int)GAMESTATEID_INITIAL || curid<gamestateID);
     COUT(4) << "acking gamestate " << gamestateID << " for clientid: " << clientID << " curid: " << curid << std::endl;
-    std::map<int, packet::Gamestate*>::iterator it, tempit;
+    std::map<unsigned int, packet::Gamestate*>::iterator it, tempit;
     for(it = gamestateMap_[clientID].begin(); it!=gamestateMap_[clientID].end() && it->first<gamestateID; it++){
       delete it->second;
@@ -186,7 +186,7 @@
   void GamestateManager::removeClient(ClientInformation* client){
     assert(client);
-    std::map<unsigned int, std::map<int, packet::Gamestate*> >::iterator clientMap = gamestateMap_.find(client->getID());
+    std::map<unsigned int, std::map<unsigned int, packet::Gamestate*> >::iterator clientMap = gamestateMap_.find(client->getID());
     // first delete all remained gamestates
-    std::map<int, packet::Gamestate*>::iterator it;
+    std::map<unsigned int, packet::Gamestate*>::iterator it;
     for(it=clientMap->second.begin(); it!=clientMap->second.end(); it++)
       delete it->second;
Index: /code/branches/objecthierarchy/src/network/GamestateManager.h
===================================================================
--- /code/branches/objecthierarchy/src/network/GamestateManager.h	(revision 1989)
+++ /code/branches/objecthierarchy/src/network/GamestateManager.h	(revision 1990)
@@ -71,12 +71,12 @@
     ~GamestateManager();
 
-    bool add(packet::Gamestate *gs, int clientID);
+    bool add(packet::Gamestate *gs, unsigned int clientID);
     bool processGamestates();
     bool update();
-    packet::Gamestate *popGameState(int clientID);
+    packet::Gamestate *popGameState(unsigned int clientID);
 
     bool getSnapshot();
 
-    bool ack(int gamestateID, int clientID);
+    bool ack(unsigned int gamestateID, unsigned int clientID);
     void removeClient(ClientInformation *client);
     private:
@@ -84,10 +84,10 @@
     bool processGamestate(packet::Gamestate *gs);
 
-    std::map<unsigned int, std::map<int, packet::Gamestate*> > gamestateMap_;
+    std::map<unsigned int, std::map<unsigned int, packet::Gamestate*> > gamestateMap_;
     //std::map<int, packet::Gamestate*> gamestateMap; //map gsID to gamestate*
     //std::map<int, int> gamestateUsed; // save the number of clients, that use the specific gamestate
-    std::map<int, packet::Gamestate*> gamestateQueue;
+    std::map<unsigned int, packet::Gamestate*> gamestateQueue;
     packet::Gamestate *reference;
-    int id_;
+    unsigned int id_;
   };
 
Index: /code/branches/objecthierarchy/src/network/Synchronisable.cc
===================================================================
--- /code/branches/objecthierarchy/src/network/Synchronisable.cc	(revision 1989)
+++ /code/branches/objecthierarchy/src/network/Synchronisable.cc	(revision 1990)
@@ -230,9 +230,9 @@
    *             0x2: client->server (not recommended)
    *             0x3: bidirectional
-   * @return true: if !isMyTick or if everything was successfully saved
+   * @return true: if !doSync or if everything was successfully saved
    */
   bool Synchronisable::getData(uint8_t*& mem, unsigned int id, int mode){
     //if this tick is we dont synchronise, then abort now
-    if(!isMyTick(id))
+    if(!doSync(id))
       return true;
     //std::cout << "inside getData" << std::endl;
@@ -363,5 +363,5 @@
   */
   uint32_t Synchronisable::getSize(unsigned int id, int mode){
-    if(!isMyTick(id))
+    if(!doSync(id))
       return 0;
     int tsize=sizeof(synchronisableHeader);
@@ -392,5 +392,5 @@
    * @return true/false
    */
-  bool Synchronisable::isMyTick(unsigned int id){
+  bool Synchronisable::doSync(unsigned int id){
     return ( (objectMode_&state_)!=0 );
   }
Index: /code/branches/objecthierarchy/src/network/Synchronisable.h
===================================================================
--- /code/branches/objecthierarchy/src/network/Synchronisable.h	(revision 1989)
+++ /code/branches/objecthierarchy/src/network/Synchronisable.h	(revision 1990)
@@ -122,5 +122,5 @@
     bool isMyData(uint8_t* mem);
     bool doSelection(unsigned int id);
-    bool isMyTick(unsigned int id);
+    bool doSync(unsigned int id);
 
     unsigned int objectID;
Index: /code/branches/objecthierarchy/src/network/packet/Gamestate.cc
===================================================================
--- /code/branches/objecthierarchy/src/network/packet/Gamestate.cc	(revision 1989)
+++ /code/branches/objecthierarchy/src/network/packet/Gamestate.cc	(revision 1990)
@@ -268,5 +268,5 @@
   unsigned int compsize = HEADER->compsize;
   unsigned int bufsize;
-  assert(compsize<=datasize);
+//  assert(compsize<=datasize);
   bufsize = datasize;
   assert(bufsize!=0);
Index: /code/branches/objecthierarchy/src/orxonox/objects/Test.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/Test.cc	(revision 1989)
+++ /code/branches/objecthierarchy/src/orxonox/objects/Test.cc	(revision 1990)
@@ -65,13 +65,13 @@
 
         void Test::checkV1(){
-          COUT(1) << "V1 changed: " << v1 << std::endl;
+                COUT(1) << "V1 changed: " << v1 << std::endl;
         }
 
         void Test::checkV2(){
-          COUT(1) << "V2 changed: " << v2 << std::endl;
+                COUT(1) << "V2 changed: " << v2 << std::endl;
         }
 
         void Test::checkV3(){
-          COUT(1) << "V3 changed: " << v3 << std::endl;
+                COUT(1) << "V3 changed: " << v3 << std::endl;
         }
 
Index: /code/branches/objecthierarchy/src/orxonox/objects/Test.h
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/Test.h	(revision 1989)
+++ /code/branches/objecthierarchy/src/orxonox/objects/Test.h	(revision 1990)
@@ -36,5 +36,5 @@
 namespace orxonox
 {
-  class _OrxonoxExport Test: public BaseObject, virtual public network::Synchronisable
+  class _OrxonoxExport Test: public BaseObject, public network::Synchronisable
   {
     public:
@@ -60,3 +60,3 @@
 }
 
-#endif /* _PlayerInfo_H__ */
+#endif /* _Test_H__ */
