diff --git a/includes/uuid.views.inc b/includes/uuid.views.inc
new file mode 100644
index 0000000..1a70c75
--- /dev/null
+++ b/includes/uuid.views.inc
@@ -0,0 +1,96 @@
+<?php
+
+/**
+ * @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;
+}
+
+/**
+ * Implementation of hook_views_plugins().
+ */
+function uuid_views_plugins() {
+  $path = drupal_get_path('module', 'uuid') . '/includes';
+  $plugins = array(
+    'argument validator' => array(
+       'uuid_uuid' => array(
+        'title' => t('UUID'),
+        'handler' => 'uuid_plugin_argument_validate_uuid',
+        'path' => $path,
+      ),
+      'uuid_user' => array(
+        'title' => t('User UUID'),
+        'handler' => 'uuid_plugin_argument_validate_user_uuid',
+        'parent' => 'uuid_uuid',
+        'path' => $path,
+      ),
+      'uuid_node' => array(
+        'title' => t('Node UUID'),
+        'handler' => 'uuid_plugin_argument_validate_node_uuid',
+        'parent' => 'uuid_uuid',
+        'path' => $path,
+      ),
+    ),
+    'argument default' => array(
+      'uuid_user' => array(
+        'title' => t('UUID of the logged-in user'),
+        'handler' => 'uuid_plugin_argument_user',
+        'parent' => 'fixed',
+        'path' => $path,
+      ),
+    ),
+  );
+  return $plugins;
+}
\ No newline at end of file
diff --git a/includes/uuid_plugin_argument_user.inc b/includes/uuid_plugin_argument_user.inc
new file mode 100644
index 0000000..d4ea7e0
--- /dev/null
+++ b/includes/uuid_plugin_argument_user.inc
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @file 
+ * Views default argument plugin for user's uuid.
+ */
+
+/**
+ * Default argument plugin to provide the user's uuid.
+ */
+class uuid_plugin_argument_user extends views_plugin_argument_default {
+  function get_argument() {
+    global $user;
+    $account = user_load($user->uid);
+    if (!empty($account->uuid)) {
+      return $account->uuid;
+    }
+  }
+}
\ No newline at end of file
diff --git a/includes/uuid_plugin_argument_validate_node_uuid.inc b/includes/uuid_plugin_argument_validate_node_uuid.inc
new file mode 100644
index 0000000..05cb962
--- /dev/null
+++ b/includes/uuid_plugin_argument_validate_node_uuid.inc
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Views argument validator plugin for node UUIDs.
+ */
+
+/**
+ * Argument validator plugin to validate node UUIDs.
+ *
+ */
+class uuid_plugin_argument_validate_node_uuid extends uuid_plugin_argument_validate_uuid {
+  function validate_argument($argument) {
+    if (parent::validate_argument($argument) && node_get_by_uuid($argument)) {
+      return TRUE;
+    } 
+    else {
+      return FALSE;
+    }
+  }
+}
\ No newline at end of file
diff --git a/includes/uuid_plugin_argument_validate_user_uuid.inc b/includes/uuid_plugin_argument_validate_user_uuid.inc
new file mode 100644
index 0000000..605faa3
--- /dev/null
+++ b/includes/uuid_plugin_argument_validate_user_uuid.inc
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Views argument validator plugin for user UUIDs.
+ */
+
+/**
+ * Argument validator plugin to validate user UUIDs.
+ *
+ */
+class uuid_plugin_argument_validate_user_uuid extends uuid_plugin_argument_validate_uuid {
+  function validate_argument($argument) {
+    if (parent::validate_argument($argument) && user_get_by_uuid($argument)) {
+      return TRUE;
+    } 
+    else {
+      return FALSE;
+    }
+  }
+}
\ No newline at end of file
diff --git a/includes/uuid_plugin_argument_validate_uuid.inc b/includes/uuid_plugin_argument_validate_uuid.inc
new file mode 100644
index 0000000..22ae7f4
--- /dev/null
+++ b/includes/uuid_plugin_argument_validate_uuid.inc
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @file
+ * Views argument validator plugin for UUIDs.
+ */
+
+/**
+ * Argument validator plugin to validate UUIDs.
+ */
+class uuid_plugin_argument_validate_uuid extends views_plugin_argument_validate {
+  function validate_argument($argument) {
+    return uuid_is_valid($argument);
+  }
+}
\ No newline at end of file
diff --git a/uuid.module b/uuid.module
index 3158729..6aa9f06 100644
--- a/uuid.module
+++ b/uuid.module
@@ -141,7 +141,7 @@ function uuid_node_load($node) {
 function uuid_views_api() {
   return array(
     'api' => 2,
-    'path' => drupal_get_path('module', 'uuid'),
+    'path' => drupal_get_path('module', 'uuid') . '/includes',
   );
 }
 
diff --git a/uuid.views.inc b/uuid.views.inc
deleted file mode 100644
index c893b87..0000000
--- a/uuid.views.inc
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/**
- * @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;
-}
