Index: code/branches/cpp11_v2/src/libraries/core/ClassTreeMask.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/core/ClassTreeMask.cc	(revision 10919)
+++ code/branches/cpp11_v2/src/libraries/core/ClassTreeMask.cc	(revision 10920)
@@ -851,5 +851,5 @@
             this->objectIterator_ = Context::getRootContext()->getObjectList(this->subclassIterator_->first)->begin();
         else
-            this->objectIterator_ = ObjectList<BaseObject>::end();
+            this->objectIterator_ = ObjectList<BaseObject>().end();
 
         // Check if the iterator points on a valid object. If not, go to the next object by calling ++
Index: code/branches/cpp11_v2/src/libraries/core/Loader.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/core/Loader.cc	(revision 10919)
+++ code/branches/cpp11_v2/src/libraries/core/Loader.cc	(revision 10920)
@@ -207,5 +207,5 @@
         if (!file)
             return;
-        for (ObjectList<BaseObject>::iterator it = ObjectList<BaseObject>::begin(); it; )
+        for (ObjectList<BaseObject>::iterator it = ObjectList<BaseObject>().begin(); it; )
         {
             if ((it->getFile() == file) && mask.isIncluded(it->getIdentifier()))
Index: code/branches/cpp11_v2/src/libraries/core/class/Identifier.h
===================================================================
--- code/branches/cpp11_v2/src/libraries/core/class/Identifier.h	(revision 10919)
+++ code/branches/cpp11_v2/src/libraries/core/class/Identifier.h	(revision 10920)
@@ -415,8 +415,6 @@
     void ClassIdentifier<T>::destroyObjects(Listable*)
     {
-        ObjectListBase* objectList = Context::getRootContext()->getObjectList(this);
-        ObjectListElement<T>* begin = static_cast<ObjectListElement<T>*>(objectList->begin());
-        ObjectListElement<T>* end = static_cast<ObjectListElement<T>*>(objectList->end());
-        for (typename ObjectList<T>::iterator it = begin; it != end; )
+        ObjectList<T> list(Context::getRootContext()->getObjectList(this));
+        for (typename ObjectList<T>::iterator it = list.begin(); it != list.end(); )
             this->destroyObject(*(it++));
     }
Index: code/branches/cpp11_v2/src/libraries/core/object/ObjectList.h
===================================================================
--- code/branches/cpp11_v2/src/libraries/core/object/ObjectList.h	(revision 10919)
+++ code/branches/cpp11_v2/src/libraries/core/object/ObjectList.h	(revision 10920)
@@ -71,52 +71,28 @@
             typedef ObjectListIterator<T> iterator;
 
-            /// Returns the size of the list (for the root context)
-            inline static size_t size()
-            {   return size(Context::getRootContext());   }
+            ObjectList() : ObjectList(Context::getRootContext()) {}
+            ObjectList(Context* context) : ObjectList(context->getObjectList<T>()) {}
+            ObjectList(ObjectListBase* list) : list_(list) {}
+
             /// Returns the size of the list
-            inline static size_t size(Context* context)
-            {
-                return context->getObjectList<T>()->size();
-            }
+            inline size_t size()
+            {   return this->list_->size();   }
 
-            /// Returns an Iterator to the first element in the list (for the root context).
-            inline static ObjectListIterator<T> begin()
-            {   return begin(Context::getRootContext());   }
             /// Returns an Iterator to the first element in the list.
-            inline static ObjectListIterator<T> begin(Context* context)
-            {
-                ObjectListBase* list = context->getObjectList<T>();
-                return static_cast<ObjectListElement<T>*>(list->begin());
-            }
+            inline ObjectListIterator<T> begin()
+            {   return static_cast<ObjectListElement<T>*>(this->list_->begin());   }
+            /// Returns an Iterator to the element after the last element in the list.
+            inline ObjectListIterator<T> end()
+            {   return static_cast<ObjectListElement<T>*>(this->list_->end());   }
 
-            /// Returns an Iterator to the element after the last element in the list (for the root context).
-            inline static ObjectListIterator<T> end()
-            {   return end(Context::getRootContext());   }
-            /// Returns an Iterator to the element after the last element in the list.
-            inline static ObjectListIterator<T> end(Context* context)
-            {
-                ObjectListBase* list = context->getObjectList<T>();
-                return static_cast<ObjectListElement<T>*>(list->end());
-            }
+            /// Returns an Iterator to the last element in the list.
+            inline ObjectListIterator<T> rbegin()
+            {   return static_cast<ObjectListElement<T>*>(this->list_->rbegin());   }
+            /// Returns an Iterator to the element before the first element in the list.
+            inline ObjectListIterator<T> rend()
+            {   return static_cast<ObjectListElement<T>*>(this->list_->rend());   }
 
-            /// Returns an Iterator to the last element in the list (for the root context).
-            inline static ObjectListIterator<T> rbegin()
-            {   return rbegin(Context::getRootContext());   }
-            /// Returns an Iterator to the last element in the list.
-            inline static ObjectListIterator<T> rbegin(Context* context)
-            {
-                ObjectListBase* list = context->getObjectList<T>();
-                return static_cast<ObjectListElement<T>*>(list->rbegin());
-            }
-
-            /// Returns an Iterator to the element before the first element in the list (for the root context).
-            inline static ObjectListIterator<T> rend()
-            {   return rend(Context::getRootContext());   }
-            /// Returns an Iterator to the element before the first element in the list.
-            inline static ObjectListIterator<T> rend(Context* context)
-            {
-                ObjectListBase* list = context->getObjectList<T>();
-                return static_cast<ObjectListElement<T>*>(list->rend());
-            }
+        private:
+            ObjectListBase* list_;
     };
 }
Index: code/branches/cpp11_v2/src/libraries/core/object/ObjectListIterator.h
===================================================================
--- code/branches/cpp11_v2/src/libraries/core/object/ObjectListIterator.h	(revision 10919)
+++ code/branches/cpp11_v2/src/libraries/core/object/ObjectListIterator.h	(revision 10920)
@@ -41,5 +41,6 @@
     Usage:
     @code
-    for (ObjectListIterator<myClass> it = ObjectList<myClass>::begin(); it != ObjectList<myClass>::end(); ++it)
+    ObjectList<myClass> list;
+    for (ObjectListIterator<myClass> it = list.begin(); it != list.end(); ++it)
     {
         it->someFunction(...);
Index: code/branches/cpp11_v2/src/libraries/network/packet/Gamestate.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/packet/Gamestate.cc	(revision 10919)
+++ code/branches/cpp11_v2/src/libraries/network/packet/Gamestate.cc	(revision 10920)
@@ -126,5 +126,5 @@
   mem += GamestateHeader::getSize();
   ObjectList<Synchronisable>::iterator it;
-  for(it = ObjectList<Synchronisable>::begin(); it; ++it)
+  for(it = ObjectList<Synchronisable>().begin(); it; ++it)
   {
 
