diff --git a/core/api/src/main/java/org/onlab/onos/net/PortNumber.java b/core/api/src/main/java/org/onlab/onos/net/PortNumber.java
index 93ec91d..56e15a2 100644
--- a/core/api/src/main/java/org/onlab/onos/net/PortNumber.java
+++ b/core/api/src/main/java/org/onlab/onos/net/PortNumber.java
@@ -13,12 +13,13 @@
 
     private static final long MAX_NUMBER = (2L * Integer.MAX_VALUE) + 1;
 
-    public static final PortNumber FLOOD = new PortNumber(-1);
-    public static final PortNumber IN_PORT = new PortNumber(-2);
-    public static final PortNumber TABLE = new PortNumber(-3);
-    public static final PortNumber NORMAL = new PortNumber(-4);
+
+    public static final PortNumber IN_PORT = new PortNumber(-8);
+    public static final PortNumber TABLE = new PortNumber(-7);
+    public static final PortNumber NORMAL = new PortNumber(-6);
+    public static final PortNumber FLOOD = new PortNumber(-5);
     public static final PortNumber ALL = new PortNumber(-4);
-    public static final PortNumber LOCAL = new PortNumber(-5);
+    public static final PortNumber LOCAL = new PortNumber(-2);
 
     private final long number;
 
diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/DefaultPacketContext.java b/core/api/src/main/java/org/onlab/onos/net/packet/DefaultPacketContext.java
index 923f168..3c2b0ea 100644
--- a/core/api/src/main/java/org/onlab/onos/net/packet/DefaultPacketContext.java
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/DefaultPacketContext.java
@@ -1,5 +1,7 @@
 package org.onlab.onos.net.packet;
 
+import java.util.concurrent.atomic.AtomicBoolean;
+
 import org.onlab.onos.net.flow.DefaultTrafficTreatment;
 import org.onlab.onos.net.flow.TrafficTreatment;
 import org.onlab.onos.net.flow.TrafficTreatment.Builder;
@@ -12,7 +14,7 @@
     private final OutboundPacket outPkt;
     private final TrafficTreatment.Builder builder;
 
-    private boolean block = false;
+    private final AtomicBoolean block;
 
 
     protected DefaultPacketContext(long time, InboundPacket inPkt,
@@ -21,7 +23,7 @@
         this.time = time;
         this.inPkt = inPkt;
         this.outPkt = outPkt;
-        this.block = block;
+        this.block = new AtomicBoolean(block);
         this.builder = new DefaultTrafficTreatment.Builder();
     }
 
@@ -49,13 +51,12 @@
     public abstract void send();
 
     @Override
-    public void block() {
-        this.block = true;
+    public boolean blocked() {
+        return this.block.getAndSet(true);
     }
 
     @Override
     public boolean isHandled() {
-        return this.block;
+        return this.block.get();
     }
-
 }
diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/PacketContext.java b/core/api/src/main/java/org/onlab/onos/net/packet/PacketContext.java
index b77635b..ce08fde 100644
--- a/core/api/src/main/java/org/onlab/onos/net/packet/PacketContext.java
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/PacketContext.java
@@ -43,14 +43,13 @@
 
     /**
      * Blocks the outbound packet from being sent from this point onward.
+     * @return whether the outbound packet is blocked.
      */
-    void block();
+    boolean blocked();
 
     /**
-     * Indicates whether the packet has already been handled, i.e. sent or
-     * blocked.
-     *
-     * @return true if sent or blocked
+     * Check whether the outbound packet is blocked.
+     * @return
      */
     boolean isHandled();
 
diff --git a/core/api/src/test/java/org/onlab/onos/net/device/DeviceEventTest.java b/core/api/src/test/java/org/onlab/onos/net/device/DeviceEventTest.java
index 6f1219a..7175308 100644
--- a/core/api/src/test/java/org/onlab/onos/net/device/DeviceEventTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/device/DeviceEventTest.java
@@ -1,5 +1,8 @@
 package org.onlab.onos.net.device;
 
+import static org.junit.Assert.assertEquals;
+import static org.onlab.onos.net.DeviceId.deviceId;
+
 import org.junit.Test;
 import org.onlab.onos.event.AbstractEventTest;
 import org.onlab.onos.net.DefaultDevice;
@@ -9,9 +12,6 @@
 import org.onlab.onos.net.PortNumber;
 import org.onlab.onos.net.provider.ProviderId;
 
-import static org.junit.Assert.assertEquals;
-import static org.onlab.onos.net.DeviceId.deviceId;
-
 /**
  * Tests of the device event.
  */
@@ -19,23 +19,25 @@
 
     private Device createDevice() {
         return new DefaultDevice(new ProviderId("foo"), deviceId("of:foo"),
-                                 Device.Type.SWITCH, "box", "hw", "sw", "sn");
+                Device.Type.SWITCH, "box", "hw", "sw", "sn");
     }
 
+    @Override
     @Test
     public void withTime() {
         Device device = createDevice();
-        Port port = new DefaultPort(device, PortNumber.portNumber(123L), true);
+        Port port = new DefaultPort(device, PortNumber.portNumber(123), true);
         DeviceEvent event = new DeviceEvent(DeviceEvent.Type.DEVICE_ADDED,
-                                            device, port, 123L);
+                device, port, 123L);
         validateEvent(event, DeviceEvent.Type.DEVICE_ADDED, device, 123L);
         assertEquals("incorrect port", port, event.port());
     }
 
+    @Override
     @Test
     public void withoutTime() {
         Device device = createDevice();
-        Port port = new DefaultPort(device, PortNumber.portNumber(123L), true);
+        Port port = new DefaultPort(device, PortNumber.portNumber(123), true);
         long before = System.currentTimeMillis();
         DeviceEvent event = new DeviceEvent(DeviceEvent.Type.DEVICE_ADDED, device);
         long after = System.currentTimeMillis();
