diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/PacketProcessor.java b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProcessor.java
index fc77c94..aef5568 100644
--- a/core/api/src/main/java/org/onlab/onos/net/packet/PacketProcessor.java
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProcessor.java
@@ -1,6 +1,7 @@
 package org.onlab.onos.net.packet;
 
 
+
 /**
  * Abstraction of an inbound packet processor.
  */
diff --git a/of/api/src/main/java/org/onlab/onos/of/controller/DefaultPacketContext.java b/of/api/src/main/java/org/onlab/onos/of/controller/DefaultOpenFlowPacketContext.java
similarity index 89%
rename from of/api/src/main/java/org/onlab/onos/of/controller/DefaultPacketContext.java
rename to of/api/src/main/java/org/onlab/onos/of/controller/DefaultOpenFlowPacketContext.java
index 60580db..f05a7ff 100644
--- a/of/api/src/main/java/org/onlab/onos/of/controller/DefaultPacketContext.java
+++ b/of/api/src/main/java/org/onlab/onos/of/controller/DefaultOpenFlowPacketContext.java
@@ -11,7 +11,7 @@
 import org.projectfloodlight.openflow.types.OFBufferId;
 import org.projectfloodlight.openflow.types.OFPort;
 
-public final class DefaultPacketContext implements PacketContext {
+public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext {
 
     private boolean free = true;
     private boolean isBuilt = false;
@@ -19,7 +19,7 @@
     private final OFPacketIn pktin;
     private OFPacketOut pktout = null;
 
-    private DefaultPacketContext(OpenFlowSwitch s, OFPacketIn pkt) {
+    private DefaultOpenFlowPacketContext(OpenFlowSwitch s, OFPacketIn pkt) {
         this.sw = s;
         this.pktin = pkt;
     }
@@ -78,8 +78,8 @@
         return new Dpid(sw.getId());
     }
 
-    public static PacketContext packetContextFromPacketIn(OpenFlowSwitch s, OFPacketIn pkt) {
-        return new DefaultPacketContext(s, pkt);
+    public static OpenFlowPacketContext packetContextFromPacketIn(OpenFlowSwitch s, OFPacketIn pkt) {
+        return new DefaultOpenFlowPacketContext(s, pkt);
     }
 
     @Override
diff --git a/of/api/src/main/java/org/onlab/onos/of/controller/PacketContext.java b/of/api/src/main/java/org/onlab/onos/of/controller/OpenFlowPacketContext.java
similarity index 97%
rename from of/api/src/main/java/org/onlab/onos/of/controller/PacketContext.java
rename to of/api/src/main/java/org/onlab/onos/of/controller/OpenFlowPacketContext.java
index 536dd7f..73365e7 100644
--- a/of/api/src/main/java/org/onlab/onos/of/controller/PacketContext.java
+++ b/of/api/src/main/java/org/onlab/onos/of/controller/OpenFlowPacketContext.java
@@ -8,7 +8,7 @@
  * to view the packet in event but may block the response to the
  * event if blocked has been called.
  */
-public interface PacketContext {
+public interface OpenFlowPacketContext {
 
     //TODO: may want to support sending packet out other switches than
     // the one it came in on.
diff --git a/of/api/src/main/java/org/onlab/onos/of/controller/PacketListener.java b/of/api/src/main/java/org/onlab/onos/of/controller/PacketListener.java
index a14f9e1..6bd39b8 100644
--- a/of/api/src/main/java/org/onlab/onos/of/controller/PacketListener.java
+++ b/of/api/src/main/java/org/onlab/onos/of/controller/PacketListener.java
@@ -10,5 +10,5 @@
      *
      * @param pktCtx the packet context
      */
-    public void handlePacket(PacketContext pktCtx);
+    public void handlePacket(OpenFlowPacketContext pktCtx);
 }
diff --git a/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OpenFlowControllerImpl.java b/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OpenFlowControllerImpl.java
index bade605..f1ff6cc 100644
--- a/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OpenFlowControllerImpl.java
+++ b/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OpenFlowControllerImpl.java
@@ -12,7 +12,7 @@
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Service;
-import org.onlab.onos.of.controller.DefaultPacketContext;
+import org.onlab.onos.of.controller.DefaultOpenFlowPacketContext;
 import org.onlab.onos.of.controller.Dpid;
 import org.onlab.onos.of.controller.OpenFlowController;
 import org.onlab.onos.of.controller.OpenFlowSwitch;
@@ -124,7 +124,7 @@
             break;
         case PACKET_IN:
             for (PacketListener p : ofPacketListener) {
-                p.handlePacket(DefaultPacketContext
+                p.handlePacket(DefaultOpenFlowPacketContext
                         .packetContextFromPacketIn(this.getSwitch(dpid),
                                 (OFPacketIn) msg));
             }
diff --git a/providers/of/link/src/main/java/org/onlab/onos/provider/of/link/impl/OpenFlowLinkProvider.java b/providers/of/link/src/main/java/org/onlab/onos/provider/of/link/impl/OpenFlowLinkProvider.java
index 02239ab..8f6c612 100644
--- a/providers/of/link/src/main/java/org/onlab/onos/provider/of/link/impl/OpenFlowLinkProvider.java
+++ b/providers/of/link/src/main/java/org/onlab/onos/provider/of/link/impl/OpenFlowLinkProvider.java
@@ -15,7 +15,7 @@
 import org.onlab.onos.of.controller.OpenFlowController;
 import org.onlab.onos.of.controller.OpenFlowSwitch;
 import org.onlab.onos.of.controller.OpenFlowSwitchListener;
-import org.onlab.onos.of.controller.PacketContext;
+import org.onlab.onos.of.controller.OpenFlowPacketContext;
 import org.onlab.onos.of.controller.PacketListener;
 import org.projectfloodlight.openflow.protocol.OFPortConfig;
 import org.projectfloodlight.openflow.protocol.OFPortDesc;
@@ -87,7 +87,7 @@
 
 
         @Override
-        public void handlePacket(PacketContext pktCtx) {
+        public void handlePacket(OpenFlowPacketContext pktCtx) {
             LinkDiscovery ld = discoverers.get(pktCtx.dpid());
             if (ld == null) {
                 return;
