diff --git a/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowPacketProvider.java b/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowPacketProvider.java
index c854daa..44a3a58 100644
--- a/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowPacketProvider.java
+++ b/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowPacketProvider.java
@@ -2,17 +2,24 @@
 
 import static org.slf4j.LoggerFactory.getLogger;
 
+import java.nio.ByteBuffer;
+
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.onlab.onos.net.ConnectPoint;
+import org.onlab.onos.net.DeviceId;
+import org.onlab.onos.net.PortNumber;
+import org.onlab.onos.net.packet.DefaultInboundPacket;
 import org.onlab.onos.net.packet.OutboundPacket;
 import org.onlab.onos.net.packet.PacketProvider;
 import org.onlab.onos.net.packet.PacketProviderRegistry;
 import org.onlab.onos.net.packet.PacketProviderService;
 import org.onlab.onos.net.provider.AbstractProvider;
 import org.onlab.onos.net.provider.ProviderId;
+import org.onlab.onos.of.controller.Dpid;
 import org.onlab.onos.of.controller.OpenFlowController;
 import org.onlab.onos.of.controller.OpenFlowPacketContext;
 import org.onlab.onos.of.controller.PacketListener;
@@ -35,12 +42,8 @@
 
     private PacketProviderService providerService;
 
-    private final boolean useBDDP = true;
-
     private final InternalPacketProvider listener = new InternalPacketProvider();
 
-
-
     /**
      * Creates an OpenFlow link provider.
      */
@@ -51,7 +54,7 @@
     @Activate
     public void activate() {
         providerService = providerRegistry.register(this);
-        controller.addPacketListener(0, listener);
+        controller.addPacketListener(1, listener);
         log.info("Started");
     }
 
@@ -65,18 +68,29 @@
 
     @Override
     public void emit(OutboundPacket packet) {
-        // TODO Auto-generated method stub
 
     }
 
 
+    /**
+     * Internal Packet Provider implementation.
+     *
+     */
     private class InternalPacketProvider implements PacketListener {
 
 
         @Override
         public void handlePacket(OpenFlowPacketContext pktCtx) {
+            DeviceId id = DeviceId.deviceId(Dpid.uri(pktCtx.dpid().value()));
 
+            DefaultInboundPacket inPkt = new DefaultInboundPacket(
+                    new ConnectPoint(id, PortNumber.portNumber(pktCtx.inPort())),
+                    pktCtx.parsed(), ByteBuffer.wrap(pktCtx.unparsed()));
 
+            OpenFlowCorePacketContext corePktCtx =
+                    new OpenFlowCorePacketContext(0, inPkt, null, false, pktCtx,
+                            controller.getSwitch(pktCtx.dpid()));
+            providerService.processPacket(corePktCtx);
         }
 
     }
