Index: /code/branches/FICN/src/orxonox/core/Factory.cc
===================================================================
--- /code/branches/FICN/src/orxonox/core/Factory.cc	(revision 362)
+++ /code/branches/FICN/src/orxonox/core/Factory.cc	(revision 363)
@@ -11,5 +11,13 @@
             pointer_s = new Factory;
 
-        return pointer_s->identifierMap_[name];
+        return pointer_s->identifierStringMap_[name];
+    }
+
+    Identifier* Factory::getIdentifier(const unsigned int id)
+    {
+        if (!pointer_s)
+            pointer_s = new Factory;
+
+        return pointer_s->identifierNetworkIDMap_[id];
     }
 
@@ -19,5 +27,12 @@
             pointer_s = new Factory;
 
-        pointer_s->identifierMap_[name] = identifier;
+        pointer_s->identifierStringMap_[name] = identifier;
+        pointer_s->identifierNetworkIDMap_[identifier->getNetworkID()] = identifier;
+    }
+
+    void Factory::changeNetworkID(Identifier* identifier, const unsigned int oldID, const unsigned int newID)
+    {
+        pointer_s->identifierNetworkIDMap_.erase(oldID);
+        pointer_s->identifierNetworkIDMap_[newID] = identifier;
     }
 }
Index: /code/branches/FICN/src/orxonox/core/Factory.h
===================================================================
--- /code/branches/FICN/src/orxonox/core/Factory.h	(revision 362)
+++ /code/branches/FICN/src/orxonox/core/Factory.h	(revision 363)
@@ -17,5 +17,7 @@
         public:
             static Identifier* getIdentifier(const std::string& name);
+            static Identifier* getIdentifier(const unsigned int id);
             static void add(const std::string& name, Identifier* identifier);
+            static void changeNetworkID(Identifier* identifier, const unsigned int oldID, const unsigned int newID);
 
         private:
@@ -25,5 +27,6 @@
 
             static Factory* pointer_s;
-            std::map<std::string, Identifier*> identifierMap_;
+            std::map<std::string, Identifier*> identifierStringMap_;
+            std::map<unsigned int, Identifier*> identifierNetworkIDMap_;
     };
 
Index: /code/branches/FICN/src/orxonox/core/Identifier.cc
===================================================================
--- /code/branches/FICN/src/orxonox/core/Identifier.cc	(revision 362)
+++ /code/branches/FICN/src/orxonox/core/Identifier.cc	(revision 363)
@@ -7,4 +7,5 @@
     // ###############################
     int Identifier::hierarchyCreatingCounter_s = 0;
+    unsigned int Identifier::classIDcounter_s = 0;
 
     Identifier::Identifier()
@@ -14,4 +15,5 @@
 
         this->children_ = new IdentifierList;
+        this->classID_ = Identifier::classIDcounter_s++;
     }
 
@@ -57,4 +59,10 @@
     }
 
+    void Identifier::setNetworkID(unsigned int id)
+    {
+        Factory::changeNetworkID(this, this->classID_, id);
+        this->classID_ = id;
+    }
+
     bool Identifier::isA(const Identifier* identifier) const
     {
Index: /code/branches/FICN/src/orxonox/core/Identifier.h
===================================================================
--- /code/branches/FICN/src/orxonox/core/Identifier.h	(revision 362)
+++ /code/branches/FICN/src/orxonox/core/Identifier.h	(revision 363)
@@ -8,5 +8,5 @@
 #include "Factory.h"
 
-#define HIERARCHY_VERBOSE 0
+#define HIERARCHY_VERBOSE false
 
 
@@ -43,4 +43,7 @@
 
             inline static bool isCreatingHierarchy() { return (hierarchyCreatingCounter_s > 0); }
+
+            inline const unsigned int getNetworkID() const { return this->classID_; }
+            void setNetworkID(unsigned int id);
 
         private:
@@ -74,4 +77,6 @@
             bool bCreatedOneObject_;
             static int hierarchyCreatingCounter_s;
+            static unsigned int classIDcounter_s;
+            unsigned int classID_;
     };
 
Index: /code/branches/FICN/src/orxonox/core/IdentifierIncludes.h
===================================================================
--- /code/branches/FICN/src/orxonox/core/IdentifierIncludes.h	(revision 362)
+++ /code/branches/FICN/src/orxonox/core/IdentifierIncludes.h	(revision 363)
@@ -41,4 +41,4 @@
     bool bCreated##ClassName##Factory = ClassFactory<ClassName>::create()
 
-#define ID(Name) \
-    Factory::getIdentifier(Name)
+#define ID(NameOrID) \
+    Factory::getIdentifier(NameOrID)
