diff --git a/cli/src/main/java/org/onosproject/cli/net/WipeOutCommand.java b/cli/src/main/java/org/onosproject/cli/net/WipeOutCommand.java
index 0ea6cee..0195215 100644
--- a/cli/src/main/java/org/onosproject/cli/net/WipeOutCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/WipeOutCommand.java
@@ -19,25 +19,25 @@
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.net.Device;
 import org.onosproject.net.Host;
+import org.onosproject.net.Link;
 import org.onosproject.net.device.DeviceAdminService;
-import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.host.HostAdminService;
-import org.onosproject.net.host.HostService;
 import org.onosproject.net.intent.Intent;
 import org.onosproject.net.intent.IntentService;
 import org.onosproject.net.intent.IntentState;
+import org.onosproject.net.link.LinkAdminService;
 
 /**
  * Wipes-out the entire network information base, i.e. devices, links, hosts, intents.
  */
 @Command(scope = "onos", name = "wipe-out",
-         description = "Wipes-out the entire network information base, i.e. devices, links, hosts")
+        description = "Wipes-out the entire network information base, i.e. devices, links, hosts")
 public class WipeOutCommand extends ClustersListCommand {
 
     private static final String PLEASE = "please";
 
     @Argument(index = 0, name = "please", description = "Confirmation phrase",
-              required = false, multiValued = false)
+            required = false, multiValued = false)
     String please = null;
 
     @Override
@@ -49,16 +49,39 @@
 
         print("Wiping devices");
         DeviceAdminService deviceAdminService = get(DeviceAdminService.class);
-        DeviceService deviceService = get(DeviceService.class);
-        for (Device device : deviceService.getDevices()) {
-            deviceAdminService.removeDevice(device.id());
+        while (deviceAdminService.getDeviceCount() > 0) {
+            try {
+                for (Device device : deviceAdminService.getDevices()) {
+                    deviceAdminService.removeDevice(device.id());
+                }
+            } catch (Exception e) {
+                log.warn("Unable to wipe-out devices", e);
+            }
+        }
+
+        print("Wiping links");
+        LinkAdminService linkAdminService = get(LinkAdminService.class);
+        while (linkAdminService.getLinkCount() > 0) {
+            try {
+                for (Link link : linkAdminService.getLinks()) {
+                    linkAdminService.removeLinks(link.src());
+                    linkAdminService.removeLinks(link.dst());
+                }
+            } catch (Exception e) {
+                log.warn("Unable to wipe-out links", e);
+            }
         }
 
         print("Wiping hosts");
         HostAdminService hostAdminService = get(HostAdminService.class);
-        HostService hostService = get(HostService.class);
-        for (Host host : hostService.getHosts()) {
-            hostAdminService.removeHost(host.id());
+        while (hostAdminService.getHostCount() > 0) {
+            try {
+                for (Host host : hostAdminService.getHosts()) {
+                    hostAdminService.removeHost(host.id());
+                }
+            } catch (Exception e) {
+                log.warn("Unable to wipe-out hosts", e);
+            }
         }
 
         print("Wiping intents");
@@ -67,6 +90,7 @@
             if (intentService.getIntentState(intent.key()) == IntentState.INSTALLED) {
                 intentService.withdraw(intent);
             }
+            intentService.purge(intent);
         }
     }
 }
diff --git a/tools/test/bin/onos-mininet b/tools/test/bin/onos-mininet
index 5bcd2f5..5f11fd0 100755
--- a/tools/test/bin/onos-mininet
+++ b/tools/test/bin/onos-mininet
@@ -44,6 +44,10 @@
     "
     ;;
 
+attach)
+    $mininet -x
+    ;;
+
 start)
     ssh $remote "rm -f $log; echo logfile flush 1 > ~/.screenrc"
     (
diff --git a/tools/test/scenarios/net-teardown.xml b/tools/test/scenarios/net-teardown.xml
index fa52ce3..a5d93ee 100644
--- a/tools/test/scenarios/net-teardown.xml
+++ b/tools/test/scenarios/net-teardown.xml
@@ -16,6 +16,6 @@
 <scenario name="net-setup" description="Network teardown steps">
     <group name="Net-Teardown">
         <step name="Stop-Mininet" exec="onos-mininet stop"/>
-        <step name="Wipe-Out-Data-After" requires="~Stop-Mininet" exec="onos-wipe-out"/>
+        <XXXstep name="Wipe-Out-Data-After" requires="~Stop-Mininet" exec="onos-wipe-out"/>
     </group>
 </scenario>
\ No newline at end of file
