Index: code/trunk/src/orxonox/objects/worldentities/ControllableEntity.cc
===================================================================
--- code/trunk/src/orxonox/objects/worldentities/ControllableEntity.cc	(revision 3034)
+++ code/trunk/src/orxonox/objects/worldentities/ControllableEntity.cc	(revision 3038)
@@ -91,5 +91,5 @@
 
             if (this->getPlayer() && this->getPlayer()->getControllableEntity() == this)
-                this->getPlayer()->stopControl(this, false);
+                this->getPlayer()->stopControl();
 
             if (this->hud_)
Index: code/trunk/src/orxonox/objects/worldentities/ControllableEntity.h
===================================================================
--- code/trunk/src/orxonox/objects/worldentities/ControllableEntity.h	(revision 3034)
+++ code/trunk/src/orxonox/objects/worldentities/ControllableEntity.h	(revision 3038)
@@ -39,4 +39,6 @@
     class _OrxonoxExport ControllableEntity : public MobileEntity
     {
+        friend class PlayerInfo; // PlayerInfo uses setPlayer and removePlayer
+
         public:
             ControllableEntity(BaseObject* creator);
@@ -50,6 +52,4 @@
             virtual void changedPlayer() {}
 
-            virtual void setPlayer(PlayerInfo* player);
-            virtual void removePlayer();
             inline PlayerInfo* getPlayer() const
                 { return this->player_; }
@@ -131,4 +131,7 @@
 
         protected:
+            virtual void setPlayer(PlayerInfo* player); // don't call this directly, use friend class PlayerInfo instead
+            virtual void removePlayer();                // don't call this directly, use friend class PlayerInfo instead
+
             virtual void startLocalHumanControl();
             virtual void stopLocalHumanControl();
Index: code/trunk/src/orxonox/objects/worldentities/pawns/Pawn.cc
===================================================================
--- code/trunk/src/orxonox/objects/worldentities/pawns/Pawn.cc	(revision 3034)
+++ code/trunk/src/orxonox/objects/worldentities/pawns/Pawn.cc	(revision 3038)
@@ -209,6 +209,6 @@
                 this->getGametype()->pawnKilled(this, this->lastHitOriginator_);
 
-            if (this->getPlayer())
-                this->getPlayer()->stopControl(this);
+            if (this->getPlayer() && this->getPlayer()->getControllableEntity() == this)
+                this->getPlayer()->stopControl();
 
             if (GameMode::isMaster())
Index: code/trunk/src/orxonox/objects/worldentities/pawns/Pawn.h
===================================================================
--- code/trunk/src/orxonox/objects/worldentities/pawns/Pawn.h	(revision 3034)
+++ code/trunk/src/orxonox/objects/worldentities/pawns/Pawn.h	(revision 3038)
@@ -47,7 +47,4 @@
             virtual void tick(float dt);
             void registerVariables();
-
-            virtual void setPlayer(PlayerInfo* player);
-            virtual void removePlayer();
 
             inline bool isAlive() const
@@ -113,4 +110,7 @@
 
         protected:
+            virtual void setPlayer(PlayerInfo* player);
+            virtual void removePlayer();
+
             virtual void death();
             virtual void deatheffect();
Index: code/trunk/src/orxonox/objects/worldentities/pawns/Spectator.h
===================================================================
--- code/trunk/src/orxonox/objects/worldentities/pawns/Spectator.h	(revision 3034)
+++ code/trunk/src/orxonox/objects/worldentities/pawns/Spectator.h	(revision 3038)
@@ -46,7 +46,4 @@
             virtual void tick(float dt);
 
-            virtual void setPlayer(PlayerInfo* player);
-            virtual void startLocalHumanControl();
-
             virtual void moveFrontBack(const Vector2& value);
             virtual void moveRightLeft(const Vector2& value);
@@ -59,4 +56,8 @@
             virtual void fire(WeaponMode::Enum fireMode);
             virtual void greet();
+
+        protected:
+            virtual void setPlayer(PlayerInfo* player);
+            virtual void startLocalHumanControl();
 
         private:
