diff --git a/VERSION b/VERSION
index 03b4352..d75a59c 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.7.19
+0.7.20
diff --git a/edge-monitoring-server/edge_maintenance_agent.py b/edge-monitoring-server/edge_maintenance_agent.py
index 52eee93..082f75f 100755
--- a/edge-monitoring-server/edge_maintenance_agent.py
+++ b/edge-monitoring-server/edge_maintenance_agent.py
@@ -12,15 +12,20 @@
 import os
 import json
 import time
+import base64
+import logging
 import threading
 import urllib.request
 from flask import Flask, Response
 import prometheus_client as prom
 
 # URL of the Edge Monitoring Server where this edge's status can be fetched
-# I.e., put /<edge-name> at the end of the URL
 AETHER_EDGE_STATUS_URL = os.environ.get("AETHER_EDGE_STATUS_URL")
 
+# For basic auth
+AETHER_USERNAME = os.environ.get("AETHER_USERNAME")
+AETHER_PASSWORD = os.environ.get("AETHER_PASSWORD")
+
 # Seconds to sleep at end of loop
 SLEEP_INTERVAL = 60
 
@@ -30,18 +35,21 @@
 def pull_maintenance_events():
     while True:
         # Pull latest status 
-        print ("[INFO] Pulling edge status from %s" % AETHER_EDGE_STATUS_URL)
+        app.logger.info("Pulling edge status from %s" % (AETHER_EDGE_STATUS_URL))
         try:
-            response = urllib.request.urlopen(AETHER_EDGE_STATUS_URL)
+            request = urllib.request.Request(AETHER_EDGE_STATUS_URL)
+            base64string = base64.b64encode(bytes('%s:%s' % (AETHER_USERNAME, AETHER_PASSWORD),'ascii'))
+            request.add_header("Authorization", "Basic %s" % base64string.decode('utf-8'))
+            response = urllib.request.urlopen(request)
             data = json.load(response)
-            # print (" * Got: ", data)
+            app.logger.debug(" Response: %s" % data)
 
             # Export metric to Prometheus
             in_window = data['edge']['maintenance']['in_window']
-            print ("[INFO] In maintenance window: %s" % in_window)
+            app.logger.info("In maintenance window: %s" % in_window)
             maint_window.set(int(in_window))
-        except:
-            print("[WARN] Could not retrieve edge status, will keep trying")
+        except Exception as e:
+            app.logger.warning("Could not retrieve edge status, will keep trying (%s)" % e)
             pass
 
         time.sleep(SLEEP_INTERVAL)
@@ -57,11 +65,12 @@
     return {'message': 'healthy'}
 
 if __name__ == '__main__':
+    app.logger.setLevel(logging.INFO)
     if not (AETHER_EDGE_STATUS_URL):
-        print("[ERROR] AETHER_EDGE_STATUS_URL must be present in the local environment")
+        app.logger.error("AETHER_EDGE_STATUS_URL must be present in the local environment")
         exit(1)
-    print(" * Starting maintenance window polling thread")
-    print(" *   AETHER_EDGE_STATUS_URL: %s" % AETHER_EDGE_STATUS_URL)
+    app.logger.info("Starting maintenance window polling thread")
+    app.logger.info("[AETHER_EDGE_STATUS_URL: %s" % AETHER_EDGE_STATUS_URL)
     t = threading.Thread(target=pull_maintenance_events)
     t.start()
-    app.run(debug=True, host='0.0.0.0', port=8080)
+    app.run(debug=True, host='0.0.0.0', port=8080, use_reloader=False)
