Index: /branches/presentation/src/lib/network/network_game_manager.cc
===================================================================
--- /branches/presentation/src/lib/network/network_game_manager.cc	(revision 9067)
+++ /branches/presentation/src/lib/network/network_game_manager.cc	(revision 9068)
@@ -98,4 +98,5 @@
   ClassID playableClassId = rules.getPlayableClassId( userId, team );
   std::string playableModel = rules.getPlayableModelFileName( userId, team, playableClassId );
+  std::string playableTexture = rules.getPlayableModelFileName( userId, team, playableClassId );
   
   BaseObject * bo = Factory::fabricate( playableClassId );
@@ -106,5 +107,7 @@
   Playable & playable = *(dynamic_cast<Playable*>(bo));
   
-  if (  playableModel != "" )
+  if ( playableTexture != "" )
+    playable.loadMD2Texture( playableTexture );
+  if ( playableModel != "" )
     playable.loadModel( playableModel );
   playable.setOwner( userId );
Index: /branches/presentation/src/lib/network/shared_network_data.cc
===================================================================
--- /branches/presentation/src/lib/network/shared_network_data.cc	(revision 9067)
+++ /branches/presentation/src/lib/network/shared_network_data.cc	(revision 9068)
@@ -44,3 +44,5 @@
  */
 SharedNetworkData::~SharedNetworkData()
-{}
+{
+  SharedNetworkData::singletonRef = NULL;
+}
Index: /branches/presentation/src/lib/util/loading/game_loader.cc
===================================================================
--- /branches/presentation/src/lib/util/loading/game_loader.cc	(revision 9067)
+++ /branches/presentation/src/lib/util/loading/game_loader.cc	(revision 9068)
@@ -57,4 +57,6 @@
     delete this->currentCampaign;
   this->currentCampaign = NULL;
+  
+  GameLoader::singletonRef = NULL;
 }
 
Index: /branches/presentation/src/subprojects/framework.cc
===================================================================
--- /branches/presentation/src/subprojects/framework.cc	(revision 9067)
+++ /branches/presentation/src/subprojects/framework.cc	(revision 9068)
@@ -317,4 +317,5 @@
   delete GraphicsEngine::getInstance();
 
+  Framework::singletonRef = NULL;
 }
 
Index: /branches/presentation/src/util/multiplayer_team_deathmatch.cc
===================================================================
--- /branches/presentation/src/util/multiplayer_team_deathmatch.cc	(revision 9067)
+++ /branches/presentation/src/util/multiplayer_team_deathmatch.cc	(revision 9068)
@@ -455,4 +455,5 @@
   ClassID playableClassId = getPlayableClassId( userId, stats.getPreferedTeamId() );
   std::string playableModel = getPlayableModelFileName( userId, stats.getPreferedTeamId(), playableClassId );
+  std::string playableTexture = getPlayableModelTextureFileName( userId, stats.getPreferedTeamId(), playableClassId );
 
   BaseObject * bo = Factory::fabricate( playableClassId );
@@ -463,5 +464,8 @@
   Playable & playable = *(dynamic_cast<Playable*>(bo));
 
-  playable.loadModel( playableModel );
+  if ( playableTexture != "" )
+    playable.loadMD2Texture( playableTexture );
+  if ( playableModel != "" )
+    playable.loadModel( playableModel );
   playable.setOwner( userId );
   playable.setUniqueID( SharedNetworkData::getInstance()->getNewUniqueID() );
@@ -797,2 +801,12 @@
 }
 
+std::string MultiplayerTeamDeathmatch::getPlayableModelTextureFileName( int userId, int team, ClassID classId )
+{
+  if ( classId == CL_FPS_PLAYER )
+  {
+    return "maps/doom_guy.png";
+  }
+  
+  return "";
+}
+
Index: /branches/presentation/src/util/multiplayer_team_deathmatch.h
===================================================================
--- /branches/presentation/src/util/multiplayer_team_deathmatch.h	(revision 9067)
+++ /branches/presentation/src/util/multiplayer_team_deathmatch.h	(revision 9068)
@@ -39,4 +39,5 @@
     virtual int getTeamForNewUser();
     virtual ClassID getPlayableClassId( int userId, int team );
+    virtual std::string getPlayableModelTextureFileName( int userId, int team, ClassID classId );
     virtual std::string getPlayableModelFileName( int userId, int team, ClassID classId );
 
Index: /branches/presentation/src/util/network_game_rules.cc
===================================================================
--- /branches/presentation/src/util/network_game_rules.cc	(revision 9067)
+++ /branches/presentation/src/util/network_game_rules.cc	(revision 9068)
@@ -40,4 +40,10 @@
 }
 
+
+std::string NetworkGameRules::getPlayableModelTextureFileName( int userId, int team, ClassID classId )
+{
+  return "";
+}
+
 std::string NetworkGameRules::getPlayableModelFileName( int uesrId, int team, ClassID classId )
 {
Index: /branches/presentation/src/util/network_game_rules.h
===================================================================
--- /branches/presentation/src/util/network_game_rules.h	(revision 9067)
+++ /branches/presentation/src/util/network_game_rules.h	(revision 9068)
@@ -23,4 +23,5 @@
     virtual ClassID getPlayableClassId( int userId, int team );
     virtual std::string getPlayableModelFileName( int userId, int team, ClassID classId );
+    virtual std::string getPlayableModelTextureFileName( int userId, int team, ClassID classId );
     
     virtual PlayerStats * getNewPlayerStats( int userId ){ return new PlayerStats( userId ); }
Index: /branches/presentation/src/util/signal_handler.h
===================================================================
--- /branches/presentation/src/util/signal_handler.h	(revision 9067)
+++ /branches/presentation/src/util/signal_handler.h	(revision 9068)
@@ -44,4 +44,5 @@
   public:
     inline static SignalHandler* getInstance() { if (!SignalHandler::singletonRef) SignalHandler::singletonRef = new SignalHandler(); return SignalHandler::singletonRef; }
+    ~SignalHandler(){ SignalHandler::singletonRef = NULL; }
 
     void registerCallback( SignalCallback cb, void * someData );
Index: /branches/presentation/src/world_entities/world_entity.cc
===================================================================
--- /branches/presentation/src/world_entities/world_entity.cc	(revision 9067)
+++ /branches/presentation/src/world_entities/world_entity.cc	(revision 9068)
@@ -85,8 +85,12 @@
 
   this->toList(OM_NULL);
-
+  
+  registerVar( new SynchronizeableString( &this->md2TextureFileName, &this->md2TextureFileName, "md2TextureFileName" ) );
   modelFileName_handle = registerVarId( new SynchronizeableString( &modelFileName, &modelFileName, "modelFileName" ) );
   scaling_handle = registerVarId( new SynchronizeableFloat( &scaling, &scaling, "scaling" ) );
   list_handle = registerVarId( new SynchronizeableInt( (int*)&objectListNumber, &list_write, "list" ) );
+  
+  health_handle = registerVarId( new SynchronizeableFloat( &this->health, &this->health_write, "health" ) );
+  healthMax_handle = registerVarId( new SynchronizeableFloat( &this->healthMax, &this->healthMax_write, "maxHealth" ) );
 }
 
@@ -837,4 +841,14 @@
     this->toList( (OM_LIST)list_write );
   }
+  
+  if ( std::find( id.begin(), id.end(), health_handle ) != id.end() )
+  {
+    this->setHealth( health_write );
+  }
+  
+  if ( std::find( id.begin(), id.end(), healthMax_handle ) != id.end() )
+  {
+    this->setHealthMax( healthMax_write );
+  }
 
   PNode::varChangeHandler( id );
Index: /branches/presentation/src/world_entities/world_entity.h
===================================================================
--- /branches/presentation/src/world_entities/world_entity.h	(revision 9067)
+++ /branches/presentation/src/world_entities/world_entity.h	(revision 9068)
@@ -198,4 +198,10 @@
   int                     list_write;                      //!< entity's list
   int                     list_handle;                     //!< handle for list changes
+  
+  float                   health_write;
+  int                     health_handle;
+  
+  float                   healthMax_write;
+  int                     healthMax_handle;
 
   CollisionHandle*        collisionHandles[CREngine::CR_NUMBER];  //!< the list of the collision reactions
