diff --git a/motor.cpp b/motor.cpp
index 129c90613a774f86e08deda5eb46e35fea3b9898..98bcb50a285135c074754b9973506a5a927a14fb 100644
--- a/motor.cpp
+++ b/motor.cpp
@@ -3,7 +3,7 @@
 //CONSTRUCTORS
 Motor :: Motor (MotorHardware_t& stepper): stepper(stepper)
 {
-    set_physical(300,300, 1);
+    set_speed_mm_per_sec(1);
     set_accel_mm_per_sec_per_sec(0.5); //  <----- this is not yet configured by user
 }
 
@@ -111,6 +111,22 @@ void Motor :: move_to_step (int step)
     Serial.printf("#     move to: %d step    %g mm\n", step, step_to_mm(step));
 }
 
+void Motor :: move_step (int step)
+/***
+-Argument : Number of step.
+-Return   : /
+-Action   : Move the number of step required.
+***/
+{
+#if !CORE_MOCK
+    cli();
+    if (_mm_per_revolution > 0 && _steps_per_revolution > 0)
+        stepper.moveTo(_clockwise_equals_forward? step: -step);
+    sei();
+#endif
+    Serial.printf("#     move to: %d step    %g mm\n", step, step_to_mm(step));
+}
+
 void Motor :: move_to_mm (float mm)
 /***
 -Argument : distance in mm
@@ -124,6 +140,20 @@ void Motor :: move_to_mm (float mm)
     move_to_step(mm_to_step(mm));
 }
 
+void Motor :: move_mm (float mm)
+/***
+-Argument : distance in mm
+-Return   : /
+-Action   : Move to the distance required.
+***/
+{
+    Serial.printf("# moving to %g mm / %g steps\n",
+        mm,
+        mm_to_step(mm));
+    move_step(mm_to_step(mm));
+}
+
+
 void Motor :: stop ()
 /***
 -Argument : /
diff --git a/motor.h b/motor.h
index c1dda505161fc7b244295316379e91bc5cc1d768..b6a142b298208cd17eeb44b74464f205e2412dcf 100644
--- a/motor.h
+++ b/motor.h
@@ -64,7 +64,9 @@ public:
 
     //MOVEMENTS
     void move_to_step (int step);
+    void move_step (int step);
     void move_to_mm (float mm);
+    void move_mm (float mm);
     void stop ();
 	  void stay_here ();
     bool motor_is_running ();
diff --git a/web.cpp b/web.cpp
index a06496df7d5bf3791a05310dc6385ca839f40dc6..d95aaeec246b1fc15376b44690f8febcd603df40 100644
--- a/web.cpp
+++ b/web.cpp
@@ -31,6 +31,12 @@ void web_setup ()
     //***Initialisation***//
     calibration = ESPUI.button("Callibration", calibration_callback, ControlColor::None, "Lancer");
 
+    fast_backward = ESPUI.button("Initialisation", fast_backward_callback, ControlColor::None, "Reculer rapidement");
+    fast_forward = ESPUI.addControl(ControlType::Button, "Initialisation", "Avancer rapidement", ControlColor::None, fast_backward, fast_forward_callback);
+    slow_backward = ESPUI.addControl(ControlType::Button, "Initialisation", "Reculer doucement", ControlColor::None, fast_backward, slow_backward_callback);
+    slow_forward = ESPUI.addControl(ControlType::Button, "Initialisation", "Avancer doucement", ControlColor::None, fast_backward, slow_forward_callback);
+
+    ESPUI.addControl(ControlType::Separator, "", "", ControlColor::None);
 
     //Remaning_volume
     label_remaining_volume_mL = ESPUI.label("Volume restant en mL", ControlColor::None, "Volume restant en mL");
@@ -112,7 +118,6 @@ void number_callback(Control* sender, int type)
 }
 
 
-
 //SPECIFIC CALLBACKS//
 
 //***ABOVE***//
@@ -184,6 +189,115 @@ void calibration_callback (Control *sender, int type)
     }
 }
 
+void fast_backward_callback (Control *sender, int type) 
+/***
+-Argument : Pointer to the controller calling the function, integer according to the controller type.
+-Return   : /
+-Action   : 
+***/
+{
+    switch (type)
+    {
+    case B_DOWN:
+
+        Serial.printf("Backward 10 steps"); 
+        syringe_filled.reset_position();
+        syringe_filled.move_mm(-50);
+        syringe_filled.set_speed_mm_per_sec(50);
+        syringe_filled.set_accel_mm_per_sec_per_sec(10);
+
+        break;
+
+    case B_UP:
+        
+        syringe_filled.stop();
+
+        break;
+    }
+}
+
+void fast_forward_callback (Control *sender, int type) 
+/***
+-Argument : Pointer to the controller calling the function, integer according to the controller type.
+-Return   : /
+-Action   : 
+***/
+{
+
+    switch (type)
+    {
+    case B_DOWN:
+
+        Serial.printf("Forward 10 steps"); 
+        syringe_filled.reset_position();
+        syringe_filled.move_mm(50);
+        syringe_filled.set_speed_mm_per_sec(50);
+        syringe_filled.set_accel_mm_per_sec_per_sec(10);
+
+        break;
+
+    case B_UP:
+        
+        syringe_filled.stop();
+
+        break;
+    }
+}
+
+void slow_backward_callback (Control *sender, int type) 
+/***
+-Argument : Pointer to the controller calling the function, integer according to the controller type.
+-Return   : /
+-Action   : 
+***/
+{
+    switch (type)
+    {
+    case B_DOWN:
+
+        Serial.printf("Backward 1 step"); 
+        syringe_filled.reset_position();
+        syringe_filled.move_mm(-50);
+        syringe_filled.set_speed_mm_per_sec(0.5);
+        syringe_filled.set_accel_mm_per_sec_per_sec(0.2);
+
+        break;
+
+    case B_UP:
+        
+        syringe_filled.stop();
+
+        break;
+    }
+}
+
+void slow_forward_callback (Control *sender, int type) 
+/***
+-Argument : Pointer to the controller calling the function, integer according to the controller type.
+-Return   : /
+-Action   : 
+***/
+{
+    switch (type)
+    {
+    case B_DOWN:
+
+        Serial.printf("Forward 1 step"); 
+        syringe_filled.reset_position();
+        syringe_filled.move_mm(50);
+        syringe_filled.set_speed_mm_per_sec(0.5);
+        syringe_filled.set_accel_mm_per_sec_per_sec(0.2);
+
+        break;
+
+    case B_UP:
+        
+        syringe_filled.stop();
+
+        break;
+    }
+}
+
 void volume_exchange_mL_callback (Control* sender, int value, void* param)
 /***
 -Argument : Pointer to the controller calling the function, integer according to the controller type.
@@ -565,6 +679,11 @@ void set_init_style()
     style (syringe_filled_placement, 2);
 
     style (calibration, 2);
+    style (fast_forward, 3);
+    style (fast_backward, 3);
+    style (slow_forward, 3);
+    style (slow_backward, 3);
+
 
     style (volume_exchange_mL_label, 1);
     style (volume_exchange_mL, 1); 
diff --git a/web.h b/web.h
index de1b94e8341ab70b594b079e032e37c3644b25f9..50febad9ccaf1ef1b36617afd9b7fec042116d9e 100644
--- a/web.h
+++ b/web.h
@@ -25,7 +25,7 @@ uint16_t activation_syringe_pump;
 int status_syringe_filled;
 uint16_t syringe_filled_placement;
 
-uint16_t calibration;
+uint16_t calibration, fast_backward, fast_forward, slow_backward, slow_forward;
 
 uint16_t volume_exchange_mL_label, volume_exchange_mL, exchange_throughtput_uL_per_sec_label, exchange_throughtput_uL_per_sec, label_push_pull_choice, switch_push_pull_choice;
 
@@ -85,6 +85,10 @@ void number_callback(Control* sender, int type);
 void activation_syringe_pump_callback (Control* sender, int value, void* param);
 void syringe_filled_placement_callback (Control* sender, int value, void* param);
 void calibration_callback(Control* sender, int type);
+void fast_backward_callback (Control *sender, int type);
+void fast_forward_callback (Control *sender, int type);
+void slow_backward_callback (Control *sender, int type);
+void slow_forward_callback (Control *sender, int type);
 void volume_exchange_mL_callback (Control* sender, int value, void* param);
 void exchange_throughtput_uL_per_sec_callback (Control* sender, int value, void* param);
 void switch_push_pull_choice_callback (Control* sender, int value, void* param);