diff --git a/workflow_access/workflow_access.module b/workflow_access/workflow_access.module
index 08f5bb8..bd71494 100644
--- a/workflow_access/workflow_access.module
+++ b/workflow_access/workflow_access.module
@@ -27,15 +27,33 @@ function workflow_access_node_access_records($node) {
   $grants = array();
   if ($state = workflow_get_workflow_node_by_nid($node->nid)) {
     $state = workflow_get_workflow_states_by_sid($state->sid);
+    $always_visible = variable_get('workflow_access_published_always_visible', 0);
+    $rids_done = array();
     foreach (workflow_access_get_workflow_access_by_sid($state->sid) as $grant) {
       $grants[] = array(
         'realm' => ($grant->rid == -1) ? 'workflow_access_owner' : 'workflow_access',
         'gid' => ($grant->rid == -1) ? $node->uid : $grant->rid,
-        'grant_view' => $grant->grant_view,
+        'grant_view' => $always_visible ? 1 : $grant->grant_view,
         'grant_update' => $grant->grant_update,
         'grant_delete' => $grant->grant_delete,
         'priority' => 0,
       );
+      $rids_done[] = $grant->rid;
+    }
+    // add view grants for anonymous (1) and authenticated (2) users if not yet done
+    if ($always_visible) {
+      foreach (array(1, 2) as $rid) {
+        if (!array_key_exists($rid, $rids_done)) {
+          $grants[] = array(
+          'realm' => 'workflow_access',
+          'gid' => $rid,
+          'grant_view' => 1,
+          'grant_update' => 0,
+          'grant_delete' => 0,
+          'priority' => 0,
+        );
+        }
+      }
     }
   }
   return $grants;
@@ -65,16 +83,32 @@ function workflow_access_node_access_explain($row) {
  * interface to the workflow edit form.
  */
 function workflow_access_form_workflow_admin_ui_edit_form_alter(&$form, $form_state) {
-  // A list of roles available on the site and our
-  // special -1 role used to represent the node author.
-  $rids = user_roles();
-  $rids['-1'] = t('author');
   $form['workflow_access'] = array(
     '#type' => 'fieldset',
     '#title' => t('Access control'),
     '#collapsible' => TRUE,
     '#tree' => TRUE,
   );
+  
+  // Area for integration options with other modules (like revisioning)
+  $form['workflow_access']['integration'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Integration with other modules'),
+    '#collapsible' => TRUE
+  );
+  $form['workflow_access']['integration']['published_visible'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Allow users to always view published content (especially useful with the revisioning module).'),
+    '#default_value' => variable_get('workflow_access_published_always_visible', 0),
+    '#description' => t('The workflow access module grants permission based on states. '
+                      . 'In combination with the revisioning module the state of the node might change while '
+                      . 'the published revision remains as is and should be visible.')
+  );
+  
+  // A list of roles available on the site and our
+  // special -1 role used to represent the node author.
+  $rids = user_roles();
+  $rids['-1'] = t('author');
   // Add a table for every workflow state.
   $options = array('status' => 1);
   foreach (workflow_get_workflow_states_by_wid($form['wid']['#value'], $options) as $state) {
@@ -140,6 +174,8 @@ function workflow_access_form_workflow_admin_ui_edit_form_alter(&$form, $form_st
  * Store permission settings for workflow states.
  */
 function workflow_access_form_submit($form, $form_state) {
+  variable_set('workflow_access_published_always_visible',
+               $form_state['values']['workflow_access']['integration']['published_visible']);
   foreach ($form_state['values']['workflow_access'] as $sid => $access) {
     // Ignore irrelevant keys.
     if (!is_numeric($sid)) {
@@ -227,4 +263,4 @@ function workflow_access_insert_workflow_access_by_sid(&$data) {
   $data = (object) $data;
   workflow_access_delete_workflow_access_by_sid_rid($data->sid, $data->rid);
   drupal_write_record('workflow_access', $data);
-}
\ No newline at end of file
+}
