diff --git a/server/data_processing/area_processing.py b/server/data_processing/area_processing.py
index b88f1c1ccf62aea4e4c9f49163bd62854e8613be..95de76fcbee82192f8a6308c3a32d289a722f996 100644
--- a/server/data_processing/area_processing.py
+++ b/server/data_processing/area_processing.py
@@ -24,28 +24,37 @@ def calculate_corners(lat, lng, area_offset):
         (lat_pos, lng_neg), # bottom right
         (lat_neg, lng_neg)  # bottom left
     ]
-    '''return [(60.7798, 10.7062),  # NB: temporary hardcoded values
-            (60.7553, 10.7433),
-            (60.7718, 10.7975),
-            (60.7966, 10.7405)]'''
-
-def define_gridareas(lat, lng, area_offset, grid_size):
-    return_value = []
+'''return [(60.7798, 10.7062),  # NB: temporary hardcoded values
+    (60.7553, 10.7433),
+    (60.7718, 10.7975),
+    (60.7966, 10.7405)]'''
+
+# separate the zones into smaller area, into a grid
+def define_gridareas(lat, lng, area_offset, grid_size, dimension, subId, groupId):
+    a = dimension + subId + groupId # soon to be implemented
+    print(a)
+    grided_area = [] # container for an area turned into a grid of areas
+
+    # find the main area's corner positions
     main_area = calculate_corners(lat, lng, area_offset)
+    # find the main area's range size
     area_size = (main_area[0][0] - main_area[2][0], main_area[0][1] - main_area[2][1])
+    # find each subareas vector to it's center
     dist_to_subcenter = (area_size[0]/(grid_size*2), area_size[1]/(grid_size*2))
+    # find subareas size relative to main area
     subarea_offset = area_offset/grid_size
-    print(area_size)
-    print(dist_to_subcenter)
+
+    # find the center coordinates of each area in grid to find the corner areas
     for y in range(grid_size-1):
         relative_size_lng = y / grid_size
         for x in range(grid_size-1):
             relative_size_lat = x / grid_size
             lat_pos = main_area[0][0] + relative_size_lat * area_size[0] - dist_to_subcenter[0]
             lng_pos = main_area[0][1] + relative_size_lng * area_size[1] - dist_to_subcenter[1]
-            return_value.append(calculate_corners(lat_pos, lng_pos,subarea_offset))
+            # use the center of sub areas to find the corner of each subarea
+            grided_area.append(calculate_corners(lat_pos, lng_pos,subarea_offset))
 
-    return return_value
+    return grided_area
 
-print(calculate_corners(60,10,1500))
-print(define_gridareas(60,10,1500,4))
\ No newline at end of file
+#print(calculate_corners(60,10,1500))
+#print(define_gridareas(60,10,1500,4))
\ No newline at end of file
diff --git a/server/data_processing/process_lidar_data.py b/server/data_processing/process_lidar_data.py
index 55d31e2aaf7396d67e064a37484883a3a685a07d..a0282be55a54d6a50c0a3b3c6aeaf2d8710924a7 100644
--- a/server/data_processing/process_lidar_data.py
+++ b/server/data_processing/process_lidar_data.py
@@ -1,7 +1,9 @@
 import numpy as np
 import laspy
 from itertools import groupby
+from process_lidar_data import calculate_corners, define_gridareas
 
+# hard coded files for test data
 lazData_path = ["server/example_lidar_data/ot_N_000005_1.laz", "server/example_lidar_data/ot_N_000033_1.laz"]
 
 # Info about data
@@ -22,6 +24,7 @@ with laspy.open(lazData_path[0]) as fh:
     for r, c in zip(bins, counts):
         print('    {}:{}'.format(r, c))
 
+# check if lidar points is within range of the area selected
 def inArea(position, areaRange):
     x, y, _ = position
     if (areaRange[0][0] < x < areaRange[1][0]) and (areaRange[0][1] > y > areaRange[1][1]):
@@ -29,52 +32,66 @@ def inArea(position, areaRange):
     else:
         return False
 
-# Calculation of height gotten from las files
+# Calculation of height in an area from las files
 def find_height(points):
+    height_differences = [] # final container for height data
+
+    # sort the points
     sorted_coords = sorted(points, key=lambda coord: (coord[0],coord[1]))
 
+    # group the sorted points that has the same xy- coordinates together
     groupCoords = [list(group) for key, group in groupby(sorted_coords, key=lambda coord: (coord[0], coord[1]))]
 
-    height_differences = []
-    groupss = []
-
-    for groups in groupCoords:
-        if len(groups) < 2 or groups[0] == groups[1]:
-            continue
+    # loop through the groups to find the difference in height
+    for group in groupCoords:
+        if len(group) < 2 or group[0] == group[1]:
+            continue # jump over iteration if there is only one coordinate or lidar registered the same point twice
 
-        min_height = min(coords[2] for coords in groups)
-        max_height = max(coords[2] for coords in groups)
+        # find max and min height
+        min_height = min(coords[2] for coords in group)
+        max_height = max(coords[2] for coords in group)
 
+        # difference between them
         difference = max_height - min_height
         height_differences.append(difference)
-        groupss.append(groups)
 
+    # list of thickness in a area
     return height_differences
 
-# areas
-def height_in_area(area):
+# find the height of an area based on the coordinates of it's center
+# and it's affiliations (subId and groupId) (soon to be implemented
+def height_in_area(center):
+    # container for all the heights in area
+    area_heights = []
+
     # Limit the data to specific areas
-    
+
     # this is only temporary data for coordinates in arctic
     # areas = [
     #     [(-3671212, 7898422), (-3200175, 4699978)],
     #     [(60.815356, 10.672022), (60.774878, 10.768867)],
     # ]
 
-    # NB: is only for the test data should be removed after
+    # specified the area and it's range
+    area = calculate_corners(center, 1500)
+    area = (area[0], area[2])
+    # NB: is only for the test data (soon to be removed)
     areazone = [(((area[0]) * ((-3671212/60.815356) - (-3200175/60.774878))) - 3200175, (area[1] * ((7898422/10.768867) - (4699978/10.672022))) + 4699978),
                 (((area[0] - 100) * ((-3671212/60.815356) - (-3200175/60.774878))) - 3200175, ((area[1] - 1) * ((7898422/10.768867) - (4699978/10.672022))) + 4699978)]
 
-    # Refactor data format
+    # Refactor lidar data to a readable format
     iceOver = laspy.read(lazData_path[0])
     iceUnder = laspy.read(lazData_path[1])
 
+    # add two files together temporary test data(soon to be removed)
     ice_points = list(zip(iceOver.X,iceOver.Y,iceOver.Z)) + list(zip(iceUnder.X,iceUnder.Y,iceUnder.Z))
 
-    area_heights = []
-
-    ice_points = list(filter(lambda position: inArea(position, areazone), ice_points))
+    # area height in all the subsections
+    grid_area_heights = define_gridareas(areazone, 1500, 20)
 
-    area_heights = find_height(ice_points)
+    # find the heights of each sub-area => area-heights
+    for sub_area in grid_area_heights:
+        ice_points = list(filter(lambda point_position: inArea(point_position, (sub_area[0],sub_area[2])), ice_points))
+        area_heights.append(find_height(ice_points))
 
     return area_heights
diff --git a/server/map/input_new_data.py b/server/map/input_new_data.py
index b032150f3f3dc5db87bcf16d1aaca995503680c3..c5e2e25cb2f0c9e0c8cf00c13825b055b35a08fd 100644
--- a/server/map/input_new_data.py
+++ b/server/map/input_new_data.py
@@ -2,9 +2,11 @@ import json
 from datetime import datetime
 from server.data_processing.process_lidar_data import height_in_area
 
+# input_new_Lidar_data send new data gathered from the lidar and send it to the database (from the drone, most likely)
 def input_new_Lidar_data(self, cursor, sensorId, bodyOfWater):
     try:
-
+        # create a new measurement with the time the data is sent, sensor type, where
+        # and an estimate of average thickness of ice on water body
         cursor.execute('''
             INSERT INTO Measurement(  SensorID, TimeMeasured, WaterBodyName, WholeAverageThickness) VALUES 
                 (?,?,?,?);
@@ -13,12 +15,14 @@ def input_new_Lidar_data(self, cursor, sensorId, bodyOfWater):
         # auto generate new measurement id
         measurement_id = cursor.lastrowid
 
+        # input the newly generated measurement_id and ... average thickness (soon to be implemented)
         cursor.execute('''
             UPDATE Measurement
             SET measurementID = ?
             WHERE MeasurementID IS NULL;
         ''', (int(measurement_id),))
 
+        # soon to be removed
         cursor.execute('''
             SELECT CenterLatitude, CenterLongitude, SubDivisionID, GroupID
             FROM SubDivision
@@ -26,6 +30,7 @@ def input_new_Lidar_data(self, cursor, sensorId, bodyOfWater):
         ''')
         position_data = cursor.fetchall()
 
+        # soon to be removed
         if(position_data):
             for row in position_data:
                 latitude, longitude, subID, groupID = row
@@ -42,10 +47,12 @@ def input_new_Lidar_data(self, cursor, sensorId, bodyOfWater):
         else:
             print('No data')
 
+        # send the changes to the database
         cursor.connection.commit()
 
         print("suc_ceed")
 
+    # error handling
     except Exception as e:
         print("An error occurred", e)
         # rollback in case of error