diff --git a/uuid.module b/uuid.module
index 0150a63..a5d6d3d 100644
--- a/uuid.module
+++ b/uuid.module
@@ -75,6 +75,16 @@ function uuid_permission() {
 }
 
 /**
+ * Implementation of hook_views_api().
+ */
+function uuid_views_api() {
+  return array(
+    'api' => 2,
+    'path' => drupal_get_path('module', 'uuid'),
+  );
+}
+
+/**
  * Implements of hook_module_implements_alter().
  *
  * Moves implementation of hook_entity_info_alter() to the bottom so it is
diff --git a/uuid.views.inc b/uuid.views.inc
new file mode 100644
index 0000000..253a4f9
--- /dev/null
+++ b/uuid.views.inc
@@ -0,0 +1,40 @@
+<?php
+/**
+ * @file
+ * Views Implementation for UUID
+ */
+
+/**
+ * Implementation of hook_views_data_alter().
+ */
+function uuid_views_data_alter(&$data) {
+  $info = entity_get_info();
+  foreach ($info as $entity_info) {
+    $table = $entity_info['base table'];
+    $schema = drupal_get_schema($table);
+    $data[$table]['uuid'] = array(
+      'title' => t('@type UUID', array('@type' => $entity_info['label'])),
+      'help' => t(
+        'Universally Unique Identifier for @type objects.',
+        array('@type' => $entity_info['label'])
+      ),
+      'field' => array(
+        'handler' => 'views_handler_field',
+        'click sortable' => TRUE,
+      ),
+      'filter' => array(
+        'handler' => 'views_handler_filter_string',
+        'allow empty' => TRUE,
+        'help' => 'Filter on a UUID',
+      ),
+      'argument' => array(
+        'handler' => 'views_handler_argument_string',
+        'help' => 'Argument on a UUID',
+      ),
+      'sort' => array(
+        'handler' => 'views_handler_sort',
+        'help' => 'Sort on UUID',
+      ),
+    );
+  }
+}
