diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
index 78f8969fb59ac8f6a40a2f240eba35276e756293..365777081350d3f41d64c87b277d2df97b3e8e81 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
@@ -1393,11 +1393,12 @@ public class Controller
      * new components
      */
     protected void init() {
+        initStorageSource();
         topology = new TopologyImpl();
         deviceManager = new DeviceManagerImpl();
-        storageSource = new MemoryStorageSource();
         counterStore = new CounterStore();
         pktinProcTime = new PktinProcessingTime();
+        routingEngine = new RoutingImpl();
         
         topology.setFloodlightProvider(this);
         topology.setStorageSource(storageSource);
@@ -1408,7 +1409,6 @@ public class Controller
         
         initMessageFilterManager();
         initStaticFlowPusher();
-        routingEngine = new RoutingImpl();
         initForwarding();
         
         // call this explicitly because it does setup
@@ -1430,6 +1430,10 @@ public class Controller
         JacksonCustomConverter.replaceConverter();
     }
     
+    protected void initStorageSource() {
+        storageSource = new MemoryStorageSource();
+    }
+    
     protected void initMessageFilterManager() {
         messageFilterManager = new OFMessageFilterManager();
         messageFilterManager.init(this);