diff --git a/final_project/mouse_class.py b/final_project/mouse_class.py
index 52f97bf67dddbecc93032b5afa2427d12a630bd8..67f95dfbf423a12e3a74874146046eda8a008fea 100644
--- a/final_project/mouse_class.py
+++ b/final_project/mouse_class.py
@@ -3,7 +3,7 @@ import pyautogui
 from collections import Counter
 from screeninfo import get_monitors
 
-from parameters import DETECTION_SIDE_MARGIN, DETECTION_BOTTOM_MARGIN, DEFAULT_HAND_SIZE
+from parameters import DETECTION_SIDE_MARGIN, DEFAULT_HAND_SIZE, VISUALIZATION_MARGIN
 
 MONITOR = get_monitors()[0]
 WIDTH, HEIGHT = MONITOR.width, MONITOR.height
@@ -27,9 +27,9 @@ class Mouse:
     def get_hand_pos(self, hand_pos):
         self.hand_pos_x = hand_pos[0]
         self.hand_pos_y = hand_pos[1]
-        #print(f"{self.hand_pos_x}, {self.hand_pos_y}")
+        #print(f"hand size: {self.hand_size}")
+        #print(f"hand coord: {self.hand_pos_x}, {self.hand_pos_y} \n")
         self.resize_coordinates()
-        #print(f"{self.hand_pos_x}, {self.hand_pos_y} \n")
 
 
     def add_prediction(self, prediction):
@@ -52,7 +52,6 @@ class Mouse:
             if self.previous_action != action and self.previous_action == "drag":
                 pyautogui.mouseUp()
                 self.drag_start = None
-                print("drop")
 
             self.mouse_control(action)
             self.update_init(action)
@@ -71,9 +70,11 @@ class Mouse:
         elif prediction == "move cursor":
             
             #hand_point = ([int(self.hand_pos_x*WIDTH), int(self.hand_pos_y*HEIGHT)])
-            hand_x = np.clip(int(self.hand_pos_x*WIDTH), 0, WIDTH-1)
-            hand_y = np.clip(int(self.hand_pos_y*HEIGHT), 0, HEIGHT-1)
-            pyautogui.moveTo(hand_x, hand_y, tween = pyautogui.easeOutQuad)
+            hand_x = np.clip(int(self.hand_pos_x*WIDTH), VISUALIZATION_MARGIN, WIDTH-VISUALIZATION_MARGIN)
+            hand_y = np.clip(int(self.hand_pos_y*HEIGHT), VISUALIZATION_MARGIN, HEIGHT-VISUALIZATION_MARGIN)
+            #print(f"x: {hand_x}, y: {hand_y} \n width: {WIDTH}, height: {HEIGHT}")
+            #pyautogui.moveTo(hand_x, hand_y, tween = pyautogui.easeOutQuad)
+            pyautogui.moveTo(hand_x, hand_y)
 
         elif prediction == "stop moving":
             pyautogui.move(0, 0)  # Stop cursor
@@ -99,13 +100,13 @@ class Mouse:
                 self.drag_start = self.stop_pos
                 pyautogui.mouseDown(*self.drag_start) 
             elif self.drag_start is None:
-                hand_x = np.clip(int(self.hand_pos_x*WIDTH), 0, WIDTH-1)
-                hand_y = np.clip(int(self.hand_pos_y*HEIGHT), 0, HEIGHT-1)
+                hand_x = np.clip(int(self.hand_pos_x*WIDTH), VISUALIZATION_MARGIN, WIDTH-VISUALIZATION_MARGIN)
+                hand_y = np.clip(int(self.hand_pos_y*HEIGHT), VISUALIZATION_MARGIN, HEIGHT-VISUALIZATION_MARGIN)
                 self.drag_start = [hand_x, hand_y]
                 pyautogui.mouseDown(*self.drag_start) 
  
-            hand_x = np.clip(int(self.hand_pos_x*WIDTH), 0, WIDTH-1)
-            hand_y = np.clip(int(self.hand_pos_y*HEIGHT), 0, HEIGHT-1)
+            hand_x = np.clip(int(self.hand_pos_x*WIDTH), VISUALIZATION_MARGIN, WIDTH-VISUALIZATION_MARGIN)
+            hand_y = np.clip(int(self.hand_pos_y*HEIGHT), VISUALIZATION_MARGIN, HEIGHT-VISUALIZATION_MARGIN)
             pyautogui.moveTo(hand_x, hand_y)
         elif prediction == "drop":
             pyautogui.mouseUp()
@@ -127,9 +128,19 @@ class Mouse:
     
     def resize_coordinates(self):
         max_x = 1 - 2 * DETECTION_SIDE_MARGIN 
-        self.hand_pos_x = (self.hand_pos_x-DETECTION_SIDE_MARGIN) / (max_x - DETECTION_SIDE_MARGIN) #* DEFAULT_HAND_SIZE/self.hand_size
-        self.hand_pos_y = (self.hand_pos_y-DETECTION_SIDE_MARGIN) / (DETECTION_BOTTOM_MARGIN - DETECTION_SIDE_MARGIN) #* DEFAULT_HAND_SIZE/self.hand_size
-
+        calculated_bottom_margin = (-0.7)*self.hand_size + 1
+        #default_bottom_margin = -0.7*DEFAULT_HAND_SIZE + 1
+        if self.hand_size > DEFAULT_HAND_SIZE:                          # close
+            #speed = default_bottom_margin / calculated_bottom_margin
+            speed = 2*(self.hand_size-DEFAULT_HAND_SIZE)**2 + 1
+        else:                                                           # far away
+            #speed = calculated_bottom_margin / default_bottom_margin
+            speed = 7*(self.hand_size-DEFAULT_HAND_SIZE)**2 + 1
+
+        self.hand_pos_x = (self.hand_pos_x-DETECTION_SIDE_MARGIN) / (max_x - DETECTION_SIDE_MARGIN) * speed
+        self.hand_pos_y = (self.hand_pos_y-DETECTION_SIDE_MARGIN) / (calculated_bottom_margin - DETECTION_SIDE_MARGIN) * speed
+
+        #print(f"DETECTION_BOTTOM_MARGIN: {calculated_bottom_margin} DEFAULT_BOTTOM_MARGIN: {default_bottom_margin} \n SPEED: {speed} \n")
     def get_hand_size(self, middle_tip_coord, palm_coord):
         self.hand_size = palm_coord[1] - middle_tip_coord[1]
 
diff --git a/final_project/parameters.py b/final_project/parameters.py
index 7e8af1567984ddae703c7b3b109d04a330cb25c7..8449e8ab3a4d34ad25fd12728d312683dc003ce3 100644
--- a/final_project/parameters.py
+++ b/final_project/parameters.py
@@ -1,4 +1,4 @@
-
+#MODEL NAMES
 MOUSE_MODEL_NAME = 'mouse_v2.p'
 KEYBOARD_MODEL_NAME = ""
 
@@ -10,6 +10,9 @@ CAMERA_MARGIN_BOTTON = 70
 
 # DETECTION WINDOW
 DETECTION_SIDE_MARGIN = 0.06
-DETECTION_BOTTOM_MARGIN = 0.6
+#DETECTION_BOTTOM_MARGIN = 0.6 #not used
 
 DEFAULT_HAND_SIZE = 0.5
+
+#VISUALIZATION WINDOW
+VISUALIZATION_MARGIN = 10