Index: orxonox/trunk/src/class_list.h
===================================================================
--- orxonox/trunk/src/class_list.h	(revision 4299)
+++ 	(revision )
@@ -1,18 +1,0 @@
-/*! 
-    \file class_list.h
-    \brief list of orxonox classes
-
-    this is used by the ObjectManager to identify and load important classes
-*/
-
-
-//! list of all classes to be loadable in via the ObjectManager
-typedef enum classList 
-{
-  CL_PROJECTILE,
-  CL_TEST_BULLET,
-
-  CL_NUMBER
-};
-  
-
Index: orxonox/trunk/src/util/garbage_collector.cc
===================================================================
--- orxonox/trunk/src/util/garbage_collector.cc	(revision 4299)
+++ orxonox/trunk/src/util/garbage_collector.cc	(revision 4311)
@@ -140,5 +140,4 @@
 	  //delete entity;
 	  ObjectManager::getInstance()->addToDeadList(CL_TEST_BULLET, entity);
-	  ObjectManager::getInstance()->debug();
 	}
       entity = iterator->nextElement();
@@ -148,4 +147,6 @@
   PRINTF(3)("=============================\n");
 
+  ObjectManager::getInstance()->debug();
+
   /* reset time to count again up to this->delay */
   this->time = 0;
Index: orxonox/trunk/src/util/object_manager.cc
===================================================================
--- orxonox/trunk/src/util/object_manager.cc	(revision 4299)
+++ orxonox/trunk/src/util/object_manager.cc	(revision 4311)
@@ -19,4 +19,5 @@
 #include "list.h"
 
+#include "projectile.h"
 
 using namespace std;
@@ -62,5 +63,5 @@
 
 
-void ObjectManager::cache(classList index, int number, const BaseObject &copyObject)
+void ObjectManager::cache(classList index, int number, Projectile* copyObject)
 {
   //this->managedObjectList[index] = new BaseObject[number];
@@ -68,5 +69,5 @@
   for(int i = 0; i < number; ++i)
     {
-      this->managedObjectList[index]->add(new BaseObject(copyObject));
+      this->managedObjectList[index]->add(new Projectile(*copyObject));
     }
 }
Index: orxonox/trunk/src/util/object_manager.h
===================================================================
--- orxonox/trunk/src/util/object_manager.h	(revision 4299)
+++ orxonox/trunk/src/util/object_manager.h	(revision 4311)
@@ -18,13 +18,29 @@
 #define OM_
 
-#include "class_list.h"
+
+//! list of all classes to be loadable in via the ObjectManager
+typedef enum classList 
+{
+  CL_PROJECTILE,
+  CL_TEST_BULLET,
+
+  CL_NUMBER
+};
+  
+
+
 
 
 class WorldEntity;
 class GarbageCollector;
-
+class Projectile;
 
 template<class T> class tList; 
 template<class T> class ManagedObject;
+
+#define mCache( Class ) \
+ cache(classList index, int number, Class * copyObject)
+
+
 
 //! the object manager itself
@@ -35,7 +51,11 @@
   virtual ~ObjectManager(void);
   
-  void cache(classList index, int number, const BaseObject &copyObject);
+
+  void mCache(Projectile);
+
   void addToDeadList(classList index, BaseObject* object);
   BaseObject* getFromDeadList(classList index, int number = 1);
+
+
 
   void debug();
@@ -43,4 +63,6 @@
  private:
   ObjectManager(void);
+  //void cache(classList index, int number, Projectile* copyObject);
+
   static ObjectManager* singletonRef;
 
Index: orxonox/trunk/src/world_entities/test_gun.cc
===================================================================
--- orxonox/trunk/src/world_entities/test_gun.cc	(revision 4299)
+++ orxonox/trunk/src/world_entities/test_gun.cc	(revision 4311)
@@ -89,6 +89,6 @@
     }
 
-  BaseObject* p = new TestBullet(this);
-  ObjectManager::getInstance()->cache(CL_TEST_BULLET, 100, *p);
+  Projectile* p = new TestBullet(this);
+  ObjectManager::getInstance()->cache(CL_TEST_BULLET, 100, p);
   ObjectManager::getInstance()->debug();
 }
@@ -143,5 +143,9 @@
     }
 
-  Projectile* pj = new TestBullet(this);
+  Projectile* pj = (TestBullet*)ObjectManager::getInstance()->getFromDeadList(CL_TEST_BULLET);
+
+  //printf( "object ref %p\n", ObjectManager::getInstance()->getFromDeadList(CL_TEST_BULLET));
+
+  //Projectile* pj = new TestBullet(this);
   pj->setAbsCoor(this->getAbsCoor() + this->projectileOffset);
   pj->setAbsDir(this->getAbsDir());
