diff -Naur a/contrib/node_gallery_access/node_gallery_access.admin.inc b/contrib/node_gallery_access/node_gallery_access.admin.inc
--- a/contrib/node_gallery_access/node_gallery_access.admin.inc	2009-10-28 19:21:53.000000000 -0700
+++ b/contrib/node_gallery_access/node_gallery_access.admin.inc	2009-10-28 22:27:59.000000000 -0700
@@ -14,19 +14,26 @@
     '#options' => drupal_map_assoc(node_gallery_get_types()),
     '#default_value' => variable_get('node_gallery_access_types', array()),
     '#weight' => -1,
-    '#description' => t('Specify which node gallery types you want to set access controls.'),
+    '#description' => t('Specify which node gallery types you want allow access controls for.'),
   );
   $form['ng_access_pass_gallery'] = array(
     '#type' => 'textfield',
     '#title' => t('Password Mode Gallery File'),
-    '#description' => t("Specify the image display when viewing a gallery need inputing password. The root is the web root. The default file is %default", array('%default' => $default)),
+    '#description' => t("Specify the image display when viewing a gallery that needs a password. The root is the web root. The default file is %default", array('%default' => $default)),
     '#default_value' => node_gallery_access_default_pass_image('gallery'),
   );
   $form['ng_access_pass_image'] = array(
     '#type' => 'textfield',
     '#title' => t('Password Mode Image File'),
-    '#description' => t("Specify the image display when viewing an image need inputing password. The root is the web root. The default file is %default", array('%default' => $default)),
+    '#description' => t("Specify the image display when viewing a gallery that needs a password. The root is the web root. The default file is %default", array('%default' => $default)),
     '#default_value' => node_gallery_access_default_pass_image(),
   );
+  //TODO: Trigger an automatic permissions rebuild if this changes.  This requires using our own submit function.
+  $form['ng_access_priority'] = array(
+    '#type' => 'weight',
+    '#title' => t('Give Node Gallery Access priority'),
+    '#default_value' => variable_get('ng_access_priority',0),
+    '#description' => t('If you are only using this access control module, you can safely ignore this. If you are using multiple access control modules you can adjust the priority of this module. If you change this setting, you must '.l('rebuild all permissions','admin/content/node-settings/rebuild').'.'),
+  );  
   return system_settings_form($form);
 }
\ No newline at end of file
diff -Naur a/contrib/node_gallery_access/node_gallery_access.module b/contrib/node_gallery_access/node_gallery_access.module
--- a/contrib/node_gallery_access/node_gallery_access.module	2009-10-28 19:21:53.000000000 -0700
+++ b/contrib/node_gallery_access/node_gallery_access.module	2009-10-28 22:27:59.000000000 -0700
@@ -7,8 +7,10 @@
  * Node gallery access module file
  */
 
-define("NODE_GALLERY_ACCESS_PERM_ACCESS_PROTECTED_CONTENTS", 'access protected contents');
-define("NODE_GALLERY_ACCESS_PERM_EDIT_PROTECTED_CONTENTS", 'edit protected contents');
+define("NODE_GALLERY_ACCESS_PERM_ACCESS_PRIVATE_CONTENTS", 'access private galleries');
+define("NODE_GALLERY_ACCESS_PERM_EDIT_PRIVATE_CONTENTS", 'edit private galleries');
+define("NODE_GALLERY_ACCESS_PERM_ACCESS_PASSWORD_CONTENTS", 'access password protected galleries without a password');
+define("NODE_GALLERY_ACCESS_PERM_EDIT_PASSWORD_CONTENTS", 'edit password protected galleries without a password');
 
 define("NODE_GALLERY_ACCESS_TYPE_PUBLIC", 0);
 define("NODE_GALLERY_ACCESS_TYPE_PRIVATE", 1);
@@ -22,7 +24,9 @@
  * Implementation of hook_perm()
  */
 function node_gallery_access_perm() {
-  return array('access protected contents', 'edit protected contents');
+  return array('access private galleries', 'edit private galleries', 
+               'access password protected galleries without a password', 
+	       'edit password protected galleries without a password');
 }
 
 /**
@@ -33,6 +37,38 @@
   db_query("UPDATE {system} SET weight = %d WHERE name = 'node_gallery_lightbox2' AND type = 'module'", $weight + 10);
 }
 
+function node_gallery_access_perms_allow_access($access_type = NODE_GALLERY_ACCESS_TYPE_PUBLIC, $op = 'view', $account = NULL) {
+  global $user;
+  if (!isset($account)) {
+    $account = $user;
+  }
+  
+  //IF they have admin rights, we short circuit, giving access
+  if ($account->uid == 1 || user_access('administer nodes',$account)) {
+    return TRUE;
+  }
+  
+	switch ($access_type) {
+    // Anyone can access public galleries
+	  case NODE_GALLERY_ACCESS_TYPE_PUBLIC:
+	    return TRUE;
+	    break;
+	  case NODE_GALLERY_ACCESS_TYPE_PRIVATE:
+			if (user_access(NODE_GALLERY_ACCESS_PERM_EDIT_PRIVATE_CONTENTS, $account) 
+			 || ($op == 'view' && user_access(NODE_GALLERY_ACCESS_PERM_ACCESS_PRIVATE_CONTENTS, $account))) {
+			    return TRUE;
+			  }
+	    break;
+	  case NODE_GALLERY_ACCESS_TYPE_PASSWORD:
+			if (user_access(NODE_GALLERY_ACCESS_PERM_EDIT_PASSWORD_CONTENTS, $account) 
+			 || ($op == 'view' && user_access(NODE_GALLERY_ACCESS_PERM_ACCESS_PASSWORD_CONTENTS, $account))) {
+			    return TRUE;
+			  }
+	    break;
+	}
+	return FALSE;
+}
+
 /**
  * Implementation of hook_menu()
  */
@@ -86,16 +122,16 @@
   if (!empty($accesses)) {
     $access = $accesses[0];
     if ($access->access_type == NODE_GALLERY_ACCESS_TYPE_PRIVATE) {
-      if ($user->uid != $access->uid && !user_access(NODE_GALLERY_ACCESS_PERM_ACCESS_PROTECTED_CONTENTS) &&
-        !user_access(NODE_GALLERY_ACCESS_PERM_EDIT_PROTECTED_CONTENTS)) {
+      if ($user->uid != $access->uid && !node_gallery_access_perms_allow_access($access->access_type)) {
         drupal_goto('node_gallery/private_content');
       }
     }
     elseif ($access->access_type == NODE_GALLERY_ACCESS_TYPE_PASSWORD) {
-      if ($user->uid == $access->uid) {
-        return ;
+      if ($user->uid == $access->uid || node_gallery_access_perms_allow_access($access->access_type)) {
+        return;
       }
-      elseif (!isset($_SESSION['_node_gallery']['passwords'][$access->nid]) || ($_SESSION['_node_gallery']['passwords'][$access->nid] != $access->password)) {
+      elseif (!isset($_SESSION['_node_gallery']['passwords'][$access->nid]) 
+       || ($_SESSION['_node_gallery']['passwords'][$access->nid] != $access->password)) {
         $_SESSION['_node_gallery'] = array('current' => $access->nid);
         drupal_goto('node_gallery/enterpassword', 'destination='. $_GET['q']);
       }
@@ -123,8 +159,8 @@
   
   $id = ($type == 'image') ? $node->gid : $node->nid;
   
-  if ($user->uid == $node->uid || user_access(NODE_GALLERY_ACCESS_PERM_ACCESS_PROTECTED_CONTENTS)
-   || user_access(NODE_GALLERY_ACCESS_PERM_EDIT_PROTECTED_CONTENTS)
+  $access_type = node_gallery_access_get_node_access($id);
+  if ($user->uid == $node->uid || node_gallery_access_perms_allow_access($access_type)
     || (isset($_SESSION['_node_gallery']['passwords'][$id]) && $_SESSION['_node_gallery']['passwords'][$id] == $node->password)) {
      return TRUE;
   }
@@ -268,9 +304,9 @@
     if (!$user->uid && variable_get('cache', 0)) {
       $GLOBALS['conf']['cache'] = FALSE;
     }
-    if ($user->uid != $node->uid) {
+    if ($user->uid != $node->uid && !node_gallery_access_perms_allow_access()) {
       $id = (!empty($gid) && is_numeric($gid)) ? $gid : $node->nid;
-      // If node is protected and not teaser nor page view and not owner of node
+      // If node is password protected and not teaser nor page view and not owner of node
       if (!isset($_SESSION['_node_gallery']['passwords'][$id])) {
         //a4 for page
         if (!$teaser) {
@@ -300,16 +336,18 @@
  * Implementation of hook_node_access_records()
  */
 function node_gallery_access_node_access_records($node) {
-  //if node is private type
+  //if node is a gallery type
   if (in_array($node->type, (array)node_gallery_get_types())) {
     $access_type = $node->access_type;
   }
+  //if node is a image type, fetch the parent gallery and it's access type
   if (in_array($node->type, (array)node_gallery_get_types('image'))) {
     if (empty($node->gid)) {
       $node->gid = db_result(db_query("SELECT gid FROM {node_galleries} WHERE nid = %d", $node->nid));
     }
     $access_type = node_gallery_access_get_node_access($node->gid)->access_type;
   }
+	$priority = variable_get('ng_access_priority',0);
   if ($access_type == NODE_GALLERY_ACCESS_TYPE_PRIVATE) {
       $grants[] = array(
         'realm' => 'ng_access_author',
@@ -317,26 +355,51 @@
         'grant_view' => TRUE,
         'grant_update' => TRUE,
         'grant_delete' => TRUE,
-        'priority' => 0,
+        'priority' => $priority,
       );
       $grants[] = array(
-        'realm' => 'ng_access_view',
+        'realm' => 'ng_access_private_view',
         'gid' => 1,
         'grant_view' => TRUE,
         'grant_update' => FALSE,
         'grant_delete' => FALSE,
-        'priority' => 0,
+        'priority' => $priority,
       );
       $grants[] = array(
-        'realm' => 'ng_access_admin',
+        'realm' => 'ng_access_private_admin',
         'gid' => 1,
         'grant_view' => TRUE,
         'grant_update' => TRUE,
         'grant_delete' => TRUE,
-        'priority' => 0,
+        'priority' => $priority,
+      );
+  }
+  if ($access_type == NODE_GALLERY_ACCESS_TYPE_PASSWORD) {
+      $grants[] = array(
+        'realm' => 'ng_access_author',
+        'gid' => $node->uid,
+        'grant_view' => TRUE,
+        'grant_update' => TRUE,
+        'grant_delete' => TRUE,
+        'priority' => $priority,
+      );
+      $grants[] = array(
+        'realm' => 'ng_access_password_view',
+        'gid' => 1,
+        'grant_view' => TRUE,
+        'grant_update' => FALSE,
+        'grant_delete' => FALSE,
+        'priority' => $priority,
+      );
+      $grants[] = array(
+        'realm' => 'ng_access_password_admin',
+        'gid' => 1,
+        'grant_view' => TRUE,
+        'grant_update' => TRUE,
+        'grant_delete' => TRUE,
+        'priority' => $priority,
       );
   }
-
   return $grants;
 }
 
@@ -344,12 +407,21 @@
  * Implementation of hook_node_grants()
  */
 function node_gallery_access_node_grants($account, $op) {
-  if ($op == 'view' && user_access(NODE_GALLERY_ACCESS_PERM_ACCESS_PROTECTED_CONTENTS, $account)) {
-    $grants['ng_access_view'] = array(1);
+	//TODO - we need to think about upgrade paths here
+  if ($op == 'view' && user_access(NODE_GALLERY_ACCESS_PERM_ACCESS_PRIVATE_CONTENTS, $account)) {
+    $grants['ng_access_private_view'] = array(1);
+  }
+
+  if (user_access(NODE_GALLERY_ACCESS_PERM_EDIT_PRIVATE_CONTENTS, $account) && ($op == 'update' || $op == 'delete')) {
+    $grants['ng_access_private_admin'] = array(1);
+  }
+
+  if ($op == 'view' && user_access(NODE_GALLERY_ACCESS_PERM_ACCESS_PASSWORD_CONTENTS, $account)) {
+    $grants['ng_access_password_view'] = array(1);
   }
 
-  if (user_access(NODE_GALLERY_ACCESS_PERM_EDIT_PROTECTED_CONTENTS, $account) && ($op == 'update' || $op == 'delete')) {
-    $grants['ng_access_admin'] = array(1);
+  if (user_access(NODE_GALLERY_ACCESS_PERM_EDIT_PASSWORD_CONTENTS, $account) && ($op == 'update' || $op == 'delete')) {
+    $grants['ng_access_password_admin'] = array(1);
   }
 
   $grants['ng_access_author'] = array($account->uid);
