diff --git a/src/main/java/com/comandante/creeper/Main.java b/src/main/java/com/comandante/creeper/Main.java
index 75bf9dea467e200002b4362c20ac9b0051665fbf..f7ad94ebe9e98f181346d8f877aee721a849a9ac 100644
--- a/src/main/java/com/comandante/creeper/Main.java
+++ b/src/main/java/com/comandante/creeper/Main.java
@@ -99,7 +99,7 @@ public class Main {
         MapsManager mapsManager = new MapsManager(creeperConfiguration, roomManager);
         ChannelUtils channelUtils = new ChannelUtils(playerManager, roomManager);
         EntityManager entityManager = new EntityManager(mapDBCreeperStorage, roomManager, playerManager);
-        GameManager gameManager = new GameManager(creeperConfiguration, roomManager, playerManager, entityManager, mapsManager, channelUtils, HttpClients.createDefault());
+        GameManager gameManager = new GameManager(mapDBCreeperStorage, creeperConfiguration, roomManager, playerManager, entityManager, mapsManager, channelUtils, HttpClients.createDefault());
 
         startUpMessage("Reading world from disk.");
         WorldStorage worldExporter = new WorldStorage(roomManager, mapsManager, gameManager.getFloorManager(), entityManager, gameManager);
diff --git a/src/main/java/com/comandante/creeper/command/commands/admin/RestartCommand.java b/src/main/java/com/comandante/creeper/command/commands/admin/RestartCommand.java
index 3d7bc959c8ff679b0aec27725f5ff7bae1f9db36..6743b3d0d123ea5fa647087166e84f2b393f05da 100644
--- a/src/main/java/com/comandante/creeper/command/commands/admin/RestartCommand.java
+++ b/src/main/java/com/comandante/creeper/command/commands/admin/RestartCommand.java
@@ -1,6 +1,5 @@
 package com.comandante.creeper.command.commands.admin;
 
-import com.comandante.creeper.Main;
 import com.comandante.creeper.command.commands.Command;
 import com.comandante.creeper.core_game.GameManager;
 import com.comandante.creeper.player.PlayerRole;
@@ -8,15 +7,10 @@ import com.google.common.collect.Sets;
 import org.jboss.netty.channel.ChannelHandlerContext;
 import org.jboss.netty.channel.MessageEvent;
 
-import java.io.File;
-import java.lang.management.ManagementFactory;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
 
-/**
- * Created by chrisk on 5/13/17.
- */
 public class RestartCommand extends Command {
 
 
@@ -33,17 +27,8 @@ public class RestartCommand extends Command {
     @Override
     public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
         execCommandThreadSafe(ctx, e, BounceIrcBotCommand.class, () -> {
-            StringBuilder cmd = new StringBuilder();
-            cmd.append(System.getProperty("java.home") + File.separator + "bin" + File.separator + "java ");
-            for (String jvmArg : ManagementFactory.getRuntimeMXBean().getInputArguments()) {
-                cmd.append(jvmArg + " ");
-            }
-            cmd.append("-cp ").append(ManagementFactory.getRuntimeMXBean().getClassPath()).append(" ");
-            cmd.append(Main.class.getName()).append(" ");
-//            for (String arg : args) {
-//                cmd.append(arg).append(" ");
-//            }
-            Runtime.getRuntime().exec(cmd.toString() + " server.config");
+            gameManager.getMapDBCreeperStorage().stopAsync();
+            gameManager.getMapDBCreeperStorage().awaitTerminated();
             System.exit(0);
         });
     }
diff --git a/src/main/java/com/comandante/creeper/core_game/GameManager.java b/src/main/java/com/comandante/creeper/core_game/GameManager.java
index 6fb4ea6bb4c6f1e300f468ecd356f45d161309ab..0e3c3b34d0b9070df1ec17a287d69a1c4c8da1a2 100644
--- a/src/main/java/com/comandante/creeper/core_game/GameManager.java
+++ b/src/main/java/com/comandante/creeper/core_game/GameManager.java
@@ -26,10 +26,7 @@ import com.comandante.creeper.stats.Levels;
 import com.comandante.creeper.stats.Stats;
 import com.comandante.creeper.stats.StatsBuilder;
 import com.comandante.creeper.stats.modifier.StatsModifierFactory;
-import com.comandante.creeper.storage.FilebasedJsonStorage;
-import com.comandante.creeper.storage.ItemStorage;
-import com.comandante.creeper.storage.MerchantStorage;
-import com.comandante.creeper.storage.NpcStorage;
+import com.comandante.creeper.storage.*;
 import com.comandante.creeper.world.FloorManager;
 import com.comandante.creeper.world.MapsManager;
 import com.comandante.creeper.world.RoomManager;
@@ -92,6 +89,7 @@ public class GameManager {
     private final HttpClient httpclient;
     private final Gson gson;
     private final FilebasedJsonStorage filebasedJsonStorage;
+    private final MapDBCreeperStorage mapDBCreeperStorage;
 
     public MerchantStorage getMerchantStorage() {
         return merchantStorage;
@@ -100,7 +98,8 @@ public class GameManager {
     private final MerchantStorage merchantStorage;
 
 
-    public GameManager(CreeperConfiguration creeperConfiguration, RoomManager roomManager, PlayerManager playerManager, EntityManager entityManager, MapsManager mapsManager, ChannelCommunicationUtils channelUtils, HttpClient httpClient) {
+    public GameManager(MapDBCreeperStorage mapDBCreeperStorage, CreeperConfiguration creeperConfiguration, RoomManager roomManager, PlayerManager playerManager, EntityManager entityManager, MapsManager mapsManager, ChannelCommunicationUtils channelUtils, HttpClient httpClient) {
+        this.mapDBCreeperStorage = mapDBCreeperStorage;
         this.roomManager = roomManager;
         this.playerManager = playerManager;
         this.entityManager = entityManager;
@@ -135,6 +134,10 @@ public class GameManager {
         this.httpclient = httpClient;
     }
 
+    public MapDBCreeperStorage getMapDBCreeperStorage() {
+        return mapDBCreeperStorage;
+    }
+
     public Gson getGson() {
         return gson;
     }
diff --git a/src/main/java/com/comandante/creeper/core_game/service/TimeTracker.java b/src/main/java/com/comandante/creeper/core_game/service/TimeTracker.java
index 66b9601c5ab3681e8752026e5079971b2cb4d8ea..95f4dc82de558c66dad76662597cbfda697ca8ae 100644
--- a/src/main/java/com/comandante/creeper/core_game/service/TimeTracker.java
+++ b/src/main/java/com/comandante/creeper/core_game/service/TimeTracker.java
@@ -23,11 +23,11 @@ public class TimeTracker extends CreeperEntity {
 
     @Override
     public void run() {
-        TimeOfDay timeOfDay = determineTimeOfDay();
-        if (timeOfDay != currentTimeOfDay) {
-            announceChange(timeOfDay);
-        }
-        currentTimeOfDay = timeOfDay;
+             TimeOfDay timeOfDay = determineTimeOfDay();
+             if (timeOfDay != currentTimeOfDay) {
+                 announceChange(timeOfDay);
+             }
+             currentTimeOfDay = timeOfDay;
     }
 
     private void announceChange(TimeOfDay timeOfDay) {
diff --git a/src/test/com/comandante/creeper/player/combat_simuation/NpcTestHarness.java b/src/test/com/comandante/creeper/player/combat_simuation/NpcTestHarness.java
index 4d0df8fa76c2bdc8bef229e14e4a3d39fcb5007f..ae2ec5ae805da2baf37eba7180e3f92718d1e7ff 100644
--- a/src/test/com/comandante/creeper/player/combat_simuation/NpcTestHarness.java
+++ b/src/test/com/comandante/creeper/player/combat_simuation/NpcTestHarness.java
@@ -307,7 +307,7 @@ public class NpcTestHarness {
         RoomManager roomManager = new RoomManager(playerManager);
         MapsManager mapsManager = new MapsManager(creeperConfiguration, roomManager);
         EntityManager entityManager = new EntityManager(mapDBCreeperStorage, roomManager, playerManager);
-        GameManager gameManager = new GameManager(creeperConfiguration, roomManager, playerManager, entityManager, mapsManager, channelUtils, HttpClients.createDefault());
+        GameManager gameManager = new GameManager(null, creeperConfiguration, roomManager, playerManager, entityManager, mapsManager, channelUtils, HttpClients.createDefault());
         WorldStorage worldExporter = new WorldStorage(roomManager, mapsManager, gameManager.getFloorManager(), entityManager, gameManager);
         worldExporter.buildTestworld();
         ConfigureCommands.configure(gameManager);