diff --git a/main.py b/main.py
index 8187d25..6e87324 100755
--- a/main.py
+++ b/main.py
@@ -45,9 +45,9 @@
     rest_port=os.environ.get('REST_PORT', 8881),
     work_dir=os.environ.get('WORK_DIR', '/tmp/chameleon'),
     swagger_url=os.environ.get('SWAGGER_URL', ''),
-    enable_tls=os.environ.get('ENABLE_TLS',"True"),
-    key=os.environ.get('KEY','/chameleon/pki/voltha.key'),
-    cert=os.environ.get('CERT','/chameleon/pki/voltha.crt'),
+    enable_tls=os.environ.get('ENABLE_TLS', "True"),
+    key=os.environ.get('KEY', '/chameleon/pki/voltha.key'),
+    cert=os.environ.get('CERT', '/chameleon/pki/voltha.crt'),
 )
 
 
@@ -217,9 +217,10 @@
         path = os.path.join(dir, path)
     path = os.path.abspath(path)
     with open(path) as fd:
-        config = yaml.load(fd)
+        config = yaml.safe_load(fd)
     return config
 
+
 banner = r'''
    ____   _                                  _
   / ___| | |__     __ _   _ __ ___     ___  | |   ___    ___    _ __
@@ -229,6 +230,7 @@
 
 '''
 
+
 def print_banner(log):
     for line in banner.strip('\n').splitlines():
         log.info(line)
@@ -271,8 +273,8 @@
             if args.enable_tls == "False":
                 self.log.info('tls-disabled-through-configuration')
                 self.rest_server = yield \
-                    WebServer(args.rest_port, args.work_dir, args.swagger_url,\
-                    self.grpc_client).start()
+                    WebServer(args.rest_port, args.work_dir, args.swagger_url,
+                              self.grpc_client).start()
             else:
                 # If TLS is enabled, but the server key or cert is not found,
                 # then automatically disable TLS
@@ -284,21 +286,21 @@
                         self.log.error('cert-not-found')
                     self.log.info('disabling-tls-due-to-missing-pki-files')
                     self.rest_server = yield \
-                                        WebServer(args.rest_port, args.work_dir,\
-                                        args.swagger_url,\
-                                        self.grpc_client).start()
+                        WebServer(args.rest_port, args.work_dir,
+                                  args.swagger_url,
+                                  self.grpc_client).start()
                 else:
                     self.log.info('tls-enabled')
                     self.rest_server = yield \
-                                        WebServer(args.rest_port, args.work_dir,\
-                                        args.swagger_url,\
-                                        self.grpc_client, args.key,\
-                                        args.cert).start()
+                        WebServer(args.rest_port, args.work_dir,
+                                  args.swagger_url,
+                                  self.grpc_client, args.key,
+                                  args.cert).start()
 
             self.grpc_client.set_reconnect_callback(
                 self.rest_server.reload_generated_routes).start()
             self.log.info('started-internal-services')
-        except Exception, e:
+        except Exception as e:
             self.log.exception('startup-failed', e=e)
 
     @inlineCallbacks
