diff --git a/nodeaccess.install b/nodeaccess.install
index b917749..35589e4 100644
--- a/nodeaccess.install
+++ b/nodeaccess.install
@@ -5,19 +5,50 @@
  * Implementation of hook_install().
  */
 function nodeaccess_install() {
-  // Create tables.
-  //drupal_install_schema('nodeaccess');
   // Set up default permissions to be view for authenticated and
   // anonymous users, and all permissions for author.
   $grants = array();
-  $grants[] = array('gid' => 1, 'realm' => 'nodeaccess_rid',
-                    'grant_view' => 1, 'grant_update' => 0, 'grant_delete' => 0);
-  $grants[] = array('gid' => 2, 'realm' => 'nodeaccess_rid',
-                    'grant_view' => 1, 'grant_update' => 0, 'grant_delete' => 0);
+  $role_perms = user_role_permissions(array(1 => 1, 2 => 2));
+  $role_perms[1]['access content'] = isset($role_perms[1]['access content'])?
+                                      intval($role_perms[1]['access content']) : 0;
+  $role_perms[2]['access content'] = isset($role_perms[2]['access content'])?
+                                      intval($role_perms[2]['access content']) : 0;
+  // Anonymous user setting.
+  $grants[] = array(
+                'gid' => 1,
+                'realm' => 'nodeaccess_rid',
+                'grant_view' => $role_perms[1]['access content'],
+              );
+  // Authenticated user setting.
+  $grants[] = array(
+                'gid' => 2,
+                'realm' => 'nodeaccess_rid',
+                'grant_view' => $role_perms[2]['access content'],
+              );
   $author_prefs = array();
   foreach (node_type_get_types() as $type => $name) {
+    // We check the edit permissions for anonymous and authenticated users.
+    $edit_perm = 'edit any ' . $type . ' content';
+    $role_perms[1][$edit_perm] = isset($role_perms[1][$edit_perm])?
+                                      intval($role_perms[1][$edit_perm]) : 0;
+    $role_perms[2][$edit_perm] = isset($role_perms[2][$edit_perm])?
+                                      intval($role_perms[2][$edit_perm]) : 0;
+    $grants[0]['grant_update'] = $role_perms[1][$edit_perm];
+    $grants[1]['grant_update'] = $role_perms[2][$edit_perm];
+    // We check the delete permissions for anonymous and authenticated users.
+    $delete_perm = 'delete any ' . $type . ' content';
+    $role_perms[1][$delete_perm] = isset($role_perms[1][$delete_perm])?
+                                      intval($role_perms[1][$delete_perm]) : 0;
+    $role_perms[2][$delete_perm] = isset($role_perms[2][$delete_perm])?
+                                      intval($role_perms[2][$delete_perm]) : 0;
+    $grants[0]['grant_delete'] = $role_perms[1][$delete_perm];
+    $grants[1]['grant_delete'] = $role_perms[2][$delete_perm];
     variable_set('nodeaccess_' . $type, $grants);
-    $author_prefs[$type] = array('grant_view' => 1, 'grant_update' => 1, 'grant_delete' => 1);
+    $author_prefs[$type] = array(
+                            'grant_view' => 1,
+                            'grant_update' => 1,
+                            'grant_delete' => 1,
+                          );
   }
   variable_set('nodeaccess_authors', $author_prefs);
   // Set up all permissions to be editable by default.
diff --git a/nodeaccess.module b/nodeaccess.module
index 4de877e..1845502 100644
--- a/nodeaccess.module
+++ b/nodeaccess.module
@@ -337,6 +337,7 @@ function nodeaccess_admin_form_submit($form, $form_state) {
   variable_set('nodeaccess-grants', $allowed_grants);
   // Save allowed roles, role aliases and weights.
   $alias_prefs = array();
+  $allowed_roles = array();
   foreach ($form_values['role'] as $id => $val) {
     $allowed_roles[$id] = $val['allow'];
     // Save alias and weight only for allowed roles.
@@ -1100,23 +1101,29 @@ function nodeaccess_node_type_update($info) {
  * Implements hook_node_type_insert().
  */
 function nodeaccess_node_type_insert($info) {
-  // New node type, default to view for authenticated and
-  // anonymous users, and all permissions for author.
+  // New node type, default to whatever is set for
+  // access content permission. 
+  $role_perms = user_role_permissions(array(1 => 1, 2 => 2));
+  $role_perms[1]['access content'] = isset($role_perms[1]['access content'])?
+                                      intval($role_perms[1]['access content']) : 0;
+  $role_perms[2]['access content'] = isset($role_perms[2]['access content'])?
+                                      intval($role_perms[2]['access content']) : 0;
   $grants[] = array(
     'gid' => 1,
     'realm' => 'nodeaccess_rid',
-    'grant_view' => 1,
+    'grant_view' => $role_perms[1]['access content'],
     'grant_update' => 0,
     'grant_delete' => 0,
   );
   $grants[] = array(
     'gid' => 2,
     'realm' => 'nodeaccess_rid',
-    'grant_view' => 1,
+    'grant_view' => $role_perms[1]['access content'],
     'grant_update' => 0,
     'grant_delete' => 0,
   );
   variable_set('nodeaccess_' . $info->type, $grants);
+  // Add all permissions for author.
   $author_prefs = variable_get('nodeaccess_authors', array());
   $author_prefs[$info->type] = array(
     'grant_view' => 1,
