diff --git a/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java b/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java
index 564a2da..5857438 100644
--- a/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java
+++ b/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java
@@ -39,6 +39,7 @@
 public class ReactiveForwarding {
 
     private static final int TIMEOUT = 10;
+    private static final int PRIORITY = 10;
 
     private final Logger log = getLogger(getClass());
 
@@ -194,7 +195,7 @@
             treat.setOutput(portNumber);
 
             FlowRule f = new DefaultFlowRule(context.inPacket().receivedFrom().deviceId(),
-                    builder.build(), treat.build(), 0, appId, TIMEOUT);
+                    builder.build(), treat.build(), PRIORITY, appId, TIMEOUT);
 
             flowRuleService.applyFlowRules(f);
         }
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/FlowsListCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/FlowsListCommand.java
index 41f30a7..d49ae6e 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/FlowsListCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/FlowsListCommand.java
@@ -96,7 +96,7 @@
         }
         for (FlowRule f : flows) {
             print(FMT, Long.toHexString(f.id().value()), f.state(), f.bytes(),
-                    f.packets(), f.lifeMillis(), f.priority());
+                    f.packets(), f.life(), f.priority());
             print(SFMT, f.selector().criteria());
             print(TFMT, f.treatment().instructions());
         }
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/DefaultFlowRule.java b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultFlowRule.java
index d489870..9b44fc2 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/DefaultFlowRule.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultFlowRule.java
@@ -29,9 +29,23 @@
 
     private final int timeout;
 
+    /**
+     * Creates a flow rule given the following paremeters.
+     * @param deviceId the device where the rule should be installed
+     * @param selector the traffic selection
+     * @param treatment how the seleted traffic should be handled
+     * @param priority the rule priority cannot be less than FlowRule.MIN_PRIORITY
+     * @param state the state in which the rule is
+     * @param life how long it has existed for (ms)
+     * @param packets number of packets it has seen
+     * @param bytes number of bytes  it has seen
+     * @param flowId the identifier
+     * @param timeout the rule's timeout (idle) not to exceed
+     *  FlowRule.MAX_TIMEOUT of idle time
+     */
     public DefaultFlowRule(DeviceId deviceId, TrafficSelector selector,
             TrafficTreatment treatment, int priority, FlowRuleState state,
-            long life, long packets, long bytes, long flowId, boolean expired,
+            long life, long packets, long bytes, long flowId,
             int timeout) {
         this.deviceId = deviceId;
         this.priority = priority;
@@ -50,8 +64,7 @@
     public DefaultFlowRule(DeviceId deviceId, TrafficSelector selector,
             TrafficTreatment treatement, int priority, ApplicationId appId,
             int timeout) {
-
-        this(deviceId, selector, treatement, priority == 0 ? 1 : priority,
+        this(deviceId, selector, treatement, priority,
                 FlowRuleState.CREATED, appId, timeout);
     }
 
@@ -65,6 +78,9 @@
             TrafficSelector selector, TrafficTreatment treatment,
             int priority, FlowRuleState state, ApplicationId appId,
             int timeout) {
+        if (priority < MIN_PRIORITY) {
+            throw new IllegalArgumentException("Priority cannot be less than " + MIN_PRIORITY);
+        }
         this.deviceId = deviceId;
         this.priority = priority;
         this.selector = selector;
@@ -131,7 +147,7 @@
     }
 
     @Override
-    public long lifeMillis() {
+    public long life() {
         return life;
     }
 
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 4d1b3cf..9b76f32 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
@@ -10,6 +10,7 @@
 public interface FlowRule {
 
     static final int MAX_TIMEOUT = 60;
+    static final int MIN_PRIORITY = 0;
 
     public enum FlowRuleState {
         /**
@@ -96,7 +97,7 @@
      *
      * @return number of millis
      */
-    long lifeMillis();
+    long life();
 
     /**
      * Returns the number of packets this flow rule has matched.
diff --git a/core/net/src/main/java/org/onlab/onos/net/intent/impl/PathIntentInstaller.java b/core/net/src/main/java/org/onlab/onos/net/intent/impl/PathIntentInstaller.java
index 6aa9f66..84e8c79 100644
--- a/core/net/src/main/java/org/onlab/onos/net/intent/impl/PathIntentInstaller.java
+++ b/core/net/src/main/java/org/onlab/onos/net/intent/impl/PathIntentInstaller.java
@@ -1,5 +1,7 @@
 package org.onlab.onos.net.intent.impl;
 
+import java.util.Iterator;
+
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
@@ -19,8 +21,6 @@
 import org.onlab.onos.net.intent.IntentInstaller;
 import org.onlab.onos.net.intent.PathIntent;
 
-import java.util.Iterator;
-
 /**
  * Installer for {@link PathIntent path connectivity intents}.
  */
@@ -60,7 +60,7 @@
 
             FlowRule rule = new DefaultFlowRule(link.src().deviceId(),
                                                 builder.build(), treat.build(),
-                                                0, appId, 30);
+                                                10, appId, 30);
             flowRuleService.applyFlowRules(rule);
 
             prev = link.dst();
diff --git a/core/net/src/test/java/org/onlab/onos/net/flow/impl/FlowRuleManagerTest.java b/core/net/src/test/java/org/onlab/onos/net/flow/impl/FlowRuleManagerTest.java
index 0b451c0..8922fd9 100644
--- a/core/net/src/test/java/org/onlab/onos/net/flow/impl/FlowRuleManagerTest.java
+++ b/core/net/src/test/java/org/onlab/onos/net/flow/impl/FlowRuleManagerTest.java
@@ -100,7 +100,7 @@
     private FlowRule flowRule(int tsval, int trval) {
         TestSelector ts = new TestSelector(tsval);
         TestTreatment tr = new TestTreatment(trval);
-        return new DefaultFlowRule(DID, ts, tr, 0, appId, TIMEOUT);
+        return new DefaultFlowRule(DID, ts, tr, 10, appId, TIMEOUT);
     }
 
     private FlowRule flowRule(FlowRule rule, FlowRuleState state) {
diff --git a/providers/openflow/flow/src/main/java/org/onlab/onos/provider/of/flow/impl/FlowRuleBuilder.java b/providers/openflow/flow/src/main/java/org/onlab/onos/provider/of/flow/impl/FlowRuleBuilder.java
index 876bc27..70727d3 100644
--- a/providers/openflow/flow/src/main/java/org/onlab/onos/provider/of/flow/impl/FlowRuleBuilder.java
+++ b/providers/openflow/flow/src/main/java/org/onlab/onos/provider/of/flow/impl/FlowRuleBuilder.java
@@ -18,7 +18,6 @@
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 import org.projectfloodlight.openflow.protocol.OFFlowRemoved;
-import org.projectfloodlight.openflow.protocol.OFFlowRemovedReason;
 import org.projectfloodlight.openflow.protocol.OFFlowStatsEntry;
 import org.projectfloodlight.openflow.protocol.OFInstructionType;
 import org.projectfloodlight.openflow.protocol.action.OFAction;
@@ -76,17 +75,16 @@
         if (addedRule) {
             return new DefaultFlowRule(DeviceId.deviceId(Dpid.uri(dpid)),
                     buildSelector(), buildTreatment(), stat.getPriority(),
-                    FlowRuleState.ADDED, stat.getDurationNsec() / 1000000,
+                    FlowRuleState.ADDED, stat.getDurationSec(),
                     stat.getPacketCount().getValue(), stat.getByteCount().getValue(),
-                    stat.getCookie().getValue(), false, stat.getIdleTimeout());
+                    stat.getCookie().getValue(), stat.getIdleTimeout());
         } else {
             // TODO: revisit potentially.
             return new DefaultFlowRule(DeviceId.deviceId(Dpid.uri(dpid)),
                     buildSelector(), null, removed.getPriority(),
-                    FlowRuleState.REMOVED, removed.getDurationNsec() / 1000000,
+                    FlowRuleState.REMOVED, stat.getDurationSec(),
                     removed.getPacketCount().getValue(), removed.getByteCount().getValue(),
                     removed.getCookie().getValue(),
-                    removed.getReason() == OFFlowRemovedReason.IDLE_TIMEOUT.ordinal(),
                     stat.getIdleTimeout());
         }
     }
