diff --git a/src/main/java/com/comandante/creeper/bot/BotCommandFactory.java b/src/main/java/com/comandante/creeper/bot/BotCommandFactory.java
index 4d7cc209527ab14eb78dcf545015d693acccdb3e..ef50a5862ffa807f9e0b63a4f8e95d2cd6279d04 100644
--- a/src/main/java/com/comandante/creeper/bot/BotCommandFactory.java
+++ b/src/main/java/com/comandante/creeper/bot/BotCommandFactory.java
@@ -16,6 +16,7 @@ public class BotCommandFactory {
         addCommand(new DictionaryBotCommand(botCommandManager));
         addCommand(new ImdbBotCommand(botCommandManager));
         addCommand(new ForecastCommand(botCommandManager));
+        addCommand(new RandomRoomDescriptionCommand(botCommandManager));
     }
 
     public BotCommand getCommand(String originalFullCmd) {
diff --git a/src/main/java/com/comandante/creeper/bot/commands/RandomRoomDescriptionCommand.java b/src/main/java/com/comandante/creeper/bot/commands/RandomRoomDescriptionCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..0524fd320ecd5947cf4aafd1e03975b1b8846fc3
--- /dev/null
+++ b/src/main/java/com/comandante/creeper/bot/commands/RandomRoomDescriptionCommand.java
@@ -0,0 +1,33 @@
+package com.comandante.creeper.bot.commands;
+
+
+import com.comandante.creeper.bot.BotCommandManager;
+import com.comandante.creeper.world.Room;
+import com.google.common.collect.Sets;
+
+import java.util.*;
+
+public class RandomRoomDescriptionCommand extends BotCommand {
+
+    static Set<String> triggers = Sets.newHashSet("blazecraft");
+    static String helpUsage = "blazecraft";
+    static String helpDescription = "A random room description, courtesy of BLAZECRAFT";
+    private final Random random = new Random();
+
+    public RandomRoomDescriptionCommand(BotCommandManager botCommandManager) {
+        super(botCommandManager, triggers, helpUsage, helpDescription);
+    }
+
+    @Override
+    public List<String> process() {
+        Map<Integer, Room> getrooms = botCommandManager.getGameManager().getRoomManager().getrooms();
+        int size = getrooms.size();
+        int randomRoomNumber = randInt(1, size);
+        return Collections.singletonList(getrooms.get(randomRoomNumber).getRoomDescription());
+    }
+
+    private int randInt(int min, int max) {
+        int randomNum = random.nextInt((max - min) + 1) + min;
+        return randomNum;
+    }
+}
diff --git a/src/main/java/com/comandante/creeper/command/admin/TeleportCommand.java b/src/main/java/com/comandante/creeper/command/admin/TeleportCommand.java
index 14d64d9c5d5514c5e6677e57815051de8de0e3b8..75be41b7f0e90f0a1d79232ac5b43ab0e667c013 100644
--- a/src/main/java/com/comandante/creeper/command/admin/TeleportCommand.java
+++ b/src/main/java/com/comandante/creeper/command/admin/TeleportCommand.java
@@ -66,7 +66,7 @@ public class TeleportCommand extends Command {
                     return;
                 }
             }
-            Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRooms();
+            Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRoomsIterator();
             while (rooms.hasNext()) {
                 Map.Entry<Integer, Room> next = rooms.next();
                 if (Integer.toString(next.getKey()).equals(desiredId)) {
diff --git a/src/main/java/com/comandante/creeper/entity/EntityManager.java b/src/main/java/com/comandante/creeper/entity/EntityManager.java
index 5c4cccddcab24b64b4b842cda823cedf20cc6289..2704cd133f5737c7a8c354de95be978f1764e47e 100644
--- a/src/main/java/com/comandante/creeper/entity/EntityManager.java
+++ b/src/main/java/com/comandante/creeper/entity/EntityManager.java
@@ -148,7 +148,7 @@ public class EntityManager {
             while (true) {
                 try {
                     final com.codahale.metrics.Timer.Context context = ticktime.time();
-                    Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRooms();
+                    Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRoomsIterator();
                     while (rooms.hasNext()) {
                         Map.Entry<Integer, Room> next = rooms.next();
                         mainTickExecutorService.submit(next.getValue());
diff --git a/src/main/java/com/comandante/creeper/managers/GameManager.java b/src/main/java/com/comandante/creeper/managers/GameManager.java
index ce01d8f30c48ae78f1533c73a1d5cd8e0d7d5ca2..24b6af54cc29bb2f5162bea7f840b9f5b8b2046f 100755
--- a/src/main/java/com/comandante/creeper/managers/GameManager.java
+++ b/src/main/java/com/comandante/creeper/managers/GameManager.java
@@ -182,7 +182,7 @@ public class GameManager {
 
     public Set<Player> getAllPlayers() {
         ImmutableSet.Builder<Player> builder = ImmutableSet.builder();
-        Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRooms();
+        Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRoomsIterator();
         while (rooms.hasNext()) {
             Map.Entry<Integer, Room> next = rooms.next();
             Room room = next.getValue();
@@ -631,7 +631,7 @@ public class GameManager {
 
     public synchronized void removeAllNpcs() {
         for (Npc npc : entityManager.getNpcs().values()) {
-            Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRooms();
+            Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRoomsIterator();
             while (rooms.hasNext()) {
                 Map.Entry<Integer, Room> next = rooms.next();
                 next.getValue().removePresentNpc(npc.getEntityId());
diff --git a/src/main/java/com/comandante/creeper/world/MapsManager.java b/src/main/java/com/comandante/creeper/world/MapsManager.java
index 5a4e94075b3d594902889a5d23ac0b3db1997209..3b381de5a388fc0cfe53730b5c24f2aca68f6c29 100644
--- a/src/main/java/com/comandante/creeper/world/MapsManager.java
+++ b/src/main/java/com/comandante/creeper/world/MapsManager.java
@@ -36,7 +36,7 @@ public class MapsManager {
         Timer.Context time = ticktime.time();
         int maxRows = creeperConfiguration.defaultMapSize;
         int maxColumns = creeperConfiguration.defaultMapSize;
-        Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRooms();
+        Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRoomsIterator();
         while (rooms.hasNext()) {
             Map.Entry<Integer, Room> next = rooms.next();
             Integer roomId = next.getValue().getRoomId();
diff --git a/src/main/java/com/comandante/creeper/world/RoomManager.java b/src/main/java/com/comandante/creeper/world/RoomManager.java
index 7c5c6806aac938d8205ac8fac7d5ff73d07fd9b7..c8fb67510feb508b7001e43975657811f6284c2c 100644
--- a/src/main/java/com/comandante/creeper/world/RoomManager.java
+++ b/src/main/java/com/comandante/creeper/world/RoomManager.java
@@ -47,7 +47,7 @@ public class RoomManager {
 
     public Optional<List<Integer>> getRoomsForTag(String tag) {
         List<Integer> matchedRooms = Lists.newArrayList();
-        Iterator<Map.Entry<Integer, Room>> rooms = getRooms();
+        Iterator<Map.Entry<Integer, Room>> rooms = getRoomsIterator();
         while (rooms.hasNext()) {
             Map.Entry<Integer, Room> next = rooms.next();
             if (next.getValue().getRoomTags().contains(tag)) {
@@ -74,13 +74,17 @@ public class RoomManager {
         return getRoom(roomId).getRoomTags();
     }
 
-    public Iterator<java.util.Map.Entry<Integer, Room>> getRooms() {
+    public Iterator<java.util.Map.Entry<Integer, Room>> getRoomsIterator() {
         return rooms.entrySet().iterator();
     }
 
+    public Map<Integer, Room> getrooms() {
+        return rooms;
+    }
+
     public Set<Room> getRoomsByFloorId(Integer floorId) {
         Set<Room> rooms = Sets.newHashSet();
-        Iterator<Map.Entry<Integer, Room>> rooms1 = getRooms();
+        Iterator<Map.Entry<Integer, Room>> rooms1 = getRoomsIterator();
         while (rooms1.hasNext()) {
             Map.Entry<Integer, Room> next = rooms1.next();
             if (next.getValue().getFloorId().equals(floorId)) {
@@ -91,7 +95,7 @@ public class RoomManager {
     }
 
     public Optional<Room> getPlayerCurrentRoom(String playerId) {
-        Iterator<Map.Entry<Integer, Room>> rooms = getRooms();
+        Iterator<Map.Entry<Integer, Room>> rooms = getRoomsIterator();
         while (rooms.hasNext()) {
             Map.Entry<Integer, Room> next = rooms.next();
             Room room = next.getValue();
@@ -118,7 +122,7 @@ public class RoomManager {
 
     public Set<Room> getRoomsByArea(Area area) {
         Set<Room> rooms = Sets.newHashSet();
-        Iterator<Map.Entry<Integer, Room>> rooms1 = getRooms();
+        Iterator<Map.Entry<Integer, Room>> rooms1 = getRoomsIterator();
         while (rooms1.hasNext()) {
             Map.Entry<Integer, Room> next = rooms1.next();
             if (next.getValue().getAreas().contains(area)) {
@@ -129,7 +133,7 @@ public class RoomManager {
     }
 
     public boolean doesRoomIdExist(Integer roomId) {
-        Iterator<Map.Entry<Integer, Room>> rooms1 = getRooms();
+        Iterator<Map.Entry<Integer, Room>> rooms1 = getRoomsIterator();
         Set<Integer> roomIds = Sets.newHashSet();
         while (rooms1.hasNext()) {
             Map.Entry<Integer, Room> next = rooms1.next();
@@ -141,7 +145,7 @@ public class RoomManager {
     }
 
     public Room getRoomByItemId(String itemId) {
-        Iterator<Map.Entry<Integer, Room>> rooms = getRooms();
+        Iterator<Map.Entry<Integer, Room>> rooms = getRoomsIterator();
         while (rooms.hasNext()) {
             Map.Entry<Integer, Room> next = rooms.next();
             if (next.getValue().getItemIds().contains(itemId)) {