diff --git a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/FpcManager.java b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/FpcManager.java
index a5a456f..98aa2ad 100644
--- a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/FpcManager.java
+++ b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/FpcManager.java
@@ -24,6 +24,8 @@
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
 import org.onosproject.core.IdGenerator;
+import org.onosproject.fpcagent.protocols.DpnNgicCommunicator;
+import org.onosproject.fpcagent.protocols.DpnP4Communicator;
 import org.onosproject.fpcagent.providers.DpnDeviceListener;
 import org.onosproject.fpcagent.providers.DpnProviderService;
 import org.onosproject.fpcagent.util.ConfigHelper;
@@ -34,6 +36,7 @@
 import org.onosproject.fpcagent.workers.ZMQSBSubscriberManager;
 import org.onosproject.net.config.*;
 import org.onosproject.net.config.basics.SubjectFactories;
+import org.onosproject.net.flow.FlowRuleService;
 import org.onosproject.restconf.api.RestconfService;
 import org.onosproject.yang.model.ModelConverter;
 import org.onosproject.yang.model.RpcRegistry;
@@ -89,6 +92,9 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     private RestconfService restconfService;
 
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    private FlowRuleService flowRuleService;
+
     /* Variables */
     private IdGenerator notificationIds;
     private FpcConfig fpcConfig;
@@ -107,7 +113,7 @@
 
     @Activate
     protected void activate() {
-        coreService.registerApplication(FPC_APP_ID);
+        ApplicationId applicationId = coreService.registerApplication(FPC_APP_ID);
         configService.addListener(configListener);
         registry.registerConfigFactory(fpcConfigConfigFactory);
         dynamicConfigService.addListener(dynListener);
@@ -117,6 +123,8 @@
         JettyServer.createInstance().open();
         ParseStream.createInstance().open();
         NBEventWorkerManager.createInstance(20, restconfService).open();
+        DpnNgicCommunicator.createInstance();
+        DpnP4Communicator.createInstance(applicationId, flowRuleService);
 
         log.info("FPC Service Started");
     }
diff --git a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/FpcRpcManager.java b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/FpcRpcManager.java
index cef7592..13062d9 100644
--- a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/FpcRpcManager.java
+++ b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/FpcRpcManager.java
@@ -223,9 +223,9 @@
                 Class<? extends FpcDpnControlProtocol> controlProtocol = optionalDpn.get().controlProtocol();
                 // Check if the DPN supports NGIC or P4 protocol
                 if (controlProtocol.isAssignableFrom(ZmqDpnControlProtocol.class)) {
-                    dpnCommunicationService = new DpnNgicCommunicator();
+                    dpnCommunicationService = DpnNgicCommunicator.getInstance();
                 } else if (controlProtocol.isAssignableFrom(P4DpnControlProtocol.class)) {
-                    dpnCommunicationService = new DpnP4Communicator();
+                    dpnCommunicationService = DpnP4Communicator.getInstance();
                 } else {
                     throw new RuntimeException("Control Protocol is not supported.");
                 }
@@ -387,9 +387,9 @@
                 Class<? extends FpcDpnControlProtocol> controlProtocol = optionalDpn.get().controlProtocol();
                 // Check if the DPN supports NGIC or P4 protocol
                 if (controlProtocol.isAssignableFrom(ZmqDpnControlProtocol.class)) {
-                    dpnCommunicationService = new DpnNgicCommunicator();
+                    dpnCommunicationService = DpnNgicCommunicator.getInstance();
                 } else if (controlProtocol.isAssignableFrom(P4DpnControlProtocol.class)) {
-                    dpnCommunicationService = new DpnP4Communicator();
+                    dpnCommunicationService = DpnP4Communicator.getInstance();
                 } else {
                     throw new RuntimeException("Control Protocol is not supported.");
                 }
@@ -541,9 +541,9 @@
                 final DpnCommunicationService dpnCommunicationService;
                 Class<? extends FpcDpnControlProtocol> controlProtocol = optionalDpn.get().controlProtocol();
                 if (controlProtocol.isAssignableFrom(ZmqDpnControlProtocol.class)) {
-                    dpnCommunicationService = new DpnNgicCommunicator();
+                    dpnCommunicationService = DpnNgicCommunicator.getInstance();
                 } else if (controlProtocol.isAssignableFrom(P4DpnControlProtocol.class)) {
-                    dpnCommunicationService = new DpnP4Communicator();
+                    dpnCommunicationService = DpnP4Communicator.getInstance();
                 } else {
                     throw new RuntimeException("Control Protocol is not supported.");
                 }
diff --git a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/protocols/DpnNgicCommunicator.java b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/protocols/DpnNgicCommunicator.java
index 0332312..6491882 100644
--- a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/protocols/DpnNgicCommunicator.java
+++ b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/protocols/DpnNgicCommunicator.java
@@ -43,6 +43,22 @@
 public class DpnNgicCommunicator extends ZmqDpnControlProtocol implements DpnCommunicationService {
     protected static final Logger log = LoggerFactory.getLogger(DpnNgicCommunicator.class);
 
+    private static DpnNgicCommunicator _instance;
+
+    private DpnNgicCommunicator() {
+    }
+
+    public static DpnNgicCommunicator createInstance() {
+        if(_instance == null) {
+            _instance = new DpnNgicCommunicator();
+        }
+        return _instance;
+    }
+
+    public static DpnNgicCommunicator getInstance() {
+        return _instance;
+    }
+
     /**
      * Broadcasts the GOODBYE message to all the DPNs
      */
@@ -210,7 +226,7 @@
                 .put(toUint32(client_id))
                 .put(toUint32(op_id.longValue()));
 
-        log.debug("create_session: {}", bb.array());
+        log.info("create_session: {}", bb.array());
         ZMQSBPublisherManager.getInstance().send(bb);
     }
 
@@ -249,7 +265,7 @@
                 .put(toUint32(client_id))
                 .put(toUint32(op_id.longValue()));
 
-        log.debug("modify_bearer: {}", bb.array());
+        log.info("modify_bearer: {}", bb.array());
         ZMQSBPublisherManager.getInstance().send(bb);
     }
 
@@ -279,7 +295,7 @@
                 .put(toUint32(client_id))
                 .put(toUint32(op_id.longValue()));
 
-        log.debug("delete_session: {}", bb.array());
+        log.info("delete_session: {}", bb.array());
         ZMQSBPublisherManager.getInstance().send(bb);
     }
 
diff --git a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/protocols/DpnP4Communicator.java b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/protocols/DpnP4Communicator.java
index 7228c6c..6a26e60 100644
--- a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/protocols/DpnP4Communicator.java
+++ b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/protocols/DpnP4Communicator.java
@@ -93,20 +93,35 @@
     // FIXME: should use a cache with timeout
     private static Map<Long, Lock> SESS_LOCKS = Maps.newConcurrentMap();
 
+    private static DpnP4Communicator _instance;
+
     private ApplicationId appId;
     private DeviceId deviceId;
     private FlowRuleService flowRuleService;
-    private boolean initialized = false;
 
-    public void init(ApplicationId appId, DeviceId deviceId, FlowRuleService flowRuleService) {
+    private DpnP4Communicator(ApplicationId appId, FlowRuleService flowRuleService) {
         this.appId = checkNotNull(appId);
-        this.deviceId = checkNotNull(deviceId);
         this.flowRuleService = checkNotNull(flowRuleService);
-        this.initialized = true;
+        this.deviceId = null;
+    }
+
+    public static DpnP4Communicator createInstance(ApplicationId appId, FlowRuleService flowRuleService) {
+        if (_instance == null) {
+            _instance = new DpnP4Communicator(appId, flowRuleService);
+        }
+        return _instance;
+    }
+
+    public static DpnP4Communicator getInstance() {
+        return _instance;
+    }
+
+    public void setDeviceId(DeviceId deviceId) {
+        this.deviceId = checkNotNull(deviceId);
     }
 
     private boolean isNotInit() {
-        if (!this.initialized) {
+        if (deviceId == null) {
             log.error("Not initialized. Cannot perform operations.");
             return true;
         } else {
