diff --git a/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleIntentStore.java b/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleIntentStore.java
index 988d02a..2831951 100644
--- a/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleIntentStore.java
+++ b/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleIntentStore.java
@@ -25,7 +25,6 @@
 import org.onosproject.net.intent.Intent;
 import org.onosproject.net.intent.IntentData;
 import org.onosproject.net.intent.IntentEvent;
-import org.onosproject.net.intent.IntentId;
 import org.onosproject.net.intent.IntentState;
 import org.onosproject.net.intent.IntentStore;
 import org.onosproject.net.intent.IntentStoreDelegate;
@@ -35,7 +34,6 @@
 
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.stream.Collectors;
 
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -76,38 +74,15 @@
     }
 
     @Override
-    public Intent getIntent(IntentId intentId) {
-        for (IntentData data : current.values()) {
-            if (Objects.equals(data.intent().id(), intentId)) {
-                return data.intent();
-            }
-        }
-        return null;
+    public IntentState getIntentState(Key intentKey) {
+        IntentData data = current.get(intentKey);
+        return (data != null) ? data.state() : null;
     }
 
     @Override
-    public IntentState getIntentState(IntentId intentId) {
-        for (IntentData data : current.values()) {
-            if (Objects.equals(data.intent().id(), intentId)) {
-                return data.state();
-            }
-        }
-        return null;
-    }
-
-    @Override
-    public List<Intent> getInstallableIntents(IntentId intentId) {
-        for (IntentData data : current.values()) {
-            if (Objects.equals(data.intent().id(), intentId)) {
-                return data.installables();
-            }
-        }
-        return null;
-    }
-
-    @Override
-    public IntentData getIntentData(Key key) {
-        return current.get(key);
+    public List<Intent> getInstallableIntents(Key intentKey) {
+        IntentData data = current.get(intentKey);
+        return (data != null) ? data.installables() : null;
     }
 
     /*
