diff --git a/AirCanvas/main.py b/AirCanvas/main.py
index 5977f9ef..59f2878c 100644
--- a/AirCanvas/main.py
+++ b/AirCanvas/main.py
@@ -2,18 +2,9 @@
 import cv2
 from collections import deque
 
-
-
-# default called trackbar function
 def setValues():
-    print(" ")
-
+    pass
 
-# Creating the trackbars needed for
-# adjusting the marker colour These
-# trackbars will be used for setting
-# the upper and lower ranges of the
-# HSV required for particular colour
 cv2.namedWindow("Color detectors")
 cv2.createTrackbar("Upper Hue", "Color detectors", 153, 180, setValues)
 cv2.createTrackbar("Upper Saturation", "Color detectors", 255, 255, setValues)
@@ -22,186 +13,103 @@ def setValues():
 cv2.createTrackbar("Lower Saturation", "Color detectors", 72, 255, setValues)
 cv2.createTrackbar("Lower Value", "Color detectors", 49, 255, setValues)
 
-# Giving different arrays to handle colour
-# points of different colour These arrays
-# will hold the points of a particular colour
-# in the array which will further be used
-# to draw on canvas
 bpoints = [deque(maxlen=1024)]
 gpoints = [deque(maxlen=1024)]
 rpoints = [deque(maxlen=1024)]
 ypoints = [deque(maxlen=1024)]
 
-# These indexes will be used to mark position
-# of pointers in colour array
-blue_index = 0
-green_index = 0
-red_index = 0
-yellow_index = 0
-
-# The kernel to be used for dilation purpose
-kernel = np.ones((5, 5), np.uint16)
-
-# The colours which will be used as ink for
-# the drawing purpose
-colors = [(255, 0, 0), (0, 255, 0),(0, 0, 255), (0, 255, 255)]
+blue_index = green_index = red_index = yellow_index = 0
+kernel = np.ones((5, 5), np.uint8)
+colors = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (0, 255, 255)]
 colorIndex = 0
 
-# Here is code for Canvas setup
 paintWindow = np.zeros((471, 636, 3)) + 255
-paintWindow = cv2.rectangle(paintWindow, (40,1), (140,65), (0,0,0), 2)
-paintWindow = cv2.rectangle(paintWindow, (160,1), (255,65), colors[0], -1)
-paintWindow = cv2.rectangle(paintWindow, (275,1), (370,65), colors[1], -1)
-paintWindow = cv2.rectangle(paintWindow, (390,1), (485,65), colors[2], -1)
-paintWindow = cv2.rectangle(paintWindow, (505,1), (600,65), colors[3], -1)
+paintWindow = cv2.rectangle(paintWindow, (40, 1), (140, 65), (0, 0, 0), 2)
+for i, color in enumerate(colors):
+    paintWindow = cv2.rectangle(paintWindow, (160 + 115 * i, 1), (255 + 115 * i, 65), color, -1)
 
 cv2.putText(paintWindow, "CLEAR", (49, 33), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0), 2, cv2.LINE_AA)
-cv2.putText(paintWindow, "BLUE", (185, 33), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2, cv2.LINE_AA)
-cv2.putText(paintWindow, "GREEN", (298, 33), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2, cv2.LINE_AA)
-cv2.putText(paintWindow, "RED", (420, 33), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2, cv2.LINE_AA)
-cv2.putText(paintWindow, "YELLOW", (520, 33), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (150,150,150), 2, cv2.LINE_AA)
-cv2.namedWindow('Paint', cv2.WINDOW_AUTOSIZE)
+for i, text in enumerate(["BLUE", "GREEN", "RED", "YELLOW"]):
+    cv2.putText(paintWindow, text, (185 + 115 * i, 33), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2, cv2.LINE_AA)
 
-# Loading the default webcam of PC.
+cv2.namedWindow('Paint', cv2.WINDOW_AUTOSIZE)
 cap = cv2.VideoCapture(0)
 
-# Keep looping
 while True:
-
-    # Reading the frame from the camera
     ret, frame = cap.read()
-
-    # Flipping the frame to see same side of yours
     frame = cv2.flip(frame, 1)
     hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
 
-    # Getting the updated positions of the trackbar
-    # and setting the HSV values
-    u_hue = cv2.getTrackbarPos("Upper Hue","Color detectors")
-    u_saturation = cv2.getTrackbarPos("Upper Saturation","Color detectors")
-    u_value = cv2.getTrackbarPos("Upper Value","Color detectors")
-    l_hue = cv2.getTrackbarPos("Lower Hue","Color detectors")
-    l_saturation = cv2.getTrackbarPos("Lower Saturation","Color detectors")
-    l_value = cv2.getTrackbarPos("Lower Value","Color detectors")
+    u_hue = cv2.getTrackbarPos("Upper Hue", "Color detectors")
+    u_saturation = cv2.getTrackbarPos("Upper Saturation", "Color detectors")
+    u_value = cv2.getTrackbarPos("Upper Value", "Color detectors")
+    l_hue = cv2.getTrackbarPos("Lower Hue", "Color detectors")
+    l_saturation = cv2.getTrackbarPos("Lower Saturation", "Color detectors")
+    l_value = cv2.getTrackbarPos("Lower Value", "Color detectors")
     Upper_hsv = np.array([u_hue, u_saturation, u_value])
     Lower_hsv = np.array([l_hue, l_saturation, l_value])
 
-    # Adding the colour buttons to the live frame
-    # for colour access
-    frame = cv2.rectangle(frame, (40, 1), (140, 65),(122, 122, 122), -1)
-    frame = cv2.rectangle(frame, (160, 1), (255, 65),colors[0], -1)
-    frame = cv2.rectangle(frame, (275, 1), (370, 65),colors[1], -1)
-    frame = cv2.rectangle(frame, (390, 1), (485, 65),colors[2], -1)
-    frame = cv2.rectangle(frame, (505, 1), (600, 65),colors[3], -1)
-
-    cv2.putText(frame, "CLEAR ALL", (49, 33),cv2.FONT_HERSHEY_SIMPLEX, 0.5,(255, 255, 255), 2, cv2.LINE_AA)
-
-    cv2.putText(frame, "BLUE", (185, 33),cv2.FONT_HERSHEY_SIMPLEX, 0.5,(255, 255, 255), 2, cv2.LINE_AA)
-
-    cv2.putText(frame, "GREEN", (298, 33),cv2.FONT_HERSHEY_SIMPLEX, 0.5,(255, 255, 255), 2, cv2.LINE_AA)
+    frame = cv2.rectangle(frame, (40, 1), (140, 65), (122, 122, 122), -1)
+    for i, color in enumerate(colors):
+        frame = cv2.rectangle(frame, (160 + 115 * i, 1), (255 + 115 * i, 65), color, -1)
 
-    cv2.putText(frame, "RED", (420, 33),cv2.FONT_HERSHEY_SIMPLEX, 0.5,(255, 255, 255), 2, cv2.LINE_AA)
+    cv2.putText(frame, "CLEAR ALL", (49, 33), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2, cv2.LINE_AA)
+    for i, text in enumerate(["BLUE", "GREEN", "RED", "YELLOW"]):
+        cv2.putText(frame, text, (185 + 115 * i, 33), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2, cv2.LINE_AA)
 
-    cv2.putText(frame, "YELLOW", (520, 33),cv2.FONT_HERSHEY_SIMPLEX, 0.5,(150, 150, 150), 2, cv2.LINE_AA)
-
-    # Identifying the pointer by making its
-    # mask
     Mask = cv2.inRange(hsv, Lower_hsv, Upper_hsv)
     Mask = cv2.erode(Mask, kernel, iterations=1)
     Mask = cv2.morphologyEx(Mask, cv2.MORPH_OPEN, kernel)
     Mask = cv2.dilate(Mask, kernel, iterations=1)
 
-    # Find contours for the pointer after
-    # identifying it
-    _,cnts,_ = cv2.findContours(Mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
+    cnts, _ = cv2.findContours(Mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
     center = None
 
-    # If the contours are formed
     if len(cnts) > 0:
-        # sorting the contours to find biggest
         cnt = sorted(cnts, key=cv2.contourArea, reverse=True)[0]
-
-        # Get the radius of the enclosing circle
-        # around the found contour
-        ((x, y), radius) = cv2.minEnclosingCircle(cnt)
-
-        # Draw the circle around the contour
+        (x, y), radius = cv2.minEnclosingCircle(cnt)
         cv2.circle(frame, (int(x), int(y)), int(radius), (0, 255, 255), 2)
-
-        # Calculating the center of the detected contour
         M = cv2.moments(cnt)
         center = (int(M['m10'] / M['m00']), int(M['m01'] / M['m00']))
 
-        # Now checking if the user wants to click on
-        # any button above the screen
         if center[1] <= 65:
-
-            # Clear Button
             if 40 <= center[0] <= 140:
                 bpoints = [deque(maxlen=512)]
                 gpoints = [deque(maxlen=512)]
                 rpoints = [deque(maxlen=512)]
                 ypoints = [deque(maxlen=512)]
-
-                blue_index = 0
-                green_index = 0
-                red_index = 0
-                yellow_index = 0
-
+                blue_index = green_index = red_index = yellow_index = 0
                 paintWindow[67:, :, :] = 255
             elif 160 <= center[0] <= 255:
-                colorIndex = 0  # Blue
+                colorIndex = 0
             elif 275 <= center[0] <= 370:
-                colorIndex = 1  # Green
+                colorIndex = 1
             elif 390 <= center[0] <= 485:
-                colorIndex = 2  # Red
+                colorIndex = 2
             elif 505 <= center[0] <= 600:
-                colorIndex = 3  # Yellow
+                colorIndex = 3
         else:
-            if colorIndex == 0:
-                bpoints[blue_index].appendleft(center)
-            elif colorIndex == 1:
-                gpoints[green_index].appendleft(center)
-            elif colorIndex == 2:
-                rpoints[red_index].appendleft(center)
-            elif colorIndex == 3:
-                ypoints[yellow_index].appendleft(center)
-
-    # Append the next deques when nothing is
-    # detected to avoid messing up
+            [bpoints, gpoints, rpoints, ypoints][colorIndex][[blue_index, green_index, red_index, yellow_index][colorIndex]].appendleft(center)
     else:
-        bpoints.append(deque(maxlen=512))
+        for points in [bpoints, gpoints, rpoints, ypoints]:
+            points.append(deque(maxlen=512))
         blue_index += 1
-        gpoints.append(deque(maxlen=512))
         green_index += 1
-        rpoints.append(deque(maxlen=512))
         red_index += 1
-        ypoints.append(deque(maxlen=512))
         yellow_index += 1
 
-    # Draw lines of all the colors on the
-    # canvas and frame
-    points = [bpoints, gpoints, rpoints, ypoints]
-    for i in range(len(points)):
-
-        for j in range(len(points[i])):
-
-            for k in range(1, len(points[i][j])):
+    for i, color in enumerate(colors):
+        for j in range(len([bpoints, gpoints, rpoints, ypoints][i])):
+            for k in range(1, len([bpoints, gpoints, rpoints, ypoints][i][j])):
+                if [bpoints, gpoints, rpoints, ypoints][i][j][k - 1] and [bpoints, gpoints, rpoints, ypoints][i][j][k]:
+                    cv2.line(frame, [bpoints, gpoints, rpoints, ypoints][i][j][k - 1], [bpoints, gpoints, rpoints, ypoints][i][j][k], color, 2)
+                    cv2.line(paintWindow, [bpoints, gpoints, rpoints, ypoints][i][j][k - 1], [bpoints, gpoints, rpoints, ypoints][i][j][k], color, 2)
 
-                if points[i][j][k - 1] is None or points[i][j][k] is None:
-                    continue
-
-                cv2.line(frame, points[i][j][k - 1], points[i][j][k], colors[i], 2)
-                cv2.line(paintWindow, points[i][j][k - 1], points[i][j][k], colors[i], 2)
-
-    # Show all the windows
     cv2.imshow("Tracking", frame)
     cv2.imshow("Paint", paintWindow)
 
     if cv2.waitKey(4) & 0xFF == ord("q"):
         break
 
-# Release the camera and all resources
 cap.release()
 cv2.destroyAllWindows()
-