diff --git a/src/main/java/net/onrc/onos/intent/ConstrainedShortestPathIntent.java b/src/main/java/net/onrc/onos/intent/ConstrainedShortestPathIntent.java
new file mode 100644
index 0000000..c5db590
--- /dev/null
+++ b/src/main/java/net/onrc/onos/intent/ConstrainedShortestPathIntent.java
@@ -0,0 +1,32 @@
+package net.onrc.onos.intent;
+
+import net.floodlightcontroller.util.MACAddress;
+import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
+import net.onrc.onos.ofcontroller.networkgraph.Port;
+
+/**
+ * @author Toshio Koide (t-koide@onlab.us)
+ */
+public class ConstrainedShortestPathIntent extends ShortestPathIntent {
+	protected Double bandwidth;
+
+	public ConstrainedShortestPathIntent(
+			Port srcPort, MACAddress srcMac,
+			Port dstPort, MACAddress dstMac,
+			Double bandwidth) {
+		super(srcPort, srcMac, dstPort, dstMac);
+		this.bandwidth = bandwidth;
+	}
+
+	public ConstrainedShortestPathIntent(NetworkGraph graph,
+			Long srcSwitch, Long srcPort, long srcMac,
+			Long dstSwitch, Long dstPort, long dstMac,
+			Double bandwidth) {
+		super(graph, srcSwitch, srcPort, srcMac, dstSwitch, dstPort, dstMac);
+		this.bandwidth = bandwidth;
+	}
+
+	public Double getBandwidth() {
+		return bandwidth;
+	}
+}
diff --git a/src/main/java/net/onrc/onos/intent/Intent.java b/src/main/java/net/onrc/onos/intent/Intent.java
new file mode 100644
index 0000000..33888ae
--- /dev/null
+++ b/src/main/java/net/onrc/onos/intent/Intent.java
@@ -0,0 +1,7 @@
+package net.onrc.onos.intent;
+
+/**
+ * @author Toshio Koide (t-koide@onlab.us)
+ */
+public abstract class Intent {
+}
diff --git a/src/main/java/net/onrc/onos/intent/PathIntent.java b/src/main/java/net/onrc/onos/intent/PathIntent.java
new file mode 100644
index 0000000..22948b9
--- /dev/null
+++ b/src/main/java/net/onrc/onos/intent/PathIntent.java
@@ -0,0 +1,38 @@
+package net.onrc.onos.intent;
+
+import net.onrc.onos.ofcontroller.networkgraph.Path;
+
+/**
+ * @author Toshio Koide (t-koide@onlab.us)
+ */
+public class PathIntent extends Intent {
+	protected Path path;
+	protected Double bandwidth;
+	protected Intent parentIntent;
+
+	/**
+	 * 
+	 * @param graph
+	 * @param path
+	 * @param bandwidth bandwidth which should be allocated for the path.
+	 * If null, it means no intent for bandwidth allocation (best effort).
+	 * @param parentIntent parent intent. If null, it means this is root intent.
+	 */
+	public PathIntent(Path path, Double bandwidth, Intent parentIntent) {
+		this.path = path;
+		this.bandwidth = bandwidth;
+		this.parentIntent = parentIntent;
+	}
+
+	public Double getBandwidth() {
+		return bandwidth;
+	}
+
+	public Path getPath() {
+		return path;
+	}
+
+	public Intent getParentIntent() {
+		return parentIntent;
+	}
+}
diff --git a/src/main/java/net/onrc/onos/intent/ShortestPathIntent.java b/src/main/java/net/onrc/onos/intent/ShortestPathIntent.java
new file mode 100644
index 0000000..e7f1a13
--- /dev/null
+++ b/src/main/java/net/onrc/onos/intent/ShortestPathIntent.java
@@ -0,0 +1,56 @@
+package net.onrc.onos.intent;
+
+import net.floodlightcontroller.util.MACAddress;
+import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
+import net.onrc.onos.ofcontroller.networkgraph.Port;
+
+/**
+ * @author Toshio Koide (t-koide@onlab.us)
+ */
+public class ShortestPathIntent extends Intent {
+	protected Port srcPort = null;
+	protected Port dstPort = null;
+	protected MACAddress srcMac = null;
+	protected MACAddress dstMac = null;
+
+	public ShortestPathIntent(
+			Port srcPort, MACAddress srcMac,
+			Port dstPort, MACAddress dstMac) {
+		this.srcPort = srcPort;
+		this.dstPort = dstPort;
+		this.srcMac = srcMac;
+		this.dstMac = dstMac;
+	}
+
+	public ShortestPathIntent(NetworkGraph graph,
+			Long srcSwitch, Long srcPort, long srcMac,
+			Long dstSwitch, Long dstPort, long dstMac) {
+		this.srcPort = graph.getSwitch(srcSwitch).getPort(srcPort);
+		this.dstPort = graph.getSwitch(dstSwitch).getPort(srcPort);
+		this.srcMac = MACAddress.valueOf(srcMac);
+		this.dstMac = MACAddress.valueOf(dstMac);
+	}
+
+	public Port getSourcePort() {
+		return srcPort;
+	}
+
+	public MACAddress getSourceMac() {
+		return srcMac;
+	}
+
+	public Port getDestinationPort() {
+		return dstPort;
+	}
+
+	public MACAddress getDestinationMac() {
+		return dstMac;
+	}
+
+	@Override
+	public String toString() {
+		return String.format("srcPort:%s, srcMac:%s, dstPort:%s, dstMac:%s",
+				srcPort.toString(), srcMac.toString(),
+				dstPort.toString(), dstMac.toString());
+	}
+}
