diff --git a/taxonomy_entity_index.info b/taxonomy_entity_index.info
index 2f233de..d3fcafc 100644
--- a/taxonomy_entity_index.info
+++ b/taxonomy_entity_index.info
@@ -2,3 +2,9 @@ name = Taxonomy entity index
 description = Provides an actual entity to term index table for lookups.
 core = 7.x
 dependencies[] = taxonomy
+files[] = includes/views/handlers/taxonomy_entity_index_handler_argument_tid_depth.inc
+files[] = includes/views/handlers/taxonomy_entity_index_handler_argument_tid.inc
+files[] = includes/views/handlers/taxonomy_entity_index_handler_field_taxonomy_entity_index_tid.inc
+files[] = includes/views/handlers/taxonomy_entity_index_handler_filter_taxonomy_entity_index_tid.inc
+files[] = includes/views/handlers/taxonomy_entity_index_handler_filter_taxonomy_entity_index_tid_depth.inc
+files[] = includes/views/handlers/taxonomy_entity_index_handler_argument_taxonomy_entity_index_tid.inc
\ No newline at end of file
diff --git a/taxonomy_entity_index.install b/taxonomy_entity_index.install
index ab668f1..be17b87 100644
--- a/taxonomy_entity_index.install
+++ b/taxonomy_entity_index.install
@@ -56,6 +56,7 @@ function taxonomy_entity_index_schema() {
     ),
     'primary key' => array('entity_type', 'entity_id', 'revision_id', 'field_name', 'delta'),
     'indexes' => array(
+      'entity_revision' => array('entity_type', 'revision_id'),
       'field_instance' => array('field_name', 'entity_type', 'bundle'),
       'tid' => array('tid'),
     ),
@@ -134,3 +135,10 @@ function taxonomy_entity_index_update_7002() {
 function taxonomy_entity_index_update_7003() {
   db_add_index('taxonomy_entity_index', 'tid', array('tid'));
 }
+
+/**
+ * Add an index on entity ID.
+ */
+function taxonomy_entity_index_update_7004() {
+  db_add_index('taxonomy_entity_index', 'entity_revision', array('entity_type', 'revision_id'));
+}
diff --git a/taxonomy_entity_index.module b/taxonomy_entity_index.module
index 15dd8c5..83d7896 100644
--- a/taxonomy_entity_index.module
+++ b/taxonomy_entity_index.module
@@ -203,3 +203,48 @@ function taxonomy_entity_index_reindex_entity_type($entity_type, &$context) {
     $context['finished'] = ($context['sandbox']['progress'] >= $context['sandbox']['max']);
   }
 }
+
+/**
+ * Implements hook_views_api().
+ */
+function taxonomy_entity_index_views_api() {
+  return array(
+    'api' => 3,
+    'path' => drupal_get_path('module', 'taxonomy_entity_index') . '/includes/views',
+  );
+}
+
+/**
+ * Get all entity types, which can be used in the views integration.
+ *
+ * Therefore both the entity type has to be fieldable and the base table
+ * has already a views integration.
+ *
+ * @param $data
+ *   The views data, which can be used to check whether a base table
+ *   has a views integration.
+ *
+ * @param $entity_type
+ *   The entity type, e.g. node, for which the info shall be returned, or NULL
+ *   to return an array with info about all types.
+ *
+ * @return
+ *   Information about all entity types / a single entity type.
+ */
+function taxonomy_entity_index_entity_views_integrable($data, $entity_type = NULL) {
+  $entity_info = entity_get_info($entity_type);
+  if (!empty($entity_type)) {
+    $entity_info = array($entity_type => $entity_info);
+  }
+
+  foreach ($entity_info as $entity_type => $info) {
+    $base_table = isset($info['base table']) ? $info['base table'] : '';
+    // Filter out entity types which don't have a base table implementation
+    // or aren't fieldable.
+    if (empty($base_table) || !isset($data[$base_table]) || empty($info['fieldable'])) {
+      unset($entity_info[$entity_type]);
+    }
+  }
+
+  return $entity_info;
+}
\ No newline at end of file
