Index: branches/new_class_id/src/util/fast_factory.h
===================================================================
--- branches/new_class_id/src/util/fast_factory.h	(revision 9706)
+++ branches/new_class_id/src/util/fast_factory.h	(revision 9707)
@@ -38,6 +38,6 @@
  * static FastFactory*         fastFactory;
  */
-#define CREATE_FAST_FACTORY_STATIC(CLASS_NAME, CLASS_ID) \
-  FastFactory* CLASS_NAME::fastFactory = tFastFactory<CLASS_NAME>::getFastFactory(CLASS_ID, #CLASS_NAME)
+#define CREATE_FAST_FACTORY_STATIC(CLASS_NAME) \
+  FastFactory* CLASS_NAME::fastFactory = tFastFactory<CLASS_NAME>::getFastFactory(CLASS_NAME::classID(), #CLASS_NAME)
 
 //! A struct, that holds Lists of Objects of a certain type.
Index: branches/new_class_id/src/world_entities/effects/billboard.cc
===================================================================
--- branches/new_class_id/src/world_entities/effects/billboard.cc	(revision 9706)
+++ branches/new_class_id/src/world_entities/effects/billboard.cc	(revision 9707)
@@ -26,7 +26,7 @@
 
 
-
+#include "class_id.h"
 CREATE_FACTORY(Billboard, CL_BILLBOARD);
-
+NewObjectListDefinitionID(Billboard, CL_BILLBOARD);
 
 /**
@@ -57,5 +57,5 @@
 void Billboard::init()
 {
-  this->setClassID(CL_BILLBOARD, "Billboard");
+  this->registerObject(this, Billboard::_objectList);
   this->setName("Billboard");
 
@@ -124,5 +124,5 @@
   glDisable(GL_LIGHTING);
   glDisable(GL_FOG);
-  
+
   glPushMatrix();
 
@@ -130,5 +130,5 @@
   //glTranslatef(0,0,0);
   this->material->select();
-  
+
   const PNode* camera = State::getCameraNode();  //!< @todo MUST be different
   Vector cameraPos = camera->getAbsCoor();
@@ -141,5 +141,5 @@
   h.normalize();
   v.normalize();
-  
+
   v *= sizeX;
   h *= sizeY;
@@ -165,8 +165,8 @@
              this->getAbsCoor().z - h.z + v.z);
   glEnd();
-  
-  
+
+
   glPopMatrix();
-  
+
   glPopAttrib();
 }
Index: branches/new_class_id/src/world_entities/effects/billboard.h
===================================================================
--- branches/new_class_id/src/world_entities/effects/billboard.h	(revision 9706)
+++ branches/new_class_id/src/world_entities/effects/billboard.h	(revision 9707)
@@ -13,4 +13,5 @@
 class Billboard : public WorldEntity
 {
+  NewObjectListDeclaration(Billboard);
   public:
     Billboard(const TiXmlElement* root = NULL);
Index: branches/new_class_id/src/world_entities/effects/explosion.cc
===================================================================
--- branches/new_class_id/src/world_entities/effects/explosion.cc	(revision 9706)
+++ branches/new_class_id/src/world_entities/effects/explosion.cc	(revision 9707)
@@ -21,5 +21,4 @@
 
 #include "state.h"
-#include "class_list.h"
 
 #include "box_emitter.h"
@@ -28,7 +27,7 @@
 
 
-
-CREATE_FAST_FACTORY_STATIC(Explosion, CL_EXPLOSION);
-
+#include "class_id.h"
+CREATE_FAST_FACTORY_STATIC(Explosion);
+NewObjectListDefinitionID(Explosion, CL_EXPLOSION);
 
 /**
@@ -37,5 +36,5 @@
 Explosion::Explosion ()
 {
-  this->setClassID(CL_EXPLOSION, "Explosion");
+  this->registerObject(this, Explosion::_objectList);
   this->toList(OM_DEAD_TICK);
 
@@ -59,5 +58,5 @@
 
   /* this is normaly done by World.cc by deleting the ParticleEngine */
-  if (Explosion::explosionParticles != NULL && ClassList::getList(CL_EXPLOSION)->size() <= 1)
+  if (Explosion::explosionParticles != NULL && Explosion::objectList().size() <= 1)
      Explosion::explosionParticles = NULL;
 }
Index: branches/new_class_id/src/world_entities/effects/explosion.h
===================================================================
--- branches/new_class_id/src/world_entities/effects/explosion.h	(revision 9706)
+++ branches/new_class_id/src/world_entities/effects/explosion.h	(revision 9707)
@@ -15,4 +15,5 @@
 class Explosion : public WorldEntity
 {
+  NewObjectListDeclaration(Explosion);
   public:
     static void explode (PNode* position, const Vector& size);
Index: branches/new_class_id/src/world_entities/npcs/ground_turret.cc
===================================================================
--- branches/new_class_id/src/world_entities/npcs/ground_turret.cc	(revision 9706)
+++ branches/new_class_id/src/world_entities/npcs/ground_turret.cc	(revision 9707)
@@ -28,4 +28,5 @@
 
 #include "effects/explosion.h"
+
 
 CREATE_FACTORY(GroundTurret, CL_GROUND_TURRET);
Index: branches/new_class_id/src/world_entities/npcs/npc_test.cc
===================================================================
--- branches/new_class_id/src/world_entities/npcs/npc_test.cc	(revision 9706)
+++ branches/new_class_id/src/world_entities/npcs/npc_test.cc	(revision 9707)
@@ -30,11 +30,12 @@
 #include "effects/explosion.h"
 
+#include "class_id.h"
 CREATE_FACTORY(NPC2, CL_NPC_TEST2);
-
+NewObjectListDefinitionID(NPC2, CL_NPC_TEST2);
 
 NPC2::NPC2(const TiXmlElement* root)
   : NPC(NULL)
 {
-  this->setClassID(CL_NPC_TEST2, "NPC2");
+  this->registerObject(this, NPC2::_objectList);
 
   if ((float)rand()/RAND_MAX > .5f)
Index: branches/new_class_id/src/world_entities/npcs/npc_test.h
===================================================================
--- branches/new_class_id/src/world_entities/npcs/npc_test.h	(revision 9706)
+++ branches/new_class_id/src/world_entities/npcs/npc_test.h	(revision 9707)
@@ -9,4 +9,5 @@
 
 class NPC2 : public NPC {
+  NewObjectListDeclaration(NPC2);
 
  public:
