diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/event/AbstractVirtualListenerManager.java b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/event/AbstractVirtualListenerManager.java
index fe6b2f9..e87876c 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/event/AbstractVirtualListenerManager.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/event/AbstractVirtualListenerManager.java
@@ -15,28 +15,41 @@
  */
 package org.onosproject.incubator.net.virtual.event;
 
+import org.onlab.osgi.ServiceDirectory;
 import org.onosproject.event.Event;
 import org.onosproject.event.EventDeliveryService;
 import org.onosproject.event.EventListener;
 import org.onosproject.event.ListenerService;
 import org.onosproject.incubator.net.virtual.NetworkId;
+import org.onosproject.incubator.net.virtual.VirtualNetworkService;
+import org.onosproject.incubator.net.virtual.VnetService;
 
 /**
  * Basis for virtual event components which need to export listener mechanism.
  */
 public abstract class AbstractVirtualListenerManager
         <E extends Event, L extends EventListener<E>>
-    implements ListenerService<E, L> {
+    implements ListenerService<E, L>, VnetService {
+
+    private static final String NETWORK_NULL = "Network ID cannot be null";
 
     protected final NetworkId networkId;
+    protected final VirtualNetworkService manager;
+    protected final ServiceDirectory serviceDirectory;
 
     protected EventDeliveryService eventDispatcher;
 
     VirtualListenerRegistryManager listenerManager =
             VirtualListenerRegistryManager.getInstance();
 
-    public AbstractVirtualListenerManager(NetworkId networkId) {
+    public AbstractVirtualListenerManager(VirtualNetworkService manager,
+                                          NetworkId networkId) {
+        this.manager = manager;
         this.networkId = networkId;
+        this.serviceDirectory = manager.getServiceDirectory();
+
+        //Set default event delivery service by default
+        this.eventDispatcher = serviceDirectory.get(EventDeliveryService.class);
     }
 
     @Override
@@ -66,13 +79,18 @@
         }
     }
 
+    @Override
+    public NetworkId networkId() {
+        return this.networkId;
+    }
+
     /**
      * Returns the class type of parameter type.
      * More specifically, it returns the class type of event class.
      *
      * @return the class type of provider service of the service
      */
-    private Class getEventClass() {
+    public Class getEventClass() {
         String className = this.getClass().getGenericSuperclass().toString();
         String pramType = className.split("<")[1].split(",")[0];
 
@@ -84,5 +102,4 @@
 
         return null;
     }
-
 }
