diff --git a/include/model_car_driver_base.h b/include/model_car_driver_base.h
index d207d9217fbe24641f80f9939a1d7c015ea2b07c..b2cd771a01f89ec71cd25741585198829dec8e78 100644
--- a/include/model_car_driver_base.h
+++ b/include/model_car_driver_base.h
@@ -44,9 +44,6 @@ class CModelCarDriverBase
     
     uint id;
     uint sw_version;
-    tCRCUnion       crc_union;
-    TDataUnion      data_union;
-    THeader         header;
 
     /* event attributes */
     CEventServer *event_server;
@@ -62,7 +59,7 @@ class CModelCarDriverBase
     CMutex data_mutex;
     
     static void *data_thread(void *param);
-    bool process_byte(unsigned char byte);
+    bool process_byte(THeader &header, TDataUnion &data_union, tCRCUnion &crc_union, unsigned char byte);
     bool get_id(uint8_t & id);
     void send_request(uint8_t id, uint8_t data_length, uint8_t *data);
     sm_state process_data(THeader & header, TDataUnion & data_union, tCRCUnion & crc_union);
diff --git a/src/examples/model_car_egomotion_test.cpp b/src/examples/model_car_egomotion_test.cpp
index d75268eaff3bc24eb46f328c3cb0be8a5f6b6efe..dafd7a87f988d3bf7c329a20707f6a809c7805c5 100644
--- a/src/examples/model_car_egomotion_test.cpp
+++ b/src/examples/model_car_egomotion_test.cpp
@@ -24,38 +24,38 @@ int main(int argc, char *argv[])
       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;
+        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;
+        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;
+        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;
+        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 << "  Imu mx: " << mx << std::endl;
+        std::cout << "  Imu my: " << my << std::endl;
+        std::cout << "  Imu mz: " << mz << std::endl;
       }
 
       std::cout <<"  ---" <<std::endl;
diff --git a/src/examples/model_car_ultrasounds_test.cpp b/src/examples/model_car_ultrasounds_test.cpp
index 3458bfe6ebdc655f271a4e8336ecf190594059cd..cfb9cf71806edd63f5f71e8497ad729caa6b2708 100644
--- a/src/examples/model_car_ultrasounds_test.cpp
+++ b/src/examples/model_car_ultrasounds_test.cpp
@@ -22,15 +22,15 @@ int main(int argc, char *argv[])
       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 value:        " << us_value << std::endl;
+        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 value: " << us_value << std::endl;
+        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 value:       " << us_value << std::endl;
+        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 value:  " << us_value << std::endl;
+        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 value:         " << us_value << std::endl;
+        std::cout << "  ID_ARD_SENS_US_SIDE_LEFT:         " << us_value << std::endl;
       std::cout <<"  ---" <<std::endl;
     }
 
diff --git a/src/model_car_driver_base.cpp b/src/model_car_driver_base.cpp
index b25c970c1df38176908c0da5928a8cb7a2bffe2e..80199946b06ad5f0337703b25215f752da0fa2c5 100644
--- a/src/model_car_driver_base.cpp
+++ b/src/model_car_driver_base.cpp
@@ -168,6 +168,11 @@ void *CModelCarDriverBase::data_thread(void *param)
   
   unsigned char * frame_data=NULL;
   unsigned int num;
+
+  THeader    header;
+  TDataUnion data_union;
+  tCRCUnion  crc_union;
+
   std::list<std::string> events;
   events.push_back(driver->serial_port->get_rx_event_id());
 
@@ -192,9 +197,9 @@ void *CModelCarDriverBase::data_thread(void *param)
 
       for(unsigned int i=0; i<num; i++)
       {
-        bool frame_ready = driver->process_byte(frame_data[i]);
+        bool frame_ready = driver->process_byte(header, data_union, crc_union, frame_data[i]);
         if(frame_ready)
-          driver->process_data(driver->header, driver->data_union, driver->crc_union);
+          driver->process_data(header, data_union, crc_union);
         else
         {
           if(i==num-1)
@@ -221,7 +226,7 @@ void *CModelCarDriverBase::data_thread(void *param)
 
 
 
-bool CModelCarDriverBase::process_byte(unsigned char byte)
+bool CModelCarDriverBase::process_byte(THeader &header, TDataUnion &data_union, tCRCUnion &crc_union, unsigned char byte)
 {
   bool frame_ready=false;