diff --git a/product/ERP5Type/Workflow.py b/product/ERP5Type/Workflow.py
index fd742385449bcc83ab0012d34a839fcef1a685d7..7bd234519c9431ba1b28c13bc3fac98727508a8c 100644
--- a/product/ERP5Type/Workflow.py
+++ b/product/ERP5Type/Workflow.py
@@ -143,56 +143,68 @@ def setupERP5Workflow(wf):
   """Sets up an DC Workflow with defaults variables needed by ERP5.
   """
   wf.setProperties(title='ERP5 Default Workflow')
+  states = wf.states
+  addState = states.addState
   for state_id, state_title in (('draft', 'Draft'),):
-    wf.states.addState(state_id)
-    wf.states[state_id].title = state_title
-  for v in ('action', 'actor', 'comment', 'history', 'time',
-            'error_message', 'portal_type'):
-    wf.variables.addVariable(v)
+    addState(state_id)
+    states[state_id].title = state_title
+  states.setInitialState('draft')
+
+  variables = wf.variables
+  addVariable = variables.addVariable
+  for v, property_dict in (
+        ('action', {
+            'description': 'Transition id',
+            'default_expr': 'transition/getId|nothing',
+            'for_status': 1,
+            'update_always': 1,
+          }),
+        ('actor', {
+            'description': 'Name of the user who performed transition',
+            'default_expr': 'user/getUserName',
+            'for_status': 1,
+            'update_always': 1,
+          }),
+        ('comment', {
+            'description': 'Comment about transition',
+            'default_expr': "python:state_change.kwargs.get('comment', '')",
+            'for_status': 1,
+            'update_always': 1,
+          }),
+        ('history', {
+            'description': 'Provides access to workflow history',
+            'default_expr': 'state_change/getHistory',
+          }),
+        ('time', {
+            'description': 'Transition timestamp',
+            'default_expr': 'state_change/getDateTime',
+            'for_status': 1,
+            'update_always': 1,
+          }),
+        ('error_message', {
+            'description': 'Error message if validation failed',
+            'for_status': 1,
+            'update_always': 1,
+          }),
+        ('portal_type', {
+            'description': 'Portal type (used as filter for worklists)',
+            'for_catalog': 1,
+          }),
+      ):
+    addVariable(v)
+    variables[v].setProperties(**property_dict)
+
+  addManagedPermission = wf.addManagedPermission
   for perm in (Permissions.AccessContentsInformation,
                Permissions.View,
                Permissions.AddPortalContent,
                Permissions.ModifyPortalContent,
                Permissions.DeleteObjects):
-    wf.addManagedPermission(perm)
+    addManagedPermission(perm)
 
-  wf.states.setInitialState('draft')
   # set by default the state variable to simulation_state.
   # anyway, a default workflow needs to be configured.
-  wf.variables.setStateVar('simulation_state')
-
-  vdef = wf.variables['action']
-  vdef.setProperties(description='The last transition',
-                     default_expr='transition/getId|nothing',
-                     for_status=1, update_always=1)
-
-  vdef = wf.variables['actor']
-  vdef.setProperties(description='The name of the user who performed '
-                     'the last transition',
-                     default_expr='user/getUserName',
-                      for_status=1, update_always=1)
-
-  vdef = wf.variables['comment']
-  vdef.setProperties(description='Comments about the last transition',
-               default_expr="python:state_change.kwargs.get('comment', '')",
-               for_status=1, update_always=1)
-
-  vdef = wf.variables['history']
-  vdef.setProperties(description='Provides access to workflow history',
-                     default_expr="state_change/getHistory")
-
-  vdef = wf.variables['time']
-  vdef.setProperties(description='Time of the last transition',
-                     default_expr="state_change/getDateTime",
-                     for_status=1, update_always=1)
-
-  vdef = wf.variables['error_message']
-  vdef.setProperties(description='Error message if validation failed',
-                     for_status=1, update_always=1)
-  
-  vdef = wf.variables['portal_type']
-  vdef.setProperties(description='portal type (use as filter for worklists)',
-                     for_catalog=1)
+  variables.setStateVar('simulation_state')
 
 def createERP5Workflow(id):
   """Creates an ERP5 Workflow """
@@ -203,3 +215,4 @@ def createERP5Workflow(id):
 addWorkflowFactory(createERP5Workflow,
                    id='erp5_workflow',
                    title='ERP5-style pre-configured DCWorkflow')
+