diff --git a/server/__pycache__/data_structs.cpython-311.pyc b/server/__pycache__/data_structs.cpython-311.pyc
index 397569683b62a9073b0e3b720effd2f1eaba34ab..133d8fe1d896175c75442992de70415e7e6bd522 100644
Binary files a/server/__pycache__/data_structs.cpython-311.pyc and b/server/__pycache__/data_structs.cpython-311.pyc differ
diff --git a/server/main.py b/server/main.py
index 6821170123cc7ab68ae6cfcc01acd9df8680eddd..1fc670f98fd1896be354e23c80ffbdbe339aa14b 100644
--- a/server/main.py
+++ b/server/main.py
@@ -6,9 +6,12 @@ from consts import DB_NAME, COLLECTION, MONGO_URI, MONGO_CERT_PATH, SSL_CERT_PAT
 from map.get_markers import get_markers
 import atexit
 import ssl
+import keyboard
 
 app = Flask(__name__)
+terminate_server = 0
 
+"""
 # Initialise MongoDB connection
 try:
     client = MongoClient(MONGO_URI,
@@ -21,7 +24,8 @@ try:
     print("Connected to MongoDB")
 except Exception as e:
     print(f"Failed to connect to MongoDB: {e}")
-
+"""
+    
 # Define HTTP class
 class IceHTTP(BaseHTTPRequestHandler):
     def do_GET(self):
@@ -29,25 +33,30 @@ class IceHTTP(BaseHTTPRequestHandler):
             self.send_response(200)
             self.send_header("Content-type", "text/plain")
             self.end_headers()
+
             self.wfile.write(b"Root path hit!")
         elif self.path == '/update_map':
+            # Fetch marker data
             markers_data, resp_code = get_markers()
 
+            # Set headers
             self.send_response(resp_code)
             self.send_header("Content-type", "application/json")
             self.end_headers()
 
-            # Write the JSON data directly to the response
-            self.wfile.write(markers_data.encode('utf-8'))
+            # Write the JSON data to response object
+            self.wfile.write(markers_data)
 
-        elif self.path == '/test_endpoint':
-            self.send_response(200)
-            self.send_header("Content-type", "text/plain")
-            self.end_headers()
-            self.wfile.write(b"Test path hit!")
+# Listen for pressing of q key to terminate server
+def on_key_press(server, event):
+    if event.name == 'q':
+        print('Terminating server...')
+        server.server_close()
+        keyboard.unhook_all()
+        quit()
 
 
-# Start a server on port 8443 using defined HTTP class
+# Start a server on port 8443 using self defined HTTP class
 if __name__ == "__main__":
     print("Starting server on port ", PORT)
     try:
@@ -60,14 +69,11 @@ if __name__ == "__main__":
         server.socket = ssl_context.wrap_socket(server.socket, server_side=True)
 
         print("Server running on port ", PORT)
-        server.serve_forever()
-    except Exception as e:
-        print(f"Failed to start server on port {PORT}: {e}")
 
+        # Register key press event handler
+        keyboard.on_press(lambda event: on_key_press(server, event))
 
-def on_termination():
-    print("Server is terminating.")
+        server.serve_forever()
 
-# Register the function to be called on exit
-atexit.register(on_termination)
-       
\ No newline at end of file
+    except Exception as e:
+        print(f"Failed to start server on port {PORT}: {e}")
diff --git a/server/map/__pycache__/get_markers.cpython-311.pyc b/server/map/__pycache__/get_markers.cpython-311.pyc
index 15e055720f597867380f0eb67732a0402d57b8eb..43698edae3b8e474e9db41d43ba5065054d66146 100644
Binary files a/server/map/__pycache__/get_markers.cpython-311.pyc and b/server/map/__pycache__/get_markers.cpython-311.pyc differ
diff --git a/server/map/get_markers.py b/server/map/get_markers.py
index 06a95e2092447ab806311837e7d1b44c5598ef45..fa7524e34fea6b65ad6a6d6fe604924a0799c52a 100644
--- a/server/map/get_markers.py
+++ b/server/map/get_markers.py
@@ -28,6 +28,7 @@ def get_markers():
             MarkerTemplate(measurement3, 20.0-measurement3.accuracy, "Yellow"),
         ]
         
+        # NB: return test data as JSON
         return json.dumps([marker.to_dict() for marker in testData]), 200
     
     except Exception as e: