Index: branches/proxy/src/lib/network/monitor/network_monitor.cc
===================================================================
--- branches/proxy/src/lib/network/monitor/network_monitor.cc	(revision 9276)
+++ branches/proxy/src/lib/network/monitor/network_monitor.cc	(revision 9277)
@@ -46,87 +46,30 @@
 
 /**
- * adds a client
+ * add the network node
+ * @param node to add
  */
-void NetworkMonitor::addClient(PeerInfo* node)
+void NetworkMonitor::addNetworkNode(NetworkNode* node)
 {
-  this->clientList.push_back(node);
-  this->playerNumber++;
+  this->nodeList.push_back(node);
 }
 
-/**
- * adds a proxy server
- */
-void NetworkMonitor::addProxyServer(PeerInfo* node)
-{
-  this->proxyServerList.push_back(node);
-  this->playerNumber++;
-}
 
 /**
- * adds a master server
+ * add the network node
+ * @param node to add
  */
-void NetworkMonitor::addMasterServer(PeerInfo* node)
+void NetworkMonitor::removeNetworkNode(NetworkNode* node)
 {
-  this->masterServerList.push_back(node);
-  this->playerNumber++;
-}
-
-/**
- * removes a client
- */
-void NetworkMonitor::removeClient(PeerInfo* node)
-{
-  std::list<PeerInfo*>::iterator it = this->clientList.begin();
-  for(; it != this->clientList.end(); it++)
+  std::list<NetworkNode*>::iterator it = this->nodeList.begin();
+  for(; it != this->nodeList.end(); it++)
   {
     if( *it == node)
     {
-      this->clientList.erase(it);
+      this->nodeList.erase(it);
       this->playerNumber--;
       return;
     }
   }
-
-  PRINTF(2)("Could not remove client from the list, very strange...");
 }
-
-/**
- * removes a proxy server
- */
-void NetworkMonitor::removeProxyServer(PeerInfo* node)
-{
-  std::list<PeerInfo*>::iterator it = this->proxyServerList.begin();
-  for(; it != this->proxyServerList.end(); it++)
-  {
-    if( *it == node)
-    {
-      this->proxyServerList.erase(it);
-      this->playerNumber--;
-      return;
-    }
-  }
-
-  PRINTF(2)("Could not remove proxy server from the list, very strange...");
-}
-
-/**
- * removes a master server
- */
-void NetworkMonitor::removeMasterServer(PeerInfo* node)
-{
-  std::list<PeerInfo*>::iterator it = this->masterServerList.begin();
-  for(; it != this->masterServerList.end(); it++)
-  {
-    if( *it == node)
-    {
-      this->masterServerList.erase(it);
-      this->playerNumber--;
-      return;
-    }
-  }
-
-  PRINTF(2)("Could not remove client from the list, very strange...");
-}
-
 
 
Index: branches/proxy/src/lib/network/monitor/network_monitor.h
===================================================================
--- branches/proxy/src/lib/network/monitor/network_monitor.h	(revision 9276)
+++ branches/proxy/src/lib/network/monitor/network_monitor.h	(revision 9277)
@@ -28,4 +28,7 @@
     virtual ~NetworkMonitor();
 
+    /* client/masterserver/proxyserver addition/removal interface */
+    void addNetworkNode(NetworkNode* node);
+    void removeNetworkNode(NetworkNode* node);
 
     void addClient(PeerInfo* node);
@@ -37,4 +40,5 @@
     void removeMasterServer(PeerInfo* node);
 
+
     void showGUI();
     void hideGUI();
@@ -44,8 +48,5 @@
 
   private:
-    std::list<PeerInfo*>         clientList;                   //!< list of all clients in the network
-    std::list<PeerInfo*>         proxyServerList;              //!< list of all proxy servers in the network
-    std::list<PeerInfo*>         masterServerList;             //!< list of all master servers in the network (should be 1!! :D)
-
+    std::list<NetworkNode*>      nodeList;                   //!< list of all network nodes
 
     OrxGui::GLGuiBox*            box;
Index: branches/proxy/src/lib/network/monitor/network_node.cc
===================================================================
--- branches/proxy/src/lib/network/monitor/network_node.cc	(revision 9276)
+++ branches/proxy/src/lib/network/monitor/network_node.cc	(revision 9277)
@@ -17,10 +17,105 @@
 
 
+#include "debug.h"
 
+
+/**
+ * constructor
+ */
 NetworkNode::NetworkNode()
+{
+  this->playerNumber = 0;
+  this->nodeType = NET_CLIENT;
+}
+
+
+/**
+ * deconstructor
+ */
+NetworkNode::~NetworkNode()
 {}
 
 
-NetworkNode::~NetworkNode()
-{}
+/**
+ * adds a client
+ */
+void NetworkNode::addClient(PeerInfo* node)
+{
+  this->clientList.push_back(node);
+  this->playerNumber++;
+}
 
+/**
+ * adds a proxy server
+ */
+void NetworkNode::addProxyServer(PeerInfo* node)
+{
+  this->proxyServerList.push_back(node);
+  this->playerNumber++;
+}
+
+/**
+ * adds a master server
+ */
+void NetworkNode::addMasterServer(PeerInfo* node)
+{
+  this->masterServerList.push_back(node);
+  this->playerNumber++;
+}
+
+/**
+ * removes a client
+ */
+void NetworkNode::removeClient(PeerInfo* node)
+{
+  std::list<PeerInfo*>::iterator it = this->clientList.begin();
+  for(; it != this->clientList.end(); it++)
+  {
+    if( *it == node)
+    {
+      this->clientList.erase(it);
+      this->playerNumber--;
+      return;
+    }
+  }
+
+  PRINTF(2)("Could not remove client from the list, very strange...");
+}
+
+/**
+ * removes a proxy server
+ */
+void NetworkNode::removeProxyServer(PeerInfo* node)
+{
+  std::list<PeerInfo*>::iterator it = this->proxyServerList.begin();
+  for(; it != this->proxyServerList.end(); it++)
+  {
+    if( *it == node)
+    {
+      this->proxyServerList.erase(it);
+      this->playerNumber--;
+      return;
+    }
+  }
+
+  PRINTF(2)("Could not remove proxy server from the list, very strange...");
+}
+
+/**
+ * removes a master server
+ */
+void NetworkNode::removeMasterServer(PeerInfo* node)
+{
+  std::list<PeerInfo*>::iterator it = this->masterServerList.begin();
+  for(; it != this->masterServerList.end(); it++)
+  {
+    if( *it == node)
+    {
+      this->masterServerList.erase(it);
+      this->playerNumber--;
+      return;
+    }
+  }
+
+  PRINTF(2)("Could not remove client from the list, very strange...");
+}
Index: branches/proxy/src/lib/network/monitor/network_node.h
===================================================================
--- branches/proxy/src/lib/network/monitor/network_node.h	(revision 9276)
+++ branches/proxy/src/lib/network/monitor/network_node.h	(revision 9277)
@@ -22,7 +22,19 @@
 
 
+    void addClient(PeerInfo* node);
+    void addProxyServer(PeerInfo* node);
+    void addMasterServer(PeerInfo* node);
+
+    void removeClient(PeerInfo* node);
+    void removeProxyServer(PeerInfo* node);
+    void removeMasterServer(PeerInfo* node);
+
+
+
   private:
     int                          nodeType;                     //!< the type of the node
+    int                          playerNumber;                 //!< localy direct connected player number
 
+    /* network nodes directly connected to this node */
     std::list<PeerInfo*>         clientList;                   //!< list of all clients in the network
     std::list<PeerInfo*>         proxyServerList;              //!< list of all proxy servers in the network
