Index: code/trunk/src/orxonox/pickup/DroppedItem.cc
===================================================================
--- code/trunk/src/orxonox/pickup/DroppedItem.cc	(revision 5781)
+++ code/trunk/src/orxonox/pickup/DroppedItem.cc	(revision 5929)
@@ -56,5 +56,5 @@
         if (this->item_)
         {
-            for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it != ObjectList<Pawn>::end(); it++)
+            for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it != ObjectList<Pawn>::end(); ++it)
             {
                 Vector3 distance = it->getWorldPosition() - this->getWorldPosition();
@@ -69,5 +69,5 @@
         {
             COUT(3) << "DroppedItem '" << this->item_->getPickupIdentifier() << "' picked up." << std::endl;
-            delete this;
+            this->destroy();
         }
     }
@@ -76,6 +76,5 @@
         if (this->timeToLive_ > 0)
         {
-            ExecutorMember<DroppedItem>* exec = createExecutor(createFunctor(&DroppedItem::timerCallback));
-            this->timer_.setTimer(this->timeToLive_, false, this, exec, false);
+            this->timer_.setTimer(this->timeToLive_, false, createExecutor(createFunctor(&DroppedItem::timerCallback, this)), false);
         }
     }
@@ -85,8 +84,8 @@
         {
             COUT(3) << "Delete DroppedItem with '" << this->item_->getPickupIdentifier() << "'" << std::endl;
-            delete this->item_;
+            this->item_->destroy();
         }
 
-        delete this;
+        this->destroy();
     }
 
Index: code/trunk/src/orxonox/pickup/DroppedItem.h
===================================================================
--- code/trunk/src/orxonox/pickup/DroppedItem.h	(revision 5781)
+++ code/trunk/src/orxonox/pickup/DroppedItem.h	(revision 5929)
@@ -77,5 +77,5 @@
         BaseItem* item_;
 
-        Timer<DroppedItem> timer_;
+        Timer timer_;
     };
 }
Index: code/trunk/src/orxonox/pickup/ModifierPickup.cc
===================================================================
--- code/trunk/src/orxonox/pickup/ModifierPickup.cc	(revision 5781)
+++ code/trunk/src/orxonox/pickup/ModifierPickup.cc	(revision 5929)
@@ -101,7 +101,7 @@
             if (this->duration_ > 0.0f)
             {
-                ExecutorMember<ModifierPickup>* executor = createExecutor(createFunctor(&ModifierPickup::timerCallback));
+                Executor* executor = createExecutor(createFunctor(&ModifierPickup::timerCallback, this));
                 executor->setDefaultValues(pawn);
-                this->timer_.setTimer(this->duration_, false, this, executor);
+                this->timer_.setTimer(this->duration_, false, executor);
             }
 
@@ -139,5 +139,5 @@
                 this->timer_.stopTimer();
 
-            delete this;
+            this->destroy();
 
             return true;
Index: code/trunk/src/orxonox/pickup/ModifierPickup.h
===================================================================
--- code/trunk/src/orxonox/pickup/ModifierPickup.h	(revision 5781)
+++ code/trunk/src/orxonox/pickup/ModifierPickup.h	(revision 5929)
@@ -129,4 +129,5 @@
 
         void timerCallback(Pawn* pawn);     //!< Method called when the timer runs out.
+        
     private:
         float getAdditiveModifier(ModifierType::Value type) const;               //!< Get the additive modifier for a given ModifierType.
@@ -138,6 +139,6 @@
         std::map<ModifierType::Value, float> multiplicativeModifiers_;           //!< Map of multiplicative modifiers, indexed by ModifierType.
 
-        float duration_;                                                        //!< Duration of this pickup's effect (0 for unlimited).
-        Timer<ModifierPickup> timer_;                                           //!< Timer used if the pickup's effect has a time limit.
+        float duration_;                                                         //!< Duration of this pickup's effect (0 for unlimited).
+        Timer timer_;                                                            //!< Timer used if the pickup's effect has a time limit.
     };
 }
Index: code/trunk/src/orxonox/pickup/PickupSpawner.cc
===================================================================
--- code/trunk/src/orxonox/pickup/PickupSpawner.cc	(revision 5781)
+++ code/trunk/src/orxonox/pickup/PickupSpawner.cc	(revision 5929)
@@ -91,5 +91,5 @@
             asItem->addTemplate(this->itemTemplate_);
             PickupInventory::getImageForItem(asItem);
-            delete newObject;
+            newObject->destroy();
         }
 
@@ -127,5 +127,5 @@
         if (this->isActive())
         {
-            for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it != ObjectList<Pawn>::end(); it++)
+            for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it != ObjectList<Pawn>::end(); ++it)
             {
                 Vector3 distance = it->getWorldPosition() - this->getWorldPosition();
@@ -166,6 +166,5 @@
                     if (this->respawnTime_ > 0.0f)
                     {
-                        ExecutorMember<PickupSpawner>* executor = createExecutor(createFunctor(&PickupSpawner::respawnTimerCallback));
-                        this->respawnTimer_.setTimer(this->respawnTime_, false, this, executor);
+                        this->respawnTimer_.setTimer(this->respawnTime_, false, createExecutor(createFunctor(&PickupSpawner::respawnTimerCallback, this)));
 
                         this->setActive(false);
@@ -174,5 +173,5 @@
                 }
                 else
-                    delete newObject;
+                    newObject->destroy();
             }
         }
Index: code/trunk/src/orxonox/pickup/PickupSpawner.h
===================================================================
--- code/trunk/src/orxonox/pickup/PickupSpawner.h	(revision 5781)
+++ code/trunk/src/orxonox/pickup/PickupSpawner.h	(revision 5929)
@@ -114,5 +114,5 @@
 
         float respawnTime_;                     //!< Time after which this gets re-actived.
-        Timer<PickupSpawner> respawnTimer_;     //!< Timer used for re-activating.
+        Timer respawnTimer_;                    //!< Timer used for re-activating.
     };
 }
Index: code/trunk/src/orxonox/pickup/items/HealthImmediate.cc
===================================================================
--- code/trunk/src/orxonox/pickup/items/HealthImmediate.cc	(revision 5781)
+++ code/trunk/src/orxonox/pickup/items/HealthImmediate.cc	(revision 5929)
@@ -67,5 +67,5 @@
         {
             pawn->addHealth(this->recoveredHealth_);
-            delete this;
+            this->destroy();
         }
 
Index: code/trunk/src/orxonox/pickup/items/HealthUsable.cc
===================================================================
--- code/trunk/src/orxonox/pickup/items/HealthUsable.cc	(revision 5781)
+++ code/trunk/src/orxonox/pickup/items/HealthUsable.cc	(revision 5929)
@@ -82,5 +82,5 @@
 
             this->removeFrom(pawn);
-            delete this;
+            this->destroy();
         }
     }
Index: code/trunk/src/orxonox/pickup/items/Jump.cc
===================================================================
--- code/trunk/src/orxonox/pickup/items/Jump.cc	(revision 5781)
+++ code/trunk/src/orxonox/pickup/items/Jump.cc	(revision 5929)
@@ -84,5 +84,5 @@
         {
             this->removeFrom(pawn);
-            delete this;
+            this->destroy();
         }
     }
