Index: code/branches/campaignHS15/src/orxonox/controllers/CommonController.cc
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/CommonController.cc	(revision 10859)
+++ code/branches/campaignHS15/src/orxonox/controllers/CommonController.cc	(revision 10861)
@@ -74,8 +74,10 @@
         this->parsedActionpoints_.clear();
         RegisterObject( CommonController );
-
+        this->bTakenOver_ = false;
     }
     CommonController::~CommonController() 
     {
+        parsedActionpoints_.clear();
+        actionpoints_.clear();
     }
     void CommonController::tick(float dt)
@@ -97,4 +99,8 @@
             std::reverse(parsedActionpoints_.begin(), parsedActionpoints_.end());
             std::reverse(actionpoints_.begin(), actionpoints_.end());
+            if (this->parsedActionpoints_.empty())
+            {
+                this->action_ = Action::FIGHTALL;
+            }
         }
         if (this->bFirstTick_)
@@ -822,11 +828,23 @@
                     {
                         std::string protectName = this->loopActionpoints_.back().name;
-
-                        for (ObjectList<Pawn>::iterator itP = ObjectList<Pawn>::begin(); itP; ++itP)
-                        {
-                            if (CommonController::getName(*itP) == protectName)
+                        if (protectName == "reservedKeyword:human")
+                        {
+                            for (ObjectList<Pawn>::iterator itP = ObjectList<Pawn>::begin(); itP; ++itP)
                             {
-                                this->setProtect (static_cast<ControllableEntity*>(*itP));
+                                if (orxonox_cast<ControllableEntity*>(*itP) && ((*itP)->getController()) && orxonox_cast <NewHumanController*> ((*itP)->getController()))
+                                {
+                                    this->setProtect (static_cast<ControllableEntity*>(*itP));
+                                }
                             }
+                        }
+                        else
+                        {
+                            for (ObjectList<Pawn>::iterator itP = ObjectList<Pawn>::begin(); itP; ++itP)
+                            {
+                                if (CommonController::getName(*itP) == protectName)
+                                {
+                                    this->setProtect (static_cast<ControllableEntity*>(*itP));
+                                }
+                            }                            
                         }
                         if (!this->getProtect())
@@ -915,12 +933,25 @@
                     case Action::PROTECT:
                     {
+                        
                         std::string protectName = this->parsedActionpoints_.back().name;
-
-                        for (ObjectList<Pawn>::iterator itP = ObjectList<Pawn>::begin(); itP; ++itP)
-                        {
-                            if (CommonController::getName(*itP) == protectName)
+                        if (protectName == "reservedKeyword:human")
+                        {
+                            for (ObjectList<Pawn>::iterator itP = ObjectList<Pawn>::begin(); itP; ++itP)
                             {
-                                this->setProtect (static_cast<ControllableEntity*>(*itP));
+                                if (orxonox_cast<ControllableEntity*>(*itP) && ((*itP)->getController()) && orxonox_cast <NewHumanController*> ((*itP)->getController()))
+                                {
+                                    this->setProtect (static_cast<ControllableEntity*>(*itP));
+                                }
                             }
+                        }
+                        else
+                        {
+                            for (ObjectList<Pawn>::iterator itP = ObjectList<Pawn>::begin(); itP; ++itP)
+                            {
+                                if (CommonController::getName(*itP) == protectName)
+                                {
+                                    this->setProtect (static_cast<ControllableEntity*>(*itP));
+                                }
+                            }                            
                         }
                         if (!this->getProtect())
@@ -1028,10 +1059,16 @@
         if (!this || !this->getControllableEntity())
             return;
-        orxout (internal_error) << "Size of actions is " << this->parsedActionpoints_.size() << endl;
+        // orxout (internal_error) << "Size of actions is " << this->parsedActionpoints_.size() << endl;
         this->startAttackingEnemiesThatAreClose();
         //No action -> pop one from stack
-        if (this->action_ == Action::NONE)
-        {
+        if (this->action_ == Action::NONE || this->bTakenOver_)
+        {
+            if (this->parsedActionpoints_.empty() && this->loopActionpoints_.empty())
+            {
+                Point p = { Action::FIGHTALL, "", Vector3::ZERO, false };
+                this->parsedActionpoints_.push_back (p);
+            }
             this->executeActionpoint();
+            this->bTakenOver_ = false;
         }
         //Action fightall -> fight till nobody alive
@@ -1134,9 +1171,7 @@
       this->parsedActionpoints_ = vector;
       this->loopActionpoints_ = loop;
-      this->bLoop_ = b;
-      this->setAction (Action::NONE);
-      // this->setTarget(0);
-      // this->setTargetPosition (this->getControllableEntity()->getWorldPosition());
-      orxout(internal_error) << "Top action is " << this->parsedActionpoints_.back().action << endl;
+      this->bLoop_ = this->bLoop_;
+      this->bTakenOver_ = true;
+      // orxout(internal_error) << "Top action is " << this->parsedActionpoints_.back().action << endl;
     }
     void CommonController::boostControl()
Index: code/branches/campaignHS15/src/orxonox/controllers/CommonController.h
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/CommonController.h	(revision 10859)
+++ code/branches/campaignHS15/src/orxonox/controllers/CommonController.h	(revision 10861)
@@ -229,5 +229,6 @@
                 bool bInLoop_;
                 bool bLoop_;   
-                bool bEndLoop_;                
+                bool bEndLoop_;  
+                bool bTakenOver_;              
             //----[/"Private" variables]----    
            
Index: code/branches/campaignHS15/src/orxonox/controllers/DivisionController.cc
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/DivisionController.cc	(revision 10859)
+++ code/branches/campaignHS15/src/orxonox/controllers/DivisionController.cc	(revision 10861)
@@ -83,5 +83,5 @@
     {   
         if (!this->isActive())
-            return;
+            return;   
         SUPER(DivisionController, tick, dt);
     }
@@ -90,5 +90,19 @@
         if (!this || !this->getControllableEntity())
             return;
+        
         CommonController::action();
+        if (!this || !this->getControllableEntity())
+            return;
+        if (!(this->parsedActionpoints_.empty() && this->loopActionpoints_.empty()))
+        {
+            if (this->myFollower_)
+            {
+                this->myFollower_->takeActionpoints(this->parsedActionpoints_, this->loopActionpoints_, this->bLoop_);
+            }
+            else if (this->myWingman_)
+            {
+                this->myWingman_->takeActionpoints(this->parsedActionpoints_, this->loopActionpoints_, this->bLoop_);
+            }    
+        }
         
     }
Index: code/branches/campaignHS15/src/orxonox/controllers/SectionController.cc
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/SectionController.cc	(revision 10859)
+++ code/branches/campaignHS15/src/orxonox/controllers/SectionController.cc	(revision 10861)
@@ -98,5 +98,15 @@
         if (!myDivisionLeader_)
         {
+            
             CommonController::action();
+            if (!this || !this->getControllableEntity())
+                return;
+            if (!(this->parsedActionpoints_.empty() && this->loopActionpoints_.empty()))
+            {
+                if (this->myWingman_)
+                {
+                    this->myWingman_->takeActionpoints(this->parsedActionpoints_, this->loopActionpoints_, this->bLoop_);
+                }    
+            }
         }
         else if (myDivisionLeader_)
