Index: trunk/src/util/multiplayer_team_deathmatch.cc
===================================================================
--- trunk/src/util/multiplayer_team_deathmatch.cc	(revision 9059)
+++ trunk/src/util/multiplayer_team_deathmatch.cc	(revision 9110)
@@ -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() );
@@ -537,5 +541,5 @@
       this->hideStats();
     }
-    if ( !this->statsBox && event.bPressed )
+    else if ( !this->statsBox && event.bPressed )
     {
       PRINTF(0)("show stats\n");
@@ -612,7 +616,7 @@
 {
   statsBox = new OrxGui::GLGuiBox();
-  statsBox->setAbsCoor2D( 300, 100 );
-
-  this->table = new OrxGui::GLGuiTable(5,5);
+  statsBox->setAbsCoor2D( 100, 100 );
+
+  this->table = new OrxGui::GLGuiTable(10,5);
 
   statsBox->pack( this->table );
@@ -642,54 +646,35 @@
 
   std::vector<std::string> headers;
+  headers.push_back("Blue Team");
+  headers.push_back("");
+  headers.push_back("");
   headers.push_back("Red Team");
   headers.push_back("");
-  headers.push_back("");
-  headers.push_back("Blue Team");
-  headers.push_back("");
   this->table->setHeader(headers);
 
-  std::map<int,std::string> fragsTeam0;
-  std::map<int,std::string> fragsTeam1;
-
-  const std::list<BaseObject*> * list = ClassList::getList( CL_PLAYER_STATS );
-
-  if ( !list )
-    return;
-
-  for ( std::list<BaseObject*>::const_iterator it = list->begin(); it != list->end(); it++ )
-  {
-    PlayerStats & stats = *dynamic_cast<PlayerStats*>(*it);
-
-    if ( stats.getTeamId() == 0 || stats.getTeamId() == 1 )
-    {
-      if ( stats.getTeamId() == 0 )
-        fragsTeam0[stats.getScore()] = stats.getNickName();
-      else
-        fragsTeam1[stats.getScore()] = stats.getNickName();
-    }
-  }
+  ScoreList scoreList = PlayerStats::getScoreList();
 
   char st[10];
   int i = 0;
-
-
+  
   i = 2;
-  for ( std::map<int,std::string>::const_iterator it = fragsTeam0.begin(); it != fragsTeam0.end(); it++ )
-  {
-    this->table->setEntry( 0, i, it->second );
-    snprintf( st, 10, "%d", it->first );
-    this->table->setEntry( 1, i, st );
-    this->table->setEntry( 2, i, "" );
+  for ( TeamScoreList::const_iterator it = scoreList[0].begin(); it != scoreList[0].end(); it++ )
+  {
+    this->table->setEntry( i, 0, it->name );
+    snprintf( st, 10, "%d", it->score );
+    this->table->setEntry( i, 1, st );
+    this->table->setEntry( i, 2, "" );
     i++;
   }
 
   i = 2;
-  for ( std::map<int,std::string>::const_iterator it = fragsTeam1.begin(); it != fragsTeam1.end(); it++ )
-  {
-    this->table->setEntry( 3, i, it->second );
-    snprintf( st, 10, "%d", it->first );
-    this->table->setEntry( 4, i, st );
+  for ( TeamScoreList::const_iterator it = scoreList[1].begin(); it != scoreList[1].end(); it++ )
+  {
+    this->table->setEntry( i, 3, it->name );
+    snprintf( st, 10, "%d", it->score );
+    this->table->setEntry( i, 4, st );
     i++;
   }
+
 }
 
@@ -797,2 +782,12 @@
 }
 
+std::string MultiplayerTeamDeathmatch::getPlayableModelTextureFileName( int userId, int team, ClassID classId )
+{
+  if ( classId == CL_FPS_PLAYER )
+  {
+    return "maps/doom_guy.png";
+  }
+  
+  return "";
+}
+
Index: trunk/src/util/multiplayer_team_deathmatch.h
===================================================================
--- trunk/src/util/multiplayer_team_deathmatch.h	(revision 9059)
+++ trunk/src/util/multiplayer_team_deathmatch.h	(revision 9110)
@@ -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: trunk/src/util/network_game_rules.cc
===================================================================
--- trunk/src/util/network_game_rules.cc	(revision 9059)
+++ trunk/src/util/network_game_rules.cc	(revision 9110)
@@ -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: trunk/src/util/network_game_rules.h
===================================================================
--- trunk/src/util/network_game_rules.h	(revision 9059)
+++ trunk/src/util/network_game_rules.h	(revision 9110)
@@ -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: trunk/src/util/signal_handler.h
===================================================================
--- trunk/src/util/signal_handler.h	(revision 9059)
+++ trunk/src/util/signal_handler.h	(revision 9110)
@@ -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 );
