diff --git a/casetracker.module b/casetracker.module
index 8795b33..a6595ad 100644
--- a/casetracker.module
+++ b/casetracker.module
@@ -265,26 +265,80 @@ function casetracker_comment(&$comment, $op) {
       db_query("DELETE FROM {casetracker_comment_status} WHERE cid = %d", $comment->cid);
       break;
     case 'view':
-      // If this is a preview we won't have a cid yet.
-      if (empty($comment->cid)) {
-        $case_data['new'] = (object)$comment->casetracker;
-        $case_data['new']->assign_to = casetracker_get_uid($case_data['new']->assign_to);
-        $case = node_load($comment->nid);
-        $case_data['old'] = drupal_clone($case->casetracker);
-      }
-      else {
-        $results = db_query("SELECT * FROM {casetracker_comment_status} WHERE cid = %d", $comment->cid);
-        while ($result = db_fetch_object($results)) {
-          $state = $result->state ? 'new' : 'old';
-          $case_data[$state] = $result;
-        }
-      }
-      $comment->comment = theme('casetracker_comment_changes', $case_data['old'], $case_data['new']) . $comment->comment;        
+      $case_data = casetracker_comment_changes($comment);
+      $comment->comment = theme('casetracker_comment_changes', $case_data) . $comment->comment;
       break;
   }
 }
 
 /**
+ * Generate comment case data on changes between subsequent comments
+ *
+ * @param $comment
+ *   The current comment object
+ * @return $case_data
+ *   information on the old and new casetracker status
+ */
+function casetracker_comment_changes($comment) {
+  // If this is a preview we won't have a cid yet.
+  if (empty($comment->cid)) {
+    $case_data['new'] = (object)$comment->casetracker;
+    $case_data['new']->assign_to = casetracker_get_uid($case_data['new']->assign_to);
+    $case = node_load($comment->nid);
+    $case_data['old'] = drupal_clone($case->casetracker);
+  }
+  else {
+    $results = db_query("SELECT * FROM {casetracker_comment_status} WHERE cid = %d", $comment->cid);
+    while ($result = db_fetch_object($results)) {
+      $state = $result->state ? 'new' : 'old';
+      $case_data[$state] = $result;
+    }
+  }
+
+  $rows = array();
+
+  $fields = array(
+    'pid' => t('Project'),
+    'title' => t('Title'),
+    'case_status_id' => t('Status'),
+    'assign_to' => t('Assigned'),
+    'case_priority_id' => t('Priority'),
+    'case_type_id' => t('Type'),
+  );
+  foreach ($fields as $field => $label) {
+    if ($case_data['new']->{$field} != $case_data['old']->{$field}) {
+      switch ($field) {
+        case 'pid':
+          $old_title = db_result(db_query("SELECT title FROM {node} WHERE nid = %d", $case_data['old']->pid));
+          $new_title = db_result(db_query("SELECT title FROM {node} WHERE nid = %d", $case_data['new']->pid));
+          $case_data['old']->{$field} = l($old_title, "node/{$case_data['old']->pid}");
+          $case_data['new']->{$field} = l($new_title, "node/{$case_data['new']->pid}");
+          break;
+        case 'case_status_id':
+          $case_data['old']->{$field} = check_plain(casetracker_case_state_load($case_data['old']->{$field}, 'status'));
+          $case_data['new']->{$field} = check_plain(casetracker_case_state_load($case_data['new']->{$field}, 'status'));
+          break;
+        case 'assign_to':
+          $case_data['old']->{$field} = check_plain(casetracker_get_name($case_data['old']->{$field}));
+          $case_data['new']->{$field} = check_plain(casetracker_get_name($case_data['new']->{$field}));
+          break;
+        case 'case_priority_id':
+          $case_data['old']->{$field} = check_plain(casetracker_case_state_load($case_data['old']->{$field}, 'priority'));
+          $case_data['new']->{$field} = check_plain(casetracker_case_state_load($case_data['new']->{$field}, 'priority'));
+          break;
+        case 'case_type_id':
+          $case_data['old']->{$field} = check_plain(casetracker_case_state_load($case_data['old']->{$field}, 'type'));
+          $case_data['new']->{$field} = check_plain(casetracker_case_state_load($case_data['new']->{$field}, 'type'));
+          break;
+      }
+      $rows[] = array(t('@label: !old &raquo; !new', array('@label' => $label, '!old' => $case_data['old']->{$field}, '!new' => $case_data['new']->{$field})));
+    }
+  }
+
+  return $rows;
+}
+
+/**
  * Implementation of hook_form_alter().
  */
 function casetracker_form_alter(&$form, &$form_state, $form_id) {
@@ -299,7 +353,7 @@ function casetracker_form_alter(&$form, &$form_state, $form_id) {
         return;
       }
       else {
-        $default_project = null;
+        $default_project = NULL;
         if (!isset($form['#node']->nid) && is_numeric(arg(3))) {
           $default_project = arg(3);
         }
@@ -607,7 +661,7 @@ function casetracker_locale_refresh() {
  *   array with the keys being the state ID and the values being their names.
  */
 function casetracker_realm_load($realm) {
-  return casetracker_case_state_load(null, $realm);
+  return casetracker_case_state_load(NULL, $realm);
 }
 
 /**
@@ -620,7 +674,7 @@ function casetracker_realm_load($realm) {
  */
 function casetracker_case_state_save($case_state = NULL) {
   if (!$case_state['name'] || !$case_state['realm']) { 
-    return NULL; 
+    return NULL;
   }
   // Need to collect information into another array since the db columns have different names : (
   $record = array(
@@ -736,6 +790,7 @@ function _casetracker_get_og_query_string(&$project) {
 function casetracker_theme() {
   return array(
     'casetracker_comment_changes' => array(),
+    'casetracker_comment_changes_plain' => array(),
     'casetracker_case_form_common' => array(),
     'casetracker_case_summary' => array(),
     'casetracker_project_summary' => array(),
@@ -746,53 +801,23 @@ function casetracker_theme() {
  * Displays the changes a comment has made to the case fields.
  *
  * @param $case_data
- *   An array of both 'old' and 'new' objects that contains
- *   the before and after values this comment has changed.
+ *   An array of changed "labels => values"
  */
-function theme_casetracker_comment_changes($old, $new) {
-  $rows = array();
+function theme_casetracker_comment_changes($case_data) {
+  if (!empty($case_data)) {
+    return theme('table', NULL, $case_data, array('class' => 'case_changes'));
+  }
+}
 
-  $fields = array(
-    'pid' => t('Project'),
-    'title' => t('Title'),
-    'case_status_id' => t('Status'),
-    'assign_to' => t('Assigned'),
-    'case_priority_id' => t('Priority'),
-    'case_type_id' => t('Type'),
-  );
-  foreach ($fields as $field => $label) {
-    if ($new->{$field} != $old->{$field}) {
-      switch ($field) {
-        case 'pid':
-          $old_title = db_result(db_query("SELECT title FROM {node} WHERE nid = %d", $old->pid));
-          $new_title = db_result(db_query("SELECT title FROM {node} WHERE nid = %d", $new->pid));
-          $old->{$field} = l($old_title, "node/{$old->pid}");
-          $new->{$field} = l($new_title, "node/{$new->pid}");
-          break;
-        case 'case_status_id':
-          $old->{$field} = check_plain(casetracker_case_state_load($old->{$field}, 'status'));
-          $new->{$field} = check_plain(casetracker_case_state_load($new->{$field}, 'status'));
-          break;
-        case 'assign_to':
-          $old->{$field} = check_plain(casetracker_get_name($old->{$field}));
-          $new->{$field} = check_plain(casetracker_get_name($new->{$field}));
-          break;
-        case 'case_priority_id':
-          $old->{$field} = check_plain(casetracker_case_state_load($old->{$field}, 'priority'));
-          $new->{$field} = check_plain(casetracker_case_state_load($new->{$field}, 'priority'));
-          break;
-        case 'case_type_id':
-          $old->{$field} = check_plain(casetracker_case_state_load($old->{$field}, 'type'));
-          $new->{$field} = check_plain(casetracker_case_state_load($new->{$field}, 'type'));
-          break;
-      }
-      $rows[] = array(t('@label: !old &raquo; !new', array('@label' => $label, '!old' => $old->{$field}, '!new' => $new->{$field})));
+function theme_casetracker_comment_changes_plain($case_data) {
+  if (!empty($case_data)) {
+    $output = "\n";
+    foreach ($case_data as $change) {
+      $output .= implode(' ', $change) . "\n";
     }
   }
-  
-  if (!empty($rows)) {
-    return theme('table', NULL, $rows, array('class' => 'case_changes'));
-  }
+
+  return $output;
 }
 
 /**
diff --git a/casetracker.token.inc b/casetracker.token.inc
index 0f83682..259c3ac 100644
--- a/casetracker.token.inc
+++ b/casetracker.token.inc
@@ -19,6 +19,16 @@ function _casetracker_token_values($type, $object = NULL) {
     $assignedUser = user_load($object->casetracker->assign_to);
     $values['case_assign_to'] = $assignedUser->name;
   }
+  if ($type == 'comment') {
+    // Load the node off this comment to see if casetracker tokens are relevant
+    $node = is_array($object) ? node_load($object['nid']) : node_load($object->nid);
+
+    if (casetracker_is_case($node->type)) {
+      $case_data = casetracker_comment_changes($object);
+      $values['case_comment_changes'] = theme('casetracker_comment_changes_plain', $case_data);
+    }
+  }
+
   return $values;
 }
 
@@ -32,7 +42,11 @@ function _casetracker_token_list($type = 'all') {
     $tokens['casetracker']['case_priority'] = t('Case Priority');
     $tokens['casetracker']['case_assign_to_uid'] = t('Case Assigned to (UID)');
     $tokens['casetracker']['case_assign_to'] = t('Case Assigned to (Name)');
-    return $tokens;
   }
+  if ($type == 'comment' || $type == 'all') {
+    $tokens['casetracker']['case_comment_changes'] = t('Changes between subsequent case comments');
+  }
+
+  return $tokens;
 }
 
