diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index ee1fd313ca61959da16fa1b4e141ff7b504d2b27..a50bed2b854b52285ae9239a3a8b103918dc2dbe 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,6 +1,5 @@
 # driver source files
 SET(sources model_car_driver_base.cpp
-            model_car_exceptions.cpp
             model_car_actuators.cpp
             model_car_ultrasounds.cpp
             model_car_egomotion.cpp
@@ -8,7 +7,6 @@ SET(sources model_car_driver_base.cpp
 
 # application header files
 SET(headers ../include/model_car_driver_base.h 
-            ../include/model_car_exceptions.h 
             ../include/model_car_protocol.h 
             ../include/model_car_actuators.h
             ../include/model_car_ultrasounds.h
diff --git a/src/examples/CMakeLists.txt b/src/examples/CMakeLists.txt
index 0fc08b468507bbdcce7a7154fa40844a82d4bc4d..75133f2ff7bc511b1b3eef70b22139e59345f5d9 100644
--- a/src/examples/CMakeLists.txt
+++ b/src/examples/CMakeLists.txt
@@ -1,7 +1,3 @@
-SET(name model_car_drivers_test)
-ADD_EXECUTABLE(${name} ${name}.cpp)
-TARGET_LINK_LIBRARIES(${name} ${PROJECT_NAME})
-
 SET(name model_car_ultrasounds_test)
 ADD_EXECUTABLE(${name} ${name}.cpp)
 TARGET_LINK_LIBRARIES(${name} ${PROJECT_NAME})
diff --git a/src/examples/model_car_actuators_test.cpp b/src/examples/model_car_actuators_test.cpp
index ab72ed7bce37ac350e0e0103bd6a74c4734ea95e..45590722a31c7d432e368a7ddb54be37abc9f9e2 100644
--- a/src/examples/model_car_actuators_test.cpp
+++ b/src/examples/model_car_actuators_test.cpp
@@ -1,117 +1,39 @@
 #include "model_car_actuators.h"
-
-
+#include <iostream>
+#include <math.h>
 
 int main(int argc, char *argv[])
 {
   std::string name = "model_car_driver_actuators";
   CModelCarActuators *act_driver;
+  double vx,steer;
+
   try
   {
-    std::cout << "model_car_actuators_test::main: Creating object..." << std::endl;
     act_driver = new CModelCarActuators(name);
-    std::cout << "model_car_actuators_test::main: Object created" << std::endl;
     act_driver->open();
 
-    bool test_steering           = true;
-    bool test_speed              = true;
-    bool test_watchdog           = false;
-    bool test_emergency_stop     = false;
-    bool test_enable_disable_uss = false;
+    act_driver->disable_ultrasounds();
 
-    float t=500e3;
+    std::cout << "model_car_actuators_test::main: about to test speed, in 3..." << std::endl;
+    sleep(1);
+    std::cout << "model_car_actuators_test::main: about to test speed, 2..." << std::endl;
+    sleep(1);
+    std::cout << "model_car_actuators_test::main: about to test speed, 1..." << std::endl;
+    sleep(1);
 
-    if(test_steering)
+    std::cout << "model_car_actuators_test::main: sending speed 10" << std::endl;
+    for(unsigned int i=0;i<100;i++)
     {
-      std::cout << "model_car_actuators_test::main: about to test steering, in 3..." << std::endl;
-      sleep(1);
-      std::cout << "model_car_actuators_test::main: about to test steering, 2..." << std::endl;
-      sleep(1);
-      std::cout << "model_car_actuators_test::main: about to test steering, 1..."  << std::endl;
-      sleep(1);
-      std::cout << "model_car_actuators_test::main: sending steering 0" << std::endl;
-
-      act_driver->send_watchdog();
-      act_driver->send_speed(0.0); //stop
-      act_driver->send_steering(0.0);
-
-      for(int i=0; i<100; i+=10)
-      {
-        act_driver->send_watchdog();
-        act_driver->send_steering(i);
-        std::cout << "model_car_actuators_test::main: sending steering "<< i << std::endl;
-        usleep(t);
-      }
-      for(int i=100; i>=-100; i-=10)
-      {
-        act_driver->send_watchdog();
-        act_driver->send_steering(i);
-        std::cout << "model_car_actuators_test::main: sending steering "<< i << std::endl;
-        usleep(t);
-      }
-      for(int i=-100; i<=0; i+=10)
-      {
-        act_driver->send_watchdog();
-        act_driver->send_steering(i);
-        std::cout << "model_car_actuators_test::main: sending steering "<< i << std::endl;
-        usleep(t);
-      }
-
-      act_driver->send_watchdog();
-      std::cout << "model_car_actuators_test::main: sending steering 0"<< std::endl;
-      act_driver->send_steering(0.0);
-    }
-
-    if(test_speed)
-    {
-      float v=10;
-      std::cout << "model_car_actuators_test::main: about to test speed, in 3..." << std::endl;
-      sleep(1);
-      std::cout << "model_car_actuators_test::main: about to test speed, 2..." << std::endl;
-      sleep(1);
-      std::cout << "model_car_actuators_test::main: about to test speed, 1..." << std::endl;
-      sleep(1);
-
-      v=0;
-      std::cout << "model_car_actuators_test::main: sending speed "<< v << std::endl;
-      act_driver->send_watchdog();
-      act_driver->send_speed(v);
-      act_driver->send_steering(0.0); //center
-      usleep(t);
-      v=10;
-      std::cout << "model_car_actuators_test::main: sending speed " << v << std::endl;
-      act_driver->send_speed(v); 
-      act_driver->send_watchdog();
-      usleep(t);
-      act_driver->send_watchdog();
-      usleep(t);
-      act_driver->send_watchdog();
-      usleep(t);
-      act_driver->send_watchdog();
-      usleep(t);
-      act_driver->send_watchdog();
-      usleep(t);
-      act_driver->send_watchdog();
-      v=0;
-      std::cout << "model_car_actuators_test::main: sending speed " << v << std::endl;
-      act_driver->send_watchdog();
-      act_driver->send_speed(v);
-      usleep(t);
-      v=-10;
-      std::cout << "model_car_actuators_test::main: sending speed " << v << std::endl;
-      act_driver->send_watchdog();
-      act_driver->send_speed(v);
-      usleep(t);
-      act_driver->send_watchdog();
-      usleep(t);
-      act_driver->send_watchdog();
-      usleep(t);
-      v=0;
-      std::cout << "model_car_actuators_test::main: sending speed "<< v << std::endl;
-      act_driver->send_watchdog();
-      act_driver->send_speed(v);
+      usleep(100000);
+      vx=20.0*sin((2.0*3.14159*i)/100.0);
+      steer=50.0*sin((2.0*3.14159*i)/100.0);
+      std::cout << vx << "," << steer << std::endl;
+      act_driver->send_command(vx,steer); 
     }
+    act_driver->send_command(0.0,0.0); 
 
+    /*
     if(test_watchdog)
     {
       std::cout << "model_car_actuators_test::main: sending watchdog" << std::endl;
@@ -131,12 +53,8 @@ int main(int argc, char *argv[])
       std::cout << "model_car_actuators_test::main: sending disable uss" << std::endl;
       act_driver->send_disable_uss();
     }
-
-    std::cout << "model_car_actuators_test::main: END OF TESTING" << std::endl;
-
-    std::cout << "model_car_actuators_test::main: stopping act_driver" << std::endl;
+    */
     act_driver->close();
-    std::cout << "model_car_actuators_test::main: act_driver stopped" << std::endl;
   }
   catch (CException &e)
   {
diff --git a/src/examples/model_car_batteries_test.cpp b/src/examples/model_car_batteries_test.cpp
index 426fe5dd58d22bc995a7ff491bf3e7de04e6b286..7f2892b31ed391ffcd4a19d23c9b2bfc854ee955 100644
--- a/src/examples/model_car_batteries_test.cpp
+++ b/src/examples/model_car_batteries_test.cpp
@@ -1,4 +1,5 @@
 #include "model_car_batteries.h"
+#include <iostream>
 
 int main(int argc, char *argv[])
 {
@@ -8,43 +9,26 @@ int main(int argc, char *argv[])
   CModelCarBatteries *bat_driver;
   try
   {
-    std::cout << "model_car_drivers_test_bat::main: Creating object..." << std::endl;
     bat_driver = new CModelCarBatteries(name);
-    std::cout << "model_car_drivers_test_bat::main: Object created" << std::endl;
     bat_driver->open();
     events.push_back(bat_driver->get_new_data_event_id());
 
-    std::cout << "model_car_drivers_test_bat::main: reading BAT values" << std::endl;
-    //for(unsigned int i=0; i<10; i++)
     while(true)
     {
-      event_server->wait_all(events,1000);
-      float value;
-      if(bat_driver->get_bat(ID_ARD_SENS_VOLT_ACTUATOR, value))
-        std::cout << "  ID_ARD_SENS_VOLT_ACTUATOR:       " << value << std::endl;
-      if(bat_driver->get_bat(ID_ARD_SENS_VOLT_ACTUATOR_CELL1, value))
-        std::cout << "  ID_ARD_SENS_VOLT_ACTUATOR_CELL1: " << value << std::endl;
-      if(bat_driver->get_bat(ID_ARD_SENS_VOLT_ACTUATOR_CELL2, value))
-        std::cout << "  ID_ARD_SENS_VOLT_ACTUATOR_CELL2: " << value << std::endl;
-      if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS, value))
-        std::cout << "  ID_ARD_SENS_VOLT_SENSORS:        " << value << std::endl;
-      if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL1, value))
-        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL1:  " << value << std::endl;
-      if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL2, value))
-        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL2:  " << value << std::endl;
-      if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL3, value))
-        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL3:  " << value << std::endl;
-      if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL4, value))
-        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL4:  " << value << std::endl;
-      if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL5, value))
-        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL5:  " << value << std::endl;
-      if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL6, value))
-        std::cout << "  ID_ARD_SENS_VOLT_SENSORS_CELL6:  " << value << std::endl;
-      std::cout <<"  ---" <<std::endl;
+      event_server->wait_all(events,2000);
+      std::cout << "  motors battery voltage: " << bat_driver->get_motors_battery_voltage() << std::endl;
+      std::cout << "    motors battery cell1 voltage: " << bat_driver->get_motors_cell1_voltage() << std::endl;
+      std::cout << "    motors battery cell2 voltage: " << bat_driver->get_motors_cell2_voltage() << std::endl;
+      std::cout << "  payload battery voltage: " << bat_driver->get_payload_battery_voltage() << std::endl;
+      std::cout << "    payload battery cell1 voltage: " << bat_driver->get_payload_cell1_voltage() << std::endl;
+      std::cout << "    payload battery cell2 voltage: " << bat_driver->get_payload_cell2_voltage() << std::endl;
+      std::cout << "    payload battery cell3 voltage: " << bat_driver->get_payload_cell3_voltage() << std::endl;
+      std::cout << "    payload battery cell4 voltage: " << bat_driver->get_payload_cell4_voltage() << std::endl;
+      std::cout << "    payload battery cell5 voltage: " << bat_driver->get_payload_cell5_voltage() << std::endl;
+      std::cout << "    payload battery cell6 voltage: " << bat_driver->get_payload_cell6_voltage() << std::endl;
+      std::cout << std::endl;
     }
-    std::cout << "model_car_drivers_test_bat::main: stopping bat_driver" << std::endl;
     bat_driver->close();
-    std::cout << "model_car_drivers_test_bat::main: bat_driver stopped" << std::endl;
   }
   catch (CException &e)
   {
diff --git a/src/examples/model_car_egomotion_test.cpp b/src/examples/model_car_egomotion_test.cpp
index 2b38c233852175c29f546e507bd6d322ccc20cc9..0a2ca943dff1fa4aeb2def6dcf3e98f0587e542b 100644
--- a/src/examples/model_car_egomotion_test.cpp
+++ b/src/examples/model_car_egomotion_test.cpp
@@ -1,6 +1,5 @@
 #include "model_car_egomotion.h"
-
-
+#include <iostream>
 
 int main(int argc, char *argv[])
 {
@@ -8,61 +7,47 @@ int main(int argc, char *argv[])
   std::list<std::string> events;
   std::string name = "model_car_driver_egomotion";
   CModelCarEgomotion *egomotion_driver;
+  double ax,ay,az,gx,gy,gz,mx,my,mz;
+  unsigned int timestamp;
+  int tach;
+  bool dir;
+
   try
   {
-    std::cout << "model_car_drivers_test_egomotion::main: Creating object..." << std::endl;
     egomotion_driver = new CModelCarEgomotion(name);
-    std::cout << "model_car_drivers_test_egomotion::main: Object created" << std::endl;
     egomotion_driver->open();
     events.push_back(egomotion_driver->get_new_data_event_id());
 
-    std::cout << "model_car_drivers_test_egomotion::main: reading EGOMOTION values" << std::endl;
-    //for(unsigned int i=0; i<1000; i++)
     while(true)
     {
       try
       {
         event_server->wait_all(events,1000);
-        int  lwheel_tach=0;
-        bool lwheel_dir=false;
-        if(egomotion_driver->get_left_wheel(lwheel_tach, lwheel_dir))
-        {
-          std::cout << "  Left wheel tachometer:  " << lwheel_tach << std::endl;
-          std::cout << "  Left wheel direction:   " << lwheel_dir  << std::endl;
-        }
-
-        int  rwheel_tach=0;
-        bool rwheel_dir=false;
-        if(egomotion_driver->get_right_wheel(rwheel_tach,rwheel_dir))
-        {
-          std::cout << "  Right wheel tachometer: " << rwheel_tach << std::endl;
-          std::cout << "  Right wheel direction:  " << rwheel_dir << std::endl;
-        }
-
-        float ax=0.0 ,ay=.0 ,az=0.0 ,gx=0.0 ,gy=0.0 ,gz=0.0 ,mx=0.0 ,my=0.0 ,mz=0.0;
-        if(egomotion_driver->get_imu_accel(ax,ay,az))
-        {
-          std::cout << "  Imu ax: " << ax << std::endl;
-          std::cout << "  Imu ay: " << ay << std::endl;
-          std::cout << "  Imu az: " << az << std::endl;
-        }
-
-        if(egomotion_driver->get_imu_gyro(gx,gy,gz))
-        {
-          std::cout << "  Imu gx: " << gx << std::endl;
-          std::cout << "  Imu gy: " << gy << std::endl;
-          std::cout << "  Imu gz: " << gz << std::endl;
-        }
-
-        if(egomotion_driver->get_imu_magn(mx,my,mz))
-        {
-          std::cout << "  Imu mx: " << mx << std::endl;
-          std::cout << "  Imu my: " << my << std::endl;
-          std::cout << "  Imu mz: " << mz << std::endl;
-        }
-
-        std::cout <<"  ---" <<std::endl;
-        usleep(1e4);
+        egomotion_driver->get_left_wheel(tach,dir,timestamp);
+        std::cout << "  Left Wheel: " << std::endl;
+        std::cout << "    tachometer: " << tach << std::endl;
+        std::cout << "    direction: " << dir << std::endl;
+        std::cout << "    timestamp: " << timestamp << std::endl;
+        egomotion_driver->get_right_wheel(tach,dir,timestamp);
+        std::cout << "  Right Wheel: " << std::endl;
+        std::cout << "    tachometer: " << tach << std::endl;
+        std::cout << "    direction: " << dir << std::endl;
+        std::cout << "    timestamp: " << timestamp << std::endl;
+        egomotion_driver->get_imu_accelerometer(ax,ay,az,timestamp);
+        std::cout << "  IMU: " << std::endl;
+        std::cout << "    ax: " << ax << std::endl;
+        std::cout << "    ay: " << ay << std::endl;
+        std::cout << "    az: " << az << std::endl;
+        egomotion_driver->get_imu_gyroscope(gx,gy,gz,timestamp);
+        std::cout << "    gx: " << gx << std::endl;
+        std::cout << "    gy: " << gy << std::endl;
+        std::cout << "    gz: " << gz << std::endl;
+        egomotion_driver->get_imu_magnetometer(mx,my,mz,timestamp);
+        std::cout << "    mx: " << mx << std::endl;
+        std::cout << "    my: " << my << std::endl;
+        std::cout << "    mz: " << mz << std::endl;
+        std::cout << "    timestamp: " << timestamp << std::endl;
+        std::cout << std::endl;
       }
       catch(CEventTimeoutException &e)
       {
diff --git a/src/examples/model_car_ultrasounds_test.cpp b/src/examples/model_car_ultrasounds_test.cpp
index 3f8fb29fef23ffc8916d6fdd18b1b0199aae0978..9816451a7ed08c2cb322c657064b5a592daee478 100644
--- a/src/examples/model_car_ultrasounds_test.cpp
+++ b/src/examples/model_car_ultrasounds_test.cpp
@@ -1,6 +1,5 @@
 #include "model_car_ultrasounds.h"
-
-
+#include <iostream>
 
 int main(int argc, char *argv[])
 {
@@ -10,34 +9,22 @@ int main(int argc, char *argv[])
   CModelCarUltrasounds *uss_driver;
   try
   {
-    std::cout << "model_car_drivers_test_uss::main: Creating object..." << std::endl;
     uss_driver = new CModelCarUltrasounds(name);
-    std::cout << "model_car_drivers_test_uss::main: Object created" << std::endl;
     uss_driver->open();
     events.push_back(uss_driver->get_new_data_event_id());
 
-    std::cout << "model_car_drivers_test_uss::main: reading USS values" << std::endl;
-    //for(unsigned int i=0; i<1000; i++)
     while(true)
     {
       event_server->wait_all(events,1000);
-      float us_value;
-      if(uss_driver->get_uss(ID_ARD_SENS_US_SIDE_RIGHT, us_value))
-        std::cout << "  ID_ARD_SENS_US_SIDE_RIGHT:        " << us_value << std::endl;
-      if(uss_driver->get_uss(ID_ARD_SENS_US_REAR_CENTER_RIGHT, us_value))
-        std::cout << "  ID_ARD_SENS_US_REAR_CENTER_RIGHT: " << us_value << std::endl;
-      if(uss_driver->get_uss(ID_ARD_SENS_US_REAR_CENTER, us_value))
-        std::cout << "  ID_ARD_SENS_US_REAR_CENTER:       " << us_value << std::endl;
-      if(uss_driver->get_uss(ID_ARD_SENS_US_REAR_CENTER_LEFT, us_value))
-        std::cout << "  ID_ARD_SENS_US_REAR_CENTER_LEFT:  " << us_value << std::endl;
-      if(uss_driver->get_uss(ID_ARD_SENS_US_SIDE_LEFT, us_value))
-        std::cout << "  ID_ARD_SENS_US_SIDE_LEFT:         " << us_value << std::endl;
-      std::cout <<"  ---" <<std::endl;
+      std::cout << "  Side right ultrasound distance: " << uss_driver->get_side_right_distance() << std::endl;
+      std::cout << "  Side left ultrasound distance: " << uss_driver->get_side_left_distance() << std::endl;
+      std::cout << "  Rear right ultrasound distance: " << uss_driver->get_rear_right_distance() << std::endl;
+      std::cout << "  Rear center ultrasound distance: " << uss_driver->get_rear_center_distance() << std::endl;
+      std::cout << "  Rear left ultrasound distance: " << uss_driver->get_rear_left_distance() << std::endl;
+      std::cout << std::endl;
     }
 
-    std::cout << "model_car_drivers_test_uss::main: stopping uss_driver" << std::endl;
     uss_driver->close();
-    std::cout << "model_car_drivers_test_uss::main: uss_driver stopped" << std::endl;
   }
   catch (CException &e)
   {