Index: code/branches/plehmannFS16/src/orxonox/controllers/NewScriptController.cc
===================================================================
--- code/branches/plehmannFS16/src/orxonox/controllers/NewScriptController.cc	(revision 11189)
+++ code/branches/plehmannFS16/src/orxonox/controllers/NewScriptController.cc	(revision 11190)
@@ -130,28 +130,37 @@
         }*/
 
-        if(this->taskList_.size() != 0)
-        {
-
-          orxout() << this->scTime_ << endl;
-
-          if(this->taskList_.front().getStartTime() < this->scTime_)
-          {
-             activeTasks_.push_back(this->taskList_.front());
-             this->taskList_.pop_front();
+        if(!this->taskList_.empty())
+        {
+           orxout() << scTime_ << endl;
+
+           orxout() << taskList_.size() << endl;
+
+
+          if(this->taskList_.front()->getStartTime() < this->scTime_)
+          {
+              activeTasks_.push_back(this->taskList_.front());
+              this->taskList_.pop_front();
           }
         }
         else
         {
-          //orxout() << "no tasks in taskList_" << endl;
-        }
-        
-        for (std::vector<Task>::iterator it = activeTasks_.begin(); it != activeTasks_.end(); it++)
-        {
-          if( !(it->update(dt)) )
-          {
-            activeTasks_.erase(it);
-            it--; // set back the iterator so we continue with the next element and not with the one after that
-          }
-        }
+          orxout() << "no tasks in taskList_" << endl;
+        }
+
+        std::vector<Task*>::iterator it = activeTasks_.begin();
+        while (it != activeTasks_.end() )
+        {
+          if( !((*it)->update(dt)) )
+          {
+            (*(*it)).destroyLater();
+            it = activeTasks_.erase(it);
+          }
+          else
+          {
+            it++;
+          }
+
+        }
+
 
 
@@ -159,56 +168,76 @@
     }
 
-
-    void NewScriptController::createAndAddTask(Task newTask)
-    {
-      //taskQueue_->push(newTask);
-    }
-
     void NewScriptController::debugOut(float startTime)
     {
-      DebugTask task = DebugTask(context_);
-      task.initialize(startTime);
+
+      DebugTask* task = new DebugTask(context_);
+
+      task->initialize(startTime);
+
+      bool inserted = false;
 
       if(taskList_.empty())
       {
         taskList_.push_front(task);
+        inserted = true;
       }
 
       else
       {
-        for (std::list<Task>::iterator it = taskList_.begin(); it != taskList_.end(); it++) // insert sorted by starttime
-        {
-          orxout() << taskList_.empty() << endl;
-
-          if(task.getStartTime() < it->getStartTime() )
+        for (std::list<Task*>::iterator it = taskList_.begin(); it != taskList_.end(); it++) // insert sorted by starttime
+        {
+          orxout() << "debugOutTask" << endl;
+
+          if(task->getStartTime() < (*it)->getStartTime() )
           {
             taskList_.insert(it, task);
-          }
-        }
-      }
+            inserted = true;
+            break;
+          }
+        }
+      }
+
+      if (!inserted)
+      {
+        taskList_.push_back(task);
+      }
+      
     }
 
     void NewScriptController::stringOut(float startTime, std::string output)
     {
-      stringOutTask task = stringOutTask(context_);
-      task.initialize(startTime, output);
+
+      stringOutTask* task = new stringOutTask(context_);
+
+      task->initialize(startTime, output);
+
+      bool inserted = false;
 
       if(taskList_.empty())
       {
         taskList_.push_front(task);
+        inserted = true;
       }
 
       else
       {
-        for (std::list<Task>::iterator it = taskList_.begin(); it != taskList_.end(); it++) // insert sorted by starttime
-        {
-          orxout() << taskList_.empty() << endl;
-
-          if(task.getStartTime() < it->getStartTime() )
+        for (std::list<Task*>::iterator it = taskList_.begin(); it != taskList_.end(); it++) // insert sorted by starttime
+        {
+          orxout() << "stringOutTask" << endl;
+
+          if(task->getStartTime() < (*it)->getStartTime() )
           {
             taskList_.insert(it, task);
-          }
-        }
-      }
+            inserted = true;
+            break;
+          }
+        }
+      }
+
+      if (!inserted)
+      {
+        taskList_.push_back(task);
+      }
+
     }
 
Index: code/branches/plehmannFS16/src/orxonox/controllers/NewScriptController.h
===================================================================
--- code/branches/plehmannFS16/src/orxonox/controllers/NewScriptController.h	(revision 11189)
+++ code/branches/plehmannFS16/src/orxonox/controllers/NewScriptController.h	(revision 11190)
@@ -68,7 +68,4 @@
             void printDebug() {orxout() << "fffff" << endl;} // tolua_export
 
-
-            void createAndAddTask(Task newTask);
-
         private:
             // Information about the player that this ScriptController will
@@ -85,9 +82,8 @@
 
             // List of events to walk through sorted by starting times
-            std::list<Task> taskList_;
-
+            std::list<Task*> taskList_;
 
             //List of Tasks currently active 
-            std::vector<Task> activeTasks_;
+            std::vector<Task*> activeTasks_;
 
             // Time since the creation of this ScriptController object
Index: code/branches/plehmannFS16/src/orxonox/controllers/scriptTasks/MoveToTask.cc
===================================================================
--- code/branches/plehmannFS16/src/orxonox/controllers/scriptTasks/MoveToTask.cc	(revision 11189)
+++ code/branches/plehmannFS16/src/orxonox/controllers/scriptTasks/MoveToTask.cc	(revision 11190)
@@ -49,4 +49,5 @@
         this->entity_ = this->player_->getControllableEntity();
         this->destination_ = destination;
+        this->velocity_ = velocity;
         this->entity->setVelocity( Vector3(0,0,0) )
     }
@@ -55,5 +56,7 @@
     {
 
+        float dl = this->velocity_ * dt;
 
+        
         /* Set the position to the correct place in the trajectory */
         this->entity_->setPosition( (1-dl)*startpos + dl * this->currentEvent.v1);
Index: code/branches/plehmannFS16/src/orxonox/controllers/scriptTasks/MoveToTask.h
===================================================================
--- code/branches/plehmannFS16/src/orxonox/controllers/scriptTasks/MoveToTask.h	(revision 11189)
+++ code/branches/plehmannFS16/src/orxonox/controllers/scriptTasks/MoveToTask.h	(revision 11190)
@@ -62,4 +62,6 @@
             vector3 destination_;
 
+            float velocity_;
+
     };
 }
Index: code/branches/plehmannFS16/src/orxonox/controllers/scriptTasks/Task.cc
===================================================================
--- code/branches/plehmannFS16/src/orxonox/controllers/scriptTasks/Task.cc	(revision 11189)
+++ code/branches/plehmannFS16/src/orxonox/controllers/scriptTasks/Task.cc	(revision 11190)
@@ -38,5 +38,5 @@
     RegisterClass(Task);
 
-    Task::Task(Context* context)
+    Task::Task(Context* context) : BaseObject(context)
     {
         RegisterObject(Task);
@@ -49,8 +49,3 @@
     }
 
-    bool Task::update(float dt)
-    {
-        SUPER(Task, tick, dt);
-    }
-
 }
Index: code/branches/plehmannFS16/src/orxonox/controllers/scriptTasks/Task.h
===================================================================
--- code/branches/plehmannFS16/src/orxonox/controllers/scriptTasks/Task.h	(revision 11189)
+++ code/branches/plehmannFS16/src/orxonox/controllers/scriptTasks/Task.h	(revision 11190)
@@ -32,9 +32,10 @@
 #include "infos/PlayerInfo.h"
 #include "tools/interfaces/Tickable.h"
-#include "core/class/OrxonoxClass.h"
+//#include "core/class/OrxonoxClass.h"
+#include "core/BaseObject.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport Task : public OrxonoxClass {
+    class _OrxonoxExport Task : public BaseObject {
    
         public:
@@ -46,5 +47,5 @@
 
             //important return true while the task is running and false to stop it!!!
-            virtual bool update(float dt); 
+            virtual bool update(float dt) {return false;} 
 
             float getStartTime()
