Index: code/branches/network/src/network/Client.cc
===================================================================
--- code/branches/network/src/network/Client.cc	(revision 1715)
+++ code/branches/network/src/network/Client.cc	(revision 1730)
@@ -151,5 +151,5 @@
     if(client_connection.isConnected() && isSynched_){
       COUT(4) << "popping partial gamestate: " << std::endl;
-      packet::Gamestate *gs = gamestate.getGamestate();
+      /*packet::Gamestate *gs = gamestate.getGamestate();
       if(gs){
         COUT(4) << "client tick: sending gs " << gs << std::endl;
@@ -157,5 +157,5 @@
           COUT(3) << "Problem adding partial gamestate to queue" << std::endl;
         // gs gets automatically deleted by enet callback
-      }
+      }*/
     }
     ENetEvent *event;
@@ -168,5 +168,5 @@
     }
     int gameStateID = gamestate.processGamestates();
-    if(gameStateID==GAMESTATEID_INITIAL)
+    /*if(gameStateID==GAMESTATEID_INITIAL)
       if(gameStateFailure_){
         packet::Acknowledgement ack(GAMESTATEID_INITIAL, 0);
@@ -186,5 +186,5 @@
       if(!ack.send())
         COUT(3) << "could not ack gamestate" << std::endl;
-    }// otherwise we had no gamestate to load
+    }*/// otherwise we had no gamestate to load
     gamestate.cleanup();
     return;
Index: code/branches/network/src/network/GamestateManager.cc
===================================================================
--- code/branches/network/src/network/GamestateManager.cc	(revision 1715)
+++ code/branches/network/src/network/GamestateManager.cc	(revision 1730)
@@ -62,6 +62,5 @@
   bool GamestateManager::update(){
     cleanup();
-    getSnapshot();
-    return true;
+    return getSnapshot();
   }
   
Index: code/branches/network/src/network/Server.cc
===================================================================
--- code/branches/network/src/network/Server.cc	(revision 1715)
+++ code/branches/network/src/network/Server.cc	(revision 1730)
@@ -259,4 +259,5 @@
       //std::cout << "adding gamestate" << std::endl;
       gs->setClientID(cid);
+      assert(gs->compressData());
       if ( !gs->send() ){
         COUT(3) << "Server: packet with client id (cid): " << cid << " not sended: " << temp->getFailures() << std::endl; 
Index: code/branches/network/src/network/Synchronisable.cc
===================================================================
--- code/branches/network/src/network/Synchronisable.cc	(revision 1715)
+++ code/branches/network/src/network/Synchronisable.cc	(revision 1730)
@@ -90,21 +90,20 @@
   bool Synchronisable::fabricate(unsigned char*& mem, int mode)
   {
-    int size, objectID, classID;
-    size = *(int *)mem;
-    objectID = *(int*)(mem+sizeof(int));
-    classID = *(int*)(mem+2*sizeof(int));
-    
-    orxonox::Identifier* id = ID((unsigned int)classID);
+    unsigned int size, objectID, classID;
+    size = *(unsigned int *)mem;
+    objectID = *(unsigned int*)(mem+sizeof(unsigned int));
+    classID = *(unsigned int*)(mem+2*sizeof(unsigned int));
+    
+    orxonox::Identifier* id = ID(classID);
     if(!id){
       COUT(3) << "We could not identify a new object; classid: " << classID << " uint: " << (unsigned int)classID << " objectID: " << objectID << " size: " << size << std::endl;
       return false; // most probably the gamestate is corrupted
     }
-    Synchronisable *no = dynamic_cast<Synchronisable *>(id->fabricate());
-    if(!no){
-      COUT(2) << "coudl not frabricate classid: " << classID << " objectID: " << objectID << " identifier: " << id << std::endl;
-      return false;
-    }
+    orxonox::BaseObject *bo = id->fabricate();
+    Synchronisable *no = dynamic_cast<Synchronisable *>(bo);
+    assert(no);
     no->objectID=objectID;
     no->classID=classID;
+    COUT(3) << "fabricate objectID: " << no->objectID << " classID: " << no->classID << std::endl;
           // update data and create object/entity...
     if( !no->updateData(mem, mode) ){
Index: code/branches/network/src/network/packet/Gamestate.cc
===================================================================
--- code/branches/network/src/network/packet/Gamestate.cc	(revision 1715)
+++ code/branches/network/src/network/packet/Gamestate.cc	(revision 1730)
@@ -128,9 +128,9 @@
   while(mem < data_+sizeof(GamestateHeader)+HEADER->normsize){
       // extract synchronisable header
-    size = *(int *)mem;
-    objectID = *(int*)(mem+sizeof(int));
-    classID = *(int*)(mem+2*sizeof(int));
-
-    if(!it || it->objectID!=objectID){
+    size = *(unsigned int *)mem;
+    objectID = *(unsigned int*)(mem+sizeof(unsigned int));
+    classID = *(unsigned int*)(mem+2*sizeof(unsigned int));
+
+    if(!it || it->objectID!=objectID || it->classID!=classID){
         // bad luck ;)
         // delete the synchronisable (obviously seems to be deleted on the server)
@@ -141,5 +141,5 @@
         //fabricate the new synchronisable
         if(!Synchronisable::fabricate(mem, mode))
-          return false;
+          /*return false*/;
         it=orxonox::ObjectList<Synchronisable>::end();
       }
@@ -208,4 +208,6 @@
   //save new data
   data_ = ndata;
+  assert(HEADER->compressed);
+  COUT(3) << "gamestate compress normsize: " << HEADER->normsize << " compsize: " << HEADER->compsize << std::endl;
   return true;
 }
Index: code/branches/network/src/network/packet/Packet.cc
===================================================================
--- code/branches/network/src/network/packet/Packet.cc	(revision 1715)
+++ code/branches/network/src/network/packet/Packet.cc	(revision 1730)
@@ -82,4 +82,6 @@
   enetPacket_=p.enetPacket_;
   flags_=p.flags_;
+  packetDirection_ = p.packetDirection_;
+  clientID_ = p.clientID_;
   if(p.data_){
     data_ = new unsigned char[p.getSize()];
@@ -97,8 +99,8 @@
 
 bool Packet::send(){
-  /*if(packetDirection_ != ENUM::Outgoing && packetDirection_ != ENUM::Bidirectional ){
+  if(packetDirection_ != ENUM::Outgoing && packetDirection_ != ENUM::Bidirectional ){
     assert(0);
     return false;
-  }*/
+  }
   if(!enetPacket_){
     if(!data_){
Index: code/branches/network/src/orxonox/objects/SpaceShip.cc
===================================================================
--- code/branches/network/src/orxonox/objects/SpaceShip.cc	(revision 1715)
+++ code/branches/network/src/orxonox/objects/SpaceShip.cc	(revision 1730)
@@ -244,7 +244,7 @@
             this->chFarNode_->setScale(0.4, 0.4, 0.4);
         }
+        // END of testing crosshair
 
         createCamera();
-        // END of testing crosshair
     }
 
@@ -322,7 +322,11 @@
         this->setBacksync(true);
         //CameraHandler::getInstance()->requestFocus(cam_);
-        if(this->isExactlyA(Class(SpaceShip)))
+        if(this->isExactlyA(Class(SpaceShip))){
           getFocus();
-      }
+          COUT(3) << "getting focus for obj id: " << objectID << std::endl;
+        }else
+          COUT(3) << "not getting focus (not exactly spaceship) for obj id: " << objectID << std::endl;
+      }else
+        COUT(3) << "not getting focus (not my ship) for obj id: " << objectID << std::endl;
 
     }
