diff --git a/examples/tcp/Makefile b/examples/tcp/Makefile
index 11d69b19c238cd53fec0277c7bc2572115921d63..e982202a895d9df06c2463a7549c05d703a8c649 100644
--- a/examples/tcp/Makefile
+++ b/examples/tcp/Makefile
@@ -3,12 +3,26 @@ LCC=java -jar ${LCDIR}/compiler/labComm.jar
 CLASSPATH=.:${LCDIR}/lib/java/labcomm.jar
 JAVA_PKG=labcommTCPtest
 
+.PHONY : clean run runserver runOSserver runclient
+
+#### The main example #########################
+
+run : ${JAVA_PKG}/Example.class ${JAVA_PKG}/server/TestServer.class ${JAVA_PKG}/client/TestClient.class
+	java -cp ${CLASSPATH} $(<:.class=)
+
+###############################################
+### dependencies and parts ####################
+###############################################
+
 ${JAVA_PKG}/gen/FooSample.java: test.lc
 	${LCC} --javapackage=${JAVA_PKG}.gen --java=${JAVA_PKG}/gen $<
 
 ${JAVA_PKG}/gen/FooSample.class: ${JAVA_PKG}/gen/FooSample.java
 	javac -cp ${CLASSPATH} $<
 
+${JAVA_PKG}/Example.class: ${JAVA_PKG}/Example.java ${JAVA_PKG}/gen/FooSample.class
+	javac -cp ${CLASSPATH} $<
+
 ${JAVA_PKG}/server/TestServer.class: ${JAVA_PKG}/server/TestServer.java ${JAVA_PKG}/gen/FooSample.class
 	javac -cp ${CLASSPATH} $<
 
@@ -18,7 +32,6 @@ ${JAVA_PKG}/server/OneShotServer.class: ${JAVA_PKG}/server/OneShotServer.java ${
 ${JAVA_PKG}/client/TestClient.class: ${JAVA_PKG}/client/TestClient.java ${JAVA_PKG}/gen//FooSample.class
 	javac -cp ${CLASSPATH} $<
 
-.PHONY : clean runserver runclient
 
 runserver : ${JAVA_PKG}/server/TestServer.class
 	java -cp ${CLASSPATH} $(<:.class=)
diff --git a/examples/tcp/labcommTCPtest/Example.java b/examples/tcp/labcommTCPtest/Example.java
new file mode 100644
index 0000000000000000000000000000000000000000..9d3694f8e4980a1024fb64d2a33136220b8bace9
--- /dev/null
+++ b/examples/tcp/labcommTCPtest/Example.java
@@ -0,0 +1,58 @@
+package labcommTCPtest;
+import labcommTCPtest.server.TestServer;
+import labcommTCPtest.client.TestClient;
+import java.net.Socket;
+import java.net.ServerSocket;
+
+public class Example {
+
+	public static void main(String a[]) {
+		String server = "localhost";
+		int port = 9999;
+		ServerThread serverThread = new ServerThread(port);
+       		ClientThread clientThread = new ClientThread(server, port);
+
+		serverThread.start();
+		clientThread.start();
+	}
+
+
+	private static class ServerThread extends Thread {
+	        private	int port;
+
+		public ServerThread(int port) {
+			this.port = port;
+		}
+		public void run() {
+			try {
+				ServerSocket ss = new ServerSocket(port);
+				Socket s = ss.accept();
+
+				TestServer ts = new TestServer(s);
+				ts.runOne();
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+	}
+
+	private static class ClientThread extends Thread {
+		private String server;
+	        private	int port;
+
+		public ClientThread(String server, int port) {
+			this.server = server;
+			this.port = port;
+		}
+		public void run() {
+			try {
+				Socket s = new Socket(server, port);
+				TestClient c = new TestClient(s);
+				c.test();
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+	}
+}
+
diff --git a/examples/tcp/labcommTCPtest/client/TestClient.java b/examples/tcp/labcommTCPtest/client/TestClient.java
index e2f9518a2427d5a865795b6fe422c82390712f1b..ef581dc37a2457716a32b20e7156809da143b9ef 100644
--- a/examples/tcp/labcommTCPtest/client/TestClient.java
+++ b/examples/tcp/labcommTCPtest/client/TestClient.java
@@ -37,7 +37,7 @@ public class TestClient implements Handler {
 
 			LabCommDecoderChannel c = new LabCommDecoderChannel(in);
 			FooSample.register(c,this);
-			c.run();
+			c.runOne();
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -58,8 +58,7 @@ public class TestClient implements Handler {
 	}
 
 	private void printSample(String header, FooSample sample2) throws Exception {
-		System.out.println(header);
-		System.out.format("TestClient.invoke(%d, %d, %d, %f)\n", sample2.x, sample2.y, sample2.t, sample2.d);
+		System.out.format("[TestClient] %s: (%d, %d, %d, %f)\n", header, sample2.x, sample2.y, sample2.t, sample2.d);
 	}
 
 	public void handle_FooSample(FooSample sample2) throws Exception {