diff --git a/src/main/java/net/onrc/onos/api/intent/IIntentRuntimeService.java b/src/main/java/net/onrc/onos/api/intent/IIntentRuntimeService.java
index 0e5c36e..73ed704 100644
--- a/src/main/java/net/onrc/onos/api/intent/IIntentRuntimeService.java
+++ b/src/main/java/net/onrc/onos/api/intent/IIntentRuntimeService.java
@@ -19,29 +19,24 @@
  */
 public interface IIntentRuntimeService {
     /**
-     * Adds specified intent.
+     * Installs the specified intent synchronously.
      *
-     * @param intent Intent to be added.
-     * @return true if succeeded, false otherwise.
+     * This method blocks until the installation succeeds or fails.
+     *
+     * @param intent the intent to be installed.
+     * @return true if the intent is successfully installed. Otherwise, false.
      */
-    boolean addIntent(Intent intent);
+    public boolean install(Intent intent);
 
     /**
-     * Removes specified intent.
+     * Removes the specified intent synchronously.
      *
-     * @param id ID of the intent to be removed.
-     * @return true if succeeded, false otherwise.
-     */
-    boolean removeIntent(IntentId id);
-
-    /**
-     * Overwrites existing intent by new specified intent.
+     * This method blocks until the removal succeeds or fails.
      *
-     * @param id ID of the existing intent to be overwritten.
-     * @param intent The new intent to be added.
-     * @return true if succeeded, false otherwise.
+     * @param id the ID of the intent to be uninstalled.
+     * @return true if the intent is successfully uninstalled. Otherwise, false.
      */
-    boolean updateIntent(IntentId id, Intent intent);
+    public boolean remove(IntentId id);
 
     /**
      * Gets specific intent.
diff --git a/src/main/java/net/onrc/onos/core/newintent/IntentRuntimeModule.java b/src/main/java/net/onrc/onos/core/newintent/IntentRuntimeModule.java
index 2521e56..d9b1f60 100644
--- a/src/main/java/net/onrc/onos/core/newintent/IntentRuntimeModule.java
+++ b/src/main/java/net/onrc/onos/core/newintent/IntentRuntimeModule.java
@@ -19,26 +19,16 @@
  * TODO: Design methods to support the ReactiveForwarding and the SDN-IP.
  */
 public class IntentRuntimeModule implements IIntentRuntimeService {
-
     @Override
-    public boolean addIntent(Intent intent) {
-        BatchOperation<Intent> ops = new BatchOperation<Intent>();
-        ops.addAddOperation(intent);
-        return executeBatch(ops);
+    public boolean install(Intent intent) {
+        // TODO: implement this method
+        return false;
     }
 
     @Override
-    public boolean removeIntent(IntentId id) {
-        BatchOperation<Intent> ops = new BatchOperation<Intent>();
-        ops.addRemoveOperation(id);
-        return executeBatch(ops);
-    }
-
-    @Override
-    public boolean updateIntent(IntentId id, Intent intent) {
-        BatchOperation<Intent> ops = new BatchOperation<Intent>();
-        ops.addUpdateOperation(id, intent);
-        return executeBatch(ops);
+    public boolean remove(IntentId id) {
+        // TODO: implement this method
+        return false;
     }
 
     @Override
