diff --git a/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowCorePacketContext.java b/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowCorePacketContext.java
index aeb9542..55476d0 100644
--- a/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowCorePacketContext.java
+++ b/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowCorePacketContext.java
@@ -2,6 +2,11 @@
 
 import static org.slf4j.LoggerFactory.getLogger;
 
+import java.util.List;
+
+import org.onlab.onos.net.PortNumber;
+import org.onlab.onos.net.flow.Instruction;
+import org.onlab.onos.net.flow.Instruction.Type;
 import org.onlab.onos.net.packet.DefaultPacketContext;
 import org.onlab.onos.net.packet.InboundPacket;
 import org.onlab.onos.net.packet.OutboundPacket;
@@ -24,18 +29,36 @@
 
     @Override
     public void send() {
-        if (!this.isHandled()) {
-            block();
+        if (!this.blocked()) {
             if (outPacket() == null) {
-                ofPktCtx.build(OFPort.FLOOD);
+                sendBufferedPacket();
             } else {
                 Ethernet eth = new Ethernet();
                 eth.deserialize(outPacket().data().array(), 0,
                         outPacket().data().array().length);
                 ofPktCtx.build(eth, OFPort.FLOOD);
             }
-            ofPktCtx.send();
+
         }
     }
 
+    @SuppressWarnings({ "rawtypes", "unchecked" })
+    private void sendBufferedPacket() {
+        List<Instruction> ins = treatmentBuilder().build().instructions();
+        OFPort p = null;
+        //TODO: support arbitrary list of treatments
+        for (Instruction i : ins) {
+            if (i.type() == Type.OUTPUT) {
+                p = buildPort(((Instruction<PortNumber>) i).instruction());
+                break; //for now...
+            }
+        }
+        ofPktCtx.build(p);
+        ofPktCtx.send();
+    }
+
+    private OFPort buildPort(PortNumber port) {
+        return OFPort.of((int) port.toLong());
+    }
+
 }
