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 58dba4b..03fc555 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
@@ -14,15 +14,15 @@
 import static org.onlab.onos.net.DeviceId.deviceId;
 
 /**
- * Lists all infrastructure links.
+ * Lists all ports or all ports of a device.
  */
 @Command(scope = "onos", name = "ports",
-         description = "Lists all ports of a device")
+         description = "Lists all ports or all ports of a device")
 public class DevicePortsListCommand extends DevicesListCommand {
 
     private static final String FMT = "  port=%s, state=%s";
 
-    @Argument(index = 0, name = "deviceId", description = "Device ID",
+    @Argument(index = 0, name = "uri", description = "Device ID",
               required = false, multiValued = false)
     String uri = null;
 
@@ -39,18 +39,19 @@
         DeviceService service = getService(DeviceService.class);
         if (uri == null) {
             for (Device device : getSortedDevices(service)) {
-                printDevicePorts(service, device);
+                printDevice(service, device);
             }
         } else {
-            printDevicePorts(service, service.getDevice(deviceId(uri)));
+            printDevice(service, service.getDevice(deviceId(uri)));
         }
         return null;
     }
 
-    private void printDevicePorts(DeviceService service, Device device) {
+    @Override
+    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);
-        printDevice(device, service.isAvailable(device.id()));
         for (Port port : ports) {
             print(FMT, port.number(), port.isEnabled() ? "enabled" : "disabled");
         }
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/DeviceRemoveCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/DeviceRemoveCommand.java
new file mode 100644
index 0000000..b4f2385
--- /dev/null
+++ b/cli/src/main/java/org/onlab/onos/cli/net/DeviceRemoveCommand.java
@@ -0,0 +1,26 @@
+package org.onlab.onos.cli.net;
+
+import org.apache.karaf.shell.commands.Argument;
+import org.apache.karaf.shell.commands.Command;
+import org.onlab.onos.cli.AbstractShellCommand;
+import org.onlab.onos.net.DeviceId;
+import org.onlab.onos.net.device.DeviceAdminService;
+
+/**
+ * Removes an infrastructure device.
+ */
+@Command(scope = "onos", name = "device-remove",
+         description = "Removes an infrastructure device")
+public class DeviceRemoveCommand extends AbstractShellCommand {
+
+    @Argument(index = 0, name = "uri", description = "Device ID",
+              required = true, multiValued = false)
+    String uri = null;
+
+    @Override
+    protected Object doExecute() throws Exception {
+        getService(DeviceAdminService.class).removeDevice(DeviceId.deviceId(uri));
+        return null;
+    }
+
+}
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 650e6a0..1cbeb6b 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
@@ -19,7 +19,7 @@
 public class DevicesListCommand extends AbstractShellCommand {
 
     private static final String FMT =
-            "id=%s, available=%s, type=%s, mfr=%s, hw=%s, sw=%s, serial=%s";
+            "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
@@ -32,7 +32,7 @@
     protected Object doExecute() throws Exception {
         DeviceService service = getService(DeviceService.class);
         for (Device device : getSortedDevices(service)) {
-            printDevice(device, service.isAvailable(device.id()));
+            printDevice(service, device);
         }
         return null;
     }
@@ -52,11 +52,12 @@
     /**
      * Prints information about the specified device.
      *
-     * @param device      infrastructure device
-     * @param isAvailable true of device is available
+     * @param service device service
+     * @param device  infrastructure device
      */
-    protected void printDevice(Device device, boolean isAvailable) {
-        print(FMT, device.id(), isAvailable, device.type(),
+    protected void printDevice(DeviceService service, Device device) {
+        print(FMT, device.id(), service.isAvailable(device.id()),
+              service.getRole(device.id()), device.type(),
               device.manufacturer(), device.hwVersion(), device.swVersion(),
               device.serialNumber());
     }
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 7197361..cb6fcb1 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
@@ -17,15 +17,15 @@
 
     private static final String FMT = "src=%s/%s, dst=%s/%s, type=%s";
 
-    @Argument(index = 0, name = "deviceId", description = "Device ID",
+    @Argument(index = 0, name = "uri", description = "Device ID",
               required = false, multiValued = false)
-    String deviceId = null;
+    String uri = null;
 
     @Override
     protected Object doExecute() throws Exception {
         LinkService service = getService(LinkService.class);
-        Iterable<Link> links = deviceId != null ?
-                service.getDeviceLinks(deviceId(deviceId)) : service.getLinks();
+        Iterable<Link> links = uri != null ?
+                service.getDeviceLinks(deviceId(uri)) : service.getLinks();
         for (Link link : links) {
             print(FMT, link.src().deviceId(), link.src().port(),
                   link.dst().deviceId(), link.dst().port(), link.type());
diff --git a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index f7fc371..7aa67be 100644
--- a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -11,18 +11,25 @@
             </completers>
         </command>
         <command>
+            <action class="org.onlab.onos.cli.net.DeviceRemoveCommand"/>
+            <completers>
+                <ref component-id="deviceIdCompleter"/>
+            </completers>
+        </command>
+
+        <command>
             <action class="org.onlab.onos.cli.net.LinksListCommand"/>
             <completers>
                 <ref component-id="deviceIdCompleter"/>
             </completers>
         </command>
 
-        <!--<command>-->
-            <!--<action class="org.onlab.onos.cli.GreetCommand"/>-->
-            <!--<completers>-->
-                <!--<ref component-id="nameCompleter"/>-->
-            <!--</completers>-->
-        <!--</command>-->
+        <command>
+            <action class="org.onlab.onos.cli.GreetCommand"/>
+            <completers>
+                <ref component-id="nameCompleter"/>
+            </completers>
+        </command>
     </command-bundle>
 
     <bean id="deviceIdCompleter" class="org.onlab.onos.cli.net.DeviceIdCompleter"/>
