Index: trunk/src/world_entities/weapons/aim.cc
===================================================================
--- trunk/src/world_entities/weapons/aim.cc	(revision 6078)
+++ trunk/src/world_entities/weapons/aim.cc	(revision 6142)
@@ -104,5 +104,6 @@
 void Aim::searchTarget(float range)
 {
-  tIterator<WorldEntity>* iterator = State::getWorldEntityList()->getIterator();
+  //FIXME//
+/*  tIterator<WorldEntity>* iterator = State::getWorldEntityList()->getIterator();
   WorldEntity* entity = iterator->firstElement();
   while (likely(entity != NULL))
@@ -121,5 +122,5 @@
   }
 
-  delete iterator;
+  delete iterator;*/
 }
 
Index: trunk/src/world_entities/weapons/bomb.cc
===================================================================
--- trunk/src/world_entities/weapons/bomb.cc	(revision 6078)
+++ trunk/src/world_entities/weapons/bomb.cc	(revision 6142)
@@ -174,5 +174,4 @@
 void Bomb::activate()
 {
-  State::getWorldEntityList()->add(this);
 
 }
@@ -180,5 +179,5 @@
 void Bomb::deactivate()
 {
-  State::getWorldEntityList()->remove(this);
+  this->toList(OM_DEAD);
   this->lifeCycle = 0.0f;
   Bomb::fastFactory->kill(this);
Index: trunk/src/world_entities/weapons/ground_turret.cc
===================================================================
--- trunk/src/world_entities/weapons/ground_turret.cc	(revision 6078)
+++ trunk/src/world_entities/weapons/ground_turret.cc	(revision 6142)
@@ -89,4 +89,5 @@
   {
     this->left->setParent(this);
+    this->left->toList(this->getOMListNumber());
     this->left->setRelCoor(0,10,-5);
   }
@@ -98,4 +99,5 @@
   {
     this->right->setParent(this);
+    this->right->toList(this->getOMListNumber());
     this->right->setRelCoor(0,10,5);
   }
Index: trunk/src/world_entities/weapons/guided_missile.cc
===================================================================
--- trunk/src/world_entities/weapons/guided_missile.cc	(revision 6078)
+++ trunk/src/world_entities/weapons/guided_missile.cc	(revision 6142)
@@ -85,5 +85,4 @@
 void GuidedMissile::activate()
 {
-  State::getWorldEntityList()->add(this);
   if (unlikely(GuidedMissile::trailParticles == NULL))
   {
@@ -129,6 +128,5 @@
   this->lifeCycle = 0.0;
 
-//  GarbageCollector::getInstance()->collect(this);
-  State::getWorldEntityList()->remove(this);
+  this->toList(OM_DEAD);
   this->removeNode();
   GuidedMissile::fastFactory->kill(this);
@@ -152,5 +150,4 @@
   if (this->target != NULL && this->target->getParent() != PNode::getNullParent())
    {
-     printf("========%s::%s\n", target->getParent()->getClassName(), target->getParent()->getName() );
      velocity += ((target->getAbsCoor() - this->getAbsCoor()).getNormalized())*agility;
      float speed = velocity.len();
Index: trunk/src/world_entities/weapons/laser.cc
===================================================================
--- trunk/src/world_entities/weapons/laser.cc	(revision 6078)
+++ trunk/src/world_entities/weapons/laser.cc	(revision 6142)
@@ -77,5 +77,4 @@
 void Laser::activate()
 {
-  State::getWorldEntityList()->add(this);
   if (unlikely(Laser::explosionParticles == NULL))
   {
@@ -98,6 +97,5 @@
   this->lifeCycle = 0.0;
 
-//  GarbageCollector::getInstance()->collect(this);
-  State::getWorldEntityList()->remove(this);
+  this->toList(OM_NULL);
   this->removeNode();
   Laser::fastFactory->kill(this);
@@ -134,5 +132,4 @@
   this->lifeCycle = .95; //!< @todo calculate this usefully.
   ParticleEngine::getInstance()->addConnection(this->emitter, Laser::explosionParticles);
-
 }
 
Index: trunk/src/world_entities/weapons/projectile.cc
===================================================================
--- trunk/src/world_entities/weapons/projectile.cc	(revision 6078)
+++ trunk/src/world_entities/weapons/projectile.cc	(revision 6142)
@@ -22,6 +22,4 @@
 #include "weapon.h"
 #include "model.h"
-
-#include "garbage_collector.h"
 
 using namespace std;
Index: trunk/src/world_entities/weapons/rocket.cc
===================================================================
--- trunk/src/world_entities/weapons/rocket.cc	(revision 6078)
+++ trunk/src/world_entities/weapons/rocket.cc	(revision 6142)
@@ -82,5 +82,4 @@
 void Rocket::activate()
 {
-  State::getWorldEntityList()->add(this);
   if (unlikely(Rocket::trailParticles == NULL))
   {
@@ -125,7 +124,8 @@
   ParticleEngine::getInstance()->breakConnections(this->emitter);
   this->lifeCycle = 0.0;
+  this->toList(OM_NULL);
 
 //  GarbageCollector::getInstance()->collect(this);
-  State::getWorldEntityList()->remove(this);
+  this->toList(OM_DEAD);
   Rocket::fastFactory->kill(this);
 }
Index: trunk/src/world_entities/weapons/test_bullet.cc
===================================================================
--- trunk/src/world_entities/weapons/test_bullet.cc	(revision 6078)
+++ trunk/src/world_entities/weapons/test_bullet.cc	(revision 6142)
@@ -82,5 +82,4 @@
 void TestBullet::activate()
 {
-  State::getWorldEntityList()->add(this);
   if (unlikely(TestBullet::trailParticles == NULL))
   {
@@ -119,7 +118,6 @@
   ParticleEngine::getInstance()->breakConnections(this->emitter);
   this->lifeCycle = 0.0;
+  this->toList(OM_NULL);
 
-//  GarbageCollector::getInstance()->collect(this);
-  State::getWorldEntityList()->remove(this);
   TestBullet::fastFactory->kill(this);
 }
Index: trunk/src/world_entities/weapons/weapon.cc
===================================================================
--- trunk/src/world_entities/weapons/weapon.cc	(revision 6078)
+++ trunk/src/world_entities/weapons/weapon.cc	(revision 6142)
@@ -192,5 +192,9 @@
 {
   if (likely (this->projectileFactory != NULL))
-    return dynamic_cast<Projectile*>(this->projectileFactory->resurrect());
+  {
+    Projectile* pj = dynamic_cast<Projectile*>(this->projectileFactory->resurrect());
+    pj->toList((OM_LIST)(this->getOMListNumber()+1));
+    return pj;
+  }
   else
   {
Index: trunk/src/world_entities/weapons/weapon_manager.cc
===================================================================
--- trunk/src/world_entities/weapons/weapon_manager.cc	(revision 6078)
+++ trunk/src/world_entities/weapons/weapon_manager.cc	(revision 6142)
@@ -35,5 +35,5 @@
  * @param number of weapon slots of the model/ship <= 8 (limitied)
  */
-WeaponManager::WeaponManager(PNode* parent)
+WeaponManager::WeaponManager(WorldEntity* parent)
 {
   this->init();
@@ -155,8 +155,6 @@
  * a PNode.
  */
-void WeaponManager::setParent(PNode* parent)
-{
-  if (parent == NULL)
-    parent = PNode::getNullParent();
+void WeaponManager::setParent(WorldEntity* parent)
+{
   this->parent = parent;
   if (this->parent != NULL)
@@ -247,5 +245,7 @@
   this->configs[configID][slotID] = weapon;
   if (this->parent != NULL)
-    weapon->setParent(parent);
+  {
+    this->parent->addChild(weapon);
+  }
   PRINTF(3)("Added a new Weapon to the WeaponManager: config %i/ slot %i\n", configID, slotID);
 }
@@ -373,4 +373,6 @@
       else
       {
+        if (this->currentSlotConfig[i].currentWeapon != NULL)
+          this->currentSlotConfig[i].currentWeapon->toList(OM_NULL);
         tickWeapon = this->currentSlotConfig[i].currentWeapon = this->currentSlotConfig[i].nextWeapon;
         if (tickWeapon != NULL)
@@ -378,4 +380,5 @@
           tickWeapon->requestAction(WA_ACTIVATE);
           tickWeapon->setParent(&this->currentSlotConfig[i].position);
+          tickWeapon->toList(this->parent->getOMListNumber());
           this->currentSlotConfig[i].position.activateNode();
         }
Index: trunk/src/world_entities/weapons/weapon_manager.h
===================================================================
--- trunk/src/world_entities/weapons/weapon_manager.h	(revision 6078)
+++ trunk/src/world_entities/weapons/weapon_manager.h	(revision 6142)
@@ -45,5 +45,5 @@
 
   public:
-    WeaponManager(PNode* parent);
+    WeaponManager(WorldEntity* parent);
     WeaponManager(const TiXmlElement* root);
     ~WeaponManager();
@@ -63,5 +63,5 @@
     long getSlotCapability(int slot) const { return this->currentSlotConfig[slot].capability; };
 
-    void setParent(PNode* parent);
+    void setParent(WorldEntity* parent);
     /** @returns the Parent (carrier) of this WeaponManager */
     PNode* getParent() const { return this->parent; };
@@ -93,5 +93,5 @@
 
   private:
-    PNode*                  parent;                                   //!< The parent, this WeaponManager is connected to.
+    WorldEntity*            parent;                                   //!< The parent, this WeaponManager is connected to.
 
     int                     slotCount;                                //!< number of weapon slots the ship has.
