diff --git a/person_detection/app.py b/person_detection/app.py
index 0ed28eb..2ef9b87 100644
--- a/person_detection/app.py
+++ b/person_detection/app.py
@@ -3,8 +3,6 @@
 SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
 SPDX-License-Identifier: LicenseRef-ONF-Member-1.01
 """
-from importlib import import_module
-import os
 import logging as log
 import sys
 import flask
@@ -24,6 +22,7 @@
     log.info("{} - connected".format(flask.request.remote_addr))
     return flask.render_template('index.html', devices=config.cameras)
 
+
 def gen(camera):
     """Video streaming generator function."""
     while True:
@@ -31,6 +30,7 @@
         yield (b'--frame\r\n'
                b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
 
+
 @app.route('/video_feed/<device>')
 def video_feed(device):
     """Video streaming route. Put this in the src attribute of an img tag."""
@@ -38,11 +38,13 @@
     log.debug("{} - video feed {}".format(flask.request.remote_addr, device))
     camera = Camera(device, flask.request.remote_addr, args)
     return flask.Response(gen(camera),
-                    mimetype='multipart/x-mixed-replace; boundary=frame')
+                          mimetype='multipart/x-mixed-replace; boundary=frame')
+
 
 def name_to_port(name):
     return int(name)
 
+
 def build_argparser():
     parser = ArgumentParser(add_help=False)
     args = parser.add_argument_group('Options')
@@ -75,17 +77,17 @@
             help = "ROC password",
             type = str)
     args.add_argument("--mbrlow",
-            help = "Low range of MBR",
-            default = 7000000,
-            type = int)
+                      help="Low range of MBR",
+                      default=7000000,
+                      type=int)
     args.add_argument("--mbrhigh",
-            help = "High range of MBR",
-            default = 10000000,
-            type = int)
+                      help="High range of MBR",
+                      default=10000000,
+                      type=int)
     args.add_argument("--devicegroup",
-            help = "Camera device group",
-            default = "menlo-4g-cameras",
-            type = str)
+                      help="Camera device group",
+                      default="menlo-4g-cameras",
+                      type=str)
 
     return parser
 
@@ -104,7 +106,7 @@
         key = args.key
         if key is None:
             if args.user is not None and args.password is not None:
-                roc = Roc(args.user, args.password)
+                roc = Roc(config.url, args.user, args.password, config.enterprise, config.site)
                 key = roc.get_key()
             else:
                 log.error("Either key or user/password required")
diff --git a/person_detection/base_camera.py b/person_detection/base_camera.py
index 53525ab..e2e85b6 100644
--- a/person_detection/base_camera.py
+++ b/person_detection/base_camera.py
@@ -1,12 +1,8 @@
 import paho.mqtt.client as mqtt
 import time
-import os
-import sys
 import threading
 import logging as log
-from multiprocessing import Process, Queue, Value, Array, Lock
-import threading
-from collections import defaultdict
+from multiprocessing import Process, Queue, Value, Lock
 
 from roc import Roc
 import config
@@ -79,8 +75,8 @@
         self.mbrhigh = mbrhigh
         self.devicegroup = devicegroup
         self.noroc = noroc
-        self.roc = Roc(user, password)
 
+        self.roc = Roc(config.url, user, password, config.enterprise, config.site)
 
         """Start the background camera process if it isn't running yet."""
         if BaseCamera.cameras[int(self.device)] == 0:
@@ -115,14 +111,12 @@
             BaseCamera.event[self.device].set()  # send signal to clients
             time.sleep(0)
 
-
     def _process(self):
         """Camera background process."""
         frames_iterator = self.frames()
         for frame in frames_iterator:
             BaseCamera.deviceQ[self.device].put(frame, block=True)
 
-
     def person_detected(self, num):
         self.last_detected = time.time()
         if not self.detected:
@@ -139,7 +133,7 @@
         self.detected = False
         self.timer = None
         BaseCamera.lock.acquire()
-        BaseCamera.activity_counter.value -=1
+        BaseCamera.activity_counter.value -= 1
         if BaseCamera.activity_counter.value <= 0:
             BaseCamera.activity_counter.value = 0
             self.set_resolution_low()
@@ -147,30 +141,25 @@
                 self.roc.set_mbr(self.devicegroup, self.mbrlow)
         BaseCamera.lock.release()
 
-
     def start_timer(self):
         # log.info("Start timer for device {}".format(device))
         self.timer = threading.Timer(10.0, self.timer_expiry)
         self.timer.start()
 
-
     def set_resolution_high(self):
         for device in range(0, len(config.cameras)):
             self.set_resolution(str(device), "high")
 
-
     def set_resolution_low(self):
         for device in range(0, len(config.cameras)):
             self.set_resolution(str(device), "low")
 
-
     def set_resolution(self, device, level):
         log.info("Setting camera {} resolution to {}".format(device, level))
         client = mqtt.Client()
         client.connect(self.mqttBroker)
         client.publish("camera/" + str(5000 + int(device)), level)
 
-
     def timer_expiry(self):
         now = time.time()
         diff = now - self.last_detected
diff --git a/person_detection/config.py b/person_detection/config.py
index ab510fa..72450c6 100644
--- a/person_detection/config.py
+++ b/person_detection/config.py
@@ -3,4 +3,7 @@
 SPDX-License-Identifier: LicenseRef-ONF-Member-1.01
 """
 
-cameras = {"0": "Ain's desk", "1":"HungWei's desk", "2":"Shad's desk"}
+cameras = {"0": "Ain's desk", "1": "HungWei's desk", "2": "Shad's desk"}
+url = "https://roc.menlo.aetherproject.org/aether-roc-api/aether/v2.0.0/connectivity-service-v2/"
+enterprise = 'aether-onf'
+site = 'menlo-4g'
