Index: /code/branches/FICN/src/orxonox/core/CorePrereqs.h
===================================================================
--- /code/branches/FICN/src/orxonox/core/CorePrereqs.h	(revision 736)
+++ /code/branches/FICN/src/orxonox/core/CorePrereqs.h	(revision 737)
@@ -81,4 +81,5 @@
   class Language;
   class LanguageEntry;
+  class Loader;
   class MetaObjectList;
   template <class T>
Index: /code/branches/FICN/src/orxonox/core/DebugLevel.h
===================================================================
--- /code/branches/FICN/src/orxonox/core/DebugLevel.h	(revision 736)
+++ /code/branches/FICN/src/orxonox/core/DebugLevel.h	(revision 737)
@@ -48,4 +48,7 @@
     class _CoreExport DebugLevel : public OrxonoxClass
     {
+        template <class T>
+        friend class ClassIdentifier; // forward declaration because of the private destructor
+
         public:
             static int getSoftDebugLevel(OutputHandler::OutputDevice device = OutputHandler::LD_All);
Index: /code/branches/FICN/src/orxonox/core/Identifier.cc
===================================================================
--- /code/branches/FICN/src/orxonox/core/Identifier.cc	(revision 736)
+++ /code/branches/FICN/src/orxonox/core/Identifier.cc	(revision 737)
@@ -32,4 +32,5 @@
 
 #include "Identifier.h"
+#include "Factory.h"
 
 namespace orxonox
Index: /code/branches/FICN/src/orxonox/core/Identifier.h
===================================================================
--- /code/branches/FICN/src/orxonox/core/Identifier.h	(revision 736)
+++ /code/branches/FICN/src/orxonox/core/Identifier.h	(revision 737)
@@ -60,14 +60,11 @@
 #include "ObjectList.h"
 #include "IdentifierList.h"
-#include "Factory.h"
 #include "Debug.h"
-// These two files would actually be need, but they would produce
-// circular dependencies. Anyway, it does compile without them
-// #include "OrxonoxClass.h"
-// #include "MetaObjectList.h"
+#include "Iterator.h"
 
 namespace orxonox
 {
-    class BaseObject; // Forward declaration
+    class BaseFactory; // Forward declaration
+    class BaseObject;  // Forward declaration
 
     // ###############################
@@ -100,11 +97,8 @@
 
         public:
-            /** @brief Sets the Factory.
-             *  @param factory The factory to assign
-             */
+            /** @brief Sets the Factory. @param factory The factory to assign */
             inline void addFactory(BaseFactory* factory) { this->factory_ = factory; }
 
             BaseObject* fabricate();
-
             bool isA(const Identifier* identifier) const;
             bool isDirectlyA(const Identifier* identifier) const;
@@ -112,4 +106,9 @@
             bool isParentOf(const Identifier* identifier) const;
 
+            static std::map<std::string, Identifier*>& getIdentifierMap();
+
+            /** @brief Removes all objects of the corresponding class. */
+            virtual void removeObjects() const = 0;
+
             /** @returns the name of the class the Identifier belongs to. */
             inline const std::string& getName() const { return this->name_; }
@@ -137,6 +136,4 @@
             inline void setConfigValueContainer(const std::string& varname, ConfigValueContainer* container)
                 { this->configValues_[varname] = container; }
-
-            static std::map<std::string, Identifier*>& getIdentifierMap();
 
         private:
@@ -193,4 +190,5 @@
             static void addObject(T* object);
             static ClassIdentifier<T>* getIdentifier();
+            void removeObjects() const;
             void setName(const std::string& name);
 
@@ -288,4 +286,13 @@
     }
 
+    /**
+        @brief Removes all objects of the corresponding class.
+    */
+    template <class T>
+    void ClassIdentifier<T>::removeObjects() const
+    {
+        for (Iterator<T> it = ObjectList<T>::start(); it;)
+            delete *(it++);
+    }
 
     // ###############################
Index: /code/branches/FICN/src/orxonox/core/Language.h
===================================================================
--- /code/branches/FICN/src/orxonox/core/Language.h	(revision 736)
+++ /code/branches/FICN/src/orxonox/core/Language.h	(revision 737)
@@ -88,4 +88,7 @@
     class _CoreExport Language : public OrxonoxClass
     {
+        template <class T>
+        friend class ClassIdentifier; // forward declaration because of the private destructor
+
         public:
             static Language& getLanguage();
Index: /code/branches/FICN/src/orxonox/core/ObjectList.h
===================================================================
--- /code/branches/FICN/src/orxonox/core/ObjectList.h	(revision 736)
+++ /code/branches/FICN/src/orxonox/core/ObjectList.h	(revision 737)
@@ -90,4 +90,8 @@
             /** @returns the first element in the list */
             inline static Iterator<T> start()
+                { return Iterator<T>(getList()->first_); }
+
+            /** @returns the first element in the list */
+            inline static Iterator<T> begin()
                 { return Iterator<T>(getList()->first_); }
 
