diff --git a/product/ERP5/Document/BusinessProcess.py b/product/ERP5/Document/BusinessProcess.py
index 1e3cb1580ccafb37d9fda766207b6d399f480819..cf84550e1fb263a49eda6478d8161388e8abac13 100644
--- a/product/ERP5/Document/BusinessProcess.py
+++ b/product/ERP5/Document/BusinessProcess.py
@@ -135,10 +135,8 @@ class BusinessProcess(Path, XMLObject):
         trade_phase = (trade_phase,)
       trade_phase = set(x.split('trade_phase/', 1)[-1]
                         for x in trade_phase)
-    if kw.get('portal_type', None) is None:
-      kw['portal_type'] = self.getPortalTradeModelPathTypeList()
-    if kw.get('sort_on', None) is None:
-      kw['sort_on'] = 'int_index'
+    kw.setdefault('portal_type', self.getPortalTradeModelPathTypeList())
+    kw.setdefault('sort_on', 'int_index')
     original_path_list = self.objectValues(**kw) # Why Object Values ??? XXX-JPS
     LOG('self', 0, repr(self))
     LOG('objectValues', 0, repr(self.objectValues()))
@@ -159,12 +157,7 @@ class BusinessProcess(Path, XMLObject):
     # FIXME: Ideally, we should use the Domain Tool to search business paths,
     # and avoid using the low level Predicate API. But the Domain Tool does
     # support the condition above without scripting?
-    result = []
-    for path in path_list:
-      if path.test(context):
-        result.append(path)
-    LOG('result', 0, result)
-    return result
+    return [path for path in path_list if path.test(context)]
 
   security.declareProtected(Permissions.AccessContentsInformation, 'getExpectedTradeModelPathStartAndStopDate')
   def getExpectedTradeModelPathStartAndStopDate(self, explanation, trade_model_path,
@@ -232,10 +225,8 @@ class BusinessProcess(Path, XMLObject):
         trade_phase = set((trade_phase,))
       else:
         trade_phase = set(trade_phase)
-    if kw.get('portal_type', None) is None:
-      kw['portal_type'] = self.getPortalBusinessLinkTypeList()
-    if kw.get('sort_on', None) is None:
-      kw['sort_on'] = 'int_index'
+    kw.setdefault('portal_type', self.getPortalBusinessLinkTypeList())
+    kw.setdefault('sort_on', 'int_index')
     original_business_link_list = self.objectValues(**kw) # Why Object Values ??? XXX-JPS
     # Separate the selection of business links into two steps
     # for easier debugging.
@@ -246,7 +237,8 @@ class BusinessProcess(Path, XMLObject):
         continue # Filter our business link which predecessor does not match
       if successor is not None and business_link.getSuccessor() != successor:
         continue # Filter our business link which successor does not match
-      if trade_phase is not None and not trade_phase.intersection(business_link.getTradePhaseList()):
+      if trade_phase is not None and not trade_phase.intersection(
+                                   business_link.getTradePhaseList()):
         continue # Filter our business link which trade phase does not match
       business_link_list.append(business_link)
     # Then, filter business links by Predicate API.
@@ -257,11 +249,8 @@ class BusinessProcess(Path, XMLObject):
     if context is None:
       LOG('context is None', 0, repr(business_link_list))
       return business_link_list
-    result = []
-    for business_link in business_link_list:
-      if business_link.test(context):
-        result.append(business_link)
-    return result
+    return [business_link for business_link in business_link_list
+                if business_link.test(context)]
 
   security.declareProtected(Permissions.AccessContentsInformation, 'isBusinessLinkCompleted')
   def isBusinessLinkCompleted(self, explanation, business_link):