Index: /code/branches/miniprojects/src/orxonox/objects/gametypes/Gametype.cc
===================================================================
--- /code/branches/miniprojects/src/orxonox/objects/gametypes/Gametype.cc	(revision 2817)
+++ /code/branches/miniprojects/src/orxonox/objects/gametypes/Gametype.cc	(revision 2818)
@@ -176,4 +176,12 @@
     }
 
+    void Gametype::playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn)
+    {
+    }
+
+    void Gametype::playerStopsControllingPawn(PlayerInfo* player, Pawn* pawn)
+    {
+    }
+
     bool Gametype::allowPawnHit(Pawn* victim, Pawn* originator)
     {
Index: /code/branches/miniprojects/src/orxonox/objects/gametypes/Gametype.h
===================================================================
--- /code/branches/miniprojects/src/orxonox/objects/gametypes/Gametype.h	(revision 2817)
+++ /code/branches/miniprojects/src/orxonox/objects/gametypes/Gametype.h	(revision 2818)
@@ -101,4 +101,7 @@
             virtual void playerPostSpawn(PlayerInfo* player);
 
+            virtual void playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn);
+            virtual void playerStopsControllingPawn(PlayerInfo* player, Pawn* pawn);
+
             inline const std::map<PlayerInfo*, Player>& getPlayers() const
                 { return this->players_; }
Index: /code/branches/miniprojects/src/orxonox/objects/gametypes/TeamGametype.cc
===================================================================
--- /code/branches/miniprojects/src/orxonox/objects/gametypes/TeamGametype.cc	(revision 2817)
+++ /code/branches/miniprojects/src/orxonox/objects/gametypes/TeamGametype.cc	(revision 2818)
@@ -34,5 +34,4 @@
 #include "objects/Teamcolourable.h"
 #include "objects/worldentities/TeamSpawnPoint.h"
-#include "objects/infos/PlayerInfo.h" // remove this
 
 namespace orxonox
@@ -151,5 +150,5 @@
     }
 
-    void TeamGametype::playerPostSpawn(PlayerInfo* player)
+    void TeamGametype::playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn)
     {
         if (!player)
@@ -160,7 +159,7 @@
         if (it_player != this->teamnumbers_.end() && it_player->second >= 0 && it_player->second < this->teamcolours_.size())
         {
-            if (player->getControllableEntity())
+            if (pawn)
             {
-                std::set<WorldEntity*> pawnAttachments = player->getControllableEntity()->getAttachedObjects();
+                std::set<WorldEntity*> pawnAttachments = pawn->getAttachedObjects();
                 for (std::set<WorldEntity*>::iterator it = pawnAttachments.begin(); it != pawnAttachments.end(); ++it)
                 {
Index: /code/branches/miniprojects/src/orxonox/objects/gametypes/TeamGametype.h
===================================================================
--- /code/branches/miniprojects/src/orxonox/objects/gametypes/TeamGametype.h	(revision 2817)
+++ /code/branches/miniprojects/src/orxonox/objects/gametypes/TeamGametype.h	(revision 2818)
@@ -53,5 +53,5 @@
             virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = 0);
 
-            virtual void playerPostSpawn(PlayerInfo* player);
+            virtual void playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn);
 
         protected:
Index: /code/branches/miniprojects/src/orxonox/objects/worldentities/pawns/Pawn.cc
===================================================================
--- /code/branches/miniprojects/src/orxonox/objects/worldentities/pawns/Pawn.cc	(revision 2817)
+++ /code/branches/miniprojects/src/orxonox/objects/worldentities/pawns/Pawn.cc	(revision 2818)
@@ -133,4 +133,20 @@
     }
 
+    void Pawn::setPlayer(PlayerInfo* player)
+    {
+        ControllableEntity::setPlayer(player);
+
+        if (this->getGametype())
+            this->getGametype()->playerStartsControllingPawn(player, this);
+    }
+
+    void Pawn::removePlayer()
+    {
+        if (this->getGametype())
+            this->getGametype()->playerStopsControllingPawn(this->getPlayer(), this);
+
+        ControllableEntity::removePlayer();
+    }
+
     void Pawn::setHealth(float health)
     {
Index: /code/branches/miniprojects/src/orxonox/objects/worldentities/pawns/Pawn.h
===================================================================
--- /code/branches/miniprojects/src/orxonox/objects/worldentities/pawns/Pawn.h	(revision 2817)
+++ /code/branches/miniprojects/src/orxonox/objects/worldentities/pawns/Pawn.h	(revision 2818)
@@ -47,4 +47,7 @@
             virtual void tick(float dt);
             void registerVariables();
+
+            virtual void setPlayer(PlayerInfo* player);
+            virtual void removePlayer();
 
             inline bool isAlive() const
