diff --git a/eva-display-entity-view.tpl.php b/eva-display-entity-view.tpl.php
index 0a4bd1e..a0317bf 100755
--- a/eva-display-entity-view.tpl.php
+++ b/eva-display-entity-view.tpl.php
@@ -39,12 +39,6 @@
     </div>
   <?php endif; ?>
 
-  <?php if ($exposed): ?>
-    <div class="view-filters">
-      <?php print $exposed; ?>
-    </div>
-  <?php endif; ?>
-
   <?php if ($attachment_before): ?>
     <div class="attachment attachment-before">
       <?php print $attachment_before; ?>
diff --git a/eva.module b/eva.module
index 70c2a74..b21615e 100755
--- a/eva.module
+++ b/eva.module
@@ -16,15 +16,23 @@ function eva_views_api() {
 function eva_field_extra_fields() {
   $extras = array();
   $views = eva_get_views();
-  
+
   foreach ($views as $entity => $data) {
     foreach ($data as $view) {
       foreach ($view['bundles'] as $bundle) {
         $extras[$entity][$bundle]['display'][$view['name'] . '_' . $view['display']] = array(
-          'label' => (empty($view['title'])) ? $view['name'] : $view['title'], 
-          'description' => $view['title'], 
+          'label' => (empty($view['title'])) ? $view['name'] : $view['title'],
+          'description' => $view['title'],
           'weight' => 10,
         );
+        // Provide a separate extra field for the exposed form if there is any.
+        if ($view['exposed form']) {
+          $extras[$entity][$bundle]['display'][$view['name'] . '_' . $view['display'] . '_' . 'form'] = array(
+            'label' => t('@view: Exposed form', array('@view' => (empty($view['title'])) ? $view['name'] : $view['title'])),
+            'description' => t('The exposed filter form of the view.'),
+            'weight' => 9,
+          );
+        }
       }
     }
   }
@@ -38,7 +46,7 @@ function eva_field_extra_fields() {
  * This is a terrible, terrible hack that should not be necessary; taxonomy and
  * some other entity types use fields, but don't implement  hook_entity_view().
  * We have to ALTER those entity types after they're built. For the time being,
- * we'll use a list of special cases to trigger this special handling. 
+ * we'll use a list of special cases to trigger this special handling.
  */
 function eva_entity_view_alter(&$build, $type) {
   $view_mode = $build['#view_mode'];
@@ -59,6 +67,15 @@ function eva_entity_view_alter(&$build, $type) {
         $view->set_display($info['display']);
         if ($view->access($info['display'])) {
           $view->current_entity = $entity;
+
+          if (isset($fields[$longname . '_form']) && $fields[$longname . '_form']['visible']) {
+            $view->init_handlers();
+            $exposed_form = $view->display_handler->get_plugin('exposed_form');
+
+            $build['exposed_form'] = array(
+              '#markup' => $exposed_form->render_exposed_form(TRUE),
+            );
+          }
           $result = $view->execute_display($info['display']);
           if (!empty($result)) {
             $build[$longname] = array(
@@ -91,7 +108,7 @@ function eva_get_views($type = NULL, $reset = FALSE) {
 
   if (!isset($used_views) || $reset) {
     views_include('cache');
-    
+
     // If we're not resetting, check the Views cache.
     if (!$reset) {
       $cache = views_cache_get("eva");
@@ -107,11 +124,15 @@ function eva_get_views($type = NULL, $reset = FALSE) {
       foreach ($views as $data) {
         list($view, $display_id) = $data;
         $view_entity = $view->display_handler->get_option('entity_type');
+        // For determining whether the view uses exposed fitlers handlers have
+        // to be initialized.
+        $view->init_handlers();
         $used_views[$view_entity][] = array(
           'name' => $view->name,
           'title' => $view->get_title(),
           'display' => $display_id,
           'bundles' => $view->display_handler->get_option('bundles'),
+          'exposed form' => $view->display_handler->uses_exposed(),
         );
         $view->destroy();
       }
@@ -147,7 +168,7 @@ function _eva_extract_entity_from_build($build) {
   if (!empty($build['#entity'])) {
     return $build['#entity'];
   }
-  
+
   // Other entities stick them here!
   elseif (!empty($build['#' . $build['#entity_type']])) {
     return $build['#' . $build['#entity_type']];
diff --git a/eva_plugin_display_entity.inc b/eva_plugin_display_entity.inc
index 9491cae..d45bda4 100755
--- a/eva_plugin_display_entity.inc
+++ b/eva_plugin_display_entity.inc
@@ -74,7 +74,7 @@ class eva_plugin_display_entity extends views_plugin_display {
   function options_form(&$form, &$form_state) {
     // It is very important to call the parent function here:
     parent::options_form($form, $form_state);
-    
+
     $entity_info = entity_get_info();
     $entity_type = $this->get_option('entity_type');
 
@@ -159,7 +159,7 @@ class eva_plugin_display_entity extends views_plugin_display {
           // only one on the new type, we can select it automatically. Otherwise
           // we need to wipe the options and start over.
           $new_entity_info = entity_get_info($new_entity);
-          
+
           $new_bundle_keys = array_keys($new_entity_info['bundles']);
           $new_bundles = array();
           if (count($new_bundle_keys) == 1) {
@@ -203,16 +203,6 @@ class eva_plugin_display_entity extends views_plugin_display {
   }
 
   /**
-   * Node content views use exposed widgets only if AJAX is set.
-   */
-  function uses_exposed() {
-    if ($this->use_ajax()) {
-      return parent::uses_exposed();
-    }
-    return FALSE;
-  }
-
-  /**
    * We have to run token replacement before the arguments are used.
    */
   function pre_execute() {
@@ -223,7 +213,7 @@ class eva_plugin_display_entity extends views_plugin_display {
       $entity = $this->view->current_entity;
       $entity_type = $this->view->display_handler->get_option('entity_type');
       $entity_info = entity_get_info($entity_type);
-  
+
       $arg_mode = $this->view->display_handler->get_option('argument_mode');
       if ($arg_mode == 'token') {
         if ($token_string = $this->view->display_handler->get_option('default_argument')) {
@@ -234,7 +224,7 @@ class eva_plugin_display_entity extends views_plugin_display {
           foreach ($token_values as $key => $value) {
             $new_args[$key] = $value;
           }
-  
+
           $this->view->args = $new_args;
         }
       }
@@ -245,6 +235,20 @@ class eva_plugin_display_entity extends views_plugin_display {
   }
 
   /**
+   * Specify the path of the entity.
+   */
+  function get_path() {
+    if (isset($this->view->current_entity)) {
+      $uri = entity_uri($this->view->display_handler->get_option('entity_type'), $this->view->current_entity);
+      if ($uri) {
+        $uri['options']['absolute'] = TRUE;
+        return url($uri['path'], $uri['options']);
+      }
+    }
+    return parent::get_path();
+  }
+
+  /**
    * The display block handler returns the structure necessary for a block.
    */
   function execute() {
