Index: code/branches/cpp11_v2/test/core/object/IteratorTest.cc
===================================================================
--- code/branches/cpp11_v2/test/core/object/IteratorTest.cc	(revision 10919)
+++ code/branches/cpp11_v2/test/core/object/IteratorTest.cc	(revision 10920)
@@ -55,5 +55,6 @@
     TEST_F(IteratorTest, CanAssignIterator)
     {
-        Iterator<TestInterface> it = ObjectList<TestInterface>::begin();
+        ObjectList<TestInterface> list;
+        Iterator<TestInterface> it = list.begin();
     }
 
@@ -61,5 +62,6 @@
     {
         size_t i = 0;
-        for (Iterator<TestInterface> it = ObjectList<TestInterface>::begin(); it != ObjectList<TestInterface>::end(); ++it)
+        ObjectList<TestInterface> list;
+        for (Iterator<TestInterface> it = list.begin(); it != list.end(); ++it)
             ++i;
         EXPECT_EQ(0u, i);
@@ -77,5 +79,6 @@
 
         // iterate over interfaces but use a TestClass iterator - now we can call TestClass::test()
-        for (Iterator<TestClass> it = ObjectList<TestInterface>::begin(); it != ObjectList<TestInterface>::end(); ++it)
+        ObjectList<TestInterface> list;
+        for (Iterator<TestClass> it = list.begin(); it != list.end(); ++it)
             it->test();
     }
@@ -87,5 +90,6 @@
 
         size_t i = 0;
-        for (Iterator<TestInterface> it = ObjectList<TestInterface>::begin(); it != ObjectList<TestInterface>::end(); ++it)
+        ObjectList<TestInterface> list;
+        for (Iterator<TestInterface> it = list.begin(); it != list.end(); ++it)
         {
             ++i;
@@ -102,5 +106,6 @@
 
         size_t i = 0;
-        for (Iterator<TestClass> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
+        ObjectList<TestClass> list;
+        for (Iterator<TestClass> it = list.begin(); it != list.end(); ++it)
         {
             ++i;
@@ -116,5 +121,6 @@
 
         size_t i = 0;
-        for (Iterator<TestClass> it = ObjectList<TestInterface>::begin(); it != ObjectList<TestInterface>::end(); ++it)
+        ObjectList<TestInterface> list;
+        for (Iterator<TestClass> it = list.begin(); it != list.end(); ++it)
         {
             ++i;
@@ -131,5 +137,6 @@
 
         size_t i = 0;
-        for (Iterator<TestInterface> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
+        ObjectList<TestClass> list;
+        for (Iterator<TestInterface> it = list.begin(); it != list.end(); ++it)
         {
             ++i;
Index: code/branches/cpp11_v2/test/core/object/ListableTest.cc
===================================================================
--- code/branches/cpp11_v2/test/core/object/ListableTest.cc	(revision 10919)
+++ code/branches/cpp11_v2/test/core/object/ListableTest.cc	(revision 10920)
@@ -63,5 +63,5 @@
     {
         ListableClassTest test;
-        EXPECT_EQ(1u, ObjectList<ListableClassTest>::size());
+        EXPECT_EQ(1u, ObjectList<ListableClassTest>().size());
         EXPECT_TRUE(objectListContains<ListableClassTest>(&test));
     }
@@ -70,7 +70,7 @@
     {
         ListableSubclassTest test;
-        EXPECT_EQ(1u, ObjectList<ListableClassTest>::size());
+        EXPECT_EQ(1u, ObjectList<ListableClassTest>().size());
         EXPECT_TRUE(objectListContains<ListableClassTest>(&test));
-        EXPECT_EQ(1u, ObjectList<ListableSubclassTest>::size());
+        EXPECT_EQ(1u, ObjectList<ListableSubclassTest>().size());
         EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test));
     }
@@ -78,26 +78,26 @@
     TEST_F(ListableTest, RemovesFromObjectList)
     {
-        EXPECT_EQ(0u, ObjectList<ListableClassTest>::size());
+        EXPECT_EQ(0u, ObjectList<ListableClassTest>().size());
         {
             ListableClassTest test;
-            EXPECT_EQ(1u, ObjectList<ListableClassTest>::size());
+            EXPECT_EQ(1u, ObjectList<ListableClassTest>().size());
             EXPECT_TRUE(objectListContains<ListableClassTest>(&test));
         }
-        EXPECT_EQ(0u, ObjectList<ListableClassTest>::size());
+        EXPECT_EQ(0u, ObjectList<ListableClassTest>().size());
     }
 
     TEST_F(ListableTest, RemovesFromAllObjectLists)
     {
-        EXPECT_EQ(0u, ObjectList<ListableClassTest>::size());
-        EXPECT_EQ(0u, ObjectList<ListableSubclassTest>::size());
+        EXPECT_EQ(0u, ObjectList<ListableClassTest>().size());
+        EXPECT_EQ(0u, ObjectList<ListableSubclassTest>().size());
         {
             ListableSubclassTest test;
-            EXPECT_EQ(1u, ObjectList<ListableClassTest>::size());
+            EXPECT_EQ(1u, ObjectList<ListableClassTest>().size());
             EXPECT_TRUE(objectListContains<ListableClassTest>(&test));
-            EXPECT_EQ(1u, ObjectList<ListableSubclassTest>::size());
+            EXPECT_EQ(1u, ObjectList<ListableSubclassTest>().size());
             EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test));
         }
-        EXPECT_EQ(0u, ObjectList<ListableClassTest>::size());
-        EXPECT_EQ(0u, ObjectList<ListableSubclassTest>::size());
+        EXPECT_EQ(0u, ObjectList<ListableClassTest>().size());
+        EXPECT_EQ(0u, ObjectList<ListableSubclassTest>().size());
     }
 
Index: code/branches/cpp11_v2/test/core/object/ObjectListIteratorTest.cc
===================================================================
--- code/branches/cpp11_v2/test/core/object/ObjectListIteratorTest.cc	(revision 10919)
+++ code/branches/cpp11_v2/test/core/object/ObjectListIteratorTest.cc	(revision 10920)
@@ -55,5 +55,6 @@
     TEST_F(ObjectListIteratorTest, CanAssignIterator)
     {
-        ObjectListIterator<TestClass> it = ObjectList<TestClass>::begin();
+        ObjectList<TestClass> list;
+        ObjectListIterator<TestClass> it = list.begin();
     }
 
@@ -61,5 +62,6 @@
     {
         size_t i = 0;
-        for (ObjectListIterator<TestClass> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
+        ObjectList<TestClass> list;
+        for (ObjectListIterator<TestClass> it = list.begin(); it != list.end(); ++it)
             ++i;
         EXPECT_EQ(0u, i);
@@ -74,5 +76,6 @@
 
         size_t i = 0;
-        for (ObjectListIterator<TestClass> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
+        ObjectList<TestClass> list;
+        for (ObjectListIterator<TestClass> it = list.begin(); it != list.end(); ++it)
         {
             ++i;
@@ -92,5 +95,6 @@
 
         size_t i = 0;
-        for (ObjectListIterator<TestClass> it = ObjectList<TestClass>::rbegin(); it != ObjectList<TestClass>::rend(); --it)
+        ObjectList<TestClass> list;
+        for (ObjectListIterator<TestClass> it = list.rbegin(); it != list.rend(); --it)
         {
             ++i;
@@ -113,5 +117,6 @@
         EXPECT_CALL(test3, test());
 
-        for (ObjectListIterator<TestClass> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
+        ObjectList<TestClass> list;
+        for (ObjectListIterator<TestClass> it = list.begin(); it != list.end(); ++it)
             it->test();
     }
Index: code/branches/cpp11_v2/test/core/object/ObjectListTest.cc
===================================================================
--- code/branches/cpp11_v2/test/core/object/ObjectListTest.cc	(revision 10919)
+++ code/branches/cpp11_v2/test/core/object/ObjectListTest.cc	(revision 10920)
@@ -15,4 +15,5 @@
             public:
                 ListableTest() { RegisterObject(ListableTest); }
+                ListableTest(Context* context) : Listable(context) { RegisterObject(ListableTest); }
                 MOCK_METHOD0(test, void());
         };
@@ -103,3 +104,47 @@
             object->test();
     }
+
+    TEST_F(ObjectListTest, UsesCorrectContext)
+    {
+        Context context1(Context::getRootContext());
+        Context context2(Context::getRootContext());
+
+        ListableTest test1(&context1);
+        ListableTest test2(&context1);
+        ListableTest test3(&context2);
+
+        EXPECT_EQ(3, ObjectList<ListableTest>().size());
+        EXPECT_EQ(2, ObjectList<ListableTest>(&context1).size());
+        EXPECT_EQ(1, ObjectList<ListableTest>(&context2).size());
+    }
+
+    TEST_F(ObjectListTest, CanIterateOverCorrectContext)
+    {
+        Context context1(Context::getRootContext());
+        Context context2(Context::getRootContext());
+
+        ListableTest test1(&context1);
+        ListableTest test2(&context1);
+        ListableTest test3(&context2);
+
+        {
+            size_t i = 0;
+            for (ListableTest* object : ObjectList<ListableTest>(&context1))
+            {
+                ++i;
+                if (i == 1u) EXPECT_EQ(&test1, object);
+                if (i == 2u) EXPECT_EQ(&test2, object);
+            }
+            EXPECT_EQ(2u, i);
+        }
+        {
+            size_t i = 0;
+            for (ListableTest* object : ObjectList<ListableTest>(&context2))
+            {
+                ++i;
+                if (i == 1u) EXPECT_EQ(&test3, object);
+            }
+            EXPECT_EQ(1u, i);
+        }
+    }
 }
