diff --git a/lib/camera.py b/lib/camera.py
index d9a6e1d94c0650ae5fd680291b756834c61f1882..22bb9216d35292ad0d67425638420c893d836b6f 100644
--- a/lib/camera.py
+++ b/lib/camera.py
@@ -8,7 +8,7 @@ TXT_M_USB_1_camera.set_width(320)
 TXT_M_USB_1_camera.set_fps(15)
 TXT_M_USB_1_camera.start()
 
-ball_detector = txt_factory.camera_factory.create_ball_detector(0, 0, 320, 240, 5, 80, -100, 100, [225,146,124], 20)
+ball_detector = txt_factory.camera_factory.create_ball_detector(0, 0, 320, 240, 5, 80, -100, 100, [255,134,62], 20)
 TXT_M_USB_1_camera.add_detector(ball_detector)
 
 blocked_area_right = txt_factory.camera_factory.create_blocked_area(240, 190, 80, 50)
@@ -17,9 +17,9 @@ TXT_M_USB_1_camera.add_blocked_area(blocked_area_right)
 blocked_area_left = txt_factory.camera_factory.create_blocked_area(0, 190, 80, 50)
 TXT_M_USB_1_camera.add_blocked_area(blocked_area_left)
 
-ball_detector_goal_right = txt_factory.camera_factory.create_ball_detector(0, 70, 320, 120, 10, 120, -100, 100, [214,169,52], 25)
+ball_detector_goal_right = txt_factory.camera_factory.create_ball_detector(0, 70, 320, 120, 10, 120, -100, 100, [214,169,52], 20)
 TXT_M_USB_1_camera.add_detector(ball_detector_goal_right)
 
-ball_detector_goal_left = txt_factory.camera_factory.create_ball_detector(0, 70, 320, 120, 10, 120, -100, 100, [90,156,81], 25)
+ball_detector_goal_left = txt_factory.camera_factory.create_ball_detector(0, 70, 320, 120, 10, 120, -100, 100, [90,156,81], 20)
 TXT_M_USB_1_camera.add_detector(ball_detector_goal_left)
 
diff --git a/lib/camera.xml b/lib/camera.xml
index 5614dd9d81f01635d668663e6e786db83d10b84d..484a3a87a5fd5214662d43111f5acd0b4dbd93d8 100644
--- a/lib/camera.xml
+++ b/lib/camera.xml
@@ -1 +1 @@
-<xml type="camera" verion="1" version="2" rotate="0" height="240" width="320" fps="15"><item id="2" class="BallDetector"><name>ball_detector</name><color>#e1927c</color><tolerance>20</tolerance><min_ball_diameter>5</min_ball_diameter><max_ball_diameter>80</max_ball_diameter><start_range_value>-100</start_range_value><end_range_value>100</end_range_value><geometry><x>0</x><y>0</y><width>320</width><height>240</height></geometry></item><item id="4" class="BlockedArea"><name>blocked_area_right</name><geometry><x>240</x><y>190</y><width>80</width><height>50</height></geometry></item><item id="5" class="BlockedArea"><name>blocked_area_left</name><geometry><x>0</x><y>190</y><width>80</width><height>50</height></geometry></item><item id="12" class="BallDetector"><name>ball_detector_goal_right</name><color>#d6a934</color><tolerance>25</tolerance><min_ball_diameter>10</min_ball_diameter><max_ball_diameter>120</max_ball_diameter><start_range_value>-100</start_range_value><end_range_value>100</end_range_value><geometry><x>0</x><y>70</y><width>320</width><height>120</height></geometry></item><item id="11" class="BallDetector"><name>ball_detector_goal_left</name><color>#5a9c51</color><tolerance>25</tolerance><min_ball_diameter>10</min_ball_diameter><max_ball_diameter>120</max_ball_diameter><start_range_value>-100</start_range_value><end_range_value>100</end_range_value><geometry><x>0</x><y>70</y><width>320</width><height>120</height></geometry></item></xml>
\ No newline at end of file
+<xml type="camera" verion="1" version="2" rotate="0" height="240" width="320" fps="15"><item id="2" class="BallDetector"><name>ball_detector</name><color>#ff863e</color><tolerance>20</tolerance><min_ball_diameter>5</min_ball_diameter><max_ball_diameter>80</max_ball_diameter><start_range_value>-100</start_range_value><end_range_value>100</end_range_value><geometry><x>0</x><y>0</y><width>320</width><height>240</height></geometry></item><item id="4" class="BlockedArea"><name>blocked_area_right</name><geometry><x>240</x><y>190</y><width>80</width><height>50</height></geometry></item><item id="5" class="BlockedArea"><name>blocked_area_left</name><geometry><x>0</x><y>190</y><width>80</width><height>50</height></geometry></item><item id="12" class="BallDetector"><name>ball_detector_goal_right</name><color>#d6a934</color><tolerance>20</tolerance><min_ball_diameter>10</min_ball_diameter><max_ball_diameter>120</max_ball_diameter><start_range_value>-100</start_range_value><end_range_value>100</end_range_value><geometry><x>0</x><y>70</y><width>320</width><height>120</height></geometry></item><item id="11" class="BallDetector"><name>ball_detector_goal_left</name><color>#5a9c51</color><tolerance>20</tolerance><min_ball_diameter>10</min_ball_diameter><max_ball_diameter>120</max_ball_diameter><start_range_value>-100</start_range_value><end_range_value>100</end_range_value><geometry><x>0</x><y>70</y><width>320</width><height>120</height></geometry></item></xml>
\ No newline at end of file
diff --git a/omniwheels_x4_soccer_goal.blockly b/omniwheels_x4_soccer_goal.blockly
index 12161d82ba6693bb4cff1353942800e79165e4fe..99627ca3926ecd569fe0f024b1036b1478420b64 100644
--- a/omniwheels_x4_soccer_goal.blockly
+++ b/omniwheels_x4_soccer_goal.blockly
@@ -15,7 +15,6 @@
     <variable id="rOE96qIEVvA5gBu*K^?x">factor_ball_rot</variable>
     <variable id="q#H`+Gwt~43Dh@fu;G-D">posy_ball</variable>
     <variable id="2Lkg^#Z.uZy(%Nr[26)6">search_dir_left</variable>
-    <variable id=")rK_fR,m=]b(j[{.CtBj">v_slow</variable>
     <variable id="Ym/+Qo0YZe25;%N1d!*f">x_min</variable>
     <variable id="O=Lc:FQ[]f3iuM/V@.mv">v_var_ball_xpos</variable>
     <variable id="2G]XEQ3Lhl$dG]=:]8Ge">x_max</variable>
@@ -23,6 +22,7 @@
     <variable id="}*jl@)UA_Hjh5rc,Gt)c">y_ball_far</variable>
     <variable id="09n]XF2CKURQs)nHOfam">y_ball_near</variable>
     <variable id="xjf5O*w9;IZf$n55ytVF">y_ball_touch</variable>
+    <variable id=")rK_fR,m=]b(j[{.CtBj">v_slow</variable>
     <variable id="1idj3sw*{G$j`2:II{^5">v_fast</variable>
     <variable id="v0BvP7[91TGaMpQG$r0f">goal_width</variable>
     <variable id="{]]L-TSC^#XtGnVinxf[">pos_goal_both</variable>
@@ -397,15 +397,21 @@
                                                                                                                                           </block>
                                                                                                                                         </value>
                                                                                                                                         <statement name="DO0">
-                                                                                                                                          <block type="procedures_callnoreturn" id="n=@SEs?8o@WHm;Ad7A2k" inline="true">
-                                                                                                                                            <mutation name="fwd_v">
+                                                                                                                                          <block type="procedures_callnoreturn" id="D$_8aQ2X|h{SIewjUD_R">
+                                                                                                                                            <mutation name="fwd">
                                                                                                                                               <arg name="v"/>
+                                                                                                                                              <arg name="ticks"/>
                                                                                                                                             </mutation>
                                                                                                                                             <value name="ARG0">
-                                                                                                                                              <block type="variables_get" id="fZlf#E.-0%/`U+X#~UvW">
+                                                                                                                                              <block type="variables_get" id="Y]2FiJdrWo42L$WHl,($">
                                                                                                                                                 <field name="VAR" id="1idj3sw*{G$j`2:II{^5">v_fast</field>
                                                                                                                                               </block>
                                                                                                                                             </value>
+                                                                                                                                            <value name="ARG1">
+                                                                                                                                              <block type="math_number" id="K``m#vm=PeC;2HJxr=Jx">
+                                                                                                                                                <field name="NUM">10</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
                                                                                                                                           </block>
                                                                                                                                         </statement>
                                                                                                                                         <value name="IF1">
@@ -444,15 +450,21 @@
                                                                                                                                           </block>
                                                                                                                                         </value>
                                                                                                                                         <statement name="DO1">
-                                                                                                                                          <block type="procedures_callnoreturn" id="1[SBSPn+FQ.[P7YtUwNZ" inline="true">
-                                                                                                                                            <mutation name="fwd_v">
+                                                                                                                                          <block type="procedures_callnoreturn" id="~M+5pWsaHLkyCq)rYO$k">
+                                                                                                                                            <mutation name="fwd">
                                                                                                                                               <arg name="v"/>
+                                                                                                                                              <arg name="ticks"/>
                                                                                                                                             </mutation>
                                                                                                                                             <value name="ARG0">
-                                                                                                                                              <block type="variables_get" id="~7B*FKz:f^U{s6BN1TJ9">
+                                                                                                                                              <block type="variables_get" id="iXjkVkHFgqS:.%6Q=Z_f">
                                                                                                                                                 <field name="VAR" id=")rK_fR,m=]b(j[{.CtBj">v_slow</field>
                                                                                                                                               </block>
                                                                                                                                             </value>
+                                                                                                                                            <value name="ARG1">
+                                                                                                                                              <block type="math_number" id="m]yorgh~PALhYi-x%]93">
+                                                                                                                                                <field name="NUM">10</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
                                                                                                                                           </block>
                                                                                                                                         </statement>
                                                                                                                                         <value name="IF2">
@@ -492,7 +504,20 @@
                                                                                                                                         </value>
                                                                                                                                         <statement name="DO2">
                                                                                                                                           <block type="procedures_callnoreturn" id="5?xr%Un4{ZZP/*kbTrS4">
-                                                                                                                                            <mutation name="turnSideLeft"/>
+                                                                                                                                            <mutation name="turnSideLeft">
+                                                                                                                                              <arg name="v"/>
+                                                                                                                                              <arg name="ticks"/>
+                                                                                                                                            </mutation>
+                                                                                                                                            <value name="ARG0">
+                                                                                                                                              <block type="variables_get" id="zX7$-2rcp(Tan$g?Z%[U">
+                                                                                                                                                <field name="VAR" id=")rK_fR,m=]b(j[{.CtBj">v_slow</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
+                                                                                                                                            <value name="ARG1">
+                                                                                                                                              <block type="math_number" id="2xa_b^blTx3j,Xt)H#5}">
+                                                                                                                                                <field name="NUM">20</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
                                                                                                                                           </block>
                                                                                                                                         </statement>
                                                                                                                                         <value name="IF3">
@@ -511,15 +536,21 @@
                                                                                                                                           </block>
                                                                                                                                         </value>
                                                                                                                                         <statement name="DO3">
-                                                                                                                                          <block type="procedures_callnoreturn" id=";$*URO!$mNp;(}~rEzSA" inline="true">
-                                                                                                                                            <mutation name="bwd_v">
+                                                                                                                                          <block type="procedures_callnoreturn" id="iE.eGjQ64)ne8c#zdVbM">
+                                                                                                                                            <mutation name="bwd">
                                                                                                                                               <arg name="v"/>
+                                                                                                                                              <arg name="ticks"/>
                                                                                                                                             </mutation>
                                                                                                                                             <value name="ARG0">
                                                                                                                                               <block type="variables_get" id="[3C}+lMgr=zfSwjcYdsJ">
                                                                                                                                                 <field name="VAR" id=")rK_fR,m=]b(j[{.CtBj">v_slow</field>
                                                                                                                                               </block>
                                                                                                                                             </value>
+                                                                                                                                            <value name="ARG1">
+                                                                                                                                              <block type="math_number" id="CWASv61O4meIid@gp|5P">
+                                                                                                                                                <field name="NUM">10</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
                                                                                                                                           </block>
                                                                                                                                         </statement>
                                                                                                                                         <statement name="ELSE">
@@ -791,8 +822,21 @@
                                                                                                                                           </block>
                                                                                                                                         </value>
                                                                                                                                         <statement name="DO0">
-                                                                                                                                          <block type="procedures_callnoreturn" id="),QhMk?KFwaoqgIh6A~w">
-                                                                                                                                            <mutation name="turnSideRight"/>
+                                                                                                                                          <block type="procedures_callnoreturn" id="8_rFe%[Ngs/W)u{[wK-/">
+                                                                                                                                            <mutation name="turnSideRight">
+                                                                                                                                              <arg name="v"/>
+                                                                                                                                              <arg name="ticks"/>
+                                                                                                                                            </mutation>
+                                                                                                                                            <value name="ARG0">
+                                                                                                                                              <block type="variables_get" id="%jZ0j@6g~afS~;)?{MXB">
+                                                                                                                                                <field name="VAR" id=")rK_fR,m=]b(j[{.CtBj">v_slow</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
+                                                                                                                                            <value name="ARG1">
+                                                                                                                                              <block type="math_number" id="cJ`!Y,Vi0EX0|.|y6Nc|">
+                                                                                                                                                <field name="NUM">20</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
                                                                                                                                           </block>
                                                                                                                                         </statement>
                                                                                                                                         <value name="IF1">
@@ -800,7 +844,7 @@
                                                                                                                                             <field name="OP">GT</field>
                                                                                                                                             <value name="A">
                                                                                                                                               <block type="variables_get" id="tchE8Qc)Kp|9?UE;Fpe%">
-                                                                                                                                                <field name="VAR" id="7Tp~7_.qfmJN0SR]5p}F">posx_goal_right</field>
+                                                                                                                                                <field name="VAR" id="=2ARo+;2DS07SU~j29Fk">posx_goal_left</field>
                                                                                                                                               </block>
                                                                                                                                             </value>
                                                                                                                                             <value name="B">
@@ -812,7 +856,20 @@
                                                                                                                                         </value>
                                                                                                                                         <statement name="DO1">
                                                                                                                                           <block type="procedures_callnoreturn" id="_q6X5`*YO|;FU%~(RZ2?">
-                                                                                                                                            <mutation name="turnSideLeft"/>
+                                                                                                                                            <mutation name="turnSideLeft">
+                                                                                                                                              <arg name="v"/>
+                                                                                                                                              <arg name="ticks"/>
+                                                                                                                                            </mutation>
+                                                                                                                                            <value name="ARG0">
+                                                                                                                                              <block type="variables_get" id="|w.R`6dQM5dRkA(EE+yC">
+                                                                                                                                                <field name="VAR" id=")rK_fR,m=]b(j[{.CtBj">v_slow</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
+                                                                                                                                            <value name="ARG1">
+                                                                                                                                              <block type="math_number" id="E](Zlbs1};rS=bm)zpcI">
+                                                                                                                                                <field name="NUM">20</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
                                                                                                                                           </block>
                                                                                                                                         </statement>
                                                                                                                                         <statement name="ELSE">
@@ -998,7 +1055,20 @@
                                                                                                                                         </value>
                                                                                                                                         <statement name="DO0">
                                                                                                                                           <block type="procedures_callnoreturn" id="@$;_yG?U8opM|/]Of75$">
-                                                                                                                                            <mutation name="turnSideRight"/>
+                                                                                                                                            <mutation name="turnSideRight">
+                                                                                                                                              <arg name="v"/>
+                                                                                                                                              <arg name="ticks"/>
+                                                                                                                                            </mutation>
+                                                                                                                                            <value name="ARG0">
+                                                                                                                                              <block type="variables_get" id="pL8o,[Ydi/Wp^J{smt$3">
+                                                                                                                                                <field name="VAR" id=")rK_fR,m=]b(j[{.CtBj">v_slow</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
+                                                                                                                                            <value name="ARG1">
+                                                                                                                                              <block type="math_number" id="l-M{#v:Q6XmgnnE+3,Rf">
+                                                                                                                                                <field name="NUM">20</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
                                                                                                                                           </block>
                                                                                                                                         </statement>
                                                                                                                                         <value name="IF1">
@@ -1018,7 +1088,20 @@
                                                                                                                                         </value>
                                                                                                                                         <statement name="DO1">
                                                                                                                                           <block type="procedures_callnoreturn" id="0il^Cdoc`7I6eVmi6htz">
-                                                                                                                                            <mutation name="turnSideLeft"/>
+                                                                                                                                            <mutation name="turnSideLeft">
+                                                                                                                                              <arg name="v"/>
+                                                                                                                                              <arg name="ticks"/>
+                                                                                                                                            </mutation>
+                                                                                                                                            <value name="ARG0">
+                                                                                                                                              <block type="variables_get" id="%2]eKO_ysvhOPwk$a6Qx">
+                                                                                                                                                <field name="VAR" id=")rK_fR,m=]b(j[{.CtBj">v_slow</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
+                                                                                                                                            <value name="ARG1">
+                                                                                                                                              <block type="math_number" id="AW2n8Mg#t@e6)x-)NCI]">
+                                                                                                                                                <field name="NUM">20</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
                                                                                                                                           </block>
                                                                                                                                         </statement>
                                                                                                                                         <statement name="ELSE">
@@ -1270,8 +1353,21 @@
                                                                                                                                           </block>
                                                                                                                                         </value>
                                                                                                                                         <statement name="DO1">
-                                                                                                                                          <block type="procedures_callnoreturn" id="|6(M2ayv;Mt,H:l*)L@e">
-                                                                                                                                            <mutation name="turnSideLeft"/>
+                                                                                                                                          <block type="procedures_callnoreturn" id="@n*^wewk`x?NX#m2}EQE">
+                                                                                                                                            <mutation name="turnSideLeft">
+                                                                                                                                              <arg name="v"/>
+                                                                                                                                              <arg name="ticks"/>
+                                                                                                                                            </mutation>
+                                                                                                                                            <value name="ARG0">
+                                                                                                                                              <block type="variables_get" id="+m}1a:ZW]JoRW2QP.n06">
+                                                                                                                                                <field name="VAR" id=")rK_fR,m=]b(j[{.CtBj">v_slow</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
+                                                                                                                                            <value name="ARG1">
+                                                                                                                                              <block type="math_number" id="_;2gj%#h1g[wnD|7oXuo">
+                                                                                                                                                <field name="NUM">20</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
                                                                                                                                           </block>
                                                                                                                                         </statement>
                                                                                                                                         <value name="IF2">
@@ -1311,7 +1407,20 @@
                                                                                                                                         </value>
                                                                                                                                         <statement name="DO2">
                                                                                                                                           <block type="procedures_callnoreturn" id="R590b9iY$aQ~B7!m8f2l">
-                                                                                                                                            <mutation name="turnSideRight"/>
+                                                                                                                                            <mutation name="turnSideRight">
+                                                                                                                                              <arg name="v"/>
+                                                                                                                                              <arg name="ticks"/>
+                                                                                                                                            </mutation>
+                                                                                                                                            <value name="ARG0">
+                                                                                                                                              <block type="variables_get" id="vk%)2O)R9Ft/FMn)2yr7">
+                                                                                                                                                <field name="VAR" id=")rK_fR,m=]b(j[{.CtBj">v_slow</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
+                                                                                                                                            <value name="ARG1">
+                                                                                                                                              <block type="math_number" id="N.3ER1#5:PMk;ocu-#q(">
+                                                                                                                                                <field name="NUM">20</field>
+                                                                                                                                              </block>
+                                                                                                                                            </value>
                                                                                                                                           </block>
                                                                                                                                         </statement>
                                                                                                                                         <statement name="ELSE">
@@ -2056,7 +2165,7 @@
                                                                                                                                             <field name="format">ms</field>
                                                                                                                                             <value name="value">
                                                                                                                                               <shadow type="math_number" id="E9K@*OZ(Ftp5CGt}.9cT">
-                                                                                                                                                <field name="NUM">50</field>
+                                                                                                                                                <field name="NUM">80</field>
                                                                                                                                               </shadow>
                                                                                                                                             </value>
                                                                                                                                           </block>
@@ -2128,7 +2237,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="N2EC5uK:$~0ERXAdK0!y" x="0" y="6321">
+  <block type="procedures_defnoreturn" id="N2EC5uK:$~0ERXAdK0!y" x="0" y="6851">
     <field name="NAME">checkTimeouts</field>
     <statement name="STACK">
       <block type="controls_if" id="o.;j7*F0}TW}ju0E18(_">
@@ -2250,7 +2359,7 @@
       </block>
     </statement>
   </block>
-  <block type="camera_on_ball_detected" id="dgC*A|KHMC_R5S#ZRk}d" x="0" y="6754">
+  <block type="camera_on_ball_detected" id="dgC*A|KHMC_R5S#ZRk}d" x="0" y="7284">
     <field name="instance_name">ball_detector</field>
     <statement name="statement">
       <block type="variables_set" id="=2/,IQfcLO{_5PNd3UK~">
@@ -2451,7 +2560,7 @@
       </block>
     </statement>
   </block>
-  <block type="camera_on_ball_detected" id="Rg2Gt(0WT:J2|Us~[j.3" x="0" y="7421">
+  <block type="camera_on_ball_detected" id="Rg2Gt(0WT:J2|Us~[j.3" x="0" y="7951">
     <field name="instance_name">ball_detector_goal_left</field>
     <statement name="statement">
       <block type="variables_set" id="kvK,D4e%04[?+!jq*Lch">
@@ -2519,7 +2628,7 @@
       </block>
     </statement>
   </block>
-  <block type="camera_on_ball_detected" id="(?slhGsN^:d1`vP{j9#|" x="0" y="7714">
+  <block type="camera_on_ball_detected" id="(?slhGsN^:d1`vP{j9#|" x="0" y="8244">
     <field name="instance_name">ball_detector_goal_right</field>
     <statement name="statement">
       <block type="variables_set" id="0!1?#@4|tcM8+U6E[$Tl">
@@ -2587,7 +2696,7 @@
       </block>
     </statement>
   </block>
-  <block type="counter_event" id="T^aHOKaV|bU#ZeZfn[GJ" x="0" y="8007">
+  <block type="counter_event" id="T^aHOKaV|bU#ZeZfn[GJ" x="0" y="8537">
     <value name="condition">
       <shadow type="counter_if_value" id="9`P*eh,|:Wnytp?G[|;{">
         <field name="instance_name">TXT_M_C1_motor_step_counter</field>
@@ -2635,7 +2744,7 @@
       </block>
     </statement>
   </block>
-  <block type="counter_event" id="7wA~J+BkZ5~nV6aI|fLZ" x="0" y="8154">
+  <block type="counter_event" id="7wA~J+BkZ5~nV6aI|fLZ" x="0" y="8684">
     <value name="condition">
       <shadow type="counter_if_value" id="RDF|2PoXWvG^_k{FB37U">
         <field name="instance_name">TXT_M_C2_motor_step_counter</field>
@@ -2683,7 +2792,7 @@
       </block>
     </statement>
   </block>
-  <block type="counter_event" id="Nv;e.HwUkTK/=(qEs~82" x="0" y="8301">
+  <block type="counter_event" id="Nv;e.HwUkTK/=(qEs~82" x="0" y="8831">
     <value name="condition">
       <shadow type="counter_if_value" id="05ihu;VYh*tmqA78pJQL">
         <field name="instance_name">TXT_M_C3_motor_step_counter</field>
@@ -2731,7 +2840,7 @@
       </block>
     </statement>
   </block>
-  <block type="counter_event" id="j|Pz^uHewb7]si9}3az3" x="0" y="8448">
+  <block type="counter_event" id="j|Pz^uHewb7]si9}3az3" x="0" y="8978">
     <value name="condition">
       <shadow type="counter_if_value" id="N9]b*Kn_Nxk}[I9e!^Z.">
         <field name="instance_name">TXT_M_C4_motor_step_counter</field>
@@ -2779,7 +2888,7 @@
       </block>
     </statement>
   </block>
-  <block type="input_event" id="j(TuhJ0G}{^qGSq:26FY" x="0" y="8595">
+  <block type="input_event" id="j(TuhJ0G}{^qGSq:26FY" x="0" y="9125">
     <value name="condition">
       <block type="input_photo_transistor_if_state" id="dX]-jf`=2/tNnEnHfKvx">
         <field name="instance_name">TXT_M_I8_photo_transistor</field>
@@ -2802,7 +2911,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="RyK*td9aN5aR;@gw4f)+" x="0" y="8732">
+  <block type="procedures_defnoreturn" id="RyK*td9aN5aR;@gw4f)+" x="0" y="9262">
     <field name="NAME">shotBall</field>
     <statement name="STACK">
       <block type="variables_set" id="l,2u2WF|]I#%kDS#5O7-">
@@ -2937,7 +3046,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="+FKt%DE[[q%Zp0T.Fn}d" x="0" y="9346">
+  <block type="procedures_defnoreturn" id="+FKt%DE[[q%Zp0T.Fn}d" x="0" y="9876">
     <field name="NAME">stop</field>
     <statement name="STACK">
       <block type="variables_set" id="0lb+=KDkMxl8Q(.f(!U4">
@@ -2959,7 +3068,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="/pGK)WReTLfX`L_7oAMD" x="0" y="9567">
+  <block type="procedures_defnoreturn" id="/pGK)WReTLfX`L_7oAMD" x="0" y="10097">
     <mutation>
       <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="{M*n_!I)eN0.4..0Bzo#"/>
     </mutation>
@@ -2997,7 +3106,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="qX~e_RBh^tj];fOb=cq6" x="0" y="9816">
+  <block type="procedures_defnoreturn" id="qX~e_RBh^tj];fOb=cq6" x="0" y="10346">
     <mutation>
       <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="{M*n_!I)eN0.4..0Bzo#"/>
     </mutation>
@@ -3035,7 +3144,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="!zD7YDZ.5n?En8cYle4R" x="0" y="10065">
+  <block type="procedures_defnoreturn" id="!zD7YDZ.5n?En8cYle4R" x="0" y="10595">
     <mutation>
       <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid=",q%qjDTJ~Z@[BoMwORuq"/>
     </mutation>
@@ -3073,7 +3182,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="}KXL0=RKLgCT~yQ];aw:" x="0" y="10314">
+  <block type="procedures_defnoreturn" id="}KXL0=RKLgCT~yQ];aw:" x="0" y="10844">
     <mutation>
       <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid=",q%qjDTJ~Z@[BoMwORuq"/>
     </mutation>
@@ -3111,7 +3220,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="0R.p||vBpkt08x[mI=z[" x="0" y="10563">
+  <block type="procedures_defnoreturn" id="0R.p||vBpkt08x[mI=z[" x="0" y="11093">
     <mutation>
       <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid=",q%qjDTJ~Z@[BoMwORuq"/>
     </mutation>
@@ -3162,8 +3271,14 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="UFM0X7|X:*ja#f+^7kz;" x="0" y="10832">
+  <block type="procedures_defnoreturn" id="UFM0X7|X:*ja#f+^7kz;" x="0" y="11362">
+    <mutation>
+      <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="-fFb#6a:h}yA(|L+pf*l"/>
+      <arg name="ticks" varid="l9lR0!)Laya}3RYVW(ZQ" argid="h?@dWX*~x|BDzo:O{is["/>
+    </mutation>
     <field name="NAME">turnSideLeft</field>
+    <field name="-fFb#6a:h}yA(|L+pf*l">v</field>
+    <field name="h?@dWX*~x|BDzo:O{is[">ticks</field>
     <statement name="STACK">
       <block type="variables_set" id="nf?K,a/5MLaj.5?J/IGs">
         <field name="VAR" id="fPH`.@]riH+=v{,A)bP5">cmd</field>
@@ -3173,44 +3288,91 @@
           </block>
         </value>
         <next>
-          <block type="encodermotor_set_speed" id="I[S{vjf1EdjHVhk32Irr">
-            <mutation syncBlocks="1"/>
-            <field name="instance_name_0">TXT_M_M1_encodermotor</field>
-            <field name="direction_0">Motor.CCW</field>
-            <field name="instance_name_1">TXT_M_M2_encodermotor</field>
-            <field name="direction_1">Motor.CW</field>
-            <value name="speed">
-              <shadow type="motor_number" id="KbM1XwSZ`0p4OfObK%2d">
-                <field name="MOTOR_NUM">100</field>
-              </shadow>
-              <block type="variables_get" id="lwr0*WN{do?Zo1A69t):">
-                <field name="VAR" id=")rK_fR,m=]b(j[{.CtBj">v_slow</field>
+          <block type="controls_if" id="JOOQt^L_atJdkcD2Z^d~">
+            <value name="IF0">
+              <block type="logic_compare" id="@Ue2[vwxrp{x8JaQQlC7">
+                <field name="OP">GTE</field>
+                <value name="A">
+                  <block type="variables_get" id="-YKN/Ie5h0W`A.zxXRs:">
+                    <field name="VAR" id="l9lR0!)Laya}3RYVW(ZQ">ticks</field>
+                  </block>
+                </value>
+                <value name="B">
+                  <block type="math_number" id="g.7*iuM3mec+us@!mG8x">
+                    <field name="NUM">1</field>
+                  </block>
+                </value>
               </block>
             </value>
-            <next>
-              <block type="encodermotor_set_speed" id="?-}PDl2[=K?(SrBgJg-U">
+            <statement name="DO0">
+              <block type="encodermotor_set_values" id="}/ZV$w#6]=CleLLuQYM]">
                 <mutation syncBlocks="1"/>
-                <field name="instance_name_0">TXT_M_M3_encodermotor</field>
-                <field name="direction_0">Motor.CW</field>
-                <field name="instance_name_1">TXT_M_M4_encodermotor</field>
-                <field name="direction_1">Motor.CCW</field>
+                <field name="instance_name_0">TXT_M_M1_encodermotor</field>
+                <field name="direction_0">Motor.CCW</field>
+                <field name="instance_name_1">TXT_M_M2_encodermotor</field>
+                <field name="direction_1">Motor.CW</field>
                 <value name="speed">
-                  <shadow type="motor_number" id="=efoF`lj-~A7g]Ka]qr.">
-                    <field name="MOTOR_NUM">512</field>
+                  <shadow type="motor_number" id="I[z`|1U#HYI4M/h36r|N">
+                    <field name="MOTOR_NUM">0</field>
                   </shadow>
-                  <block type="variables_get" id="Oj^O^)OdFOvbsTw`%^dM">
-                    <field name="VAR" id="O=Lc:FQ[]f3iuM/V@.mv">v_var_ball_xpos</field>
+                </value>
+                <value name="distance">
+                  <shadow type="math_number" id="yW`$]d5/Gd91|S#+;LJg">
+                    <field name="NUM">100</field>
+                  </shadow>
+                  <block type="variables_get" id="DaoMtk#*[#M?hcxBGYvk">
+                    <field name="VAR" id="l9lR0!)Laya}3RYVW(ZQ">ticks</field>
                   </block>
                 </value>
+                <next>
+                  <block type="encodermotor_set_values" id="fIT*w|!*|R]ib(CsGKqf">
+                    <mutation syncBlocks="1"/>
+                    <field name="instance_name_0">TXT_M_M3_encodermotor</field>
+                    <field name="direction_0">Motor.CW</field>
+                    <field name="instance_name_1">TXT_M_M4_encodermotor</field>
+                    <field name="direction_1">Motor.CCW</field>
+                    <value name="speed">
+                      <shadow type="motor_number" id=",9h-fYcB@0W3C+Z|#b1g">
+                        <field name="MOTOR_NUM">0</field>
+                      </shadow>
+                      <block type="variables_get" id="$|_Sq:n@cSo+fhGL~52Q">
+                        <field name="VAR" id="DfDz@$]?^P=(6r:%^xC*">v</field>
+                      </block>
+                    </value>
+                    <value name="distance">
+                      <shadow type="math_number">
+                        <field name="NUM">100</field>
+                      </shadow>
+                      <block type="variables_get" id="+-nzXImGZi}qG=-5gxLl">
+                        <field name="VAR" id="l9lR0!)Laya}3RYVW(ZQ">ticks</field>
+                      </block>
+                    </value>
+                    <next>
+                      <block type="util_wait_until" id=",o9Ot53)bgkRZ,O{~wrF">
+                        <value name="value">
+                          <block type="encodermotor_position_read" id="R!Vo),Vz}kY#s{2:|HA[">
+                            <field name="instance_name">TXT_M_M3_encodermotor</field>
+                          </block>
+                        </value>
+                      </block>
+                    </next>
+                  </block>
+                </next>
               </block>
-            </next>
+            </statement>
           </block>
         </next>
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="*i[s2YTWD*g9HS4dxkPq" x="0" y="11053">
+  <block type="procedures_defnoreturn" id="*i[s2YTWD*g9HS4dxkPq" x="0" y="11775">
+    <mutation>
+      <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="k6At@e}Qga_x|SmVlf6C"/>
+      <arg name="ticks" varid="l9lR0!)Laya}3RYVW(ZQ" argid="~VyZflQ+9HCPP`ynQ/=Y"/>
+    </mutation>
     <field name="NAME">turnSideRight</field>
+    <field name="k6At@e}Qga_x|SmVlf6C">v</field>
+    <field name="~VyZflQ+9HCPP`ynQ/=Y">ticks</field>
     <statement name="STACK">
       <block type="variables_set" id="$K=E,g/}k}au~ZyqB!+S">
         <field name="VAR" id="fPH`.@]riH+=v{,A)bP5">cmd</field>
@@ -3220,119 +3382,84 @@
           </block>
         </value>
         <next>
-          <block type="encodermotor_set_speed" id="c8~SXys:o35ETKj;GX?m">
-            <mutation syncBlocks="1"/>
-            <field name="instance_name_0">TXT_M_M1_encodermotor</field>
-            <field name="direction_0">Motor.CW</field>
-            <field name="instance_name_1">TXT_M_M2_encodermotor</field>
-            <field name="direction_1">Motor.CCW</field>
-            <value name="speed">
-              <shadow type="motor_number" id="dD.1u9Pwx-^rnKZyWQx/">
-                <field name="MOTOR_NUM">100</field>
-              </shadow>
-              <block type="variables_get" id="C-Nw|[v}V:YO:/o4e*z4">
-                <field name="VAR" id=")rK_fR,m=]b(j[{.CtBj">v_slow</field>
+          <block type="controls_if" id="XbYoj,JMQCC1C!-)0+ZR">
+            <value name="IF0">
+              <block type="logic_compare" id="i3Xq9y4.N$7.TxNR;|+7">
+                <field name="OP">GTE</field>
+                <value name="A">
+                  <block type="variables_get" id=":*~lLANBe1~V(:l)dU/w">
+                    <field name="VAR" id="l9lR0!)Laya}3RYVW(ZQ">ticks</field>
+                  </block>
+                </value>
+                <value name="B">
+                  <block type="math_number" id="M,rYpbKkYW0iEz]=%ROD">
+                    <field name="NUM">1</field>
+                  </block>
+                </value>
               </block>
             </value>
-            <next>
-              <block type="encodermotor_set_speed" id="b:w42I;ulm2~l(S-#ER(">
+            <statement name="DO0">
+              <block type="encodermotor_set_values" id="D+vuMqgLNY5qs]Uu7{]g">
                 <mutation syncBlocks="1"/>
-                <field name="instance_name_0">TXT_M_M3_encodermotor</field>
-                <field name="direction_0">Motor.CCW</field>
-                <field name="instance_name_1">TXT_M_M4_encodermotor</field>
-                <field name="direction_1">Motor.CW</field>
+                <field name="instance_name_0">TXT_M_M1_encodermotor</field>
+                <field name="direction_0">Motor.CW</field>
+                <field name="instance_name_1">TXT_M_M2_encodermotor</field>
+                <field name="direction_1">Motor.CCW</field>
                 <value name="speed">
-                  <shadow type="motor_number" id=";zG8,Fnh@=jNAT#Br68/">
-                    <field name="MOTOR_NUM">512</field>
+                  <shadow type="motor_number" id="Fe^Kn2-*_?@V=YxQ`_d#">
+                    <field name="MOTOR_NUM">0</field>
                   </shadow>
-                  <block type="variables_get" id="pyJ,6!X~/k?JFRr+Yg{E">
-                    <field name="VAR" id="O=Lc:FQ[]f3iuM/V@.mv">v_var_ball_xpos</field>
+                </value>
+                <value name="distance">
+                  <shadow type="math_number">
+                    <field name="NUM">100</field>
+                  </shadow>
+                  <block type="variables_get" id="-O1^pgTixJVeZdU+fF~!">
+                    <field name="VAR" id="l9lR0!)Laya}3RYVW(ZQ">ticks</field>
                   </block>
                 </value>
+                <next>
+                  <block type="encodermotor_set_values" id="$z/xEW=3p14GU4SWZ]~K">
+                    <mutation syncBlocks="1"/>
+                    <field name="instance_name_0">TXT_M_M3_encodermotor</field>
+                    <field name="direction_0">Motor.CCW</field>
+                    <field name="instance_name_1">TXT_M_M4_encodermotor</field>
+                    <field name="direction_1">Motor.CW</field>
+                    <value name="speed">
+                      <shadow type="motor_number" id="{}+IU8w75@CTkY!dlorF">
+                        <field name="MOTOR_NUM">0</field>
+                      </shadow>
+                      <block type="variables_get" id="][iNR3/wU.Kuf^T14BhG">
+                        <field name="VAR" id="DfDz@$]?^P=(6r:%^xC*">v</field>
+                      </block>
+                    </value>
+                    <value name="distance">
+                      <shadow type="math_number">
+                        <field name="NUM">100</field>
+                      </shadow>
+                      <block type="variables_get" id="i@Ph|tnfpQRXb7QCBPS_">
+                        <field name="VAR" id="l9lR0!)Laya}3RYVW(ZQ">ticks</field>
+                      </block>
+                    </value>
+                    <next>
+                      <block type="util_wait_until" id="vw+wqB3kPz,F/ZyvW,=+">
+                        <value name="value">
+                          <block type="encodermotor_position_read" id="ka#wP1(W-PxxZYe4B+J0">
+                            <field name="instance_name">TXT_M_M3_encodermotor</field>
+                          </block>
+                        </value>
+                      </block>
+                    </next>
+                  </block>
+                </next>
               </block>
-            </next>
-          </block>
-        </next>
-      </block>
-    </statement>
-  </block>
-  <block type="procedures_defnoreturn" id="dhS+rZWE[`RZz:fU3A)e" x="0" y="11274">
-    <mutation>
-      <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid=",q%qjDTJ~Z@[BoMwORuq"/>
-    </mutation>
-    <field name="NAME">sideleft_v</field>
-    <field name=",q%qjDTJ~Z@[BoMwORuq">v</field>
-    <statement name="STACK">
-      <block type="variables_set" id="Z|I9(D/4o;Yt|2OG8_^J">
-        <field name="VAR" id="fPH`.@]riH+=v{,A)bP5">cmd</field>
-        <value name="VALUE">
-          <block type="text" id="%iArgA`4D!~E(#KoW3aD">
-            <field name="TEXT">sideleft_v</field>
-          </block>
-        </value>
-        <next>
-          <block type="encodermotor_set_speed" id="pLk^0]/}JZa5O5XBdTkw">
-            <mutation syncBlocks="3"/>
-            <field name="instance_name_0">TXT_M_M1_encodermotor</field>
-            <field name="direction_0">Motor.CCW</field>
-            <field name="instance_name_1">TXT_M_M2_encodermotor</field>
-            <field name="direction_1">Motor.CW</field>
-            <field name="instance_name_2">TXT_M_M3_encodermotor</field>
-            <field name="direction_2">Motor.CW</field>
-            <field name="instance_name_3">TXT_M_M4_encodermotor</field>
-            <field name="direction_3">Motor.CCW</field>
-            <value name="speed">
-              <shadow type="motor_number">
-                <field name="MOTOR_NUM">512</field>
-              </shadow>
-              <block type="variables_get" id="+]RiX%o.`5?mErIL~B$V">
-                <field name="VAR" id="DfDz@$]?^P=(6r:%^xC*">v</field>
-              </block>
-            </value>
-          </block>
-        </next>
-      </block>
-    </statement>
-  </block>
-  <block type="procedures_defnoreturn" id=")G33?J{l2sdl+nL3hpBp" x="0" y="11523">
-    <mutation>
-      <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid=",q%qjDTJ~Z@[BoMwORuq"/>
-    </mutation>
-    <field name="NAME">sideright_v</field>
-    <field name=",q%qjDTJ~Z@[BoMwORuq">v</field>
-    <statement name="STACK">
-      <block type="variables_set" id="/SeF0|Du}.hszV$AbihP">
-        <field name="VAR" id="fPH`.@]riH+=v{,A)bP5">cmd</field>
-        <value name="VALUE">
-          <block type="text" id="-6KPTh{PdFj4P7D[u2z`">
-            <field name="TEXT">sideright_v</field>
-          </block>
-        </value>
-        <next>
-          <block type="encodermotor_set_speed" id=".Q|g7PUDAM--?pT[,-S?">
-            <mutation syncBlocks="3"/>
-            <field name="instance_name_0">TXT_M_M1_encodermotor</field>
-            <field name="direction_0">Motor.CW</field>
-            <field name="instance_name_1">TXT_M_M2_encodermotor</field>
-            <field name="direction_1">Motor.CCW</field>
-            <field name="instance_name_2">TXT_M_M3_encodermotor</field>
-            <field name="direction_2">Motor.CCW</field>
-            <field name="instance_name_3">TXT_M_M4_encodermotor</field>
-            <field name="direction_3">Motor.CW</field>
-            <value name="speed">
-              <shadow type="motor_number">
-                <field name="MOTOR_NUM">512</field>
-              </shadow>
-              <block type="variables_get" id="sT@qtvgDFZk]Mn$EU:M1">
-                <field name="VAR" id="DfDz@$]?^P=(6r:%^xC*">v</field>
-              </block>
-            </value>
+            </statement>
           </block>
         </next>
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="oSa9Ly*^-c^M{$gkMZt1" x="0" y="11772">
+  <block type="procedures_defnoreturn" id="oSa9Ly*^-c^M{$gkMZt1" x="0" y="12188">
     <mutation>
       <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="K)Z,8|d5@gck+Q]pnW01"/>
       <arg name="ticks" varid="l9lR0!)Laya}3RYVW(ZQ" argid="(Id`t]O(jxfZJay}20X{"/>
@@ -3408,7 +3535,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="G@]xamrhDPW$7uQ6oPo#" x="0" y="12157">
+  <block type="procedures_defnoreturn" id="G@]xamrhDPW$7uQ6oPo#" x="0" y="12573">
     <mutation>
       <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="_mFFsmoZwL{(llRvf-eW"/>
       <arg name="ticks" varid="l9lR0!)Laya}3RYVW(ZQ" argid="aNHXtqe[T`=Y[mqp`ZDN"/>
@@ -3484,7 +3611,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="5Hv=PFtVvPQA=IZrkJfU" x="0" y="12542">
+  <block type="procedures_defnoreturn" id="5Hv=PFtVvPQA=IZrkJfU" x="0" y="12958">
     <mutation>
       <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="~d8Z+AHZ!wz|G]JHW0lQ"/>
       <arg name="ticks" varid="l9lR0!)Laya}3RYVW(ZQ" argid="jRMx@L,Ya|zd@/bBb#1T"/>
@@ -3575,7 +3702,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="[S@[MO!Z/cNt:Jsg4dd}" x="0" y="12983">
+  <block type="procedures_defnoreturn" id="[S@[MO!Z/cNt:Jsg4dd}" x="0" y="13399">
     <mutation>
       <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="8Z2n_ZVA.)85]V7j%3;7"/>
       <arg name="ticks" varid="l9lR0!)Laya}3RYVW(ZQ" argid="J(gJ~*9ZJJa,[V1)[xn#"/>
@@ -3666,7 +3793,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="0yb4y~)e=F^~rds6/HYd" x="0" y="13424">
+  <block type="procedures_defnoreturn" id="0yb4y~)e=F^~rds6/HYd" x="0" y="13840">
     <mutation>
       <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="~d8Z+AHZ!wz|G]JHW0lQ"/>
       <arg name="ticks" varid="l9lR0!)Laya}3RYVW(ZQ" argid="jRMx@L,Ya|zd@/bBb#1T"/>
@@ -3738,7 +3865,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="qiCJ8lc,P.U`J8k0us:C" x="0" y="13753">
+  <block type="procedures_defnoreturn" id="qiCJ8lc,P.U`J8k0us:C" x="0" y="14169">
     <mutation>
       <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="8Z2n_ZVA.)85]V7j%3;7"/>
       <arg name="ticks" varid="l9lR0!)Laya}3RYVW(ZQ" argid="J(gJ~*9ZJJa,[V1)[xn#"/>
diff --git a/omniwheels_x4_soccer_goal.py b/omniwheels_x4_soccer_goal.py
index d6a5d50093f7ffc31a0b751e6fb775fda6dad81d..8fd87527631e25424fcbc428f3d564f448b98f31 100644
--- a/omniwheels_x4_soccer_goal.py
+++ b/omniwheels_x4_soccer_goal.py
@@ -22,7 +22,6 @@ counters = None
 factor_ball_rot = None
 posy_ball = None
 search_dir_left = None
-v_slow = None
 x_min = None
 v_var_ball_xpos = None
 x_max = None
@@ -30,12 +29,13 @@ v_var_ball_ypos = None
 y_ball_far = None
 y_ball_near = None
 y_ball_touch = None
+v_slow = None
 v_fast = None
 goal_width = None
 pos_goal_both = None
 state = None
 def checkTimeouts():
-    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     if (time.time() * 1000) - ts_ball > 500:
         posx_ball = None
         posy_ball = None
@@ -47,7 +47,7 @@ def checkTimeouts():
 
 
 def ball_callback(event):
-    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     ts_ball = (time.time() * 1000)
     posx_ball = event.value.x
     posy_ball = event.value.y
@@ -60,7 +60,7 @@ ball_detector.add_detection_listener(ball_callback)
 
 
 def ball_callback2(event):
-    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     ts_goal_left = (time.time() * 1000)
     posx_goal_left = event.value.x
     if False:
@@ -70,7 +70,7 @@ ball_detector_goal_left.add_detection_listener(ball_callback2)
 
 
 def ball_callback23(event):
-    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     ts_goal_right = (time.time() * 1000)
     posx_goal_right = event.value.x
     if False:
@@ -80,7 +80,7 @@ ball_detector_goal_right.add_detection_listener(ball_callback23)
 
 
 def callback(event):
-    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     if TXT_M_C1_motor_step_counter.get_count() >= 0:
         counters[0] = TXT_M_C1_motor_step_counter.get_count()
         display.set_attr("txt_label_counters.text", str(counters))
@@ -90,7 +90,7 @@ TXT_M_C1_motor_step_counter.add_change_listener("count", callback)
 
 
 def callback2(event):
-    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     if TXT_M_C2_motor_step_counter.get_count() >= 0:
         counters[1] = TXT_M_C2_motor_step_counter.get_count()
         display.set_attr("txt_label_counters.text", str(counters))
@@ -100,7 +100,7 @@ TXT_M_C2_motor_step_counter.add_change_listener("count", callback2)
 
 
 def callback3(event):
-    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     if TXT_M_C3_motor_step_counter.get_count() >= 0:
         counters[2] = TXT_M_C3_motor_step_counter.get_count()
         display.set_attr("txt_label_counters.text", str(counters))
@@ -110,7 +110,7 @@ TXT_M_C3_motor_step_counter.add_change_listener("count", callback3)
 
 
 def callback4(event):
-    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     if TXT_M_C4_motor_step_counter.get_count() >= 0:
         counters[3] = TXT_M_C4_motor_step_counter.get_count()
         display.set_attr("txt_label_counters.text", str(counters))
@@ -120,7 +120,7 @@ TXT_M_C4_motor_step_counter.add_change_listener("count", callback4)
 
 
 def callback5(event):
-    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     if TXT_M_I8_photo_transistor.is_dark():
         shotBall()
         time.sleep(5)
@@ -130,7 +130,7 @@ TXT_M_I8_photo_transistor.add_change_listener("dark", callback5)
 
 
 def shotBall():
-    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'shotBall'
     TXT_M_S1_servomotor.set_position(int(400))
     TXT_M_M1_encodermotor.set_speed(int(512), Motor.CCW)
@@ -162,13 +162,13 @@ def shotBall():
 
 
 def stop():
-    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'stop'
     TXT_M_M1_encodermotor.stop_sync(TXT_M_M2_encodermotor, TXT_M_M3_encodermotor, TXT_M_M4_encodermotor)
 
 
 def fwd_v(v):
-    global ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'fwd_v'
     TXT_M_M1_encodermotor.set_speed(int(v), Motor.CCW)
     TXT_M_M2_encodermotor.set_speed(int(v), Motor.CCW)
@@ -178,7 +178,7 @@ def fwd_v(v):
 
 
 def bwd_v(v):
-    global ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'bwd_v'
     TXT_M_M1_encodermotor.set_speed(int(v), Motor.CW)
     TXT_M_M2_encodermotor.set_speed(int(v), Motor.CW)
@@ -188,7 +188,7 @@ def bwd_v(v):
 
 
 def left_v(v):
-    global ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'left_v'
     TXT_M_M1_encodermotor.set_speed(int(v), Motor.CCW)
     TXT_M_M2_encodermotor.set_speed(int(v), Motor.CW)
@@ -198,7 +198,7 @@ def left_v(v):
 
 
 def right_v(v):
-    global ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'right_v'
     TXT_M_M1_encodermotor.set_speed(int(v), Motor.CW)
     TXT_M_M2_encodermotor.set_speed(int(v), Motor.CCW)
@@ -208,7 +208,7 @@ def right_v(v):
 
 
 def search_ball_rot(v):
-    global ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'search_ball_rot'
     if search_dir_left:
         left_v(v)
@@ -216,50 +216,40 @@ def search_ball_rot(v):
         right_v(v)
 
 
-def turnSideLeft():
-    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+def turnSideLeft(v, ticks):
+    global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'turnSideLeft'
-    TXT_M_M1_encodermotor.set_speed(int(v_slow), Motor.CCW)
-    TXT_M_M2_encodermotor.set_speed(int(v_slow), Motor.CW)
-    TXT_M_M1_encodermotor.start_sync(TXT_M_M2_encodermotor)
-    TXT_M_M3_encodermotor.set_speed(int(v_var_ball_xpos), Motor.CW)
-    TXT_M_M4_encodermotor.set_speed(int(v_var_ball_xpos), Motor.CCW)
-    TXT_M_M3_encodermotor.start_sync(TXT_M_M4_encodermotor)
+    if ticks >= 1:
+        TXT_M_M1_encodermotor.set_speed(int(0), Motor.CCW)
+        TXT_M_M2_encodermotor.set_speed(int(0), Motor.CW)
+        TXT_M_M1_encodermotor.set_distance(int(ticks), TXT_M_M2_encodermotor)
+        TXT_M_M3_encodermotor.set_speed(int(v), Motor.CW)
+        TXT_M_M4_encodermotor.set_speed(int(v), Motor.CCW)
+        TXT_M_M3_encodermotor.set_distance(int(ticks), TXT_M_M4_encodermotor)
+        while True:
+            if (not TXT_M_M3_encodermotor.is_running()):
+                break
+            time.sleep(0.010)
 
 
-def turnSideRight():
-    global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+def turnSideRight(v, ticks):
+    global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'turnSideRight'
-    TXT_M_M1_encodermotor.set_speed(int(v_slow), Motor.CW)
-    TXT_M_M2_encodermotor.set_speed(int(v_slow), Motor.CCW)
-    TXT_M_M1_encodermotor.start_sync(TXT_M_M2_encodermotor)
-    TXT_M_M3_encodermotor.set_speed(int(v_var_ball_xpos), Motor.CCW)
-    TXT_M_M4_encodermotor.set_speed(int(v_var_ball_xpos), Motor.CW)
-    TXT_M_M3_encodermotor.start_sync(TXT_M_M4_encodermotor)
-
-
-def sideleft_v(v):
-    global ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
-    cmd = 'sideleft_v'
-    TXT_M_M1_encodermotor.set_speed(int(v), Motor.CCW)
-    TXT_M_M2_encodermotor.set_speed(int(v), Motor.CW)
-    TXT_M_M3_encodermotor.set_speed(int(v), Motor.CW)
-    TXT_M_M4_encodermotor.set_speed(int(v), Motor.CCW)
-    TXT_M_M1_encodermotor.start_sync(TXT_M_M2_encodermotor, TXT_M_M3_encodermotor, TXT_M_M4_encodermotor)
-
-
-def sideright_v(v):
-    global ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
-    cmd = 'sideright_v'
-    TXT_M_M1_encodermotor.set_speed(int(v), Motor.CW)
-    TXT_M_M2_encodermotor.set_speed(int(v), Motor.CCW)
-    TXT_M_M3_encodermotor.set_speed(int(v), Motor.CCW)
-    TXT_M_M4_encodermotor.set_speed(int(v), Motor.CW)
-    TXT_M_M1_encodermotor.start_sync(TXT_M_M2_encodermotor, TXT_M_M3_encodermotor, TXT_M_M4_encodermotor)
+    if ticks >= 1:
+        TXT_M_M1_encodermotor.set_speed(int(0), Motor.CW)
+        TXT_M_M2_encodermotor.set_speed(int(0), Motor.CCW)
+        TXT_M_M1_encodermotor.set_distance(int(ticks), TXT_M_M2_encodermotor)
+        TXT_M_M3_encodermotor.set_speed(int(v), Motor.CCW)
+        TXT_M_M4_encodermotor.set_speed(int(v), Motor.CW)
+        TXT_M_M3_encodermotor.set_distance(int(ticks), TXT_M_M4_encodermotor)
+        while True:
+            if (not TXT_M_M3_encodermotor.is_running()):
+                break
+            time.sleep(0.010)
 
 
 def fwd(v, ticks):
-    global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'fwd'
     if ticks >= 1:
         TXT_M_M1_encodermotor.set_speed(int(v), Motor.CCW)
@@ -274,7 +264,7 @@ def fwd(v, ticks):
 
 
 def bwd(v, ticks):
-    global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'bwd'
     if ticks >= 1:
         TXT_M_M1_encodermotor.set_speed(int(v), Motor.CW)
@@ -289,7 +279,7 @@ def bwd(v, ticks):
 
 
 def left(v, ticks):
-    global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'left ({}, {})'.format(v, ticks)
     if ticks >= 1:
         TXT_M_M1_encodermotor.set_speed(int(v), Motor.CCW)
@@ -304,7 +294,7 @@ def left(v, ticks):
 
 
 def right(v, ticks):
-    global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'right ({}, {})'.format(v, ticks)
     if ticks >= 1:
         TXT_M_M1_encodermotor.set_speed(int(v), Motor.CW)
@@ -319,7 +309,7 @@ def right(v, ticks):
 
 
 def left2(v, ticks):
-    global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'left2'
     if ticks >= 1:
         TXT_M_M2_encodermotor.set_speed(int(v), Motor.CW)
@@ -332,7 +322,7 @@ def left2(v, ticks):
 
 
 def right2(v, ticks):
-    global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, v_slow, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_fast, goal_width, pos_goal_both, state
+    global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, factor_y, posx_ball, posx_goal_left, posx_goal_right, counters, factor_ball_rot, posy_ball, search_dir_left, x_min, v_var_ball_xpos, x_max, v_var_ball_ypos, y_ball_far, y_ball_near, y_ball_touch, v_slow, v_fast, goal_width, pos_goal_both, state
     cmd = 'right2'
     if ticks >= 1:
         TXT_M_M1_encodermotor.set_speed(int(v), Motor.CW)
@@ -377,13 +367,13 @@ while True:
             state = 'BALL_NO_GOAL'
             if posx_ball >= x_min and posx_ball <= x_max:
                 if posy_ball <= y_ball_far:
-                    fwd_v(v_fast)
+                    fwd(v_fast, 10)
                 elif posy_ball > y_ball_far and posy_ball <= y_ball_near:
-                    fwd_v(v_slow)
+                    fwd(v_slow, 10)
                 elif posy_ball > y_ball_near and posy_ball <= y_ball_touch:
-                    turnSideLeft()
+                    turnSideLeft(v_slow, 20)
                 elif posy_ball <= y_ball_touch:
-                    bwd_v(v_slow)
+                    bwd(v_slow, 10)
                 else:
                     stop()
             elif posx_ball > x_max:
@@ -398,9 +388,9 @@ while True:
                 fwd_v(v_slow)
             elif posy_ball <= y_ball_near:
                 if posx_goal_left < posx_ball:
-                    turnSideRight()
-                elif posx_goal_right > posx_ball:
-                    turnSideLeft()
+                    turnSideRight(v_slow, 20)
+                elif posx_goal_left > posx_ball:
+                    turnSideLeft(v_slow, 20)
                 else:
                     stop()
             elif posy_ball <= y_ball_touch:
@@ -413,9 +403,9 @@ while True:
                 fwd_v(v_slow)
             elif posy_ball <= y_ball_near:
                 if posx_goal_right < posx_ball:
-                    turnSideRight()
+                    turnSideRight(v_slow, 20)
                 elif posx_goal_right > posx_ball:
-                    turnSideLeft()
+                    turnSideLeft(v_slow, 20)
                 else:
                     stop()
             elif posy_ball <= y_ball_touch:
@@ -430,9 +420,9 @@ while True:
                 if posx_ball > posx_goal_left and posx_ball < posx_goal_right:
                     fwd_v(v_slow)
                 elif posx_ball < posx_goal_left and posx_ball < posx_goal_right:
-                    turnSideLeft()
+                    turnSideLeft(v_slow, 20)
                 elif posx_ball > posx_goal_left and posx_ball > posx_goal_right:
-                    turnSideRight()
+                    turnSideRight(v_slow, 20)
                 else:
                     stop()
             elif posy_ball <= y_ball_touch:
@@ -467,6 +457,6 @@ while True:
     display.set_attr("txt_label_goal.text", str('x:{}, {}, p:{}, w:{}'.format(posx_goal_left, posx_goal_right, pos_goal_both, goal_width)))
     display.set_attr("txt_label_counters.text", str('{}'.format(counters)))
     print('{}:{}  GOAL_x: {}, {}, p:{}, w:{} BALL_pos:{},{} v_x:{} v_y:{}'.format(state, cmd, posx_goal_left, posx_goal_right, pos_goal_both, goal_width, posx_ball, posy_ball, v_var_ball_xpos, v_var_ball_ypos))
-    time.sleep(0.05)
+    time.sleep(0.08)