diff --git a/core/api/src/main/java/org/onlab/onos/net/intent/IntentInstaller.java b/core/api/src/main/java/org/onlab/onos/net/intent/IntentInstaller.java
index 9855498..468017f 100644
--- a/core/api/src/main/java/org/onlab/onos/net/intent/IntentInstaller.java
+++ b/core/api/src/main/java/org/onlab/onos/net/intent/IntentInstaller.java
@@ -1,8 +1,8 @@
 package org.onlab.onos.net.intent;
 
-import java.util.concurrent.Future;
+import java.util.List;
 
-import org.onlab.onos.net.flow.CompletedBatchOperation;
+import org.onlab.onos.net.flow.FlowRuleBatchOperation;
 
 /**
  * Abstraction of entity capable of installing intents to the environment.
@@ -14,7 +14,7 @@
      * @param intent intent to be installed
      * @throws IntentException if issues are encountered while installing the intent
      */
-    Future<CompletedBatchOperation> install(T intent);
+    List<FlowRuleBatchOperation> install(T intent);
 
     /**
      * Uninstalls the specified intent from the environment.
@@ -22,5 +22,5 @@
      * @param intent intent to be uninstalled
      * @throws IntentException if issues are encountered while uninstalling the intent
      */
-    Future<CompletedBatchOperation> uninstall(T intent);
+    List<FlowRuleBatchOperation> uninstall(T intent);
 }
diff --git a/core/api/src/test/java/org/onlab/onos/net/intent/IntentServiceTest.java b/core/api/src/test/java/org/onlab/onos/net/intent/IntentServiceTest.java
index 163a056..a51746d 100644
--- a/core/api/src/test/java/org/onlab/onos/net/intent/IntentServiceTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/intent/IntentServiceTest.java
@@ -14,12 +14,11 @@
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
-import java.util.concurrent.Future;
 
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.onlab.onos.net.flow.CompletedBatchOperation;
+import org.onlab.onos.net.flow.FlowRuleBatchOperation;
 
 /**
  * Suite of tests for the intent service contract.
@@ -298,7 +297,7 @@
         }
 
         @Override
-        public Future<CompletedBatchOperation> install(TestInstallableIntent intent) {
+        public List<FlowRuleBatchOperation> install(TestInstallableIntent intent) {
             if (fail) {
                 throw new IntentException("install failed by design");
             }
@@ -306,7 +305,7 @@
         }
 
         @Override
-        public Future<CompletedBatchOperation> uninstall(TestInstallableIntent intent) {
+        public List<FlowRuleBatchOperation> uninstall(TestInstallableIntent intent) {
             if (fail) {
                 throw new IntentException("remove failed by design");
             }
