diff --git a/includes/project_issue_node_type.inc b/includes/project_issue_node_type.inc
index ba14b39..a3d8a1a 100644
--- a/includes/project_issue_node_type.inc
+++ b/includes/project_issue_node_type.inc
@@ -426,16 +426,20 @@ function _project_issue_create_issue_node_type() {
 
   $instance = array(
     'bundle' => 'project_issue',
-    'default_value' => NULL,
+    'default_value' => array(
+      array(
+        'target_id' => '0', // Default to Unassigned on new issues.
+      ),
+    ),
     'description' => '',
     'display' => array(
       'default' => array(
         'label' => 'above',
-        'module' => 'entityreference',
+        'module' => 'project_issue',
+        'type' => 'issue_assigned_user',
         'settings' => array(
           'link' => TRUE,
         ),
-        'type' => 'entityreference_label',
         'weight' => 5,
       ),
       'teaser' => array(
@@ -446,27 +450,27 @@ function _project_issue_create_issue_node_type() {
       ),
       'issuemetadata' => array(
         'label' => 'inline',
-        'module' => 'entityreference',
+        'module' => 'project_issue',
+        'type' => 'issue_assigned_user',
         'settings' => array(
           'link' => TRUE,
         ),
-        'type' => 'entityreference_label',
         'weight' => 5,
       ),
       'nodechanges' => array(
         'label' => 'inline',
-        'module' => 'entityreference',
+        'module' => 'project_issue',
+        'type' => 'issue_assigned_user',
         'settings' => array(
           'link' => TRUE,
         ),
-        'type' => 'entityreference_label',
         'weight' => 3,
       ),
     ),
     'entity_type' => 'node',
     'field_name' => 'field_issue_assigned',
     'label' => $t('Assigned'),
-    'required' => 0,
+    'required' => 1,
     'settings' => array(
       'user_register_form' => FALSE,
     ),
diff --git a/project_issue.module b/project_issue.module
index a4ae729..761ef5e 100644
--- a/project_issue.module
+++ b/project_issue.module
@@ -1797,9 +1797,6 @@ function project_issue_field_extra_fields() {
 
 /**
  * Implements hook_field_formatter_info().
- *
- * Provides a formatter for nodereference fields that uses
- * theme_project_issue_issue_link().
  */
 function project_issue_field_formatter_info() {
   return array(
@@ -1813,6 +1810,14 @@ function project_issue_field_formatter_info() {
       'field types' => array('entityreference'),
       'multiple values' => FIELD_BEHAVIOR_DEFAULT,
     ),
+    'issue_assigned_user' => array(
+      'label' => t('Assigned user'),
+      'description' => t('Display the user an issue is assigned to'),
+      'field types' => array('entityreference'),
+      'settings' => array(
+        'link' => FALSE,
+      ),
+    ),
   );
 }
 
@@ -1820,6 +1825,10 @@ function project_issue_field_formatter_info() {
  * Implements hook_field_formatter_view().
  */
 function project_issue_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
+  if ($display['type'] == 'issue_assigned_user') {
+    return _project_issue_field_formatter_view_issue_assigned_user($entity_type, $entity, $field, $instance, $langcode, $items, $display);
+  }
+
   $elements = array();
 
   $settings = $display['settings'];
@@ -1884,6 +1893,89 @@ function project_issue_field_formatter_view($entity_type, $entity, $field, $inst
 }
 
 /**
+ * Implements hook_field_formatter_settings_form().
+ */
+function project_issue_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
+  $display = $instance['display'][$view_mode];
+  $settings = $display['settings'];
+
+  if ($display['type'] == 'issue_assigned_user') {
+    return array(
+      'link' => array(
+        '#title' => t('Link label to the referenced entity'),
+        '#type' => 'checkbox',
+        '#default_value' => $settings['link'],
+      ),
+    );
+  }
+}
+
+/**
+ * Implements hook_field_formatter_settings_summary().
+ */
+function project_issue_field_formatter_settings_summary($field, $instance, $view_mode) {
+  $display = $instance['display'][$view_mode];
+  $settings = $display['settings'];
+  $summary = array();
+  if ($display['type'] == 'issue_assigned_user') {
+    $summary[] = $settings['link'] ? t('Link to the referenced entity') : t('No link');
+  }
+  return implode('<br />', $summary);
+}
+
+/**
+ * Implements hook_field_formatter_prepare_view().
+ *
+ * This is ugly, but since we're trying to extend the entity reference field
+ * formatter, we need to find all the items that are configured to use the
+ * 'issue_assigned_user' formatter, invoke entityreference's prepare_view()
+ * hook, and use that to update the items in our list.
+ */
+function project_issue_field_formatter_prepare_view($entity_type, $entities, $field, $instances, $langcode, &$items, $displays) {
+  $assigned_items = array();
+  $assigned_entities = array();
+  $assigned_displays = array();
+  foreach ($displays as $entity_id => $display) {
+    if ($display['type'] == 'issue_assigned_user') {
+      $assigned_items[$entity_id] = $items[$entity_id];
+      $assigned_entities[$entity_id] = $entities[$entity_id];
+      $assigned_displays[$entity_id] = $display;
+    }
+  }
+  if (!empty($assigned_items)) {
+    entityreference_field_formatter_prepare_view($entity_type, $assigned_entities, $field, $instances, $langcode, $assigned_items, $assigned_displays);
+    foreach ($assigned_items as $entity_id => $item) {
+      $items[$entity_id] = $item;
+    }
+  }
+}
+
+/**
+ * Render an entity reference field used for the user an issue is assigned to.
+ *
+ * @see project_issue_field_formatter_view()
+ * @see entityreference_field_formatter_view()
+ */
+function _project_issue_field_formatter_view_issue_assigned_user($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
+  $result = array();
+
+  // Pretend we're the normal 'entityreference_label' formatter.
+  $display['type'] = 'entityreference_label';
+  $display['module'] = 'entityreference';
+  $result = entityreference_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display);
+
+  // Now, handle the unassigned special case.
+  if ($field['settings']['target_type'] == 'user') {
+    foreach ($items as $delta => $item) {
+      if ($item['entity']->uid == 0) {
+        $result[$delta] = array('#markup' => t('Unassigned'));
+      }
+    }
+  }
+  return $result;
+}
+
+/**
  * Find the flag name for following issues for this issue type (if any).
  *
  * If the flag tracker module (http://drupal.org/project/flag_tracker) is enabled,
@@ -2072,15 +2164,12 @@ function project_issue_open_states() {
  */
 function project_issue_assigned_choices($issue, $project, $current = NULL) {
   // Setup the array of choices for who the issue is assigned to.
-  $assigned = array();
+  // Always put uid 0 (what we use to mean Unassigned) at the top of the list.
+  $assigned = array(0 => 0);
   foreach (module_implements('project_issue_assignees') as $module) {
     $function = "{$module}_project_issue_assignees";
     $assigned += $function($issue, $project, $current);
   }
-
-  // Remove the anonymous user from the list.
-  unset($assigned[0]);
-
   drupal_alter('project_issue_assignees', $assigned, $issue, $project);
   return $assigned;
 }
@@ -2127,6 +2216,20 @@ function project_issue_project_issue_assignees($issue, $project, $current) {
 }
 
 /**
+ * Implements hook_field_widget_form_alter().
+ *
+ * We use this to swap the label for the uid 0 choice to be 'Unassigned'
+ * instead of the username (e.g. 'Anonymous').
+ */
+function project_issue_field_widget_form_alter(&$element, &$form_state, $context) {
+  if ($context['field']['field_name'] == 'field_issue_assigned') {
+    if (isset($element['#options'][0])) {
+      $element['#options'][0] = t('Unassigned');
+    }
+  }
+}
+
+/**
  * Implements hook_migrate_api().
  */
 function project_issue_migrate_api() {
