diff --git a/src/main/java/net/onrc/onos/intent/ConstrainedShortestPathIntent.java b/src/main/java/net/onrc/onos/intent/ConstrainedShortestPathIntent.java
index b659179..8a2e101 100644
--- a/src/main/java/net/onrc/onos/intent/ConstrainedShortestPathIntent.java
+++ b/src/main/java/net/onrc/onos/intent/ConstrainedShortestPathIntent.java
@@ -4,6 +4,9 @@
 import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
 import net.onrc.onos.ofcontroller.networkgraph.Port;
 
+import com.esotericsoftware.kryo.io.Input;
+import com.esotericsoftware.kryo.io.Output;
+
 /**
  * @author Toshio Koide (t-koide@onlab.us)
  */
@@ -26,7 +29,38 @@
 		this.bandwidth = bandwidth;
 	}
 
+	public static ConstrainedShortestPathIntent fromBytes(NetworkGraph graph, byte[] bytes) {
+		Input input = new Input(bytes);
+		ConstrainedShortestPathIntent intent = new ConstrainedShortestPathIntent(graph,
+				input.readString(),
+				input.readLong(),
+				input.readLong(),
+				input.readLong(),
+				input.readLong(),
+				input.readLong(),
+				input.readLong(),
+				input.readDouble());
+		input.close();
+		return intent;
+	}
+
 	public Double getBandwidth() {
 		return bandwidth;
 	}
+
+	@Override
+	public byte[] toBytes() {
+		byte[] buffer = new byte[1024];
+		Output output = new Output(buffer, -1);
+		output.writeString(id);
+		output.writeLong(srcPort.getSwitch().getDpid());
+		output.writeLong(srcPort.getNumber());
+		output.writeLong(srcMac.toLong());
+		output.writeLong(dstPort.getSwitch().getDpid());
+		output.writeLong(dstPort.getNumber());
+		output.writeLong(dstMac.toLong());
+		output.writeDouble(bandwidth);
+		output.close();
+		return output.toBytes();
+	}
 }
diff --git a/src/main/java/net/onrc/onos/intent/Intent.java b/src/main/java/net/onrc/onos/intent/Intent.java
index 823b106..070af25 100644
--- a/src/main/java/net/onrc/onos/intent/Intent.java
+++ b/src/main/java/net/onrc/onos/intent/Intent.java
@@ -13,6 +13,8 @@
 	public String getId() {
 		return id;
 	}
+	
+	abstract public byte[] toBytes();
 
 	@Override
 	public int hashCode() {
diff --git a/src/main/java/net/onrc/onos/intent/PathIntent.java b/src/main/java/net/onrc/onos/intent/PathIntent.java
index 07f53e1..3afa92e 100644
--- a/src/main/java/net/onrc/onos/intent/PathIntent.java
+++ b/src/main/java/net/onrc/onos/intent/PathIntent.java
@@ -38,4 +38,10 @@
 	public Intent getParentIntent() {
 		return parentIntent;
 	}
+
+	@Override
+	public byte[] toBytes() {
+		// TODO not implemented yet
+		return null;
+	}
 }
diff --git a/src/main/java/net/onrc/onos/intent/ShortestPathIntent.java b/src/main/java/net/onrc/onos/intent/ShortestPathIntent.java
index b1f58f5..3fdcf66 100644
--- a/src/main/java/net/onrc/onos/intent/ShortestPathIntent.java
+++ b/src/main/java/net/onrc/onos/intent/ShortestPathIntent.java
@@ -1,5 +1,8 @@
 package net.onrc.onos.intent;
 
+import com.esotericsoftware.kryo.io.Input;
+import com.esotericsoftware.kryo.io.Output;
+
 import net.floodlightcontroller.util.MACAddress;
 import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
 import net.onrc.onos.ofcontroller.networkgraph.Port;
@@ -33,6 +36,20 @@
 		this.dstMac = MACAddress.valueOf(dstMac);
 	}
 
+	public static ShortestPathIntent fromBytes(NetworkGraph graph, byte[] bytes) {
+		Input input = new Input(bytes);
+		ShortestPathIntent intent = new ShortestPathIntent(graph,
+				input.readString(),
+				input.readLong(),
+				input.readLong(),
+				input.readLong(),
+				input.readLong(),
+				input.readLong(),
+				input.readLong());
+		input.close();
+		return intent;
+		}
+
 	public Port getSourcePort() {
 		return srcPort;
 	}
@@ -55,4 +72,19 @@
 				srcPort.toString(), srcMac.toString(),
 				dstPort.toString(), dstMac.toString());
 	}
+
+	@Override
+	public byte[] toBytes() {
+		byte[] buffer = new byte[1024];
+		Output output = new Output(buffer, -1);
+		output.writeString(id);
+		output.writeLong(srcPort.getSwitch().getDpid());
+		output.writeLong(srcPort.getNumber());
+		output.writeLong(srcMac.toLong());
+		output.writeLong(dstPort.getSwitch().getDpid());
+		output.writeLong(dstPort.getNumber());
+		output.writeLong(dstMac.toLong());
+		output.close();
+		return output.toBytes();
+	}
 }
