Index: /orxonox/trunk/src/ability.h
===================================================================
--- /orxonox/trunk/src/ability.h	(revision 3543)
+++ /orxonox/trunk/src/ability.h	(revision 3544)
@@ -10,5 +10,5 @@
  public:
   Ability ();
-  ~Ability ();
+  virtual ~Ability ();
 
 };
Index: /orxonox/trunk/src/ai/ai.h
===================================================================
--- /orxonox/trunk/src/ai/ai.h	(revision 3543)
+++ /orxonox/trunk/src/ai/ai.h	(revision 3544)
@@ -9,5 +9,5 @@
  public:
   AI ();
-  ~AI ();
+  virtual ~AI ();
 
 };
Index: /orxonox/trunk/src/camera.cc
===================================================================
--- /orxonox/trunk/src/camera.cc	(revision 3543)
+++ /orxonox/trunk/src/camera.cc	(revision 3544)
@@ -51,16 +51,7 @@
 Camera::~Camera ()
 {
-  this->destroy();
-}
-
-/**
-   \brief deletes all allocated memory
-*/
-void Camera::destroy(void)
-{
   this->bound = NULL;
   this->world = NULL;
 
-  static_cast<WorldEntity*>(this)->destroy();
 }
 
Index: /orxonox/trunk/src/camera.h
===================================================================
--- /orxonox/trunk/src/camera.h	(revision 3543)
+++ /orxonox/trunk/src/camera.h	(revision 3544)
@@ -55,5 +55,4 @@
   Camera (World* world);
   virtual ~Camera ();
-  void destroy(void);
   
   void timeSlice (Uint32 deltaT);
Index: /orxonox/trunk/src/glmenu/glmenu_imagescreen.cc
===================================================================
--- /orxonox/trunk/src/glmenu/glmenu_imagescreen.cc	(revision 3543)
+++ /orxonox/trunk/src/glmenu/glmenu_imagescreen.cc	(revision 3544)
@@ -46,21 +46,10 @@
 /**
    \brief standard deconstructor
+   \todo this deconstructor is not jet implemented - do it
 */
 GLMenuImageScreen::~GLMenuImageScreen() 
-{
-  this->destroy();
-}
-
-/**
-   \brief deletes all alocated Memory and also deletes everything from the Class this one is erived from
-
-   \todo this deconstructor is not jet implemented - do it
-*/
-void GLMenuImageScreen::destroy(void)
 {
   if (backMat)
     delete backMat;
-
-  static_cast<BaseObject*>(this)->destroy();
 }
 
Index: /orxonox/trunk/src/glmenu/glmenu_imagescreen.h
===================================================================
--- /orxonox/trunk/src/glmenu/glmenu_imagescreen.h	(revision 3543)
+++ /orxonox/trunk/src/glmenu/glmenu_imagescreen.h	(revision 3544)
@@ -18,7 +18,6 @@
 
  public:
-  ~GLMenuImageScreen ();
-  void destroy(void);
-
+  virtual ~GLMenuImageScreen ();
+  
   static GLMenuImageScreen* getInstance();
 
Index: /orxonox/trunk/src/lib/coord/helper_parent.cc
===================================================================
--- /orxonox/trunk/src/lib/coord/helper_parent.cc	(revision 3543)
+++ /orxonox/trunk/src/lib/coord/helper_parent.cc	(revision 3544)
@@ -41,15 +41,4 @@
 HelperParent::~HelperParent () 
 {
-  this->destroy();
+
 }
-
-
-/**
-   \brief destroys all allocated memory
-*/
-void HelperParent::destroy(void)
-{
-
-
-  static_cast<PNode*>(this)->destroy();
-}
Index: /orxonox/trunk/src/lib/coord/helper_parent.h
===================================================================
--- /orxonox/trunk/src/lib/coord/helper_parent.h	(revision 3543)
+++ /orxonox/trunk/src/lib/coord/helper_parent.h	(revision 3544)
@@ -18,5 +18,4 @@
   HelperParent ();
   virtual ~HelperParent ();
-  void destroy(void);
 
 };
Index: /orxonox/trunk/src/lib/coord/null_parent.cc
===================================================================
--- /orxonox/trunk/src/lib/coord/null_parent.cc	(revision 3543)
+++ /orxonox/trunk/src/lib/coord/null_parent.cc	(revision 3544)
@@ -61,19 +61,7 @@
 NullParent::~NullParent () 
 {
-  this->destroy();
-}
-
-/**
-   \brief destroys all allocated memory
-*/
-void NullParent::destroy(void)
-{
   //delete singletonRef;
   singletonRef = NULL;
-
-  static_cast<PNode*>(this)->destroy();
 }
-
-
 
 /**
Index: /orxonox/trunk/src/lib/coord/null_parent.h
===================================================================
--- /orxonox/trunk/src/lib/coord/null_parent.h	(revision 3543)
+++ /orxonox/trunk/src/lib/coord/null_parent.h	(revision 3544)
@@ -17,6 +17,4 @@
   static NullParent* getInstance ();
   virtual ~NullParent ();
-  void destroy(void);
-  
 
   static NullParent* singletonRef;
Index: /orxonox/trunk/src/lib/coord/p_node.cc
===================================================================
--- /orxonox/trunk/src/lib/coord/p_node.cc	(revision 3543)
+++ /orxonox/trunk/src/lib/coord/p_node.cc	(revision 3544)
@@ -113,5 +113,13 @@
   /* there is currently a problem with cleaning up - fix*/
 
-  this->destroy();
+  PNode* pn = this->children->enumerate();
+  while( pn != NULL) 
+    { 
+      pn = this->children->nextElement();
+      delete pn;
+    } 
+  /* this deletes all children in the list */
+  delete this->children;
+
 }
 
@@ -122,4 +130,5 @@
    cleans up all pnodes
 */
+/*
 void PNode::destroy ()
 {
@@ -130,10 +139,10 @@
       pn = this->children->nextElement();
     } 
-  /* this deletes all children in the list */
+  // this deletes all children in the list 
   this->children->destroy ();
 
   static_cast<BaseObject*>(this)->destroy();
 }
-
+*/
 
 /**
Index: /orxonox/trunk/src/lib/coord/p_node.h
===================================================================
--- /orxonox/trunk/src/lib/coord/p_node.h	(revision 3543)
+++ /orxonox/trunk/src/lib/coord/p_node.h	(revision 3544)
@@ -41,6 +41,4 @@
   PNode (Vector* absCoordinate, PNode* pNode);
   virtual ~PNode ();
-
-  void destroy ();
 
   PNode* parent;            //!< a pointer to the parent node
Index: /orxonox/trunk/src/lib/lang/base_object.cc
===================================================================
--- /orxonox/trunk/src/lib/lang/base_object.cc	(revision 3543)
+++ /orxonox/trunk/src/lib/lang/base_object.cc	(revision 3544)
@@ -37,13 +37,5 @@
 BaseObject::~BaseObject () 
 {
-  this->destroy();
-}
 
-/** 
-    \brief destorys everything BaseObject allocated
-*/
-void BaseObject::destroy(void)
-{
-  //  delete []this->className;
 }
 
Index: /orxonox/trunk/src/lib/lang/base_object.h
===================================================================
--- /orxonox/trunk/src/lib/lang/base_object.h	(revision 3543)
+++ /orxonox/trunk/src/lib/lang/base_object.h	(revision 3544)
@@ -17,6 +17,4 @@
   virtual ~BaseObject ();
 
-  void destroy(void);
-
   void setClassName (char* className);
   char* getClassName(void) const;
Index: /orxonox/trunk/src/light.cc
===================================================================
--- /orxonox/trunk/src/light.cc	(revision 3543)
+++ /orxonox/trunk/src/light.cc	(revision 3544)
@@ -52,15 +52,4 @@
 Light::~Light () 
 {
-  this->destroy();
-}
-
-
-/**
-   \brief frees all alocated memory
-
-   and in this case also deletes the lightSources and GL_LIGHTING
-*/
-void Light::destroy(void)
-{
   glDisable(GL_LIGHTING);
   
@@ -69,8 +58,5 @@
   delete lights;
   Light::singletonRef = NULL;
-
-  static_cast<WorldEntity*>(this)->destroy();
-}
-
+}
 
 /**
Index: /orxonox/trunk/src/light.h
===================================================================
--- /orxonox/trunk/src/light.h	(revision 3543)
+++ /orxonox/trunk/src/light.h	(revision 3544)
@@ -61,6 +61,4 @@
   static Light* getInstance();
   virtual ~Light(void);
-  void destroy(void);
-
 
   // set Attributes
Index: /orxonox/trunk/src/orxonox.cc
===================================================================
--- /orxonox/trunk/src/orxonox.cc	(revision 3543)
+++ /orxonox/trunk/src/orxonox.cc	(revision 3544)
@@ -48,12 +48,4 @@
 Orxonox::~Orxonox () 
 {
-  this->destroy();
-}
-
-/**
-   \brief destroys orxonox. Frees al memory and so on.
-*/
-void Orxonox::destroy(void)
-{
   Orxonox::singletonRef = NULL;
   if( world != NULL) delete world;
@@ -61,6 +53,4 @@
   if( localcamera != NULL) delete localcamera;
   if( resources != NULL) delete resources;
-
-  
 }
 
Index: /orxonox/trunk/src/orxonox.h
===================================================================
--- /orxonox/trunk/src/orxonox.h	(revision 3543)
+++ /orxonox/trunk/src/orxonox.h	(revision 3544)
@@ -25,5 +25,4 @@
   Orxonox ();
   virtual ~Orxonox ();
-  void destroy(void);
 
   char configfilename[256];   //!< Filename of the configuration-file.
Index: /orxonox/trunk/src/proto_class.cc
===================================================================
--- /orxonox/trunk/src/proto_class.cc	(revision 3543)
+++ /orxonox/trunk/src/proto_class.cc	(revision 3544)
@@ -40,14 +40,5 @@
 ProtoClass::~ProtoClass () 
 {
-  this->destroy();
-}
-
-/**
-   \brief deletes all data and also deletes all data from the class this is derived from
-*/
-ProtoClass::~destroy(void)
-{
   // delete what has to be deleted here
-  static_cast<BaseObject*>(this)->destroy();
 }
 
Index: /orxonox/trunk/src/proto_class.h
===================================================================
--- /orxonox/trunk/src/proto_class.h	(revision 3543)
+++ /orxonox/trunk/src/proto_class.h	(revision 3544)
@@ -29,5 +29,4 @@
   ProtoClass();
   virtual ~ProtoClass();
-  void destroy(void)
 
   bool doNonSense (int nothing);
Index: /orxonox/trunk/src/story_entities/campaign.h
===================================================================
--- /orxonox/trunk/src/story_entities/campaign.h	(revision 3543)
+++ /orxonox/trunk/src/story_entities/campaign.h	(revision 3544)
@@ -13,5 +13,5 @@
  public:
   Campaign ();
-  ~Campaign ();
+  virtual ~Campaign ();
 
   StoryEntity* currentEntity;
Index: /orxonox/trunk/src/story_entities/world.cc
===================================================================
--- /orxonox/trunk/src/story_entities/world.cc	(revision 3543)
+++ /orxonox/trunk/src/story_entities/world.cc	(revision 3544)
@@ -69,6 +69,5 @@
   cn->reset();
 
-  this->localCamera->destroy();
-  this->nullParent->destroy();
+  delete this->localCamera;
   delete this->nullParent;
   //delete this->skySphere;
@@ -665,5 +664,5 @@
   p4->debug ();
 
-  p1->destroy ();
+  delete p1;
   
   
Index: /orxonox/trunk/src/track_manager.cc
===================================================================
--- /orxonox/trunk/src/track_manager.cc	(revision 3543)
+++ /orxonox/trunk/src/track_manager.cc	(revision 3544)
@@ -226,12 +226,4 @@
 TrackManager::~TrackManager(void)
 {
-  this->destroy();
-}
-
-/**
-   \brief deletes all alocated Memory and also deletes everything from the Class this one is erived from
-*/
-void TrackManager::destroy(void)
-{
   PRINTF(3)("Destruct TrackManager\n");
 
@@ -241,6 +233,4 @@
   // we do not have a TrackManager anymore
   singletonRef = NULL;
-  
-  static_cast<BaseObject*>(this)->destroy();
 }
 
Index: /orxonox/trunk/src/track_manager.h
===================================================================
--- /orxonox/trunk/src/track_manager.h	(revision 3543)
+++ /orxonox/trunk/src/track_manager.h	(revision 3544)
@@ -122,5 +122,5 @@
  public:
   virtual ~TrackManager(void);
-  void destroy(void);
+
   static TrackManager* getInstance(void);
 
Index: /orxonox/trunk/src/track_node.cc
===================================================================
--- /orxonox/trunk/src/track_node.cc	(revision 3543)
+++ /orxonox/trunk/src/track_node.cc	(revision 3544)
@@ -66,14 +66,4 @@
 TrackNode::~TrackNode () 
 {
-  this->destroy();
+  singletonRef = NULL;
 }
-
-/**
-   \brief destroys the TrackNode and all its alocated memory.
-*/
-void TrackNode::destroy(void)
-{
-  singletonRef = NULL;
-  
-  static_cast<PNode*>(this)->destroy();
-}
Index: /orxonox/trunk/src/track_node.h
===================================================================
--- /orxonox/trunk/src/track_node.h	(revision 3543)
+++ /orxonox/trunk/src/track_node.h	(revision 3544)
@@ -22,5 +22,4 @@
   static TrackNode* getInstance ();
   virtual ~TrackNode ();
-  void destroy();
 
  private:
Index: /orxonox/trunk/src/world_entities/environment.h
===================================================================
--- /orxonox/trunk/src/world_entities/environment.h	(revision 3543)
+++ /orxonox/trunk/src/world_entities/environment.h	(revision 3544)
@@ -18,5 +18,5 @@
  public:
   Environment ();
-  ~Environment ();
+  virtual ~Environment ();
 
   
Index: /orxonox/trunk/src/world_entities/npc.h
===================================================================
--- /orxonox/trunk/src/world_entities/npc.h	(revision 3543)
+++ /orxonox/trunk/src/world_entities/npc.h	(revision 3544)
@@ -12,5 +12,4 @@
   NPC ();
   ~NPC ();
-  void destroy(void);
 
   /* collision control */
Index: /orxonox/trunk/src/world_entities/player.cc
===================================================================
--- /orxonox/trunk/src/world_entities/player.cc	(revision 3543)
+++ /orxonox/trunk/src/world_entities/player.cc	(revision 3544)
@@ -33,19 +33,9 @@
 
 /**
-   \brief destructs the player
+   \brief destructs the player, deletes alocated memory
 */
 Player::~Player ()
 {
-  this->destroy();
-}
-
-/**
-   \brief deletes all allocated memory of the Player
-*/
-void Player::destroy ()
-{
   delete this->model;
-
-  static_cast<WorldEntity*>(this)->destroy();
 }
 
Index: /orxonox/trunk/src/world_entities/player.h
===================================================================
--- /orxonox/trunk/src/world_entities/player.h	(revision 3543)
+++ /orxonox/trunk/src/world_entities/player.h	(revision 3544)
@@ -19,5 +19,4 @@
   Player(bool isFree = false);
   virtual ~Player();
-  void destroy();
   
   virtual void postSpawn();
Index: /orxonox/trunk/src/world_entities/power_up.h
===================================================================
--- /orxonox/trunk/src/world_entities/power_up.h	(revision 3543)
+++ /orxonox/trunk/src/world_entities/power_up.h	(revision 3544)
@@ -15,5 +15,5 @@
  public:
   PowerUp ();
-  ~PowerUp ();
+  virtual ~PowerUp ();
   
 };
Index: /orxonox/trunk/src/world_entities/primitive.cc
===================================================================
--- /orxonox/trunk/src/world_entities/primitive.cc	(revision 3543)
+++ /orxonox/trunk/src/world_entities/primitive.cc	(revision 3544)
@@ -39,12 +39,4 @@
 }
 
-void Primitive::destroy () 
-{
-
-
-  static_cast<WorldEntity*>(this)->destroy();
-}
-
-
 void Primitive::tick (float time) 
 {
Index: /orxonox/trunk/src/world_entities/primitive.h
===================================================================
--- /orxonox/trunk/src/world_entities/primitive.h	(revision 3543)
+++ /orxonox/trunk/src/world_entities/primitive.h	(revision 3544)
@@ -13,5 +13,4 @@
   Primitive (PRIMITIVE_FORM form);
   virtual ~Primitive ();
-  void destroy(void);
 
   virtual void tick (float time);
Index: /orxonox/trunk/src/world_entities/skysphere.cc
===================================================================
--- /orxonox/trunk/src/world_entities/skysphere.cc	(revision 3543)
+++ /orxonox/trunk/src/world_entities/skysphere.cc	(revision 3544)
@@ -57,15 +57,7 @@
 Skysphere::~Skysphere()
 {
-  this->destroy();
-}
-
-void Skysphere::destroy(void)
-{
-
   PRINTF(3)("Deleting the SkySphere\n");
-  delete skyMaterial;
-  free(sphereObj);
-  
-  static_cast<WorldEntity*>(this)->destroy();
+  delete this->skyMaterial;
+  free(this->sphereObj);
 }
 
Index: /orxonox/trunk/src/world_entities/world_entity.cc
===================================================================
--- /orxonox/trunk/src/world_entities/world_entity.cc	(revision 3543)
+++ /orxonox/trunk/src/world_entities/world_entity.cc	(revision 3544)
@@ -47,17 +47,6 @@
 {
   // if( collisioncluster != NULL) delete collisioncluster;
-  this->destroy();
-}
-
-/**
-   \brief Function to call if a WorldEntity is destroyed. deletes all alocated memory.
-   */
-void WorldEntity::destroy() 
-{
-
-  // delete everything of pNode.
-  static_cast<PNode*>(this)->destroy();
-}
-
+
+}
 
 /**
Index: /orxonox/trunk/src/world_entities/world_entity.h
===================================================================
--- /orxonox/trunk/src/world_entities/world_entity.h	(revision 3543)
+++ /orxonox/trunk/src/world_entities/world_entity.h	(revision 3544)
@@ -21,5 +21,4 @@
   WorldEntity (bool isFree = false);
   virtual ~WorldEntity ();
-  void destroy ();
 
 
