diff --git a/franka_control/CMakeLists.txt b/franka_control/CMakeLists.txt
index ee310433cd3a694ab8714ce08ee98ff00a7764ea..00952fc159b85e8a33ee43ef2bd10cc1c2c1d6d5 100644
--- a/franka_control/CMakeLists.txt
+++ b/franka_control/CMakeLists.txt
@@ -44,7 +44,7 @@ generate_messages(DEPENDENCIES actionlib_msgs)
 
 catkin_package(
   INCLUDE_DIRS include
-  LIBRARIES franka_state_controller
+  LIBRARIES franka_state_controller franka_control_services
   CATKIN_DEPENDS
     actionlib
     controller_interface
@@ -60,6 +60,7 @@ catkin_package(
   DEPENDS Franka
 )
 
+## franka_state_controller
 add_library(franka_state_controller
   src/franka_state_controller.cpp
 )
@@ -79,9 +80,29 @@ target_include_directories(franka_state_controller PUBLIC
   include
 )
 
+## franka_control_services
+add_library(franka_control_services
+  src/services.cpp
+)
+
+add_dependencies(franka_control_services
+  ${${PROJECT_NAME}_EXPORTED_TARGETS}
+  ${catkin_EXPORTED_TARGETS}
+)
+
+target_link_libraries(franka_control_services
+  ${catkin_LIBRARIES}
+  Franka::Franka
+)
+
+target_include_directories(franka_control_services PUBLIC
+  ${catkin_INCLUDE_DIRS}
+  include
+)
+
+## franka_control_node
 add_executable(franka_control_node
   src/franka_control_node.cpp
-  src/services.cpp
 )
 
 add_dependencies(franka_control_node
@@ -91,6 +112,7 @@ add_dependencies(franka_control_node
 
 target_link_libraries(franka_control_node
   ${catkin_LIBRARIES}
+  franka_control_services
   Franka::Franka
 )
 
diff --git a/franka_control/src/services.h b/franka_control/include/franka_control/services.h
similarity index 100%
rename from franka_control/src/services.h
rename to franka_control/include/franka_control/services.h
diff --git a/franka_control/src/franka_control_node.cpp b/franka_control/src/franka_control_node.cpp
index f5f928ac36c9623cdeae7c5a666d121c07807c37..ebdb53486bd37c9e2fed7ec22477f9090ccff06d 100644
--- a/franka_control/src/franka_control_node.cpp
+++ b/franka_control/src/franka_control_node.cpp
@@ -8,11 +8,11 @@
 #include <controller_manager/controller_manager.h>
 #include <franka/exception.h>
 #include <franka/robot.h>
-#include <franka_control/ErrorRecoveryAction.h>
 #include <franka_hw/franka_hw.h>
 #include <ros/ros.h>
 
-#include "services.h"
+#include <franka_control/ErrorRecoveryAction.h>
+#include <franka_control/services.h>
 
 class ServiceContainer {
  public:
diff --git a/franka_control/src/services.cpp b/franka_control/src/services.cpp
index 8bd792289fce3045b4ae7fc8e6e4c0968c5b9568..8357dded9f1c0537e24da3f2ae3622d4365e93e1 100644
--- a/franka_control/src/services.cpp
+++ b/franka_control/src/services.cpp
@@ -1,4 +1,4 @@
-#include "services.h"
+#include <franka_control/services.h>
 
 namespace franka_control {