diff --git a/uuid.module b/uuid.module
index 73a5d43..5b86758 100644
--- a/uuid.module
+++ b/uuid.module
@@ -75,6 +75,16 @@ function uuid_nodeapi(&$node, $op, $teaser, $page) {
 }
 
 /**
+* Implementation of hook_views_api().
+*/
+function uuid_views_api() {
+  return array(
+    'api' => 2,
+    'path' => drupal_get_path('module', 'uuid'), 
+  );
+}
+
+/**
  * Returns the node associated with a UUID. Uses db_rewrite_sql() to ensure
  * node_access rules are preserved.
  *
diff --git a/uuid.views.inc b/uuid.views.inc
new file mode 100644
index 0000000..e74aa7a
--- /dev/null
+++ b/uuid.views.inc
@@ -0,0 +1,58 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Views Implementation for UUID
+ */
+
+/**
+ * Implementation of hook_views_data().
+ */
+function uuid_views_data() {
+  $data = array();
+
+  module_load_include('install', 'uuid');
+  $tables = uuid_schema();
+  
+  foreach ($tables as $table => $schema) {
+    $base_table = str_replace('uuid_', '', $table);
+    
+    $field = array_shift(array_keys($schema['fields']));
+    
+    $data[$table]['table'] = array(
+      'group' => 'UUID',
+      'join' => array(
+        $base_table => array(
+          'left_field' => $field,
+          'field' => $field,
+        ),
+      )
+    );
+      
+    $data[$table]['uuid'] = array(
+      'title' => t('@table UUID', array('@table' => ucwords($base_table))),
+      'help' => t('Universally Unique Identifier for @table objects.', array('@table' => ucwords($base_table))),
+      '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',
+      ),
+    );
+  }
+  
+  return $data;
+}
+
