Index: trunk/src/util/Makefile.am
===================================================================
--- trunk/src/util/Makefile.am	(revision 9240)
+++ trunk/src/util/Makefile.am	(revision 9406)
@@ -14,4 +14,6 @@
 			singleplayer_shootemup.cc \
 			\
+			\
+			\
 			mission_goal.cc\
 			kill_target.cc\
@@ -24,5 +26,7 @@
 			animation/animation_player.cc \
 			\
-			track/pilot_node.cc
+			track/pilot_node.cc \
+			\
+			network_stats_widget.cc
 
 #			track/track_manager.cc \
@@ -50,5 +54,8 @@
 			animation/t_animation.h \
 			\
-			track/pilot_node.h
+			track/pilot_node.h \
+			\
+			network_stats_widget.h
+
 
 #			track/track_manager.h \
Index: trunk/src/util/animation/animation3d.cc
===================================================================
--- trunk/src/util/animation/animation3d.cc	(revision 9240)
+++ trunk/src/util/animation/animation3d.cc	(revision 9406)
@@ -25,5 +25,5 @@
 #include "p_node.h"
 
-using namespace std;
+
 
 /**
Index: trunk/src/util/animation/animation_player.cc
===================================================================
--- trunk/src/util/animation/animation_player.cc	(revision 9240)
+++ trunk/src/util/animation/animation_player.cc	(revision 9406)
@@ -20,5 +20,5 @@
 #include "compiler.h"
 
-using namespace std;
+
 
 
@@ -100,5 +100,5 @@
   {
       // iterate through all the animations and tick them.
-    list<Animation*>::iterator anim;
+    std::list<Animation*>::iterator anim;
     for (anim = this->animationList.begin(); anim != this->animationList.end(); anim++)
     {
@@ -135,5 +135,5 @@
 Animation* AnimationPlayer::getAnimationFromBaseObject(const BaseObject* baseObject) const
 {
-  list<Animation*>::const_iterator anim;
+  std::list<Animation*>::const_iterator anim;
   for (anim = this->animationList.begin(); anim != this->animationList.end(); anim++)
     if((*anim)->getBaseObject() == baseObject)
@@ -156,5 +156,5 @@
   PRINT(0)("-Animation Information---------------+\n");
   // Per ANIMATION DEBUG
-  list<Animation*>::iterator anim;
+  std::list<Animation*>::iterator anim;
   for (anim = this->animationList.begin(); anim != this->animationList.end(); anim++)
     {
Index: trunk/src/util/fast_factory.cc
===================================================================
--- trunk/src/util/fast_factory.cc	(revision 9240)
+++ trunk/src/util/fast_factory.cc	(revision 9406)
@@ -21,5 +21,5 @@
 #include <string.h>
 
-using namespace std;
+
 
 /**
@@ -79,5 +79,5 @@
 void FastFactory::registerFastFactory(FastFactory* fastFactory)
 {
-  PRINTF(4)("Registered FastFactory for '%s'\n", fastFactory->getName());
+  PRINTF(4)("Registered FastFactory for '%s'\n", fastFactory->getCName());
 
   if( FastFactory::first == NULL)
@@ -128,5 +128,5 @@
     while (tmpFac != NULL)
     {
-      if (fastFactoryName == tmpFac->getName())
+      if (fastFactoryName == tmpFac->getCName())
         return tmpFac;
       tmpFac = tmpFac->next;
@@ -145,5 +145,5 @@
   while (tmpFac != NULL)
   {
-    PRINTF(4)("DELETEING ALL OF %s\n",tmpFac->getName());
+    PRINTF(4)("DELETEING ALL OF %s\n",tmpFac->getCName());
     tmpFac->flush(hardFLUSH);
     tmpFac = tmpFac->next;
@@ -188,5 +188,5 @@
 /*  if (this->storedDeadObjects + this->storedLivingObjects >= count)
   {
-  PRINTF(3)("not creating new Objects for class %s, because the requested count already exists\n", this->getClassName());
+  PRINTF(3)("not creating new Objects for class %s, because the requested count already exists\n", this->getClassCName());
 }*/
   for (unsigned int i = this->storedDeadObjects; i < count; i++)
@@ -202,10 +202,10 @@
 BaseObject* FastFactory::resurrect()
 {
-  PRINTF(4)("Resurecting Object of type %s\n", this->getName());
+  PRINTF(4)("Resurecting Object of type %s\n", this->getCName());
   if (unlikely(this->deadList == NULL))
   {
     PRINTF(3)("The deadList of Class %s is empty, this may be either because it has not been filled yet, or the cache is to small.\n" \
         "  Developer: try increasing the count with FastFactory::prepare(contHigher than actual)\n" \
-        "    Fabricating a new %s\n", this->getName(), this->getName());
+        "    Fabricating a new %s\n", this->getCName(), this->getCName());
     this->fabricate();
     return this->resurrect();
Index: trunk/src/util/game_rules.cc
===================================================================
--- trunk/src/util/game_rules.cc	(revision 9240)
+++ trunk/src/util/game_rules.cc	(revision 9406)
@@ -27,5 +27,5 @@
 
 
-using namespace std;
+
 
 
@@ -50,5 +50,4 @@
   BaseObject::loadParams(root);
 
-  PRINTF(0)("GameRules::loadParams(...) hit me\n");
   LoadParamXML(root, "MissionGoal", this, GameRules, loadMissionGoal)
       .describe("an XML-Element to load the missions from");
@@ -59,5 +58,5 @@
 void GameRules::loadMissionGoal(const TiXmlElement* root)
 {
-  PRINTF(0)("Trying to load MissionGoals\n");
+  PRINTF(4)("Trying to load MissionGoals\n");
   const TiXmlElement* element = root->FirstChildElement();
   while( element != NULL)
@@ -88,8 +87,8 @@
 void GameRules::registerKill(const Kill& kill)
 {
-  if ( !SharedNetworkData::getInstance()->isGameServer() )
+  if ( SharedNetworkData::getInstance()->isClient() )
     return;
 
-  PRINTF(0)("Received Event: Kill\n");
+  PRINTF(4)("Received Event: Kill\n");
 
   this->killList.push_back( kill );
Index: trunk/src/util/hud.cc
===================================================================
--- trunk/src/util/hud.cc	(revision 9240)
+++ trunk/src/util/hud.cc	(revision 9406)
@@ -155,5 +155,5 @@
       if (weapon != NULL)
       {
-        //PRINTF(0)("WEAPON %s::%s in Slots\n", weapon->getClassName(), weapon->getName());
+        //PRINTF(0)("WEAPON %s::%s in Slots\n", weapon->getClassCName(), weapon->getName());
         weapon->getEnergyWidget()->show();
         weapon->getEnergyWidget()->setBackgroundColor(Color(.8,.2,.11, 0.1));
@@ -215,5 +215,5 @@
     (*weaponWidget)->setWidgetSize(.02*this->resX, .1 *this->resY);
     (*weaponWidget)->show();
-    //printf("update thing %s::%s\n", (*weaponWidget)->getClassName(), (*weaponWidget)->getName());
+    //printf("update thing %s::%s\n", (*weaponWidget)->getClassCName(), (*weaponWidget)->getName());
   }
 }
Index: trunk/src/util/kill.cc
===================================================================
--- trunk/src/util/kill.cc	(revision 9240)
+++ trunk/src/util/kill.cc	(revision 9406)
@@ -19,5 +19,5 @@
 #include "world_entity.h"
 
-using namespace std;
 
 
+
Index: trunk/src/util/kill_target.cc
===================================================================
--- trunk/src/util/kill_target.cc	(revision 9240)
+++ trunk/src/util/kill_target.cc	(revision 9406)
@@ -21,5 +21,5 @@
 #include "util/loading/load_param.h"
 
-using namespace std;
+
 
 CREATE_FACTORY(KillTarget, CL_KILL_TARGET);
@@ -56,4 +56,7 @@
 
 
-MissionState KillTarget::checkMissionGoal(float dt) {}
+MissionState KillTarget::checkMissionGoal(float dt)
+{
 
+}
+
Index: trunk/src/util/mission_goal.cc
===================================================================
--- trunk/src/util/mission_goal.cc	(revision 9240)
+++ trunk/src/util/mission_goal.cc	(revision 9406)
@@ -22,5 +22,5 @@
 #include "util/loading/load_param.h"
 
-using namespace std;
+
 
 
Index: trunk/src/util/multiplayer_team_deathmatch.cc
===================================================================
--- trunk/src/util/multiplayer_team_deathmatch.cc	(revision 9240)
+++ trunk/src/util/multiplayer_team_deathmatch.cc	(revision 9406)
@@ -49,5 +49,5 @@
 
 
-using namespace std;
+
 
 
@@ -87,5 +87,5 @@
   this->input = new OrxGui::GLGuiInputLine();
   this->input->setAbsCoor2D(180, 5);
-  this->input->connect(SIGNAL(input, enterPushed), this, SLOT(MultiplayerTeamDeathmatch, onInputEnter));
+  this->input->enterPushed.connect(this, &MultiplayerTeamDeathmatch::onInputEnter);
 }
 
@@ -154,17 +154,17 @@
       OrxGui::GLGuiPushButton * buttonSpectator = new OrxGui::GLGuiPushButton("Spectator");
       box->pack( buttonSpectator );
-      buttonSpectator->connect(SIGNAL(buttonSpectator, released), this, SLOT(MultiplayerTeamDeathmatch, onButtonSpectator));
+      buttonSpectator->released.connect(this, &MultiplayerTeamDeathmatch::onButtonSpectator);
 
       OrxGui::GLGuiPushButton * buttonRandom = new OrxGui::GLGuiPushButton("Random");
       box->pack( buttonRandom );
-      buttonRandom->connect(SIGNAL(buttonRandom, released), this, SLOT(MultiplayerTeamDeathmatch, onButtonRandom));
+      buttonRandom->released.connect(this, &MultiplayerTeamDeathmatch::onButtonRandom);
 
       OrxGui::GLGuiPushButton * buttonTeam0 = new OrxGui::GLGuiPushButton("Blue Team");
       box->pack( buttonTeam0 );
-      buttonTeam0->connect(SIGNAL(buttonTeam0, released), this, SLOT(MultiplayerTeamDeathmatch, onButtonTeam0));
+      buttonTeam0->released.connect(this, &MultiplayerTeamDeathmatch::onButtonTeam0);
 
       OrxGui::GLGuiPushButton * buttonTeam1 = new OrxGui::GLGuiPushButton("Red Team");
       box->pack( buttonTeam1 );
-      buttonTeam1->connect(SIGNAL(buttonTeam1, released), this, SLOT(MultiplayerTeamDeathmatch, onButtonTeam1));
+      buttonTeam1->released.connect(this, &MultiplayerTeamDeathmatch::onButtonTeam1);
 
       if ( bShowTeamChange )
@@ -172,10 +172,10 @@
         OrxGui::GLGuiPushButton * buttonCancel = new OrxGui::GLGuiPushButton("Cancel");
         box->pack( buttonCancel );
-        buttonCancel->connect(SIGNAL(buttonCancel, released), this, SLOT(MultiplayerTeamDeathmatch, onButtonCancel));
+        buttonCancel->released.connect(this, &MultiplayerTeamDeathmatch::onButtonCancel);
       }
 
       OrxGui::GLGuiPushButton * buttonExit = new OrxGui::GLGuiPushButton("Exit");
       box->pack( buttonExit );
-      buttonExit->connect(SIGNAL(buttonExit, released), this, SLOT(MultiplayerTeamDeathmatch, onButtonExit));
+      buttonExit->released.connect(this, &MultiplayerTeamDeathmatch::onButtonExit);
 
       box->showAll();
@@ -204,5 +204,5 @@
   assignPlayable();
 
-  if ( !SharedNetworkData::getInstance()->isGameServer() )
+  if ( SharedNetworkData::getInstance()->isClient() )
     return;
 
@@ -214,5 +214,5 @@
     this->killList.erase( this->killList.begin() );
   }
-  
+
 
 
@@ -268,5 +268,5 @@
 void MultiplayerTeamDeathmatch::checkGameRules()
 {
-  if ( !SharedNetworkData::getInstance()->isGameServer() )
+  if ( SharedNetworkData::getInstance()->isClient() )
     return;
 
@@ -320,5 +320,5 @@
       return "maps/male_fiend.pcx";
   }
-  
+
   return "";
 }
@@ -330,5 +330,5 @@
     return 10.0f;
   }
-  
+
   return 1.0f;
 }
@@ -680,5 +680,5 @@
   char st[10];
   int i = 0;
-  
+
   i = 2;
   for ( TeamScoreList::const_iterator it = scoreList[0].begin(); it != scoreList[0].end(); it++ )
@@ -719,13 +719,13 @@
     return;
   }
-  
+
   int killerUserId = killer->getOwner();
   int victimUserId = victim->getOwner();
-  
-  PRINTF(0)("%d %d %x %x %s %s\n", killerUserId, victimUserId, killer, victim, killer->getClassName(), victim->getClassName());
+
+  PRINTF(0)("%d %d %x %x %s %s\n", killerUserId, victimUserId, killer, victim, killer->getClassCName(), victim->getClassCName());
 
   PlayerStats & victimStats = *PlayerStats::getStats( victimUserId );
   PlayerStats & killerStats = *PlayerStats::getStats( killerUserId );
-  
+
   if ( killerStats.getPlayable() != killer || victimStats.getPlayable() != victim )
   {
Index: trunk/src/util/network_game_rules.cc
===================================================================
--- trunk/src/util/network_game_rules.cc	(revision 9240)
+++ trunk/src/util/network_game_rules.cc	(revision 9406)
@@ -20,5 +20,5 @@
 #include "network_game_manager.h"
 
-using namespace std;
+
 
 
Index: trunk/src/util/network_stats_widget.cc
===================================================================
--- trunk/src/util/network_stats_widget.cc	(revision 9406)
+++ trunk/src/util/network_stats_widget.cc	(revision 9406)
@@ -0,0 +1,210 @@
+/*
+   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: Benjamin Grauer
+   co-programmer: ...
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+
+#include "network_stats_widget.h"
+
+#include "multi_type.h"
+
+namespace OrxGui
+{
+  HostWidget::HostWidget(const std::string& name, const IP& ip)
+      : GLGuiBox(Horizontal)
+  {
+    this->setName(name);
+    this->setIP(ip);
+
+    this->pack(&this->_name);
+    this->pack(&this->_ip);
+  }
+
+  void HostWidget::showing()
+  {
+    this->_name.show();
+    this->_ip.show();
+  }
+
+  void HostWidget::hiding()
+  {
+    this->_name.hide();
+    this->_ip.hide();
+  }
+
+
+
+  //======================================================//
+
+
+  ProxyWidget::ProxyWidget(const std::string& proxyName, const IP& ip)
+  : _proxyWidget(proxyName, ip)
+  {
+    this->_clientNameWidth = 100.0f;
+    this->pack(&_proxyWidget);
+  }
+
+  void ProxyWidget::addClient(const std::string& name, const IP& ip)
+  {
+    HostWidget* newClient = new HostWidget(name, ip);
+    newClient->setNameWidth(this->_clientNameWidth);
+
+    this->pack(newClient);
+
+    if (this->isVisible())
+      newClient->show();
+  }
+
+  bool ProxyWidget::removeClient(const IP& ip)
+  {
+    std::vector<HostWidget*>::iterator rmIt;
+    for(rmIt = this->_clients.begin(); rmIt != this->_clients.end(); ++rmIt)
+    {
+      if (*(*rmIt) == ip)
+      {
+        delete (*rmIt);
+        this->_clients.erase(rmIt);
+        return true;
+      }
+    }
+    return false;
+  }
+
+  bool ProxyWidget::removeClient(const std::string& name)
+  {
+    std::vector<HostWidget*>::iterator rmIt;
+    for(rmIt = this->_clients.begin(); rmIt != this->_clients.end(); ++rmIt)
+    {
+      if (*(*rmIt) == name)
+      {
+        delete (*rmIt);
+        this->_clients.erase(rmIt);
+        return true;
+      }
+    }
+    return false;
+
+  }
+
+  bool ProxyWidget::removeClient(const std::string& name, const IP& ip)
+  {
+    std::vector<HostWidget*>::iterator rmIt;
+    for(rmIt = this->_clients.begin(); rmIt != this->_clients.end(); ++rmIt)
+    {
+      if (*(*rmIt) == ip && *(*rmIt) == name)
+      {
+        delete (*rmIt);
+        this->_clients.erase(rmIt);
+        return true;
+      }
+    }
+    return false;
+  }
+
+
+  void ProxyWidget::setClientNameWidths(float width)
+  {
+    this->_clientNameWidth = width;
+    for (unsigned int i = 0; i < this->_clients.size(); ++i)
+      this->_clients[i]->setNameWidth(width);
+  }
+
+  void ProxyWidget::hiding()
+  {
+    this->_proxyWidget.hide();
+    for (unsigned int i = 0; i < this->_clients.size(); ++i)
+      this->_clients[i]->hide();
+  }
+
+  void ProxyWidget::showing()
+  {
+    this->_proxyWidget.show();
+    for (unsigned int i = 0; i < this->_clients.size(); ++i)
+      this->_clients[i]->show();
+  }
+
+
+  //======================================================//
+
+
+
+  /**
+   * @brief standard constructor
+   */
+  NetworkStatsWidget::NetworkStatsWidget ()
+  : GLGuiBox(Vertical), _thisHost("myName", IP(127, 0, 0 , 0))
+  {
+    //   this->setClassID(CL_PROTO_ID, "NetworkStatsWidget");
+
+    this->_bar.setSize2D(100, 30);
+    this->pack(&this->_valueText);
+    this->_bar.setParent2D(&this->_valueText);
+
+    this->_valueText.setChangedTextColor(Color::white);
+
+    //this->setBackgroundTexture("maps/gui_element_background_2.png");
+    this->setBackgroundColor(Color(.5,.5,.5,1));
+
+    //this->_name.setBackgroundTexture(Texture());
+    //this->_valueText.setBackgroundTexture("maps/gui_element_background_2.png");
+    this->_bar.setBackgroundTexture(Texture());
+    this->_bar.setBackgroundColor(Color(0,0,0,0));
+    this->_bar.setForegroundTexture("maps/gui_element_background_faded.png");
+    this->_bar.setForegroundColor(Color(.5, .5, .5, 1));
+    this->_bar.setChangedValueColor(Color::black);
+  }
+
+
+  /**
+   * @brief standard deconstructor
+   */
+  NetworkStatsWidget::~NetworkStatsWidget ()
+  {}
+
+
+  void NetworkStatsWidget::setMaximum(float max)
+  {
+    this->_bar.setMaximum(max);
+  }
+
+  void NetworkStatsWidget::setValue(float value)
+  {
+    MultiType val(value);
+    val.setType(MT_INT);
+
+
+    this->_bar.setValue(value);
+    this->_bar.setForegroundColor(Color::slerpHSVColor(Color::red, Color::green, value/this->_bar.maximum()));
+    this->_bar.setFrontColor(Color(1,1,1,1), true);
+    this->_valueText.setText(val.getString());
+  }
+
+  void NetworkStatsWidget::resize()
+  {
+    GLGuiBox::resize();
+  }
+
+
+  void NetworkStatsWidget::showing()
+  {
+    this->_valueText.show();
+    this->_bar.show();
+  }
+
+  void NetworkStatsWidget::hiding()
+  {
+    this->_valueText.hide();
+    this->_bar.hide();
+  }
+}
Index: trunk/src/util/network_stats_widget.h
===================================================================
--- trunk/src/util/network_stats_widget.h	(revision 9406)
+++ trunk/src/util/network_stats_widget.h	(revision 9406)
@@ -0,0 +1,114 @@
+/*!
+ * @file network_stats_widget.h
+ * @brief Definition of an EnergyWidget, that displays a bar and a Text
+*/
+
+#ifndef _NETWORK_STATS_WIDGET_H
+#define _NETWORK_STATS_WIDGET_H
+
+#include "glgui_box.h"
+#include "glgui_bar.h"
+#include "glgui_text.h"
+
+#include "network/ip.h"
+
+
+namespace OrxGui
+{
+
+  class HostWidget : public GLGuiBox
+  {
+    public:
+      HostWidget(const std::string& name, const IP& ip);
+      ~HostWidget() {};
+
+      void setName(const std::string& name) { this->_name.setText(name); };
+      void setIP(const IP& ip) { this->_ip.setText(ip.ipString()); this->_storedIP = ip; };
+
+      void setNameWidth(float width) { this->_name.setLineWidth(width); };
+
+      bool operator==(const IP& ip) const { return (this->_storedIP == ip); };
+      bool operator==(const std::string& name) const { return (this->_name == name); };
+
+    protected:
+      virtual void showing();
+      virtual void hiding();
+
+    private:
+      GLGuiText        _name;           //!< The Name of the Proxy server to be displayed.
+      GLGuiText        _ip;             //!< The IP of the proxy server.
+      IP               _storedIP;       //!< The ip to compare.
+  };
+
+
+  class ProxyWidget : public GLGuiBox
+  {
+    public:
+      ProxyWidget(const std::string& proxyName, const IP& ip);
+
+      void addClient(const std::string& name, const IP& ip);
+
+      bool removeClient(const IP& ip);
+      bool removeClient(const std::string& name);
+      bool removeClient(const std::string& name, const IP& ip);
+
+      void setClientNameWidths(float width);
+
+
+    protected:
+      virtual void hiding();
+      virtual void showing();
+
+
+    private:
+      HostWidget       _proxyWidget;
+
+      std::vector<HostWidget*>  _clients;
+      float            _clientNameWidth;
+  };
+
+
+
+
+  //! A class to display network Statistics.
+  class NetworkStatsWidget : public GLGuiBox
+  {
+    public:
+      NetworkStatsWidget();
+      virtual ~NetworkStatsWidget();
+
+      void setUpstream(unsigned int upstream);
+      void setDownstream(unsigned int upstream);
+      void setIP(const IP& ip);
+
+
+
+      void addProxy(const std::string& name, const IP& proxy);
+
+
+      //void rebuildConnectedHosts(std::vector<hosts> hosts);
+
+      void setMaximum(float max);
+      void setValue(float value);
+
+    protected:
+      virtual void resize();
+      virtual void showing();
+      virtual void hiding();
+
+    private:
+      HostWidget             _thisHost;
+
+      GLGuiText              _upstreamText;
+      GLGuiText              _downstreamText;
+
+      std::vector<HostWidget*>_connectedProxies;
+
+      GLGuiText              _serverIP;
+
+
+      GLGuiText              _valueText;
+      GLGuiBar               _bar;
+  };
+}
+#endif /* _NETWORK_STATS_WIDGET_H */
Index: trunk/src/util/object_manager.cc
===================================================================
--- trunk/src/util/object_manager.cc	(revision 9240)
+++ trunk/src/util/object_manager.cc	(revision 9406)
@@ -26,5 +26,5 @@
 #include "debug.h"
 
-using namespace std;
+
 SHELL_COMMAND(debug, ObjectManager, debug)
     ->defaultValues("", 0);
@@ -117,5 +117,5 @@
   {
 
-    list<BaseObject*>::const_iterator node;
+    std::list<BaseObject*>::const_iterator node;
     for (node = objectList->begin(); node != objectList->end(); node++)
       if ((dynamic_cast<PNode*>(*node)->getAbsCoor() - center.getAbsCoor()).len() < radius)
@@ -140,5 +140,5 @@
       for (entity = this->objectLists[omList].begin(); entity != this->objectLists[omList].end(); entity++)
       {
-        PRINT(0)(" | %s::%s\n",(*entity)->getClassName(), (*entity)->getName());
+        PRINT(0)(" | %s::%s\n",(*entity)->getClassCName(), (*entity)->getCName());
       }
     }
Index: trunk/src/util/signal_handler.cc
===================================================================
--- trunk/src/util/signal_handler.cc	(revision 9240)
+++ trunk/src/util/signal_handler.cc	(revision 9406)
@@ -27,7 +27,16 @@
 }
 
-void SignalHandler::doCatch( std::string appName )
+/**
+ * register signal handlers for SIGSEGV and SIGABRT
+ * @param appName path to executable eg argv[0]
+ * @param fileName filename to append backtrace to
+ */
+void SignalHandler::doCatch( const std::string & appName, const std::string & fileName )
 {
   this->appName = appName;
+  this->fileName = fileName;
+  
+  // make sure doCatch is only called once without calling dontCatch
+  assert( sigRecList.size() == 0 );
 
   catchSignal( SIGSEGV );
@@ -35,4 +44,7 @@
 }
 
+/**
+ * restore previous signal handlers
+ */
 void SignalHandler::dontCatch()
 {
@@ -45,4 +57,8 @@
 }
 
+/**
+ * catch signal sig
+ * @param sig signal to catch
+ */
 void SignalHandler::catchSignal( int sig )
 {
@@ -58,4 +74,8 @@
 }
 
+/**
+ * sigHandler is called when receiving signals
+ * @param sig 
+ */
 void SignalHandler::sigHandler( int sig )
 {
@@ -167,4 +187,6 @@
         )
           charsFound++;
+    else
+      charsFound = 0;
 
     if ( charsFound == 6 )
@@ -183,5 +205,5 @@
   write( sigPipe[1], &someData, sizeof(someData) );
 
-  write( gdbIn[1], "bt\nq\n", 5 );
+  write( gdbIn[1], "bt\nk\nq\n", 7 );
 
   
@@ -202,4 +224,6 @@
         )
           charsFound++;
+    else
+      charsFound = 0;
 
     if ( charsFound == 6 )
@@ -210,5 +234,5 @@
     }
 
-    if ( promptFound == 2 )
+    if ( promptFound == 3 )
     {
       break;
@@ -240,9 +264,9 @@
   bt.insert(0, timeString);
   
-  FILE * f = fopen( GDB_BT_FILE, "a" );
+  FILE * f = fopen( getInstance()->fileName.c_str(), "a" );
 
   if ( !f )
   {
-    perror("could not append to " GDB_BT_FILE);
+    perror( ( std::string( "could not append to " ) + getInstance()->fileName ).c_str() );
     exit(EXIT_FAILURE);
   }
@@ -250,5 +274,5 @@
   if ( fwrite( bt.c_str(), 1, bt.length(), f ) != bt.length() )
   {
-    printf("could not write %d byte to " GDB_BT_FILE, bt.length());
+    printf( ( std::string("could not write %d byte to ") + getInstance()->fileName ).c_str(), bt.length());
     exit(EXIT_FAILURE);
   }
Index: trunk/src/util/signal_handler.h
===================================================================
--- trunk/src/util/signal_handler.h	(revision 9240)
+++ trunk/src/util/signal_handler.h	(revision 9406)
@@ -9,7 +9,4 @@
 #include <list>
 #include <string>
-
-
-#define GDB_BT_FILE "orxonox.backtrace"
 
 typedef int (*SignalCallback)( void * someData );
@@ -44,5 +41,5 @@
     void registerCallback( SignalCallback cb, void * someData );
 
-    void doCatch( std::string appName );
+    void doCatch( const std::string & appName, const std::string & fileName );
     void dontCatch();
 
@@ -58,4 +55,5 @@
 
     std::string appName;
+    std::string fileName;
 };
 
Index: trunk/src/util/singleplayer_shootemup.cc
===================================================================
--- trunk/src/util/singleplayer_shootemup.cc	(revision 9240)
+++ trunk/src/util/singleplayer_shootemup.cc	(revision 9406)
@@ -23,5 +23,5 @@
 
 
-using namespace std;
+
 
 
Index: trunk/src/util/state.cc
===================================================================
--- trunk/src/util/state.cc	(revision 9240)
+++ trunk/src/util/state.cc	(revision 9406)
@@ -25,5 +25,5 @@
 #endif
 
-using namespace std;
+
 
 
Index: trunk/src/util/track/track_manager.cc
===================================================================
--- trunk/src/util/track/track_manager.cc	(revision 9240)
+++ trunk/src/util/track/track_manager.cc	(revision 9406)
@@ -32,5 +32,5 @@
 #include <stdarg.h>
 
-using namespace std;
+
 
 /**
Index: trunk/src/util/track/track_node.cc
===================================================================
--- trunk/src/util/track/track_node.cc	(revision 9240)
+++ trunk/src/util/track/track_node.cc	(revision 9406)
@@ -21,5 +21,5 @@
 #include "track_manager.h"
 
-using namespace std;
+
 
 /**
