diff --git a/references_manager.module b/references_manager.module
index 7ce2f0b..d5bd3de 100644
--- a/references_manager.module
+++ b/references_manager.module
@@ -36,13 +36,10 @@ function references_manager_menu() {
             $items[$entity_type . '/%' . $entity_type . '/' . REFERENCES_MANAGER_MENU_PREFIX . $field_name] = array(
               'title' => t('Manage') . ' ' . $instance['label'],
               'page callback' => 'drupal_get_form',
-              'page arguments' => array('references_manager_manage', 0, 1, 2),
-              'access callback' => 'node_access',
-              'access arguments' => array('update', 1),
-              // 'access callback' => 'references_manager_check_access',
-              // 'access arguments' => array(0, 1, 2),
+              'page arguments' => array('references_manager_manage', $entity_type, 1, $field_name),
+              'access callback' => 'references_manager_check_access',
+              'access arguments' => array($entity_type, 1, $field_name),
               'type' => MENU_LOCAL_TASK,
-              'context' => MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE,
               'file' => 'references_manager.pages.inc',
             );
           }
@@ -95,12 +92,16 @@ function references_manager_references_field_types() {
  * Verify the field exists in this entity, and that the user has permission
  * to edit it.
  */
-function references_manager_check_access($entity_type, $entity, $field) {
-  // Extract the correct field name.
-  $field_name = str_replace(REFERENCES_MANAGER_MENU_PREFIX, '', $field);
+function references_manager_check_access($entity_type, $entity, $field_name) {
+  // Must have a field name.
+  if (empty($field_name)) {
+    return FALSE;
+  }
 
-  // Extra some field settings, etc.
+  // Make sure we know the full details of the entity.
   list($entity_id, $revision_id, $bundle) = entity_extract_ids($entity_type, $entity);
+
+  // Extra some field settings, etc.
   $params = array(
     'field_name' => $field_name,
     'entity_type' => $entity_type,
@@ -109,7 +110,7 @@ function references_manager_check_access($entity_type, $entity, $field) {
   $instances = field_read_instances($params);
   $instance = array_pop($instances);
 
-  // If the field doesn't exist, user doesn't have access.
+  // If the field doesn't exist, nothing to gain access to.
   if (empty($instance)) {
     return FALSE;
   }
