Index: /code/branches/core/src/orxonox/core/BaseObject.cc
===================================================================
--- /code/branches/core/src/orxonox/core/BaseObject.cc	(revision 812)
+++ /code/branches/core/src/orxonox/core/BaseObject.cc	(revision 813)
@@ -20,5 +20,5 @@
  *
  *   Author:
- *      ...
+ *      Fabian 'x3n' Landau
  *   Co-authors:
  *      ...
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file BaseObject.cc
     @brief Implementation of the BaseObject class.
Index: /code/branches/core/src/orxonox/core/BaseObject.h
===================================================================
--- /code/branches/core/src/orxonox/core/BaseObject.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/BaseObject.h	(revision 813)
@@ -1,3 +1,30 @@
-/*!
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
     @file BaseObject.h
     @brief Definition of the BaseObject class.
Index: /code/branches/core/src/orxonox/core/CMakeLists.txt
===================================================================
--- /code/branches/core/src/orxonox/core/CMakeLists.txt	(revision 812)
+++ /code/branches/core/src/orxonox/core/CMakeLists.txt	(revision 813)
@@ -1,9 +1,9 @@
 SET( CORE_SRC_FILES
+  OrxonoxClass.cc
   BaseObject.cc
   Factory.cc
-  IdentifierList.cc
   Identifier.cc
+  IdentifierDistributor.cc
   MetaObjectList.cc
-  OrxonoxClass.cc
   ConfigValueContainer.cc
   Error.cc
@@ -14,5 +14,5 @@
   Language.cc
   ClassTreeMask.cc
-  IdentifierDistributor.cc
+#  Level.cc
 )
 
Index: /code/branches/core/src/orxonox/core/ClassFactory.h
===================================================================
--- /code/branches/core/src/orxonox/core/ClassFactory.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/ClassFactory.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file ClassFactory.h
     @brief Definition and implementation of the ClassFactory class
Index: /code/branches/core/src/orxonox/core/ClassManager.h
===================================================================
--- /code/branches/core/src/orxonox/core/ClassManager.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/ClassManager.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file ClassManager.h
     @brief Definition and Implementation of the ClassManager template.
Index: /code/branches/core/src/orxonox/core/ClassTreeMask.cc
===================================================================
--- /code/branches/core/src/orxonox/core/ClassTreeMask.cc	(revision 812)
+++ /code/branches/core/src/orxonox/core/ClassTreeMask.cc	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file ClassTreeMask.cc
     @brief Implementation of the ClassTreeMask, ClassTreeMaskNode and ClassTreeMaskIterator classes.
@@ -294,5 +294,12 @@
     void ClassTreeMask::add(const Identifier* subclass, bool bInclude)
     {
-        this->add(this->root_, subclass, bInclude);
+        if (subclass->isA(this->root_->getClass()))
+            this->add(this->root_, subclass, bInclude);
+        else
+        {
+
+        }
+
+        this->clean();
     }
 
Index: /code/branches/core/src/orxonox/core/ClassTreeMask.h
===================================================================
--- /code/branches/core/src/orxonox/core/ClassTreeMask.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/ClassTreeMask.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file ClassTreeMask.h
     @brief Definition of the ClassTreeMask, ClassTreeMaskNode and ClassTreeMaskIterator classes.
@@ -82,5 +82,5 @@
         tree of ClassTreeMask. To build a tree, they store a list of all subnodes.
     */
-    class ClassTreeMaskNode
+    class _CoreExport ClassTreeMaskNode
     {
         friend class ClassTreeMask;
@@ -120,5 +120,5 @@
         subclasses, it steps another step back, and so on.
     */
-    class ClassTreeMaskIterator
+    class _CoreExport ClassTreeMaskIterator
     {
         public:
@@ -151,5 +151,5 @@
         you want to drop useless rules, call the clean() function.
     */
-    class ClassTreeMask
+    class _CoreExport ClassTreeMask
     {
         public:
Index: /code/branches/core/src/orxonox/core/ConfigValueContainer.cc
===================================================================
--- /code/branches/core/src/orxonox/core/ConfigValueContainer.cc	(revision 812)
+++ /code/branches/core/src/orxonox/core/ConfigValueContainer.cc	(revision 813)
@@ -25,4 +25,9 @@
  *
  */
+
+/**
+    @file ConfigValueContainer.cc
+    @brief Implementation of the ConfigValueContainer class.
+*/
 
 #include <fstream>
@@ -828,5 +833,6 @@
 
     /**
-        @returns a list, containing all entrys in the config-file.
+        @brief Rreturns a list, containing all entrys in the config-file.
+        @return The list
     */
     std::list<std::string>& ConfigValueContainer::getConfigFileLines()
Index: /code/branches/core/src/orxonox/core/ConfigValueContainer.h
===================================================================
--- /code/branches/core/src/orxonox/core/ConfigValueContainer.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/ConfigValueContainer.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file ConfigValueContainer.h
     @brief Definition of the ConfigValueContainer class.
@@ -75,5 +75,5 @@
             ConfigValueContainer(const std::string& classname, const std::string& varname, MultiTypeMath defvalue);
 
-            /** @returns the value. @param value This is only needed to determine the right type. */
+            /** @brief Returns the configured value. @param value This is only needed to determine the right type. @return The value */
 /*            template <typename T>
             inline ConfigValueContainer& getValue(T& value)                           { this->value_.getValue(value); return *this; }
Index: /code/branches/core/src/orxonox/core/CoreIncludes.h
===================================================================
--- /code/branches/core/src/orxonox/core/CoreIncludes.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/CoreIncludes.h	(revision 813)
@@ -52,4 +52,6 @@
 #include "Debug.h"
 
+
+// All needed macros
 /**
     @brief Intern macro, containing the common parts of RegisterObject and RegisterRootObject.
@@ -60,5 +62,5 @@
     this->setIdentifier(orxonox::ClassManager<ClassName>::getIdentifier()->registerClass(this->getParents(), #ClassName, bRootClass)); \
     if (orxonox::Identifier::isCreatingHierarchy() && this->getParents()) \
-        this->getParents()->add(this->getIdentifier()); \
+        this->getParents()->insert(this->getParents()->end(), this->getIdentifier()); \
     orxonox::ClassManager<ClassName>::getIdentifier()->addObject(this)
 
@@ -69,5 +71,5 @@
 #define InternRegisterRootObject(ClassName) \
     if (orxonox::Identifier::isCreatingHierarchy() && !this->getParents()) \
-        this->setParents(new orxonox::IdentifierList()); \
+        this->createParents(); \
     InternRegisterObject(ClassName, true)
 
Index: /code/branches/core/src/orxonox/core/CorePrereqs.h
===================================================================
--- /code/branches/core/src/orxonox/core/CorePrereqs.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/CorePrereqs.h	(revision 813)
@@ -27,7 +27,7 @@
 
 /**
- @file  CorePrereq.h
- @brief Contains all the necessary forward declarations for all classes, structs and enums.
- */
+    @file  CorePrereq.h
+    @brief Contains all the necessary forward declarations for all classes, structs and enums.
+*/
 
 #ifndef _CorePrereqs_H__
@@ -72,4 +72,7 @@
   template <class T>
   class ClassManager;
+  class ClassTreeMask;
+  class ClassTreeMaskIterator;
+  class ClassTreeMaskNode;
   class ConfigValueContainer;
   class DebugLevel;
@@ -78,10 +81,11 @@
   class Identifier;
   class IdentifierDistributor;
-  class IdentifierList;
-  class IdentifierListElement;
+//  class IdentifierList;
+//  class IdentifierListElement;
   template <class T>
   class Iterator;
   class Language;
   class LanguageEntry;
+  class Level;
   class MetaObjectList;
   template <class T>
Index: /code/branches/core/src/orxonox/core/Debug.h
===================================================================
--- /code/branches/core/src/orxonox/core/Debug.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/Debug.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
  * @file Debug.h
  * @brief Handles the output for different verbose-modes.
Index: /code/branches/core/src/orxonox/core/DebugLevel.cc
===================================================================
--- /code/branches/core/src/orxonox/core/DebugLevel.cc	(revision 812)
+++ /code/branches/core/src/orxonox/core/DebugLevel.cc	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file DebugLevel.cc
     @brief Implementation of the DebugLevel class.
@@ -99,5 +99,6 @@
 
 /**
-    @returns the soft debug level, stored in the only existing instance of the DebugLevel class, configured in the config-file.
+    @brief Returns the soft debug level, stored in the only existing instance of the DebugLevel class, configured in the config-file.
+    @return The soft debug level
 */
 int getSoftDebugLevel()
Index: /code/branches/core/src/orxonox/core/DebugLevel.h
===================================================================
--- /code/branches/core/src/orxonox/core/DebugLevel.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/DebugLevel.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file DebugLevel.h
     @brief Definition of the DebugLevel class.
Index: /code/branches/core/src/orxonox/core/Error.cc
===================================================================
--- /code/branches/core/src/orxonox/core/Error.cc	(revision 812)
+++ /code/branches/core/src/orxonox/core/Error.cc	(revision 813)
@@ -25,4 +25,9 @@
  *
  */
+
+/**
+    @file Error.cc
+    @brief Implementation of the Error class.
+*/
 
 #include "Debug.h"
Index: /code/branches/core/src/orxonox/core/Error.h
===================================================================
--- /code/branches/core/src/orxonox/core/Error.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/Error.h	(revision 813)
@@ -26,4 +26,9 @@
  */
 
+/**
+    @file Error.h
+    @brief Definition of the Error class.
+*/
+
 #ifndef _Error_H__
 #define _Error_H__
Index: /code/branches/core/src/orxonox/core/Factory.cc
===================================================================
--- /code/branches/core/src/orxonox/core/Factory.cc	(revision 812)
+++ /code/branches/core/src/orxonox/core/Factory.cc	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file Factory.cc
     @brief Implementation of the Factory class.
@@ -39,6 +39,7 @@
 {
     /**
-        @returns the Identifier with a given name.
+        @brief Returns the Identifier with a given name.
         @param name The name of the wanted Identifier
+        @return The Identifier
     */
     Identifier* Factory::getIdentifier(const std::string& name)
@@ -48,6 +49,7 @@
 
     /**
-        @returns the Identifier with a given network ID.
+        @brief Returns the Identifier with a given network ID.
         @param id The network ID of the wanted Identifier
+        @return The Identifier
     */
     Identifier* Factory::getIdentifier(const unsigned int id)
Index: /code/branches/core/src/orxonox/core/Factory.h
===================================================================
--- /code/branches/core/src/orxonox/core/Factory.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/Factory.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file Factory.h
     @brief Definition of the Factory and the BaseFactory class.
Index: /code/branches/core/src/orxonox/core/Identifier.cc
===================================================================
--- /code/branches/core/src/orxonox/core/Identifier.cc	(revision 812)
+++ /code/branches/core/src/orxonox/core/Identifier.cc	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file Identifier.cc
     @brief Implementation of the Identifier class.
@@ -49,5 +49,5 @@
         this->factory_ = 0;
 
-        this->children_ = new IdentifierList;
+        this->children_ = new std::list<const Identifier*>();
 
         // Use a static variable because the classID gets created before main() and that's why we should avoid static member variables
@@ -57,5 +57,5 @@
 
     /**
-        @brief Destructor: Deletes the IdentifierList containing the children.
+        @brief Destructor: Deletes the list containing the children.
     */
     Identifier::~Identifier()
@@ -65,8 +65,8 @@
 
     /**
-        @brief Initializes the Identifier with an IdentifierList containing all parents of the class the Identifier belongs to.
-        @param parents The IdentifierList containing all parents
+        @brief Initializes the Identifier with a list containing all parents of the class the Identifier belongs to.
+        @param parents A list containing all parents
     */
-    void Identifier::initialize(const IdentifierList* parents)
+    void Identifier::initialize(std::list<const Identifier*>* parents)
     {
         COUT(4) << "*** Identifier: Initialize " << this->name_ << "-Singleton." << std::endl;
@@ -75,11 +75,11 @@
         if (parents)
         {
-            IdentifierListElement* temp1 = parents->first_;
-            while (temp1)
+            std::list<const Identifier*>::iterator temp1 = parents->begin();
+            while (temp1 != parents->end())
             {
-                this->parents_.add(temp1->identifier_);
-                temp1->identifier_->getChildren().add(this); // We're a child of our parents
+                this->parents_.insert(this->parents_.end(), *temp1);
+                (*temp1)->getChildren().insert((*temp1)->getChildren().end(), this); // We're a child of our parents
 
-                temp1 = temp1->next_;
+                ++temp1;
             }
         }
@@ -118,14 +118,14 @@
 
     /**
-        @returns true, if the Identifier is at least of the given type.
+        @brief Returns true, if the Identifier is at least of the given type.
         @param identifier The identifier to compare with
     */
     bool Identifier::isA(const Identifier* identifier) const
     {
-        return (identifier == this || this->parents_.isInList(identifier));
+        return (identifier == this || this->identifierIsInList(identifier, this->parents_));
     }
 
     /**
-        @returns true, if the Identifier is exactly of the given type.
+        @brief Returns true, if the Identifier is exactly of the given type.
         @param identifier The identifier to compare with
     */
@@ -136,19 +136,34 @@
 
     /**
-        @returns true, if the assigned identifier is a child of the given identifier.
+        @brief Returns true, if the assigned identifier is a child of the given identifier.
         @param identifier The identifier to compare with
     */
     bool Identifier::isChildOf(const Identifier* identifier) const
     {
-        return this->parents_.isInList(identifier);
+        return this->identifierIsInList(identifier, this->parents_);
     }
 
     /**
-        @returns true, if the assigned identifier is a parent of the given identifier.
+        @brief Returns true, if the assigned identifier is a parent of the given identifier.
         @param identifier The identifier to compare with
     */
     bool Identifier::isParentOf(const Identifier* identifier) const
     {
-        return this->children_->isInList(identifier);
+        return this->identifierIsInList(identifier, *this->children_);
+    }
+
+    /**
+        @brief Searches for a given identifier in a list and returns whether the identifier is in the list or not.
+        @param identifier The identifier to look for
+        @param list The list
+        @return True = the identifier is in the list
+    */
+    bool Identifier::identifierIsInList(const Identifier* identifier, const std::list<const Identifier*>& list)
+    {
+        for (std::list<const Identifier*>::const_iterator it = list.begin(); it != list.end(); ++it)
+            if (identifier == (*it))
+                return true;
+
+        return false;
     }
 }
Index: /code/branches/core/src/orxonox/core/Identifier.h
===================================================================
--- /code/branches/core/src/orxonox/core/Identifier.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/Identifier.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file Identifier.h
     @brief Definition of the Identifier, ClassIdentifier and SubclassIdentifier classes, implementation of the ClassIdentifier and SubclassIdentifier classes.
@@ -52,4 +52,5 @@
 #define _Identifier_H__
 
+#include <list>
 #include <map>
 #include <string>
@@ -59,5 +60,5 @@
 
 #include "ObjectList.h"
-#include "IdentifierList.h"
+//#include "IdentifierList.h"
 #include "Debug.h"
 #include "Iterator.h"
@@ -109,17 +110,17 @@
             virtual void removeObjects() const = 0;
 
-            /** @returns the name of the class the Identifier belongs to. */
+            /** @brief Returns the name of the class the Identifier belongs to. @return The name */
             inline const std::string& getName() const { return this->name_; }
 
-            /** @returns the parents of the class the Identifier belongs to. */
-            inline const IdentifierList& getParents() const { return this->parents_; }
-
-            /** @returns the children of the class the Identifier belongs to. */
-            inline IdentifierList& getChildren() const { return *this->children_; }
-
-            /** @returns true, if a branch of the class-hierarchy is being created, causing all new objects to store their parents. */
+            /** @brief Returns the parents of the class the Identifier belongs to. @return The list of all parents */
+            inline const std::list<const Identifier*>& getParents() const { return this->parents_; }
+
+//            /** @brief Returns the children of the class the Identifier belongs to. @return The list of all children */
+//            inline const std::list<const Identifier*>& getChildren() const { return (*this->children_); }
+
+            /** @brief Returns true, if a branch of the class-hierarchy is being created, causing all new objects to store their parents. @return The status of the class-hierarchy creation */
             inline static bool isCreatingHierarchy() { return (hierarchyCreatingCounter_s > 0); }
 
-            /** @returns the network ID to identify a class through the network. */
+            /** @brief Returns the network ID to identify a class through the network. @return the network ID */
             inline const unsigned int getNetworkID() const { return this->classID_; }
 
@@ -127,5 +128,5 @@
             void setNetworkID(unsigned int id);
 
-            /** @returns the ConfigValueContainer of a variable, given by the string of its name. @param varname The name of the variable */
+            /** @brief Returns the ConfigValueContainer of a variable, given by the string of its name. @param varname The name of the variable @return The ConfigValueContainer */
             inline ConfigValueContainer* getConfigValueContainer(const std::string& varname)
                 { return this->configValues_[varname]; }
@@ -139,5 +140,11 @@
             Identifier(const Identifier& identifier) {} // don't copy
             virtual ~Identifier();
-            void initialize(const IdentifierList* parents);
+            void initialize(std::list<const Identifier*>* parents);
+
+            /** @brief Returns the parents of the class the Identifier belongs to. @return The list of all parents */
+            inline std::list<const Identifier*>& getParents() { return this->parents_; }
+
+            /** @brief Returns the children of the class the Identifier belongs to. @return The list of all children */
+            inline std::list<const Identifier*>& getChildren() const { return (*this->children_); }
 
             /**
@@ -159,6 +166,10 @@
             }
 
-            IdentifierList parents_;                                    //!< The Parents of the class the Identifier belongs to
-            IdentifierList* children_;                                  //!< The Children of the class the Identifier belongs to
+            static bool identifierIsInList(const Identifier* identifier, const std::list<const Identifier*>& list);
+
+//            IdentifierList parents_;                                    //!< The Parents of the class the Identifier belongs to
+//            IdentifierList* children_;                                  //!< The Children of the class the Identifier belongs to
+            std::list<const Identifier*> parents_;                      //!< The Parents of the class the Identifier belongs to
+            std::list<const Identifier*>* children_;                    //!< The Children of the class the Identifier belongs to
 
             std::string name_;                                          //!< The name of the class the Identifier belongs to
@@ -194,5 +205,5 @@
 
         public:
-            ClassIdentifier<T>* registerClass(const IdentifierList* parents, const std::string& name, bool bRootClass);
+            ClassIdentifier<T>* registerClass(std::list<const Identifier*>* parents, const std::string& name, bool bRootClass);
             void addObject(T* object);
             void removeObjects() const;
@@ -220,5 +231,5 @@
     /**
         @brief Registers a class, which means that the name and the parents get stored.
-        @param parents An IdentifierList, containing the Identifiers of all parents of the class
+        @param parents A list, containing the Identifiers of all parents of the class
         @param name A string, containing exactly the name of the class
         @param bRootClass True if the class is either an Interface or the BaseObject itself
@@ -226,5 +237,5 @@
     */
     template <class T>
-    ClassIdentifier<T>* ClassIdentifier<T>::registerClass(const IdentifierList* parents, const std::string& name, bool bRootClass)
+    ClassIdentifier<T>* ClassIdentifier<T>::registerClass(std::list<const Identifier*>* parents, const std::string& name, bool bRootClass)
     {
         COUT(4) << "*** ClassIdentifier: Register Class in " << name << "-Singleton." << std::endl;
@@ -383,21 +394,21 @@
             }
 
-            /** @returns the assigned identifier. */
+            /** @brief Returns the assigned identifier. @return The identifier */
             inline const Identifier* getIdentifier() const
                 { return this->identifier_; }
 
-            /** @returns true, if the assigned identifier is at least of the given type. @param identifier The identifier to compare with */
+            /** @brief Returns true, if the assigned identifier is at least of the given type. @param identifier The identifier to compare with */
             inline bool isA(const Identifier* identifier) const
                 { return this->identifier_->isA(identifier); }
 
-            /** @returns true, if the assigned identifier is exactly of the given type. @param identifier The identifier to compare with */
+            /** @brief Returns true, if the assigned identifier is exactly of the given type. @param identifier The identifier to compare with */
             inline bool isDirectlyA(const Identifier* identifier) const
                 { return this->identifier_->isDirectlyA(identifier); }
 
-            /** @returns true, if the assigned identifier is a child of the given identifier. @param identifier The identifier to compare with */
+            /** @brief Returns true, if the assigned identifier is a child of the given identifier. @param identifier The identifier to compare with */
             inline bool isChildOf(const Identifier* identifier) const
                 { return this->identifier_->isChildOf(identifier); }
 
-            /** @returns true, if the assigned identifier is a parent of the given identifier. @param identifier The identifier to compare with */
+            /** @brief Returns true, if the assigned identifier is a parent of the given identifier. @param identifier The identifier to compare with */
             inline bool isParentOf(const Identifier* identifier) const
                 { return this->identifier_->isParentOf(identifier); }
Index: /code/branches/core/src/orxonox/core/IdentifierDistributor.cc
===================================================================
--- /code/branches/core/src/orxonox/core/IdentifierDistributor.cc	(revision 812)
+++ /code/branches/core/src/orxonox/core/IdentifierDistributor.cc	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file IdentifierDistributor.cc
     @brief Implementation of the IdentifierDistributor class.
Index: /code/branches/core/src/orxonox/core/IdentifierDistributor.h
===================================================================
--- /code/branches/core/src/orxonox/core/IdentifierDistributor.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/IdentifierDistributor.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file IdentifierDistributor.h
     @brief Definition of the IdentifierDistributor class
@@ -45,5 +45,5 @@
 {
     //! The Identifier Distributor stores all Identifiers and makes sure there are no ambiguities.
-    class IdentifierDistributor
+    class _CoreExport IdentifierDistributor
     {
         public:
Index: de/branches/core/src/orxonox/core/IdentifierList.cc
===================================================================
--- /code/branches/core/src/orxonox/core/IdentifierList.cc	(revision 812)
+++ 	(revision )
@@ -1,161 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/*!
-    @file IdentifierList.cc
-    @brief Implementation of the IdentifierList class.
-*/
-
-#include "Identifier.h"
-#include "IdentifierList.h"
-
-namespace orxonox
-{
-    // ###############################
-    // ###     IdentifierList      ###
-    // ###############################
-    /**
-        @brief Constructor: Sets first_ to zero.
-    */
-    IdentifierList::IdentifierList()
-    {
-        this->first_ = 0;
-    }
-
-    /**
-        @brief Destructor: Deletes all elements in the list, but NOT THE IDENTIFIERS.
-    */
-    IdentifierList::~IdentifierList()
-    {
-        IdentifierListElement* temp;
-        while (this->first_)
-        {
-            temp = this->first_->next_;
-            delete this->first_;
-            this->first_ = temp;
-        }
-    }
-
-    /**
-        @brief Adds an Identifier to the list.
-        @param identifier The Identifier to add
-    */
-    void IdentifierList::add(const Identifier* identifier)
-    {
-        IdentifierListElement* temp = this->first_;
-        this->first_ = new IdentifierListElement(identifier);
-        this->first_->next_ = temp;
-    }
-
-    /**
-        @brief Removes an Identifier from the list.
-        @param identifier The Identifier to remove
-    */
-    void IdentifierList::remove(const Identifier* identifier)
-    {
-        if (!identifier)
-            return;
-
-        // Check if we have to delete the first element
-        if (this->first_->identifier_ == identifier)
-        {
-            IdentifierListElement* temp = this->first_->next_;
-            delete this->first_;
-            this->first_ = temp;
-
-            return;
-        }
-
-        // Iterate through the list
-        IdentifierListElement* temp = this->first_;
-        while (temp->next_)
-        {
-            if (temp->next_->identifier_ == identifier)
-            {
-                IdentifierListElement* temp2 = temp->next_->next_;
-                delete temp->next_;
-                temp->next_ = temp2;
-
-                return;
-            }
-
-            temp = temp->next_;
-        }
-    }
-
-    /**
-        @brief Checks if a given Identifier is in the list and returns true if yes.
-        @param identifier The Identifier to check
-        @return True if the Identifier is in the list
-    */
-    bool IdentifierList::isInList(const Identifier* identifier) const
-    {
-        IdentifierListElement* temp = this->first_;
-        while (temp)
-        {
-            if (temp->identifier_ == identifier)
-                return true;
-
-            temp = temp->next_;
-        }
-
-        return false;
-    }
-
-    /**
-        @returns a string, containing a list of the names of all Identifiers in the list.
-    */
-    std::string IdentifierList::toString() const
-    {
-        IdentifierListElement* temp = this->first_;
-        std::string output = "";
-
-        while (temp)
-        {
-            output += temp->identifier_->getName();
-            output += " ";
-
-            temp = temp->next_;
-        }
-
-        return output;
-    }
-
-
-    // ###############################
-    // ###  IdentifierListElement  ###
-    // ###############################
-    /**
-        @brief Constructor: Creates the list-element with a given identifier.
-        @param identifier The Identifier to store
-    */
-    IdentifierListElement::IdentifierListElement(const Identifier* identifier)
-    {
-        this->identifier_ = identifier;
-        this->next_ = 0;
-    }
-}
Index: de/branches/core/src/orxonox/core/IdentifierList.h
===================================================================
--- /code/branches/core/src/orxonox/core/IdentifierList.h	(revision 812)
+++ 	(revision )
@@ -1,70 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/*!
-    @file IdentifierList.h
-    @brief Definition of the IdentifierList class
-
-    The IdentifierList is a single-linked list, containing Identifiers.
-    The IdentifierList is used to store parents and childs of each Identifier.
-*/
-
-#ifndef _IdentifierList_H__
-#define _IdentifierList_H__
-
-#include <string>
-
-#include "CorePrereqs.h"
-
-namespace orxonox
-{
-    //! The list-element of the IdentifierList
-    class IdentifierListElement
-    {
-        public:
-            IdentifierListElement(const Identifier* identifier);
-
-            const Identifier* identifier_;      //!< The identifier
-            IdentifierListElement* next_;       //!< The next element in the list
-    };
-
-    //! The IdentifierList contains Identifiers
-    class _CoreExport IdentifierList
-    {
-        public:
-            IdentifierList();
-            ~IdentifierList();
-            void add(const Identifier* identifier);
-            void remove(const Identifier* identifier);
-            bool isInList(const Identifier* identifier) const;
-            std::string toString() const;
-
-            IdentifierListElement* first_;      //!< The first element in the list
-    };
-}
-
-#endif /* _IdentifierList_H__ */
Index: /code/branches/core/src/orxonox/core/Iterator.h
===================================================================
--- /code/branches/core/src/orxonox/core/Iterator.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/Iterator.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file Iterator.h
     @brief Definition and implementation of the Iterator class.
Index: /code/branches/core/src/orxonox/core/Language.cc
===================================================================
--- /code/branches/core/src/orxonox/core/Language.cc	(revision 812)
+++ /code/branches/core/src/orxonox/core/Language.cc	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file Language.cc
     @brief Implementation of the Language and the LanguageEntry class.
Index: /code/branches/core/src/orxonox/core/Language.h
===================================================================
--- /code/branches/core/src/orxonox/core/Language.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/Language.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file Language.h
     @brief Definition of the Language and the LanguageEntry class.
Index: /code/branches/core/src/orxonox/core/MetaObjectList.cc
===================================================================
--- /code/branches/core/src/orxonox/core/MetaObjectList.cc	(revision 812)
+++ /code/branches/core/src/orxonox/core/MetaObjectList.cc	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file MetaObjectList.cc
     @brief Implementation of the MetaObjectList class.
Index: /code/branches/core/src/orxonox/core/MetaObjectList.h
===================================================================
--- /code/branches/core/src/orxonox/core/MetaObjectList.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/MetaObjectList.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file MetaObjectList.h
     @brief Definition of the MetaObjectList class.
Index: /code/branches/core/src/orxonox/core/ObjectList.h
===================================================================
--- /code/branches/core/src/orxonox/core/ObjectList.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/ObjectList.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file ObjectList.h
     @brief Definition and implementation of the ObjectList class.
@@ -88,13 +88,13 @@
 //            void remove(OrxonoxClass* object, bool bIterateForwards = true);
 
-            /** @returns the first element in the list */
+            /** @brief Returns the first element in the list. @return The first element */
             inline static Iterator<T> start()
                 { return Iterator<T>(getList()->first_); }
 
-            /** @returns the first element in the list */
+            /** @brief Returns the first element in the list. @return The first element */
             inline static Iterator<T> begin()
                 { return Iterator<T>(getList()->first_); }
 
-            /** @returns the last element in the list */
+            /** @brief Returns the last element in the list. @return The last element */
             inline static Iterator<T> end()
                 { return Iterator<T>(getList()->last_); }
@@ -134,5 +134,5 @@
 
     /**
-        @returns a pointer to the only existing instance for the given class T.
+        @brief Returns a pointer to the only existing instance for the given class T. @return The instance
     */
     template <class T>
Index: /code/branches/core/src/orxonox/core/OrxonoxClass.cc
===================================================================
--- /code/branches/core/src/orxonox/core/OrxonoxClass.cc	(revision 812)
+++ /code/branches/core/src/orxonox/core/OrxonoxClass.cc	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file OrxonoxClass.cc
     @brief Implementation of the OrxonoxClass Class.
Index: /code/branches/core/src/orxonox/core/OrxonoxClass.h
===================================================================
--- /code/branches/core/src/orxonox/core/OrxonoxClass.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/OrxonoxClass.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file OrxonoxClass.h
     @brief Definition of the OrxonoxClass Class.
@@ -37,4 +37,5 @@
 #define _OrxonoxClass_H__
 
+#include <list>
 #include <string>
 
@@ -59,5 +60,5 @@
             void setConfigValues() {};
 
-            /** @returns the Identifier of the object */
+            /** @brief Returns the Identifier of the object. @return The Identifier */
             inline Identifier* getIdentifier() const { return this->identifier_; }
 
@@ -65,66 +66,69 @@
             inline void setIdentifier(Identifier* identifier) { this->identifier_ = identifier; }
 
-            /** @returns the list of all parents of the object */
-            inline IdentifierList* getParents() const { return this->parents_; }
+            /** @brief Returns the list of all parents of the object. @return The list */
+            inline std::list<const Identifier*>* getParents() const { return this->parents_; }
 
-            /** @brief Sets the Parents of the object. Used by the RegisterObject-macro. */
-            inline void setParents(IdentifierList* parents) { this->parents_ = parents; }
+            /** @brief Creates the parents-list. */
+            inline void createParents() { this->parents_ = new std::list<const Identifier*>(); }
 
-            /** @returns the MetaObjectList of the object, containing a link to all ObjectLists and ObjectListElements the object is registered in. */
+//            /** @brief Sets the Parents of the object. Used by the RegisterObject-macro. */
+//            inline void setParents(std::list<const Identifier*>* parents) { this->parents_ = parents; }
+
+            /** @brief Returns the MetaObjectList of the object, containing a link to all ObjectLists and ObjectListElements the object is registered in. @return The list */
             inline MetaObjectList& getMetaList() { return this->metaList_; }
 
 
-            /** @returns true if the objects class is of the given type or a derivative. */
+            /** @brief Returns true if the objects class is of the given type or a derivative. */
             inline bool isA(const Identifier* identifier)
                 { return this->getIdentifier()->isA(identifier); }
-            /** @returns true if the objects class is exactly of the given type. */
+            /** @brief Returns true if the objects class is exactly of the given type. */
             inline bool isDirectlyA(const Identifier* identifier)
                 { return this->getIdentifier()->isDirectlyA(identifier); }
-            /** @returns true if the objects class is a child of the given type. */
+            /** @brief Returns true if the objects class is a child of the given type. */
             inline bool isChildOf(const Identifier* identifier)
                 { return this->getIdentifier()->isChildOf(identifier); }
-            /** @returns true if the objects class is a parent of the given type. */
+            /** @brief Returns true if the objects class is a parent of the given type. */
             inline bool isParentOf(const Identifier* identifier)
                 { return this->getIdentifier()->isParentOf(identifier); }
 
 
-            /** @returns true if the objects class is of the given type or a derivative. */
+            /** @brief Returns true if the objects class is of the given type or a derivative. */
             inline bool isA(const SubclassIdentifier<class B>* identifier)
                 { return this->getIdentifier()->isA(identifier->getIdentifier()); }
-            /** @returns true if the objects class is exactly of the given type. */
+            /** @brief Returns true if the objects class is exactly of the given type. */
             inline bool isDirectlyA(const SubclassIdentifier<class B>* identifier)
                 { return this->getIdentifier()->isDirectlyA(identifier->getIdentifier()); }
-            /** @returns true if the objects class is a child of the given type. */
+            /** @brief Returns true if the objects class is a child of the given type. */
             inline bool isChildOf(const SubclassIdentifier<class B>* identifier)
                 { return this->getIdentifier()->isChildOf(identifier->getIdentifier()); }
-            /** @returns true if the objects class is a parent of the given type. */
+            /** @brief Returns true if the objects class is a parent of the given type. */
             inline bool isParentOf(const SubclassIdentifier<class B>* identifier)
                 { return this->getIdentifier()->isParentOf(identifier->getIdentifier()); }
 
 
-            /** @returns true if the objects class is of the given type or a derivative. */
+            /** @brief Returns true if the objects class is of the given type or a derivative. */
             inline bool isA(const SubclassIdentifier<class B> identifier)
                 { return this->getIdentifier()->isA(identifier.getIdentifier()); }
-            /** @returns true if the objects class is exactly of the given type. */
+            /** @brief Returns true if the objects class is exactly of the given type. */
             inline bool isDirectlyA(const SubclassIdentifier<class B> identifier)
                 { return this->getIdentifier()->isDirectlyA(identifier.getIdentifier()); }
-            /** @returns true if the objects class is a child of the given type. */
+            /** @brief Returns true if the objects class is a child of the given type. */
             inline bool isChildOf(const SubclassIdentifier<class B> identifier)
                 { return this->getIdentifier()->isChildOf(identifier.getIdentifier()); }
-            /** @returns true if the objects class is a parent of the given type. */
+            /** @brief Returns true if the objects class is a parent of the given type. */
             inline bool isParentOf(const SubclassIdentifier<class B> identifier)
                 { return this->getIdentifier()->isParentOf(identifier.getIdentifier()); }
 
 
-            /** @returns true if the objects class is of the given type or a derivative. */
+            /** @brief Returns true if the objects class is of the given type or a derivative. */
             inline bool isA(const OrxonoxClass* object)
                 { return this->getIdentifier()->isA(object->getIdentifier()); }
-            /** @returns true if the objects class is exactly of the given type. */
+            /** @brief Returns true if the objects class is exactly of the given type. */
             inline bool isDirectlyA(const OrxonoxClass* object)
                 { return this->getIdentifier()->isDirectlyA(object->getIdentifier()); }
-            /** @returns true if the objects class is a child of the given type. */
+            /** @brief Returns true if the objects class is a child of the given type. */
             inline bool isChildOf(const OrxonoxClass* object)
                 { return this->getIdentifier()->isChildOf(object->getIdentifier()); }
-            /** @returns true if the objects class is a parent of the given type. */
+            /** @brief Returns true if the objects class is a parent of the given type. */
             inline bool isParentOf(const OrxonoxClass* object)
                 { return this->getIdentifier()->isParentOf(object->getIdentifier()); }
@@ -134,5 +138,5 @@
             inline virtual void setName(const std::string& name) { this->name_ = name; }
 
-            /** @returns the name of the object. */
+            /** @brief Returns the name of the object. @return The name */
             inline const std::string& getName() const { return this->name_; }
 
@@ -140,5 +144,5 @@
             inline virtual void setActive(bool bActive) { this->bActive_ = bActive; }
 
-            /** @returns the state of the objects activity. */
+            /** @brief Returns the state of the objects activity. @return The state of the activity */
             inline const bool isActive() const { return this->bActive_; }
 
@@ -146,15 +150,15 @@
             inline virtual void setVisible(bool bVisible) { this->bVisible_ = bVisible; }
 
-            /** @returns the state of the objects visibility. */
+            /** @brief Returns the state of the objects visibility. @return The state of the visibility */
             inline const bool isVisible() const { return this->bVisible_; }
 
         private:
-            Identifier* identifier_;        //!< The Identifier of the object
-            IdentifierList* parents_;       //!< List of all parents of the object
-            MetaObjectList metaList_;       //!< MetaObjectList, containing all ObjectLists and ObjectListElements the object is registered in
+            Identifier* identifier_;                    //!< The Identifier of the object
+            std::list<const Identifier*>* parents_;     //!< List of all parents of the object
+            MetaObjectList metaList_;                   //!< MetaObjectList, containing all ObjectLists and ObjectListElements the object is registered in
 
-            std::string name_;              //!< The name of the object
-            bool bActive_;                  //!< True = the object is active
-            bool bVisible_;                 //!< True = the object is visible
+            std::string name_;                          //!< The name of the object
+            bool bActive_;                              //!< True = the object is active
+            bool bVisible_;                             //!< True = the object is visible
     };
     template class _CoreExport orxonox::ClassIdentifier<OrxonoxClass>;
Index: /code/branches/core/src/orxonox/core/OutputHandler.cc
===================================================================
--- /code/branches/core/src/orxonox/core/OutputHandler.cc	(revision 812)
+++ /code/branches/core/src/orxonox/core/OutputHandler.cc	(revision 813)
@@ -25,4 +25,9 @@
  *
  */
+
+/**
+    @file OutputHandler.cc
+    @brief Implementation of the OutputHandler class.
+*/
 
 #include "DebugLevel.h"
@@ -53,5 +58,6 @@
 
     /**
-        @returns a reference to the only existing instance of the OutputHandler class.
+        @brief Returns a reference to the only existing instance of the OutputHandler class.
+        @return The instance
     */
     OutputHandler& OutputHandler::getOutStream()
Index: /code/branches/core/src/orxonox/core/OutputHandler.h
===================================================================
--- /code/branches/core/src/orxonox/core/OutputHandler.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/OutputHandler.h	(revision 813)
@@ -26,5 +26,5 @@
  */
 
-/*!
+/**
     @file OutputHandler.h
     @brief Definition of the OutputHandler class.
@@ -59,5 +59,5 @@
             static OutputHandler& getOutStream();
 
-            /** @returns a reference to the logfile. */
+            /** @brief Returns a reference to the logfile. @return The logfile */
             inline std::ofstream& getLogfile()
                 { return this->logfile_; }
@@ -67,5 +67,5 @@
                 { this->outputLevel_ = level; return *this; }
 
-            /** @returns the level of the incoming output. */
+            /** @brief Returns the level of the incoming output. @return The level */
             inline int getOutputLevel() const
                 { return this->outputLevel_; }
Index: /code/branches/core/src/orxonox/core/SignalHandler.cc
===================================================================
--- /code/branches/core/src/orxonox/core/SignalHandler.cc	(revision 812)
+++ /code/branches/core/src/orxonox/core/SignalHandler.cc	(revision 813)
@@ -25,4 +25,9 @@
  *
  */
+
+/**
+    @file SignalHandler.cc
+    @brief Implementation of the SignalHandler class.
+*/
 
 #include <assert.h>
Index: /code/branches/core/src/orxonox/core/SignalHandler.h
===================================================================
--- /code/branches/core/src/orxonox/core/SignalHandler.h	(revision 812)
+++ /code/branches/core/src/orxonox/core/SignalHandler.h	(revision 813)
@@ -26,7 +26,8 @@
  */
 
-/*!
- * @file SignalHandler.h
- */
+/**
+    @file SignalHandler.h
+    @brief Definition of the SignalHandler class.
+*/
 
 #ifndef _SignalHandler_H__
Index: /code/branches/core/src/orxonox/tools/Timer.h
===================================================================
--- /code/branches/core/src/orxonox/tools/Timer.h	(revision 812)
+++ /code/branches/core/src/orxonox/tools/Timer.h	(revision 813)
@@ -94,5 +94,5 @@
             /** @brief Unpauses the Timer - continues with the given state. */
             inline void unpauseTimer() { this->bActive_ = true; }
-            /** @returns true if the Timer is active (= not stoped, not paused). */
+            /** @brief Returns true if the Timer is active (= not stoped, not paused). @return True = Time is active */
             inline bool isActive() const { return this->bActive_; }
 
