Index: common/Common.h
===================================================================
--- common/Common.h	(revision 373089e902c6dfaf126a82d509c141d0d9796133)
+++ common/Common.h	(revision 50643fa388bf5420317a428ce9c1e35cb03bb8ce)
@@ -1,14 +1,4 @@
 #ifndef _COMMON_H
 #define _COMMON_H
-
-#include "Compiler.h"
-
-#if defined WINDOWS
-   #include <winsock2.h>
-   #include <ws2tcpip.h>
-#elif defined LINUX
-   #include <fcntl.h>
-   #include <assert.h>
-#endif
 
 #include <string>
Index: common/MessageContainer.h
===================================================================
--- common/MessageContainer.h	(revision 373089e902c6dfaf126a82d509c141d0d9796133)
+++ common/MessageContainer.h	(revision 50643fa388bf5420317a428ce9c1e35cb03bb8ce)
@@ -4,7 +4,9 @@
 #include <string>
 
-#include "Common.h"
+#include "Compiler.h"
 
-#if defined LINUX
+#if defined WINDOWS
+   #include <winsock2.h>
+#elif defined LINUX
    #include <netinet/in.h>
 #endif
Index: common/MessageProcessor.cpp
===================================================================
--- common/MessageProcessor.cpp	(revision 373089e902c6dfaf126a82d509c141d0d9796133)
+++ common/MessageProcessor.cpp	(revision 50643fa388bf5420317a428ce9c1e35cb03bb8ce)
@@ -3,4 +3,12 @@
 #include <iostream>
 #include <fstream>
+
+#include "Compiler.h"
+
+#if defined WINDOWS
+   #include <ws2tcpip.h>
+#endif
+
+#include "Common.h"
 
 MessageProcessor::MessageProcessor() {
Index: common/Player.cpp
===================================================================
--- common/Player.cpp	(revision 373089e902c6dfaf126a82d509c141d0d9796133)
+++ common/Player.cpp	(revision 50643fa388bf5420317a428ce9c1e35cb03bb8ce)
@@ -206,8 +206,8 @@
 }
 
-bool Player::updateTarget(map<unsigned int, Player>& mapPlayers) {
+bool Player::updateTarget(map<unsigned int, Player*>& mapPlayers) {
    if (this->isChasing) {
-      this->target.x = mapPlayers[this->targetPlayer].pos.x;
-      this->target.y = mapPlayers[this->targetPlayer].pos.y;
+      this->target.x = mapPlayers[this->targetPlayer]->pos.x;
+      this->target.y = mapPlayers[this->targetPlayer]->pos.y;
 
       if (posDistance(this->pos, this->target.toFloat()) <= this->range) {
Index: common/Player.h
===================================================================
--- common/Player.h	(revision 373089e902c6dfaf126a82d509c141d0d9796133)
+++ common/Player.h	(revision 50643fa388bf5420317a428ce9c1e35cb03bb8ce)
@@ -5,7 +5,9 @@
 #include <map>
 
-#include "Common.h"
+#include "Compiler.h"
 
-#if defined LINUX
+#if defined WINDOWS
+   #include <winsock2.h>
+#elif defined LINUX
    #include <netinet/in.h>
 #endif
@@ -46,5 +48,5 @@
    void deserialize(char* buffer);
 
-   bool updateTarget(map<unsigned int, Player>& mapPlayers);
+   bool updateTarget(map<unsigned int, Player*>& mapPlayers);
    bool move(WorldMap *map);
 
Index: common/Projectile.cpp
===================================================================
--- common/Projectile.cpp	(revision 373089e902c6dfaf126a82d509c141d0d9796133)
+++ common/Projectile.cpp	(revision 50643fa388bf5420317a428ce9c1e35cb03bb8ce)
@@ -71,10 +71,10 @@
 }
 
-bool Projectile::move(map<unsigned int, Player>& mapPlayers) {
+bool Projectile::move(map<unsigned int, Player*>& mapPlayers) {
    // if the current target logs off, this method will run into problems
 
    unsigned long long curTime = getCurrentMillis();
 
-   Player targetP = mapPlayers[target];
+   Player* targetP = mapPlayers[target];
 
    if (timeLastUpdated == 0) {
@@ -85,10 +85,10 @@
 
    float pixels = speed * (curTime-timeLastUpdated) / 1000.0;
-   double angle = atan2(targetP.pos.y-pos.y, targetP.pos.x-pos.x);
-   float dist = sqrt(pow(targetP.pos.x-pos.x, 2) + pow(targetP.pos.y-pos.y, 2));
+   double angle = atan2(targetP->pos.y-pos.y, targetP->pos.x-pos.x);
+   float dist = sqrt(pow(targetP->pos.x-pos.x, 2) + pow(targetP->pos.y-pos.y, 2));
 
    if (dist <= pixels) {
-      pos.x = targetP.pos.x;
-      pos.y = targetP.pos.y;
+      pos.x = targetP->pos.x;
+      pos.y = targetP->pos.y;
       return true;
    }else {
Index: common/Projectile.h
===================================================================
--- common/Projectile.h	(revision 373089e902c6dfaf126a82d509c141d0d9796133)
+++ common/Projectile.h	(revision 50643fa388bf5420317a428ce9c1e35cb03bb8ce)
@@ -26,5 +26,10 @@
 
    // returns true if it reached the target and should be deleted
-   bool move(map<unsigned int, Player>& mapPlayers);
+   bool move(map<unsigned int, Player*>& mapPlayers);
+
+   /*
+    * target should become a Player*. When this object gets serialized, the player's id should be sent.
+    * Deserialization in this case might be tricky since it will require a playerMap to turn the id into a Plauyer*
+    */
 
    int id;
