Index: client/Client/Client.vcxproj
===================================================================
--- client/Client/Client.vcxproj	(revision 5e693e86a46abca92243d657a8519fdf65454f09)
+++ client/Client/Client.vcxproj	(revision d3528055fb34f7a6cf432f340221d77382e43b58)
@@ -42,8 +42,10 @@
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>C:\Program Files\boost\boost_1_51;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>c:\allegro\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>c:\allegro\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>allegro-5.0.7-monolith-md-debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
Index: client/Client/Client.vcxproj.user
===================================================================
--- client/Client/Client.vcxproj.user	(revision 5e693e86a46abca92243d657a8519fdf65454f09)
+++ client/Client/Client.vcxproj.user	(revision d3528055fb34f7a6cf432f340221d77382e43b58)
@@ -4,4 +4,5 @@
     <LocalDebuggerCommandArguments>medievaltech.com 10000</LocalDebuggerCommandArguments>
     <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+    <LocalDebuggerEnvironment>PATH=c:\allegro\bin;%PATH%</LocalDebuggerEnvironment>
   </PropertyGroup>
 </Project>
Index: client/Client/main.cpp
===================================================================
--- client/Client/main.cpp	(revision 5e693e86a46abca92243d657a8519fdf65454f09)
+++ client/Client/main.cpp	(revision d3528055fb34f7a6cf432f340221d77382e43b58)
@@ -1,5 +1,3 @@
 #include "../../common/compiler.h"
-
-#include <sys/types.h>
 
 #if defined WINDOWS
@@ -15,11 +13,13 @@
 #endif
 
+#include <sys/types.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string>
-
 #include <iostream>
 
-#include <boost/lambda/lambda.hpp>
+#include <allegro5/allegro.h>
+#include <allegro5/allegro_font.h>
+#include <allegro5/allegro_ttf.h>
 
 #include "../../common/message.h"
@@ -35,4 +35,184 @@
 void error(const char *);
 
+const float FPS = 60;
+const int SCREEN_W = 640;
+const int SCREEN_H = 480;
+const int BOUNCER_SIZE = 32;
+enum MYKEYS {
+   KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT
+};
+ 
+int main(int argc, char **argv)
+{
+   ALLEGRO_DISPLAY *display = NULL;
+   ALLEGRO_EVENT_QUEUE *event_queue = NULL;
+   ALLEGRO_TIMER *timer = NULL;
+   ALLEGRO_BITMAP *bouncer = NULL;
+   float bouncer_x = SCREEN_W / 2.0 - BOUNCER_SIZE / 2.0;
+   float bouncer_y = SCREEN_H / 2.0 - BOUNCER_SIZE / 2.0;
+   bool key[4] = { false, false, false, false };
+   bool redraw = true;
+   bool doexit = false;
+ 
+   if(!al_init()) {
+      fprintf(stderr, "failed to initialize allegro!\n");
+      return -1;
+   }
+
+   al_init_font_addon();
+   al_init_ttf_addon();
+
+   ALLEGRO_FONT *font = al_load_ttf_font("../pirulen.ttf", 12, 0);
+ 
+   if (!font) {
+      fprintf(stderr, "Could not load 'pirulen.ttf'.\n");
+      getchar();
+	  return -1;
+   }
+ 
+   if(!al_install_keyboard()) {
+      fprintf(stderr, "failed to initialize the keyboard!\n");
+      return -1;
+   }
+ 
+   timer = al_create_timer(1.0 / FPS);
+   if(!timer) {
+      fprintf(stderr, "failed to create timer!\n");
+      return -1;
+   }
+ 
+   display = al_create_display(SCREEN_W, SCREEN_H);
+   if(!display) {
+      fprintf(stderr, "failed to create display!\n");
+      al_destroy_timer(timer);
+      return -1;
+   }
+ 
+   bouncer = al_create_bitmap(BOUNCER_SIZE, BOUNCER_SIZE);
+   if(!bouncer) {
+      fprintf(stderr, "failed to create bouncer bitmap!\n");
+      al_destroy_display(display);
+      al_destroy_timer(timer);
+      return -1;
+   }
+ 
+   event_queue = al_create_event_queue();
+   if(!event_queue) {
+      fprintf(stderr, "failed to create event_queue!\n");
+      al_destroy_bitmap(bouncer);
+      al_destroy_display(display);
+      al_destroy_timer(timer);
+      return -1;
+   }
+
+   al_set_target_bitmap(bouncer);
+ 
+   al_clear_to_color(al_map_rgb(255, 0, 255));
+ 
+   al_set_target_bitmap(al_get_backbuffer(display));
+ 
+   al_register_event_source(event_queue, al_get_display_event_source(display));
+ 
+   al_register_event_source(event_queue, al_get_timer_event_source(timer));
+ 
+   al_register_event_source(event_queue, al_get_keyboard_event_source());
+ 
+   al_clear_to_color(al_map_rgb(0,0,0));
+ 
+   al_flip_display();
+ 
+   al_start_timer(timer);
+ 
+   while(!doexit)
+   {
+      ALLEGRO_EVENT ev;
+      al_wait_for_event(event_queue, &ev);
+ 
+      if(ev.type == ALLEGRO_EVENT_TIMER) {
+         if(key[KEY_UP] && bouncer_y >= 4.0) {
+            bouncer_y -= 4.0;
+         }
+ 
+         if(key[KEY_DOWN] && bouncer_y <= SCREEN_H - BOUNCER_SIZE - 4.0) {
+            bouncer_y += 4.0;
+         }
+ 
+         if(key[KEY_LEFT] && bouncer_x >= 4.0) {
+            bouncer_x -= 4.0;
+         }
+ 
+         if(key[KEY_RIGHT] && bouncer_x <= SCREEN_W - BOUNCER_SIZE - 4.0) {
+            bouncer_x += 4.0;
+         }
+ 
+         redraw = true;
+      }
+      else if(ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) {
+         break;
+      }
+      else if(ev.type == ALLEGRO_EVENT_KEY_DOWN) {
+         switch(ev.keyboard.keycode) {
+            case ALLEGRO_KEY_UP:
+               key[KEY_UP] = true;
+               break;
+ 
+            case ALLEGRO_KEY_DOWN:
+               key[KEY_DOWN] = true;
+               break;
+ 
+            case ALLEGRO_KEY_LEFT: 
+               key[KEY_LEFT] = true;
+               break;
+ 
+            case ALLEGRO_KEY_RIGHT:
+               key[KEY_RIGHT] = true;
+               break;
+         }
+      }
+      else if(ev.type == ALLEGRO_EVENT_KEY_UP) {
+         switch(ev.keyboard.keycode) {
+            case ALLEGRO_KEY_UP:
+               key[KEY_UP] = false;
+               break;
+ 
+            case ALLEGRO_KEY_DOWN:
+               key[KEY_DOWN] = false;
+               break;
+ 
+            case ALLEGRO_KEY_LEFT: 
+               key[KEY_LEFT] = false;
+               break;
+ 
+            case ALLEGRO_KEY_RIGHT:
+               key[KEY_RIGHT] = false;
+               break;
+ 
+            case ALLEGRO_KEY_ESCAPE:
+               doexit = true;
+               break;
+         }
+      }
+ 
+      if(redraw && al_is_event_queue_empty(event_queue)) {
+         redraw = false;
+ 
+         al_clear_to_color(al_map_rgb(0,0,0));
+ 
+         al_draw_bitmap(bouncer, bouncer_x, bouncer_y, 0);
+         al_draw_text(font, al_map_rgb(255,255,255), 10, 10, ALLEGRO_ALIGN_LEFT, "Your Text Here!");
+         
+         al_flip_display();
+      }
+   }
+   
+   al_destroy_event_queue(event_queue);
+   al_destroy_bitmap(bouncer);
+   al_destroy_display(display);
+   al_destroy_timer(timer);
+ 
+   return 0;
+}
+
+/*
 int main(int argc, char *argv[])
 {
@@ -105,4 +285,5 @@
    return 0;
 }
+*/
 
 void initWinSock()
