diff --git a/include/dynamic_graph_bridge/sot_loader.hh b/include/dynamic_graph_bridge/sot_loader.hh
index c05a95a004188f67ff41b58aa1bfa26cc913c788..30672e0bb3852b4fbf68311555b1e4b62262b5da 100644
--- a/include/dynamic_graph_bridge/sot_loader.hh
+++ b/include/dynamic_graph_bridge/sot_loader.hh
@@ -89,6 +89,8 @@ public:
   SotLoader();
   ~SotLoader() {};
 
+  // \brief Create a thread for ROS and start the control loop.
+  void initializeRosNode(int argc, char *argv[]);
 
   // \brief Compute one iteration of control.
   // Basically calls fillSensors, the SoT and the readControl.
diff --git a/include/dynamic_graph_bridge/sot_loader_basic.hh b/include/dynamic_graph_bridge/sot_loader_basic.hh
index 10b13b7ae3590db82205de2772409813da5c7282..6f7fbdfdc71521f2a1aad80f7c3e005927ffbb7c 100644
--- a/include/dynamic_graph_bridge/sot_loader_basic.hh
+++ b/include/dynamic_graph_bridge/sot_loader_basic.hh
@@ -93,8 +93,8 @@ public:
   void Initialization();
 
   // \brief Create a thread for ROS.
-  void initializeRosNode(int argc, char *argv[]);
-
+  virtual void initializeRosNode(int argc, char *argv[]);
+  
 
   // \brief Callback function when starting dynamic graph.
   bool start_dg(std_srvs::Empty::Request& request, 
diff --git a/src/sot_loader.cpp b/src/sot_loader.cpp
index 8c3a4a05bb3bf5817413c65ff47b272f8be927b8..c983ab5fdffa7f410017bc2ff1b558c2d0e3e58a 100644
--- a/src/sot_loader.cpp
+++ b/src/sot_loader.cpp
@@ -73,7 +73,11 @@ void SotLoader::startControlLoop()
   boost::thread thr(workThreadLoader, this);
 }
 
-
+void SotLoader::initializeRosNode(int argc, char *argv[])
+{
+  SotLoaderBasic::initializeRosNode(argc, argv);
+  startControlLoop();
+}
 
 void 
 SotLoader::fillSensors(map<string,dgs::SensorValues> & sensorsIn)