Index: orxonox/trunk/src/campaign.cc
===================================================================
--- orxonox/trunk/src/campaign.cc	(revision 3220)
+++ orxonox/trunk/src/campaign.cc	(revision 3221)
@@ -82,14 +82,11 @@
   printf("World::start() - starting new StoryEntity Nr:%i\n", storyID);
   Error errorCode;
-  if(!this->isInit) return errorCode; 
-  if(storyID == WORLD_ID_GAMEEND) return errorCode;
+  if( !this->isInit) return errorCode; 
+  if( storyID == WORLD_ID_GAMEEND) return errorCode;
   this->running = true;
   StoryEntity* se = this->getStoryEntity(storyID);
   this->currentEntity = se;
-  while(se != NULL && this->running)
+  while( se != NULL && this->running)
     {
-      //se = this->getStoryEntity(storyID);
-      
-      
       se->displayLoadScreen();
       se->load();
@@ -97,5 +94,6 @@
       se->releaseLoadScreen();
       se->start();
-
+      se->destroy();
+     
       delete se;
 
Index: orxonox/trunk/src/command_node.cc
===================================================================
--- orxonox/trunk/src/command_node.cc	(revision 3220)
+++ orxonox/trunk/src/command_node.cc	(revision 3221)
@@ -166,5 +166,5 @@
 void CommandNode::bind (WorldEntity* entity)
 {
-  bound->add (entity);
+  bound->add(entity);
 }
 
@@ -175,5 +175,5 @@
 void CommandNode::unbind (WorldEntity* entity)
 {
-  bound->remove (entity);
+  bound->remove(entity);
 }
 
Index: orxonox/trunk/src/list.h
===================================================================
--- orxonox/trunk/src/list.h	(revision 3220)
+++ orxonox/trunk/src/list.h	(revision 3221)
@@ -106,5 +106,4 @@
 void tList<T>::add(WorldEntity* entity)
 {
-  printf("tList<T>::add() \n");
   listElement* el = new listElement;
   el->prev = this->last;
@@ -128,7 +127,5 @@
     {
       if( this->currentEl->curr == entity)
-	{
-	  printf("tList<T>::remove() - object found\n");
-	  
+	{ 
 	  if( this->currentEl->prev  == NULL ) this->first = this->currentEl->next;
 	  else this->currentEl->prev->next = this->currentEl->next;
@@ -150,5 +147,4 @@
 void tList<T>::destroy()
 {
-  printf("tList<T>::clear() - clearing all world objects, releasing mem\n");
   this->currentEl = this->first;
   while(this->currentEl != NULL)
Index: orxonox/trunk/src/story_entity.cc
===================================================================
--- orxonox/trunk/src/story_entity.cc	(revision 3220)
+++ orxonox/trunk/src/story_entity.cc	(revision 3221)
@@ -30,8 +30,8 @@
 /** 
     \brief initialize the entity before use. 
+    \returns an error code if not able to apply.
 
     After execution of this function, the Entity is ready to be played/executed, 
     this shifts the initialisation work before the execution - very important...
-    
 */
 Error StoryEntity::init()
@@ -39,4 +39,10 @@
 
 
+/** 
+    \brief sets the story ID
+
+    sets the story id of the current entity, this enables it to be identified in a 
+    global context.
+*/
 void StoryEntity::setStoryID(int storyID)
 {
@@ -44,4 +50,9 @@
 }
 
+
+/** 
+    \brief this reads the story id of the current entity
+    \returns the story entity id
+*/
 int StoryEntity::getStoryID()
 {
@@ -50,4 +61,11 @@
 
 
+/** 
+    \brief sets the id of the next story entity
+    
+    StoryEntities can choose their following entity themselfs. the entity id defined here
+    will be startet after this entity ends. this can be convenient if you want to have a
+    non linear story with switches.
+*/
 void StoryEntity::setNextStoryID(int nextStoryID)
 {
@@ -55,4 +73,8 @@
 }
 
+/** 
+    \brief gets the story id of the current entity
+    \returns story id
+*/
 int StoryEntity::getNextStoryID()
 {
@@ -61,30 +83,96 @@
 
 
+/** 
+    \brief starts the entity with the choosen id. only for entities with lists.
+    \param story id
+    \returns error code if this action has caused a error
+
+    this simply starts the story with the id storyID. the story with the choosen id has
+    to be part of the current entity else, this doesn't make sense. this is used for
+    campaigns or the GameLoader, they have lists of Campaigns/Worlds with their own
+    storyID.
+*/
 Error StoryEntity::start(int storyID)
 {}
 
+
+/** 
+    \brief starts the current entity
+    \returns error code if this action has caused a error    
+*/
 Error StoryEntity::start()
 {}
 
+
+/** 
+    \brief stops the current entity
+    \returns error code if this action has caused a error
+
+    ATTENTION: this function shouldn't call other functions, or if so, they must return
+    after finishing. If you ignore or forget to do so, the current entity is not able to
+    terminate and it will run in the background or the ressources can't be freed or even
+    worse: are freed and the program will end in a segmentation fault!
+    hehehe, all seen... :)
+*/
 Error StoryEntity::stop()
 {}
 
+
+/** 
+    \brief pause the current entity
+    \returns error code if this action has caused a error
+
+    this pauses the current entity or passes this call forth to the running entity.
+*/
 Error StoryEntity::pause()
 {}
 
+
+/** 
+    \brief resumes a pause
+    \returns error code if this action has caused a error
+
+    this resumess the current entity or passes this call forth to the running entity.
+*/
 Error StoryEntity::resume()
 {}
 
 
+/** 
+    \brief loads the current entity
+
+    this is here to enable you loading maps into the entities. for all other actions you
+    should take the init() function.
+*/
 void StoryEntity::load()
 {}
 
+
+/** 
+    \brief destroys and cleans up the current entity. 
+
+    this cleans up ressources before the deconstructor is called. for terminating 
+    the entity please use the stop() function.
+*/
 void StoryEntity::destroy()
 {}
 
 
+/** 
+    \brief this displays the load screen
+
+    it will need some time to load maps or things like that. to inform the user about 
+    progress and to just show him/her something for the eyes, put here this stuff
+*/
 void StoryEntity::displayLoadScreen()
 {}
 
+
+/** 
+    \brief undisplay the load screen
+
+    the load process has terminated, you now can release the load screen and start this
+    entity.
+*/
 void StoryEntity::releaseLoadScreen()
 {}
Index: orxonox/trunk/src/story_entity.h
===================================================================
--- orxonox/trunk/src/story_entity.h	(revision 3220)
+++ orxonox/trunk/src/story_entity.h	(revision 3221)
@@ -1,2 +1,7 @@
+/*! 
+    \file story_entity.h
+    \brief holds the base class of everything that is playable - that is part of the story
+*/ 
+
 
 #ifndef STORY_ENTITY_H
@@ -6,12 +11,13 @@
 #include "story_def.h"
 
+//! A class that represents something to play in orxonox. it is a container for worlds, movies, mission briefings, etc...
 class StoryEntity {
 
  public:
   StoryEntity ();
-  ~StoryEntity ();
+  virtual ~StoryEntity ();
 
-  bool isInit;
-  bool isPaused;
+  bool isInit;  //! if the entity is initialized, this has to be true
+  bool isPaused; //! is true if the entity is paused
 
   virtual Error init();
@@ -36,6 +42,6 @@
 
  private:
-  int storyID;
-  int nextStoryID;
+  int storyID; //! this is the number of this entity, identifying it in a list/tree...
+  int nextStoryID; //! if this entity has finished, this entity shall be called
 };
 
Index: orxonox/trunk/src/world.cc
===================================================================
--- orxonox/trunk/src/world.cc	(revision 3220)
+++ orxonox/trunk/src/world.cc	(revision 3221)
@@ -105,4 +105,9 @@
 {
   this->isPaused = false;
+}
+
+void World::destroy()
+{
+
 }
 
Index: orxonox/trunk/src/world.h
===================================================================
--- orxonox/trunk/src/world.h	(revision 3220)
+++ orxonox/trunk/src/world.h	(revision 3221)
@@ -22,5 +22,5 @@
   World (char* name);
   World (int worldID);
-  ~World ();
+  virtual ~World ();
 
   template<typename T> 
@@ -36,4 +36,5 @@
 
   virtual void load();
+  virtual void destroy();
 
   void time_slice (Uint32 deltaT);
Index: orxonox/trunk/src/world_entity.h
===================================================================
--- orxonox/trunk/src/world_entity.h	(revision 3220)
+++ orxonox/trunk/src/world_entity.h	(revision 3221)
@@ -18,5 +18,5 @@
  public:
   WorldEntity (bool isFree = false);
-  ~WorldEntity ();
+  virtual ~WorldEntity ();
   
   Location* get_location ();
