diff --git a/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/TestClient.java b/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/TestClient.java
index 9851afa2708722c22c28ae618c184c5f7d86138c..919ce66a9125bfebe08e402ba03935559ba3abf7 100644
--- a/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/TestClient.java
+++ b/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/TestClient.java
@@ -13,6 +13,7 @@ import actionlib_tutorials.FibonacciResult;
 
 public class TestClient extends AbstractNodeMain implements ActionClientListener<FibonacciActionFeedback, FibonacciActionResult> {
   ActionClient ac;
+  volatile private boolean responded = false;
 
   @Override
   public GraphName getDefaultNodeName() {
@@ -22,6 +23,7 @@ public class TestClient extends AbstractNodeMain implements ActionClientListener
   @Override
   public void onStart(ConnectedNode node) {
     ac = new ActionClient<FibonacciActionGoal, FibonacciActionFeedback, FibonacciActionResult>(node, "/fibonacci", FibonacciActionGoal._TYPE, FibonacciActionFeedback._TYPE, FibonacciActionResult._TYPE);
+    int repeat = 3;
 
     // Attach listener for the callbacks
     ac.attachListener(this);
@@ -34,15 +36,26 @@ public class TestClient extends AbstractNodeMain implements ActionClientListener
     fibonacciGoal.setOrder(6);
     goalMessage.setGoal(fibonacciGoal);
 
-    while (true) {
+    while(repeat > 0) {
+      sleep(1000);
+    System.out.println("Sending goal #" + repeat + "...");
+    ac.sendGoal(goalMessage);
+    System.out.println("Goal sent.");
+    repeat--;
+    }
+
+    while (repeat > 0) {
+      responded = false;
       ac.sendGoal(goalMessage);
-      try {
-        Thread.sleep(10000);
-      }
-      catch (InterruptedException ex) {
-        ;
+      while (!responded) {
       }
+      repeat--;
     }
+
+    System.out.println("Finishing node!!");
+    sleep(30000);
+    ac.finish();
+    node.shutdown();
   }
 
   @Override
@@ -51,7 +64,9 @@ public class TestClient extends AbstractNodeMain implements ActionClientListener
     int[] sequence = result.getSequence();
     int i;
 
-    System.out.print("Got Fibonacci result sequence!");
+    responded = true;
+
+    System.out.print("Got Fibonacci result sequence! ");
     for (i=0; i<sequence.length; i++)
       System.out.print(Integer.toString(sequence[i]) + " ");
     System.out.print("\n");
@@ -73,4 +88,12 @@ public class TestClient extends AbstractNodeMain implements ActionClientListener
   public void statusReceived(Message status) {
 
   }
+
+  private void sleep(long msec) {
+    try {
+      Thread.sleep(msec);
+    }
+    catch (InterruptedException ex) {
+    }
+  }
 }