Index: code/branches/core5/src/libraries/core/ClassFactory.h
===================================================================
--- code/branches/core5/src/libraries/core/ClassFactory.h	(revision 5778)
+++ code/branches/core5/src/libraries/core/ClassFactory.h	(revision 5779)
@@ -46,12 +46,12 @@
 namespace orxonox
 {
-    // ###############################
-    // ###       BaseFactory       ###
-    // ###############################
+    // ###########################
+    // ###       Factory       ###
+    // ###########################
     //! Base-class of ClassFactory.
-    class _CoreExport BaseFactory
+    class _CoreExport Factory
     {
         public:
-            virtual ~BaseFactory() {};
+            virtual ~Factory() {};
             virtual BaseObject* fabricate(BaseObject* creator) = 0;
     };
@@ -62,5 +62,5 @@
     //! The ClassFactory is able to create new objects of a specific class.
     template <class T>
-    class ClassFactory : public BaseFactory
+    class ClassFactory : public Factory
     {
         public:
Index: code/branches/core5/src/libraries/core/CoreIncludes.h
===================================================================
--- code/branches/core5/src/libraries/core/CoreIncludes.h	(revision 5778)
+++ code/branches/core5/src/libraries/core/CoreIncludes.h	(revision 5779)
@@ -80,5 +80,5 @@
 */
 #define CreateFactory(ClassName) \
-    BaseFactory* ClassName##Factory = new orxonox::ClassFactory<ClassName>(#ClassName, true)
+    Factory* _##ClassName##Factory = new orxonox::ClassFactory<ClassName>(#ClassName, true)
 
 /**
@@ -87,5 +87,5 @@
 */
 #define CreateUnloadableFactory(ClassName) \
-    BaseFactory* ClassName##Factory = new orxonox::ClassFactory<ClassName>(#ClassName, false)
+    Factory* _##ClassName##Factory = new orxonox::ClassFactory<ClassName>(#ClassName, false)
 
 /**
@@ -100,5 +100,5 @@
 {
     /**
-        @brief Returns the Identifier with a given name through the factory.
+        @brief Returns the Identifier with a given name.
         @param String The name of the class
     */
@@ -109,5 +109,14 @@
 
     /**
-        @brief Returns the Identifier with a given network ID through the factory.
+        @brief Returns the Identifier with a given lowercase name.
+        @param String The lowercase name of the class
+    */
+    inline Identifier* ClassByLowercaseString(const std::string& name)
+    {
+        return Identifier::getIdentifierByLowercaseString(name);
+    }
+
+    /**
+        @brief Returns the Identifier with a given network ID.
         @param networkID The network ID of the class
     */
Index: code/branches/core5/src/libraries/core/CorePrereqs.h
===================================================================
--- code/branches/core5/src/libraries/core/CorePrereqs.h	(revision 5778)
+++ code/branches/core5/src/libraries/core/CorePrereqs.h	(revision 5779)
@@ -87,5 +87,4 @@
     class ArgumentCompleter;
     class ArgumentCompletionListElement;
-    class BaseFactory;
     class BaseMetaObjectListElement;
     class BaseObject;
Index: code/branches/core5/src/libraries/core/Identifier.cc
===================================================================
--- code/branches/core5/src/libraries/core/Identifier.cc	(revision 5778)
+++ code/branches/core5/src/libraries/core/Identifier.cc	(revision 5779)
@@ -372,4 +372,18 @@
 
     /**
+        @brief Returns the Identifier with a given name in lowercase.
+        @param name The name of the wanted Identifier
+        @return The Identifier
+    */
+    Identifier* Identifier::getIdentifierByLowercaseString(const std::string& name)
+    {
+        std::map<std::string, Identifier*>::const_iterator it = Identifier::getLowercaseStringIdentifierMapIntern().find(name);
+        if (it != Identifier::getLowercaseStringIdentifierMapIntern().end())
+            return it->second;
+        else
+            return 0;
+    }
+
+    /**
         @brief Returns the Identifier with a given network ID.
         @param id The network ID of the wanted Identifier
Index: code/branches/core5/src/libraries/core/Identifier.h
===================================================================
--- code/branches/core5/src/libraries/core/Identifier.h	(revision 5778)
+++ code/branches/core5/src/libraries/core/Identifier.h	(revision 5779)
@@ -103,5 +103,5 @@
 
             /** @brief Sets the Factory. @param factory The factory to assign */
-            inline void addFactory(BaseFactory* factory) { this->factory_ = factory; }
+            inline void addFactory(Factory* factory) { this->factory_ = factory; }
             /** @brief Returns true if the Identifier has a Factory. */
             inline bool hasFactory() const { return (this->factory_ != 0); }
@@ -165,4 +165,5 @@
 
             static Identifier* getIdentifierByString(const std::string& name);
+            static Identifier* getIdentifierByLowercaseString(const std::string& name);
             static Identifier* getIdentifierByID(uint32_t id);
 
@@ -334,5 +335,5 @@
             bool bLoadable_;                                               //!< False = it's not permitted to load the object through XML
             std::string name_;                                             //!< The name of the class the Identifier belongs to
-            BaseFactory* factory_;                                         //!< The Factory, able to create new objects of the given class (if available)
+            Factory* factory_;                                             //!< The Factory, able to create new objects of the given class (if available)
             static int hierarchyCreatingCounter_s;                         //!< Bigger than zero if at least one Identifier stores its parents (its an int instead of a bool to avoid conflicts with multithreading)
             uint32_t networkID_;                                           //!< The network ID to identify a class through the network
