diff --git a/core/api/src/main/java/org/onosproject/net/intent/BatchWrite.java b/core/api/src/main/java/org/onosproject/net/intent/BatchWrite.java
index e030036..d528e28 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/BatchWrite.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/BatchWrite.java
@@ -24,7 +24,7 @@
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-public class BatchWrite {
+public final class BatchWrite {
 
     public enum OpType {
         CREATE_INTENT,
@@ -36,6 +36,17 @@
 
     List<Operation> operations = new ArrayList<>();
 
+    private BatchWrite() {}
+
+    /**
+     * Returns a new empty batch write operation builder.
+     *
+     * @return BatchWrite
+     */
+    public static BatchWrite newInstance() {
+        return new BatchWrite();
+    }
+
     public List<Operation> operations() {
         return Collections.unmodifiableList(operations);
     }
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentStore.java b/core/api/src/main/java/org/onosproject/net/intent/IntentStore.java
index 129a15b..452cd97 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentStore.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentStore.java
@@ -110,16 +110,6 @@
      */
     void removeInstalledIntents(IntentId intentId);
 
-
-    /**
-     * Returns a new empty batch write operation buider.
-     *
-     * @return BatchWrite
-     */
-    default BatchWrite newBatchWrite() {
-        return new BatchWrite();
-    }
-
     /**
      * Execute writes in a batch.
      *
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java b/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
index 21361d5..3a1d4f2 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
@@ -768,7 +768,7 @@
         }
 
         private void buildIntentUpdates() {
-            BatchWrite batchWrite = store.newBatchWrite();
+            BatchWrite batchWrite = BatchWrite.newInstance();
 
             // create context and record new request to store
             for (IntentOperation op : ops.operations()) {
@@ -806,7 +806,7 @@
                 return flowRuleService.applyBatch(batch);
             } else {
                 // there are no flow rule batches; finalize the intent update
-                BatchWrite batchWrite = store.newBatchWrite();
+                BatchWrite batchWrite = BatchWrite.newInstance();
                 for (IntentUpdate update : intentUpdates) {
                     update.finalizeStates(batchWrite);
                 }
