diff --git a/src/main/java/com/comandante/creeper/ConfigureCommands.java b/src/main/java/com/comandante/creeper/ConfigureCommands.java
index e2d958230dddba233a33d44df9cf44bfd2d4e0ff..648ca6e9448f89b3a794c6e3249d3f528595538f 100755
--- a/src/main/java/com/comandante/creeper/ConfigureCommands.java
+++ b/src/main/java/com/comandante/creeper/ConfigureCommands.java
@@ -85,5 +85,7 @@ public class ConfigureCommands {
         creeperCommandRegistry.addCommand(new ShowCommand(gameManager));
         creeperCommandRegistry.addCommand(new CoolDownCommand(gameManager));
         creeperCommandRegistry.addCommand(new SystemInfo(gameManager));
+        creeperCommandRegistry.addCommand(new SetCommand(gameManager));
+        creeperCommandRegistry.addCommand(new DelCommand(gameManager));
     }
 }
diff --git a/src/main/java/com/comandante/creeper/command/DelCommand.java b/src/main/java/com/comandante/creeper/command/DelCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..6842ac7d2e0d11618cceaf5c112d8c688661d581
--- /dev/null
+++ b/src/main/java/com/comandante/creeper/command/DelCommand.java
@@ -0,0 +1,57 @@
+package com.comandante.creeper.command;
+
+
+import com.comandante.creeper.managers.GameManager;
+import com.comandante.creeper.player.PlayerSettings;
+import com.google.api.client.util.Lists;
+import com.google.common.base.Joiner;
+import org.jboss.netty.channel.ChannelHandlerContext;
+import org.jboss.netty.channel.MessageEvent;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+public class DelCommand extends Command {
+    final static List<String> validTriggers = Arrays.asList("del");
+    final static String description = "Delete a user preference";
+    final static String correctUsage = "del || del auto_map";
+
+    public DelCommand(GameManager gameManager) {
+        super(gameManager, validTriggers, description, correctUsage);
+    }
+
+    @Override
+    public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
+        configure(e);
+        try {
+           if (originalMessageParts.size() <= 1) {
+                write(returnAllSettings());
+                return;
+            }
+            originalMessageParts.remove(0);
+            String desiredSettingName = originalMessageParts.get(0);
+            player.removePlayerSetting(desiredSettingName);
+            write("Setting removed.\r\n");
+        } finally {
+            super.messageReceived(ctx, e);
+        }
+    }
+
+    private String returnAllSettings() {
+        Map<String, String> playerSettings = player.getPlayerSettings();
+        List<String> settings = Lists.newArrayList();
+        for (Map.Entry<String, String> next : playerSettings.entrySet()) {
+            String key = next.getKey();
+            String value = next.getValue();
+            settings.add(key + " : " + value);
+        }
+        Collections.sort(settings);
+        StringBuilder sb = new StringBuilder();
+        for (String s: settings) {
+            sb.append(s).append("\r\n");
+        }
+        return sb.toString();
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/comandante/creeper/command/SetCommand.java b/src/main/java/com/comandante/creeper/command/SetCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..21a3ef52089f02863f8f25b08b7de499337627fe
--- /dev/null
+++ b/src/main/java/com/comandante/creeper/command/SetCommand.java
@@ -0,0 +1,79 @@
+package com.comandante.creeper.command;
+
+import com.comandante.creeper.Items.Item;
+import com.comandante.creeper.managers.GameManager;
+import com.comandante.creeper.player.PlayerSettings;
+import com.google.api.client.util.Lists;
+import com.google.common.base.Joiner;
+import org.jboss.netty.channel.ChannelHandlerContext;
+import org.jboss.netty.channel.MessageEvent;
+
+import java.util.*;
+
+
+public class SetCommand extends Command {
+    final static List<String> validTriggers = Arrays.asList("set");
+    final static String description = "Set a user preference";
+    final static String correctUsage = "set || set auto_map 5";
+
+    public SetCommand(GameManager gameManager) {
+        super(gameManager, validTriggers, description, correctUsage);
+    }
+
+    @Override
+    public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
+        configure(e);
+        try {
+            write("'set help' for full settings help.\r\n");
+            if (originalMessageParts.size() <= 1) {
+                write(returnAllSettings());
+                return;
+            }
+            if (originalMessageParts.size() > 1 && originalMessageParts.get(1).equalsIgnoreCase("help")) {
+                write(returnAllSettingsHelp());
+                return;
+            }
+            originalMessageParts.remove(0);
+            String desiredSettingName = originalMessageParts.get(0);
+            originalMessageParts.remove(0);
+            String desiredSettingValue = Joiner.on(" ").join(originalMessageParts);
+            boolean b = player.setPlayerSetting(desiredSettingName, desiredSettingValue);
+            if (b) {
+                write("Setting successfully set.\r\n");
+            } else {
+                write ("Unknown Setting.\r\n");
+            }
+        } finally {
+            super.messageReceived(ctx, e);
+        }
+    }
+
+    private String returnAllSettings() {
+        Map<String, String> playerSettings = player.getPlayerSettings();
+        List<String> settings = Lists.newArrayList();
+        for (Map.Entry<String, String> next : playerSettings.entrySet()) {
+            String key = next.getKey();
+            String value = next.getValue();
+            settings.add(key + " : " + value);
+        }
+        Collections.sort(settings);
+        StringBuilder sb = new StringBuilder();
+        for (String s: settings) {
+            sb.append(s).append("\r\n");
+        }
+        return sb.toString();
+    }
+
+    private String returnAllSettingsHelp() {
+        List<String> settings = Lists.newArrayList();
+        for (PlayerSettings playerSettings : PlayerSettings.values()) {
+            settings.add(playerSettings.getSettingName() + " - " + playerSettings.getSettingDescription());
+        }
+        Collections.sort(settings);
+        StringBuilder sb = new StringBuilder();
+        for (String s: settings) {
+            sb.append(s).append("\r\n");
+        }
+        return sb.toString();
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/comandante/creeper/managers/GameManager.java b/src/main/java/com/comandante/creeper/managers/GameManager.java
index 4c7f302136b0f27c3a6ef0280653f92a77fbde95..215f741d70c0e6410a7e49ef65a1f532551798ae 100755
--- a/src/main/java/com/comandante/creeper/managers/GameManager.java
+++ b/src/main/java/com/comandante/creeper/managers/GameManager.java
@@ -312,10 +312,11 @@ public class GameManager {
         sb.append(playerCurrentRoom.getRoomTitle());
         sb.append(RESET);
         sb.append("\r\n\r\n");
-        //java.lang.String wrap(java.lang.String str, int wrapLength, java.lang.String newLineStr, boolean wrapLongWords)
         sb.append(WordUtils.wrap(playerCurrentRoom.getRoomDescription(), 80, "\r\n", true)).append("\r\n").append("\r\n");
-        if (playerCurrentRoom.getMapData().isPresent()) {
-            sb.append(mapsManager.drawMap(playerCurrentRoom.getRoomId(), new Coords(5, 5))).append("\r\n");
+        String auto_map = player.getPlayerSetting("auto_map");
+        if (playerCurrentRoom.getMapData().isPresent() && auto_map != null) {
+            int i = Integer.parseInt(auto_map);
+            sb.append(mapsManager.drawMap(playerCurrentRoom.getRoomId(), new Coords(i, i))).append("\r\n");
         }
         sb.append(getExits(playerCurrentRoom, player)).append("\r\n");
 
diff --git a/src/main/java/com/comandante/creeper/merchant/NigelBartender.java b/src/main/java/com/comandante/creeper/merchant/NigelBartender.java
index 4347ee169b845a8001f0b1a28b3f792bfc6cecb9..5392754067936e22e158919011d6b647934c1785 100644
--- a/src/main/java/com/comandante/creeper/merchant/NigelBartender.java
+++ b/src/main/java/com/comandante/creeper/merchant/NigelBartender.java
@@ -14,7 +14,7 @@ import static com.comandante.creeper.server.Color.BOLD_ON;
 public class NigelBartender extends Merchant {
     private final static long phraseIntervalMs = 300000;
     private final static String NAME = "nigel the bartender";
-    private final static String welcomeMessage = " N I G E L 'S   B A R ";
+    private final static String welcomeMessage = "\r\n N I G E L 'S   B A R \r\n";
     private final static Set<String> validTriggers = new HashSet<String>(Arrays.asList(new String[]
                     {"nigel", "bartender", "barkeep", "Nigel", "NIGEL", NAME}
     ));
diff --git a/src/main/java/com/comandante/creeper/player/Player.java b/src/main/java/com/comandante/creeper/player/Player.java
index 608bfb17953d6b123421ed5cec3006f0ae095008..38b6960cef30f133228fdec4db0703ec53f211ea 100755
--- a/src/main/java/com/comandante/creeper/player/Player.java
+++ b/src/main/java/com/comandante/creeper/player/Player.java
@@ -797,6 +797,32 @@ public class Player extends CreeperEntity {
         }
     }
 
+    public boolean setPlayerSetting(String key, String value) {
+        boolean success;
+        synchronized (interner.intern(playerId)) {
+            PlayerMetadata playerMetadata = getPlayerMetadata();
+            success = playerMetadata.setSetting(key, value);
+            savePlayerMetadata(playerMetadata);
+        }
+        return success;
+    }
+
+    public String getPlayerSetting(String key) {
+        return getPlayerMetadata().getSetting(key);
+    }
+
+    public void removePlayerSetting(String key) {
+        synchronized (interner.intern(playerId)) {
+            PlayerMetadata playerMetadata = getPlayerMetadata();
+            playerMetadata.deleteSetting(key);
+            savePlayerMetadata(playerMetadata);
+        }
+    }
+
+    public Map<String, String> getPlayerSettings() {
+        return getPlayerMetadata().getPlayerSettings();
+    }
+
     public void removeActiveFight(Npc npc) {
         synchronized (interner.intern(playerId)) {
             Iterator<Map.Entry<Long, ActiveFight>> iterator = activeFights.entrySet().iterator();
diff --git a/src/main/java/com/comandante/creeper/player/PlayerMetadata.java b/src/main/java/com/comandante/creeper/player/PlayerMetadata.java
index 44279f751ac671000d6f2afad54f5a1e8e3cc083..f929c8c023d92f339ae31e176772f4e574e0dca6 100644
--- a/src/main/java/com/comandante/creeper/player/PlayerMetadata.java
+++ b/src/main/java/com/comandante/creeper/player/PlayerMetadata.java
@@ -3,13 +3,11 @@ package com.comandante.creeper.player;
 
 import com.comandante.creeper.stat.Stats;
 import com.google.api.client.util.Lists;
+import com.google.api.client.util.Maps;
 import com.google.common.collect.Sets;
 
 import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 public class PlayerMetadata implements Serializable {
 
@@ -25,6 +23,7 @@ public class PlayerMetadata implements Serializable {
     private String[] playerEquipment;
     private List<String> effects;
     private boolean isMarkedForDelete;
+    private Map<String, String> playerSettings;
 
     public PlayerMetadata(String playerName, String password, String playerId, Stats stats, int gold, Set<PlayerRole> playerRoleSet, String[] playerEquipment, int goldInBank) {
         this.playerName = playerName;
@@ -59,6 +58,9 @@ public class PlayerMetadata implements Serializable {
         if (playerMetadata.effects != null) {
             this.effects = Lists.newArrayList(playerMetadata.getEffects());
         }
+        if (playerMetadata.playerSettings != null) {
+            this.playerSettings = new HashMap<String, String>(playerMetadata.getPlayerSettings());
+        }
         this.isMarkedForDelete = new Boolean(playerMetadata.isMarkedForDelete);
     }
 
@@ -218,4 +220,38 @@ public class PlayerMetadata implements Serializable {
     protected void resetEffects(){
         this.effects = Lists.newArrayList();
     }
+
+    public boolean setSetting(String key, String value) {
+        if (playerSettings.size() >= 100) {
+            return false;
+        }
+        if (playerSettings == null) {
+            this.playerSettings = Maps.newHashMap();
+        }
+        PlayerSettings byKey = PlayerSettings.getByKey(key);
+        if (byKey == null) {
+            return false;
+        }
+        if (byKey.getType().equals(Integer.TYPE)) {
+            try {
+                int i = Integer.parseInt(value);
+            } catch (NumberFormatException e) {
+                return false;
+            }
+        }
+        playerSettings.put(key, value);
+        return true;
+    }
+
+    public String getSetting(String key) {
+        return playerSettings.get(key);
+    }
+
+    public Map<String, String> getPlayerSettings() {
+        return playerSettings;
+    }
+
+    public void deleteSetting(String key) {
+        playerSettings.remove(key);
+    }
 }
diff --git a/src/main/java/com/comandante/creeper/player/PlayerSettings.java b/src/main/java/com/comandante/creeper/player/PlayerSettings.java
new file mode 100644
index 0000000000000000000000000000000000000000..a99e44ecaf04b7f778c8e5c691658ce81d90371d
--- /dev/null
+++ b/src/main/java/com/comandante/creeper/player/PlayerSettings.java
@@ -0,0 +1,39 @@
+package com.comandante.creeper.player;
+
+import java.lang.reflect.Type;
+
+public enum PlayerSettings {
+    AUTO_MAP("auto_map", "Automatically draws the creeper map on the CurrentRoomLogic function.", Integer.TYPE);
+
+    private final String settingName;
+    private final String settingDescription;
+    private final Type type;
+
+    PlayerSettings(String settingName, String settingDescription, Type type) {
+        this.settingName = settingName;
+        this.settingDescription = settingDescription;
+        this.type = type;
+    }
+
+    public static PlayerSettings getByKey(String key) {
+        PlayerSettings[] values = values();
+        for (PlayerSettings playerSettings: values) {
+            if (playerSettings.settingName.equals(key)) {
+                return playerSettings;
+            }
+        }
+        return null;
+    }
+
+    public String getSettingName() {
+        return settingName;
+    }
+
+    public String getSettingDescription() {
+        return settingDescription;
+    }
+
+    public Type getType() {
+        return type;
+    }
+}