diff --git a/core/api/src/main/java/org/onosproject/net/intent/Intent.java b/core/api/src/main/java/org/onosproject/net/intent/Intent.java
index e44690b..19170ae 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/Intent.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/Intent.java
@@ -34,7 +34,10 @@
 public abstract class Intent {
 
     private final IntentId id;
+
     private final ApplicationId appId;
+    private final String key;
+
     private final Collection<NetworkResource> resources;
 
     private static IdGenerator idGenerator;
@@ -45,6 +48,7 @@
     protected Intent() {
         this.id = null;
         this.appId = null;
+        this.key = null;
         this.resources = null;
     }
 
@@ -54,11 +58,26 @@
      * @param appId         application identifier
      * @param resources     required network resources (optional)
      */
+    @Deprecated
     protected Intent(ApplicationId appId,
                      Collection<NetworkResource> resources) {
+        this(appId, null, resources);
+    }
+
+        /**
+         * Creates a new intent.
+         *
+         * @param appId         application identifier
+         * @param key           optional key
+         * @param resources     required network resources (optional)
+         */
+    protected Intent(ApplicationId appId,
+                     String key,
+                     Collection<NetworkResource> resources) {
         checkState(idGenerator != null, "Id generator is not bound.");
         this.id = IntentId.valueOf(idGenerator.getNewId());
         this.appId = checkNotNull(appId, "Application ID cannot be null");
+        this.key = (key != null) ? key : id.toString(); //FIXME
         this.resources = checkNotNull(resources);
     }
 
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentBatchDelegate.java b/core/api/src/main/java/org/onosproject/net/intent/IntentBatchDelegate.java
index a2eceb6..0c53262 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentBatchDelegate.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentBatchDelegate.java
@@ -18,6 +18,7 @@
 /**
  * Facade for receiving notifications from the intent batch service.
  */
+@Deprecated
 public interface IntentBatchDelegate {
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentBatchLeaderEvent.java b/core/api/src/main/java/org/onosproject/net/intent/IntentBatchLeaderEvent.java
index b434218..793653c 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentBatchLeaderEvent.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentBatchLeaderEvent.java
@@ -21,6 +21,7 @@
 /**
  * A class to represent an intent related event.
  */
+@Deprecated
 public class IntentBatchLeaderEvent extends AbstractEvent<IntentBatchLeaderEvent.Type, ApplicationId> {
 
     public enum Type {
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentBatchListener.java b/core/api/src/main/java/org/onosproject/net/intent/IntentBatchListener.java
index c4a4637..5365e29 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentBatchListener.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentBatchListener.java
@@ -20,5 +20,6 @@
 /**
  * Listener for {@link org.onosproject.net.intent.IntentEvent intent events}.
  */
+@Deprecated
 public interface IntentBatchListener extends EventListener<IntentBatchLeaderEvent> {
 }
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentBatchService.java b/core/api/src/main/java/org/onosproject/net/intent/IntentBatchService.java
index bf8e4fd..4494f26 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentBatchService.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentBatchService.java
@@ -22,6 +22,7 @@
 /**
  * Service for tracking and delegating batches of intent operations.
  */
+@Deprecated
 public interface IntentBatchService {
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentOperation.java b/core/api/src/main/java/org/onosproject/net/intent/IntentOperation.java
index c73199e..afb0010 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentOperation.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentOperation.java
@@ -29,6 +29,7 @@
     private final Type type;
     private final IntentId intentId;
     private final Intent intent;
+    //FIXME consider pulling the key out (we will hash based on key)
 
     /**
      * Operation type.
@@ -47,11 +48,13 @@
         /**
          * Indicates that an intent should be replaced with another.
          */
+        @Deprecated
         REPLACE,
 
         /**
          * Indicates that an intent should be updated (i.e. recompiled/reinstalled).
          */
+        @Deprecated
         UPDATE,
     }
 
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentOperations.java b/core/api/src/main/java/org/onosproject/net/intent/IntentOperations.java
index 176ac85..2f30fa4 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentOperations.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentOperations.java
@@ -31,6 +31,7 @@
 /**
  * Batch of intent submit/withdraw/replace operations.
  */
+@Deprecated
 public final class IntentOperations {
 
     private final List<IntentOperation> operations;
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentService.java b/core/api/src/main/java/org/onosproject/net/intent/IntentService.java
index 2b92bf8..3c1c91a 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentService.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentService.java
@@ -48,6 +48,7 @@
      * @param oldIntentId identifier of the old intent being replaced
      * @param newIntent new intent replacing the old one
      */
+    @Deprecated
     void replace(IntentId oldIntentId, Intent newIntent);
 
     /**
@@ -59,6 +60,7 @@
      * </p>
      * @param operations batch of intent operations
      */
+    @Deprecated
     void execute(IntentOperations operations);
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentState.java b/core/api/src/main/java/org/onosproject/net/intent/IntentState.java
index 0deabad..e4d7423 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentState.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentState.java
@@ -37,7 +37,7 @@
      * This is a transitional state after which the intent will enter either
      * {@link #FAILED} state or {@link #INSTALLING} state.
      */
-    COMPILING,
+    COMPILING, //TODO do we really need this?
 
     /**
      * Signifies that the resulting installable intents are being installed
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 ea60d7c..534279b 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
@@ -73,4 +73,22 @@
      */
     List<Operation> batchWrite(BatchWrite batch);
 
+    /**
+     * Adds a new operation, which should be persisted and delegated.
+     *
+     * @param op operation
+     */
+    default void add(IntentOperation op) {} //FIXME remove when impl.
+
+    /**
+     * Checks to see whether the calling instance is the master for processing
+     * this intent, or more specifically, the key contained in this intent.
+     *
+     * @param intent intent to check
+     * @return true if master; false, otherwise
+     */
+    //TODO better name
+    default boolean isMaster(Intent intent) { //FIXME remove default when impl.
+        return true;
+    }
 }
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentStoreDelegate.java b/core/api/src/main/java/org/onosproject/net/intent/IntentStoreDelegate.java
index bd2e6f5..ab56c99 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentStoreDelegate.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentStoreDelegate.java
@@ -21,4 +21,12 @@
  * Intent store delegate abstraction.
  */
 public interface IntentStoreDelegate extends StoreDelegate<IntentEvent> {
+
+    /**
+     * Provides an intent operation that should be processed (compiled and
+     * installed) by this manager.
+     *
+     * @param op    intent operation
+     */
+    void process(IntentOperation op);
 }
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 8280b02..8703e01 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
@@ -380,6 +380,11 @@
         public void notify(IntentEvent event) {
             eventDispatcher.post(event);
         }
+
+        @Override
+        public void process(IntentOperation op) {
+            //FIXME
+        }
     }
 
     private void buildAndSubmitBatches(Iterable<IntentId> intentIds,
