diff --git a/include/darwin_action.h b/include/darwin_action.h
index cfd479364b835d05990e953b060efbe44f330875..d1c1160df4de460e6eac8a1af74cd68088ba2b2c 100644
--- a/include/darwin_action.h
+++ b/include/darwin_action.h
@@ -7,7 +7,7 @@
 class CDarwinAction : public CDarwinRobotBase
 {
   public:
-    CDarwinAction(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim=false);
+    CDarwinAction(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id);
     void load_page(unsigned char page_id);
     unsigned char get_current_page(void);
     unsigned char get_current_step(void);
diff --git a/include/darwin_balance.h b/include/darwin_balance.h
index 053af76a789629a7c01cc9585c7f071ebc27562d..ff0ac39f94b3812d59fead54a40b459f617c586c 100644
--- a/include/darwin_balance.h
+++ b/include/darwin_balance.h
@@ -9,7 +9,7 @@ typedef enum {FWD_FALL=0,BWD_FALL=1,STANDING=2} fall_t;
 class CDarwinBalance : public CDarwinRobotBase
 {
   public:
-    CDarwinBalance(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim=false);
+    CDarwinBalance(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id);
     void enable(void);
     void disable(void);
     bool is_enabled(void);
diff --git a/include/darwin_dyn_manager.h b/include/darwin_dyn_manager.h
index d5804c649a9ded3ca2fd85d261268542438a52a0..f66ceedd850ee342b913cfc83071c6cddf1f024f 100644
--- a/include/darwin_dyn_manager.h
+++ b/include/darwin_dyn_manager.h
@@ -10,7 +10,7 @@ class CDarwinDynManager : public CDarwinRobotBase
     double manager_period;
     unsigned char num_devices;
   public:
-    CDarwinDynManager(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim=false);
+    CDarwinDynManager(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id);
     double get_base_period(void);
     void set_base_period(double period_s);
     unsigned int get_num_modules(void);
diff --git a/include/darwin_head_tracking.h b/include/darwin_head_tracking.h
index 8ce3a4ede81186f40294b55fa9836f1eec776e45..fe9434653b28fda84592150c27457da6cfd8e5b7 100644
--- a/include/darwin_head_tracking.h
+++ b/include/darwin_head_tracking.h
@@ -7,7 +7,7 @@
 class CDarwinHeadTracking : public CDarwinRobotBase
 {
   public:
-    CDarwinHeadTracking(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim=false);
+    CDarwinHeadTracking(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id);
     void set_pan_pid(double p,double i,double d,double i_clamp);
     void get_pan_pid(double *p,double *i,double *d,double *i_clamp);
     void set_tilt_pid(double p,double i,double d,double i_clamp);
diff --git a/include/darwin_imu.h b/include/darwin_imu.h
index 05dcec3f9f3d19e421841853890e611d06b6a648..2bcde08815ff7e3cf36b9c4aa17913cb92f87ae6 100644
--- a/include/darwin_imu.h
+++ b/include/darwin_imu.h
@@ -7,7 +7,7 @@
 class CDarwinIMU : public CDarwinRobotBase
 {
   public:
-    CDarwinIMU(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim=false);
+    CDarwinIMU(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id);
     void start(void);
     void stop(void);
     void start_gyro_cal(void);
diff --git a/include/darwin_joint_motion.h b/include/darwin_joint_motion.h
index 90d491efea34895c58637c068afb4e539ca432cd..cd51592b1620c26db578fff3b1ab408dc5b6ee79 100644
--- a/include/darwin_joint_motion.h
+++ b/include/darwin_joint_motion.h
@@ -9,7 +9,7 @@ typedef enum {JOINTS_GRP0=0,JOINTS_GRP1=1,JOINTS_GRP2=2,JOINTS_GRP3=2} joints_gr
 class CDarwinJointMotion : public CDarwinRobotBase
 {
   public:
-    CDarwinJointMotion(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim=false);
+    CDarwinJointMotion(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id);
     void load(joints_grp_t group,std::vector<unsigned char> &servos,std::vector<double> &angles,std::vector<double> &speeds,std::vector<double> &accels);
     std::vector<unsigned char> get_group_servos(joints_grp_t group);
     std::vector<double> get_group_angles(joints_grp_t group);
diff --git a/include/darwin_mmanager.h b/include/darwin_mmanager.h
index 91307d53252cbc83b5795206fa699e3725ab151f..116672479879315358f5a1f4ea95423ad28bb4c7 100644
--- a/include/darwin_mmanager.h
+++ b/include/darwin_mmanager.h
@@ -15,7 +15,7 @@ class CDarwinMManager : public CDarwinDynManager
   protected:
     double mmanager_period;
   public:
-    CDarwinMManager(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim=false);
+    CDarwinMManager(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id);
     unsigned int get_present_servos(void);
     void set_period(double period_s);
     double get_period(void);
diff --git a/include/darwin_robot_base.h b/include/darwin_robot_base.h
index a4c3610757a18b230a1091a9fc0d06da690337a8..cc2c4f6ee086760d23fe331029e8e0cfc5700c0f 100644
--- a/include/darwin_robot_base.h
+++ b/include/darwin_robot_base.h
@@ -2,19 +2,18 @@
 #define _DARWIN_ROBOT_BASE_H
 
 #include "dynamixel.h"
-#include "dynamixelserver_ftdi.h"
 #include "dynamixelserver_serial.h"
 #include "darwin_registers.h"
 
 class CDarwinRobotBase
 {
   protected:
-    CDynamixelServer *dyn_server;
+    CDynamixelServerSerial *dyn_server;
     CDynamixel *robot_device;
     std::string robot_name;
     unsigned char robot_id;
   public:
-    CDarwinRobotBase(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim=false);
+    CDarwinRobotBase(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id);
     void is_valid(void);
     virtual ~CDarwinRobotBase();
 };
diff --git a/include/darwin_walk.h b/include/darwin_walk.h
index d40d1d100c4726e91ffeb6548decca41d2b9e0f6..0b669bbc083d311d9fe2b2e77439d9df6f5c8e8d 100644
--- a/include/darwin_walk.h
+++ b/include/darwin_walk.h
@@ -7,7 +7,7 @@
 class CDarwinWalk : public CDarwinRobotBase
 {
   public:
-    CDarwinWalk(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim=false);
+    CDarwinWalk(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id);
     void set_x_offset(double offset_m);
     double get_x_offset(void);
     void set_y_offset(double offset_m);
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2682c6bb18ef3850fae0f56f289bbc10f22da30d..c2497d6a8c615ff309718949aafae8f9ee38f847 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -17,6 +17,7 @@ SET(robot_headers ../include/darwin_robot_base.h ../include/darwin_robot_excepti
 
 # locate the necessary dependencies
 FIND_PACKAGE(iriutils REQUIRED)
+FIND_PACKAGE(comm REQUIRED)
 FIND_PACKAGE(dynamixel REQUIRED)
 FIND_PACKAGE(Eigen3 REQUIRED)
 
@@ -34,9 +35,12 @@ IF(EIGEN3_FOUND)
   SET(kin_leg_headers ../include/darwin_leg_kinematics.h ../include/darwin_robot_exceptions.h)
 ENDIF(EIGEN3_FOUND)
 
+#ADD_DEFINITIONS(-D_SIM)
+
 # add the necessary include directories
 INCLUDE_DIRECTORIES(../include)
 INCLUDE_DIRECTORIES(${iriutils_INCLUDE_DIR})
+INCLUDE_DIRECTORIES(${comm_INCLUDE_DIR})
 INCLUDE_DIRECTORIES(${dynamixel_INCLUDE_DIR})
 INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIR})
 # create the shared library
@@ -44,6 +48,7 @@ ADD_LIBRARY(darwin_robot SHARED ${robot_sources} ${XSD_SOURCES})
 ADD_DEPENDENCIES(darwin_robot xsd_files_gen)
 # link necessary libraries
 TARGET_LINK_LIBRARIES(darwin_robot ${iriutils_LIBRARY})
+TARGET_LINK_LIBRARIES(darwin_robot ${comm_LIBRARY})
 TARGET_LINK_LIBRARIES(darwin_robot ${dynamixel_LIBRARY})
 TARGET_LINK_LIBRARIES(darwin_robot ${XSD_LIBRARY})
 
diff --git a/src/darwin_action.cpp b/src/darwin_action.cpp
index 4c16e46c930b4aad3a924abaa8c9ef4ecedae884..31dfb8d8229e80b70bd8ba74f8e1d6e93d80777e 100644
--- a/src/darwin_action.cpp
+++ b/src/darwin_action.cpp
@@ -1,7 +1,7 @@
 #include "darwin_action.h"
 #include "darwin_robot_exceptions.h"
 
-CDarwinAction::CDarwinAction(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim) : CDarwinRobotBase(name,bus_id,bus_speed,id,sim)
+CDarwinAction::CDarwinAction(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id) : CDarwinRobotBase(name,bus_id,bus_speed,id)
 {
 }
 
diff --git a/src/darwin_balance.cpp b/src/darwin_balance.cpp
index ae246ddeae7b7261e3440303eb9095cd618d65ce..46732027c845a25f47248e7e969d76b05821c637 100644
--- a/src/darwin_balance.cpp
+++ b/src/darwin_balance.cpp
@@ -1,7 +1,7 @@
 #include "darwin_balance.h"
 #include "darwin_robot_exceptions.h"
 
-CDarwinBalance::CDarwinBalance(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim) : CDarwinRobotBase(name,bus_id,bus_speed,id,sim)
+CDarwinBalance::CDarwinBalance(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id) : CDarwinRobotBase(name,bus_id,bus_speed,id)
 {
 }
 
diff --git a/src/darwin_dyn_manager.cpp b/src/darwin_dyn_manager.cpp
index 096ab43822c7cdc4879110c212c710b9992fa360..f81fd938dc8e3afd6b573c40f12d91cbaf63a769 100644
--- a/src/darwin_dyn_manager.cpp
+++ b/src/darwin_dyn_manager.cpp
@@ -1,7 +1,7 @@
 #include "darwin_dyn_manager.h"
 #include "darwin_robot_exceptions.h"
 
-CDarwinDynManager::CDarwinDynManager(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim) : CDarwinRobotBase(name,bus_id,bus_speed,id,sim)
+CDarwinDynManager::CDarwinDynManager(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id) : CDarwinRobotBase(name,bus_id,bus_speed,id)
 {
   this->manager_period=this->get_base_period();
 }
diff --git a/src/darwin_head_tracking.cpp b/src/darwin_head_tracking.cpp
index 1b1119a5df9a8b5a1eea35974a7cc6ac93be996b..27d6f9b364ffa5ac08244be00b233ce4014ef271 100644
--- a/src/darwin_head_tracking.cpp
+++ b/src/darwin_head_tracking.cpp
@@ -1,7 +1,7 @@
 #include "darwin_head_tracking.h"
 #include "darwin_robot_exceptions.h"
 
-CDarwinHeadTracking::CDarwinHeadTracking(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim) : CDarwinRobotBase(name,bus_id,bus_speed,id,sim)
+CDarwinHeadTracking::CDarwinHeadTracking(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id) : CDarwinRobotBase(name,bus_id,bus_speed,id)
 {
 }
 
diff --git a/src/darwin_imu.cpp b/src/darwin_imu.cpp
index db357a894b9a8a2822bd1d0bbf58519ec3064fda..703666cead6fa5fe1f44bb755e6dd304d1b8606a 100644
--- a/src/darwin_imu.cpp
+++ b/src/darwin_imu.cpp
@@ -1,7 +1,7 @@
 #include "darwin_imu.h"
 #include "darwin_robot_exceptions.h"
 
-CDarwinIMU::CDarwinIMU(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim) : CDarwinRobotBase(name,bus_id,bus_speed,id,sim)
+CDarwinIMU::CDarwinIMU(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id) : CDarwinRobotBase(name,bus_id,bus_speed,id)
 {
 }
 
diff --git a/src/darwin_joint_motion.cpp b/src/darwin_joint_motion.cpp
index 222ebf86d74995e5bfb4cd81a3f1e4c2c3d14245..872021aaf79a6e20ce6d28bbad7414d1e7394211 100644
--- a/src/darwin_joint_motion.cpp
+++ b/src/darwin_joint_motion.cpp
@@ -1,7 +1,7 @@
 #include "darwin_joint_motion.h"
 #include "darwin_robot_exceptions.h"
 
-CDarwinJointMotion::CDarwinJointMotion(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim) : CDarwinRobotBase(name,bus_id,bus_speed,id,sim)
+CDarwinJointMotion::CDarwinJointMotion(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id) : CDarwinRobotBase(name,bus_id,bus_speed,id)
 {
 }
 
diff --git a/src/darwin_mmanager.cpp b/src/darwin_mmanager.cpp
index b03294b13b82ae7d015c81bab55c4f05fece387b..1395e551dc20420254e20f9315350a063c8c7fb4 100644
--- a/src/darwin_mmanager.cpp
+++ b/src/darwin_mmanager.cpp
@@ -36,7 +36,7 @@ const std::string servo_names[MAX_NUM_SERVOS]={std::string("Servo0"),
                                                std::string("Servo29"),
                                                std::string("Servo30")};
 
-CDarwinMManager::CDarwinMManager(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim) : CDarwinDynManager(name,bus_id,bus_speed,id,sim)
+CDarwinMManager::CDarwinMManager(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id) : CDarwinDynManager(name,bus_id,bus_speed,id)
 {
   this->mmanager_period=this->get_period();
 }
diff --git a/src/darwin_robot_base.cpp b/src/darwin_robot_base.cpp
index 1f34197b606149e03ece759bd4c7d9d6fd773fcb..5faf9d685e1225e6281bbc1023afba897cee5acc 100644
--- a/src/darwin_robot_base.cpp
+++ b/src/darwin_robot_base.cpp
@@ -2,42 +2,20 @@
 #include "darwin_robot_exceptions.h"
 #include "dynamixelexceptions.h"
 
-CDarwinRobotBase::CDarwinRobotBase(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim)
+CDarwinRobotBase::CDarwinRobotBase(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id)
 {
-  int num_buses;
-
   this->robot_device=NULL;
   if(name!="")
   {
     this->robot_name=name;
-    if(sim)
-    {
-      this->dyn_server=CDynamixelServerSerial::instance();
-      ((CDynamixelServerSerial *)this->dyn_server)->config_bus(bus_id,bus_speed);
-      num_buses=1;
-    }
-    else
-    {
-      this->dyn_server=CDynamixelServerFTDI::instance();
-      num_buses=((CDynamixelServerFTDI *)this->dyn_server)->get_num_buses();
-      if(num_buses>0)
-        ((CDynamixelServerFTDI *)this->dyn_server)->config_bus(bus_id,bus_speed);
-    }
-    if(num_buses>0)
-    {
-      sleep(1);
-      try{
-        this->robot_device=dyn_server->get_device(id,dyn_version2);
-        this->robot_id=id;
-      }catch(CDynamixelServerException &e){
-        this->dyn_server->free_device(id);
-        throw e;
-      }
-    }
-    else
-    {
-      /* handle exceptions */
-      throw CDarwinRobotException(_HERE_,"No FTDI USB devices found");
+    this->dyn_server=CDynamixelServerSerial::instance();
+    this->dyn_server->config_bus(bus_id,bus_speed);
+    try{
+      this->robot_device=dyn_server->get_device(id,dyn_version2);
+      this->robot_id=id;
+    }catch(CDynamixelServerException &e){
+      this->dyn_server->free_device(id);
+      throw e;
     }
   }
   else
diff --git a/src/darwin_walk.cpp b/src/darwin_walk.cpp
index 2c84fc84fd19b33997253e2d25502355b40814bb..40a2e032f8108bc43935e2ab57bc04337809e8b8 100644
--- a/src/darwin_walk.cpp
+++ b/src/darwin_walk.cpp
@@ -3,7 +3,7 @@
 
 #define PI 3.14159
 
-CDarwinWalk::CDarwinWalk(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id,bool sim) : CDarwinRobotBase(name,bus_id,bus_speed,id,sim)
+CDarwinWalk::CDarwinWalk(const std::string &name,std::string &bus_id,int bus_speed, unsigned char id) : CDarwinRobotBase(name,bus_id,bus_speed,id)
 {
 }
 
diff --git a/src/examples/darwin_action_test.cpp b/src/examples/darwin_action_test.cpp
index 777b3b9e8d0ec721aecbe3ba850149f84e1252a1..3f493018054363bda3844550c9ea0c856d6df8d7 100644
--- a/src/examples/darwin_action_test.cpp
+++ b/src/examples/darwin_action_test.cpp
@@ -4,7 +4,11 @@
 
 #include <iostream>
 
-std::string robot_device="/tmp/darwin_driver";
+#ifdef _SIM
+  std::string robot_device="/tmp/darwin_driver";
+#else
+  std::string robot_device="/dev/ttyACM0";
+#endif
 
 int main(int argc, char *argv[])
 {
@@ -12,8 +16,8 @@ int main(int argc, char *argv[])
   unsigned int present_servos;
 
   try{
-    CDarwinMManager darwin("Darwin",robot_device,1000000,0x01,true);
-    CDarwinAction action("Darwin",robot_device,1000000,0x01,true);
+    CDarwinMManager darwin("Darwin",robot_device,1000000,0x01);
+    CDarwinAction action("Darwin",robot_device,1000000,0x01);
     std::cout << "Manager period: " << darwin.get_base_period() << std::endl;
     std::cout << "Number of modules: " << darwin.get_num_modules() << std::endl;
     std::cout << "Number of masters: " << darwin.get_num_masters() << std::endl;
diff --git a/src/examples/darwin_head_tracking_test.cpp b/src/examples/darwin_head_tracking_test.cpp
index 6dcb357d18676f6dbf40fc91b0be846d5f1c1eef..948d85645e33c5b0c94ea6aad29d4de16e65bb8b 100644
--- a/src/examples/darwin_head_tracking_test.cpp
+++ b/src/examples/darwin_head_tracking_test.cpp
@@ -4,7 +4,11 @@
 
 #include <iostream>
 
-std::string robot_device="/tmp/darwin_driver";
+#ifdef _SIM
+  std::string robot_device="/tmp/darwin_driver";
+#else
+  std::string robot_device="/dev/ttyACM0";
+#endif
 
 int main(int argc, char *argv[])
 {
@@ -12,8 +16,8 @@ int main(int argc, char *argv[])
   unsigned int present_servos;
 
   try{
-    CDarwinMManager darwin("Darwin",robot_device,1000000,0x01,true);
-    CDarwinHeadTracking head("Darwin",robot_device,1000000,0x01,true);
+    CDarwinMManager darwin("Darwin",robot_device,1000000,0x01);
+    CDarwinHeadTracking head("Darwin",robot_device,1000000,0x01);
     std::cout << "Manager period: " << darwin.get_base_period() << std::endl;
     std::cout << "Number of modules: " << darwin.get_num_modules() << std::endl;
     std::cout << "Number of masters: " << darwin.get_num_masters() << std::endl;
diff --git a/src/examples/darwin_imu_test.cpp b/src/examples/darwin_imu_test.cpp
index 741bfaffb7e26b1ef92cedb08f8d9d13d80fa951..d911ad868e5500d1a0a708ba3a22db33bd594e7e 100644
--- a/src/examples/darwin_imu_test.cpp
+++ b/src/examples/darwin_imu_test.cpp
@@ -3,7 +3,11 @@
 
 #include <iostream>
 
-std::string robot_device="/tmp/darwin_driver";
+#ifdef _SIM
+  std::string robot_device="/tmp/darwin_driver";
+#else
+  std::string robot_device="/dev/ttyACM0";
+#endif
 
 int main(int argc, char *argv[])
 {
@@ -12,7 +16,7 @@ int main(int argc, char *argv[])
   double accel_x,accel_y,accel_z;
 
   try{
-    CDarwinIMU darwin_imu("Darwin",robot_device,1000000,0x01,true);
+    CDarwinIMU darwin_imu("Darwin",robot_device,1000000,0x01);
     std::cout << "found darwin controller" << std::endl;
     std::cout << "Number of calibration samples: " << darwin_imu.get_cal_samples() << std::endl;
     darwin_imu.start();
diff --git a/src/examples/darwin_joint_motion_test.cpp b/src/examples/darwin_joint_motion_test.cpp
index 30473d712a6c8a96d80e10aa109e04bf9934140f..fcec1a0d9df8130f6f722f72830c1cdd6529b57a 100644
--- a/src/examples/darwin_joint_motion_test.cpp
+++ b/src/examples/darwin_joint_motion_test.cpp
@@ -4,7 +4,11 @@
 
 #include <iostream>
 
-std::string robot_device="/tmp/darwin_driver";
+#ifdef _SIM
+  std::string robot_device="/tmp/darwin_driver";
+#else
+  std::string robot_device="/dev/ttyACM0";
+#endif
 
 int main(int argc, char *argv[])
 {
@@ -14,8 +18,8 @@ int main(int argc, char *argv[])
   std::vector<double> angles,speeds,accels;
 
   try{
-    CDarwinMManager darwin("Darwin",robot_device,1000000,0x01,true);
-    CDarwinJointMotion joints("Darwin",robot_device,1000000,0x01,true);
+    CDarwinMManager darwin("Darwin",robot_device,1000000,0x01);
+    CDarwinJointMotion joints("Darwin",robot_device,1000000,0x01);
     std::cout << "Manager period: " << darwin.get_base_period() << std::endl;
     std::cout << "Number of modules: " << darwin.get_num_modules() << std::endl;
     std::cout << "Number of masters: " << darwin.get_num_masters() << std::endl;
diff --git a/src/examples/darwin_manager_test.cpp b/src/examples/darwin_manager_test.cpp
index bbe888959949200dbbc65d370a98f560cca4f9f3..26a5fd10559d2042c775c722a1957ae5d587c2f5 100644
--- a/src/examples/darwin_manager_test.cpp
+++ b/src/examples/darwin_manager_test.cpp
@@ -3,7 +3,11 @@
 
 #include <iostream>
 
-std::string robot_device="/tmp/darwin_driver";
+#ifdef _SIM
+  std::string robot_device="/tmp/darwin_driver";
+#else
+  std::string robot_device="/dev/ttyACM0";
+#endif
 
 int main(int argc, char *argv[])
 {
@@ -12,7 +16,7 @@ int main(int argc, char *argv[])
   std::vector<double> offsets,angles;
 
   try{
-    CDarwinMManager darwin("Darwin",robot_device,1000000,0x01,true);
+    CDarwinMManager darwin("Darwin",robot_device,100000,1);
     std::cout << "Manager period: " << darwin.get_base_period() << std::endl;
     std::cout << "Number of modules: " << darwin.get_num_modules() << std::endl;
     std::cout << "Number of masters: " << darwin.get_num_masters() << std::endl;
diff --git a/src/examples/darwin_walking_test.cpp b/src/examples/darwin_walking_test.cpp
index 64ae187e48b8c6fd7f635735d1ebae5492b2af5d..095108d41c097731635252a7aba942996374ae42 100644
--- a/src/examples/darwin_walking_test.cpp
+++ b/src/examples/darwin_walking_test.cpp
@@ -7,7 +7,11 @@
 
 #include <iostream>
 
-std::string robot_device="/tmp/darwin_driver";
+#ifdef _SIM
+  std::string robot_device="/tmp/darwin_driver";
+#else
+  std::string robot_device="/dev/ttyACM0";
+#endif
 
 int main(int argc, char *argv[])
 {
@@ -15,11 +19,11 @@ int main(int argc, char *argv[])
   unsigned int present_servos;
 
   try{
-    CDarwinMManager darwin("Darwin",robot_device,1000000,0x01,true);
-    CDarwinAction action("Darwin",robot_device,1000000,0x01,true);
-    CDarwinIMU imu("Darwin",robot_device,1000000,0x01,true);
-    CDarwinBalance balance("Darwin",robot_device,1000000,0x01,true);
-    CDarwinWalk walk("Darwin",robot_device,1000000,0x01,true);
+    CDarwinMManager darwin("Darwin",robot_device,1000000,0x01);
+    CDarwinAction action("Darwin",robot_device,1000000,0x01);
+    CDarwinIMU imu("Darwin",robot_device,1000000,0x01);
+    CDarwinBalance balance("Darwin",robot_device,1000000,0x01);
+    CDarwinWalk walk("Darwin",robot_device,1000000,0x01);
     std::cout << "Manager period: " << darwin.get_base_period() << std::endl;
     std::cout << "Number of modules: " << darwin.get_num_modules() << std::endl;
     std::cout << "Number of masters: " << darwin.get_num_masters() << std::endl;