diff --git a/core/api/src/main/java/org/onosproject/net/driver/AbstractBehaviour.java b/core/api/src/main/java/org/onosproject/net/driver/AbstractBehaviour.java
index eb6a302..001c490 100644
--- a/core/api/src/main/java/org/onosproject/net/driver/AbstractBehaviour.java
+++ b/core/api/src/main/java/org/onosproject/net/driver/AbstractBehaviour.java
@@ -26,4 +26,9 @@
     public void setData(DriverData data) {
         this.data = data;
     }
+
+    @Override
+    public DriverData data() {
+        return data;
+    }
 }
diff --git a/core/api/src/main/java/org/onosproject/net/driver/Behaviour.java b/core/api/src/main/java/org/onosproject/net/driver/Behaviour.java
index 7257eed..208eef7 100644
--- a/core/api/src/main/java/org/onosproject/net/driver/Behaviour.java
+++ b/core/api/src/main/java/org/onosproject/net/driver/Behaviour.java
@@ -29,4 +29,11 @@
      */
     void setData(DriverData data);
 
+    /**
+     * Obtains the driver data.
+     *
+     * @return driver data
+     */
+    DriverData data();
+
 }
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultFilteringObjective.java b/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultFilteringObjective.java
index 4c1b71f..da92b80 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultFilteringObjective.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultFilteringObjective.java
@@ -32,7 +32,7 @@
 public final class DefaultFilteringObjective implements FilteringObjective {
 
 
-    private final Criterion key;
+    private final Type type;
     private final boolean permanent;
     private final int timeout;
     private final ApplicationId appId;
@@ -41,10 +41,10 @@
     private final int id;
     private final Operation op;
 
-    private DefaultFilteringObjective(Criterion key, boolean permanent, int timeout,
+    private DefaultFilteringObjective(Type type, boolean permanent, int timeout,
                                       ApplicationId appId, int priority,
                                       List<Criterion> conditions, Operation op) {
-        this.key = key;
+        this.type = type;
         this.permanent = permanent;
         this.timeout = timeout;
         this.appId = appId;
@@ -52,14 +52,13 @@
         this.conditions = conditions;
         this.op = op;
 
-        this.id = Objects.hash(key, conditions, permanent,
+        this.id = Objects.hash(type, conditions, permanent,
                                timeout, appId, priority);
     }
 
-
     @Override
-    public Criterion key() {
-        return key;
+    public Type type() {
+        return this.type;
     }
 
     @Override
@@ -111,7 +110,7 @@
         private final ImmutableList.Builder<Criterion> listBuilder
                 = ImmutableList.builder();
 
-        private Criterion key;
+        private Type type;
         private boolean permanent = DEFAULT_PERMANENT;
         private int timeout = DEFAULT_TIMEOUT;
         private ApplicationId appId;
@@ -124,8 +123,14 @@
         }
 
         @Override
-        public Builder withKey(Criterion criterion) {
-            key = criterion;
+        public Builder permit() {
+            this.type = Type.PERMIT;
+            return this;
+        }
+
+        @Override
+        public Builder deny() {
+            this.type = Type.DENY;
             return this;
         }
 
@@ -157,11 +162,11 @@
         @Override
         public FilteringObjective add() {
             List<Criterion> conditions = listBuilder.build();
-            checkNotNull(key, "Must have a key.");
+            checkNotNull(type, "Must have a type.");
             checkArgument(!conditions.isEmpty(), "Must have at least one condition.");
             checkNotNull(appId, "Must supply an application id");
 
-            return new DefaultFilteringObjective(key, permanent, timeout,
+            return new DefaultFilteringObjective(type, permanent, timeout,
                                                 appId, priority, conditions,
                                                 Operation.ADD);
 
@@ -170,11 +175,11 @@
         @Override
         public FilteringObjective remove() {
             List<Criterion> conditions = listBuilder.build();
-            checkNotNull(key, "Must have a key.");
+            checkNotNull(type, "Must have a type.");
             checkArgument(!conditions.isEmpty(), "Must have at least one condition.");
             checkNotNull(appId, "Must supply an application id");
 
-            return new DefaultFilteringObjective(key, permanent, timeout,
+            return new DefaultFilteringObjective(type, permanent, timeout,
                                                  appId, priority, conditions,
                                                  Operation.REMOVE);
 
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java b/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java
index 93f62ac9..24ca2dc 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.net.flowobjective;
 
+import org.onosproject.core.ApplicationId;
 import org.onosproject.net.flow.criteria.Criterion;
 
 import java.util.Collection;
@@ -27,12 +28,23 @@
  */
 public interface FilteringObjective extends Objective {
 
+    enum Type {
+        /**
+         * Enables the filtering condition.
+         */
+        PERMIT,
+
+        /**
+         * Disables the filtering condition.
+         */
+        DENY
+    }
+
     /**
-     * Represents filtering key used in this filter.
-     *
-     * @return a criterion
+     * Obtain this filtering type.
+     * @return the type
      */
-    Criterion key();
+    public Type type();
 
     /**
      * The set of conditions the filter must provision at the device.
@@ -55,12 +67,23 @@
         public Builder addCondition(Criterion criterion);
 
         /**
-         * Add a filtering key.
-         *
-         * @param criterion new criterion
-         * @return a filtering builder.
+         * Permit this filtering condition set.
+         * @return a filtering builder
          */
-        public Builder withKey(Criterion criterion);
+        public Builder permit();
+
+        /**
+         * Deny this filtering condition set.
+         * @return a filtering builder
+         */
+        public Builder deny();
+
+        /**
+         * Assigns an application id.
+         * @param appId an application id
+         * @return a filtering builder
+         */
+        public Builder fromApp(ApplicationId appId);
 
         /**
          * Builds the filtering objective that will be added.
