diff --git a/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ActionGoal.java b/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ActionGoal.java
index 1a368c39d8c3cffc0e88c273bfe5d4ff51cdc07d..6bc5fd2ff9db6c0a48f5aa0530e85e34b44ad9dc 100644
--- a/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ActionGoal.java
+++ b/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ActionGoal.java
@@ -237,7 +237,7 @@ public class ActionGoal<T_ACTION_GOAL extends Message, T_GOAL extends Message> {
 
   }
 
-  public boolean equals(ActionGoal<T_ACTION_GOAL> ag) {
+  public boolean equals(ActionGoal ag) {
     return (this.getGoalId() == ag.getGoalId());
   }
 }
diff --git a/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ClientGoalManager.java b/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ClientGoalManager.java
index c8be6c532515acd0e01b321757acc18c3af995dc..3b23d8959f599d93d6e5eff0e951437667f7e473 100644
--- a/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ClientGoalManager.java
+++ b/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ClientGoalManager.java
@@ -16,6 +16,7 @@
 
 package com.github.ekumen.rosjava_actionlib;
 
+import org.ros.internal.message.Message;
 import actionlib_msgs.GoalID;
 import actionlib_msgs.GoalStatus;
 
@@ -23,17 +24,17 @@ import actionlib_msgs.GoalStatus;
  * Class that binds and action goal with a state machine to track its state.
  * @author Ernesto Corbellini ecorbellini@ekumenlabs.com
  */
-public class ClientGoalManager<T_ACTION_GOAL extends Message> {
-  public ActionGoal<T_ACTION_GOAL> actionGoal = null;
+public class ClientGoalManager<T_ACTION_GOAL extends Message, T_GOAL extends Message> {
+  public ActionGoal<T_ACTION_GOAL, T_GOAL> actionGoal = null;
   public ClientStateMachine stateMachine = null;
 
-  public void sendGoal(ActionGoal<T_ACTION_GOAL> ag) {
+  public void sendGoal(ActionGoal<T_ACTION_GOAL, T_GOAL> ag) {
     actionGoal = ag;
     stateMachine = new ClientStateMachine();
     stateMachine.setState(ClientStateMachine.ClientStates.WAITING_FOR_GOAL_ACK);
   }
 
   public boolean cancelGoal() {
-    return stateMachine.cancelGoal();
+    return stateMachine.cancel();
   }
 }
diff --git a/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ClientStateMachine.java b/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ClientStateMachine.java
index 58f5010192ca958f0b4b61d25bddca39390deeba..ec025fee59b8cbc9f48bf4e649b6ce4e73ac7f82 100644
--- a/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ClientStateMachine.java
+++ b/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ClientStateMachine.java
@@ -417,8 +417,8 @@ public class ClientStateMachine {
    * @return True if the goal can be cancelled, false otherwise.
    */
   public boolean cancel() {
-    bolean ret = false;
-    switch (stateMachine.getState()) {
+    boolean ret = false;
+    switch (state) {
       case ClientStates.WAITING_FOR_GOAL_ACK:
       case ClientStates.PENDING:
       case ClientStates.ACTIVE: