Index: /orxonox/trunk/src/lib/lang/class_list.cc
===================================================================
--- /orxonox/trunk/src/lib/lang/class_list.cc	(revision 4751)
+++ /orxonox/trunk/src/lib/lang/class_list.cc	(revision 4752)
@@ -19,4 +19,5 @@
 #include "base_object.h"
 
+#include "list.h"
 #include "compiler.h"
 #include "debug.h"
@@ -32,8 +33,8 @@
 ClassList::ClassList(const long& classID, const char* className)
 {
-  this->objectCount = 0;
   this->next = NULL;
   this->className = className;
   this->classID = classID;
+  this->objectList = new tList<BaseObject>;
 
   ++ClassList::classCount;
@@ -85,5 +86,5 @@
   }
 
-  ++regClass->objectCount;
+  regClass->objectList->add(objectPointer);
 }
 
@@ -99,5 +100,5 @@
     if (objectPointer->isA(tmp->classID))
     {
-      --tmp->objectCount;
+      tmp->objectList->remove(objectPointer);
     }
 
@@ -109,9 +110,11 @@
  * Print out some very nice debug information
  */
-void ClassList::debug()
+    void ClassList::debug(unsigned int debugLevel)
 {
-  PRINT(0)("=================\n");
-  PRINT(0)("=  CLASS_LIST   =\n");
-  PRINT(0)("=================\n");
+  if (debugLevel > 2)
+    debugLevel = 2;
+  PRINT(0)("==========================\n");
+  PRINT(0)("=  CLASS_LIST (level %d)  =\n", debugLevel);
+  PRINT(0)("==========================\n");
   PRINT(0)("has %d Elements\n\n", ClassList::classCount);
   ClassList* tmp = ClassList::first;
@@ -121,13 +124,28 @@
   while (likely(tmp != NULL))
   {
-    lenCount = 1;
-    while (pow(10,lenCount) <= tmp->objectCount)
-      ++lenCount;
-    for (int i=0; i < 30-strlen(tmp->className) - lenCount; i++)
-      (niceString[i]) = ' ';
-    niceString[30-strlen(tmp->className) - lenCount] = '\0';
+    if (debugLevel >= 1 || tmp->objectList->getSize() > 0)
+    {
+      lenCount = 1;
+      while (pow(10,lenCount) <= tmp->objectList->getSize())
+        ++lenCount;
+      for (int i=0; i < 30-strlen(tmp->className) - lenCount; i++)
+        (niceString[i]) = ' ';
+      niceString[30-strlen(tmp->className) - lenCount] = '\0';
 
-    PRINT(0)("CLASS %s:%s %d instances\n", tmp->className, niceString, tmp->objectCount);
+      PRINT(0)(" CLASS %s:%s %d instances\n", tmp->className, niceString, tmp->objectList->getSize());
 
+      if (debugLevel >=2 && tmp->objectList->getSize() > 0)
+      {
+        PRINT(0)("  Listing Instances:\n");
+        tIterator<BaseObject>* iterator = tmp->objectList->getIterator();
+        BaseObject* enumBO = iterator->nextElement();
+        while (enumBO)
+        {
+          PRINT(0)("   (class %s): NAME(%s)->%p\n", enumBO->getClassName(), enumBO->getName(), enumBO);
+          enumBO = iterator->nextElement();
+        }
+        delete iterator;
+      }
+    }
     tmp = tmp->next;
   }
Index: /orxonox/trunk/src/lib/lang/class_list.h
===================================================================
--- /orxonox/trunk/src/lib/lang/class_list.h	(revision 4751)
+++ /orxonox/trunk/src/lib/lang/class_list.h	(revision 4752)
@@ -30,13 +30,8 @@
     static void removeFromClassList(BaseObject* objectPointer);
 
-    static void debug();
+    static void debug(unsigned int debugLevel = 0);
 
   private:
-    //! a Struct for Lists of Objects
-    struct ObjectList
-    {
-      BaseObject*            pointerToObject;        //! Pointer to the Object
-      ObjectList*            next;                   //!< pointer to the next Object in the List
-    };
+    tList<BaseObject>*       objectList;             //!< A list of Objects belonging to this Class
 
     long                     classID;                //!< ClassID stored in this ClassList \see ClassID
@@ -45,10 +40,7 @@
     ClassList*               next;                   //!< Pointer to the next class in the List
 
-    unsigned int             objectCount;            //!< how many Objects of this particular Object have been loaded??
-
-
+    // STATIC MEMBERS
     static ClassList*        first;                  //!< The first Class in the List (should be BaseObject)
     static unsigned int      classCount;             //!< The Count of classes that have been registered (should match the lower description)
-
 };
 
Index: /orxonox/trunk/src/orxonox.cc
===================================================================
--- /orxonox/trunk/src/orxonox.cc	(revision 4751)
+++ /orxonox/trunk/src/orxonox.cc	(revision 4752)
@@ -85,5 +85,5 @@
   delete Factory::getFirst();
 
-  ClassList::debug();
+  ClassList::debug(2);
 }
 
