diff --git a/xos/observers/helloworldservice/helloworldservice-observer.py b/xos/observers/helloworldservice/helloworldservice-observer.py
index d6a71ff..6f86202 100755
--- a/xos/observers/helloworldservice/helloworldservice-observer.py
+++ b/xos/observers/helloworldservice/helloworldservice-observer.py
@@ -5,7 +5,8 @@
 import importlib
 import os
 import sys
-observer_path = os.path.join(os.path.dirname(os.path.realpath(__file__)),"../..")
+observer_path = os.path.join(os.path.dirname(
+    os.path.realpath(__file__)), "../..")
 sys.path.append(observer_path)
 mod = importlib.import_module("xos-observer")
 mod.main()
diff --git a/xos/observers/helloworldservice/steps/sync_helloworldtenant.py b/xos/observers/helloworldservice/steps/sync_helloworldtenant.py
index 356be36..c032ec2 100644
--- a/xos/observers/helloworldservice/steps/sync_helloworldtenant.py
+++ b/xos/observers/helloworldservice/steps/sync_helloworldtenant.py
@@ -7,6 +7,7 @@
 parentdir = os.path.join(os.path.dirname(__file__), "..")
 sys.path.insert(0, parentdir)
 
+
 class SyncHelloWorldServiceTenant(SyncInstanceUsingAnsible):
     provides = [HelloWorldTenant]
     observes = HelloWorldTenant
@@ -19,14 +20,15 @@
 
     def fetch_pending(self, deleted):
         if (not deleted):
-            objs = HelloWorldTenant.get_tenant_objects().filter(Q(enacted__lt=F('updated')) | Q(enacted=None),Q(lazy_blocked=False))
+            objs = HelloWorldTenant.get_tenant_objects().filter(
+                Q(enacted__lt=F('updated')) | Q(enacted=None), Q(lazy_blocked=False))
         else:
             objs = HelloWorldTenant.get_deleted_tenant_objects()
 
         return objs
 
     def get_extra_attributes(self, o):
-    	return {"display_message": o.display_message}
+        return {"display_message": o.display_message}
 
     def delete_record(self, m):
         return
