Index: /trunk/FACT++/src/DimNetwork.cc
===================================================================
--- /trunk/FACT++/src/DimNetwork.cc	(revision 11729)
+++ /trunk/FACT++/src/DimNetwork.cc	(revision 11730)
@@ -97,5 +97,5 @@
 //!     a runtime_error is the server to be removed is not in the list
 //
-void DimNetwork::RemoveServer(const string &s)
+void DimNetwork::RemoveServer(string s)
 {
     DimServiceInfoList::RemoveServer(s);
Index: /trunk/FACT++/src/DimNetwork.h
===================================================================
--- /trunk/FACT++/src/DimNetwork.h	(revision 11729)
+++ /trunk/FACT++/src/DimNetwork.h	(revision 11730)
@@ -70,5 +70,5 @@
 
     void AddServer(const std::string &s);
-    void RemoveServer(const std::string &s);
+    void RemoveServer(std::string s);
     void RemoveAllServers();
 
Index: /trunk/FACT++/src/DimServerList.cc
===================================================================
--- /trunk/FACT++/src/DimServerList.cc	(revision 11729)
+++ /trunk/FACT++/src/DimServerList.cc	(revision 11730)
@@ -13,5 +13,5 @@
 
 - virtual void AddServer(const std::string &)
-- virtual void RemoveServer(const std::string &)
+- virtual void RemoveServer(const std::string)
 - virtual void RemoveAllServers()
 
Index: /trunk/FACT++/src/DimServerList.h
===================================================================
--- /trunk/FACT++/src/DimServerList.h	(revision 11729)
+++ /trunk/FACT++/src/DimServerList.h	(revision 11730)
@@ -17,5 +17,5 @@
 
     virtual void AddServer(const std::string &) { };
-    virtual void RemoveServer(const std::string &) { };
+    virtual void RemoveServer(std::string) { };
     virtual void RemoveAllServers() { };
 
Index: /trunk/FACT++/src/DimServiceInfoList.cc
===================================================================
--- /trunk/FACT++/src/DimServiceInfoList.cc	(revision 11729)
+++ /trunk/FACT++/src/DimServiceInfoList.cc	(revision 11730)
@@ -113,10 +113,11 @@
 //!
 //! @param s
-//!     server which should be removed
+//!     server which should be removed. We need to make a copy, otherwise
+//!     RemoveServer will destroy the staring the reference is pointing to
 //!
 //! @throws
 //!     a runtime_error is the server to be removed is not in the list
 //
-void DimServiceInfoList::RemoveServer(const string &s)
+void DimServiceInfoList::RemoveServer(const string s)
 {
     const ServiceInfoList::iterator v = fServiceInfoList.find(s);
@@ -149,10 +150,5 @@
 {
     while (fServiceInfoList.size()>0)
-    {
-        // We need to make a copy, otherwise RemoveServer will
-        // destroy the staring the reference is pointing to
-        const string name = fServiceInfoList.begin()->first;
-        RemoveServer(name);
-    }
+        RemoveServer(fServiceInfoList.begin()->first);
 }
 
Index: /trunk/FACT++/src/DimServiceInfoList.h
===================================================================
--- /trunk/FACT++/src/DimServiceInfoList.h	(revision 11729)
+++ /trunk/FACT++/src/DimServiceInfoList.h	(revision 11730)
@@ -48,9 +48,9 @@
 protected:
     void AddServer(const std::string &s);
-    void RemoveServer(const std::string &s);
+    void RemoveServer(std::string);
     void RemoveAllServers();
 
     virtual void AddService(const std::string &, const std::string &, const std::string &, bool) { }
-    virtual void RemoveService(const std::string &, const std::string &, bool) { }
+    virtual void RemoveService(std::string, std::string, bool) { }
     virtual void RemoveAllServices(const std::string &) { }
     virtual void AddDescription(const std::string &, const std::string &, const std::vector<Description> &) { }
