Index: code/branches/core6/src/libraries/core/class/Identifier.cc
===================================================================
--- code/branches/core6/src/libraries/core/class/Identifier.cc	(revision 9592)
+++ code/branches/core6/src/libraries/core/class/Identifier.cc	(revision 9593)
@@ -52,5 +52,5 @@
         : classID_(IdentifierManager::classIDCounter_s++)
     {
-        this->objects_ = new ObjectListBase(this);
+        this->objects_ = new ObjectListBase();
 
         this->bCreatedOneObject_ = false;
Index: code/branches/core6/src/libraries/core/class/Identifier.h
===================================================================
--- code/branches/core6/src/libraries/core/class/Identifier.h	(revision 9592)
+++ code/branches/core6/src/libraries/core/class/Identifier.h	(revision 9593)
@@ -428,5 +428,5 @@
     {
         orxout(verbose, context::object_list) << "Added object to " << this->getName() << "-list." << endl;
-        object->metaList_->add(this->objects_, this->objects_->add(new ObjectListElement<T>(object)));
+        object->metaList_->add(this->objects_, this->objects_->add(object));
     }
 
Index: code/branches/core6/src/libraries/core/object/MetaObjectList.cc
===================================================================
--- code/branches/core6/src/libraries/core/object/MetaObjectList.cc	(revision 9592)
+++ code/branches/core6/src/libraries/core/object/MetaObjectList.cc	(revision 9593)
@@ -48,17 +48,5 @@
     MetaObjectListElement::~MetaObjectListElement()
     {
-        orxout(verbose, context::object_list) << "Removing Object from " << this->list_->getIdentifier()->getName() << "-list." << endl;
-        this->list_->notifyIterators(this->element_->objectBase_);
-
-        if (this->element_->next_)
-            this->element_->next_->prev_ = this->element_->prev_;
-        else
-            this->list_->last_ = this->element_->prev_; // If there is no next_, we deleted the last object and have to update the last_ pointer of the list
-
-        if (this->element_->prev_)
-            this->element_->prev_->next_ = this->element_->next_;
-        else
-            this->list_->first_ = this->element_->next_; // If there is no prev_, we deleted the first object and have to update the first_ pointer of the list
-
+        this->list_->removeElement(this->element_);
         delete this->element_;
     }
Index: code/branches/core6/src/libraries/core/object/ObjectListBase.cc
===================================================================
--- code/branches/core6/src/libraries/core/object/ObjectListBase.cc	(revision 9592)
+++ code/branches/core6/src/libraries/core/object/ObjectListBase.cc	(revision 9593)
@@ -36,4 +36,5 @@
 #include <set>
 #include "Iterator.h"
+#include "Listable.h"
 #include "ObjectListIterator.h"
 
@@ -43,7 +44,6 @@
         @brief Constructor: Sets default values.
     */
-    ObjectListBase::ObjectListBase(Identifier* identifier)
+    ObjectListBase::ObjectListBase()
     {
-        this->identifier_ = identifier;
         this->first_ = 0;
         this->last_ = 0;
@@ -81,5 +81,5 @@
         @return The pointer to the new ObjectListBaseElement, needed by the MetaObjectList of the added object
     */
-    ObjectListBaseElement* ObjectListBase::add(ObjectListBaseElement* element)
+    ObjectListBaseElement* ObjectListBase::addElement(ObjectListBaseElement* element)
     {
         if (!this->last_)
@@ -100,3 +100,19 @@
         return this->last_;
     }
+
+    void ObjectListBase::removeElement(ObjectListBaseElement* element)
+    {
+        orxout(verbose, context::object_list) << "Removing Object from " << element->objectBase_->getIdentifier()->getName() << "-list." << endl;
+        this->notifyIterators(element->objectBase_);
+
+        if (element->next_)
+            element->next_->prev_ = element->prev_;
+        else
+            this->last_ = element->prev_; // If there is no next_, we deleted the last object and have to update the last_ pointer of the list
+
+        if (element->prev_)
+            element->prev_->next_ = element->next_;
+        else
+            this->first_ = element->next_; // If there is no prev_, we deleted the first object and have to update the first_ pointer of the list
+    }
 }
Index: code/branches/core6/src/libraries/core/object/ObjectListBase.h
===================================================================
--- code/branches/core6/src/libraries/core/object/ObjectListBase.h	(revision 9592)
+++ code/branches/core6/src/libraries/core/object/ObjectListBase.h	(revision 9593)
@@ -93,11 +93,14 @@
     class _CoreExport ObjectListBase
     {
-        friend class MetaObjectListElement;
-
         public:
-            ObjectListBase(Identifier* identifier);
+            ObjectListBase();
             ~ObjectListBase();
 
-            ObjectListBaseElement* add(ObjectListBaseElement* element);
+            template <class T>
+            inline ObjectListBaseElement* add(T* object)
+                { return this->addElement(new ObjectListElement<T>(object)); }
+
+            ObjectListBaseElement* addElement(ObjectListBaseElement* element);
+            void removeElement(ObjectListBaseElement* element);
 
             /// Helper struct, used to export an element and the list to an instance of Iterator.
@@ -144,8 +147,5 @@
             void notifyIterators(Listable* object) const;
 
-            inline Identifier* getIdentifier() const { return this->identifier_; }
-
         private:
-            Identifier* identifier_;                 //!< The Iterator owning this list
             ObjectListBaseElement* first_;           //!< The first element in the list
             ObjectListBaseElement* last_;            //!< The last element in the list
