diff --git a/references.info b/references.info
index b6cc1c5..6eb132c 100644
--- a/references.info
+++ b/references.info
@@ -8,3 +8,4 @@ files[] = views/references_handler_relationship.inc
 files[] = views/references_handler_argument.inc
 files[] = views/references_plugin_display.inc
 files[] = views/references_plugin_style.inc
+files[] = views/references_plugin_row_fields.inc
diff --git a/references.module b/references.module
index 1f75644..3d9ef9e 100644
--- a/references.module
+++ b/references.module
@@ -64,6 +64,20 @@ function references_views_plugins() {
         'even empty' => TRUE,
       ),
     ),
+    'row' => array(
+      'references_fields' => array(
+        'title' => t('Inline fields'),
+        'help' => t('Displays the fields with an optional template.'),
+        'handler' => 'references_plugin_row_fields',
+        'theme' => 'views_view_fields',
+        'theme path' => drupal_get_path('module', 'views') . '/theme',
+        'theme file' => 'theme.inc',
+        'uses fields' => TRUE,
+        'uses options' => TRUE,
+        // @todo restrict type ?
+        'type' => 'normal',
+      ),
+    ),
   );
   return $plugins;
 }
@@ -167,16 +181,6 @@ function references_potential_references_view($entity_type, $view_name, $display
   $limit = !empty($options['limit']) ? $options['limit'] : 0;
   $view->display_handler->set_option('pager', array('type' => 'some', 'options' => array('items_per_page' => $limit)));
 
-  // If not set, make all fields inline and define a separator.
-  $row_options = $view->display_handler->get_option('row_options');
-  if (empty($row_options['inline'])) {
-    $row_options['inline'] = drupal_map_assoc(array_keys($view->get_items('field', $display_name)));
-  }
-  if (empty($row_options['separator'])) {
-    $row_options['separator'] = '-';
-  }
-  $view->display_handler->set_option('row_options', $row_options);
-
   // Make sure the query is not cached
   $view->is_cacheable = FALSE;
 
diff --git a/views/references_plugin_display.inc b/views/references_plugin_display.inc
index 2f1bcf9..9ba3c8e 100644
--- a/views/references_plugin_display.inc
+++ b/views/references_plugin_display.inc
@@ -14,7 +14,7 @@ class references_plugin_display extends views_plugin_display {
     $options['style_plugin']['default'] = 'references_style';
     $options['defaults']['default']['style_plugin'] = FALSE;
     $options['defaults']['default']['style_options'] = FALSE;
-    $options['row_plugin']['default'] = 'fields';
+    $options['row_plugin']['default'] = 'references_fields';
     $options['defaults']['default']['row_plugin'] = FALSE;
     $options['defaults']['default']['row_options'] = FALSE;
 
diff --git a/views/references_plugin_row_fields.inc b/views/references_plugin_row_fields.inc
new file mode 100644
index 0000000..b836386
--- /dev/null
+++ b/views/references_plugin_row_fields.inc
@@ -0,0 +1,34 @@
+<?php
+
+/**
+ * @file
+ * Handler for references_plugin_row_fields.
+ */
+class references_plugin_row_fields extends views_plugin_row_fields {
+  
+  function option_definition() {
+    $options = parent::option_definition();
+
+    $options['separator'] = array('default' => '-');
+    
+    return $options;
+  }
+
+  /**
+   * Provide a form for setting options.
+   */
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+    // @todo add some descriptoon for inline.
+  }
+
+  function render($row) {
+    // Force all fields to be inline by default.
+    if (empty($this->options['inline'])) {
+      $fields = $this->view->get_items('field', $this->display->id);
+      $this->options['inline'] = drupal_map_assoc(array_keys($fields));
+    }
+    
+    return parent::render($row);
+  }
+}
