Index: /trunk/src/world_entities/weapons/guided_missile.cc
===================================================================
--- /trunk/src/world_entities/weapons/guided_missile.cc	(revision 6055)
+++ /trunk/src/world_entities/weapons/guided_missile.cc	(revision 6056)
@@ -134,4 +134,5 @@
 //  GarbageCollector::getInstance()->collect(this);
   State::getWorldEntityList()->remove(this);
+  this->removeNode();
   GuidedMissile::fastFactory->kill(this);
 }
@@ -164,13 +165,6 @@
   this->shiftCoor(v);
 
-  this->lifeCycle += time/this->lifeSpan;
-  if( this->lifeCycle >= 1.0)
-    {
-      PRINTF(5)("FINALIZE==========================\n");
-      PRINTF(5)("current life cycle is: %f\n", this->lifeCycle);
-      PRINTF(5)("FINALIZE===========================\n");
-
-      this->deactivate();
-    }
+  if(this->tickLifeCycle(time))
+    this->deactivate();
 }
 
Index: /trunk/src/world_entities/weapons/laser.cc
===================================================================
--- /trunk/src/world_entities/weapons/laser.cc	(revision 6055)
+++ /trunk/src/world_entities/weapons/laser.cc	(revision 6056)
@@ -100,4 +100,5 @@
 //  GarbageCollector::getInstance()->collect(this);
   State::getWorldEntityList()->remove(this);
+  this->removeNode();
   Laser::fastFactory->kill(this);
 }
@@ -113,21 +114,14 @@
 /**
  *  signal tick, time dependent things will be handled here
- * @param time since last tick
+ * @param dt time since last tick
 */
-void Laser::tick (float time)
+void Laser::tick (float dt)
 {
   //Vector v = *this->flightDirection * ( this->speed * time * 1000 + 0.1);
-  Vector v = this->velocity * (time);
+  Vector v = this->velocity * dt;
   this->shiftCoor(v);
 
-  this->lifeCycle += time/this->lifeSpan;
-  if( this->lifeCycle >= 1.0)
-    {
-      PRINTF(5)("FINALIZE==========================\n");
-      PRINTF(5)("current life cycle is: %f\n", this->lifeCycle);
-      PRINTF(5)("FINALIZE===========================\n");
-
-      this->deactivate();
-    }
+  if (this->tickLifeCycle(dt))
+    this->deactivate();
 }
 
Index: /trunk/src/world_entities/weapons/laser.h
===================================================================
--- /trunk/src/world_entities/weapons/laser.h	(revision 6055)
+++ /trunk/src/world_entities/weapons/laser.h	(revision 6056)
@@ -29,5 +29,5 @@
     virtual void destroy ();
 
-    virtual void tick (float time);
+    virtual void tick (float dt);
     virtual void draw () const;
 
Index: /trunk/src/world_entities/weapons/projectile.cc
===================================================================
--- /trunk/src/world_entities/weapons/projectile.cc	(revision 6055)
+++ /trunk/src/world_entities/weapons/projectile.cc	(revision 6056)
@@ -110,20 +110,13 @@
 /**
  * signal tick, time dependent things will be handled here
- * @param time since last tick
+ * @param dt since last tick
 */
-void Projectile::tick (float time)
+void Projectile::tick (float dt)
 {
-  Vector v = this->velocity * (time);
+  Vector v = this->velocity * (dt);
   this->shiftCoor(v);
 
-  this->lifeCycle += time/this->lifeSpan;
-  if( this->lifeCycle >= 1)
-  {
-    PRINTF(5)("FINALIZE==========================\n");
-    PRINTF(5)("current life cycle is: %f\n", this->lifeCycle);
-    PRINTF(5)("FINALIZE===========================\n");
-    //this->finalize();
-    GarbageCollector::getInstance()->collect(this);
-  }
+  if (this->tickLifeCycle(dt))
+    this->destroy();
 }
 
Index: /trunk/src/world_entities/weapons/projectile.h
===================================================================
--- /trunk/src/world_entities/weapons/projectile.h	(revision 6055)
+++ /trunk/src/world_entities/weapons/projectile.h	(revision 6056)
@@ -40,5 +40,10 @@
     virtual void destroy ();
 
-    virtual void tick (float time);
+    virtual void tick (float dt);
+    /** @brief convenience function
+     * @param dt the Time passed
+     * @returns true if the Projectile is past its lifeTime, false if it shall still live */
+    inline bool tickLifeCycle(float dt ) { this->lifeCycle += dt/this->lifeSpan;  return(unlikely(this->lifeCycle >= 1)); }
+
 
   protected:
Index: /trunk/src/world_entities/weapons/rocket.cc
===================================================================
--- /trunk/src/world_entities/weapons/rocket.cc	(revision 6055)
+++ /trunk/src/world_entities/weapons/rocket.cc	(revision 6056)
@@ -143,19 +143,12 @@
  * @param time since last tick
 */
-void Rocket::tick (float time)
+void Rocket::tick (float dt)
 {
   //Vector v = *this->flightDirection * ( this->speed * time * 1000 + 0.1);
-  Vector v = this->velocity * (time);
+  Vector v = this->velocity * (dt);
   this->shiftCoor(v);
 
-  this->lifeCycle += time/this->lifeSpan;
-  if( this->lifeCycle >= 1.0)
-    {
-      PRINTF(5)("FINALIZE==========================\n");
-      PRINTF(5)("current life cycle is: %f\n", this->lifeCycle);
-      PRINTF(5)("FINALIZE===========================\n");
-
-      this->deactivate();
-    }
+  if(this->tickLifeCycle(dt))
+    this->deactivate();
 }
 
Index: /trunk/src/world_entities/weapons/weapon_manager.cc
===================================================================
--- /trunk/src/world_entities/weapons/weapon_manager.cc	(revision 6055)
+++ /trunk/src/world_entities/weapons/weapon_manager.cc	(revision 6056)
@@ -90,4 +90,5 @@
     }
     this->currentSlotConfig[i].position.setName(tmpName);
+    this->currentSlotConfig[i].position.deactivateNode();
     delete[] tmpName;
   }
