diff --git a/lib/openflowj-2.0.0-SNAPSHOT.jar b/lib/openflowj-2.0.0-SNAPSHOT.jar
index 42b49cbd10d259a432cb3f72930b9d2237a7aef3..7f25d80d801bfca393c2ea807f9df8349c418fac 100644
Binary files a/lib/openflowj-2.0.0-SNAPSHOT.jar and b/lib/openflowj-2.0.0-SNAPSHOT.jar differ
diff --git a/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java b/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java
index aef485f3a8c727fff837ccd9ca9f43ea92ab28d5..19a51d1eb77eb45d8f729447e153a0ddeedb7012 100644
--- a/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java
+++ b/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java
@@ -51,6 +51,7 @@ import net.floodlightcontroller.routing.IRoutingService;
 import net.floodlightcontroller.routing.Route;
 import net.floodlightcontroller.topology.ITopologyService;
 import net.floodlightcontroller.topology.NodePortTuple;
+import net.floodlightcontroller.util.FlowModUtils;
 import net.floodlightcontroller.util.OFDPAUtils;
 import net.floodlightcontroller.util.OFPortMode;
 import net.floodlightcontroller.util.OFPortModeTuple;
@@ -139,8 +140,9 @@ public class Forwarding extends ForwardingBase implements IFloodlightModule, IOF
 		.setIdleTimeout(FLOWMOD_DEFAULT_IDLE_TIMEOUT)
 		.setBufferId(OFBufferId.NO_BUFFER)
 		.setMatch(m)
-		.setActions(actions) // empty list
 		.setPriority(FLOWMOD_DEFAULT_PRIORITY);
+		
+		FlowModUtils.setActions(fmb, actions, sw);
 
 		try {
 			if (log.isDebugEnabled()) {
diff --git a/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
index 5cf593b3d4dcc353288c251530066d588ac16d2e..2cf719931d20e71f150e59f254fdedd978aab14e 100644
--- a/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
+++ b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
@@ -41,6 +41,7 @@ import net.floodlightcontroller.routing.IRoutingDecision;
 import net.floodlightcontroller.routing.Route;
 import net.floodlightcontroller.topology.ITopologyService;
 import net.floodlightcontroller.topology.NodePortTuple;
+import net.floodlightcontroller.util.FlowModUtils;
 import net.floodlightcontroller.util.MatchUtils;
 import net.floodlightcontroller.util.OFDPAUtils;
 import net.floodlightcontroller.util.OFMessageDamper;
@@ -247,7 +248,6 @@ public abstract class ForwardingBase implements IOFMessageListener {
 			}
 			
 			fmb.setMatch(mb.build())
-			.setActions(actions)
 			.setIdleTimeout(FLOWMOD_DEFAULT_IDLE_TIMEOUT)
 			.setHardTimeout(FLOWMOD_DEFAULT_HARD_TIMEOUT)
 			.setBufferId(OFBufferId.NO_BUFFER)
@@ -255,6 +255,8 @@ public abstract class ForwardingBase implements IOFMessageListener {
 			.setOutPort(outPort)
 			.setPriority(FLOWMOD_DEFAULT_PRIORITY);
 			
+			FlowModUtils.setActions(fmb, actions, sw);
+			
 			try {
 				if (log.isTraceEnabled()) {
 					log.trace("Pushing Route flowmod routeIndx={} " +
@@ -445,8 +447,9 @@ public abstract class ForwardingBase implements IOFMessageListener {
 		.setIdleTimeout(FLOWMOD_DEFAULT_IDLE_TIMEOUT)
 		.setPriority(FLOWMOD_DEFAULT_PRIORITY)
 		.setBufferId(OFBufferId.NO_BUFFER)
-		.setMatch(mb.build())
-		.setActions(actions);
+		.setMatch(mb.build());
+		
+		FlowModUtils.setActions(fmb, actions, sw);
 
 		log.debug("write drop flow-mod sw={} match={} flow-mod={}",
 					new Object[] { sw, mb.build(), fmb.build() });
diff --git a/src/main/java/net/floodlightcontroller/util/FlowModUtils.java b/src/main/java/net/floodlightcontroller/util/FlowModUtils.java
index 9a8d6cdbdeaada086daa8f8627da1c426d3f5f1c..8f7645b725bdcc467b6c5e98fce6b3247d7cffe3 100644
--- a/src/main/java/net/floodlightcontroller/util/FlowModUtils.java
+++ b/src/main/java/net/floodlightcontroller/util/FlowModUtils.java
@@ -1,5 +1,10 @@
 package net.floodlightcontroller.util;
 
+import java.util.Collections;
+import java.util.List;
+
+import net.floodlightcontroller.core.IOFSwitch;
+
 import org.projectfloodlight.openflow.protocol.OFFactories;
 import org.projectfloodlight.openflow.protocol.OFFlowAdd;
 import org.projectfloodlight.openflow.protocol.OFFlowDelete;
@@ -8,6 +13,8 @@ import org.projectfloodlight.openflow.protocol.OFFlowMod;
 import org.projectfloodlight.openflow.protocol.OFFlowModify;
 import org.projectfloodlight.openflow.protocol.OFFlowModifyStrict;
 import org.projectfloodlight.openflow.protocol.OFVersion;
+import org.projectfloodlight.openflow.protocol.action.OFAction;
+import org.projectfloodlight.openflow.protocol.instruction.OFInstruction;
 
 /**
  * Convert an OFFlowMod to a specific OFFlowMod-OFFlowModCommand.
@@ -221,4 +228,23 @@ public class FlowModUtils {
 					.build();
 		}
 	}
+	
+	/**
+	 * Sets the actions in fmb according to the sw version.
+	 * 
+	 * @param fmb the FlowMod Builder that is being built
+	 * @param actions the actions to set
+	 * @param sw the switch that will receive the FlowMod
+	 */
+	public static void setActions(OFFlowMod.Builder fmb,
+			List<OFAction> actions, IOFSwitch sw) {
+		if (sw.getOFFactory().getVersion().compareTo(OFVersion.OF_11) >= 0) {
+			// Instructions are used starting in OF 1.1
+			fmb.setInstructions(Collections.singletonList((OFInstruction) sw
+					.getOFFactory().instructions().applyActions(actions)));
+		} else {
+			// OF 1.0 only supports actions
+			fmb.setActions(actions);
+		}
+	}
 }