diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentData.java b/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
index b70e7cc..6a9c9ae 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
@@ -22,16 +22,12 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.net.intent.IntentState.FAILED;
-import static org.onosproject.net.intent.IntentState.INSTALLED;
-import static org.onosproject.net.intent.IntentState.INSTALLING;
-import static org.onosproject.net.intent.IntentState.PURGE_REQ;
-import static org.onosproject.net.intent.IntentState.WITHDRAWING;
-import static org.onosproject.net.intent.IntentState.WITHDRAWN;
+import static org.onosproject.net.intent.IntentState.*;
 
 /**
  * A wrapper class that contains an intents, its state, and other metadata for
@@ -44,6 +40,7 @@
 
     private final Intent intent;
 
+    private final IntentState request; //TODO perhaps we want a full fledged object for requests
     private IntentState state;
     private Timestamp version;
     private NodeId origin;
@@ -60,6 +57,7 @@
     public IntentData(Intent intent, IntentState state, Timestamp version) {
         this.intent = intent;
         this.state = state;
+        this.request = state;
         this.version = version;
     }
 
@@ -73,6 +71,7 @@
 
         intent = intentData.intent;
         state = intentData.state;
+        request = intentData.request;
         version = intentData.version;
         origin = intentData.origin;
         installables = intentData.installables;
@@ -81,6 +80,7 @@
     // kryo constructor
     protected IntentData() {
         intent = null;
+        request = null;
     }
 
     /**
@@ -101,6 +101,10 @@
         return state;
     }
 
+    public IntentState request() {
+        return request;
+    }
+
     /**
      * Returns the intent key.
      *
@@ -175,7 +179,7 @@
      * @return list of installable intents
      */
     public List<Intent> installables() {
-        return installables;
+        return installables != null ? installables : Collections.emptyList();
     }
 
     /**
@@ -240,6 +244,12 @@
             }
             return true;
 
+        case CORRUPT:
+            if (currentState == CORRUPT) {
+                return false;
+            }
+            return true;
+
         case PURGE_REQ:
             return true;
 
