Cleaned-up CLI commands.
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/ClusterDevicesCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/ClusterDevicesCommand.java
index f0217de..9c68244 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/ClusterDevicesCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/ClusterDevicesCommand.java
@@ -7,7 +7,6 @@
 import org.onlab.onos.net.topology.TopologyCluster;
 
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
 
 import static org.onlab.onos.net.topology.ClusterId.clusterId;
@@ -23,13 +22,6 @@
               required = false, multiValued = false)
     String id = null;
 
-    protected static final Comparator<DeviceId> ID_COMPARATOR = new Comparator<DeviceId>() {
-        @Override
-        public int compare(DeviceId id1, DeviceId id2) {
-            return id1.uri().toString().compareTo(id2.uri().toString());
-        }
-    };
-
     @Override
     protected void execute() {
         int cid = Integer.parseInt(id);
@@ -39,7 +31,7 @@
             error("No such cluster %s", cid);
         } else {
             List<DeviceId> ids = Lists.newArrayList(service.getClusterDevices(topology, cluster));
-            Collections.sort(ids, ID_COMPARATOR);
+            Collections.sort(ids, Comparators.ELEMENT_ID_COMPARATOR);
             for (DeviceId deviceId : ids) {
                 print("%s", deviceId);
             }
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/ClustersListCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/ClustersListCommand.java
index fe67348..d2d452f 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/ClustersListCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/ClustersListCommand.java
@@ -5,7 +5,6 @@
 import org.onlab.onos.net.topology.TopologyCluster;
 
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
 
 /**
@@ -18,19 +17,11 @@
     private static final String FMT =
             "id=%d, devices=%d, links=%d";
 
-    protected static final Comparator<TopologyCluster> ID_COMPARATOR =
-            new Comparator<TopologyCluster>() {
-                @Override
-                public int compare(TopologyCluster c1, TopologyCluster c2) {
-                    return c1.id().index() - c2.id().index();
-                }
-            };
-
     @Override
     protected void execute() {
         init();
         List<TopologyCluster> clusters = Lists.newArrayList(service.getClusters(topology));
-        Collections.sort(clusters, ID_COMPARATOR);
+        Collections.sort(clusters, Comparators.CLUSTER_COMPARATOR);
 
         for (TopologyCluster cluster : clusters) {
             print(FMT, cluster.id().index(), cluster.deviceCount(), cluster.linkCount());
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/Comparators.java b/cli/src/main/java/org/onlab/onos/cli/net/Comparators.java
new file mode 100644
index 0000000..3bb1e4d
--- /dev/null
+++ b/cli/src/main/java/org/onlab/onos/cli/net/Comparators.java
@@ -0,0 +1,64 @@
+package org.onlab.onos.cli.net;
+
+import org.onlab.onos.cluster.ControllerNode;
+import org.onlab.onos.net.Element;
+import org.onlab.onos.net.ElementId;
+import org.onlab.onos.net.Port;
+import org.onlab.onos.net.flow.FlowRule;
+import org.onlab.onos.net.topology.TopologyCluster;
+
+import java.util.Comparator;
+
+/**
+ * Various comparators.
+ */
+public final class Comparators {
+
+    // Ban construction
+    private Comparators() {
+    }
+
+    public static final Comparator<ElementId> ELEMENT_ID_COMPARATOR = new Comparator<ElementId>() {
+        @Override
+        public int compare(ElementId id1, ElementId id2) {
+            return id1.uri().toString().compareTo(id2.uri().toString());
+        }
+    };
+
+    public static final Comparator<Element> ELEMENT_COMPARATOR = new Comparator<Element>() {
+        @Override
+        public int compare(Element e1, Element e2) {
+            return e1.id().uri().toString().compareTo(e2.id().uri().toString());
+        }
+    };
+
+    public static final Comparator<FlowRule> FLOW_RULE_COMPARATOR = new Comparator<FlowRule>() {
+        @Override
+        public int compare(FlowRule f1, FlowRule f2) {
+            return Long.valueOf(f1.id().value()).compareTo(f2.id().value());
+        }
+    };
+
+    public static final Comparator<Port> PORT_COMPARATOR = new Comparator<Port>() {
+        @Override
+        public int compare(Port p1, Port p2) {
+            long delta = p1.number().toLong() - p2.number().toLong();
+            return delta == 0 ? 0 : (delta < 0 ? -1 : +1);
+        }
+    };
+
+    public static final Comparator<TopologyCluster> CLUSTER_COMPARATOR = new Comparator<TopologyCluster>() {
+        @Override
+        public int compare(TopologyCluster c1, TopologyCluster c2) {
+            return c1.id().index() - c2.id().index();
+        }
+    };
+
+    public static final Comparator<ControllerNode> NODE_COMPARATOR = new Comparator<ControllerNode>() {
+        @Override
+        public int compare(ControllerNode ci1, ControllerNode ci2) {
+            return ci1.id().toString().compareTo(ci2.id().toString());
+        }
+    };
+
+}
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/DevicePortsListCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/DevicePortsListCommand.java
index e62fe56..1382896 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/DevicePortsListCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/DevicePortsListCommand.java
@@ -8,7 +8,6 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
 
 import static org.onlab.onos.net.DeviceId.deviceId;
@@ -26,14 +25,6 @@
               required = false, multiValued = false)
     String uri = null;
 
-    private static final Comparator<Port> PORT_COMPARATOR = new Comparator<Port>() {
-        @Override
-        public int compare(Port p1, Port p2) {
-            long delta = p1.number().toLong() - p2.number().toLong();
-            return delta == 0 ? 0 : (delta < 0 ? -1 : +1);
-        }
-    };
-
     @Override
     protected void execute() {
         DeviceService service = get(DeviceService.class);
@@ -55,7 +46,7 @@
     protected void printDevice(DeviceService service, Device device) {
         super.printDevice(service, device);
         List<Port> ports = new ArrayList<>(service.getPorts(device.id()));
-        Collections.sort(ports, PORT_COMPARATOR);
+        Collections.sort(ports, Comparators.PORT_COMPARATOR);
         for (Port port : ports) {
             print(FMT, port.number(), port.isEnabled() ? "enabled" : "disabled");
         }
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/DevicesListCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/DevicesListCommand.java
index be102f2..6ecb482 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/DevicesListCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/DevicesListCommand.java
@@ -6,7 +6,6 @@
 import org.onlab.onos.net.device.DeviceService;
 
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
 
 import static com.google.common.collect.Lists.newArrayList;
@@ -21,13 +20,6 @@
     private static final String FMT =
             "id=%s, available=%s, role=%s, type=%s, mfr=%s, hw=%s, sw=%s, serial=%s";
 
-    protected static final Comparator<Device> ID_COMPARATOR = new Comparator<Device>() {
-        @Override
-        public int compare(Device d1, Device d2) {
-            return d1.id().uri().toString().compareTo(d2.id().uri().toString());
-        }
-    };
-
     @Override
     protected void execute() {
         DeviceService service = get(DeviceService.class);
@@ -44,7 +36,7 @@
      */
     protected List<Device> getSortedDevices(DeviceService service) {
         List<Device> devices = newArrayList(service.getDevices());
-        Collections.sort(devices, ID_COMPARATOR);
+        Collections.sort(devices, Comparators.ELEMENT_COMPARATOR);
         return devices;
     }
 
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 c2ca416..da43255 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
@@ -1,12 +1,6 @@
 package org.onlab.onos.cli.net;
 
-import static com.google.common.collect.Lists.newArrayList;
-
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-
+import com.google.common.collect.Maps;
 import org.apache.karaf.shell.commands.Command;
 import org.onlab.onos.cli.AbstractShellCommand;
 import org.onlab.onos.net.Device;
@@ -14,7 +8,11 @@
 import org.onlab.onos.net.flow.FlowRule;
 import org.onlab.onos.net.flow.FlowRuleService;
 
-import com.google.common.collect.Maps;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import static com.google.common.collect.Lists.newArrayList;
 
 /**
  * Lists all currently-known hosts.
@@ -26,13 +24,6 @@
     private static final String FMT =
             "   id=%s, selector=%s, treatment=%s, state=%s";
 
-    protected static final Comparator<FlowRule> ID_COMPARATOR = new Comparator<FlowRule>() {
-        @Override
-        public int compare(FlowRule f1, FlowRule f2) {
-            return Long.valueOf(f1.id().value()).compareTo(f2.id().value());
-        }
-    };
-
     @Override
     protected void execute() {
         DeviceService deviceService = get(DeviceService.class);
@@ -43,7 +34,6 @@
         }
     }
 
-
     /**
      * Returns the list of devices sorted using the device ID URIs.
      *
@@ -55,7 +45,7 @@
         List<FlowRule> rules;
         for (Device d : deviceService.getDevices()) {
             rules = newArrayList(service.getFlowEntries(d.id()));
-            Collections.sort(rules, ID_COMPARATOR);
+            Collections.sort(rules, Comparators.FLOW_RULE_COMPARATOR);
             flows.put(d, rules);
         }
         return flows;
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/HostIdCompleter.java b/cli/src/main/java/org/onlab/onos/cli/net/HostIdCompleter.java
index 6da2d82..72c6a41 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/HostIdCompleter.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/HostIdCompleter.java
@@ -1,15 +1,15 @@
 package org.onlab.onos.cli.net;
 
-import java.util.Iterator;
-import java.util.List;
-import java.util.SortedSet;
-
 import org.apache.karaf.shell.console.Completer;
 import org.apache.karaf.shell.console.completer.StringsCompleter;
 import org.onlab.onos.cli.AbstractShellCommand;
 import org.onlab.onos.net.Host;
 import org.onlab.onos.net.host.HostService;
 
+import java.util.Iterator;
+import java.util.List;
+import java.util.SortedSet;
+
 public class HostIdCompleter implements Completer {
 
     @Override
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/HostsListCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/HostsListCommand.java
index 29919a8..4e1f16b 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/HostsListCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/HostsListCommand.java
@@ -1,16 +1,15 @@
 package org.onlab.onos.cli.net;
 
-import static com.google.common.collect.Lists.newArrayList;
-
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
 import org.apache.karaf.shell.commands.Command;
 import org.onlab.onos.cli.AbstractShellCommand;
 import org.onlab.onos.net.Host;
 import org.onlab.onos.net.host.HostService;
 
+import java.util.Collections;
+import java.util.List;
+
+import static com.google.common.collect.Lists.newArrayList;
+
 /**
  * Lists all currently-known hosts.
  */
@@ -21,13 +20,6 @@
     private static final String FMT =
             "id=%s, mac=%s, location=%s/%s, vlan=%s, ip(s)=%s";
 
-    protected static final Comparator<Host> ID_COMPARATOR = new Comparator<Host>() {
-        @Override
-        public int compare(Host h1, Host h2) {
-            return h1.id().uri().toString().compareTo(h2.id().uri().toString());
-        }
-    };
-
     @Override
     protected void execute() {
         HostService service = get(HostService.class);
@@ -44,7 +36,7 @@
      */
     protected List<Host> getSortedHosts(HostService service) {
         List<Host> hosts = newArrayList(service.getHosts());
-        Collections.sort(hosts, ID_COMPARATOR);
+        Collections.sort(hosts, Comparators.ELEMENT_COMPARATOR);
         return hosts;
     }
 
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/LinksListCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/LinksListCommand.java
index 4361bd7..f5226b1 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/LinksListCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/LinksListCommand.java
@@ -41,7 +41,6 @@
     public static String linkString(Link link) {
         return String.format(FMT, link.src().deviceId(), link.src().port(),
                              link.dst().deviceId(), link.dst().port(), link.type());
-
     }
 
     /**