diff --git uuid.module uuid.module
index 6e50255..22e4ee5 100644
--- uuid.module
+++ uuid.module
@@ -76,6 +76,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 uuid.views.inc uuid.views.inc
new file mode 100644
index 0000000..ea2ec9e
--- /dev/null
+++ uuid.views.inc
@@ -0,0 +1,41 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Views Implementation for UUID
+ */
+
+/**
+ * Implementation of hook_views_data().
+ */
+function uuid_views_data_alter(&$data) {
+  // @todo: figure out why drupal_get_schema loads nothing.
+  module_load_include('install', 'uuid');
+  $tables = uuid_schema();
+
+  foreach ($tables as $table => $schema) {
+    // We don't worry about any UUID tables that don't implement Views.
+    $base_table = str_replace('uuid_', '', $table);
+    if (empty($data[$base_table])) {
+      continue;
+    }
+
+    $data[$table]['table']['group'] = t('UUID');
+
+    $field = array_shift(array_keys($schema['fields']));
+    $data[$table]['table']['join'][$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,
+      ),
+    );
+  }
+}
\ No newline at end of file
