Index: branches/network/src/lib/network/message_manager.h
===================================================================
--- branches/network/src/lib/network/message_manager.h	(revision 8023)
+++ branches/network/src/lib/network/message_manager.h	(revision 8024)
@@ -28,5 +28,6 @@
 enum MessageId 
 {
-  TESTMESSAGEID = 1
+  TESTMESSAGEID = 1,
+  MSGID_DELETESYNCHRONIZEABLE
 };
 
Index: branches/network/src/lib/network/network_game_manager.cc
===================================================================
--- branches/network/src/lib/network/network_game_manager.cc	(revision 8023)
+++ branches/network/src/lib/network/network_game_manager.cc	(revision 8024)
@@ -57,5 +57,6 @@
 
   this->setSynchronized(true);
-
+  
+  MessageManager::getInstance()->registerMessageHandler( MSGID_DELETESYNCHRONIZEABLE, delSynchronizeableHandler, NULL );
 }
 
@@ -121,6 +122,52 @@
 
 
+/**
+ * handler for remove synchronizeable messages
+ * @param messageId 
+ * @param data 
+ * @param dataLength 
+ * @param someData 
+ * @param userId 
+ * @return true on successfull handling else handler will be called again
+ */
+bool NetworkGameManager::delSynchronizeableHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId )
+{
+  if ( getInstance()->isServer() )
+  {
+    PRINTF(2)("Recieved DeleteSynchronizeable message from client %d!\n", userId);
+    return true;
+  }
+  
+  int uniqueId = 0;
+  int len = Converter::byteArrayToInt( data, &uniqueId );
+  
+  if ( len != dataLength )
+  {
+    PRINTF(2)("Recieved DeleteSynchronizeable message with incorrect size (%d) from client %d!\n", dataLength, userId);
+    return true;
+  }
+  
+  const std::list<BaseObject*> * list = ClassList::getList( CL_SYNCHRONIZEABLE );
+  
+  for ( std::list<BaseObject*>::const_iterator it = list->begin(); it != list->end(); it++ )
+  {
+    if ( dynamic_cast<Synchronizeable*>(*it)->getUniqueID() == uniqueId )
+    {
+      delete dynamic_cast<Synchronizeable*>(*it);
+      return true;
+    }
+  }
+}
+
+/**
+ * removes synchronizeable (also on clients)
+ * @param uniqueId uniqueid to delete
+ */
+void NetworkGameManager::removeSynchronizeable( int uniqueId )
+{
+}
 
 
 
 
+
Index: branches/network/src/lib/network/network_game_manager.h
===================================================================
--- branches/network/src/lib/network/network_game_manager.h	(revision 8023)
+++ branches/network/src/lib/network/network_game_manager.h	(revision 8024)
@@ -52,6 +52,8 @@
 
 
-    bool signalNewPlayer(int userId);
-    bool signalLeftPlayer(int userID);
+    bool signalNewPlayer( int userId );
+    bool signalLeftPlayer( int userID );
+    
+    void removeSynchronizeable( int uniqueId );
 
 
@@ -59,5 +61,5 @@
     NetworkGameManager();
     
-    static bool youAreHandler(MessageId messageId, byte * data, int dataLength, void * someData, int userId );
+    static bool delSynchronizeableHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId );
 
     static NetworkGameManager*    singletonRef;
Index: branches/network/src/util/network_game_rules.cc
===================================================================
--- branches/network/src/util/network_game_rules.cc	(revision 8024)
+++ branches/network/src/util/network_game_rules.cc	(revision 8024)
@@ -0,0 +1,54 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+### File Specific:
+   main-programmer: ...
+   co-programmer: ...
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+
+#include "network_game_rules.h"
+
+using namespace std;
+
+
+/**
+ * standard constructor
+ */
+NetworkGameRules::NetworkGameRules ( const TiXmlElement* root )
+  : GameRules( root )
+{
+  this->setClassID( CL_NETWORK_GAME_RULES, "NetworkGameRules");
+}
+
+
+/**
+ * standard deconstructor
+ */
+NetworkGameRules::~NetworkGameRules ()
+{
+}
+
+std::string NetworkGameRules::getPlayableModelFileName( int team, ClassID classId )
+{
+  return "models/ships/reap_#.obj";
+}
+
+ClassID NetworkGameRules::getPlayableClassId( int team )
+{
+  return CL_SPACE_SHIP;
+}
+
+int NetworkGameRules::getTeamForNewUser( )
+{
+  return 0;
+}
+
Index: branches/network/src/util/network_game_rules.h
===================================================================
--- branches/network/src/util/network_game_rules.h	(revision 8024)
+++ branches/network/src/util/network_game_rules.h	(revision 8024)
@@ -0,0 +1,33 @@
+/*!
+ * @file network_game_rules.h
+ * @brief Definition of NetworkGameRules
+ */
+
+#ifndef _NETWORK_GAME_RULES_H
+#define _NETWORK_GAME_RULES_H
+
+#include "game_rules.h"
+
+#include "player_stats.h"
+
+class TiXmlElement;
+
+class NetworkGameRules : public GameRules
+{
+
+  public:
+    NetworkGameRules( const TiXmlElement* root );
+    virtual ~NetworkGameRules();
+    
+    int getTeamForNewUser();
+    ClassID getPlayableClassId( int team );
+    std::string getPlayableModelFileName( int team, ClassID classId );
+    
+    PlayerStats * getNewPlayerStats( int userId ){ return new PlayerStats( userId ); }
+
+
+  private:
+
+};
+
+#endif /* _NETWORK_GAME_RULES_H */
Index: branches/network/src/util/signal_handler.cc
===================================================================
--- branches/network/src/util/signal_handler.cc	(revision 8023)
+++ branches/network/src/util/signal_handler.cc	(revision 8024)
@@ -81,10 +81,10 @@
   assert( pid != -1 );
 
+
   if ( pid == 0 )
   {
     getInstance()->dontCatch();
-
+    
     sleep(2);
-
 
     return;
@@ -92,4 +92,5 @@
   else
   {
+    getInstance()->dontCatch();
     if ( getInstance()->type == GDB_RUN_WRITE_TO_FILE && fork() == 0 )
     {
