diff --git a/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java b/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
index 503bf30..7ee498a 100644
--- a/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
+++ b/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
@@ -367,17 +367,6 @@
         this.onosDeviceService = context.getServiceImpl(IOnosDeviceService.class);
 
         Map<String, String> configOptions = context.getConfigParams(this);
-        Long agingmsec = null;
-        try {
-            agingmsec = Long.parseLong(configOptions.get("agingmsec"));
-        } catch (NumberFormatException e) {
-            log.debug("ArpEntryTimeout related config options were not set. Use default.");
-        }
-
-        arpCache = new ArpCache();
-        if (agingmsec != null) {
-            arpCache.setArpEntryTimeoutConfig(agingmsec);
-        }
 
         try {
             arpCleaningTimerPeriodConfig = Long.parseLong(configOptions.get("cleanupmsec"));
@@ -391,6 +380,20 @@
 
     @Override
     public void startUp(FloodlightModuleContext context) {
+        Map<String, String> configOptions = context.getConfigParams(this);
+
+        Long agingmsec = null;
+        try {
+            agingmsec = Long.parseLong(configOptions.get("agingmsec"));
+        } catch (NumberFormatException e) {
+            log.debug("ArpEntryTimeout related config options were not set. Use default.");
+        }
+
+        arpCache = new ArpCache();
+        if (agingmsec != null) {
+            arpCache.setArpEntryTimeoutConfig(agingmsec);
+        }
+
         this.vlan = configService.getVlan();
         log.info("vlan set to {}", this.vlan);
 
