diff --git a/obmc/mapper/server.py b/obmc/mapper/server.py
index b18b8b5..35415f8 100644
--- a/obmc/mapper/server.py
+++ b/obmc/mapper/server.py
@@ -473,8 +473,11 @@
                 traceback.print_exception(*sys.exc_info())
 
         if not owners:
-            owned_names = [x for x in self.bus.list_names() if not obmc.dbuslib.bindings.is_unique(x)]
-            owners = list(filter(bool, [get_owner(name) for name in owned_names]))
+            owned_names = [
+                x for x in self.bus.list_names()
+                if not obmc.dbuslib.bindings.is_unique(x)]
+            owners = list(
+                filter(bool, [get_owner(name) for name in owned_names]))
         for owned_name, o in owners:
             if not self.valid_signal(owned_name):
                 continue
diff --git a/obmc/mapper/utils.py b/obmc/mapper/utils.py
index 6f1b6b6..75b4229 100644
--- a/obmc/mapper/utils.py
+++ b/obmc/mapper/utils.py
@@ -24,7 +24,7 @@
 class Wait(object):
     def __init__(self, bus, waitlist, *a, **kw):
         self.bus = bus
-        self.waitlist = dict(list(zip(waitlist, [None]*len(waitlist))))
+        self.waitlist = dict(list(zip(waitlist, [None] * len(waitlist))))
         mapper = bus.get_object(
             obmc.mapper.MAPPER_NAME,
             obmc.mapper.MAPPER_PATH,
@@ -121,5 +121,6 @@
         if self.done:
             return
 
-        for path in [x for x in list(self.waitlist.keys()) if not self.waitlist[x]]:
+        for path in [
+                x for x in list(self.waitlist.keys()) if not self.waitlist[x]]:
             self.get_object_async(path, 0)
