diff --git a/src/examples/test_dynamixel_bulk_read.cpp b/src/examples/test_dynamixel_bulk_read.cpp
index 212dff4d4b20587e67eca0e0d93f6b26bec0da8e..9ad7c34e852f6afbde89861b076771d3fac43b73 100755
--- a/src/examples/test_dynamixel_bulk_read.cpp
+++ b/src/examples/test_dynamixel_bulk_read.cpp
@@ -7,42 +7,45 @@ int main(int argc, char *argv[])
 {
   CDynamixelServer *dyn_server=CDynamixelServer::instance();
   CEventServer *event_server=CEventServer::instance();
-  int i,j,num_servos;
-  std::vector<int> devices;
+  std::vector< std::vector<unsigned char> > data;
+  std::vector<unsigned short int> start_addr;
+  std::vector<unsigned short int> length;
+  std::vector<unsigned char> servo_ids;
   std::list<std::string> events;
-  unsigned char start_addrs=0x00;
-  unsigned char data[49]; 
-  CDynamixel *device;
+  int i,num_servos,event_id;
+  std::vector<int> devices;
   
   try{
     if(dyn_server->get_num_buses()>0)
     {
-    
       events.push_back(dyn_server->get_scan_done_event_id());
+      events.push_back(dyn_server->get_scan_error_event_id());
       dyn_server->config_bus(0,1000000);
-      dyn_server->start_scan();
-      event_server->wait_first(events);
-      devices=dyn_server->get_device_ids();
-      num_servos=devices.size();
-      for(i=0;i<num_servos;i++)
+      dyn_server->start_scan(dyn_version2);
+      event_id=event_server->wait_first(events);
+      if(event_id==0)
       {
-        device=dyn_server->get_device(devices[i]);
-        device->read_registers(start_addrs,data,49);
-        std::cout << "Servo " << std::dec <<  devices[i] << " registers:" << std::endl;
-        for(j=0;j<49;j++)
-          std::cout << "Register 0x" << std::hex << j << ": 0x" << (int)data[j] << std::endl;
-        data[0]=0x00;
-        data[1]=0x00;
-        data[2]=0xFF;
-        data[3]=0x03;
-        device->write_registers(0x06,data,4);
-        device->read_registers(start_addrs,data,49);
-        std::cout << "Servo " << std::dec <<  devices[i] << " registers:" << std::endl;
-        for(j=0;j<49;j++)
-          std::cout << "Register 0x" << std::hex << j << ": 0x" << (int)data[j] << std::endl;
-        dyn_server->free_device(devices[i]);
-      }  
-   }  
+        devices=dyn_server->get_device_ids(dyn_version2);
+        num_servos=devices.size();
+        start_addr.resize(num_servos);
+        length.resize(num_servos); 
+        servo_ids.resize(num_servos);
+        for(i=0;i<num_servos;i++)
+        {
+          servo_ids[i]=devices[i];
+          start_addr[i]=0x1B;
+          length[i]=3;
+        }
+        dyn_server->read_bulk(servo_ids,start_addr,length,data,dyn_version2);
+        for(i=0;i<num_servos;i++)
+        {
+          std::cout << "PID parameters for the servo " << (int)servo_ids[i] << std::endl;
+          std::cout << "\tP: " << (int)data[i][2] << std::endl;
+          std::cout << "\tI: " << (int)data[i][1] << std::endl;
+          std::cout << "\tD: " << (int)data[i][0] << std::endl;
+        }
+      }
+    }  
   }catch(CException &e){
     std::cout << e.what() << std::endl;
   }	
diff --git a/src/examples/test_dynamixel_server.cpp b/src/examples/test_dynamixel_server.cpp
index e9be11137aeab6232b8296a4684bea444c46aaec..e02eaa6f2eb35f793d0103701e93c567e724ac66 100644
--- a/src/examples/test_dynamixel_server.cpp
+++ b/src/examples/test_dynamixel_server.cpp
@@ -6,16 +6,12 @@ int main(int argc, char *argv[])
 {
   CDynamixelServer *dyn_server=CDynamixelServer::instance();
   CEventServer *event_server=CEventServer::instance();
-  int num_buses=0,num_dev=0,baudrate=0,i=0,event_id,j;
+  int num_buses=0,baudrate=0,event_id;
   std::list<std::string> events;
-  std::vector<float> position;
   std::vector<int> devices;
   unsigned short int model;
-  unsigned char margin;
-  CDynamixel *dyn_motor;
-  std::vector<unsigned char> servo_ids;
-  std::vector< std::vector<unsigned char> > data;
-  std::vector<unsigned short int> address,length;
+  CDynamixel *dyn_device;
+  unsigned int i,num_dev;
 
   num_buses=dyn_server->get_num_buses();
   std::cout << "Num. buses: " << num_buses << std::endl;
@@ -24,7 +20,7 @@ int main(int argc, char *argv[])
     try{
     events.push_back(dyn_server->get_scan_done_event_id());
     events.push_back(dyn_server->get_scan_error_event_id());
-/*    dyn_server->config_bus(0,1000000);
+    dyn_server->config_bus(0,1000000);
     dyn_server->start_scan();
     event_id=event_server->wait_first(events);
     if(event_id==0)
@@ -36,49 +32,22 @@ int main(int argc, char *argv[])
       devices=dyn_server->get_device_ids();
       for(i=0;i<num_dev;i++)
       {
-        dyn_motor=dyn_server->get_device(devices[i]);
-        dyn_motor->write_byte_register(0x1A,0x10);
-        dyn_motor->read_word_register(0x00,&model);
-        dyn_motor->read_byte_register(0x1A,&margin);
-        dyn_motor->write_word_register(0x1E,0x03FF);
-        sleep(2);
-        dyn_motor->write_word_register(0x1E,0x000);
-        sleep(2);
-        std::cout << "Device " << std::dec << i << ": id -> " << devices[i] << " model: " << std::hex << model << " margin: " << (int)margin << std::endl;
+        dyn_device=dyn_server->get_device(devices[i]);
+        dyn_device->read_word_register(0x00,&model);
         dyn_server->free_device(devices[i]);
+        delete dyn_device;
       }
-      // sync write operation
-      std::cout << "sync write" << std::endl;
-      data.resize(num_dev);
-      servo_ids.resize(num_dev);
-      for(i=0;i<num_dev;i++)
-      {
-        servo_ids[i]=devices[i];
-        data[i].clear();
-        data[i].push_back(0xFF);
-        data[i].push_back(0x03);
-      }
-      dyn_server->write_sync(servo_ids,0x1E,data,dyn_version1);
-      sleep(2);
-      for(i=0;i<num_dev;i++)
-      {
-        servo_ids[i]=devices[i];
-        data[i].clear();
-        data[i].push_back(0x00);
-        data[i].push_back(0x00);
-      }
-      dyn_server->write_sync(servo_ids,0x1E,data,dyn_version1);
     }
     else
-      std::cout << "Error while scanning the bus: " << dyn_server->get_scan_error() << std::endl;*/
-/*    try{
+      std::cout << "Error while scanning the bus: " << dyn_server->get_scan_error() << std::endl;
+    try{
       dyn_server->config_bus(0,1000000);
       dyn_server->start_scan();
       event_server->wait_first(events,2000);
     }catch(CException &e){
       dyn_server->stop_scan();
       std::cout << "Scanning canceled !!!" << std::endl;
-    }*/
+    }
     /* scan for version 2 devices */
     dyn_server->config_bus(0,1000000);
     dyn_server->start_scan(dyn_version2);
@@ -92,50 +61,10 @@ int main(int argc, char *argv[])
       devices=dyn_server->get_device_ids(dyn_version2);
       for(i=0;i<num_dev;i++)
       {
-        dyn_motor=dyn_server->get_device(devices[i],dyn_version2);
-        dyn_motor->write_byte_register(0x1A,0x10);
-        dyn_motor->read_word_register(0x00,&model);
-        dyn_motor->read_byte_register(0x1A,&margin);
-        //dyn_motor->write_word_register(0x1E,0x03FF);
-        //sleep(2);
-        //dyn_motor->write_word_register(0x1E,0x000);
-        //sleep(2);
-        std::cout << "Device " << std::dec << i << ": id -> " << devices[i] << " model: " << std::hex << model << " margin: " << (int)margin << std::endl;
+        dyn_device=dyn_server->get_device(devices[i],dyn_version2);
+        dyn_device->read_word_register(0x00,&model);
         dyn_server->free_device(devices[i],dyn_version2);
-      }
-      /* sync read operation */
-      servo_ids.resize(num_dev);
-      for(i=0;i<num_dev;i++)
-        servo_ids[i]=devices[i];
-      std::cout << "sync read" << std::endl;
-      dyn_server->read_sync(servo_ids,0x1B,3,data,dyn_version2);
-      for(i=0;i<data.size();i++)
-      {
-        std::cout << "Servo " << (int)servo_ids[i] << " PID" << std::endl;
-        for(j=0;j<data[i].size();j++)
-          std::cout << std::hex << "\t" << (int)data[i][j] << std::endl;
-      }
-      /* bulk write */
-      address.resize(num_dev);
-      length.resize(num_dev);
-      for(i=0;i<num_dev;i++)
-      {
-        address[i]=0x1B;
-        data[i][0]=0xFF;
-        data[i][1]=0xFF;
-        data[i][2]=0xFD;
-        length[i]=3;
-      }
-      std::cout << "bulk write" << std::endl;
-      dyn_server->write_bulk(servo_ids,address,data,dyn_version2);
-      std::cout << "bulk read" << std::endl;
-      data.clear();
-      dyn_server->read_bulk(servo_ids,address,length,data,dyn_version2);
-      for(i=0;i<data.size();i++)
-      {
-        std::cout << "Servo " << (int)servo_ids[i] << " PID" << std::endl;
-        for(j=0;j<data[i].size();j++)
-          std::cout << std::hex << "\t" << (int)data[i][j] << std::endl;
+        delete dyn_device;
       }
     }
     else
diff --git a/src/examples/test_dynamixel_sync.cpp b/src/examples/test_dynamixel_sync.cpp
index 2ed4335f6a456ba9439ae6fcf8b18910229d77b1..778d44eddab27056b28ae8f05399292be5b78eb8 100644
--- a/src/examples/test_dynamixel_sync.cpp
+++ b/src/examples/test_dynamixel_sync.cpp
@@ -6,80 +6,59 @@ int main(int argc, char *argv[])
 {
   CDynamixelServer *dyn_server=CDynamixelServer::instance();
   CEventServer *event_server=CEventServer::instance();
-  int i,num_servos,num_instruc,dir,pos;
-  unsigned char const goal_pos=0x1E;
-  unsigned char star_addrs;
-  std::list<std::string> events;
   std::vector< std::vector<unsigned char> > data;
-  std::vector<unsigned char> devices(3);
-  
+  std::vector<unsigned char> servo_ids;
+  unsigned short int star_addrs=0x1E;
+  int i,num_servos,pos=0,event_id;
+  std::list<std::string> events;
+  std::vector<int> devices;
+
   try{
     if(dyn_server->get_num_buses()>0)
     {
-    
-      //events.push_back(dyn_server->get_scan_done_event_id());
+      events.push_back(dyn_server->get_scan_done_event_id());
+      events.push_back(dyn_server->get_scan_error_event_id());
       dyn_server->config_bus(0,1000000);
-      //dyn_server->start_scan();
-      //event_server->wait_first(events);
-      //devices=dyn_server->get_device_ids();
-      data.resize(devices.size());
-      num_servos=data.size();
-      star_addrs=goal_pos;
-      pos=512;
-      dir=1;
-      devices[0]=0x0F;
-      devices[1]=0x01;
-      devices[2]=0x0C;
-      for(i=0;i<num_servos;i++)
+      dyn_server->start_scan(dyn_version1);
+      event_id=event_server->wait_first(events);
+      if(event_id==0)
       {
-    	  /* Number of instructions in bytes:
-    		  - goal_pos: 2 bytes
-    		  - goal_speed: 2 bytes */
-        num_instruc=4;
-  	     data[i].resize(num_instruc);	
-  	   }
-  	   for(i=0;i<num_servos;i++)
-  	       {
-  	       	
-  		      data[i][0]=pos%256;
-            data[i][1]=(int)(pos/256);
-            data[i][2]=0x00;
-            data[i][3]=0x02;
-          }
-  	   dyn_server->write_sync(devices,star_addrs,data);
-      usleep(2000000);
-      std::cout << "move" << std::endl;
-  	   for(;;) 	   	
-  	   {	
-  	     if(pos>=1000)
-  	     	 dir=-1;
-  	     else if(pos<=24)
-  	     	 dir=1;	 
-  	     
-  	     
-  	     for(i=0;i<num_servos;i++)
-  	       {
-  	       	
-  		      data[i][0]=pos%256;
-            data[i][1]=(int)(pos/256);
-            data[i][2]=0xFF;
-            data[i][3]=0x03;
-          }
-          std::cout << pos << std::endl;
-        pos=pos+dir*2;
-        
-        dyn_server->write_sync(devices,star_addrs,data);
-        usleep(10000);std::cout << pos << std::endl;
+        num_servos=dyn_server->get_num_devices(dyn_version1);
+        std::cout << "Num servos: " << num_servos << std::endl;
+        devices=dyn_server->get_device_ids(dyn_version1);
+        data.resize(num_servos);
+        servo_ids.resize(num_servos);
+        for(i=0;i<num_servos;i++)
+        {
+          servo_ids[i]=devices[i];
+	  data[i].resize(4);	
+          data[i][0]=pos%256;
+          data[i][1]=pos/256;
+          data[i][2]=0x00;
+          data[i][3]=0x02;
+        }
+        dyn_server->write_sync(servo_ids,star_addrs,data,dyn_version1);
+        sleep(2);
+        pos=1023;
+        for(i=0;i<num_servos;i++)
+        {
+          data[i][0]=pos%256;
+          data[i][1]=pos/256;
+          data[i][2]=0x00;
+          data[i][3]=0x01;
+        }
+        dyn_server->write_sync(servo_ids,star_addrs,data,dyn_version1);
+        sleep(5);
       }
-   }  
+    }  
   }catch(CException &e){
-  std::cout << "Movement aborted" << std::endl;
+    std::cout << e.what() << std::endl;
   }	
 }
- 
- 
- 
- 
- 
- 
- 
+
+
+
+
+
+
+