diff --git a/src/main/java/com/comandante/creeper/command/commands/MovementCommand.java b/src/main/java/com/comandante/creeper/command/commands/MovementCommand.java
index 289504ff972d5a77b65fba629f7fe54a2a20addc..be8292af0a0066b0c92f6acdd9dcfc4df3e918b1 100644
--- a/src/main/java/com/comandante/creeper/command/commands/MovementCommand.java
+++ b/src/main/java/com/comandante/creeper/command/commands/MovementCommand.java
@@ -55,7 +55,7 @@ public class MovementCommand extends Command {
                 return;
             }
             Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getNorthId().get());
-            movement = new Movement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the north.");
+            movement = new Movement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the north.", "south");
         }
         if (southTriggers.contains(command.toLowerCase())) {
             if (!currentRoom.getSouthId().isPresent()) {
@@ -63,7 +63,7 @@ public class MovementCommand extends Command {
                 return;
             }
             Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getSouthId().get());
-            movement = new Movement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the south.");
+            movement = new Movement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the south.", "north");
         }
         if (eastTriggers.contains(command.toLowerCase())) {
             if (!currentRoom.getEastId().isPresent()) {
@@ -71,7 +71,7 @@ public class MovementCommand extends Command {
                 return;
             }
             Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getEastId().get());
-            movement = new Movement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the east.");
+            movement = new Movement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the east.", "west");
         }
         if (westTriggers.contains(command.toLowerCase())) {
             if (!currentRoom.getWestId().isPresent()) {
@@ -79,7 +79,7 @@ public class MovementCommand extends Command {
                 return;
             }
             Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getWestId().get());
-            movement = new Movement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the west.");
+            movement = new Movement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the west.", "east");
         }
         if (upTriggers.contains(command.toLowerCase())) {
             if (!currentRoom.getUpId().isPresent()) {
@@ -87,7 +87,7 @@ public class MovementCommand extends Command {
                 return;
             }
             Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getUpId().get());
-            movement = new Movement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the west.");
+            movement = new Movement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the west.", "down");
         }
         if (downTriggers.contains(command.toLowerCase())) {
             if (!currentRoom.getDownId().isPresent()) {
@@ -95,10 +95,11 @@ public class MovementCommand extends Command {
                 return;
             }
             Room destinationRoom = gameManager.getRoomManager().getRoom(currentRoom.getDownId().get());
-            movement = new Movement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the west.");
+            movement = new Movement(player, currentRoom.getRoomId(), destinationRoom.getRoomId(), this, "exited to the west.", "up");
         }
         gameManager.movePlayer(movement);
         if (movement != null) {
+            player.setReturnDirection(Optional.of(movement.getReturnDirection()));
             gameManager.currentRoomLogic(movement.getPlayer().getPlayerId());
         }
     }
diff --git a/src/main/java/com/comandante/creeper/managers/GameManager.java b/src/main/java/com/comandante/creeper/managers/GameManager.java
index fcdc2c43e402c780e5beb8c6368d4f33957f7ecc..8033e7ff89fbd7222613100c78c1a4dc17e49a0f 100644
--- a/src/main/java/com/comandante/creeper/managers/GameManager.java
+++ b/src/main/java/com/comandante/creeper/managers/GameManager.java
@@ -214,27 +214,66 @@ public class GameManager {
         }
     }
 
-    private String getExits(Room room) {
+    private String getExits(Room room, Player player) {
         StringBuilder stringBuilder = new StringBuilder();
         stringBuilder.append("[ Exits: ");
         stringBuilder.append(new Ansi().fg(Ansi.Color.GREEN).toString());
+        if (!player.getReturnDirection().isPresent()) {
+            player.setReturnDirection(Optional.of("-"));
+        }
         if (room.getNorthId().isPresent()) {
-            stringBuilder.append("North ");
+            if (player.getReturnDirection().get().equalsIgnoreCase("north")) {
+                stringBuilder.append(new Ansi().fgBright(Ansi.Color.GREEN).toString());
+                stringBuilder.append("North ");
+                stringBuilder.append(new Ansi().fg(Ansi.Color.GREEN).toString());
+            } else {
+                stringBuilder.append("North ");
+            }
         }
         if (room.getSouthId().isPresent()) {
-            stringBuilder.append("South ");
+            if (player.getReturnDirection().get().equalsIgnoreCase("south")) {
+                stringBuilder.append(new Ansi().fgBright(Ansi.Color.GREEN).toString());
+                stringBuilder.append("South ");
+                stringBuilder.append(new Ansi().fg(Ansi.Color.GREEN).toString());
+            } else {
+                stringBuilder.append("South ");
+            }
         }
         if (room.getEastId().isPresent()) {
-            stringBuilder.append("East ");
+            if (player.getReturnDirection().get().equalsIgnoreCase("east")) {
+                stringBuilder.append(new Ansi().fgBright(Ansi.Color.GREEN).toString());
+                stringBuilder.append("East ");
+                stringBuilder.append(new Ansi().fg(Ansi.Color.GREEN).toString());
+            } else {
+                stringBuilder.append("East ");
+            }
         }
         if (room.getWestId().isPresent()) {
-            stringBuilder.append("West ");
+            if (player.getReturnDirection().get().equalsIgnoreCase("west")) {
+                stringBuilder.append(new Ansi().fgBright(Ansi.Color.GREEN).toString());
+                stringBuilder.append("West ");
+                stringBuilder.append(new Ansi().fg(Ansi.Color.GREEN).toString());
+            } else {
+                stringBuilder.append("West ");
+            }
         }
         if (room.getUpId().isPresent()) {
-            stringBuilder.append("Up ");
+            if (player.getReturnDirection().get().equalsIgnoreCase("up")) {
+                stringBuilder.append(new Ansi().fgBright(Ansi.Color.GREEN).toString());
+                stringBuilder.append("Up ");
+                stringBuilder.append(new Ansi().fg(Ansi.Color.GREEN).toString());
+            } else {
+                stringBuilder.append("Up ");
+            }
         }
         if (room.getDownId().isPresent()) {
-            stringBuilder.append("Down ");
+            if (player.getReturnDirection().get().equalsIgnoreCase("down")) {
+                stringBuilder.append(new Ansi().fgBright(Ansi.Color.GREEN).toString());
+                stringBuilder.append("Down ");
+                stringBuilder.append(new Ansi().fg(Ansi.Color.GREEN).toString());
+            } else {
+                stringBuilder.append("Down ");
+            }
         }
         stringBuilder.append(new Ansi().reset().toString()).append("]\r\n");
         return stringBuilder.toString();
@@ -249,7 +288,7 @@ public class GameManager {
         sb.append(playerCurrentRoom.getRoomTitle()).append("\r\n\r\n");
         sb.append(new Ansi().reset().toString());
         sb.append(playerCurrentRoom.getRoomDescription()).append("\r\n");
-        sb.append(getExits(playerCurrentRoom));
+        sb.append(getExits(playerCurrentRoom, player));
         for (String searchPlayerId : playerCurrentRoom.getPresentPlayerIds()) {
             if (searchPlayerId.equals(player.getPlayerId())) {
                 continue;
@@ -257,7 +296,7 @@ public class GameManager {
             Player searchPlayer = playerManager.getPlayer(searchPlayerId);
             sb.append(searchPlayer.getPlayerName()).append(" is here.\r\n");
         }
-        for (String npcId: playerCurrentRoom.getNpcIds()) {
+        for (String npcId : playerCurrentRoom.getNpcIds()) {
             Npc npcEntity = entityManager.getNpcEntity(npcId);
             sb.append("A ").append(npcEntity.getColorName()).append(" is here.\r\n");
         }
diff --git a/src/main/java/com/comandante/creeper/model/Movement.java b/src/main/java/com/comandante/creeper/model/Movement.java
index b6106eb070aafb7d3b7ee22400fe6e8e22d282f7..62c8060896547b85e7c194dd1677ff24c1b22ed9 100644
--- a/src/main/java/com/comandante/creeper/model/Movement.java
+++ b/src/main/java/com/comandante/creeper/model/Movement.java
@@ -9,17 +9,25 @@ public class Movement {
     private final Integer destinationRoomId;
     private final MovementCommand command;
     private final String roomExitMessage;
+    private final String returnDirection;
 
     public Movement(Player player,
                     Integer sourceRoomId,
                     Integer destinationRoomId,
                     MovementCommand command,
-                    String roomExitMessage) {
+                    String roomExitMessage,
+                    String returnDirection) {
         this.player = player;
         this.sourceRoomId = sourceRoomId;
         this.destinationRoomId = destinationRoomId;
         this.command = command;
         this.roomExitMessage = roomExitMessage;
+        this.returnDirection = returnDirection;
+
+    }
+
+    public String getReturnDirection() {
+        return returnDirection;
     }
 
     public Integer getSourceRoomId() {
diff --git a/src/main/java/com/comandante/creeper/model/Player.java b/src/main/java/com/comandante/creeper/model/Player.java
index 9666279680210c4e258610caa75584da95fc08f1..35957aab0368b0f7cc5bb0cdd1a2662a30f427dd 100644
--- a/src/main/java/com/comandante/creeper/model/Player.java
+++ b/src/main/java/com/comandante/creeper/model/Player.java
@@ -1,13 +1,15 @@
 package com.comandante.creeper.model;
 
 
+import com.google.common.base.Optional;
 import org.apache.commons.codec.binary.Base64;
 import org.jboss.netty.channel.Channel;
 
-public class Player {
+public class Player extends CreeperEntity{
 
     private String playerName;
     private Channel channel;
+    private Optional<String> returnDirection = Optional.absent();
 
     public Player(String playerName) {
         this.playerName = playerName;
@@ -28,4 +30,21 @@ public class Player {
     public void setChannel(Channel channel) {
         this.channel = channel;
     }
+
+    public void setPlayerName(String playerName) {
+        this.playerName = playerName;
+    }
+
+    public Optional<String> getReturnDirection() {
+        return returnDirection;
+    }
+
+    public void setReturnDirection(Optional<String> returnDirection) {
+        this.returnDirection = returnDirection;
+    }
+
+    @Override
+    public void run() {
+
+    }
 }