Index: branches/proxy/src/lib/gui/gl/glgui_text.h
===================================================================
--- branches/proxy/src/lib/gui/gl/glgui_text.h	(revision 9379)
+++ branches/proxy/src/lib/gui/gl/glgui_text.h	(revision 9383)
@@ -33,4 +33,5 @@
     void setChangedTextColor(const Color& color);
 
+    void setLineWidth(float lineWidth) { this->_text.setLineWidth(lineWidth); };
     void setDotsPosition(LimitedWidthText::DotsPosition dotsPosition) { this->_text.setDotsPosition(dotsPosition); };
 
Index: branches/proxy/src/lib/network/ip.cc
===================================================================
--- branches/proxy/src/lib/network/ip.cc	(revision 9379)
+++ branches/proxy/src/lib/network/ip.cc	(revision 9383)
@@ -130,5 +130,5 @@
  * @return true if ip _and_ port match.
  */
-bool IP::operator==(const IP& ip)
+bool IP::operator==(const IP& ip) const
 {
   return (this->_ip == ip.host() &&
@@ -140,7 +140,7 @@
  * @brief comparison operator
  * @param ip the IP to compare
- * @return true if ip _and_ port do not match.
- */
-bool IP::operator!=(const IP& ip)
+ * @return true if ip _or_ port do not match.
+ */
+bool IP::operator!=(const IP& ip) const
 {
   return (this->_ip != ip.host() ||
Index: branches/proxy/src/lib/network/ip.h
===================================================================
--- branches/proxy/src/lib/network/ip.h	(revision 9379)
+++ branches/proxy/src/lib/network/ip.h	(revision 9383)
@@ -30,6 +30,6 @@
     const IP& operator=(const IP& ip);
     const IP& operator=(const IPaddress& ip);
-    bool operator==(const IP& ip);
-    bool operator!=(const IP& up);
+    bool operator==(const IP& ip) const;
+    bool operator!=(const IP& up) const;
 
     /// RETRIVEAL
Index: branches/proxy/src/util/network_stats_widget.cc
===================================================================
--- branches/proxy/src/util/network_stats_widget.cc	(revision 9379)
+++ branches/proxy/src/util/network_stats_widget.cc	(revision 9383)
@@ -22,8 +22,118 @@
 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->pack(&_proxyWidget);
+  }
+
+  void ProxyWidget::addClient(const std::string& name, const IP& ip)
+  {
+    HostWidget* newClient = new HostWidget(name, ip);
+
+    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::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)
   {
     //   this->setClassID(CL_PROTO_ID, "NetworkStatsWidget");
@@ -52,6 +162,5 @@
    */
   NetworkStatsWidget::~NetworkStatsWidget ()
-  {
-  }
+  {}
 
 
Index: branches/proxy/src/util/network_stats_widget.h
===================================================================
--- branches/proxy/src/util/network_stats_widget.h	(revision 9379)
+++ branches/proxy/src/util/network_stats_widget.h	(revision 9383)
@@ -17,42 +17,92 @@
 {
 
+  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);
+
+
+    protected:
+      virtual void hiding();
+      virtual void showing();
+
+
+    private:
+      HostWidget       _proxyWidget;
+
+      std::vector<HostWidget*>  _clients;
+  };
+
+
+
+
   //! A class to display network Statistics.
   class NetworkStatsWidget : public GLGuiBox
   {
+    public:
+      NetworkStatsWidget();
+      virtual ~NetworkStatsWidget();
 
-  public:
-    NetworkStatsWidget();
-    virtual ~NetworkStatsWidget();
-
-    void setUpstream(unsigned int upstream);
-    void setDownstream(unsigned int upstream);
-    void setIP(const IP& ip);
+      void setUpstream(unsigned int upstream);
+      void setDownstream(unsigned int upstream);
+      void setIP(const IP& ip);
 
 
 
-    //void rebuildConnectedHosts(std::vector<hosts> hosts);
+      //void rebuildConnectedHosts(std::vector<hosts> hosts);
 
-    void setMaximum(float max);
-    void setValue(float value);
+      void setMaximum(float max);
+      void setValue(float value);
 
-  protected:
-    virtual void resize();
-    virtual void showing();
-    virtual void hiding();
+    protected:
+      virtual void resize();
+      virtual void showing();
+      virtual void hiding();
 
-  private:
-    IP                     _ip;
-    GLGuiText              _ipText;
+    private:
+      IP                     _ip;
+      GLGuiText              _ipText;
 
-    GLGuiText              _upstreamText;
-    GLGuiText              _downstreamText;
+      GLGuiText              _upstreamText;
+      GLGuiText              _downstreamText;
 
-    std::vector<GLGuiText> _connectedHosts;
+      std::vector<GLGuiText> _connectedHosts;
 
-    GLGuiText              _serverIP;
+      GLGuiText              _serverIP;
 
 
-    GLGuiText              _valueText;
-    GLGuiBar               _bar;
+      GLGuiText              _valueText;
+      GLGuiBar               _bar;
   };
 }
