diff --git a/pom.xml b/pom.xml
index e9372cad9cebd0da731812edff712c41471fce47..374c01bdee0e15a90f1a7e648d031aa8e71e0fce 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,6 +43,11 @@
       <artifactId>gson</artifactId>
       <version>2.2.4</version>
     </dependency>
+    <dependency>
+      <groupId>org.ow2.sirocco</groupId>
+      <artifactId>sirocco-text-table-formatter</artifactId>
+      <version>1.0</version>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/src/main/java/com/comandante/creeper/fight/FightRun.java b/src/main/java/com/comandante/creeper/fight/FightRun.java
index e1d811aba84cb4495e3f59fa8d8b6b57419e79ae..4d0c5759adddf6a898a1b359c49f011dc6e1de11 100644
--- a/src/main/java/com/comandante/creeper/fight/FightRun.java
+++ b/src/main/java/com/comandante/creeper/fight/FightRun.java
@@ -32,6 +32,14 @@ public class FightRun implements Callable<FightResults> {
                 break;
             }
             gameManager.getFightManager().fightTurn(playerStats, npcStats, 3, player, npc);
+            gameManager.getChannelUtils().write(player.getPlayerId(), "Use an ability!");
+            gameManager.getPlayerManager().getSessionManager().getSession(player.getPlayerId()).setIsAbleToDoAbility(true);
+            try {
+                Thread.sleep(2200);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+            gameManager.getPlayerManager().getSessionManager().getSession(player.getPlayerId()).setIsAbleToDoAbility(false);
         }
 
         gameManager.getPlayerManager().savePlayerMetadata(playerMetadata);
diff --git a/src/main/java/com/comandante/creeper/server/CreeperSession.java b/src/main/java/com/comandante/creeper/server/CreeperSession.java
index 51f3e03e18ed3e607412804d6dab5a918213b361..81c332804fa34f9d9ad255d0eb3df903fec846e2 100644
--- a/src/main/java/com/comandante/creeper/server/CreeperSession.java
+++ b/src/main/java/com/comandante/creeper/server/CreeperSession.java
@@ -4,6 +4,7 @@ import com.comandante.creeper.fight.FightResults;
 import com.google.common.base.Optional;
 
 import java.util.concurrent.Future;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 public class CreeperSession {
 
@@ -11,6 +12,7 @@ public class CreeperSession {
     private Optional<String> password = Optional.absent();
     private boolean isAuthed = false;
     private Optional<Future<FightResults>> activeFight = Optional.absent();
+    private AtomicBoolean isAbleToDoAbility = new AtomicBoolean(false);
 
     State state;
 
@@ -62,4 +64,12 @@ public class CreeperSession {
     public State getState() {
         return state;
     }
+
+    public void setIsAbleToDoAbility(boolean b) {
+        this.isAbleToDoAbility.set(b);
+    }
+
+    public boolean IsAbleToDoAbility() {
+        return this.isAbleToDoAbility.get();
+    }
 }
diff --git a/src/main/java/com/comandante/creeper/server/command/WhoCommand.java b/src/main/java/com/comandante/creeper/server/command/WhoCommand.java
index 5db783aec534cc466b74e3b16aa41b995a7cbbb7..5d2ac78eb73c58f998d5ba698e4b5781520ff734 100644
--- a/src/main/java/com/comandante/creeper/server/command/WhoCommand.java
+++ b/src/main/java/com/comandante/creeper/server/command/WhoCommand.java
@@ -4,14 +4,16 @@ import com.comandante.creeper.managers.GameManager;
 import com.comandante.creeper.player.Player;
 import org.jboss.netty.channel.ChannelHandlerContext;
 import org.jboss.netty.channel.MessageEvent;
+import org.nocrala.tools.texttablefmt.BorderStyle;
+import org.nocrala.tools.texttablefmt.CellStyle;
+import org.nocrala.tools.texttablefmt.ShownBorders;
+import org.nocrala.tools.texttablefmt.Table;
 
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.Set;
 
-import static com.comandante.creeper.server.Color.CYAN;
-import static com.comandante.creeper.server.Color.RESET;
-
 public class WhoCommand extends Command {
 
     final static List<String> validTriggers = Arrays.asList("who");
@@ -24,21 +26,49 @@ public class WhoCommand extends Command {
     @Override
     public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
         try {
+            CellStyle numberStyle = new CellStyle(CellStyle.HorizontalAlign.right);
+
+            Table t = new Table(3, BorderStyle.UNICODE_BOX_DOUBLE_BORDER,
+                    ShownBorders.SURROUND_HEADER_FOOTER_AND_COLUMNS);
+
+            t.setColumnWidth(0, 8, 14);
+            t.setColumnWidth(1, 7, 16);
+            t.setColumnWidth(2, 9, 16);
             Set<Player> allPlayers = getGameManager().getAllPlayers();
-            StringBuilder stringBuilder = new StringBuilder();
-            stringBuilder.append(CYAN);
-            stringBuilder.append("----------------------\r\n");
-            stringBuilder.append("|--active users------|\r\n");
-            stringBuilder.append("----------------------\r\n");
             for (Player allPlayer : allPlayers) {
-                stringBuilder.append(allPlayer.getPlayerName());
-                stringBuilder.append(" - ").append(allPlayer.getChannel().getRemoteAddress().toString());
-                stringBuilder.append("\r\n");
+                t.addCell(allPlayer.getPlayerName());
+                t.addCell(allPlayer.getChannel().getRemoteAddress().toString());
+                t.addCell(new Date().toString());
             }
-            stringBuilder.append(RESET);
-            getGameManager().getChannelUtils().write(getPlayerId(getCreeperSession(e.getChannel())), stringBuilder.toString());
+            getGameManager().getChannelUtils().write(getPlayerId(getCreeperSession(e.getChannel())), t.render());
         } finally {
             super.messageReceived(ctx, e);
         }
     }
+
+    public static void main(String[] args) {
+        CellStyle numberStyle = new CellStyle(CellStyle.HorizontalAlign.right);
+
+        Table t = new Table(3, BorderStyle.DESIGN_DIM,
+                ShownBorders.HEADER_ONLY);
+
+        t.setColumnWidth(0, 22, 28);
+        t.setColumnWidth(1, 12, 22);
+        t.setColumnWidth(2, 9, 16);
+
+        t.addCell("Chrisadfasdfas");
+        t.addCell("127.0.0.1");
+        t.addCell("November 1, 1997");
+
+        t.addCell("Brian");
+        t.addCell("127.0.0.1");
+        t.addCell("November 1, 1997");
+
+        t.addCell("Turd");
+        t.addCell("127.0.0.1");
+        t.addCell("November 1, 1997");
+
+
+        System.out.println("\n\n\n\n" + t.render());
+    }
 }