diff --git a/apps/routing/src/main/java/org/onosproject/routing/config/impl/RoutingConfigurationImpl.java b/apps/routing/src/main/java/org/onosproject/routing/config/impl/RoutingConfigurationImpl.java
index 19c3f70..2017845 100644
--- a/apps/routing/src/main/java/org/onosproject/routing/config/impl/RoutingConfigurationImpl.java
+++ b/apps/routing/src/main/java/org/onosproject/routing/config/impl/RoutingConfigurationImpl.java
@@ -41,6 +41,7 @@
 import org.onosproject.routing.config.BgpConfig;
 import org.onosproject.routing.config.BgpPeer;
 import org.onosproject.routing.config.BgpSpeaker;
+import org.onosproject.routing.config.RouterConfig;
 import org.onosproject.routing.config.Interface;
 import org.onosproject.routing.config.LocalIpPrefixEntry;
 import org.onosproject.routing.config.RoutingConfigurationService;
@@ -100,24 +101,36 @@
 
     private MacAddress virtualGatewayMacAddress;
 
-    private ConfigFactory configFactory =
-            new ConfigFactory(SubjectFactories.APP_SUBJECT_FACTORY, BgpConfig.class, "bgp") {
+    private ConfigFactory<ApplicationId, BgpConfig> bgpConfigFactory =
+            new ConfigFactory<ApplicationId, BgpConfig>(
+                    SubjectFactories.APP_SUBJECT_FACTORY, BgpConfig.class, "bgp") {
         @Override
         public BgpConfig createConfig() {
             return new BgpConfig();
         }
     };
 
+    private ConfigFactory<ApplicationId, RouterConfig> routerConfigFactory =
+            new ConfigFactory<ApplicationId, RouterConfig>(
+                    SubjectFactories.APP_SUBJECT_FACTORY, RouterConfig.class, "router") {
+                @Override
+                public RouterConfig createConfig() {
+                    return new RouterConfig();
+                }
+            };
+
     @Activate
     public void activate() {
-        registry.registerConfigFactory(configFactory);
+        registry.registerConfigFactory(bgpConfigFactory);
+        registry.registerConfigFactory(routerConfigFactory);
         readConfiguration();
         log.info("Routing configuration service started");
     }
 
     @Deactivate
     public void deactivate() {
-        registry.unregisterConfigFactory(configFactory);
+        registry.unregisterConfigFactory(bgpConfigFactory);
+        registry.registerConfigFactory(routerConfigFactory);
         log.info("Routing configuration service stopped");
     }
 
