diff --git a/src/main/java/net/onrc/onos/api/flowmanager/FlowId.java b/src/main/java/net/onrc/onos/api/flowmanager/FlowId.java
index 9d1f0ed..f6d7f8a 100644
--- a/src/main/java/net/onrc/onos/api/flowmanager/FlowId.java
+++ b/src/main/java/net/onrc/onos/api/flowmanager/FlowId.java
@@ -1,37 +1,41 @@
 package net.onrc.onos.api.flowmanager;
 
+import java.util.Objects;
+
 import net.onrc.onos.api.batchoperation.BatchOperationTarget;
 
 /**
  * Represents ID for Flow objects.
  */
 public class FlowId implements BatchOperationTarget {
-    private final String value;
+    private final long value;
 
     /**
      * Creates new instance with string ID.
+     * <p>
+     * This FlowId instance should be generated with {@link FlowIdGenerator}.
      *
      * @param id String representation of the ID.
      */
-    public FlowId(String id) {
+    public FlowId(long id) {
         value = id;
     }
 
     @Override
     public String toString() {
-        return value;
+        return Long.toString(value);
     }
 
     @Override
     public int hashCode() {
-        return value.hashCode();
+        return Objects.hashCode(value);
     }
 
     @Override
     public boolean equals(Object obj) {
         if (obj instanceof FlowId) {
-            FlowId other = (FlowId) obj;
-            return (this.value.equals(other.value));
+            FlowId that = (FlowId) obj;
+            return Objects.equals(this.value, that.value);
         }
         return false;
     }
diff --git a/src/main/java/net/onrc/onos/api/flowmanager/FlowIdGenerator.java b/src/main/java/net/onrc/onos/api/flowmanager/FlowIdGenerator.java
index e3ab9e3..9b85e22 100644
--- a/src/main/java/net/onrc/onos/api/flowmanager/FlowIdGenerator.java
+++ b/src/main/java/net/onrc/onos/api/flowmanager/FlowIdGenerator.java
@@ -5,9 +5,9 @@
  */
 public interface FlowIdGenerator {
     /**
-     * Generates a globally unique {@link FlowId} instance.
+     * Generates a global unique {@link FlowId} instance.
      *
-     * @return a globally unique {@link FlowId} instance.
+     * @return a global unique {@link FlowId} instance.
      */
-    FlowId getNextId();
+    FlowId getNewId();
 }
diff --git a/src/main/java/net/onrc/onos/core/flowmanager/FlowIdGeneratorWithIdBlockAllocator.java b/src/main/java/net/onrc/onos/core/flowmanager/FlowIdGeneratorWithIdBlockAllocator.java
new file mode 100644
index 0000000..d502d93
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/flowmanager/FlowIdGeneratorWithIdBlockAllocator.java
@@ -0,0 +1,38 @@
+package net.onrc.onos.core.flowmanager;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import net.onrc.onos.api.flowmanager.FlowId;
+import net.onrc.onos.api.flowmanager.FlowIdGenerator;
+import net.onrc.onos.core.util.IdBlock;
+import net.onrc.onos.core.util.IdBlockAllocator;
+import net.onrc.onos.core.util.UnavailableIdException;
+
+/**
+ * Generates a global unique FlowId using
+ * {@link IdBlockAllocator#allocateUniqueIdBlock()}.
+ */
+public class FlowIdGeneratorWithIdBlockAllocator implements FlowIdGenerator {
+
+    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 FlowIdGeneratorWithIdBlockAllocator(IdBlockAllocator allocator) {
+        this.allocator = checkNotNull(allocator);
+        this.idBlock = allocator.allocateUniqueIdBlock();
+    }
+
+    @Override
+    public synchronized FlowId getNewId() {
+        try {
+            return new FlowId(idBlock.getNextId());
+        } catch (UnavailableIdException e) {
+            idBlock = allocator.allocateUniqueIdBlock();
+            return new FlowId(idBlock.getNextId());
+        }
+    }
+}
