diff --git a/tools/test/scenarios/net-setup.xml b/tools/test/scenarios/net-setup.xml
index 6fef8b1..6df7aa3 100644
--- a/tools/test/scenarios/net-setup.xml
+++ b/tools/test/scenarios/net-setup.xml
@@ -17,6 +17,7 @@
     <!-- TODO: parametrize this via recipes -->
     <group name="Net-Setup">
         <step name="Push-Topos" exec="onos-push-topos ${OCN}"/>
+        <step name="Stop-Mininet-If-Needed" env="~" exec="onos-mininet stop"/>
 
         <step name="Install-Apps"
               exec="onos ${OC1} app activate org.onosproject.openflow org.onosproject.proxyarp org.onosproject.fwd"/>
@@ -30,11 +31,11 @@
               exec="onos-check-summary ${OC1} [0-9]* 0 0 0"/>
 
         <step name="Start-Mininet"
-              requires="Install-Apps,Initial-Summary-Check,Push-Topos"
+              requires="Install-Apps,Initial-Summary-Check,Push-Topos,Stop-Mininet-If-Needed"
               exec="onos-mininet start topos/topo att-onos.py ${ONOS_INSTANCES}"/>
 
         <step name="Wait-For-Mininet" requires="Start-Mininet"
-              exec="onos-mininet wait 15"/>
+              exec="onos-mininet wait 20"/>
 
         <step name="Check-Summary" requires="Wait-For-Mininet"
               exec="onos-check-summary ${OC1} [0-9]* 25 140 0"/>
diff --git a/tools/test/scenarios/net-smoke.xml b/tools/test/scenarios/net-smoke.xml
index 87bd38c..aa47aef 100644
--- a/tools/test/scenarios/net-smoke.xml
+++ b/tools/test/scenarios/net-smoke.xml
@@ -21,10 +21,10 @@
         <dependency name="Reactive-Forwarding.Net-Pingall" requires="Net-Setup"/>
 
         <import file="${ONOS_SCENARIOS}/net-link-down-up.xml" namespace="Reactive-Forwarding"/>
-        <dependency name="Reactive-Forwarding.Net-Link-Down-Up" requires="~Reactive-Forwarding.Net-Pingall"/>
+        <dependency name="Reactive-Forwarding.Net-Link-Down-Up" requires="Net-Setup,~Reactive-Forwarding.Net-Pingall"/>
 
         <import file="${ONOS_SCENARIOS}/net-host-intent.xml"/>
-        <dependency name="Host-Intent-Connectivity" requires="~Reactive-Forwarding.Net-Link-Down-Up"/>
+        <dependency name="Host-Intent-Connectivity" requires="Net-Setup,~Reactive-Forwarding.Net-Link-Down-Up"/>
 
         <import file="${ONOS_SCENARIOS}/net-teardown.xml"/>
         <dependency name="Net-Teardown" requires="~Host-Intent-Connectivity"/>
diff --git a/utils/stc/src/main/java/org/onlab/stc/Compiler.java b/utils/stc/src/main/java/org/onlab/stc/Compiler.java
index 6464909..2d6fafa 100644
--- a/utils/stc/src/main/java/org/onlab/stc/Compiler.java
+++ b/utils/stc/src/main/java/org/onlab/stc/Compiler.java
@@ -425,7 +425,7 @@
             last = end + 1;
         }
         sb.append(pString.substring(last));
-        return sb.toString();
+        return sb.toString().replace('\n', ' ').replace('\r', ' ');
     }
 
     /**
diff --git a/utils/stc/src/main/java/org/onlab/stc/Main.java b/utils/stc/src/main/java/org/onlab/stc/Main.java
index 5708446..01ebe36 100644
--- a/utils/stc/src/main/java/org/onlab/stc/Main.java
+++ b/utils/stc/src/main/java/org/onlab/stc/Main.java
@@ -166,7 +166,7 @@
     // Processes the scenario 'list' command.
     private void processList() {
         coordinator.getRecords()
-                .forEach(event -> logStatus(event.time(), event.name(), event.status()));
+                .forEach(event -> logStatus(event.time(), event.name(), event.status(), event.command()));
     }
 
     // Processes the scenario 'run' command for range of steps.
@@ -188,12 +188,12 @@
     private static class Listener implements StepProcessListener {
         @Override
         public void onStart(Step step) {
-            logStatus(currentTimeMillis(), step.name(), IN_PROGRESS);
+            logStatus(currentTimeMillis(), step.name(), IN_PROGRESS, step.command());
         }
 
         @Override
         public void onCompletion(Step step, Status status) {
-            logStatus(currentTimeMillis(), step.name(), status);
+            logStatus(currentTimeMillis(), step.name(), status, null);
         }
 
         @Override
@@ -202,8 +202,12 @@
     }
 
     // Logs the step status.
-    private static void logStatus(long time, String name, Status status) {
-        print("%s  %s%s %s%s", time(time), color(status), name, action(status), color(null));
+    private static void logStatus(long time, String name, Status status, String cmd) {
+        if (cmd != null) {
+            print("%s  %s%s %s%s -- %s", time(time), color(status), name, action(status), color(null), cmd);
+        } else {
+            print("%s  %s%s %s%s", time(time), color(status), name, action(status), color(null));
+        }
     }
 
     // Produces a description of event using the specified step status.
diff --git a/utils/stc/src/main/java/org/onlab/stc/ScenarioStore.java b/utils/stc/src/main/java/org/onlab/stc/ScenarioStore.java
index 70b5cb0..d7b8e18 100644
--- a/utils/stc/src/main/java/org/onlab/stc/ScenarioStore.java
+++ b/utils/stc/src/main/java/org/onlab/stc/ScenarioStore.java
@@ -109,7 +109,7 @@
      * @param step test step or group
      */
     synchronized void markStarted(Step step) {
-        add(new StepEvent(step.name(), IN_PROGRESS));
+        add(new StepEvent(step.name(), IN_PROGRESS, step.command()));
         save();
     }
 
@@ -120,7 +120,7 @@
      * @param status new step status
      */
     synchronized void markComplete(Step step, Status status) {
-        add(new StepEvent(step.name(), status));
+        add(new StepEvent(step.name(), status, null));
         save();
     }
 
diff --git a/utils/stc/src/main/java/org/onlab/stc/StepEvent.java b/utils/stc/src/main/java/org/onlab/stc/StepEvent.java
index 4c10f23..93120fe 100644
--- a/utils/stc/src/main/java/org/onlab/stc/StepEvent.java
+++ b/utils/stc/src/main/java/org/onlab/stc/StepEvent.java
@@ -18,27 +18,33 @@
 import org.onlab.stc.Coordinator.Status;
 
 import static java.lang.Long.parseLong;
+import static org.onlab.stc.Coordinator.Status.valueOf;
 
 /**
  * Represents an event of execution of a scenario step or group.
  */
 public class StepEvent {
 
+    private static final String SEP = "~";
+
     private final String name;
     private final long time;
     private final Status status;
+    private final String command;
 
     /**
      * Creates a new step record.
      *
-     * @param name   test step or group name
-     * @param time   time in millis since start of epoch
-     * @param status step completion status
+     * @param name    test step or group name
+     * @param time    time in millis since start of epoch
+     * @param status  step completion status
+     * @param command step command
      */
-    public StepEvent(String name, long time, Status status) {
+    public StepEvent(String name, long time, Status status, String command) {
         this.name = name;
         this.time = time;
         this.status = status;
+        this.command = command;
     }
 
     /**
@@ -46,9 +52,10 @@
      *
      * @param name   test step or group name
      * @param status status
+     * @param command step command
      */
-    public StepEvent(String name, Status status) {
-        this(name, System.currentTimeMillis(), status);
+    public StepEvent(String name, Status status, String command) {
+        this(name, System.currentTimeMillis(), status, command);
     }
 
     /**
@@ -78,10 +85,19 @@
         return status;
     }
 
+    /**
+     * Returns the step command.
+     *
+     * @return step command
+     */
+    public String command() {
+        return command;
+    }
+
 
     @Override
     public String toString() {
-        return name + ":" + time + ":" + status;
+        return name + SEP + time + SEP + status + SEP + command;
     }
 
     /**
@@ -91,7 +107,8 @@
      * @return step record
      */
     public static StepEvent fromString(String string) {
-        String[] fields = string.split(":");
-        return new StepEvent(fields[0], parseLong(fields[1]), Status.valueOf(fields[2]));
+        String[] fields = string.split("~");
+        return new StepEvent(fields[0], parseLong(fields[1]), valueOf(fields[2]),
+                             fields[3].equals("null") ? null : fields[3]);
     }
 }
diff --git a/utils/stc/src/test/java/org/onlab/stc/CoordinatorTest.java b/utils/stc/src/test/java/org/onlab/stc/CoordinatorTest.java
index 5174598..c6566ca 100644
--- a/utils/stc/src/test/java/org/onlab/stc/CoordinatorTest.java
+++ b/utils/stc/src/test/java/org/onlab/stc/CoordinatorTest.java
@@ -17,8 +17,8 @@
 
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.onlab.util.Tools;
 
-import java.io.FileNotFoundException;
 import java.io.IOException;
 
 import static org.onlab.stc.CompilerTest.getStream;
@@ -36,23 +36,26 @@
     @BeforeClass
     public static void setUpClass() throws IOException {
         CompilerTest.setUpClass();
+        Tools.removeDirectory(StepProcessorTest.DIR);
+
         StepProcessor.launcher = "true ";
     }
 
     @Test
-    public void simple() throws FileNotFoundException, InterruptedException {
+    public void simple() throws IOException, InterruptedException {
         executeTest("simple-scenario.xml");
     }
 
     @Test
-    public void complex() throws FileNotFoundException, InterruptedException {
+    public void complex() throws IOException, InterruptedException {
         executeTest("scenario.xml");
     }
 
-    private void executeTest(String name) throws FileNotFoundException, InterruptedException {
+    private void executeTest(String name) throws IOException, InterruptedException {
         Scenario scenario = loadScenario(getStream(name));
         Compiler compiler = new Compiler(scenario);
         compiler.compile();
+        Tools.removeDirectory(compiler.logDir());
         coordinator = new Coordinator(scenario, compiler.processFlow(), compiler.logDir());
         coordinator.addListener(listener);
         coordinator.reset();
diff --git a/utils/stc/src/test/java/org/onlab/stc/StepProcessorTest.java b/utils/stc/src/test/java/org/onlab/stc/StepProcessorTest.java
index d074a62..35a5ab0 100644
--- a/utils/stc/src/test/java/org/onlab/stc/StepProcessorTest.java
+++ b/utils/stc/src/test/java/org/onlab/stc/StepProcessorTest.java
@@ -32,7 +32,7 @@
  */
 public class StepProcessorTest {
 
-    private static final File DIR = new File("/tmp/stc/foo");
+    static final File DIR = new File("/tmp/stc/foo");
 
     private final Listener delegate = new Listener();
 
