diff --git a/README.md b/README.md
index 7fd26bebc85cf3c10f75b62c8b16e44232d6bbd5..2ffbb280201ccc5b8e02c2c2278b322852851be4 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,15 @@
 # Actionlib for Rosjava
-A pure java implementation of [actionlib](http://wiki.ros.org/actionlib) for rosjava.
-For now there is a basic client implemented with the following features:
-* send goal
-* send cancel
+A pure java implementation of [actionlib](http://wiki.ros.org/actionlib) for [rosjava](http://wiki.ros.org/rosjava).
+Features implemented:
+Basic client:
+* methods for publishing goal and cancel messages.
 * callback interface for status, feedback and result messages.
+* goal state tracking is not implemented yet
+Basic server:
+* methods for publishing result, feedback and status messages.
+* periodic goal status publishing as heartbeat
+* callback interface for accepting goals, and receiving cancel messages.
+* multi-goal state tracking.
 
 
 ## Requirements:
@@ -19,43 +25,67 @@ For now there is a basic client implemented with the following features:
 3. Move to the project folder: ```$ cd src/rosjava_actionlib```
 4. Build the execution target: ```$ ./gradlew deployApp```
 
-## Running:
-1. Open a new terminal and get a ros server running: ```$ roscore```
+## Running a test client:
+1. Open a new terminal and get a ros master running: ```$ roscore```
 2. In another terminal run the actionlib sample server: ```$ rosrun actionlib_tutorials fibonacci_server```
-3. Run our test client:
+3. Run our client:
   * Go back to the package folder: ```cd ../..```
   * Source the project environment: ```$ source devel/setup.bash```
   * Run the client: ```$ rosrun rosjava_actionlib execute com.github.ekumen.rosjava_actionlib.TestClient```
 
-## Output
+## Output from the test client
 The test client will connect to the fibonacci server and send it a goal. It
 should then receive feedback from the server and a final response. The output
 should look something like this:
 ```
-Sending goal #3...
+Sending goal #0...
+Goal sent.
+Got Fibonacci result sequence!0 1
+Sending goal #1...
 Goal sent.
 Feedback from Fibonacci server: 0 1 1
-Feedback from Fibonacci server: 0 1 1 2
-Feedback from Fibonacci server: 0 1 1 2 3
-Feedback from Fibonacci server: 0 1 1 2 3 5
-Feedback from Fibonacci server: 0 1 1 2 3 5 8
-Feedback from Fibonacci server: 0 1 1 2 3 5 8 13
-Got Fibonacci result sequence!0 1 1 2 3 5 8 13
+Got Fibonacci result sequence!0 1 1
 Sending goal #2...
 Goal sent.
-Feedback from Fibonacci server: 0 1 1
-Feedback from Fibonacci server: 0 1 1 2
-Feedback from Fibonacci server: 0 1 1 2 3
-Feedback from Fibonacci server: 0 1 1 2 3 5
-Feedback from Fibonacci server: 0 1 1 2 3 5 8
-Feedback from Fibonacci server: 0 1 1 2 3 5 8 13
-Got Fibonacci result sequence!0 1 1 2 3 5 8 13
-Sending goal #1...
+Sending goal ID: fibonacci_test_3...
 Goal sent.
 Feedback from Fibonacci server: 0 1 1
-Feedback from Fibonacci server: 0 1 1 2
-Feedback from Fibonacci server: 0 1 1 2 3
-Feedback from Fibonacci server: 0 1 1 2 3 5
-Feedback from Fibonacci server: 0 1 1 2 3 5 8
-Feedback from Fibonacci server: 0 1 1 2 3 5 8 13
+Got Fibonacci result sequence!Feedback from Fibonacci server:
+0 1 1
+Cancelling goal ID: fibonacci_test_3
+Got Fibonacci result sequence!
+
+```
+
+## Running a test server:
+1. Run our server:
+  * Go back to the package folder: ```cd ../..```
+  * Source the project environment: ```$ source devel/setup.bash```
+  * Run the server: ```$ rosrun rosjava_actionlib execute com.github.ekumen.rosjava_actionlib.TestClient```
+2. If its not already running, open a new terminal and get a ros master running: ```$ roscore```
+3. In another terminal run the actionlib sample client: ```$ rosrun actionlib_tutorials fibonacci_client```
+4. Once finished, use Ctrl+C to close the server.
+
+## Output from the test server
+The test server will start running and wait for clients to connect and send goal messages.
+Once the fibonacci client sends a goal, the server accepts it and sends a result. The output
+should look something like this:
+```
+Goal received.
+Goal accepted.
+Sending result...
+```
+
+## Running demos for the server and the client
+You can launch a demo client and a fibonacci action server all at once using:
+```
+roslaunch rosjava_actionlib client_demo.launch --screen
 ```
+
+
+You can also launch a demo server and a fibonacci action client all at once using:
+```
+roslaunch rosjava_actionlib server_demo.launch --screen
+```
+
+Use Ctrl+C to stop the execution once it's finished.