diff --git a/views_filter_view.module b/views_filter_view.module
index 1db3b32..2e2ecce 100644
--- a/views_filter_view.module
+++ b/views_filter_view.module
@@ -37,7 +37,7 @@ function views_filter_view_get_items($name, $display) {
       $view->init_query();
       $view->execute();
       foreach ($view->result as $values) {
-        $value = $values->{$view->base_field_alias};
+        $value = current(array_values((array)$values));
         $items[$value] = $value;
       }
       $view_results[$view_display] = $items;
@@ -97,6 +97,9 @@ function views_filter_view_views_pre_execute(&$view) {
   $views = views_filter_view_get_filter_views();
   $view_display = $view->name . ':' . $view->current_display;
   if (isset($views[$view_display])) {
+    if (empty($view->base_field)) {
+      $view->base_field = current(array_keys($view->query->field_aliases[$view->base_table]));
+    }
     $view->base_field_alias = $view->query->add_field($view->base_table, $view->base_field);
   }
 }
@@ -122,4 +125,4 @@ function views_filter_view_views_post_execute(&$view) {
     }
     $view_results[$view_display] = $items;
   }
-}
\ No newline at end of file
+}
diff --git a/views_filter_view_handler_filter_view.inc b/views_filter_view_handler_filter_view.inc
index 145f153..fa83a1e 100644
--- a/views_filter_view_handler_filter_view.inc
+++ b/views_filter_view_handler_filter_view.inc
@@ -20,6 +20,7 @@ class views_filter_view_handler_filter_view extends views_handler_filter {
     $options  = parent::option_definition();
     $options['operator'] = array('default' => 'IN');
     $options['view'] = array('default' => '');
+    $options['filter_on'] = array('default' => '');
     return $options;
   }
 
@@ -30,7 +31,6 @@ class views_filter_view_handler_filter_view extends views_handler_filter {
     return $options;
   }
 
-
   function options_form(&$form, &$form_state) {
     parent::options_form($form, $form_state);
 
@@ -46,15 +46,39 @@ class views_filter_view_handler_filter_view extends views_handler_filter {
       '#description' => t('The view and display to filter by. Take sure that you choose the display which is executed.'),
       '#options' => $options,
     );
+
+    $options = array();
+    foreach ($this->view->display_handler->default_display->options['fields'] as $field) {
+      $option = $field['table'] . ':' . $field['id'];
+      $options[$option] = $option;
+    }
+    $form['filter_on'] = array(
+      '#type' => 'select',
+      '#title' => t('Filter on'),
+      '#default_value' => $this->options['filter_on'],
+      '#options' => $options,
+    );
   }
 
-  function query() {
-    $this->table_alias = $this->query->ensure_table($this->view->base_table, $this->relationship);
-    $this->real_field = $this->view->base_field;
+  function value_form(&$form, &$form_state) {
+    list($name, $display) = explode(':', $this->options['view']);
+    $options = $this->get_view_items($name, $display);
+    $form['value'] = array(
+      '#type' => 'select',
+      '#default_value' => NULL,
+      '#multiple' => $this->options['expose']['multiple'] ? TRUE : FALSE,
+      '#options' => $options,
+    );
+    return $form;
+  }
 
+  function query() {
+    list($this->table_alias, $this->real_field) = explode(':', $this->options['filter_on']);
     list($name, $display) = explode(':', $this->options['view']);
     if ($items = $this->get_view_items($name, $display)) {
-      $this->value = $items;
+      if (!$this->value) {
+        $this->value = $items;
+      }
       $this->query->add_where($this->options['group'], "$this->table_alias.$this->real_field", $this->value, $this->operator);
     }
   }
