diff --git a/src/main/java/com/comandante/creeper/Main.java b/src/main/java/com/comandante/creeper/Main.java
index a92096fed83563e9d1a6458480ccfd2855238bf4..8bf59116f6e873d6b62335aaff6ad99f46a93e18 100644
--- a/src/main/java/com/comandante/creeper/Main.java
+++ b/src/main/java/com/comandante/creeper/Main.java
@@ -62,32 +62,35 @@ public class Main {
         PlayerManager playerManager = new PlayerManager(db, new SessionManager());
         EntityManager entityManager = new EntityManager(roomManager, playerManager, db);
         Stats chrisBrianStats = new StatsBuilder().setStrength(7).setWillpower(8).setAim(6).setAgile(5).setArmorRating(4).setMeleSkill(10).setCurrentHealth(100).setMaxHealth(100).setWeaponRatingMin(10).setWeaponRatingMax(20).setNumberweaponOfRolls(1).createStats();
+        startUpMessage("Configuring default admins.");
         if (playerManager.getPlayerMetadata(createPlayerId("chris")) == null) {
-            System.out.println("Creating Chris User.");
+            startUpMessage("Creating Chris User.");
             playerManager.savePlayerMetadata(new PlayerMetadata("chris", "poop", new String(Base64.encodeBase64("chris".getBytes())), chrisBrianStats));
         }
         if (playerManager.getPlayerMetadata(createPlayerId("brian")) == null) {
-            System.out.println("Creating Brian User.");
+            startUpMessage("Creating Brian User.");
             playerManager.savePlayerMetadata(new PlayerMetadata("brian", "poop", new String(Base64.encodeBase64("brian".getBytes())), chrisBrianStats));
         }
-        System.out.print("Building all rooms.");
         MapsManager mapsManager = new MapsManager(roomManager);
         GameManager gameManager = new GameManager(roomManager, playerManager, entityManager, mapsManager);
+        startUpMessage("Reading world from disk.");
         WorldExporter worldExporter = new WorldExporter(roomManager, mapsManager, gameManager.getFloorManager(), entityManager);
         worldExporter.readWorldFromDisk();
+        startUpMessage("Generating maps");
         mapsManager.generateAllMaps(9, 9);
+        startUpMessage("Adding Street Hustlers");
         entityManager.addEntity(new NpcSpawner(new StreetHustler(gameManager), Area.NEWBIE_ZONE, gameManager, new SpawnRule(10, 100, 4, 100)));
         Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRooms();
         while (rooms.hasNext()) {
             Map.Entry<Integer, Room> next = rooms.next();
             next.getValue().setAreas(Sets.newHashSet(Area.NEWBIE_ZONE));
         }
-        System.out.println("done!");
 
+        startUpMessage("Adding beer");
         ItemSpawner itemSpawner = new ItemSpawner(ItemType.BEER, Area.NEWBIE_ZONE, new SpawnRule(20, 20, 4, 100), gameManager);
         entityManager.addEntity(itemSpawner);
 
-
+        startUpMessage("Configuring Creeper Commmands");
         creeperCommandRegistry = new CreeperCommandRegistry(new UnknownCommand(gameManager));
         creeperCommandRegistry.addCommand(new DropCommand(gameManager));
         creeperCommandRegistry.addCommand(new GossipCommand(gameManager));
@@ -108,8 +111,13 @@ public class Main {
         creeperCommandRegistry.addCommand(new BuildCommand(gameManager));
 
         CreeperServer creeperServer = new CreeperServer(8080, db);
+        startUpMessage("Creeper engine started");
         creeperServer.run(gameManager);
-        System.out.println("Creeper started.");
+        startUpMessage("Creeper online");
+    }
+
+    private static void startUpMessage(String message) {
+        System.out.println("[STARTUP] " + message);
     }
 
     private static void checkAndCreateWorld() throws IOException {
diff --git a/src/main/java/com/comandante/creeper/player/ExperienceManager.java b/src/main/java/com/comandante/creeper/player/ExperienceManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..632f5c9d19cc1901e13bc7fa8c80faca536fad56
--- /dev/null
+++ b/src/main/java/com/comandante/creeper/player/ExperienceManager.java
@@ -0,0 +1,5 @@
+package com.comandante.creeper.player;
+
+public class ExperienceManager {
+
+}
diff --git a/src/main/java/com/comandante/creeper/server/CreeperServer.java b/src/main/java/com/comandante/creeper/server/CreeperServer.java
index 1bb8176e946de2342d12197e7127b40bead4bfcc..1a8d14eb17e52200dbb49c2371a86071a77e3a3d 100644
--- a/src/main/java/com/comandante/creeper/server/CreeperServer.java
+++ b/src/main/java/com/comandante/creeper/server/CreeperServer.java
@@ -3,6 +3,7 @@ package com.comandante.creeper.server;
 
 import com.comandante.creeper.managers.GameManager;
 import org.jboss.netty.bootstrap.ServerBootstrap;
+import org.jboss.netty.channel.ChannelException;
 import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
 import org.mapdb.DB;
 
@@ -19,10 +20,23 @@ public class CreeperServer {
         this.db = db;
     }
 
+    public static void exitServer(String exitMessage) {
+        exitServer(exitMessage, 0);
+    }
+
+    public static void exitServer(String exitMessage, int code) {
+        System.out.println("[SERVER IS SHUTTING DOWN] " + exitMessage);
+        System.exit(code);
+    }
+
     public void run(GameManager gameManager) throws Exception {
         ServerBootstrap bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));
         CreeperAuthenticationHandler handler = new CreeperAuthenticationHandler(gameManager);
         bootstrap.setPipelineFactory(new CreeperServerPipelineFactory(handler));
-        bootstrap.bind(new InetSocketAddress(port));
+        try {
+            bootstrap.bind(new InetSocketAddress(port));
+        } catch (ChannelException e) {
+            exitServer(e.getMessage(), 127);
+        }
     }
 }