diff --git a/modules/registration_views/includes/registration_handler_field_entity_capacity_total.inc b/modules/registration_views/includes/registration_handler_field_entity_capacity_total.inc
index f55a509..c46b0ee 100644
--- a/modules/registration_views/includes/registration_handler_field_entity_capacity_total.inc
+++ b/modules/registration_views/includes/registration_handler_field_entity_capacity_total.inc
@@ -1,18 +1,145 @@
 <?php
+
 /**
  * @file
- * Display maximum slots for an entity.
+ * Definition of views_plugin_access_perm.
  */
-class registration_handler_field_entity_capacity_total extends views_handler_field {
-  function render($values) {
-    $slots = $this->get_value($values);
-    if (isset($slots)) {
-      if (!empty($slots)) {
-        return $slots;
+
+/**
+ * Access plugin that provides permission-based access control.
+ *
+ * @ingroup views_access_plugins
+ */
+class registration_plugin_access_administer_registrations extends views_plugin_access {
+  function access($account) {
+    $entity = $this->tokenize_value($this->options['entity'], 0);
+    return registration_administer_registrations_access($this->options['entity_type'], (int)$entity, $account);
+  }
+
+  function get_access_callback() {
+    $entity = $this->tokenize_value($this->options['entity'], 0);
+    return array('registration_administer_registrations_access', array($this->options['entity_type'], (int)$entity));
+  }
+
+  function summary_title() {
+    return t('%entity_type with ID %entity', array('%entity_type' => $this->options['entity_type'], '%entity' => $this->options['entity']));
+  }
+
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['entity_type'] = array('default' => NULL);
+    $options['entity'] = array('default' => NULL);
+
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    $form['entity_type'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Entity type'),
+      '#default_value' => $this->options['entity_type'],
+      '#required' => TRUE,
+      '#description' => t("The type of entity who's permission needs to be checked."),
+    );
+    $form['entity'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Entity ID'),
+      '#default_value' => $this->options['entity'],
+      '#required' => TRUE,
+      '#description' => t("The entity ID of the entity who's permission needs to be checked."),
+    );
+
+    $count = 0; // This lets us prepare the key as we want it printed.
+    foreach ($this->view->display_handler->get_handlers('argument') as $arg => $handler) {
+      $options[t('Arguments')]['%' . ++$count] = t('@argument title', array('@argument' => $handler->ui_name()));
+      $options[t('Arguments')]['!' . $count] = t('@argument input', array('@argument' => $handler->ui_name()));
+    }
+
+    if (!empty($options)) {
+      $output = '<p>' . t('The following tokens are available. If you would like to have the characters \'[\' and \']\' please use the html entity codes \'%5B\' or  \'%5D\' or they will get replaced with empty space.' . '</p>');
+      foreach (array_keys($options) as $type) {
+        if (!empty($options[$type])) {
+          $items = array();
+          foreach ($options[$type] as $key => $value) {
+            $items[] = $key . ' == ' . $value;
+          }
+          $output .= theme('item_list',
+            array(
+              'items' => $items,
+              'type' => $type
+            ));
+        }
       }
-      else {
-        return t('Unlimited');
+
+      $form['token_help'] = array(
+        '#type' => 'fieldset',
+        '#title' => t('Replacement patterns'),
+        '#collapsible' => TRUE,
+        '#collapsed' => TRUE,
+        '#value' => $output,
+        '#id' => 'edit-options-token-help',
+        '#dependency' => array(
+          'edit-options-tokenize' => array(1),
+        ),
+        '#prefix' => '<div>',
+        '#suffix' => '</div>',
+      );
+    }
+  }
+
+  function options_validate(&$form, &$form_state) {
+    // @todo
+    if (FALSE && !$form_state['values']['entity_type']) {
+      form_error($form['entity_type'], t('You must enter a valid entity type.'));
+    }
+  }
+
+  /**
+   * Get the 'render' tokens to use for advanced rendering.
+   *
+   * This runs through all of the fields and arguments that
+   * are available and gets their values. This will then be
+   * used in one giant str_replace().
+   */
+  function get_render_tokens() {
+    $tokens = array();
+    if (!empty($this->view->build_info['substitutions'])) {
+      $tokens = $this->view->build_info['substitutions'];
+    }
+
+    $path = explode('/', $this->view->display_handler->get_option('path'));
+    $count = 0;
+    foreach ($path as $key => $piece) {
+      if (strpos($piece, '%') !== FALSE) {
+        $token = '%' . ++$count;
+        if (!isset($tokens[$token])) {
+          $tokens[$token] = '';
+        }
+
+        // Use strip tags as there should never be HTML in the path.
+        // However, we need to preserve special characters like " that
+        // were removed by check_plain().
+        $tokens['!' . $count] = $key;
       }
     }
+
+    return $tokens;
+  }
+
+  /**
+   * Replace a value with tokens from the last field.
+   */
+  function tokenize_value($value, $row_index = NULL) {
+    if (strpos($value, '[') !== FALSE || strpos($value, '!') !== FALSE || strpos($value, '%') !== FALSE) {
+      $tokens = $this->get_render_tokens();
+
+      $value = filter_xss_admin($value);
+      $value = strtr($value, $tokens);
+      $value = strip_tags($value);
+    }
+
+    return $value;
   }
 }
diff --git a/modules/registration_views/includes/registration_plugin_access_administer_registrations.inc b/modules/registration_views/includes/registration_plugin_access_administer_registrations.inc
new file mode 100644
index 0000000..c46b0ee
--- /dev/null
+++ b/modules/registration_views/includes/registration_plugin_access_administer_registrations.inc
@@ -0,0 +1,145 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_plugin_access_perm.
+ */
+
+/**
+ * Access plugin that provides permission-based access control.
+ *
+ * @ingroup views_access_plugins
+ */
+class registration_plugin_access_administer_registrations extends views_plugin_access {
+  function access($account) {
+    $entity = $this->tokenize_value($this->options['entity'], 0);
+    return registration_administer_registrations_access($this->options['entity_type'], (int)$entity, $account);
+  }
+
+  function get_access_callback() {
+    $entity = $this->tokenize_value($this->options['entity'], 0);
+    return array('registration_administer_registrations_access', array($this->options['entity_type'], (int)$entity));
+  }
+
+  function summary_title() {
+    return t('%entity_type with ID %entity', array('%entity_type' => $this->options['entity_type'], '%entity' => $this->options['entity']));
+  }
+
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['entity_type'] = array('default' => NULL);
+    $options['entity'] = array('default' => NULL);
+
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    $form['entity_type'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Entity type'),
+      '#default_value' => $this->options['entity_type'],
+      '#required' => TRUE,
+      '#description' => t("The type of entity who's permission needs to be checked."),
+    );
+    $form['entity'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Entity ID'),
+      '#default_value' => $this->options['entity'],
+      '#required' => TRUE,
+      '#description' => t("The entity ID of the entity who's permission needs to be checked."),
+    );
+
+    $count = 0; // This lets us prepare the key as we want it printed.
+    foreach ($this->view->display_handler->get_handlers('argument') as $arg => $handler) {
+      $options[t('Arguments')]['%' . ++$count] = t('@argument title', array('@argument' => $handler->ui_name()));
+      $options[t('Arguments')]['!' . $count] = t('@argument input', array('@argument' => $handler->ui_name()));
+    }
+
+    if (!empty($options)) {
+      $output = '<p>' . t('The following tokens are available. If you would like to have the characters \'[\' and \']\' please use the html entity codes \'%5B\' or  \'%5D\' or they will get replaced with empty space.' . '</p>');
+      foreach (array_keys($options) as $type) {
+        if (!empty($options[$type])) {
+          $items = array();
+          foreach ($options[$type] as $key => $value) {
+            $items[] = $key . ' == ' . $value;
+          }
+          $output .= theme('item_list',
+            array(
+              'items' => $items,
+              'type' => $type
+            ));
+        }
+      }
+
+      $form['token_help'] = array(
+        '#type' => 'fieldset',
+        '#title' => t('Replacement patterns'),
+        '#collapsible' => TRUE,
+        '#collapsed' => TRUE,
+        '#value' => $output,
+        '#id' => 'edit-options-token-help',
+        '#dependency' => array(
+          'edit-options-tokenize' => array(1),
+        ),
+        '#prefix' => '<div>',
+        '#suffix' => '</div>',
+      );
+    }
+  }
+
+  function options_validate(&$form, &$form_state) {
+    // @todo
+    if (FALSE && !$form_state['values']['entity_type']) {
+      form_error($form['entity_type'], t('You must enter a valid entity type.'));
+    }
+  }
+
+  /**
+   * Get the 'render' tokens to use for advanced rendering.
+   *
+   * This runs through all of the fields and arguments that
+   * are available and gets their values. This will then be
+   * used in one giant str_replace().
+   */
+  function get_render_tokens() {
+    $tokens = array();
+    if (!empty($this->view->build_info['substitutions'])) {
+      $tokens = $this->view->build_info['substitutions'];
+    }
+
+    $path = explode('/', $this->view->display_handler->get_option('path'));
+    $count = 0;
+    foreach ($path as $key => $piece) {
+      if (strpos($piece, '%') !== FALSE) {
+        $token = '%' . ++$count;
+        if (!isset($tokens[$token])) {
+          $tokens[$token] = '';
+        }
+
+        // Use strip tags as there should never be HTML in the path.
+        // However, we need to preserve special characters like " that
+        // were removed by check_plain().
+        $tokens['!' . $count] = $key;
+      }
+    }
+
+    return $tokens;
+  }
+
+  /**
+   * Replace a value with tokens from the last field.
+   */
+  function tokenize_value($value, $row_index = NULL) {
+    if (strpos($value, '[') !== FALSE || strpos($value, '!') !== FALSE || strpos($value, '%') !== FALSE) {
+      $tokens = $this->get_render_tokens();
+
+      $value = filter_xss_admin($value);
+      $value = strtr($value, $tokens);
+      $value = strip_tags($value);
+    }
+
+    return $value;
+  }
+}
diff --git a/modules/registration_views/includes/registration_views.views_default.inc b/modules/registration_views/includes/registration_views.views_default.inc
new file mode 100644
index 0000000..192a7d6
--- /dev/null
+++ b/modules/registration_views/includes/registration_views.views_default.inc
@@ -0,0 +1,243 @@
+<?php
+/**
+ * @file
+ * registration_views.views_default.inc
+ */
+
+/**
+ * Implements hook_views_default_views().
+ */
+function registration_views_views_default_views() {
+  $export = array();
+
+  $view = new view();
+  $view->name = 'registrations';
+  $view->description = '';
+  $view->tag = 'default';
+  $view->base_table = 'registration';
+  $view->human_name = 'Registrations';
+  $view->core = 7;
+  $view->api_version = '3.0';
+  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+  /* Display: Master */
+  $handler = $view->new_display('default', 'Master', 'default');
+  $handler->display->display_options['title'] = 'Registrations';
+  $handler->display->display_options['use_more_always'] = FALSE;
+  $handler->display->display_options['access']['type'] = 'administer_registrations';
+  $handler->display->display_options['access']['entity_type'] = 'node';
+  $handler->display->display_options['access']['entity'] = '!1';
+  $handler->display->display_options['cache']['type'] = 'none';
+  $handler->display->display_options['query']['type'] = 'views_query';
+  $handler->display->display_options['exposed_form']['type'] = 'basic';
+  $handler->display->display_options['pager']['type'] = 'full';
+  $handler->display->display_options['pager']['options']['items_per_page'] = '50';
+  $handler->display->display_options['style_plugin'] = 'table';
+  $handler->display->display_options['style_options']['columns'] = array(
+    'capacity_used' => 'capacity_used',
+    'registration_id' => 'registration_id',
+    'anon_mail' => 'anon_mail',
+    'mail' => 'mail',
+    'name_1' => 'name_1',
+    'name' => 'name',
+    'count' => 'count',
+    'created' => 'created',
+    'state' => 'state',
+    'view_registration' => 'view_registration',
+    'edit_registration' => 'view_registration',
+    'delete_registration' => 'view_registration',
+  );
+  $handler->display->display_options['style_options']['default'] = 'created';
+  $handler->display->display_options['style_options']['info'] = array(
+    'capacity_used' => array(
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'registration_id' => array(
+      'sortable' => 1,
+      'default_sort_order' => 'asc',
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'anon_mail' => array(
+      'sortable' => 1,
+      'default_sort_order' => 'asc',
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'mail' => array(
+      'sortable' => 1,
+      'default_sort_order' => 'asc',
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'name_1' => array(
+      'sortable' => 1,
+      'default_sort_order' => 'asc',
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'name' => array(
+      'sortable' => 1,
+      'default_sort_order' => 'asc',
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'count' => array(
+      'sortable' => 1,
+      'default_sort_order' => 'desc',
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'created' => array(
+      'sortable' => 1,
+      'default_sort_order' => 'asc',
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'state' => array(
+      'sortable' => 1,
+      'default_sort_order' => 'asc',
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'view_registration' => array(
+      'align' => '',
+      'separator' => ' ',
+      'empty_column' => 0,
+    ),
+    'edit_registration' => array(
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'delete_registration' => array(
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+  );
+  /* Header: Global: Text area */
+  $handler->display->display_options['header']['area']['id'] = 'area';
+  $handler->display->display_options['header']['area']['table'] = 'views';
+  $handler->display->display_options['header']['area']['field'] = 'area';
+  $handler->display->display_options['header']['area']['empty'] = TRUE;
+  $handler->display->display_options['header']['area']['content'] = 'List of registrations for <em>%1</em>. <strong>[count]</strong> are filled.';
+  $handler->display->display_options['header']['area']['format'] = 'filtered_html';
+  $handler->display->display_options['header']['area']['tokenize'] = TRUE;
+  /* No results behavior: Global: Unfiltered text */
+  $handler->display->display_options['empty']['area_text_custom']['id'] = 'area_text_custom';
+  $handler->display->display_options['empty']['area_text_custom']['table'] = 'views';
+  $handler->display->display_options['empty']['area_text_custom']['field'] = 'area_text_custom';
+  $handler->display->display_options['empty']['area_text_custom']['label'] = 'Empty text';
+  $handler->display->display_options['empty']['area_text_custom']['empty'] = TRUE;
+  $handler->display->display_options['empty']['area_text_custom']['content'] = 'There are no registrants.';
+  /* Relationship: Registration: Author entity author_uid */
+  $handler->display->display_options['relationships']['author']['id'] = 'author';
+  $handler->display->display_options['relationships']['author']['table'] = 'registration';
+  $handler->display->display_options['relationships']['author']['field'] = 'author';
+  $handler->display->display_options['relationships']['author']['label'] = 'Created By';
+  /* Relationship: Registration: User */
+  $handler->display->display_options['relationships']['user_uid']['id'] = 'user_uid';
+  $handler->display->display_options['relationships']['user_uid']['table'] = 'registration';
+  $handler->display->display_options['relationships']['user_uid']['field'] = 'user_uid';
+  /* Field: Registration: Registration ID */
+  $handler->display->display_options['fields']['registration_id']['id'] = 'registration_id';
+  $handler->display->display_options['fields']['registration_id']['table'] = 'registration';
+  $handler->display->display_options['fields']['registration_id']['field'] = 'registration_id';
+  $handler->display->display_options['fields']['registration_id']['label'] = 'ID';
+  /* Field: Registration: Anonymous e-mail */
+  $handler->display->display_options['fields']['anon_mail']['id'] = 'anon_mail';
+  $handler->display->display_options['fields']['anon_mail']['table'] = 'registration';
+  $handler->display->display_options['fields']['anon_mail']['field'] = 'anon_mail';
+  $handler->display->display_options['fields']['anon_mail']['label'] = '';
+  $handler->display->display_options['fields']['anon_mail']['exclude'] = TRUE;
+  $handler->display->display_options['fields']['anon_mail']['element_label_colon'] = FALSE;
+  /* Field: User: E-mail */
+  $handler->display->display_options['fields']['mail']['id'] = 'mail';
+  $handler->display->display_options['fields']['mail']['table'] = 'users';
+  $handler->display->display_options['fields']['mail']['field'] = 'mail';
+  $handler->display->display_options['fields']['mail']['relationship'] = 'user_uid';
+  $handler->display->display_options['fields']['mail']['label'] = 'Email';
+  $handler->display->display_options['fields']['mail']['alter']['alter_text'] = TRUE;
+  $handler->display->display_options['fields']['mail']['alter']['text'] = '[anon_mail][mail]';
+  $handler->display->display_options['fields']['mail']['hide_alter_empty'] = FALSE;
+  /* Field: User: Name */
+  $handler->display->display_options['fields']['name_1']['id'] = 'name_1';
+  $handler->display->display_options['fields']['name_1']['table'] = 'users';
+  $handler->display->display_options['fields']['name_1']['field'] = 'name';
+  $handler->display->display_options['fields']['name_1']['relationship'] = 'user_uid';
+  $handler->display->display_options['fields']['name_1']['label'] = 'User';
+  /* Field: User: Name */
+  $handler->display->display_options['fields']['name']['id'] = 'name';
+  $handler->display->display_options['fields']['name']['table'] = 'users';
+  $handler->display->display_options['fields']['name']['field'] = 'name';
+  $handler->display->display_options['fields']['name']['relationship'] = 'author';
+  $handler->display->display_options['fields']['name']['label'] = 'Created By';
+  /* Field: Registration: Slots consumed */
+  $handler->display->display_options['fields']['count']['id'] = 'count';
+  $handler->display->display_options['fields']['count']['table'] = 'registration';
+  $handler->display->display_options['fields']['count']['field'] = 'count';
+  $handler->display->display_options['fields']['count']['label'] = 'Count';
+  /* Field: Registration: Date created */
+  $handler->display->display_options['fields']['created']['id'] = 'created';
+  $handler->display->display_options['fields']['created']['table'] = 'registration';
+  $handler->display->display_options['fields']['created']['field'] = 'created';
+  $handler->display->display_options['fields']['created']['label'] = 'Created';
+  $handler->display->display_options['fields']['created']['date_format'] = 'medium';
+  /* Field: Registration: State entity */
+  $handler->display->display_options['fields']['state']['id'] = 'state';
+  $handler->display->display_options['fields']['state']['table'] = 'registration';
+  $handler->display->display_options['fields']['state']['field'] = 'state';
+  $handler->display->display_options['fields']['state']['label'] = 'State';
+  /* Field: Registration: View link */
+  $handler->display->display_options['fields']['view_registration']['id'] = 'view_registration';
+  $handler->display->display_options['fields']['view_registration']['table'] = 'registration';
+  $handler->display->display_options['fields']['view_registration']['field'] = 'view_registration';
+  $handler->display->display_options['fields']['view_registration']['label'] = 'Actions';
+  /* Field: Registration: Edit link */
+  $handler->display->display_options['fields']['edit_registration']['id'] = 'edit_registration';
+  $handler->display->display_options['fields']['edit_registration']['table'] = 'registration';
+  $handler->display->display_options['fields']['edit_registration']['field'] = 'edit_registration';
+  /* Field: Registration: Delete link */
+  $handler->display->display_options['fields']['delete_registration']['id'] = 'delete_registration';
+  $handler->display->display_options['fields']['delete_registration']['table'] = 'registration';
+  $handler->display->display_options['fields']['delete_registration']['field'] = 'delete_registration';
+  /* Contextual filter: Registration: Host entity ID */
+  $handler->display->display_options['arguments']['entity_id']['id'] = 'entity_id';
+  $handler->display->display_options['arguments']['entity_id']['table'] = 'registration';
+  $handler->display->display_options['arguments']['entity_id']['field'] = 'entity_id';
+  $handler->display->display_options['arguments']['entity_id']['default_action'] = 'not found';
+  $handler->display->display_options['arguments']['entity_id']['title_enable'] = TRUE;
+  $handler->display->display_options['arguments']['entity_id']['title'] = '%1';
+  $handler->display->display_options['arguments']['entity_id']['default_argument_type'] = 'fixed';
+  $handler->display->display_options['arguments']['entity_id']['summary']['number_of_records'] = '0';
+  $handler->display->display_options['arguments']['entity_id']['summary']['format'] = 'default_summary';
+  $handler->display->display_options['arguments']['entity_id']['summary_options']['items_per_page'] = '25';
+  $handler->display->display_options['arguments']['entity_id']['specify_validation'] = TRUE;
+  $handler->display->display_options['arguments']['entity_id']['validate']['type'] = 'node';
+
+  /* Display: Page */
+  $handler = $view->new_display('page', 'Page', 'page');
+  $handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
+  $handler->display->display_options['path'] = 'node/%/registrations/list';
+  $handler->display->display_options['menu']['type'] = 'default tab';
+  $handler->display->display_options['menu']['title'] = 'Registrations';
+  $handler->display->display_options['menu']['weight'] = '0';
+  $handler->display->display_options['menu']['context'] = 0;
+  $handler->display->display_options['tab_options']['type'] = 'tab';
+  $handler->display->display_options['tab_options']['title'] = 'Manage Registrations';
+  $handler->display->display_options['tab_options']['weight'] = '0';
+  $export['registrations'] = $view;
+
+  return $export;
+}
diff --git a/modules/registration_views/registration_views.info b/modules/registration_views/registration_views.info
index 13f8076..86a38c8 100644
--- a/modules/registration_views/registration_views.info
+++ b/modules/registration_views/registration_views.info
@@ -18,3 +18,4 @@ files[] = includes/registration_handler_field_entity_capacity_total.inc
 files[] = includes/registration_handler_field_entity_datetime.inc
 files[] = includes/registration_handler_field_entity_settings_link.inc
 files[] = includes/registration_handler_field_entity_registration_status.inc
+files[] = includes/registration_plugin_access_administer_registrations.inc
\ No newline at end of file
diff --git a/modules/registration_views/registration_views.module b/modules/registration_views/registration_views.module
index e473382..662aa73 100644
--- a/modules/registration_views/registration_views.module
+++ b/modules/registration_views/registration_views.module
@@ -5,6 +5,7 @@
  * Entity Registration Views integration
  */
 
+
 /**
  * Implements hook_views_api().
  */
@@ -16,6 +17,25 @@ function registration_views_views_api() {
 }
 
 /**
+ * Implements hook_views_plugins().
+ */
+function registration_views_views_plugins() {
+  $plugins = array(
+    'access' => array(
+      'administer_registrations' => array(
+        'title' => t('Administer registrations'),
+        'help' => t('Access will be granted to users with administer registrations access for a specified entity.'),
+        'handler' => 'registration_plugin_access_administer_registrations',
+        'uses options' => TRUE,
+        'help topic' => 'access-administer-registrations',
+      ),
+    ),
+  );
+
+  return $plugins;
+}
+
+/**
  * Implements hook_views_data().
  */
 function registration_views_views_data() {
diff --git a/registration.module b/registration.module
index 1506de5..4fb2dab 100644
--- a/registration.module
+++ b/registration.module
@@ -471,6 +471,8 @@ function registration_register_page_access($entity_type, $entity) {
  *   The host entity type.
  * @param object $entity
  *   The host entity.
+ * @param object $account
+ *   (optional) The account to check, if not given use currently logged in user.
  *
  * @return bool
  *   Whether a user can view registrations for a host entity.
@@ -478,13 +480,22 @@ function registration_register_page_access($entity_type, $entity) {
  * @see registration_registrations_page()
  * @see registration_menu()
  */
-function registration_administer_registrations_access($entity_type, $entity) {
+function registration_administer_registrations_access($entity_type, $entity, $account = NULL) {
+  global $user;
+
+  if (is_numeric($entity)) {
+    $entity = entity_object_load($entity, $entity_type);
+  }
+  if (!isset($account)) {
+    $account = $user;
+  }
+
   $registration_type = registration_get_entity_registration_type($entity_type, $entity);
   if ($registration_type) {
-    if (user_access("administer $registration_type registration")) {
+    if (user_access("administer $registration_type registration", $account)) {
       return TRUE;
     }
-    elseif (user_access("administer own $registration_type registration") && entity_access('update', $entity_type, $entity)) {
+    elseif (user_access("administer own $registration_type registration", $account) && entity_access('update', $entity_type, $entity, $account)) {
       return TRUE;
     }
   }
