Index: common/Common.cpp
===================================================================
--- common/Common.cpp	(revision edfd1d0c4704a1fe5d280e8fb985a4f956ff67d2)
+++ common/Common.cpp	(revision edfd1d0c4704a1fe5d280e8fb985a4f956ff67d2)
@@ -0,0 +1,14 @@
+#include "Common.h"
+
+void set_nonblock(int sock)
+{
+   #ifdef WIN32
+      unsigned long mode = 1;
+      ioctlsocket(sock, FIONBIO, &mode);
+   #else
+      int flags;
+      flags = fcntl(sock, F_GETFL,0);
+      assert(flags != -1);
+      fcntl(sock, F_SETFL, flags | O_NONBLOCK);
+   #endif
+}
Index: common/Common.h
===================================================================
--- common/Common.h	(revision e607c0f00b6d0792260d2c6f2e2887d7559adc63)
+++ common/Common.h	(revision edfd1d0c4704a1fe5d280e8fb985a4f956ff67d2)
@@ -2,16 +2,14 @@
 #define _COMMON_H
 
-void set_nonblock(int sock)
+#include <fcntl.h>
+#include <assert.h>
+
+void set_nonblock(int sock);
+
+typedef struct
 {
-   #ifdef WIN32
-      unsigned long mode = 1;
-      ioctlsocket(sock, FIONBIO, &mode);
-   #else
-      int flags;
-      flags = fcntl(sock, F_GETFL,0);
-      assert(flags != -1);
-      fcntl(sock, F_SETFL, flags | O_NONBLOCK);
-   #endif
-}
+   int x;
+   int y;
+} PLAYER_POS;
 
 #endif
Index: common/Message.h
===================================================================
--- common/Message.h	(revision e607c0f00b6d0792260d2c6f2e2887d7559adc63)
+++ common/Message.h	(revision edfd1d0c4704a1fe5d280e8fb985a4f956ff67d2)
@@ -6,4 +6,5 @@
 #define MSG_TYPE_LOGOUT       3
 #define MSG_TYPE_CHAT         4
+#define MSG_TYPE_PLAYER       5
 
 typedef struct
Index: common/Player.cpp
===================================================================
--- common/Player.cpp	(revision edfd1d0c4704a1fe5d280e8fb985a4f956ff67d2)
+++ common/Player.cpp	(revision edfd1d0c4704a1fe5d280e8fb985a4f956ff67d2)
@@ -0,0 +1,44 @@
+#include "Player.h"
+
+#include <iostream>
+#include <arpa/inet.h>
+
+using namespace std;
+
+Player::Player(string name, string password)
+{
+   this->name = name;
+   this->password = password;
+   this->pos.x = 200;
+   this->pos.y = 200;
+
+   cout << "Created new player: " << this->name << endl;
+}
+
+Player::Player(string name, sockaddr_in addr)
+{
+   this->name = name;
+   this->password = "";
+   this->pos.x = 200;
+   this->pos.y = 200;
+   this->addr = addr;
+
+   cout << "Created new played: " << this->name << endl;
+}
+
+Player::~Player()
+{
+}
+
+void Player::setAddr(sockaddr_in addr)
+{
+   this->addr = addr;
+}
+
+void Player::clearSensitiveInfo()
+{
+   this->password = "";
+   this->addr.sin_family = 0;
+   this->addr.sin_port = 0;
+   this->addr.sin_addr.s_addr = 0;
+}
Index: common/Player.h
===================================================================
--- common/Player.h	(revision edfd1d0c4704a1fe5d280e8fb985a4f956ff67d2)
+++ common/Player.h	(revision edfd1d0c4704a1fe5d280e8fb985a4f956ff67d2)
@@ -0,0 +1,26 @@
+#ifndef _PLAYER_H
+#define _PLAYER_H
+
+#include <netinet/in.h>
+#include <string>
+
+#include "Common.h"
+
+using namespace std;
+
+class Player {
+public:
+   Player(string name, string password);
+   Player(string name, sockaddr_in addr); // this will be deleted
+   ~Player();
+
+   void setAddr(sockaddr_in addr);
+   void clearSensitiveInfo();
+
+   string name;
+   string password;
+   sockaddr_in addr;
+   PLAYER_POS pos;
+};
+
+#endif
