diff --git a/views_field_view_handler_field_view.inc b/views_field_view_handler_field_view.inc
index 509eed6..986f12f 100644
--- a/views_field_view_handler_field_view.inc
+++ b/views_field_view_handler_field_view.inc
@@ -38,7 +38,6 @@ class views_field_view_handler_field_view extends views_handler_field {
     parent::options_form($form, $form_state);
 
     $options = drupal_map_assoc(array_keys(views_get_all_views()));
-    unset($options[$this->view->name]);
 
     $form['view'] = array(
       '#type' => 'select',
@@ -236,8 +235,6 @@ class views_field_view_handler_field_view extends views_handler_field {
       if ($this->options['view'] && !$this->options['query_aggregation']) {
         $running[$this->options['view']][$this->options['display']] = TRUE;
         $args = array();
-        $args[] = $this->options['view'];
-        $args[] = $this->options['display'];
 
         // Only perform this loop if there are actually arguments present
         if (!empty($this->options['arguments'])) {
@@ -250,7 +247,24 @@ class views_field_view_handler_field_view extends views_handler_field {
             $args[] = $value;
           }
         }
-        $output = call_user_func_array('views_embed_view', $args);
+
+        // get view etc… and execute.
+        $view = views_get_view($this->options['view']);
+        $view->set_display($this->options['display']);
+        $view->set_arguments($args);
+        $view->pre_execute();
+        $view->execute();
+
+        // If there are no results and hide_empty is set.
+        if (empty($view->result) && ($this->options['hide_empty'] || !empty($this->options['empty']))) {
+          $output = '';
+        }
+        // Else just call render on the view object.
+        else {
+          $output = $view->render();
+        }
+
+        //$output = call_user_func_array('views_embed_view', $args);
         $running[$this->options['view']][$this->options['display']] = FALSE;
       }
       // Verify we have a child view (if there were no arguments specified we
