diff -urN /home/steve/suggestedterms/suggestedterms.css suggestedterms/suggestedterms.css
--- /home/steve/suggestedterms/suggestedterms.css	1969-12-31 19:00:00.000000000 -0500
+++ suggestedterms/suggestedterms.css	2009-12-26 23:39:49.000000000 -0500
@@ -0,0 +1,3 @@
+.suggestedterms .remove {
+  color: red;
+}
diff -urN /home/steve/suggestedterms/suggestedterms.js suggestedterms/suggestedterms.js
--- /home/steve/suggestedterms/suggestedterms.js	2009-05-21 14:46:12.000000000 -0400
+++ suggestedterms/suggestedterms.js	2009-12-26 23:30:36.000000000 -0500
@@ -13,11 +13,47 @@
       event.preventDefault();
       var input = $(this).parents(".form-item").children('input');
       var text = $(this).text();
+
+      // add the string
       if (((', ' + input.val() + ',').indexOf(', ' + text + ',') < 0) && ((', ' + input.val() + ',').indexOf(', "' + text + '",') < 0)) {
         if ((input.val()).length > 0) {
           input.val(input.val() + ', ');
         }
         input.val(input.val() + text);
+        $(this).addClass('remove');
+      }
+
+      // remove the string
+      else {
+        var field_text = input.val();
+        var string_to_remove = $(this).text();
+
+        // Remove term if it's the only term selected so far
+        if (string_to_remove == field_text) { 
+          input.val('');
+          $(this).removeClass('remove');
+        } else {
+          // Remove term if it's at the beggining or in the middle of a series comma separated terms
+          if (field_text.indexOf(string_to_remove + ', ') > -1) {
+            var replacement_text = field_text.replace(string_to_remove + ', ', '');
+            input.val(replacement_text);
+            $(this).removeClass('remove');
+          }
+
+          // Remove the string if it's at the end of the series of terms.
+          else if (position = field_text.indexOf(', ' + string_to_remove)) {
+            var length_of_field_text = field_text.length;
+            var length_of_string_to_remove = string_to_remove.length;
+
+            // This test ensures the last term in the series is not just a
+            // substring of the term we want to remove.
+            if ((position + 2 + length_of_string_to_remove) == length_of_field_text) {
+              var replacement_text = field_text.replace(', ' + string_to_remove, '');
+              input.val(replacement_text);
+              $(this).removeClass('remove');
+            }
+          }
+        }
       }
     }); // end bind
     $(this).before(a).remove();
diff -urN /home/steve/suggestedterms/suggestedterms.module suggestedterms/suggestedterms.module
--- /home/steve/suggestedterms/suggestedterms.module	2009-10-08 18:34:21.000000000 -0400
+++ suggestedterms/suggestedterms.module	2009-12-27 00:08:01.000000000 -0500
@@ -29,6 +29,13 @@
 }
 
 /**
+  * Implementation of hook_init().
+  */
+function suggestedterms_init() {
+  drupal_add_css(drupal_get_path('module', 'suggestedterms') .'/suggestedterms.css', 'module', 'all', TRUE);
+}
+
+/**
  * Implementation of hook_perm().
  */
 function suggestedterms_perm() {
@@ -53,11 +60,16 @@
  * @param $name
  *   The term name to theme.
  */
-function theme_suggestedterm($name) {
+function theme_suggestedterm($name, $selected) {
   if (FALSE !== strpos($name, ',')) {
     $name = '"'. $name .'"';
   }
-  return "<span class='suggestedterm'>{$name}</span>";
+  if ($selected) {
+    return "<span class='suggestedterm remove'>{$name}</span>";
+  }
+  else {
+    return "<span class='suggestedterm'>{$name}</span>";
+  }
 }
 
 /**
@@ -66,7 +78,7 @@
 * @return
 *   A string containing the clickable spans for the suggestedterms module.
 */
-function _suggestedterms_build_suggestions($vid, $sort_order, $display_what) {
+function _suggestedterms_build_suggestions($vid, $sort_order, $display_what, $selected_terms) {
   // Use left join to display all entries, inner join to diaplay only used ones.
   $query_type = ($display_what == SUGGESTEDTERMS_DISPLAY_ALL) ? " LEFT " : " INNER ";
 
@@ -98,9 +110,13 @@
   $query_result = ($total_terms > 0) ? db_query_range($query, $vid, 0, $total_terms) : db_query($query, $vid);
   $terms = array();
   while($record = db_fetch_object($query_result)) {
-    $terms[] = theme('suggestedterm', check_plain($record->name));
+    if (is_array($selected_terms) && in_array($record->name, $selected_terms)) {
+      $selected = TRUE;
+    }
+    $terms[] = theme('suggestedterm', check_plain($record->name), $selected);
+    $selected = FALSE;
   }
-  return implode(', ', $terms);
+  return '<div class="suggestedterms">' . implode(', ', $terms) . '</div>';
 }
 
 /**
@@ -137,7 +153,7 @@
           break;
       }
       // Build the suggested terms and set in description tag.
-      $form['taxonomy']['tags'][$vid]['#description'] .= "<br />\n". $tag_description . ': ' . _suggestedterms_build_suggestions($vid, $sort_order, $display_what);
+      $form['taxonomy']['tags'][$vid]['#description'] .= "<br />\n". $tag_description . ': ' . _suggestedterms_build_suggestions($vid, $sort_order, $display_what, explode(', ', $form['taxonomy']['tags'][$vid]['#default_value']));
     }
   }
 }
