Index: code/trunk/src/modules/pickup/Pickup.cc
===================================================================
--- code/trunk/src/modules/pickup/Pickup.cc	(revision 7207)
+++ code/trunk/src/modules/pickup/Pickup.cc	(revision 7208)
@@ -236,28 +236,3 @@
     }
 
-    /**
-    @brief
-        Starts the pickup duration timer.
-        After the specified durationTime has expired the function pickupTimerCallback is called.
-        pickupTimerCallback can be overloaded and thus the desired functionality can be implemented.
-    @param durationTime
-        The duration after which the expires and the callback function is called.
-    @return
-        Returns true if the pickup duration timer was started successfully, false if not.
-    */
-    bool Pickup::startPickupTimer(float durationTime)
-    {
-        if (durationTime<=0)
-        {
-            COUT(1) << "Invalid durationTime in pickup." << std::endl;
-            return false;
-        }
-        if (this->durationTimer_.isActive()) //!< Check if Timer is already running
-        {
-            COUT(1) << "Pickup durationTimer already in use." << std::endl;
-            return false;
-        }
-        this->durationTimer_.setTimer(durationTime, false, createExecutor(createFunctor(&Pickup::pickupTimerCallback, this)));
-        return true;
-    }
 }
Index: code/trunk/src/modules/pickup/Pickup.h
===================================================================
--- code/trunk/src/modules/pickup/Pickup.h	(revision 7207)
+++ code/trunk/src/modules/pickup/Pickup.h	(revision 7208)
@@ -133,18 +133,4 @@
             virtual bool createSpawner(void); //!< Facilitates the creation of a PickupSpawner upon dropping of the Pickupable.
 
-            bool startPickupTimer(float durationTime); //!< Starts the pickup duration timer.
-            /**
-            @brief Get your Timer.
-            @return Returns a pointer to the Timer.
-            */
-            inline Timer* getTimer(void)
-                { return &this->durationTimer_; }
-
-            /**
-            @brief The callback method for the Timer.
-                   Can be overloaded to implement desired functionality.
-            */
-            virtual void pickupTimerCallback(void) {}
-
             /**
             @brief Set the activation type of the pickup.
@@ -166,7 +152,4 @@
             void initialize(void); //!< Initializes the member variables.
 
-            //TODO: Problems, when there are more Timers needed? Solutions?
-            Timer durationTimer_; //!< Timer at the disposal of each Class implementing Pickup.
-
             pickupActivationType::Value activationType_; //!< The activation type of the Pickup.
             pickupDurationType::Value durationType_; //!< The duration type of the pickup.
Index: code/trunk/src/modules/pickup/items/InvisiblePickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/InvisiblePickup.cc	(revision 7207)
+++ code/trunk/src/modules/pickup/items/InvisiblePickup.cc	(revision 7208)
@@ -115,11 +115,11 @@
         if (this->isUsed())
         {
-            if(!this->getTimer()->isActive() && this->getTimer()->getRemainingTime() > 0.0f)
-            {
-                this->getTimer()->unpauseTimer();
+            if(!this->durationTimer_.isActive() && this->durationTimer_.getRemainingTime() > 0.0f)
+            {
+                this->durationTimer_.unpauseTimer();
             }
             else
             {
-                this->startPickupTimer(this->getDuration());
+                this->durationTimer_.setTimer(this->getDuration(), false, createExecutor(createFunctor(&InvisiblePickup::pickupTimerCallback, this)));
             }
 
@@ -131,5 +131,5 @@
             this->setInvisible(false);
 
-            if(!this->getTimer()->isActive() && this->getTimer()->getRemainingTime() == this->getDuration())
+            if(!this->durationTimer_.isActive() && this->durationTimer_.getRemainingTime() == this->getDuration())
             {
                 this->Pickupable::destroy();
@@ -137,5 +137,5 @@
             else
             {
-                this->getTimer()->pauseTimer();
+                this->durationTimer_.pauseTimer();
             }
         }
Index: code/trunk/src/modules/pickup/items/InvisiblePickup.h
===================================================================
--- code/trunk/src/modules/pickup/items/InvisiblePickup.h	(revision 7207)
+++ code/trunk/src/modules/pickup/items/InvisiblePickup.h	(revision 7208)
@@ -77,9 +77,12 @@
             void setDuration(float duration);
             void initializeIdentifier(void);
-            virtual void pickupTimerCallback(void); //!< Function that gets called when the timer ends.
+            void pickupTimerCallback(void); //!< Function that gets called when the timer ends.
 
         private:
             void initialize(void); //!< Initializes the member variables.
             Pawn* carrierToPawnHelper(void); //!< Helper to transform the PickupCarrier to a Pawn, and throw an error message if the conversion fails.
+
+            Timer durationTimer_; //!< Timer.
+
             bool invisible_; //!< Helper to remember wether the Pawn is invisible.
             float duration_; //! Duration of invisibility.
Index: code/trunk/src/modules/pickup/items/ShieldPickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/ShieldPickup.cc	(revision 7207)
+++ code/trunk/src/modules/pickup/items/ShieldPickup.cc	(revision 7208)
@@ -160,11 +160,11 @@
         if(this->isUsed())
         {
-            if(!this->getTimer()->isActive() && this->getTimer()->getRemainingTime() > 0.0f)
+            if(!this->durationTimer_.isActive() && this->durationTimer_.getRemainingTime() > 0.0f)
             {
-                this->getTimer()->unpauseTimer();
+                this->durationTimer_.unpauseTimer();
             }
             else
             {
-                this->startPickupTimer(this->getDuration());
+                this->durationTimer_.setTimer(this->getDuration(), false, createExecutor(createFunctor(&ShieldPickup::pickupTimerCallback, this)));
             }
             pawn->setShieldAbsorption(this->getShieldAbsorption());
@@ -179,5 +179,5 @@
             if(this->isOnce())
             {
-                if(!this->getTimer()->isActive() && this->getTimer()->getRemainingTime() == this->getDuration())
+                if(!this->durationTimer_.isActive() && this->durationTimer_.getRemainingTime() == this->getDuration())
                 {
                     this->Pickupable::destroy();
@@ -185,5 +185,5 @@
                 else
                 {
-                    this->getTimer()->pauseTimer();
+                    this->durationTimer_.pauseTimer();
                 }
             }
Index: code/trunk/src/modules/pickup/items/ShieldPickup.h
===================================================================
--- code/trunk/src/modules/pickup/items/ShieldPickup.h	(revision 7207)
+++ code/trunk/src/modules/pickup/items/ShieldPickup.h	(revision 7208)
@@ -80,5 +80,5 @@
             void initializeIdentifier(void); //!< Initializes the PickupIdentifier of this pickup.
 
-            virtual void pickupTimerCallback(void); //!< Function that gets called when timer ends.
+            void pickupTimerCallback(void); //!< Function that gets called when timer ends.
 
             void setDuration(float duration);
@@ -90,4 +90,6 @@
             Pawn* carrierToPawnHelper(void); //!< Helper to transform the PickupCarrier to a Pawn, and throw an error message if the conversion fails.
 
+            Timer durationTimer_; //!< Timer.
+
             float duration_; //!< The health that is transferred to the Pawn.
             float shieldHealth_;
Index: code/trunk/src/modules/pickup/items/SpeedPickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/SpeedPickup.cc	(revision 7207)
+++ code/trunk/src/modules/pickup/items/SpeedPickup.cc	(revision 7208)
@@ -141,11 +141,11 @@
         if(this->isUsed())
         {
-            if(!this->getTimer()->isActive() && this->getTimer()->getRemainingTime() > 0.0f)
+            if(!this->durationTimer_.isActive() && this->durationTimer_.getRemainingTime() > 0.0f)
             {
-                this->getTimer()->unpauseTimer();
+                this->durationTimer_.unpauseTimer();
             }
             else
             {
-                this->startPickupTimer(this->getDuration());
+                this->durationTimer_.setTimer(this->getDuration(), false, createExecutor(createFunctor(&SpeedPickup::pickupTimerCallback, this)));
             }
             engine->setSpeedAdd(this->getSpeedAdd());
@@ -159,5 +159,5 @@
             if(this->isOnce())
             {
-                if(!this->getTimer()->isActive() && this->getTimer()->getRemainingTime() == this->getDuration())
+                if(!this->durationTimer_.isActive() && this->durationTimer_.getRemainingTime() == this->getDuration())
                 {
                     this->Pickupable::destroy();
@@ -165,5 +165,5 @@
                 else
                 {
-                    this->getTimer()->pauseTimer();
+                    this->durationTimer_.pauseTimer();
                 }
             }
Index: code/trunk/src/modules/pickup/items/SpeedPickup.h
===================================================================
--- code/trunk/src/modules/pickup/items/SpeedPickup.h	(revision 7207)
+++ code/trunk/src/modules/pickup/items/SpeedPickup.h	(revision 7208)
@@ -79,5 +79,5 @@
             void initializeIdentifier(void); //!< Initializes the PickupIdentifier of this pickup.
 
-            virtual void pickupTimerCallback(void); //!< Function that gets called when timer ends.
+            void pickupTimerCallback(void); //!< Function that gets called when timer ends.
 
             void setDuration(float duration);
@@ -89,4 +89,6 @@
             Engine* carrierToEngineHelper(void); //!< Helper to transform the PickupCarrier to a Pawn, and throw an error message if the conversion fails.
 
+            Timer durationTimer_; //!< Timer.
+
             float duration_; //!< The health that is transferred to the Pawn.
             float speedAdd_;
