Index: common/MessageContainer.cpp
===================================================================
--- common/MessageContainer.cpp	(revision 934ab537423a0a0d52c3c4714c686a3b86fae198)
+++ common/MessageContainer.cpp	(revision b35b2b25df5c3c0e8e63e6f9c60d145b6996c085)
@@ -48,2 +48,26 @@
    this->timeAcked = time;
 }
+
+/*
+string getMsgTypeString(int msgType) {
+   switch(msgType) {
+      case MSG_TYPE_ACK: return "MSG_TYPE_ACK";
+      case MSG_TYPE_REGISTER: return "MSG_TYPE_REGISTER";
+      case MSG_TYPE_LOGIN: return "MSG_TYPE_LOGIN";
+      case MSG_TYPE_LOGOUT: return "MSG_TYPE_LOGOUT";
+      case MSG_TYPE_CHAT: return "MSG_TYPE_CHAT";
+      case MSG_TYPE_PLAYER: return "MSG_TYPE_PLAYER";
+      case MSG_TYPE_PLAYER_MOVE: return "MSG_TYPE_PLAYER_MOVE";
+      case MSG_TYPE_OBJECT: return "MSG_TYPE_OBJECT";
+      case MSG_TYPE_REMOVE_OBJECT: return "MSG_TYPE_REMOVE_OBJECT";
+      case MSG_TYPE_PICKUP_FLAG: return "MSG_TYPE_PICKUP_FLAG";
+      caseMSG_TYPE_DROP_FLAG: return "MSG_TYPE_DROP_FLAG";
+      case MSG_TYPE_SCORE: return "MSG_TYPE_SCORE";
+      case MSG_TYPE_START_ATTACK: return "MSG_TYPE_START_ATACK";
+      case MSG_TYPE_ATTACK: return "MSG_TYPE_ATTACK";
+      case MSG_TYPE_PROJECTILE: return "MSG_TYPE_PROJECTILE";
+      case MSG_TYPE_REMOVE_PROJECTILE: return "MSG_TYPE_REMOVE_PROJECTILE";
+      default: return "Unknown";
+   }
+}
+*/
Index: common/MessageContainer.h
===================================================================
--- common/MessageContainer.h	(revision 934ab537423a0a0d52c3c4714c686a3b86fae198)
+++ common/MessageContainer.h	(revision b35b2b25df5c3c0e8e63e6f9c60d145b6996c085)
@@ -3,4 +3,6 @@
 
 #include "Compiler.h"
+
+#include <string>
 
 #if defined WINDOWS
@@ -10,4 +12,6 @@
    #include <netinet/in.h>
 #endif
+
+using namespace std;
 
 #define MSG_TYPE_ACK               1
@@ -54,4 +58,26 @@
    void setAcked(bool acked);
    void setTimeAcked(unsigned long long time);
+
+   static string getMsgTypeString(int msgType) {
+      switch(msgType) {
+         case MSG_TYPE_ACK: return "MSG_TYPE_ACK";
+         case MSG_TYPE_REGISTER: return "MSG_TYPE_REGISTER";
+         case MSG_TYPE_LOGIN: return "MSG_TYPE_LOGIN";
+         case MSG_TYPE_LOGOUT: return "MSG_TYPE_LOGOUT";
+         case MSG_TYPE_CHAT: return "MSG_TYPE_CHAT";
+         case MSG_TYPE_PLAYER: return "MSG_TYPE_PLAYER";
+         case MSG_TYPE_PLAYER_MOVE: return "MSG_TYPE_PLAYER_MOVE";
+         case MSG_TYPE_OBJECT: return "MSG_TYPE_OBJECT";
+         case MSG_TYPE_REMOVE_OBJECT: return "MSG_TYPE_REMOVE_OBJECT";
+         case MSG_TYPE_PICKUP_FLAG: return "MSG_TYPE_PICKUP_FLAG";
+         case MSG_TYPE_DROP_FLAG: return "MSG_TYPE_DROP_FLAG";
+         case MSG_TYPE_SCORE: return "MSG_TYPE_SCORE";
+         case MSG_TYPE_START_ATTACK: return "MSG_TYPE_START_ATACK";
+         case MSG_TYPE_ATTACK: return "MSG_TYPE_ATTACK";
+         case MSG_TYPE_PROJECTILE: return "MSG_TYPE_PROJECTILE";
+         case MSG_TYPE_REMOVE_PROJECTILE: return "MSG_TYPE_REMOVE_PROJECTILE";
+         default: return "Unknown";
+      }
+   }
 };
 
Index: common/MessageProcessor.cpp
===================================================================
--- common/MessageProcessor.cpp	(revision 934ab537423a0a0d52c3c4714c686a3b86fae198)
+++ common/MessageProcessor.cpp	(revision b35b2b25df5c3c0e8e63e6f9c60d145b6996c085)
@@ -52,5 +52,7 @@
          cout << "Got message of type " << msg->type << endl;
 
-      ackedMessages[msg->id] = getCurrentMillis();
+      ackedMessages[msg->id] = MessageContainer(*msg, *source);
+      ackedMessages[msg->id].setAcked(true);
+      ackedMessages[msg->id].setTimeAcked(getCurrentMillis());
 
       NETWORK_MSG ack;
@@ -68,5 +70,5 @@
 
 void MessageProcessor::resendUnackedMessages(int sock) {
-   map<int, map<unsigned long, MessageContainer> >::iterator it;
+   map<unsigned int, map<unsigned long, MessageContainer> >::iterator it;
    map<unsigned long, MessageContainer>::iterator it2;
    map<unsigned long, MessageContainer> sentMsg;
@@ -83,5 +85,5 @@
 
 void MessageProcessor::cleanAckedMessages() {
-   map<int, map<unsigned long, MessageContainer> >::iterator it = sentMessages.begin();
+   map<unsigned int, map<unsigned long, MessageContainer> >::iterator it = sentMessages.begin();
    map<unsigned long, MessageContainer>::iterator it2;
 
@@ -104,4 +106,5 @@
    }
 
+   /*
    map<unsigned int, unsigned long long>::iterator it3 = ackedMessages.begin();
 
@@ -112,3 +115,12 @@
          it3++;
    }
+   */
 }
+
+map<unsigned int, map<unsigned long, MessageContainer> >& MessageProcessor::getSentMessages() {
+   return this->sentMessages;
+}
+
+map<unsigned int, MessageContainer>& MessageProcessor::getAckedMessages() {
+   return this->ackedMessages;
+}
Index: common/MessageProcessor.h
===================================================================
--- common/MessageProcessor.h	(revision 934ab537423a0a0d52c3c4714c686a3b86fae198)
+++ common/MessageProcessor.h	(revision b35b2b25df5c3c0e8e63e6f9c60d145b6996c085)
@@ -13,8 +13,8 @@
 
    // map from message ids to maps from player addresses to message info
-   map<int, map<unsigned long, MessageContainer> > sentMessages;
+   map<unsigned int, map<unsigned long, MessageContainer> > sentMessages;
 
    // map from message ids to the time each mesage was acked
-   map<unsigned int, unsigned long long> ackedMessages;
+   map<unsigned int, MessageContainer> ackedMessages;
 
    unsigned long pid;
@@ -28,4 +28,7 @@
    void resendUnackedMessages(int sock);
    void cleanAckedMessages();
+
+   map<unsigned int, map<unsigned long, MessageContainer> >& getSentMessages();
+   map<unsigned int, MessageContainer>& getAckedMessages();
 };
 
