diff --git a/server/__pycache__/consts.cpython-311.pyc b/server/__pycache__/consts.cpython-311.pyc
index 9ff52d124944e7e6b5fd6348a75357356a3572d9..2ca87ef4877dfd3535f7985003fbc9593d344e4c 100644
Binary files a/server/__pycache__/consts.cpython-311.pyc and b/server/__pycache__/consts.cpython-311.pyc differ
diff --git a/server/consts.py b/server/consts.py
index 368377575548ab79ed9c639cb2071523ddff0cb2..295463e89cc15ecc1d0ae51330ff0b7bd6ae44a6 100644
--- a/server/consts.py
+++ b/server/consts.py
@@ -6,7 +6,8 @@ PORT = 8443
 
 # Database paths
 DB_NAME = 'IceMapDB'
-COLLECTION = 'IceData'
+#COLLECTION = 'IceData'
+COLLECTION = 'TestCollection' # NB: temporary collection
 MONGO_URI = "mongodb+srv://icemapcluster.i02epob.mongodb.net/?authSource=%24external&authMechanism=MONGODB-X509&retryWrites=true&w=majority"
 
 # Certificate paths
diff --git a/server/database/add_to_db.py b/server/database/add_to_db.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/server/main.py b/server/main.py
index 6074e4021613f227c582b959ad30f48d6ccc49bb..408d33145d28f879755f9cff2f37ae33a1ff48c8 100644
--- a/server/main.py
+++ b/server/main.py
@@ -8,6 +8,7 @@ from data_structs import Measurement, MarkerTemplate, DateAndTime, Sensor
 import ssl
 import keyboard
 from flask import json
+from bson import json_util
 
 app = Flask(__name__)
 terminate_server = 0
@@ -28,10 +29,28 @@ def initDatabase():
     except Exception as e:
         print(f"Failed to connect to MongoDB: {e}")
 
+
+class IceHTTPServer(HTTPServer):
+    def __init__(self, server_address, handler_class, client):
+        super().__init__(server_address, handler_class)
+        self.client = client
+
+    def get_request(self):
+        request, client_address = super().get_request()
+        return request, client_address
+
     
-# Define HTTP class
+# Define custom HTTP class
 class IceHTTP(BaseHTTPRequestHandler):
+    def __init__(self, request, client_address, server):
+        self.client = server.client
+        super().__init__(request, client_address, server)
+    
     def do_GET(self):
+        db = self.client[DB_NAME] 
+        col = db[COLLECTION] # Set collection pointer
+
+        # Root path
         if self.path == '/':
             self.send_response(200)
             self.send_header("Content-type", "text/plain")
@@ -41,16 +60,35 @@ class IceHTTP(BaseHTTPRequestHandler):
 
         # Update_map endpoint
         elif self.path == '/update_map': # NB: should be POST?
-            # Fetch marker data
-            markers_data, resp_code = get_markers()
+            try:
+                # Fetch marker data
+                marker_cursor = col.find({})
+                marker_data = list(marker_cursor)
+                
+                # Remove ObjectId field from each document
+                for document in marker_data:
+                    document.pop('_id', None)
+
+                if marker_data: # Data found in DB, convert from BSON to JSON
+                    resp_code = 200 
+                    marker_json_list = [json_util.dumps(document) for document in marker_data]
+                    marker_json = "[" + ",".join(marker_json_list) + "]" 
+                else: # Data not found in DB
+                    resp_code = 404 
+                    marker_json = '[]' 
+            except Exception as e:
+                print(f"An error occurred while querying MongoDB: {e}")
+                resp_code = 500
+                marker_data = []
 
             # Set headers
             self.send_response(resp_code)
             self.send_header("Content-type", "application/json")
             self.end_headers()
 
-            # Write the JSON data to response object
-            self.wfile.write(str(markers_data).encode('utf-8'))
+            # Convert marker_data to JSON and write it to the response object
+            marker_json = json.dumps(marker_data)
+            self.wfile.write(marker_json.encode('utf-8'))
 
 # Listen for pressing of q key to terminate server
 def on_key_press(server, event):
@@ -66,42 +104,14 @@ if __name__ == "__main__":
     # Initialise database connection
     client = initDatabase()
 
-    db = client[DB_NAME]
-    testCol = db["TestCollection"]
-
-    # NB: temporary test data
-    sensor1 = Sensor(ID=1, type="Type1", active=True)
-    sensor2 = Sensor(ID=2, type="Type2", active=False)
-
-    datetime1 = DateAndTime(2023, 12, 31, 15, 43)
-    datetime2 = DateAndTime(2024, 1, 15, 12, 2)
-    datetime3 = DateAndTime(2024, 1, 31, 18, 10)
-
-    measurement1 = Measurement(longitude=10.9771, latitude=60.7066, datetime=datetime1, sensor=sensor1, 
-                                   precipitation=0.0, thickness=0.0, max_weight=0.0, safety_level=0.0, accuracy=2.5)
-    measurement2 = Measurement(longitude=10.8171, latitude=60.6366, datetime=datetime2, sensor=sensor2, 
-                                   precipitation=0.0, thickness=0.0, max_weight=0.0, safety_level=0.0, accuracy=1.5)
-    measurement3 = Measurement(longitude=10.8471, latitude=60.7366, datetime=datetime3, sensor=sensor1, 
-                                   precipitation=0.0, thickness=0.0, max_weight=0.0, safety_level=0.0, accuracy=4.0)
-    
-    testData = [
-            MarkerTemplate(measurement1, 30.0-measurement1.accuracy, "Green"),
-            MarkerTemplate(measurement2, 10.0-measurement2.accuracy, "Red"),
-            MarkerTemplate(measurement3, 20.0-measurement3.accuracy, "Yellow"),
-        ]
-    
-    data_to_insert = [marker_template.to_dict() for marker_template in testData]
-
-    for element in data_to_insert:
-        insert_result = testCol.insert_one(element)
-
     try:
         # Load SSL certificate and private key
         ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
         ssl_context.load_cert_chain(SSL_CERT_PATH, SSL_KEY_PATH)
 
         # Create HTTP server with SSL support
-        server = HTTPServer((HOST, PORT), IceHTTP)
+        #server = HTTPServer((HOST, PORT), IceHTTP(client))
+        server = IceHTTPServer((HOST, PORT), IceHTTP, client)
         server.socket = ssl_context.wrap_socket(server.socket, server_side=True)
 
         print("Server running on port ", PORT)
@@ -113,4 +123,4 @@ if __name__ == "__main__":
         server.serve_forever()
 
     except Exception as e:
-        print(f"Failed to start server on port {PORT}: {e}")
+        print(f"Server terminated: {PORT}: {e}")