Index: code/branches/core5/src/libraries/tools/Timer.cc
===================================================================
--- code/branches/core5/src/libraries/tools/Timer.cc	(revision 5830)
+++ code/branches/core5/src/libraries/tools/Timer.cc	(revision 5831)
@@ -42,5 +42,5 @@
     SetConsoleCommandShortcutExtern(killdelays);
 
-    static std::set<StaticTimer*> delaytimerset;
+    static std::set<Timer*> delaytimerset;
 
     /**
@@ -51,5 +51,5 @@
     void delay(float delay, const std::string& command)
     {
-        StaticTimer *delaytimer = new StaticTimer();
+        Timer* delaytimer = new Timer();
         delaytimerset.insert(delaytimer);
 
@@ -64,5 +64,5 @@
         @param command The command to execute
     */
-    void executeDelayedCommand(StaticTimer* timer, const std::string& command)
+    void executeDelayedCommand(Timer* timer, const std::string& command)
     {
         CommandExecutor::execute(command);
@@ -76,5 +76,5 @@
     void killdelays()
     {
-        for (std::set<StaticTimer*>::iterator it = delaytimerset.begin(); it != delaytimerset.end(); ++it)
+        for (std::set<Timer*>::iterator it = delaytimerset.begin(); it != delaytimerset.end(); ++it)
             (*it)->destroy();
 
@@ -85,5 +85,36 @@
         @brief Constructor: Sets the default-values.
     */
-    TimerBase::TimerBase()
+    Timer::Timer()
+    {
+        this->init();
+        RegisterObject(Timer);
+    }
+
+    /**
+        @brief Constructor: Initializes the Timer with given values.
+        @param interval The timer-interval in seconds
+        @param bLoop If true, the function gets called every 'interval' seconds
+        @param exeuctor A executor of the function to call
+    */
+    Timer::Timer(float interval, bool bLoop, Executor* executor, bool bKillAfterCall)
+    {
+        this->init();
+        RegisterObject(Timer);
+
+        this->setTimer(interval, bLoop, executor, bKillAfterCall);
+    }
+
+    /**
+        @brief Deletes the executor.
+    */
+    Timer::~Timer()
+    {
+        this->deleteExecutor();
+    }
+    
+    /**
+        @brief Initializes the Timer
+    */
+    void Timer::init()
     {
         this->executor_ = 0;
@@ -94,14 +125,4 @@
 
         this->time_ = 0;
-
-        RegisterObject(TimerBase);
-    }
-
-    /**
-        @brief Deletes the executor.
-    */
-    TimerBase::~TimerBase()
-    {
-        this->deleteExecutor();
     }
 
@@ -109,5 +130,5 @@
         @brief Executes the executor.
     */
-    void TimerBase::run()
+    void Timer::run()
     {
         bool temp = this->bKillAfterCall_; // to avoid errors with bKillAfterCall_=false and an exutors which destroy the timer
@@ -122,5 +143,5 @@
         @brief Deletes the executor.
     */
-    void TimerBase::deleteExecutor()
+    void Timer::deleteExecutor()
     {
       if (this->executor_)
@@ -131,5 +152,5 @@
         @brief Updates the timer before the frames are rendered.
     */
-    void TimerBase::tick(const Clock& time)
+    void Timer::tick(const Clock& time)
     {
         if (this->bActive_)
Index: code/branches/core5/src/libraries/tools/Timer.h
===================================================================
--- code/branches/core5/src/libraries/tools/Timer.h	(revision 5830)
+++ code/branches/core5/src/libraries/tools/Timer.h	(revision 5831)
@@ -40,5 +40,5 @@
                 ClassName();
                 void functionName();
-                Timer<ClassName> myTimer;
+                Timer myTimer;
         };
 
@@ -48,5 +48,5 @@
         ClassName::ClassName()
         {
-            myTimer.setTimer(interval_in_seconds, bLoop, this, createExecutor(createFunctor(&ClassName::functionName)));
+            myTimer.setTimer(interval_in_seconds, bLoop, createExecutor(createFunctor(&ClassName::functionName, this)));
         }
 
@@ -69,14 +69,36 @@
 namespace orxonox
 {
-    class StaticTimer;
     void delay(float delay, const std::string& command);
     void killdelays();
-    void executeDelayedCommand(StaticTimer* timer, const std::string& command);
+    void executeDelayedCommand(Timer* timer, const std::string& command);
 
-    //! TimerBase is the parent of the Timer class.
-    class _ToolsExport TimerBase : public TimeFactorListener
+    //! The Timer is a callback-object, calling a given function after a given time-interval.
+    class _ToolsExport Timer : public TimeFactorListener
     {
         public:
-            ~TimerBase();
+            Timer();
+            ~Timer();
+
+            Timer(float interval, bool bLoop, Executor* executor, bool bKillAfterCall = false);
+
+            /**
+                @brief Initializes the Timer with given values.
+                @param interval The timer-interval in seconds
+                @param bLoop If true, the function gets called every 'interval' seconds
+                @param object The object owning the timer and the function
+                @param executor A executor of the function to call
+            */
+            void setTimer(float interval, bool bLoop, Executor* executor, bool bKillAfterCall = false)
+            {
+                this->deleteExecutor();
+
+                this->setInterval(interval);
+                this->bLoop_ = bLoop;
+                this->executor_ = executor;
+                this->bActive_ = true;
+
+                this->time_ = this->interval_;
+                this->bKillAfterCall_ = bKillAfterCall;
+            }
 
             void run();
@@ -116,7 +138,7 @@
             void tick(const Clock& time);
 
-        protected:
-            TimerBase();
-
+        private:
+            void init();
+        
             Executor* executor_;  //!< The executor of the function that should be called when the time expires
 
@@ -128,86 +150,4 @@
             long long time_;      //!< Internal variable, counting the time till the next function-call
     };
-
-    //! The Timer is a callback-object, calling a given function after a given time-interval.
-    template <class T = BaseObject>
-    class Timer : public TimerBase
-    {
-        public:
-            Timer() {}
-
-            /**
-                @brief Constructor: Initializes the Timer with given values.
-                @param interval The timer-interval in seconds
-                @param bLoop If true, the function gets called every 'interval' seconds
-                @param object The object owning the timer and the function
-                @param exeuctor A executor of the function to call
-            */
-            template <class O>
-            Timer(float interval, bool bLoop, T* object, ExecutorMember<O>* exeuctor, bool bKillAfterCall = false)
-            {
-                this->setTimer(interval, bLoop, object, exeuctor, bKillAfterCall);
-            }
-
-            /**
-                @brief Initializes the Timer with given values.
-                @param interval The timer-interval in seconds
-                @param bLoop If true, the function gets called every 'interval' seconds
-                @param object The object owning the timer and the function
-                @param exeuctor A executor of the function to call
-            */
-            template <class O>
-            void setTimer(float interval, bool bLoop, T* object, ExecutorMember<O>* executor, bool bKillAfterCall = false)
-            {
-                this->deleteExecutor();
-
-                this->setInterval(interval);
-                this->bLoop_ = bLoop;
-                executor->setObject(object);
-                this->executor_ = static_cast<Executor*>(executor);
-                this->bActive_ = true;
-
-                this->time_ = this->interval_;
-                this->bKillAfterCall_ = bKillAfterCall;
-            }
-    };
-
-    //! The StaticTimer is a callback-object, calling a static function after a given time-interval.
-    class _ToolsExport StaticTimer : public TimerBase
-    {
-        public:
-            StaticTimer() {}
-
-            /**
-                @brief Constructor: Initializes the Timer with given values.
-                @param interval The timer-interval in seconds
-                @param bLoop If true, the function gets called every 'interval' seconds
-                @param exeuctor A executor of the function to call
-            */
-            StaticTimer(float interval, bool bLoop, ExecutorStatic* executor, bool bKillAfterCall = false)
-            {
-                this->setTimer(interval, bLoop, executor, bKillAfterCall);
-            }
-
-            /**
-                @brief Initializes the Timer with given values.
-                @param interval The timer-interval in seconds
-                @param bLoop If true, the function gets called every 'interval' seconds
-                @param object The object owning the timer and the function
-                @param executor A executor of the function to call
-            */
-            void setTimer(float interval, bool bLoop, ExecutorStatic* executor, bool bKillAfterCall = false)
-            {
-                this->deleteExecutor();
-
-                this->setInterval(interval);
-                this->bLoop_ = bLoop;
-                this->executor_ = executor;
-                this->bActive_ = true;
-
-                this->time_ = this->interval_;
-                this->bKillAfterCall_ = bKillAfterCall;
-            }
-    };
-
 }
 
Index: code/branches/core5/src/libraries/tools/ToolsPrereqs.h
===================================================================
--- code/branches/core5/src/libraries/tools/ToolsPrereqs.h	(revision 5830)
+++ code/branches/core5/src/libraries/tools/ToolsPrereqs.h	(revision 5831)
@@ -77,7 +77,5 @@
     class ParticleInterface;
     class Shader;
-    template <class T>
     class Timer;
-    class StaticTimer;
 }
 
Index: code/branches/core5/src/modules/gamestates/GSRoot.cc
===================================================================
--- code/branches/core5/src/modules/gamestates/GSRoot.cc	(revision 5830)
+++ code/branches/core5/src/modules/gamestates/GSRoot.cc	(revision 5831)
@@ -103,5 +103,5 @@
         }
 
-        for (ObjectList<TimerBase>::iterator it = ObjectList<TimerBase>::begin(); it; )
+        for (ObjectList<Timer>::iterator it = ObjectList<Timer>::begin(); it; )
             (it++)->tick(time);
 
Index: code/branches/core5/src/modules/overlays/FadeoutText.cc
===================================================================
--- code/branches/core5/src/modules/overlays/FadeoutText.cc	(revision 5830)
+++ code/branches/core5/src/modules/overlays/FadeoutText.cc	(revision 5831)
@@ -46,5 +46,5 @@
 
         this->bFadingOut_ = false;
-        this->fadeouttimer_.setTimer(3.0f, false, this, createExecutor(createFunctor(&FadeoutText::fadeout)));
+        this->fadeouttimer_.setTimer(3.0f, false, createExecutor(createFunctor(&FadeoutText::fadeout, this)));
         this->fadeouttimer_.stopTimer();
 
Index: code/branches/core5/src/modules/overlays/FadeoutText.h
===================================================================
--- code/branches/core5/src/modules/overlays/FadeoutText.h	(revision 5830)
+++ code/branches/core5/src/modules/overlays/FadeoutText.h	(revision 5831)
@@ -68,5 +68,5 @@
 
             bool bFadingOut_;
-            Timer<FadeoutText> fadeouttimer_;
+            Timer fadeouttimer_;
 
             float initialAlpha_;
Index: code/branches/core5/src/modules/overlays/hud/ChatOverlay.cc
===================================================================
--- code/branches/core5/src/modules/overlays/hud/ChatOverlay.cc	(revision 5830)
+++ code/branches/core5/src/modules/overlays/hud/ChatOverlay.cc	(revision 5831)
@@ -87,5 +87,5 @@
         COUT(0) << "Chat: " << text << std::endl;
 
-        new Timer<ChatOverlay>(this->displayTime_, false, this, createExecutor(createFunctor(&ChatOverlay::dropMessage)), true);
+        new Timer(this->displayTime_, false, createExecutor(createFunctor(&ChatOverlay::dropMessage, this)), true);
 
         this->updateOverlayText();
Index: code/branches/core5/src/modules/overlays/hud/UnderAttackHealthBar.cc
===================================================================
--- code/branches/core5/src/modules/overlays/hud/UnderAttackHealthBar.cc	(revision 5830)
+++ code/branches/core5/src/modules/overlays/hud/UnderAttackHealthBar.cc	(revision 5831)
@@ -52,5 +52,5 @@
         this->text_->setPickPoint(Vector2(0.5, 0));
 
-        this->inittimer_.setTimer(0.0f, false, this, createExecutor(createFunctor(&UnderAttackHealthBar::init)));
+        this->inittimer_.setTimer(0.0f, false, createExecutor(createFunctor(&UnderAttackHealthBar::init, this)));
     }
 
Index: code/branches/core5/src/modules/overlays/hud/UnderAttackHealthBar.h
===================================================================
--- code/branches/core5/src/modules/overlays/hud/UnderAttackHealthBar.h	(revision 5830)
+++ code/branches/core5/src/modules/overlays/hud/UnderAttackHealthBar.h	(revision 5831)
@@ -62,5 +62,5 @@
             PlayerInfo* owner_;
             OverlayText* text_;
-            Timer<UnderAttackHealthBar> inittimer_;
+            Timer inittimer_;
     };
 }
Index: code/branches/core5/src/modules/pong/Pong.cc
===================================================================
--- code/branches/core5/src/modules/pong/Pong.cc	(revision 5830)
+++ code/branches/core5/src/modules/pong/Pong.cc	(revision 5831)
@@ -52,5 +52,5 @@
         this->setHUDTemplate("PongHUD");
 
-        this->starttimer_.setTimer(1.0, false, this, createExecutor(createFunctor(&Pong::startBall)));
+        this->starttimer_.setTimer(1.0, false, createExecutor(createFunctor(&Pong::startBall, this)));
         this->starttimer_.stopTimer();
 
Index: code/branches/core5/src/modules/pong/Pong.h
===================================================================
--- code/branches/core5/src/modules/pong/Pong.h	(revision 5830)
+++ code/branches/core5/src/modules/pong/Pong.h	(revision 5831)
@@ -62,5 +62,5 @@
             PongBall* ball_;
             PongBat* bat_[2];
-            Timer<Pong> starttimer_;
+            Timer starttimer_;
     };
 }
Index: code/branches/core5/src/modules/pong/PongAI.cc
===================================================================
--- code/branches/core5/src/modules/pong/PongAI.cc	(revision 5830)
+++ code/branches/core5/src/modules/pong/PongAI.cc	(revision 5831)
@@ -60,5 +60,5 @@
     PongAI::~PongAI()
     {
-        for (std::list<std::pair<Timer<PongAI>*, char> >::iterator it = this->reactionTimers_.begin(); it != this->reactionTimers_.end(); ++it)
+        for (std::list<std::pair<Timer*, char> >::iterator it = this->reactionTimers_.begin(); it != this->reactionTimers_.end(); ++it)
             (*it).first->destroy();
     }
@@ -231,6 +231,6 @@
 
             // Add a new Timer
-            Timer<PongAI>* timer = new Timer<PongAI>(delay, false, this, createExecutor(createFunctor(&PongAI::delayedMove)));
-            this->reactionTimers_.push_back(std::pair<Timer<PongAI>*, char>(timer, direction));
+            Timer* timer = new Timer(delay, false, createExecutor(createFunctor(&PongAI::delayedMove, this)));
+            this->reactionTimers_.push_back(std::pair<Timer*, char>(timer, direction));
         }
         else
@@ -246,5 +246,5 @@
 
         // Destroy the timer and remove it from the list
-        Timer<PongAI>* timer = this->reactionTimers_.front().first;
+        Timer* timer = this->reactionTimers_.front().first;
         timer->destroy();
 
Index: code/branches/core5/src/modules/pong/PongAI.h
===================================================================
--- code/branches/core5/src/modules/pong/PongAI.h	(revision 5830)
+++ code/branches/core5/src/modules/pong/PongAI.h	(revision 5831)
@@ -65,5 +65,5 @@
             float strength_;
 
-            std::list<std::pair<Timer<PongAI>*, char> > reactionTimers_;
+            std::list<std::pair<Timer*, char> > reactionTimers_;
             char movement_;
             char oldMove_;
Index: code/branches/core5/src/modules/weapons/MuzzleFlash.cc
===================================================================
--- code/branches/core5/src/modules/weapons/MuzzleFlash.cc	(revision 5830)
+++ code/branches/core5/src/modules/weapons/MuzzleFlash.cc	(revision 5831)
@@ -42,5 +42,5 @@
         this->setScale(0.1f);
 
-        this->delayTimer_.setTimer(0.1f, false, this, createExecutor(createFunctor(&MuzzleFlash::destroy)));
+        this->delayTimer_.setTimer(0.1f, false, createExecutor(createFunctor(&MuzzleFlash::destroy, this)));
     }
 }
Index: code/branches/core5/src/modules/weapons/MuzzleFlash.h
===================================================================
--- code/branches/core5/src/modules/weapons/MuzzleFlash.h	(revision 5830)
+++ code/branches/core5/src/modules/weapons/MuzzleFlash.h	(revision 5831)
@@ -44,5 +44,5 @@
 
         private:
-            Timer<MuzzleFlash> delayTimer_;
+            Timer delayTimer_;
     };
 }
Index: code/branches/core5/src/modules/weapons/munitions/ReplenishingMunition.cc
===================================================================
--- code/branches/core5/src/modules/weapons/munitions/ReplenishingMunition.cc	(revision 5830)
+++ code/branches/core5/src/modules/weapons/munitions/ReplenishingMunition.cc	(revision 5831)
@@ -44,5 +44,5 @@
         // replenishIntervall_ and replenishMunitionAmount_ will be set in the constructor of the
         // inheriting class, which comes after this constructor)
-        this->replenishingTimer_.setTimer(0.0f, false, this, createExecutor(createFunctor(&ReplenishingMunition::initializeTimer)));
+        this->replenishingTimer_.setTimer(0.0f, false, createExecutor(createFunctor(&ReplenishingMunition::initializeTimer, this)));
     }
 
@@ -50,5 +50,5 @@
     {
         // Initialize the timer
-        this->replenishingTimer_.setTimer(this->replenishIntervall_, true, this, createExecutor(createFunctor(&ReplenishingMunition::replenish)));
+        this->replenishingTimer_.setTimer(this->replenishIntervall_, true, createExecutor(createFunctor(&ReplenishingMunition::replenish, this)));
     }
 
Index: code/branches/core5/src/modules/weapons/munitions/ReplenishingMunition.h
===================================================================
--- code/branches/core5/src/modules/weapons/munitions/ReplenishingMunition.h	(revision 5830)
+++ code/branches/core5/src/modules/weapons/munitions/ReplenishingMunition.h	(revision 5831)
@@ -51,5 +51,5 @@
             void initializeTimer();
 
-            Timer<ReplenishingMunition> replenishingTimer_;
+            Timer replenishingTimer_;
     };
 }
Index: code/branches/core5/src/modules/weapons/projectiles/LightningGunProjectile.cc
===================================================================
--- code/branches/core5/src/modules/weapons/projectiles/LightningGunProjectile.cc	(revision 5830)
+++ code/branches/core5/src/modules/weapons/projectiles/LightningGunProjectile.cc	(revision 5831)
@@ -42,5 +42,5 @@
         this->textureIndex_ = 1;
         this->maxTextureIndex_ = 8;
-        this->textureTimer_.setTimer(0.01f, true, this, createExecutor(createFunctor(&LightningGunProjectile::changeTexture)));
+        this->textureTimer_.setTimer(0.01f, true, createExecutor(createFunctor(&LightningGunProjectile::changeTexture, this)));
         
         registerVariables();
Index: code/branches/core5/src/modules/weapons/projectiles/LightningGunProjectile.h
===================================================================
--- code/branches/core5/src/modules/weapons/projectiles/LightningGunProjectile.h	(revision 5830)
+++ code/branches/core5/src/modules/weapons/projectiles/LightningGunProjectile.h	(revision 5831)
@@ -50,5 +50,5 @@
             unsigned int textureIndex_;
             unsigned int maxTextureIndex_;
-            Timer<LightningGunProjectile> textureTimer_;
+            Timer textureTimer_;
             std::string materialBase_;
       private:
Index: code/branches/core5/src/modules/weapons/projectiles/Projectile.cc
===================================================================
--- code/branches/core5/src/modules/weapons/projectiles/Projectile.cc	(revision 5830)
+++ code/branches/core5/src/modules/weapons/projectiles/Projectile.cc	(revision 5831)
@@ -61,5 +61,5 @@
             this->attachCollisionShape(shape);
 
-            this->destroyTimer_.setTimer(this->lifetime_, false, this, createExecutor(createFunctor(&Projectile::destroyObject)));
+            this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&Projectile::destroyObject, this)));
         }
     }
Index: code/branches/core5/src/modules/weapons/projectiles/Projectile.h
===================================================================
--- code/branches/core5/src/modules/weapons/projectiles/Projectile.h	(revision 5830)
+++ code/branches/core5/src/modules/weapons/projectiles/Projectile.h	(revision 5831)
@@ -66,5 +66,5 @@
             float damage_;
             bool bDestroy_;
-            Timer<Projectile> destroyTimer_;
+            Timer destroyTimer_;
     };
 }
Index: code/branches/core5/src/modules/weapons/weaponmodes/EnergyDrink.cc
===================================================================
--- code/branches/core5/src/modules/weapons/weaponmodes/EnergyDrink.cc	(revision 5830)
+++ code/branches/core5/src/modules/weapons/weaponmodes/EnergyDrink.cc	(revision 5831)
@@ -54,5 +54,5 @@
         this->setMunitionName("FusionMunition");
 
-        this->delayTimer_.setTimer(1.0f, false, this, createExecutor(createFunctor(&EnergyDrink::shot)));
+        this->delayTimer_.setTimer(1.0f, false, createExecutor(createFunctor(&EnergyDrink::shot, this)));
         this->delayTimer_.stopTimer();
     }
Index: code/branches/core5/src/modules/weapons/weaponmodes/EnergyDrink.h
===================================================================
--- code/branches/core5/src/modules/weapons/weaponmodes/EnergyDrink.h	(revision 5830)
+++ code/branches/core5/src/modules/weapons/weaponmodes/EnergyDrink.h	(revision 5831)
@@ -59,5 +59,5 @@
             float speed_;
             float delay_;
-            Timer<EnergyDrink> delayTimer_;
+            Timer delayTimer_;
     };
 }
Index: code/branches/core5/src/modules/weapons/weaponmodes/HsW01.cc
===================================================================
--- code/branches/core5/src/modules/weapons/weaponmodes/HsW01.cc	(revision 5830)
+++ code/branches/core5/src/modules/weapons/weaponmodes/HsW01.cc	(revision 5831)
@@ -54,5 +54,5 @@
         this->setMunitionName("LaserMunition");
 
-        this->delayTimer_.setTimer(1.0f, false, this, createExecutor(createFunctor(&HsW01::shot)));
+        this->delayTimer_.setTimer(1.0f, false, createExecutor(createFunctor(&HsW01::shot, this)));
         this->delayTimer_.stopTimer();
     }
Index: code/branches/core5/src/modules/weapons/weaponmodes/HsW01.h
===================================================================
--- code/branches/core5/src/modules/weapons/weaponmodes/HsW01.h	(revision 5830)
+++ code/branches/core5/src/modules/weapons/weaponmodes/HsW01.h	(revision 5831)
@@ -57,5 +57,5 @@
             float speed_;
             float delay_;
-            Timer<HsW01> delayTimer_;
+            Timer delayTimer_;
     };
 }
Index: code/branches/core5/src/orxonox/controllers/AIController.cc
===================================================================
--- code/branches/core5/src/orxonox/controllers/AIController.cc	(revision 5830)
+++ code/branches/core5/src/orxonox/controllers/AIController.cc	(revision 5831)
@@ -44,5 +44,5 @@
         RegisterObject(AIController);
 
-        this->actionTimer_.setTimer(ACTION_INTERVAL, true, this, createExecutor(createFunctor(&AIController::action)));
+        this->actionTimer_.setTimer(ACTION_INTERVAL, true, createExecutor(createFunctor(&AIController::action, this)));
     }
 
Index: code/branches/core5/src/orxonox/controllers/AIController.h
===================================================================
--- code/branches/core5/src/orxonox/controllers/AIController.h	(revision 5830)
+++ code/branches/core5/src/orxonox/controllers/AIController.h	(revision 5831)
@@ -50,5 +50,5 @@
 
         private:
-            Timer<AIController> actionTimer_;
+            Timer actionTimer_;
     };
 }
Index: code/branches/core5/src/orxonox/controllers/WaypointPatrolController.cc
===================================================================
--- code/branches/core5/src/orxonox/controllers/WaypointPatrolController.cc	(revision 5830)
+++ code/branches/core5/src/orxonox/controllers/WaypointPatrolController.cc	(revision 5831)
@@ -45,5 +45,5 @@
         this->alertnessradius_ = 500;
 
-        this->patrolTimer_.setTimer(rnd(), true, this, createExecutor(createFunctor(&WaypointPatrolController::searchEnemy)));
+        this->patrolTimer_.setTimer(rnd(), true, createExecutor(createFunctor(&WaypointPatrolController::searchEnemy, this)));
     }
 
Index: code/branches/core5/src/orxonox/controllers/WaypointPatrolController.h
===================================================================
--- code/branches/core5/src/orxonox/controllers/WaypointPatrolController.h	(revision 5830)
+++ code/branches/core5/src/orxonox/controllers/WaypointPatrolController.h	(revision 5831)
@@ -61,5 +61,5 @@
             int team_;
             float alertnessradius_;
-            Timer<WaypointPatrolController> patrolTimer_;
+            Timer patrolTimer_;
     };
 }
Index: code/branches/core5/src/orxonox/gametypes/TeamBaseMatch.cc
===================================================================
--- code/branches/core5/src/orxonox/gametypes/TeamBaseMatch.cc	(revision 5830)
+++ code/branches/core5/src/orxonox/gametypes/TeamBaseMatch.cc	(revision 5831)
@@ -42,6 +42,6 @@
         RegisterObject(TeamBaseMatch);
 
-        this->scoreTimer_.setTimer(10, true, this, createExecutor(createFunctor(&TeamBaseMatch::winPoints)));
-        this->outputTimer_.setTimer(10, true, this, createExecutor(createFunctor(&TeamBaseMatch::showPoints)));
+        this->scoreTimer_.setTimer(10, true, createExecutor(createFunctor(&TeamBaseMatch::winPoints, this)));
+        this->outputTimer_.setTimer(10, true, createExecutor(createFunctor(&TeamBaseMatch::showPoints, this)));
 
         this->pointsTeam1_ = 0;
Index: code/branches/core5/src/orxonox/gametypes/TeamBaseMatch.h
===================================================================
--- code/branches/core5/src/orxonox/gametypes/TeamBaseMatch.h	(revision 5830)
+++ code/branches/core5/src/orxonox/gametypes/TeamBaseMatch.h	(revision 5831)
@@ -65,6 +65,6 @@
 
             std::set<TeamBaseMatchBase*> bases_;
-            Timer<TeamBaseMatch> scoreTimer_;
-            Timer<TeamBaseMatch> outputTimer_;
+            Timer scoreTimer_;
+            Timer outputTimer_;
 
             //points for each team
Index: code/branches/core5/src/orxonox/graphics/FadingBillboard.cc
===================================================================
--- code/branches/core5/src/orxonox/graphics/FadingBillboard.cc	(revision 5830)
+++ code/branches/core5/src/orxonox/graphics/FadingBillboard.cc	(revision 5831)
@@ -103,5 +103,5 @@
         {
             this->changedirection_ = 1;
-            this->turnonofftimer_.setTimer(this->turnontime_, false, this, createExecutor(createFunctor(&FadingBillboard::stopturnonoff)));
+            this->turnonofftimer_.setTimer(this->turnontime_, false, createExecutor(createFunctor(&FadingBillboard::stopturnonoff, this)));
 
             if (this->isVisible())
@@ -111,5 +111,5 @@
         {
             this->changedirection_ = -1;
-            this->turnonofftimer_.setTimer(this->turnofftime_, false, this, createExecutor(createFunctor(&FadingBillboard::stopturnonoff)));
+            this->turnonofftimer_.setTimer(this->turnofftime_, false, createExecutor(createFunctor(&FadingBillboard::stopturnonoff, this)));
         }
     }
@@ -126,5 +126,5 @@
             this->fadedColour_ = ColourValue::ZERO;
             this->getBillboardSet().setColour(this->fadedColour_);
-            this->turnonofftimer_.setTimer(this->postprocessingtime_, false, this, createExecutor(createFunctor(&FadingBillboard::poststopturnonoff)));
+            this->turnonofftimer_.setTimer(this->postprocessingtime_, false, createExecutor(createFunctor(&FadingBillboard::poststopturnonoff, this)));
         }
         this->changedirection_ = 0;
Index: code/branches/core5/src/orxonox/graphics/FadingBillboard.h
===================================================================
--- code/branches/core5/src/orxonox/graphics/FadingBillboard.h	(revision 5830)
+++ code/branches/core5/src/orxonox/graphics/FadingBillboard.h	(revision 5831)
@@ -74,5 +74,5 @@
             float turnofftime_;
             float postprocessingtime_;
-            Timer<FadingBillboard> turnonofftimer_;
+            Timer turnonofftimer_;
             char changedirection_;
             ColourValue fadedColour_;
Index: code/branches/core5/src/orxonox/graphics/ParticleSpawner.cc
===================================================================
--- code/branches/core5/src/orxonox/graphics/ParticleSpawner.cc	(revision 5830)
+++ code/branches/core5/src/orxonox/graphics/ParticleSpawner.cc	(revision 5831)
@@ -96,5 +96,5 @@
             return;
 
-        this->timer_.setTimer(this->startdelay_, false, this, createExecutor(createFunctor(&ParticleSpawner::fireParticleSpawner)));
+        this->timer_.setTimer(this->startdelay_, false, createExecutor(createFunctor(&ParticleSpawner::fireParticleSpawner, this)));
     }
 
@@ -103,5 +103,5 @@
         this->setActive(true);
         if (this->lifetime_ != 0)
-            this->timer_.setTimer(this->lifetime_, false, this, createExecutor(createFunctor(&ParticleSpawner::stopParticleSpawner)));
+            this->timer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&ParticleSpawner::stopParticleSpawner, this)));
     }
 
@@ -116,9 +116,9 @@
 
             if (!this->timer_.isActive() || this->timer_.getRemainingTime() > this->destroydelay_)
-                this->timer_.setTimer(this->destroydelay_, false, this, createExecutor(createFunctor(&ParticleSpawner::destroyParticleSpawner)));
+                this->timer_.setTimer(this->destroydelay_, false, createExecutor(createFunctor(&ParticleSpawner::destroyParticleSpawner, this)));
         }
         else if (this->bLoop_)
         {
-            this->timer_.setTimer(this->destroydelay_, false, this, createExecutor(createFunctor(&ParticleSpawner::startParticleSpawner)));
+            this->timer_.setTimer(this->destroydelay_, false, createExecutor(createFunctor(&ParticleSpawner::startParticleSpawner, this)));
         }
     }
Index: code/branches/core5/src/orxonox/graphics/ParticleSpawner.h
===================================================================
--- code/branches/core5/src/orxonox/graphics/ParticleSpawner.h	(revision 5830)
+++ code/branches/core5/src/orxonox/graphics/ParticleSpawner.h	(revision 5831)
@@ -89,5 +89,5 @@
             void destroyParticleSpawner();
 
-            Timer<ParticleSpawner> timer_;
+            Timer timer_;
 
             bool  bSuppressStart_;
Index: code/branches/core5/src/orxonox/pickup/DroppedItem.cc
===================================================================
--- code/branches/core5/src/orxonox/pickup/DroppedItem.cc	(revision 5830)
+++ code/branches/core5/src/orxonox/pickup/DroppedItem.cc	(revision 5831)
@@ -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);
         }
     }
Index: code/branches/core5/src/orxonox/pickup/DroppedItem.h
===================================================================
--- code/branches/core5/src/orxonox/pickup/DroppedItem.h	(revision 5830)
+++ code/branches/core5/src/orxonox/pickup/DroppedItem.h	(revision 5831)
@@ -77,5 +77,5 @@
         BaseItem* item_;
 
-        Timer<DroppedItem> timer_;
+        Timer timer_;
     };
 }
Index: code/branches/core5/src/orxonox/pickup/ModifierPickup.cc
===================================================================
--- code/branches/core5/src/orxonox/pickup/ModifierPickup.cc	(revision 5830)
+++ code/branches/core5/src/orxonox/pickup/ModifierPickup.cc	(revision 5831)
@@ -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);
             }
 
Index: code/branches/core5/src/orxonox/pickup/ModifierPickup.h
===================================================================
--- code/branches/core5/src/orxonox/pickup/ModifierPickup.h	(revision 5830)
+++ code/branches/core5/src/orxonox/pickup/ModifierPickup.h	(revision 5831)
@@ -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/branches/core5/src/orxonox/pickup/PickupSpawner.cc
===================================================================
--- code/branches/core5/src/orxonox/pickup/PickupSpawner.cc	(revision 5830)
+++ code/branches/core5/src/orxonox/pickup/PickupSpawner.cc	(revision 5831)
@@ -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);
Index: code/branches/core5/src/orxonox/pickup/PickupSpawner.h
===================================================================
--- code/branches/core5/src/orxonox/pickup/PickupSpawner.h	(revision 5830)
+++ code/branches/core5/src/orxonox/pickup/PickupSpawner.h	(revision 5831)
@@ -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/branches/core5/src/orxonox/weaponsystem/Munition.cc
===================================================================
--- code/branches/core5/src/orxonox/weaponsystem/Munition.cc	(revision 5830)
+++ code/branches/core5/src/orxonox/weaponsystem/Munition.cc	(revision 5831)
@@ -461,8 +461,8 @@
         if (bUseReloadTime && (munition->reloadTime_ > 0 || munition->bStackMunition_))
         {
-            ExecutorMember<Magazine>* executor = createExecutor(createFunctor(&Magazine::loaded));
+            Executor* executor = createExecutor(createFunctor(&Magazine::loaded, this));
             executor->setDefaultValues(munition);
 
-            this->loadTimer_.setTimer(munition->reloadTime_, false, this, executor);
+            this->loadTimer_.setTimer(munition->reloadTime_, false, executor);
         }
         else
Index: code/branches/core5/src/orxonox/weaponsystem/Munition.h
===================================================================
--- code/branches/core5/src/orxonox/weaponsystem/Munition.h	(revision 5830)
+++ code/branches/core5/src/orxonox/weaponsystem/Munition.h	(revision 5831)
@@ -47,5 +47,5 @@
 
                 unsigned int munition_;
-                Timer<Magazine> loadTimer_;
+                Timer loadTimer_;
                 bool bLoaded_;
 
Index: code/branches/core5/src/orxonox/weaponsystem/Weapon.cc
===================================================================
--- code/branches/core5/src/orxonox/weaponsystem/Weapon.cc	(revision 5830)
+++ code/branches/core5/src/orxonox/weaponsystem/Weapon.cc	(revision 5831)
@@ -50,5 +50,5 @@
         this->reloadingWeaponmode_ = WeaponSystem::WEAPON_MODE_UNASSIGNED;
 
-        this->reloadTimer_.setTimer(0.0f, false, this, createExecutor(createFunctor(&Weapon::reloaded)));
+        this->reloadTimer_.setTimer(0.0f, false, createExecutor(createFunctor(&Weapon::reloaded, this)));
         this->reloadTimer_.stopTimer();
     }
Index: code/branches/core5/src/orxonox/weaponsystem/Weapon.h
===================================================================
--- code/branches/core5/src/orxonox/weaponsystem/Weapon.h	(revision 5830)
+++ code/branches/core5/src/orxonox/weaponsystem/Weapon.h	(revision 5831)
@@ -71,5 +71,5 @@
             std::multimap<unsigned int, WeaponMode*> weaponmodes_;
 
-            Timer<Weapon> reloadTimer_;
+            Timer reloadTimer_;
             bool bReloading_;
             unsigned int reloadingWeaponmode_;
Index: code/branches/core5/src/orxonox/weaponsystem/WeaponMode.cc
===================================================================
--- code/branches/core5/src/orxonox/weaponsystem/WeaponMode.cc	(revision 5830)
+++ code/branches/core5/src/orxonox/weaponsystem/WeaponMode.cc	(revision 5831)
@@ -57,5 +57,5 @@
         this->bParallelReload_ = true;
 
-        this->reloadTimer_.setTimer(0.0f, false, this, createExecutor(createFunctor(&WeaponMode::reloaded)));
+        this->reloadTimer_.setTimer(0.0f, false, createExecutor(createFunctor(&WeaponMode::reloaded, this)));
         this->reloadTimer_.stopTimer();
 
Index: code/branches/core5/src/orxonox/weaponsystem/WeaponMode.h
===================================================================
--- code/branches/core5/src/orxonox/weaponsystem/WeaponMode.h	(revision 5830)
+++ code/branches/core5/src/orxonox/weaponsystem/WeaponMode.h	(revision 5831)
@@ -150,5 +150,5 @@
             std::string munitionname_;
 
-            Timer<WeaponMode> reloadTimer_;
+            Timer reloadTimer_;
             bool bReloading_;
     };
Index: code/branches/core5/src/orxonox/worldentities/BigExplosion.cc
===================================================================
--- code/branches/core5/src/orxonox/worldentities/BigExplosion.cc	(revision 5830)
+++ code/branches/core5/src/orxonox/worldentities/BigExplosion.cc	(revision 5831)
@@ -90,5 +90,5 @@
             this->setVelocity(velocity);
 
-            this->destroyTimer_.setTimer(rnd(2, 4), false, this, createExecutor(createFunctor(&BigExplosion::stop)));
+            this->destroyTimer_.setTimer(rnd(2, 4), false, createExecutor(createFunctor(&BigExplosion::stop, this)));
         }
         this->registerVariables();
@@ -329,5 +329,5 @@
         {
             this->bStop_ = true;
-            this->destroyTimer_.setTimer(1.0f, false, this, createExecutor(createFunctor(&BigExplosion::destroy)));
+            this->destroyTimer_.setTimer(1.0f, false, createExecutor(createFunctor(&BigExplosion::destroy, this)));
         }
     }
Index: code/branches/core5/src/orxonox/worldentities/BigExplosion.h
===================================================================
--- code/branches/core5/src/orxonox/worldentities/BigExplosion.h	(revision 5830)
+++ code/branches/core5/src/orxonox/worldentities/BigExplosion.h	(revision 5831)
@@ -98,5 +98,5 @@
 
             LODParticle::Value    LOD_;
-            Timer<BigExplosion>   destroyTimer_;
+            Timer                 destroyTimer_;
     };
 }
Index: code/branches/core5/src/orxonox/worldentities/ExplosionChunk.cc
===================================================================
--- code/branches/core5/src/orxonox/worldentities/ExplosionChunk.cc	(revision 5830)
+++ code/branches/core5/src/orxonox/worldentities/ExplosionChunk.cc	(revision 5831)
@@ -79,5 +79,5 @@
             this->setVelocity(velocity);
 
-            this->destroyTimer_.setTimer(rnd(1, 2), false, this, createExecutor(createFunctor(&ExplosionChunk::stop)));
+            this->destroyTimer_.setTimer(rnd(1, 2), false, createExecutor(createFunctor(&ExplosionChunk::stop, this)));
         }
 
@@ -132,5 +132,5 @@
         {
             this->bStop_ = true;
-            this->destroyTimer_.setTimer(1.0f, false, this, createExecutor(createFunctor(&ExplosionChunk::destroy)));
+            this->destroyTimer_.setTimer(1.0f, false, createExecutor(createFunctor(&ExplosionChunk::destroy, this)));
         }
     }
Index: code/branches/core5/src/orxonox/worldentities/ExplosionChunk.h
===================================================================
--- code/branches/core5/src/orxonox/worldentities/ExplosionChunk.h	(revision 5830)
+++ code/branches/core5/src/orxonox/worldentities/ExplosionChunk.h	(revision 5831)
@@ -60,5 +60,5 @@
             ParticleInterface*    smoke_;
             LODParticle::Value    LOD_;
-            Timer<ExplosionChunk> destroyTimer_;
+            Timer                 destroyTimer_;
     };
 }
Index: code/branches/core5/src/orxonox/worldentities/MovableEntity.cc
===================================================================
--- code/branches/core5/src/orxonox/worldentities/MovableEntity.cc	(revision 5830)
+++ code/branches/core5/src/orxonox/worldentities/MovableEntity.cc	(revision 5831)
@@ -98,5 +98,5 @@
     void MovableEntity::clientConnected(unsigned int clientID)
     {
-        this->resynchronizeTimer_.setTimer(rnd() * MAX_RESYNCHRONIZE_TIME, false, this, createExecutor(createFunctor(&MovableEntity::resynchronize)));
+        this->resynchronizeTimer_.setTimer(rnd() * MAX_RESYNCHRONIZE_TIME, false, createExecutor(createFunctor(&MovableEntity::resynchronize, this)));
     }
 
@@ -110,6 +110,6 @@
         {
             // Resynchronise every few seconds because we only work with velocities (no positions)
-            continuousResynchroTimer_ = new Timer<MovableEntity>(CONTINUOUS_SYNCHRONIZATION_TIME + rnd(-1, 1),
-                true, this, createExecutor(createFunctor(&MovableEntity::resynchronize)), false);
+            continuousResynchroTimer_ = new Timer(CONTINUOUS_SYNCHRONIZATION_TIME + rnd(-1, 1),
+                true, createExecutor(createFunctor(&MovableEntity::resynchronize, this)), false);
         }
 
Index: code/branches/core5/src/orxonox/worldentities/MovableEntity.h
===================================================================
--- code/branches/core5/src/orxonox/worldentities/MovableEntity.h	(revision 5830)
+++ code/branches/core5/src/orxonox/worldentities/MovableEntity.h	(revision 5831)
@@ -96,6 +96,6 @@
             Quaternion overwrite_orientation_;
 
-            Timer<MovableEntity> resynchronizeTimer_;
-            Timer<MovableEntity>* continuousResynchroTimer_;
+            Timer resynchronizeTimer_;
+            Timer* continuousResynchroTimer_;
 
             Pawn* owner_;
