diff --git a/src/main/java/net/onrc/onos/core/matchaction/MatchActionComponent.java b/src/main/java/net/onrc/onos/core/matchaction/MatchActionComponent.java
index a415316..52e7dd9 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/MatchActionComponent.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/MatchActionComponent.java
@@ -22,7 +22,9 @@
 import net.onrc.onos.core.datagrid.IEventChannel;
 import net.onrc.onos.core.datagrid.IEventChannelListener;
 import net.onrc.onos.core.flowprogrammer.IFlowPusherService;
+import net.onrc.onos.core.registry.IControllerRegistryService;
 import net.onrc.onos.core.util.Dpid;
+import net.onrc.onos.core.util.IdBlockAllocator;
 import net.onrc.onos.core.util.IdGenerator;
 import net.onrc.onos.core.util.SwitchPort;
 
@@ -31,7 +33,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-
 /**
  * Manages Match-Action entries.
  * <p>
@@ -57,16 +58,28 @@
     private Thread coordinator;
     private Thread installer;
     private final IDatagridService datagrid;
+    private IControllerRegistryService registryService;
+
+    private MatchActionIdGeneratorWithIdBlockAllocator matchActionIdGenerator;
+    private MatchActionOperationsIdGeneratorWithIdBlockAllocator matchActionOperationsIdGenerator;
 
     public MatchActionComponent(final IDatagridService newDatagrid,
                                 final IFlowPusherService newPusher,
-                                final IFloodlightProviderService newProvider) {
+                                final IFloodlightProviderService newProvider,
+                                final IControllerRegistryService newRegistryService) {
         datagrid = newDatagrid;
         pusher = newPusher;
         provider = newProvider;
+        registryService = newRegistryService;
     }
 
     public void start() {
+        IdBlockAllocator idBlockAllocator = registryService;
+        matchActionIdGenerator =
+                new MatchActionIdGeneratorWithIdBlockAllocator(idBlockAllocator);
+        matchActionOperationsIdGenerator =
+                new MatchActionOperationsIdGeneratorWithIdBlockAllocator(idBlockAllocator);
+
         installSetChannel = datagrid.createChannel("onos.matchaction.installSetChannel",
                 String.class,
                 MatchActionOperations.class);
@@ -387,12 +400,12 @@
 
     @Override
     public IdGenerator<MatchActionId> getMatchActionIdGenerator() {
-        return null;
+        return matchActionIdGenerator;
     }
 
     @Override
     public IdGenerator<MatchActionOperationsId> getMatchActionOperationsIdGenerator() {
-        return null;
+        return matchActionOperationsIdGenerator;
     }
 
 }
diff --git a/src/main/java/net/onrc/onos/core/matchaction/MatchActionModule.java b/src/main/java/net/onrc/onos/core/matchaction/MatchActionModule.java
index eaf7a39..8255035 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/MatchActionModule.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/MatchActionModule.java
@@ -1,17 +1,5 @@
 package net.onrc.onos.core.matchaction;
 
-import net.floodlightcontroller.core.IFloodlightProviderService;
-import net.floodlightcontroller.core.module.FloodlightModuleContext;
-import net.floodlightcontroller.core.module.FloodlightModuleException;
-import net.floodlightcontroller.core.module.IFloodlightModule;
-import net.floodlightcontroller.core.module.IFloodlightService;
-import net.onrc.onos.api.flowmanager.ConflictDetectionPolicy;
-import net.onrc.onos.core.datagrid.IDatagridService;
-import net.onrc.onos.core.flowprogrammer.IFlowPusherService;
-import net.onrc.onos.core.util.IdGenerator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.EventListener;
@@ -21,6 +9,20 @@
 import java.util.Map;
 import java.util.Set;
 
+import net.floodlightcontroller.core.IFloodlightProviderService;
+import net.floodlightcontroller.core.module.FloodlightModuleContext;
+import net.floodlightcontroller.core.module.FloodlightModuleException;
+import net.floodlightcontroller.core.module.IFloodlightModule;
+import net.floodlightcontroller.core.module.IFloodlightService;
+import net.onrc.onos.api.flowmanager.ConflictDetectionPolicy;
+import net.onrc.onos.core.datagrid.IDatagridService;
+import net.onrc.onos.core.flowprogrammer.IFlowPusherService;
+import net.onrc.onos.core.registry.IControllerRegistryService;
+import net.onrc.onos.core.util.IdGenerator;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * Floodlight module for Match Action service.
  */
@@ -32,10 +34,6 @@
             .getLogger(MatchActionModule.class);
     private MatchActionComponent matchActionComponent;
 
-
-
-
-
     @Override
     public Collection<Class<? extends IFloodlightService>> getModuleServices() {
         List<Class<? extends IFloodlightService>> services = new ArrayList<>();
@@ -58,6 +56,7 @@
         dependencies.add(IDatagridService.class);
         dependencies.add(IFlowPusherService.class);
         dependencies.add(IFloodlightProviderService.class);
+        dependencies.add(IControllerRegistryService.class);
         return dependencies;
     }
 
@@ -71,8 +70,9 @@
         final IDatagridService datagrid = context.getServiceImpl(IDatagridService.class);
         final IFlowPusherService pusher = context.getServiceImpl(IFlowPusherService.class);
         final IFloodlightProviderService provider = context.getServiceImpl(IFloodlightProviderService.class);
+        final IControllerRegistryService registry = context.getServiceImpl(IControllerRegistryService.class);
 
-        matchActionComponent = new MatchActionComponent(datagrid, pusher, provider);
+        matchActionComponent = new MatchActionComponent(datagrid, pusher, provider, registry);
         log.info("match action component created");
         matchActionComponent.start();
     }
@@ -104,16 +104,12 @@
 
     @Override
     public IdGenerator<MatchActionId> getMatchActionIdGenerator() {
-        // TODO Auto-generated method stub
-        // use MatchActionIdGeneratorWithIdBlockAllocator.
-        return null;
+        return matchActionComponent.getMatchActionIdGenerator();
     }
 
     @Override
     public IdGenerator<MatchActionOperationsId> getMatchActionOperationsIdGenerator() {
-        // TODO Auto-generated method stub
-        // use MatchActionOperationsIdGeneratorWithIdBlockAllocator.
-        return null;
+        return matchActionComponent.getMatchActionOperationsIdGenerator();
     }
 
     @Override
