Index: /code/branches/core6/src/libraries/core/class/Identifier.cc
===================================================================
--- /code/branches/core6/src/libraries/core/class/Identifier.cc	(revision 9640)
+++ /code/branches/core6/src/libraries/core/class/Identifier.cc	(revision 9641)
@@ -50,5 +50,5 @@
     */
     Identifier::Identifier()
-        : classID_(IdentifierManager::getInstance().classIDCounter_s++)
+        : classID_(IdentifierManager::getInstance().getUniqueClassId())
     {
         this->bCreatedOneObject_ = false;
@@ -155,7 +155,5 @@
             this->name_ = name;
             this->bSetName_ = true;
-            IdentifierManager::getInstance().identifierByString_[name] = this;
-            IdentifierManager::getInstance().identifierByLowercaseString_[getLowercase(name)] = this;
-            IdentifierManager::getInstance().identifierByNetworkId_[this->networkID_] = this;
+            IdentifierManager::getInstance().registerIdentifier(this);
         }
     }
@@ -195,7 +193,6 @@
     void Identifier::setNetworkID(uint32_t id)
     {
-//        Identifier::getIDIdentifierMapIntern().erase(this->networkID_);
-        IdentifierManager::getInstance().identifierByNetworkId_[id] = this;
         this->networkID_ = id;
+        IdentifierManager::getInstance().registerIdentifier(this);
     }
 
Index: /code/branches/core6/src/libraries/core/class/Identifier.h
===================================================================
--- /code/branches/core6/src/libraries/core/class/Identifier.h	(revision 9640)
+++ /code/branches/core6/src/libraries/core/class/Identifier.h	(revision 9641)
@@ -106,7 +106,9 @@
     class _CoreExport Identifier
     {
-        friend class IdentifierManager;
-
         public:
+            Identifier();
+            Identifier(const Identifier& identifier); // don't copy
+            virtual ~Identifier();
+
             /// Returns the name of the class the Identifier belongs to.
             inline const std::string& getName() const { return this->name_; }
@@ -209,8 +211,4 @@
 
         protected:
-            Identifier();
-            Identifier(const Identifier& identifier); // don't copy
-            virtual ~Identifier();
-
             virtual void createSuperFunctionCaller() const = 0;
 
Index: /code/branches/core6/src/libraries/core/class/IdentifierManager.cc
===================================================================
--- /code/branches/core6/src/libraries/core/class/IdentifierManager.cc	(revision 9640)
+++ /code/branches/core6/src/libraries/core/class/IdentifierManager.cc	(revision 9641)
@@ -77,4 +77,14 @@
             return proposal;
         }
+    }
+
+    /**
+     * Registers the identifier in all maps of the IdentifierManager.
+     */
+    void IdentifierManager::registerIdentifier(Identifier* identifier)
+    {
+        IdentifierManager::getInstance().identifierByString_[identifier->getName()] = identifier;
+        IdentifierManager::getInstance().identifierByLowercaseString_[getLowercase(identifier->getName())] = identifier;
+        IdentifierManager::getInstance().identifierByNetworkId_[identifier->getNetworkID()] = identifier;
     }
 
Index: /code/branches/core6/src/libraries/core/class/IdentifierManager.h
===================================================================
--- /code/branches/core6/src/libraries/core/class/IdentifierManager.h	(revision 9640)
+++ /code/branches/core6/src/libraries/core/class/IdentifierManager.h	(revision 9641)
@@ -44,7 +44,4 @@
     class _CoreExport IdentifierManager
     {
-        friend class Identifier;
-        template <class T> friend class ClassIdentifier;
-
         public:
             static IdentifierManager& getInstance();
@@ -53,4 +50,11 @@
             ////// Class Hierarchy //////
             /////////////////////////////
+            Identifier* getIdentifierSingleton(const std::string& name, Identifier* proposal);
+
+            unsigned int getUniqueClassId()
+                { return this->classIDCounter_s++; }
+
+            void registerIdentifier(Identifier* identifier);
+
             void createClassHierarchy();
 
@@ -101,7 +105,4 @@
                 { return this->identifierByNetworkId_.end(); }
 
-        protected:
-            Identifier* getIdentifierSingleton(const std::string& name, Identifier* proposal);
-
         private:
             IdentifierManager();
