diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7595df671fe2feb82e85135ef915cf16f174b64b..c4244d79f522ae20598d175d7789056ddc40f6ba 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,8 +6,9 @@
   * Added epsilon to grasp action
   * Added `m_ee`, `F_x_Cee`, `I_ee`, `m_total`, `F_x_Ctotal` and `I_total`
     to the robot state
-  * Use O_T_EE_d in examples
-  * Fix includes for Eigen3 in `franka_example_controllers`
+  * Use `O_T_EE_d` in examples
+  * Fixed includes for Eigen3 in `franka_example_controllers`
+  * Fixed gripper state publishing in `franka_gripper_node`
 
 ## 0.1.2 - 2017-10-10
 
diff --git a/franka_gripper/src/franka_gripper_node.cpp b/franka_gripper/src/franka_gripper_node.cpp
index 7c9c27cb6d3756ab552861ee73713d27afcc3622..8b5b5eaeeab8a2e39c67d0b8e0d2623f5267f66c 100644
--- a/franka_gripper/src/franka_gripper_node.cpp
+++ b/franka_gripper/src/franka_gripper_node.cpp
@@ -11,7 +11,6 @@
 #include <ros/rate.h>
 #include <ros/spinner.h>
 #include <sensor_msgs/JointState.h>
-#include <xmlrpcpp/XmlRpc.h>
 
 #include <franka/gripper_state.h>
 #include <franka_gripper/franka_gripper.h>
@@ -133,27 +132,26 @@ int main(int argc, char** argv) {
                     << publish_rate);
   }
 
-  XmlRpc::XmlRpcValue params;
-  if (!node_handle.getParam("joint_names", params)) {
+  std::vector<std::string> joint_names;
+  if (!node_handle.getParam("joint_names", joint_names)) {
     ROS_ERROR("franka_gripper_node: Could not parse joint_names!");
     return -1;
   }
-  if (params.size() != 2) {
+  if (joint_names.size() != 2) {
     ROS_ERROR("franka_gripper_node: Got wrong number of joint_names!");
     return -1;
   }
-  std::vector<std::string> joint_names(params.size());
-  for (int i = 0; i < params.size(); ++i) {
-    joint_names[i] = static_cast<std::string>(params[i]);
-  }
 
   franka::GripperState gripper_state;
   std::mutex gripper_state_mutex;
   std::thread read_thread([&gripper_state, &gripper, &gripper_state_mutex]() {
     ros::Rate read_rate(10);
-    while (read_rate.sleep() && ros::ok()) {
-      std::lock_guard<std::mutex> lock(gripper_state_mutex);
-      updateGripperState(gripper, &gripper_state);
+    while (ros::ok()) {
+      {
+        std::lock_guard<std::mutex> _(gripper_state_mutex);
+        updateGripperState(gripper, &gripper_state);
+      }
+      read_rate.sleep();
     }
   });