Index: /code/branches/core6/src/libraries/core/CorePrereqs.h
===================================================================
--- /code/branches/core6/src/libraries/core/CorePrereqs.h	(revision 9596)
+++ /code/branches/core6/src/libraries/core/CorePrereqs.h	(revision 9597)
@@ -167,6 +167,4 @@
     class MemoryArchive;
     class MemoryArchiveFactory;
-    class MetaObjectList;
-    class MetaObjectListElement;
     class Namespace;
     class NamespaceNode;
Index: /code/branches/core6/src/libraries/core/class/Identifier.h
===================================================================
--- /code/branches/core6/src/libraries/core/class/Identifier.h	(revision 9596)
+++ /code/branches/core6/src/libraries/core/class/Identifier.h	(revision 9597)
@@ -90,5 +90,4 @@
 
 #include "util/Output.h"
-#include "core/object/MetaObjectList.h"
 #include "core/object/ObjectList.h"
 #include "core/object/ObjectListBase.h"
@@ -428,5 +427,5 @@
     {
         orxout(verbose, context::object_list) << "Added object to " << this->getName() << "-list." << endl;
-        object->metaList_->add(this->objects_, this->objects_->add(object));
+        object->elements_.push_back(this->objects_->add(object));
     }
 
Index: /code/branches/core6/src/libraries/core/object/CMakeLists.txt
===================================================================
--- /code/branches/core6/src/libraries/core/object/CMakeLists.txt	(revision 9596)
+++ /code/branches/core6/src/libraries/core/object/CMakeLists.txt	(revision 9597)
@@ -3,5 +3,4 @@
   Destroyable.cc
   Listable.cc
-  MetaObjectList.cc
   ObjectListBase.cc
 )
Index: /code/branches/core6/src/libraries/core/object/Listable.cc
===================================================================
--- /code/branches/core6/src/libraries/core/object/Listable.cc	(revision 9596)
+++ /code/branches/core6/src/libraries/core/object/Listable.cc	(revision 9597)
@@ -33,15 +33,14 @@
 
 #include "Listable.h"
-
-#include "core/object/MetaObjectList.h"
+#include "ObjectListBase.h"
 
 namespace orxonox
 {
     /**
-        @brief Constructor: creates the meta-object-list.
+        @brief Constructor: Allocates space in the element list.
     */
     Listable::Listable()
     {
-        this->metaList_ = new MetaObjectList();
+        this->elements_.reserve(6);
     }
 
@@ -59,7 +58,7 @@
     void Listable::unregisterObject()
     {
-        if (this->metaList_)
-            delete this->metaList_;
-        this->metaList_ = 0;
+        for (size_t i = 0; i < this->elements_.size(); ++i)
+            delete this->elements_[i];
+        this->elements_.clear();
     }
 }
Index: /code/branches/core6/src/libraries/core/object/Listable.h
===================================================================
--- /code/branches/core6/src/libraries/core/object/Listable.h	(revision 9596)
+++ /code/branches/core6/src/libraries/core/object/Listable.h	(revision 9597)
@@ -37,4 +37,7 @@
 
 #include "core/CorePrereqs.h"
+
+#include <vector>
+
 #include "core/class/Identifiable.h"
 
@@ -42,5 +45,5 @@
 {
     /**
-        @brief Listable stores the MetaObjectList which is used when storing instances in object lists.
+        @brief Listable stores the entries of all object lists pointing to this instance.
     */
     class _CoreExport Listable : virtual public Identifiable
@@ -56,5 +59,5 @@
 
         private:
-            MetaObjectList* metaList_; //!< MetaObjectList, containing all ObjectLists and ObjectListElements the object is registered in
+            std::vector<ObjectListBaseElement*> elements_; //!< The corresponding ObjectListElements in all object lists the object is registered in
     };
 }
Index: de/branches/core6/src/libraries/core/object/MetaObjectList.cc
===================================================================
--- /code/branches/core6/src/libraries/core/object/MetaObjectList.cc	(revision 9596)
+++ 	(revision )
@@ -1,90 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   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
-    @brief Implementation of the MetaObjectList class.
-*/
-
-#include "MetaObjectList.h"
-
-#include "util/Output.h"
-#include "core/class/Identifier.h"
-#include "ObjectListBase.h"
-
-namespace orxonox
-{
-    // ###############################
-    // ###  MetaObjectListElement  ###
-    // ###############################
-    /**
-        @brief Destructor: Removes the ObjectListBaseElement from the ObjectListBase by linking next_ and prev_ of the ObjectListBaseElement.
-    */
-    MetaObjectListElement::~MetaObjectListElement()
-    {
-        delete this->element_;
-    }
-
-
-    // ###############################
-    // ###     MetaObjectList      ###
-    // ###############################
-    /**
-        @brief Constructor: Sets first_ to zero.
-    */
-    MetaObjectList::MetaObjectList()
-    {
-        this->first_ = 0;
-    }
-
-    /**
-        @brief Destructor: Removes all elements from the list, causing them to remove the stored ObjectListElement from the ObjectList.
-    */
-    MetaObjectList::~MetaObjectList()
-    {
-        MetaObjectListElement* temp;
-        while (this->first_)
-        {
-            temp = this->first_->next_;
-            delete this->first_;
-            this->first_ = temp;
-        }
-    }
-
-    /**
-        @brief Adds an ObjectList and an element of that list to the MetaObjectList.
-        @param list The ObjectList wherein the element is
-        @param element The element wherein the object is
-    */
-    void MetaObjectList::add(ObjectListBase* list, ObjectListBaseElement* element)
-    {
-        MetaObjectListElement* temp = this->first_;
-        this->first_ = new MetaObjectListElement(list, element);
-        this->first_->next_ = temp;
-    }
-}
Index: de/branches/core6/src/libraries/core/object/MetaObjectList.h
===================================================================
--- /code/branches/core6/src/libraries/core/object/MetaObjectList.h	(revision 9596)
+++ 	(revision )
@@ -1,86 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   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
-    @ingroup Object ObjectList
-    @brief Declaration of the MetaObjectList class.
-
-    The MetaObjectList is a single-linked list, containing all list-elements and their
-    lists wherein the object, owning the MetaObjectList, is registered.
-    This allows much faster deletion of objects because no iteration is needed.
-*/
-
-#ifndef _MetaObjectList_H__
-#define _MetaObjectList_H__
-
-#include "core/CorePrereqs.h"
-
-namespace orxonox
-{
-    // ###############################
-    // ###  MetaObjectListElement  ###
-    // ###############################
-    /// The list-element of the MetaObjectList
-    class _CoreExport MetaObjectListElement
-    {
-        public:
-            /**
-                @brief Constructor: Creates the list-element with given list and element.
-            */
-            MetaObjectListElement(ObjectListBase* list, ObjectListBaseElement* element) : next_(0), element_(element), list_(list) {}
-            ~MetaObjectListElement();
-
-            MetaObjectListElement* next_;       //!< The next Element in the list
-            ObjectListBaseElement* element_;    //!< The list element, containing the object
-            ObjectListBase* list_;              //!< The list, containing the element
-    };
-
-
-    // ###############################
-    // ###     MetaObjectList      ###
-    // ###############################
-    /**
-        @brief The MetaObjectList contains ObjectListBaseElements and their ObjectListBases.
-
-        The MetaObjectList is a single-linked list, containing all list-elements and their
-        lists wherein the object that owns the MetaObjectList is registered.
-        This allows much faster deletion of objects because no iteration is needed.
-    */
-    class _CoreExport MetaObjectList
-    {
-        public:
-            MetaObjectList();
-            ~MetaObjectList();
-            void add(ObjectListBase* list, ObjectListBaseElement* element);
-
-            MetaObjectListElement* first_;      //!< The first element in the list
-    };
-}
-
-#endif /* _MetaObjectList_H__ */
Index: /code/branches/core6/src/libraries/core/object/ObjectListBase.cc
===================================================================
--- /code/branches/core6/src/libraries/core/object/ObjectListBase.cc	(revision 9596)
+++ /code/branches/core6/src/libraries/core/object/ObjectListBase.cc	(revision 9597)
@@ -84,7 +84,6 @@
         @brief Adds a new object to the end of the list.
         @param element The element to add
-        @return The pointer to the new ObjectListBaseElement, needed by the MetaObjectList of the added object
     */
-    ObjectListBaseElement* ObjectListBase::addElement(ObjectListBaseElement* element)
+    void ObjectListBase::addElement(ObjectListBaseElement* element)
     {
         if (!this->last_)
@@ -102,8 +101,9 @@
             temp->next_ = this->last_;
         }
-
-        return this->last_;
     }
 
+    /**
+     * @brief Removes the element from the list
+     */
     void ObjectListBase::removeElement(ObjectListBaseElement* element)
     {
Index: /code/branches/core6/src/libraries/core/object/ObjectListBase.h
===================================================================
--- /code/branches/core6/src/libraries/core/object/ObjectListBase.h	(revision 9596)
+++ /code/branches/core6/src/libraries/core/object/ObjectListBase.h	(revision 9597)
@@ -101,7 +101,11 @@
             template <class T>
             inline ObjectListBaseElement* add(T* object)
-                { return this->addElement(new ObjectListElement<T>(object, this)); }
+            {
+                ObjectListBaseElement* element = new ObjectListElement<T>(object, this);
+                this->addElement(element);
+                return element;
+            }
 
-            ObjectListBaseElement* addElement(ObjectListBaseElement* element);
+            void addElement(ObjectListBaseElement* element);
             void removeElement(ObjectListBaseElement* element);
 
