diff --git node_reference/node_reference.info node_reference/node_reference.info
index e4a2d73..b718d9d 100644
--- node_reference/node_reference.info
+++ node_reference/node_reference.info
@@ -4,5 +4,6 @@ description = Defines a field type for referencing one node from another.
 package = Fields
 core = 7.x
 dependencies[] = field
+dependencies[] = references
 dependencies[] = options
-files[] = node_reference.test
+
diff --git node_reference/node_reference.module node_reference/node_reference.module
index 8a26048..4af0b8c 100644
--- node_reference/node_reference.module
+++ node_reference/node_reference.module
@@ -843,15 +843,6 @@ function node_reference_content_migrate_instance_alter(&$instance_value, $field_
 }
 
 /**
- * Implements hook_views_api().
- */
-function node_reference_views_api() {
-  return array(
-    'api' => '3.0',
-  );
-}
-
-/**
  * Implements hook_field_views_data().
  *
  * In addition to the default field information we add the relationship for
@@ -875,6 +866,21 @@ function node_reference_field_views_data($field) {
         'base field' => 'nid',
         'label' => $field['field_name'],
       );
+
+      // Argument: display node.title in argument titles (handled in our custom 
+      // handler) and summary lists (handled by the base views_handler_argument
+      // handler).
+      // Both mechanisms rely on the 'name table' and 'name field' information
+      // below, by joining to a separate copy of the base table from the field
+      // data table.
+      $data[$table][$id_column]['argument']['handler'] = 'references_handler_argument';
+      $data[$table][$id_column]['argument']['name table'] = $table . '_reference';
+      $data[$table][$id_column]['argument']['name field'] = 'title';
+      $data[$table . '_reference']['table']['join'][$table] = array(
+        'left_field' => $id_column,
+        'table' => 'node',
+        'field' => 'nid',
+      );
     }
   }
 
diff --git references.info references.info
new file mode 100644
index 0000000..ef932bb
--- /dev/null
+++ references.info
@@ -0,0 +1,8 @@
+; $Id$
+name = References
+description = Defines common base features for the various reference field types.
+package = Fields
+core = 7.x
+dependencies[] = field
+dependencies[] = options
+files[] = views/references_handler_argument.inc
diff --git references.module references.module
new file mode 100644
index 0000000..a3542b4
--- /dev/null
+++ references.module
@@ -0,0 +1,16 @@
+<?php
+// $Id
+
+/**
+ * @file
+ * Defines common base features for the various reference field types.
+ */
+
+/**
+ * Implements hook_views_api().
+ */
+function references_views_api() {
+  return array(
+    'api' => '3.0',
+  );
+}
diff --git user_reference/user_reference.info user_reference/user_reference.info
index b9d7d0b..247c650 100644
--- user_reference/user_reference.info
+++ user_reference/user_reference.info
@@ -4,4 +4,5 @@ description = Defines a field type for referencing a user from a node.
 package = Fields
 core = 7.x
 dependencies[] = field
+dependencies[] = references
 dependencies[] = options
diff --git user_reference/user_reference.module user_reference/user_reference.module
index b8f59a7..52e6d9e 100644
--- user_reference/user_reference.module
+++ user_reference/user_reference.module
@@ -668,15 +668,6 @@ function user_reference_content_migrate_instance_alter(&$instance_value, $field_
 }
 
 /**
- * Implements hook_views_api().
- */
-function user_reference_views_api() {
-  return array(
-    'api' => '3.0',
-  );
-}
-
-/**
  * Implements hook_field_views_data().
  *
  * In addition to the default field information we add the relationship for
@@ -700,6 +691,21 @@ function user_reference_field_views_data($field) {
         'base field' => 'uid',
         'label' => $field['field_name'],
       );
+
+      // Argument: display users.name in argument titles (handled in our custom
+      // handler) and summary lists (handled by the base views_handler_argument
+      // handler).
+      // Both mechanisms rely on the 'name table' and 'name field' information
+      // below, by joining to a separate copy of the base table from the field
+      // data table.
+      $data[$table][$id_column]['argument']['handler'] = 'references_handler_argument';
+      $data[$table][$id_column]['argument']['name table'] = $table . '_reference';
+      $data[$table][$id_column]['argument']['name field'] = 'name';
+      $data[$table . '_reference']['table']['join'][$table] = array(
+        'left_field' => $id_column,
+        'table' => 'users',
+        'field' => 'uid',
+      );
     }
   }
 
diff --git views/references_handler_argument.inc views/references_handler_argument.inc
new file mode 100644
index 0000000..2c35142
--- /dev/null
+++ views/references_handler_argument.inc
@@ -0,0 +1,40 @@
+<?php
+// $Id: content_handler_argument_reference.inc,v 1.1.2.2 2009/04/08 19:26:23 yched Exp $
+
+/**
+ * @file
+ * Provide handler to replace reference with title.
+ */
+class references_handler_argument extends views_handler_argument_numeric {
+
+  /**
+   *  Use node title for % placeholders in argument titles.
+   */
+  function title_query() {
+    // Use the same table and field than those used for summary lists
+    // ('name table', 'name field').
+    $table_data = views_fetch_data($this->name_table);
+    $table_info = $table_data['table']['join'][$this->table];
+    $table = $table_info['table'];
+    $key_field = $table_info['field'];
+    $title_field = $this->name_field;
+
+    $results = db_select($table, 'base_table')
+      ->fields('base_table', array($key_field, $title_field))
+      ->condition("base_table.$key_field", $this->value)
+      ->execute()
+      // Grab results as 'key => title' array.
+      ->fetchAllKeyed();
+
+    // Sanitize titles and put them back in the correct order in an unkeyed
+    // array.
+    $titles = array();
+    foreach ($this->value as $key) {
+      if (isset($results[$key])) {
+        $titles[] = check_plain($results[$key]);
+      }
+    }
+
+    return $titles;
+  }
+}
