diff --git a/regcode.module b/regcode.module
index 7f979d8..64ec6ff 100644
--- a/regcode.module
+++ b/regcode.module
@@ -502,6 +502,11 @@ function regcode_save($code, $terms = array(), $action = REGCODE_MODE_REPLACE) {
         ->execute();
     }
   }
+  // Trigger the regcode_save hook
+  foreach (module_implements('regcode_save') as $module) {
+    $hook = $module . '_regcode_save';
+    $hook($code, $terms);
+  }
 
   return $rid;
 }
diff --git a/regcode_users/regcode_users.info b/regcode_users/regcode_users.info
new file mode 100644
index 0000000..cacec55
--- /dev/null
+++ b/regcode_users/regcode_users.info
@@ -0,0 +1,15 @@
+name = Registration Code Users
+description = Provides a history of what users used what code.
+package = Registration
+core = 7.x
+configure = admin/config/people/regcode
+dependencies[] = regcode
+
+
+files[] = regcode_users.install
+files[] = regcode_users.module
+files[] = regcode_users.views.inc
+
+
+
+
diff --git a/regcode_users/regcode_users.install b/regcode_users/regcode_users.install
new file mode 100644
index 0000000..d7b59ca
--- /dev/null
+++ b/regcode_users/regcode_users.install
@@ -0,0 +1,60 @@
+<?php
+/**
+ * @file
+ * Install, uninstall and scheme functions for the regcode_user module.
+ */
+
+/**
+ * Implements hook_install().
+ */
+function regcode_users_install(){
+	$spec = array(
+		'type' => 'int', 
+		'description' => 'The user who created the regcode', 
+		'unsigned' => TRUE,
+		'not null' => FALSE,
+		'initial' => 0,
+	);
+	db_add_field('regcode', 'creator', $spec);
+}
+
+/**
+ * Implements hook_schema().
+ */
+function regcode_users_schema() {
+
+  // Definition for the regcode table
+  $schema['regcode_users'] = array(
+    'description' => 'Hold registration code user data',
+    'fields' => array(
+      'rid' => array(
+        'description' => 'RID',
+        'type' => 'serial',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+      ),
+      'uid' => array(
+        'description' => 'User ID',
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => FALSE,
+      ),
+      'used' => array(
+        'description' => 'Time code was used.',
+        'type' => 'int',
+        'not null' => FALSE,
+      ),
+      
+    ),
+    'primary key' => array('rid', 'uid'),
+    
+  );
+
+  return $schema;
+}
+/**
+ * Implements hook_uninstall().
+ */
+function regcode_users_uninstall(){
+	db_drop_field('regcode', 'creator');
+}
diff --git a/regcode_users/regcode_users.module b/regcode_users/regcode_users.module
new file mode 100644
index 0000000..1d12786
--- /dev/null
+++ b/regcode_users/regcode_users.module
@@ -0,0 +1,39 @@
+<?php
+// $Id: regcode.module,v 1.4.2.25 2011/02/18 10:59:49 aidan Exp $
+
+
+/**
+ * Implements hook_regcode_save().
+ */
+function regcode_users_regcode_save($code, $terms) {
+	global $user;
+	
+	$query = db_update('regcode')
+	  ->fields(array(
+	    'creator' => $user->uid,
+	  ))
+	  ->condition('code', check_plain($code->code), '=')
+	  ->execute();
+
+}
+
+
+/**
+ * Implements hook_regcode_used().
+ */
+function regcode_users_regcode_used(&$edit, &$account, $code) {
+	$use = db_insert('regcode_users')
+	  -> fields(array(
+	  	'rid' => $code->rid,
+      'uid' => $account->uid,
+      'used' => REQUEST_TIME,
+	  ))
+	  ->execute();	
+}
+
+/**
+ * Implements hook_views_api().
+ */
+function regcode_users_views_api() {
+  return array('api' => 2.0);
+}
diff --git a/regcode_users/regcode_users.views.inc b/regcode_users/regcode_users.views.inc
new file mode 100644
index 0000000..7f9045b
--- /dev/null
+++ b/regcode_users/regcode_users.views.inc
@@ -0,0 +1,86 @@
+<?php
+
+
+/**
+ * Implements hook_views_data().
+ */
+function regcode_users_views_data() {
+  $data = array();
+
+  $data['regcode_users']['table']['group'] = t('Regcode Users');
+
+
+  $data['regcode_users']['table']['join'] = array(
+    'regcode' => array(
+      'left_field' => 'rid',
+      'field' => 'rid',
+    ),
+  );
+
+  $data['regcode_users']['rid'] = array(
+    'title' => t('Regcode ID'),
+    'help' => t('The unique index for the regcode'),
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  $data['regcode_users']['uid'] = array(
+    'title' => t('User'),
+    'help' => t('The user who used the code.'),
+    'relationship' => array(
+      'base' => 'users',
+      'field' => 'uid',
+      'handler' => 'views_handler_relationship',
+      'label' => t('Regcode User'),
+    ),
+  );
+
+
+
+  $data['regcode_users']['used'] = array(
+    'title' => t('Date Used'),
+    'help' => t('Date the registration code was used.'),
+    'field' => array(
+      'handler' => 'views_handler_field_date',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort_date',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_date',
+    ),
+  );
+
+  // Let regcode know about regcode_users
+  $data['regcode']['table']['join']['regcode_users'] = array(
+    'left_table' => 'regcode_users',
+    'left_field' => 'rid',
+    'field' => 'rid',
+  );
+
+  return $data;
+}
+
+
+function regcode_users_views_data_alter(&$data) {
+  $data['regcode']['creator'] = array(
+    'title' => t('Regcode Creator'),
+    'help' => t('The user who created the code.'),
+    'relationship' => array(
+      'base' => 'users',
+      'field' => 'creator',
+      'handler' => 'views_handler_relationship',
+      'label' => t('Regcode Creator'),
+    ),
+  );
+
+}
\ No newline at end of file
