diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/Criteria.java b/core/api/src/main/java/org/onlab/onos/net/flow/Criteria.java
index 9595797..4717cc4 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/Criteria.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/Criteria.java
@@ -20,6 +20,18 @@
         return null;
     }
 
+    /**
+     * Creates a match on ETH_DST field using the specified value. This value
+     * may be a wildcard mask.
+     *
+     * @param macValue MAC address value or wildcard mask
+     * @return match criterion
+     */
+    public static Criterion matchEthDst(MACValue macValue) {
+        return null;
+    }
+
+
     // Dummy to illustrate the concept for now; delete ASAP
     private static class MACValue { }
 }
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRule.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRule.java
index 7204745..5f44630 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRule.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRule.java
@@ -2,14 +2,14 @@
 
 import org.onlab.onos.net.DeviceId;
 
-import java.util.List;
-
 /**
  * Represents a generalized match &amp; action pair to be applied to
  * an infrastucture device.
  */
 public interface FlowRule {
 
+    //TODO: build cookie value
+
     /**
      * Returns the flow rule priority given in natural order; higher numbers
      * mean higher priorities.
@@ -38,6 +38,6 @@
      *
      * @return traffic treatment
      */
-    List<Treatment> treatments();
+    TrafficTreatment treatment();
 
 }
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
index 76689c2..661b195 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
@@ -22,4 +22,11 @@
      */
     void flowMissing(FlowRule flowRule);
 
+    /**
+     * Signals that a flow rule was indeed added.
+     *
+     * @param flowRule the added flow rule
+     */
+    void flowAdded(FlowRule flowRule);
+
 }
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleService.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleService.java
index ccb6a51..724051f 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleService.java
@@ -26,6 +26,15 @@
     void applyFlowRules(FlowRule... flowRules);
 
     /**
+     * Removes the specified flow rules from their respective devices.
+     *
+     * @param flowRules one or more flow rules
+     * throws SomeKindOfException that indicates which ones were removed and
+     *                  which ones failed
+     */
+    void removeFlowRules(FlowRule... flowRules);
+
+    /**
      * Adds the specified flow rule listener.
      *
      * @param listener flow rule listener
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/TrafficSelector.java b/core/api/src/main/java/org/onlab/onos/net/flow/TrafficSelector.java
index c024e9c..9678dc1 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/TrafficSelector.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/TrafficSelector.java
@@ -24,8 +24,9 @@
          * already been added, it will be replaced by this one.
          *
          * @param criterion new criterion
+         * @return self
          */
-        void add(Criterion criterion);
+        Builder add(Criterion criterion);
 
         /**
          * Builds an immutable traffic selector.
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/TrafficTreatment.java b/core/api/src/main/java/org/onlab/onos/net/flow/TrafficTreatment.java
index 0eb5299..b8b9c10 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/TrafficTreatment.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/TrafficTreatment.java
@@ -25,7 +25,7 @@
          *
          * @param instruction new instruction
          */
-        void add(Instruction instruction);
+        Builder add(Instruction instruction);
 
         /**
          * Builds an immutable traffic treatment descriptor.
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 a53a08c..fc77c94 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,10 +1,15 @@
 package org.onlab.onos.net.packet;
 
+
 /**
  * Abstraction of an inbound packet processor.
  */
 public interface PacketProcessor {
 
+    public static final int ADVISOR_MAX = Integer.MAX_VALUE / 3;
+    public static final int DIRECTOR_MAX = (Integer.MAX_VALUE / 3) * 2;
+    public static final int OBSERVER_MAX = Integer.MAX_VALUE;
+
     /**
      * Processes the inbound packet as specified in the given context.
      *
diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/PacketProvider.java b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProvider.java
index 14597ee..738c801 100644
--- a/core/api/src/main/java/org/onlab/onos/net/packet/PacketProvider.java
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProvider.java
@@ -1,9 +1,11 @@
 package org.onlab.onos.net.packet;
 
+import org.onlab.onos.net.provider.Provider;
+
 /**
  * Abstraction of a packet provider capable of emitting packets.
  */
-public interface PacketProvider {
+public interface PacketProvider extends Provider{
 
     /**
      * Emits the specified outbound packet onto the network.
diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/PacketProviderRegistry.java b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProviderRegistry.java
new file mode 100644
index 0000000..86df510
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProviderRegistry.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.packet;
+
+import org.onlab.onos.net.provider.ProviderRegistry;
+
+/**
+ * Abstraction of an infrastructure packet provider registry.
+ */
+public interface PacketProviderRegistry
+extends ProviderRegistry<PacketProvider, PacketProviderService> {
+}
diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/PacketProviderService.java b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProviderService.java
index 1b58f3e..217ce1f 100644
--- a/core/api/src/main/java/org/onlab/onos/net/packet/PacketProviderService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProviderService.java
@@ -1,9 +1,11 @@
 package org.onlab.onos.net.packet;
 
+import org.onlab.onos.net.provider.ProviderService;
+
 /**
  * Entity capable of processing inbound packets.
  */
-public interface PacketProviderService {
+public interface PacketProviderService extends ProviderService<PacketProvider>{
 
     /**
      * Submits inbound packet context for processing. This processing will be
diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/PacketService.java b/core/api/src/main/java/org/onlab/onos/net/packet/PacketService.java
index 5debf1b..d2db536 100644
--- a/core/api/src/main/java/org/onlab/onos/net/packet/PacketService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/PacketService.java
@@ -18,7 +18,7 @@
      * @throws java.lang.IllegalArgumentException if a processor with the
      *                                            given priority already exists
      */
-    void addProcessor(PacketProcessor processor, long priority);
+    void addProcessor(PacketProcessor processor, int priority);
 
     /**
      * Removes the specified processor from the processing pipeline.
