diff --git a/core/common/src/main/java/org/onosproject/utils/Comparators.java b/core/common/src/main/java/org/onosproject/utils/Comparators.java
index 95a9874..27698d9 100644
--- a/core/common/src/main/java/org/onosproject/utils/Comparators.java
+++ b/core/common/src/main/java/org/onosproject/utils/Comparators.java
@@ -31,7 +31,7 @@
 import org.onosproject.net.group.Group;
 import org.onosproject.net.key.DeviceKey;
 import org.onosproject.net.region.Region;
-import org.onosproject.net.statistic.TypedFlowEntryWithLoad;
+import org.onosproject.net.statistic.FlowEntryWithLoad;
 import org.onosproject.net.topology.TopologyCluster;
 import org.onosproject.ui.model.topo.UiTopoLayout;
 
@@ -72,6 +72,12 @@
                         : priorityCompare;
             };
 
+    public static final Comparator<FlowEntryWithLoad> FLOWENTRY_WITHLOAD_COMPARATOR =
+            (fe1, fe2) -> {
+                long delta = fe1.load().rate() - fe2.load().rate();
+                return delta == 0 ? 0 : (delta > 0 ? -1 : +1);
+            };
+
     public static final Comparator<Group> GROUP_COMPARATOR =
             (g1, g2) -> Long.valueOf(g1.id().id()).compareTo((long) g2.id().id());
 
@@ -99,12 +105,6 @@
             (intf1, intf2) ->
                     CONNECT_POINT_COMPARATOR.compare(intf1.connectPoint(), intf2.connectPoint());
 
-    public static final Comparator<TypedFlowEntryWithLoad> TYPEFLOWENTRY_WITHLOAD_COMPARATOR =
-            (fe1, fe2) -> {
-                long delta = fe1.load().rate() - fe2.load().rate();
-                return delta == 0 ? 0 : (delta > 0 ? -1 : +1);
-            };
-
     public static final Comparator<DeviceKey> DEVICE_KEY_COMPARATOR =
             (dk1, dk2) -> dk1.deviceKeyId().id().compareTo(dk2.deviceKeyId().id());
 
