diff --git a/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ActionServer.java b/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ActionServer.java
index 010bb7d1c3a3ac36692a822756432f827a7712b2..15148408c80d4601c379c701ec2c83439eab90d6 100644
--- a/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ActionServer.java
+++ b/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ActionServer.java
@@ -1,3 +1,19 @@
+/**
+ * Copyright 2015 Creativa77 www.ekumenlab
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package com.github.ekumen.rosjava_actionlib;
 
 import org.ros.namespace.GraphName;
@@ -17,6 +33,10 @@ import actionlib_msgs.GoalStatusArray;
 import actionlib_msgs.GoalID;
 import actionlib_msgs.GoalStatus;
 
+/**
+ * Class to encapsulate the actiolib server's communication and goal management.
+ * @author Ernesto Corbellini <ecorbellini@ekumenlabs.com>
+ */
 public class ActionServer<T_ACTION_GOAL extends Message,
   T_ACTION_FEEDBACK extends Message,
   T_ACTION_RESULT extends Message> {
@@ -47,6 +67,17 @@ public class ActionServer<T_ACTION_GOAL extends Message,
   private HashMap<String, ServerGoal> goalTracker = new  HashMap<String,
     ServerGoal>(1);
 
+  /**
+   * Constructor.
+   * @param node Object representing a node connected to a ROS master.
+   * @param actionName String that identifies the name of this action. This name
+   * is used for naming the ROS topics.
+   * @param actionGoalType String holding the type for the action goal message.
+   * @param actionFeedbackType String holding the type for the action feedback
+   * message.
+   * @param actionResultType String holding the type for the action result
+   * message.
+   */
   ActionServer (ConnectedNode node, String actionName, String actionGoalType,
     String actionFeedbackType, String actionResultType) {
     this.node = node;
@@ -58,22 +89,46 @@ public class ActionServer<T_ACTION_GOAL extends Message,
     connect(node);
   }
 
+  /**
+   * Attach a listener to this actionlib server. The listener must implement the
+   * ActionServerListener interface which provides callback methods for each
+   * incoming message and event.
+   * @param target An object that implements the ActionServerListener interface.
+   * This object will receive the callbacks with the events.
+   */
   public void attachListener(ActionServerListener target) {
     callbackTarget = target;
   }
 
+  /**
+   * Publish the current status information for the tracked goals on the /status topic.
+   * @param status GoalStatusArray message containing the status to send.
+   * @see actionlib_msgs.GoalStatusArray
+   */
   public void sendStatus(GoalStatusArray status) {
     statusPublisher.publish(status);
   }
 
+  /**
+   * Publish a feedback message on the /feedback topic.
+   * @param feedback An action feedback message to send.
+   */
   public void sendFeedback(T_ACTION_FEEDBACK feedback) {
     feedbackPublisher.publish(feedback);
   }
 
+  /**
+   * Publish result message on the /result topic.
+   * @param result The action result message to send.
+   */
   public void sendResult(T_ACTION_RESULT result) {
     resultPublisher.publish(result);
   }
 
+  /**
+   * Publish the action server topics: /status, /feedback, /result
+   * @param node The object representing a node connected to a ROS master.
+   */
   private void publishServer(ConnectedNode node) {
     statusPublisher = node.newPublisher(actionName + "/status", GoalStatusArray._TYPE);
     feedbackPublisher = node.newPublisher(actionName + "/feedback", actionFeedbackType);
@@ -86,6 +141,9 @@ public class ActionServer<T_ACTION_GOAL extends Message,
     }, 2000, 1000);
   }
 
+  /**
+   * Stop publishing the action server topics.
+   */
   private void unpublishServer() {
     if (statusPublisher != null) {
       statusPublisher.shutdown(5, TimeUnit.SECONDS);