diff --git a/src/main/java/com/comandante/creeper/command/MovementCommand.java b/src/main/java/com/comandante/creeper/command/MovementCommand.java
index b05384736f87a97c3918d610a8e1fc74e8c06012..69b4f74fad8c3b44252ff898dc98724e3ca60c70 100644
--- a/src/main/java/com/comandante/creeper/command/MovementCommand.java
+++ b/src/main/java/com/comandante/creeper/command/MovementCommand.java
@@ -12,7 +12,6 @@ import org.jboss.netty.channel.ChannelHandlerContext;
 import org.jboss.netty.channel.MessageEvent;
 
 import java.util.Arrays;
-import java.util.Iterator;
 import java.util.List;
 
 public class MovementCommand extends Command {
diff --git a/src/main/java/com/comandante/creeper/command/admin/BuildCommand.java b/src/main/java/com/comandante/creeper/command/admin/BuildCommand.java
index 5e58bb83ba9e79c631a67d72fe27ca7da838dec4..2975c85c9b3829eaf927992b9381d328b1dc4929 100644
--- a/src/main/java/com/comandante/creeper/command/admin/BuildCommand.java
+++ b/src/main/java/com/comandante/creeper/command/admin/BuildCommand.java
@@ -5,17 +5,13 @@ import com.comandante.creeper.managers.GameManager;
 import com.comandante.creeper.player.PlayerMovement;
 import com.comandante.creeper.player.PlayerRole;
 import com.comandante.creeper.world.*;
-import com.google.common.base.Optional;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 import org.jboss.netty.channel.ChannelHandlerContext;
 import org.jboss.netty.channel.MessageEvent;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
-import java.util.UUID;
+import java.util.*;
 
 public class BuildCommand extends Command {
 
@@ -76,7 +72,7 @@ public class BuildCommand extends Command {
                         BasicRoom basicRoom = newBasic()
                                 .setRoomId(newRoomId)
                                 .setFloorId(newFloorId)
-                                .setDownId(java.util.Optional.of(currentRoom.getRoomId()))
+                                .setDownId(Optional.of(currentRoom.getRoomId()))
                                 .createBasicRoom();
                         currentRoom.setUpId(Optional.of(newRoomId));
                         entityManager.addEntity(basicRoom);
@@ -99,7 +95,7 @@ public class BuildCommand extends Command {
                         BasicRoom basicRoom = newBasic()
                                 .setRoomId(newRoomId)
                                 .setFloorId(newFloorId)
-                                .setUpId(java.util.Optional.of(currentRoom.getRoomId()))
+                                .setUpId(Optional.of(currentRoom.getRoomId()))
                                 .createBasicRoom();
                         currentRoom.setDownId(Optional.of(newRoomId));
                         entityManager.addEntity(basicRoom);
diff --git a/src/main/java/com/comandante/creeper/managers/GameManager.java b/src/main/java/com/comandante/creeper/managers/GameManager.java
index 374a2ba61000f8cd440d39cf538a5e532dd69c35..c62a9f0582547d0404f86924cc4c4284b9b1e1fc 100755
--- a/src/main/java/com/comandante/creeper/managers/GameManager.java
+++ b/src/main/java/com/comandante/creeper/managers/GameManager.java
@@ -13,7 +13,10 @@ import com.comandante.creeper.merchant.Merchant;
 import com.comandante.creeper.npc.Npc;
 import com.comandante.creeper.npc.NpcMover;
 import com.comandante.creeper.player.*;
-import com.comandante.creeper.server.*;
+import com.comandante.creeper.server.ChannelCommunicationUtils;
+import com.comandante.creeper.server.Color;
+import com.comandante.creeper.server.GossipCache;
+import com.comandante.creeper.server.MultiLineInputManager;
 import com.comandante.creeper.spawner.NpcSpawner;
 import com.comandante.creeper.spells.Effect;
 import com.comandante.creeper.spells.EffectsManager;
@@ -427,7 +430,7 @@ public class GameManager {
     }
 
     public String renderEffectsString(List<Effect> effects) {
-        org.nocrala.tools.texttablefmt.Table t = new org.nocrala.tools.texttablefmt.Table(2, BorderStyle.CLASSIC_COMPATIBLE,
+        Table t = new Table(2, BorderStyle.CLASSIC_COMPATIBLE,
                 ShownBorders.NONE);
 
         t.setColumnWidth(0, 16, 20);
@@ -444,7 +447,7 @@ public class GameManager {
     }
 
     public String renderCoolDownString(Set<CoolDown> coolDowns) {
-        org.nocrala.tools.texttablefmt.Table t = new org.nocrala.tools.texttablefmt.Table(2, BorderStyle.CLASSIC_COMPATIBLE,
+        Table t = new Table(2, BorderStyle.CLASSIC_COMPATIBLE,
                 ShownBorders.NONE);
 
         t.setColumnWidth(0, 16, 20);
diff --git a/src/main/java/com/comandante/creeper/npc/NpcMover.java b/src/main/java/com/comandante/creeper/npc/NpcMover.java
index 8619ecbd68a0894f8cd7fef73e1bfe2c42ad8ee6..0032bafe00a4769b1dd5b9424c358bd3304d8c00 100644
--- a/src/main/java/com/comandante/creeper/npc/NpcMover.java
+++ b/src/main/java/com/comandante/creeper/npc/NpcMover.java
@@ -120,7 +120,7 @@ public class NpcMover {
     }
 
     public Set<Integer> getPossibleExits(Room room) {
-        List<Optional<Integer>> opts = Lists.newArrayList();
+        List<java.util.Optional<Integer>> opts = Lists.newArrayList();
         opts.add(room.getDownId());
         opts.add(room.getUpId());
         opts.add(room.getNorthId());
@@ -129,7 +129,7 @@ public class NpcMover {
         opts.add(room.getWestId());
 
         Set<Integer> exits = Sets.newHashSet();
-        for (Optional<Integer> opt : opts) {
+        for (java.util.Optional<Integer> opt : opts) {
             if (opt.isPresent()) {
                 exits.add(opt.get());
             }
diff --git a/src/main/java/com/comandante/creeper/world/BasicRoom.java b/src/main/java/com/comandante/creeper/world/BasicRoom.java
index c51ad18eef6a743f2ace303c08b6f25727347af1..16136730787928bba43ac69efcabf902c5273c7c 100644
--- a/src/main/java/com/comandante/creeper/world/BasicRoom.java
+++ b/src/main/java/com/comandante/creeper/world/BasicRoom.java
@@ -1,10 +1,10 @@
 package com.comandante.creeper.world;
 
 import com.comandante.creeper.managers.GameManager;
-import com.google.common.base.Optional;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 
 public class BasicRoom extends Room {
diff --git a/src/main/java/com/comandante/creeper/world/MapsManager.java b/src/main/java/com/comandante/creeper/world/MapsManager.java
index 3b381de5a388fc0cfe53730b5c24f2aca68f6c29..74adcf72c8d82cffe543210dcd737a1254bd6776 100644
--- a/src/main/java/com/comandante/creeper/world/MapsManager.java
+++ b/src/main/java/com/comandante/creeper/world/MapsManager.java
@@ -24,7 +24,7 @@ public class MapsManager {
     private final CreeperConfiguration creeperConfiguration;
     private final ExecutorService mapGeneratorService = Executors.newFixedThreadPool(1);
     private static final Logger log = Logger.getLogger(GameManager.class);
-    private final com.codahale.metrics.Timer ticktime = Main.metrics.timer(name(MapsManager.class, "generate_all_maps_time"));
+    private final Timer ticktime = Main.metrics.timer(name(MapsManager.class, "generate_all_maps_time"));
 
     public MapsManager(CreeperConfiguration creeperConfiguration, RoomManager roomManager) {
         this.roomManager = roomManager;
diff --git a/src/main/java/com/comandante/creeper/world/Room.java b/src/main/java/com/comandante/creeper/world/Room.java
index 0a65d6f031b6bef57489b4713f6bb8f6a918922c..ad8b25af7ab6d295d48e2286f38eb31d9c97471f 100644
--- a/src/main/java/com/comandante/creeper/world/Room.java
+++ b/src/main/java/com/comandante/creeper/world/Room.java
@@ -12,8 +12,6 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 
-import java.lang.reflect.GenericArrayType;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -32,12 +30,12 @@ public abstract class Room extends CreeperEntity {
 
     private String roomTitle;
     private final Integer floorId;
-    private Optional<Integer> northId;
-    private Optional<Integer> westId;
-    private Optional<Integer> eastId;
-    private Optional<Integer> southId;
-    private Optional<Integer> downId;
-    private Optional<Integer> upId;
+    private java.util.Optional<Integer> northId;
+    private java.util.Optional<Integer> westId;
+    private java.util.Optional<Integer> eastId;
+    private java.util.Optional<Integer> southId;
+    private java.util.Optional<Integer> downId;
+    private java.util.Optional<Integer> upId;
     private List<RemoteExit> enterExits = Lists.newArrayList();
     private String roomDescription;
     private final Set<String> presentPlayerIds = Sets.<String>newConcurrentHashSet();
@@ -55,12 +53,12 @@ public abstract class Room extends CreeperEntity {
     public Room(Integer roomId,
                 String roomTitle,
                 Integer floorId,
-                Optional<Integer> northId,
-                Optional<Integer> southId,
-                Optional<Integer> eastId,
-                Optional<Integer> westId,
-                Optional<Integer> upId,
-                Optional<Integer> downId,
+                java.util.Optional<Integer> northId,
+                java.util.Optional<Integer> southId,
+                java.util.Optional<Integer> eastId,
+                java.util.Optional<Integer> westId,
+                java.util.Optional<Integer> upId,
+                java.util.Optional<Integer> downId,
                 List<RemoteExit> enterExits,
                 String roomDescription, Set<String> roomTags,
                 Set<Area> areas,
@@ -103,27 +101,27 @@ public abstract class Room extends CreeperEntity {
         return roomTags;
     }
 
-    public void setNorthId(Optional<Integer> northId) {
+    public void setNorthId(java.util.Optional<Integer> northId) {
         this.northId = northId;
     }
 
-    public void setWestId(Optional<Integer> westId) {
+    public void setWestId(java.util.Optional<Integer> westId) {
         this.westId = westId;
     }
 
-    public void setEastId(Optional<Integer> eastId) {
+    public void setEastId(java.util.Optional<Integer> eastId) {
         this.eastId = eastId;
     }
 
-    public void setSouthId(Optional<Integer> southId) {
+    public void setSouthId(java.util.Optional<Integer> southId) {
         this.southId = southId;
     }
 
-    public void setDownId(Optional<Integer> downId) {
+    public void setDownId(java.util.Optional<Integer> downId) {
         this.downId = downId;
     }
 
-    public void setUpId(Optional<Integer> upId) {
+    public void setUpId(java.util.Optional<Integer> upId) {
         this.upId = upId;
     }
 
@@ -179,7 +177,7 @@ public abstract class Room extends CreeperEntity {
         return npcIds;
     }
 
-    protected java.util.Set<String> getPresentPlayerIds() {
+    protected Set<String> getPresentPlayerIds() {
         // terrible null pointers will result if you call this shit directly.
         // People sign off and cause problems
         return presentPlayerIds;
@@ -201,27 +199,27 @@ public abstract class Room extends CreeperEntity {
         return roomId;
     }
 
-    public Optional<Integer> getNorthId() {
+    public java.util.Optional<Integer> getNorthId() {
         return northId;
     }
 
-    public Optional<Integer> getWestId() {
+    public java.util.Optional<Integer> getWestId() {
         return westId;
     }
 
-    public Optional<Integer> getEastId() {
+    public java.util.Optional<Integer> getEastId() {
         return eastId;
     }
 
-    public Optional<Integer> getSouthId() {
+    public java.util.Optional<Integer> getSouthId() {
         return southId;
     }
 
-    public Optional<Integer> getUpId() {
+    public java.util.Optional<Integer> getUpId() {
         return upId;
     }
 
-    public Optional<Integer> getDownId() {
+    public java.util.Optional<Integer> getDownId() {
         return downId;
     }
 
diff --git a/src/main/java/com/comandante/creeper/world/WorldExporter.java b/src/main/java/com/comandante/creeper/world/WorldExporter.java
index 0205f2f3b7a9a648de793bf6cc6b3014752d8077..3859448085988222721b60181e4445cd851e37da 100644
--- a/src/main/java/com/comandante/creeper/world/WorldExporter.java
+++ b/src/main/java/com/comandante/creeper/world/WorldExporter.java
@@ -3,8 +3,6 @@ package com.comandante.creeper.world;
 import com.comandante.creeper.entity.EntityManager;
 import com.comandante.creeper.managers.GameManager;
 import com.comandante.creeper.managers.SentryManager;
-import com.google.common.base.Function;
-import com.google.common.collect.Iterators;
 import com.google.common.collect.Sets;
 import com.google.common.io.Files;
 import com.google.gson.GsonBuilder;
@@ -14,6 +12,7 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.nio.charset.Charset;
 import java.util.*;
+import java.util.function.Function;
 
 public class WorldExporter {
 
@@ -58,11 +57,10 @@ public class WorldExporter {
         floorModel.setRawMatrixCsv(mapMatrix.getCsv());
         floorModel.setRoomModels((new HashSet<RoomModel>()));
         floorModel.setName(floorManager.getName(floorId));
-        Iterator<RoomModel> roomModels = Iterators.transform(rooms.iterator(), buildRoomModelsFromRooms());
-        while (roomModels.hasNext()) {
-            RoomModel next = roomModels.next();
-            floorModel.getRoomModels().add(next);
-        }
+        rooms.stream()
+                .map(buildRoomModelsFromRooms())
+                .forEach(roomModel -> floorModel.getRoomModels()
+                        .add(roomModel));
         return floorModel;
     }
 
@@ -178,20 +176,15 @@ public class WorldExporter {
             mapsManager.addFloorMatrix(floorModel.getId(), matrixFromCsv);
             return;
         }
-        Iterator<BasicRoom> transform = Iterators.transform(floorModel.getRoomModels().iterator(), getBasicRoom(matrixFromCsv));
-        while (transform.hasNext()) {
-            BasicRoom next = transform.next();
-            entityManager.addEntity(next);
-        }
+        floorModel.getRoomModels().stream().map(getBasicRoom(matrixFromCsv)).forEach(entityManager::addEntity);
         floorManager.addFloor(floorModel.getId(), floorModel.getName());
         mapsManager.addFloorMatrix(floorModel.getId(), matrixFromCsv);
     }
 
     public void readWorldFromDisk() throws FileNotFoundException {
         WorldModel worldModel = new GsonBuilder().create().fromJson(Files.newReader(new File(("world/world.json")), Charset.defaultCharset()), WorldModel.class);
-        for (FloorModel next : worldModel.getFloorModelList()) {
-            buildFloor(next);
-        }
+        worldModel.getFloorModelList()
+                .forEach(this::buildFloor);
     }
 
     public void buildTestworld() {