diff --git content_moderation.module content_moderation.module
index 5e3c180..58dafb5 100644
--- content_moderation.module
+++ content_moderation.module
@@ -100,8 +100,9 @@ function content_moderation_block($op = "list", $delta = 0, $edit = array()){
             $links['live_view'] = 'node/'.$live->nid;
           }
           $links['edit_state'] = _content_moderation_change_state_link($node->vid,$node->nid);
-          $links['compare_with_live'] = "node/{$node->nid}/revisions/view/{$node->vid}/{$live->vid}";
-
+          $check_revisions = _content_moderation_get_latest_revisions($node->nid, 2);
+          $rev_url = _content_moderation_determine_revision_url($check_revisions, $node->nid, $node->vid, FALSE);
+          $links['compare_with_live'] = $rev_url . $live->vid;
           // Get the state of the currently view revision
           $state = ucfirst(_content_moderation_current_state($node->vid));
 
@@ -392,11 +393,13 @@ function theme_content_moderation_node_history($history) {
     $user = user_load($e->uid);
     $state_class = "state_{$e->state_name}";
     // TODO: proper localized date format
+    $revisions = _content_moderation_get_latest_revisions($e->nid, 2);
+    $rev_url = _content_moderation_determine_revision_url($revisions, $e->nid, $e->vid);
     $data[] = array (
       format_date($e->stamp,'small'),                         // date
       l($user->name,"user/{$user->uid}"),                     // Who changed that state?
       "<span class='$state_class'>".ucfirst(t('!old',array('!old' => $e->old_state_name))).' -> '.ucfirst(t($e->state_name)).'</span>',             // Transition
-      l($e->vid,"node/{$e->nid}/revisions/{$e->vid}/view"),   // revision
+      l($e->vid, $rev_url),   // revision
       check_plain($e->comment), // comment
     );
   }
@@ -764,4 +767,20 @@ function _content_moderation_latest_entry_in_history($vid,$state = 'live' ) {
   }
   // else
   return false;
+}
+
+function _content_moderation_determine_revision_url($revisions, $nid, $vid, $view = TRUE) {
+ // Adding logic to determine if there is already a live version as well
+ // If there is only 1 revision and no live version then we change the rev_url
+ $live = _content_moderation_live_revision($nid);
+  if (count($revisions) == 1 && $live->vid == '') {
+    $rev_url = "node/{$nid}";
+  }
+  else {
+    $rev_url = "node/{$nid}/revisions/{$vid}/";
+    if ($view == TRUE) {
+        $rev_url .= "view";
+    }
+  }
+  return $rev_url;
 }
\ No newline at end of file
diff --git content_moderation_info_block.tpl.php content_moderation_info_block.tpl.php
index cbecfd4..2a1cea9 100644
--- content_moderation_info_block.tpl.php
+++ content_moderation_info_block.tpl.php
@@ -31,9 +31,10 @@ if($live != NULL) {
   $view_live_link = l($view_icon,$links['live_view'],array('html' => true, 'attributes' => array( 'title' => t('View live revision') ) ));
 
 }
-
-$view_current_link = l($view_icon,"node/{$node->nid}/revisions/{$node->vid}/view",array('html' => true, 'attributes' => array( 'title' => t('View this revision.') ) ));
-$current_rev_link = l($node->vid,"node/{$node->nid}/revisions/{$node->vid}/view",array('html' => true, 'attributes' => array( 'title' => t('View this revision.') ) ));
+$check_revisions = _content_moderation_get_latest_revisions($node->nid, 2);
+$rev_url = _content_moderation_determine_revision_url($check_revisions, $node->nid, $node->vid, FALSE);
+$view_current_link = l($view_icon, $rev_url,array('html' => true, 'attributes' => array( 'title' => t('View this revision.') ) ));
+$current_rev_link = l($node->vid, $rev_url,array('html' => true, 'attributes' => array( 'title' => t('View this revision.') ) ));
 
 if(module_exists('diff')){
   $compare_live = l($rev_icon,$links['compare_with_live'],array('html' => true, 'attributes' => array( 'title' => t('Compare this revision with the live revision.') ) ));
diff --git content_moderation_revisions_list.tpl.php content_moderation_revisions_list.tpl.php
index 0e9cd37..514038d 100644
--- content_moderation_revisions_list.tpl.php
+++ content_moderation_revisions_list.tpl.php
@@ -27,9 +27,10 @@ foreach($revisions as $rev) {
   $edit_state_link = '';
   $compare_live = '';
   $compare = '';
-
-  $view_link = l($view_icon,"node/{$rev->nid}/revisions/{$rev->vid}/view",array('html' => true, 'attributes' => array( 'title' => t('View revision @rev.',array('@rev' => $rev->vid) ))));
-  $revision_link = l($rev->vid,"node/{$rev->nid}/revisions/{$rev->vid}/view",array('html' => true, 'attributes' => array( 'title' => t('View revision @rev.',array('@rev' => $rev->vid) ))));
+  $check_revisions = _content_moderation_get_latest_revisions($rev->nid, 2);
+  $rev_url = _content_moderation_determine_revision_url($check_revisions, $rev->nid, $rev->vid, FALSE);
+  $view_link = l($view_icon, $rev_url,array('html' => true, 'attributes' => array( 'title' => t('View revision @rev.',array('@rev' => $rev->vid) ))));
+  $revision_link = l($rev->vid, $rev_url,array('html' => true, 'attributes' => array( 'title' => t('View revision @rev.',array('@rev' => $rev->vid) ))));
 
   if(_content_moderation_statechange_allowed($rev->vid) !== false) {
     $edit_state_link = l($edit_state_icon,_content_moderation_change_state_link($rev->vid,$rev->nid),array('html' => true, 'attributes' => array( 'title' => t('Change state of revision @rev.',array('@rev' => $rev->vid) ))));
