diff --git a/core/api/src/main/java/org/onosproject/net/statistic/DefaultLoad.java b/core/api/src/main/java/org/onosproject/net/statistic/DefaultLoad.java
index b2771ac..908e7eb 100644
--- a/core/api/src/main/java/org/onosproject/net/statistic/DefaultLoad.java
+++ b/core/api/src/main/java/org/onosproject/net/statistic/DefaultLoad.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onlab.onos.net.statistic;
+package org.onosproject.net.statistic;
 
 import com.google.common.base.MoreObjects;
-import org.onlab.onos.net.flow.FlowRuleProvider;
+import org.onosproject.net.flow.FlowRuleProvider;
 
 /**
  * Implementation of a load.
diff --git a/core/api/src/main/java/org/onosproject/net/statistic/Load.java b/core/api/src/main/java/org/onosproject/net/statistic/Load.java
index 6422cb3..38fed04 100644
--- a/core/api/src/main/java/org/onosproject/net/statistic/Load.java
+++ b/core/api/src/main/java/org/onosproject/net/statistic/Load.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onlab.onos.net.statistic;
+package org.onosproject.net.statistic;
 
 /**
  * Simple data repository for link load information.
diff --git a/core/api/src/main/java/org/onosproject/net/statistic/StatisticService.java b/core/api/src/main/java/org/onosproject/net/statistic/StatisticService.java
index de59886..b9f7cc9 100644
--- a/core/api/src/main/java/org/onosproject/net/statistic/StatisticService.java
+++ b/core/api/src/main/java/org/onosproject/net/statistic/StatisticService.java
@@ -13,14 +13,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onlab.onos.net.statistic;
+package org.onosproject.net.statistic;
 
-import org.onlab.onos.core.ApplicationId;
-import org.onlab.onos.core.GroupId;
-import org.onlab.onos.net.ConnectPoint;
-import org.onlab.onos.net.Link;
-import org.onlab.onos.net.Path;
-import org.onlab.onos.net.flow.FlowRule;
+import org.onosproject.core.ApplicationId;
+import org.onosproject.core.GroupId;
+import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.Link;
+import org.onosproject.net.Path;
+import org.onosproject.net.flow.FlowRule;
 
 import java.util.Optional;
 
@@ -35,7 +35,7 @@
      * Obtain the load for a the ingress to the given link.
      *
      * @param link the link to query.
-     * @return a {@link org.onlab.onos.net.statistic.Load Load}
+     * @return a {@link org.onosproject.net.statistic.Load Load}
      */
     Load load(Link link);
 
@@ -43,7 +43,7 @@
      * Obtain the load for the given port.
      *
      * @param connectPoint the port to query
-     * @return a {@link org.onlab.onos.net.statistic.Load}
+     * @return a {@link org.onosproject.net.statistic.Load}
      */
     Load load(ConnectPoint connectPoint);
 
@@ -51,7 +51,7 @@
      * Find the most loaded link along a path.
      *
      * @param path the path to search in
-     * @return the most loaded {@link org.onlab.onos.net.Link}.
+     * @return the most loaded {@link org.onosproject.net.Link}.
      */
     Link max(Path path);
 
@@ -59,7 +59,7 @@
      * Find the least loaded link along a path.
      *
      * @param path the path to search in
-     * @return the least loaded {@link org.onlab.onos.net.Link}.
+     * @return the least loaded {@link org.onosproject.net.Link}.
      */
     Link min(Path path);
 
diff --git a/core/api/src/main/java/org/onosproject/net/statistic/StatisticStore.java b/core/api/src/main/java/org/onosproject/net/statistic/StatisticStore.java
index 6eefdbe..8566ef5 100644
--- a/core/api/src/main/java/org/onosproject/net/statistic/StatisticStore.java
+++ b/core/api/src/main/java/org/onosproject/net/statistic/StatisticStore.java
@@ -13,11 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onlab.onos.net.statistic;
+package org.onosproject.net.statistic;
 
-import org.onlab.onos.net.ConnectPoint;
-import org.onlab.onos.net.flow.FlowEntry;
-import org.onlab.onos.net.flow.FlowRule;
+import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.flow.FlowEntry;
+import org.onosproject.net.flow.FlowRule;
 
 import java.util.Set;
 
@@ -29,21 +29,21 @@
     /**
      * Lay the foundation for receiving flow stats for this rule.
      *
-     * @param rule a {@link org.onlab.onos.net.flow.FlowRule}
+     * @param rule a {@link org.onosproject.net.flow.FlowRule}
      */
     void prepareForStatistics(FlowRule rule);
 
     /**
      * Remove entries associated with this rule.
      *
-     * @param rule {@link org.onlab.onos.net.flow.FlowRule}
+     * @param rule {@link org.onosproject.net.flow.FlowRule}
      */
     void removeFromStatistics(FlowRule rule);
 
     /**
      * Adds a stats observation for a flow rule.
      *
-     * @param rule a {@link org.onlab.onos.net.flow.FlowEntry}
+     * @param rule a {@link org.onosproject.net.flow.FlowEntry}
      */
     void addOrUpdateStatistic(FlowEntry rule);
 
diff --git a/core/api/src/main/java/org/onosproject/net/statistic/package-info.java b/core/api/src/main/java/org/onosproject/net/statistic/package-info.java
index 26b6ad9..37889f3 100644
--- a/core/api/src/main/java/org/onosproject/net/statistic/package-info.java
+++ b/core/api/src/main/java/org/onosproject/net/statistic/package-info.java
@@ -17,4 +17,4 @@
 /**
  * Service for looking up statistics on links.
  */
-package org.onlab.onos.net.statistic;
\ No newline at end of file
+package org.onosproject.net.statistic;
