diff --git a/src/main/java/net/onrc/onos/intent/runtime/PathInstallRuntime.java b/src/main/java/net/onrc/onos/intent/runtime/PathInstallRuntime.java
new file mode 100644
index 0000000..0b74cfc
--- /dev/null
+++ b/src/main/java/net/onrc/onos/intent/runtime/PathInstallRuntime.java
@@ -0,0 +1,48 @@
+package net.onrc.onos.intent.runtime;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import net.floodlightcontroller.core.IFloodlightProviderService;
+import net.floodlightcontroller.core.IOFSwitch;
+import net.onrc.onos.intent.FlowEntry;
+import net.onrc.onos.ofcontroller.flowprogrammer.IFlowPusherService;
+import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
+import net.onrc.onos.ofcontroller.util.Pair;
+
+/**
+ * 
+ * @author Brian O'Connor <bocon@onlab.us>
+ *
+ */
+
+public class PathInstallRuntime {
+    NetworkGraph graph;
+    IFlowPusherService pusher;
+    IFloodlightProviderService provider;
+    protected List<Set<FlowEntry>> plan;
+
+    public PathInstallRuntime(NetworkGraph graph) {
+	this.graph = graph;
+    }
+
+    public void installPlan(List<Set<FlowEntry>> plan) {
+	this.plan = plan;
+	Map<Long,IOFSwitch> switches = provider.getSwitches();
+	for(Set<FlowEntry> phase : plan) {
+	    Set<Pair<IOFSwitch, net.onrc.onos.ofcontroller.util.FlowEntry>> entries 
+	    = new HashSet<>();
+	    // convert flow entries and create pairs
+	    for(FlowEntry entry : phase) {
+		entries.add(new Pair<>(switches.get(entry.getSwitch().getDpid()), 
+			entry.getFlowEntry()));
+	    }
+	    // push flow entries to switches
+	    pusher.pushFlowEntries(entries);
+	    // TODO: wait for confirmation messages before proceeding
+	}
+    }
+
+}
