diff --git a/src/main/java/net/onrc/onos/core/newintent/IntentCompilationResult.java b/src/main/java/net/onrc/onos/core/newintent/IntentCompilationResult.java
new file mode 100644
index 0000000..34a5a74
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/newintent/IntentCompilationResult.java
@@ -0,0 +1,47 @@
+package net.onrc.onos.core.newintent;
+
+import com.google.common.collect.ImmutableList;
+import net.onrc.onos.api.newintent.InstallableIntent;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * A class representing a result of intent compilation.
+ */
+public class IntentCompilationResult {
+    private final List<InstallableIntent> result;
+
+    /**
+     * Constructs an instance containing the specified list of installable intents.
+     *
+     * @param result installable intents
+     */
+    public IntentCompilationResult(List<InstallableIntent> result) {
+        checkNotNull(result);
+        checkArgument(result.size() > 0,
+                "result of intent compilation should be " +
+                "more than 1 installable intents or more, but %s", result.size());
+
+        this.result = new ArrayList<>(checkNotNull(result));
+    }
+
+    /**
+     * Constructor for serializer.
+     */
+    protected IntentCompilationResult() {
+        this.result = null;
+    }
+
+    /**
+     * Returns list of installable intents that this object contains.
+     *
+     * @return installable intents
+     */
+    public List<InstallableIntent> getResult() {
+        return ImmutableList.copyOf(result);
+    }
+}
diff --git a/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java b/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
index 5253483..dde06f6 100644
--- a/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
+++ b/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
@@ -16,6 +16,7 @@
 import net.onrc.onos.api.newintent.ConnectivityIntent;
 import net.onrc.onos.api.newintent.IntentEvent;
 import net.onrc.onos.api.newintent.IntentId;
+import net.onrc.onos.api.newintent.IntentState;
 import net.onrc.onos.api.newintent.MultiPointToSinglePointIntent;
 import net.onrc.onos.api.newintent.OpticalConnectivityIntent;
 import net.onrc.onos.api.newintent.PacketConnectivityIntent;
@@ -33,6 +34,7 @@
 import net.onrc.onos.core.intent.PathIntent;
 import net.onrc.onos.core.intent.ShortestPathIntent;
 import net.onrc.onos.core.intent.runtime.IntentStateList;
+import net.onrc.onos.core.newintent.IntentCompilationResult;
 import net.onrc.onos.core.newintent.PathFlowIntent;
 import net.onrc.onos.core.newintent.SingleDstTreeFlowIntent;
 import net.onrc.onos.core.newintent.SingleSrcTreeFlowIntent;
@@ -209,6 +211,8 @@
         kryo.register(BatchOperationEntry.class);
         kryo.register(IntentId.class);
         kryo.register(IntentEvent.class);
+        kryo.register(IntentState.class);
+        kryo.register(IntentCompilationResult.class);
         kryo.register(AbstractIntent.class);
         kryo.register(ConnectivityIntent.class);
         kryo.register(PointToPointIntent.class);
