diff --git a/node_reference/node_reference.module b/node_reference/node_reference.module
index 2fbaf1b..daf9883 100644
--- a/node_reference/node_reference.module
+++ b/node_reference/node_reference.module
@@ -668,7 +668,12 @@ function _node_reference_options($field) {
   foreach ($references as $key => $value) {
     // We use the richer 'rendered' value rather than the raw title, but we must
     // take care of removing tags and leaving HTML entities unencoded.
-    $options[$key] = html_entity_decode(strip_tags($value['rendered']), ENT_QUOTES);;
+    if (empty($value['group'])) {
+      $options[$key] = html_entity_decode(strip_tags($value['rendered']), ENT_QUOTES);
+    }
+    else {
+      $options[$value['group']][$key] = html_entity_decode(strip_tags($value['rendered']), ENT_QUOTES);
+    }
   }
 
   return $options;
diff --git a/references.module b/references.module
index 0d33ee8..8791881 100644
--- a/references.module
+++ b/references.module
@@ -60,6 +60,8 @@ function references_views_plugins() {
         'theme' => 'views_view_unformatted',
         'uses row plugin' => TRUE,
         'uses fields' => TRUE,
+        'uses options' => TRUE,
+        'uses grouping' => TRUE,
         'type' => 'references',
         'even empty' => TRUE,
       ),
diff --git a/user_reference/user_reference.module b/user_reference/user_reference.module
index c7fa11b..ce3ee78 100644
--- a/user_reference/user_reference.module
+++ b/user_reference/user_reference.module
@@ -499,7 +499,12 @@ function _user_reference_options($field) {
   foreach ($references as $key => $value) {
     // We use the richer 'rendered' value rather than the raw title, but we must
     // take care of removing tags and leaving HTML entities unencoded.
-    $options[$key] = html_entity_decode(strip_tags($value['rendered']), ENT_QUOTES);;
+    if (empty($value['group'])) {
+      $options[$key] = html_entity_decode(strip_tags($value['rendered']), ENT_QUOTES);
+    }
+    else {
+      $options[$value['group']][$key] = html_entity_decode(strip_tags($value['rendered']), ENT_QUOTES);
+    }
   }
 
   return $options;
diff --git a/views/references_plugin_style.inc b/views/references_plugin_style.inc
index 4569469..26626ce 100644
--- a/views/references_plugin_style.inc
+++ b/views/references_plugin_style.inc
@@ -36,6 +36,7 @@ class references_plugin_style extends views_plugin_style {
         // Collect the rendered row, and the raw title value.
         $results[$values->{$id_field_alias}] = array(
           'rendered' => $rendered,
+          'group' => $title,
           'title' => $this->view->field[$title_field]->get_value($values),
         );
 
