Index: orxonox/trunk/src/glmenu/glmenu_imagescreen.cc
===================================================================
--- orxonox/trunk/src/glmenu/glmenu_imagescreen.cc	(revision 4318)
+++ orxonox/trunk/src/glmenu/glmenu_imagescreen.cc	(revision 4320)
@@ -88,5 +88,5 @@
 void GLMenuImageScreen::init ()
 {
-  this->setClassID(CL_GLMENU_IMAGE_SCREEN);
+  this->setClassID(CL_GLMENU_IMAGE_SCREEN, "GLMenuImageScreen");
 
   // Select Our VU Meter Background Texture
Index: orxonox/trunk/src/lib/coord/helper_parent.cc
===================================================================
--- orxonox/trunk/src/lib/coord/helper_parent.cc	(revision 4318)
+++ orxonox/trunk/src/lib/coord/helper_parent.cc	(revision 4320)
@@ -30,5 +30,5 @@
 HelperParent::HelperParent () 
 {
-   this->setClassID(CL_HELPER_PARENT);
+   this->setClassID(CL_HELPER_PARENT, "HelperParent");
 }
 
Index: orxonox/trunk/src/lib/graphics/graphics_engine.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/graphics_engine.cc	(revision 4318)
+++ orxonox/trunk/src/lib/graphics/graphics_engine.cc	(revision 4320)
@@ -34,5 +34,5 @@
   this->minFPS = 9999;
   this->maxFPS = 0;
-  this->setClassID(CL_GRAPHICS_ENGINE);
+  this->setClassID(CL_GRAPHICS_ENGINE, "GraphicsEngine");
 
   this->fullscreen = false;
Index: orxonox/trunk/src/lib/graphics/light.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/light.cc	(revision 4318)
+++ orxonox/trunk/src/lib/graphics/light.cc	(revision 4320)
@@ -34,5 +34,5 @@
 Light::Light(int lightNumber)
 {
-  this->setClassID(CL_LIGHT);
+  this->setClassID(CL_LIGHT, "Light");
   char tmpName[7];
   sprintf(tmpName, "Light%d", lightNumber);
@@ -205,5 +205,5 @@
 LightManager::LightManager () 
 {
-  this->setClassID(CL_LIGHT_MANAGER);
+  this->setClassID(CL_LIGHT_MANAGER, "LightManager");
 
   glEnable (GL_LIGHTING);
Index: orxonox/trunk/src/lib/graphics/particles/particle_emitter.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/particles/particle_emitter.cc	(revision 4318)
+++ orxonox/trunk/src/lib/graphics/particles/particle_emitter.cc	(revision 4320)
@@ -30,5 +30,5 @@
 		  float velocity)
 {
-   this->setClassID(CL_PARTICLE_EMITTER);
+   this->setClassID(CL_PARTICLE_EMITTER, "ParticleEmitter");
    this->direction = direction;
    this->setSpread(angle);
Index: orxonox/trunk/src/lib/graphics/particles/particle_engine.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/particles/particle_engine.cc	(revision 4318)
+++ orxonox/trunk/src/lib/graphics/particles/particle_engine.cc	(revision 4320)
@@ -30,5 +30,5 @@
 ParticleEngine::ParticleEngine () 
 {
-   this->setClassID(CL_PARTICLE_ENGINE);
+   this->setClassID(CL_PARTICLE_ENGINE, "ParticleEngine");
 
    this->systemList = new tList<ParticleSystem>;
Index: orxonox/trunk/src/lib/graphics/particles/particle_system.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/particles/particle_system.cc	(revision 4318)
+++ orxonox/trunk/src/lib/graphics/particles/particle_system.cc	(revision 4320)
@@ -34,5 +34,5 @@
 ParticleSystem::ParticleSystem (unsigned int maxCount, PARTICLE_TYPE type)
 {
-   this->setClassID(CL_PARTICLE_SYSTEM);
+   this->setClassID(CL_PARTICLE_SYSTEM, "ParticleSystem");
    this->material = NULL;
    this->name = NULL;
Index: orxonox/trunk/src/lib/graphics/text_engine.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/text_engine.cc	(revision 4318)
+++ orxonox/trunk/src/lib/graphics/text_engine.cc	(revision 4320)
@@ -51,5 +51,5 @@
 Text::Text(Font* font, int type)
 {
-  this->setClassID(CL_TEXT);
+  this->setClassID(CL_TEXT, "Text");
 
   // initialize this Text
@@ -802,5 +802,5 @@
 TextEngine::TextEngine () 
 {
-   this->setClassID(CL_TEXT_ENGINE);
+   this->setClassID(CL_TEXT_ENGINE, "TextEngine");
    this->enableFonts();
 
Index: orxonox/trunk/src/lib/lang/base_object.cc
===================================================================
--- orxonox/trunk/src/lib/lang/base_object.cc	(revision 4318)
+++ orxonox/trunk/src/lib/lang/base_object.cc	(revision 4320)
@@ -42,4 +42,10 @@
 }
 
+void BaseObject::setClassID(int id, const char* className)
+{
+  this->id = id;
+  this->className = className;
+}
+
 
 void BaseObject::setClassID (int id)
@@ -48,4 +54,8 @@
 }
 
+void BaseObject::setClassName(const char* className)
+{
+  this->className = className;
+}
 
 
Index: orxonox/trunk/src/lib/lang/base_object.h
===================================================================
--- orxonox/trunk/src/lib/lang/base_object.h	(revision 4318)
+++ orxonox/trunk/src/lib/lang/base_object.h	(revision 4320)
@@ -17,8 +17,9 @@
   virtual ~BaseObject ();
 
-  //void setClassName (const char* className);
   void setClassID(int id);
+  void setClassName(const char* className);
+  void setClassID(int id, const char* className);
 
-  inline const char* getClassName(void) const { return "";};
+  inline const char* getClassName(void) const { return this->className;};
   inline int getClassID(void) const { return this->id; }
   bool isA (char* className);
Index: orxonox/trunk/src/proto/proto_class.cc
===================================================================
--- orxonox/trunk/src/proto/proto_class.cc	(revision 4318)
+++ orxonox/trunk/src/proto/proto_class.cc	(revision 4320)
@@ -27,5 +27,16 @@
 ProtoClass::ProtoClass () 
 {
-   this->setClassName ("ProtoClass");
+   this->setClassID(CL_PROTO_ID, "ProtoClass"); 
+
+   /* If you make a new class, what is most probably the case when you write this file
+      don't forget to:
+       1. Add the new file new_class.cc to the ./src/Makefile.am
+       2. Add the class identifier to ./src/class_list.h eg. CL_NEW_CLASS
+
+      Advanced Topics:
+      - if you want to let your object be managed via the ObjectManager make sure to read
+        the object_manager.h header comments. You will use this most certanly only if you
+	make many objects of your class, like a weapon bullet.
+   */
 }
 
Index: orxonox/trunk/src/proto/proto_singleton.cc
===================================================================
--- orxonox/trunk/src/proto/proto_singleton.cc	(revision 4318)
+++ orxonox/trunk/src/proto/proto_singleton.cc	(revision 4320)
@@ -26,6 +26,17 @@
 ProtoSingleton::ProtoSingleton () 
 {
-   this->setClassName ("ProtoSingleton");
+   this->setClassName("ProtoSingleton");
+   this->setClassID(CL_PROTO_ID, "ProtoSingleton"); 
 
+   /* If you make a new class, what is most probably the case when you write this file
+      don't forget to:
+       1. Add the new file new_class.cc to the ./src/Makefile.am
+       2. Add the class identifier to ./src/class_list.h eg. CL_NEW_CLASS
+
+      Advanced Topics:
+      - if you want to let your object be managed via the ObjectManager make sure to read
+        the object_manager.h header comments. You will use this most certanly only if you
+	make many objects of your class, like a weapon bullet.
+   */
 }
 
Index: orxonox/trunk/src/story_entities/world.cc
===================================================================
--- orxonox/trunk/src/story_entities/world.cc	(revision 4318)
+++ orxonox/trunk/src/story_entities/world.cc	(revision 4320)
@@ -196,5 +196,5 @@
 void World::constuctorInit(char* name, int worldID)
 {
-  this->setClassID(CL_WORLD);
+  this->setClassID(CL_WORLD, "World");
 
   //this->worldName = name;
Index: orxonox/trunk/src/util/animation/animation_player.cc
===================================================================
--- orxonox/trunk/src/util/animation/animation_player.cc	(revision 4318)
+++ orxonox/trunk/src/util/animation/animation_player.cc	(revision 4320)
@@ -28,5 +28,5 @@
 AnimationPlayer::AnimationPlayer () 
 {
-   this->setClassID(CL_ANIMATION_PLAYER);
+   this->setClassID(CL_ANIMATION_PLAYER, "AnimationPlayer");
 
    this->animationList = new tList<Animation>();
Index: orxonox/trunk/src/util/garbage_collector.cc
===================================================================
--- orxonox/trunk/src/util/garbage_collector.cc	(revision 4318)
+++ orxonox/trunk/src/util/garbage_collector.cc	(revision 4320)
@@ -38,5 +38,5 @@
 GarbageCollector::GarbageCollector () 
 {
-   this->setClassID(CL_GARBAGE_COLLECTOR);
+   this->setClassID(CL_GARBAGE_COLLECTOR, "GarbageCollector");
    this->time = 0;
    this->delay = 1.5f; /* clean up all 5.0 seconds */
Index: orxonox/trunk/src/util/object_manager.cc
===================================================================
--- orxonox/trunk/src/util/object_manager.cc	(revision 4318)
+++ orxonox/trunk/src/util/object_manager.cc	(revision 4320)
@@ -29,5 +29,5 @@
 ObjectManager::ObjectManager () 
 {
-  this->setClassID(CL_OBJECT_MANAGER);
+  this->setClassID(CL_OBJECT_MANAGER, "ObjectManager");
   
   this->managedObjectList = new tList<BaseObject>*[CL_NUMBER];
Index: orxonox/trunk/src/util/resource_manager.cc
===================================================================
--- orxonox/trunk/src/util/resource_manager.cc	(revision 4318)
+++ orxonox/trunk/src/util/resource_manager.cc	(revision 4320)
@@ -38,5 +38,5 @@
 ResourceManager::ResourceManager () 
 {
-   this->setClassID(CL_RESOURCE_MANAGER);
+   this->setClassID(CL_RESOURCE_MANAGER, "ResourceManager");
    this->dataDir = NULL;
    this->setDataDir("./");
Index: orxonox/trunk/src/util/track/track_manager.cc
===================================================================
--- orxonox/trunk/src/util/track/track_manager.cc	(revision 4318)
+++ orxonox/trunk/src/util/track/track_manager.cc	(revision 4320)
@@ -370,6 +370,5 @@
 TrackManager::TrackManager(void)
 {
-  this->setClassID(CL_TRACK_MANAGER);
-  
+  this->setClassID(CL_TRACK_MANAGER, "TrackManager");
   
   TrackManager::singletonRef = this; // do this because otherwise the TrackNode cannot get The instance of the TrackManager
Index: orxonox/trunk/src/util/track/track_node.cc
===================================================================
--- orxonox/trunk/src/util/track/track_node.cc	(revision 4318)
+++ orxonox/trunk/src/util/track/track_node.cc	(revision 4320)
@@ -32,5 +32,5 @@
 TrackNode::TrackNode () 
 {
-  this->setClassID(CL_TRACK_NODE);
+  this->setClassID(CL_TRACK_NODE, "TrackNode");
   this->setName("TrackNode"); /* absolete but still used... */
 
Index: orxonox/trunk/src/world_entities/camera.cc
===================================================================
--- orxonox/trunk/src/world_entities/camera.cc	(revision 4318)
+++ orxonox/trunk/src/world_entities/camera.cc	(revision 4320)
@@ -33,5 +33,5 @@
 Camera::Camera(void)
 {
-  this->setClassID(CL_CAMERA);
+  this->setClassID(CL_CAMERA, "Camera");
   this->target = new CameraTarget();
 
@@ -190,5 +190,5 @@
 CameraTarget::CameraTarget()
 {
-  this->setClassID(CL_CAMERA_TARGET);
+  this->setClassID(CL_CAMERA_TARGET, "CameraTarget");
   this->setMode(PNODE_MOVEMENT);
 }
Index: orxonox/trunk/src/world_entities/character_attributes.cc
===================================================================
--- orxonox/trunk/src/world_entities/character_attributes.cc	(revision 4318)
+++ orxonox/trunk/src/world_entities/character_attributes.cc	(revision 4320)
@@ -29,5 +29,5 @@
 CharacterAttributes::CharacterAttributes () 
 {
-   this->setClassID(CL_CHARACTER_ATTRIBUTES);
+   this->setClassID(CL_CHARACTER_ATTRIBUTES, "CharacterAttributes");
 }
 
Index: orxonox/trunk/src/world_entities/satellite.cc
===================================================================
--- orxonox/trunk/src/world_entities/satellite.cc	(revision 4318)
+++ orxonox/trunk/src/world_entities/satellite.cc	(revision 4320)
@@ -31,5 +31,5 @@
 Satellite::Satellite (Vector axis, float speed)
 {
-  this->setClassID(CL_SATELLITE);
+  this->setClassID(CL_SATELLITE, "Satellite");
   this->model = (Model*) ResourceManager::getInstance()->load("cube", RP_LEVEL);
   this->speed = speed;
Index: orxonox/trunk/src/world_entities/skybox.cc
===================================================================
--- orxonox/trunk/src/world_entities/skybox.cc	(revision 4318)
+++ orxonox/trunk/src/world_entities/skybox.cc	(revision 4320)
@@ -62,5 +62,5 @@
 void SkyBox::preInit(void)
 {
-  this->setClassID(CL_SKYBOX);
+  this->setClassID(CL_SKYBOX, "SkyBox");
   this->skyModel = NULL;
   this->material = new Material*[6];
Index: orxonox/trunk/src/world_entities/terrain.cc
===================================================================
--- orxonox/trunk/src/world_entities/terrain.cc	(revision 4318)
+++ orxonox/trunk/src/world_entities/terrain.cc	(revision 4320)
@@ -77,5 +77,5 @@
 void Terrain::init(void)
 {
-  this->setClassID(CL_TERRAIN);
+  this->setClassID(CL_TERRAIN, "Terrain");
   this->objectList = 0;
 }
Index: orxonox/trunk/src/world_entities/test_entity.cc
===================================================================
--- orxonox/trunk/src/world_entities/test_entity.cc	(revision 4318)
+++ orxonox/trunk/src/world_entities/test_entity.cc	(revision 4320)
@@ -28,4 +28,5 @@
 TestEntity::TestEntity () : WorldEntity()
 {  
+  this->setClassID(CL_TEST_ENTITY, "TestEntity");
   this->md2Model = new MD2Model();
   this->md2Model->loadModel(ResourceManager::getFullName("models/tris.md2"));
Index: orxonox/trunk/src/world_entities/test_gun.cc
===================================================================
--- orxonox/trunk/src/world_entities/test_gun.cc	(revision 4318)
+++ orxonox/trunk/src/world_entities/test_gun.cc	(revision 4320)
@@ -45,4 +45,5 @@
   :  Weapon (parent, coordinate, direction) 
 {
+  this->setClassID(CL_TEST_GUN, "TestGun");
   this->model = (Model*)ResourceManager::getInstance()->load("models/test_gun.obj", OBJ, RP_CAMPAIGN);
   this->idleTime = 0.2f;
Index: orxonox/trunk/src/world_entities/world_entity.cc
===================================================================
--- orxonox/trunk/src/world_entities/world_entity.cc	(revision 4318)
+++ orxonox/trunk/src/world_entities/world_entity.cc	(revision 4320)
@@ -30,5 +30,5 @@
 WorldEntity::WorldEntity(const TiXmlElement* root)
 {
-  this->setClassID(CL_WORLD_ENTITY);
+  this->setClassID(CL_WORLD_ENTITY, "WorldEntity");
   this->model = NULL;
 
