diff --git a/src/main/java/net/onrc/onos/core/matchaction/MatchActionOperationsIdGeneratorWithIdBlockAllocator.java b/src/main/java/net/onrc/onos/core/matchaction/MatchActionOperationsIdGeneratorWithIdBlockAllocator.java
index d1d5240..fd9efdc 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/MatchActionOperationsIdGeneratorWithIdBlockAllocator.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/MatchActionOperationsIdGeneratorWithIdBlockAllocator.java
@@ -1,37 +1,26 @@
 package net.onrc.onos.core.matchaction;
 
-import net.onrc.onos.core.util.IdBlock;
+import net.onrc.onos.core.util.AbstractBlockAllocatorBasedIdGenerator;
 import net.onrc.onos.core.util.IdBlockAllocator;
-import net.onrc.onos.core.util.UnavailableIdException;
 
-import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
  * Generates a global unique MatchActionIdId.
  */
 public class MatchActionOperationsIdGeneratorWithIdBlockAllocator
-        implements MatchActionOperationsIdGenerator {
+        extends AbstractBlockAllocatorBasedIdGenerator<MatchActionOperationsId> {
 
-        private final IdBlockAllocator allocator;
-        private IdBlock idBlock;
+    /**
+     * Creates a FlowId generator instance using specified ID block allocator.
+     *
+     * @param allocator the ID block allocator to be used
+     */
+    public MatchActionOperationsIdGeneratorWithIdBlockAllocator(IdBlockAllocator allocator) {
+        super(allocator);
+    }
 
-        /**
-          * Creates a FlowId generator instance using specified ID block allocator.
-          *
-          * @param allocator the ID block allocator to be used
-          */
-        public MatchActionOperationsIdGeneratorWithIdBlockAllocator(IdBlockAllocator allocator) {
-            this.allocator = checkNotNull(allocator);
-            this.idBlock = allocator.allocateUniqueIdBlock();
-        }
-
-        @Override
-        public synchronized MatchActionOperationsId getNewId() {
-            try {
-                return new MatchActionOperationsId(idBlock.getNextId());
-            } catch (UnavailableIdException e) {
-                idBlock = allocator.allocateUniqueIdBlock();
-                return new MatchActionOperationsId(idBlock.getNextId());
-            }
-        }
+    @Override
+    protected MatchActionOperationsId convertFrom(long value) {
+        return new MatchActionOperationsId(value);
+    }
 }
