diff --git a/og_user_roles.module b/og_user_roles.module
index 134552e..477da9d 100644
--- a/og_user_roles.module
+++ b/og_user_roles.module
@@ -400,14 +400,14 @@ function og_user_roles_og($op, $nid, $uid, $args = array()) {
 
       // Add default role for new group admins, if configured.
       if (isset($args['is_admin']) && $args['is_admin']) {
-        if (($default_admin_role = variable_get('og_user_roles_default_admin_role', 0)) && $default_admin_role != $default_role) {
+        if (($default_admin_role = variable_get('og_user_roles_default_admin_role_' . og_user_roles_get_node_type($nid), 0)) && $default_admin_role != $default_role) {
           og_user_roles_role_add($nid, $uid, $default_admin_role);
         }
       }
       break;
 
     case 'user update':
-      $default_admin_role = variable_get('og_user_roles_default_admin_role', 0);
+      $default_admin_role = variable_get('og_user_roles_default_admin_role_'.$node->type, 0);
       $default_role = og_user_roles_get_group_default_role($nid);
       if ($default_admin_role > 0 && $default_admin_role != $default_role) {
         // Grant role for new group admin.
@@ -429,12 +429,35 @@ function og_user_roles_og($op, $nid, $uid, $args = array()) {
 }
 
 /**
+ * Stores a map from nid to type to avoid heavy node_load's.
+ *
+ * @param $nid
+ *   A node nid to look up.
+ * @param $type
+ *   If know type, set the cache for this node.
+ *
+ * @return
+ *   The type of a node for given nid.
+ */
+function og_user_roles_get_node_type($nid, $type = NULL) {
+  static $nid_to_type = array();
+  if (isset($type)) {
+    $nid_to_type[$nid] = $type;
+  }
+  if (!isset($nid_to_type[$nid])) {
+    $nid_to_type[$nid] = db_result(db_query('SELECT type FROM {node} WHERE nid = %d', $nid));
+  }
+  return $nid_to_type[$nid];
+}
+
+/**
  * Implementation of hook_nodeapi().
  */
 function og_user_roles_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
   switch ($op) {
     case 'load':
       if (og_is_group_type($node->type)) {
+        og_user_roles_get_node_type($node->nid, $node->type);
         $rid = db_result(db_query("SELECT default_role FROM {og_users_roles_group} WHERE gid = %d", $node->nid));
         if ($rid) {
           $node->og_user_roles_default_role = $rid;
@@ -443,6 +466,9 @@ function og_user_roles_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
       break;
 
     case 'insert':
+      if (og_is_group_type($node->type)) {
+        og_user_roles_get_node_type($node->nid, $node->type);
+      }
       if (!empty($node->og_user_roles_default_role) && og_is_group_type($node->type)) {
         db_query("INSERT INTO {og_users_roles_group} (gid, default_role) VALUES (%d, %d)", $node->nid, $node->og_user_roles_default_role);
       }
@@ -609,7 +635,7 @@ function og_user_roles_content_extra_fields($type_name) {
 function og_user_roles_get_group_default_role($nid) {
   $default_role = db_result(db_query("SELECT default_role FROM {og_users_roles_group} WHERE gid = %d", $nid));
   if (!$default_role) {
-    $default_role = variable_get('og_user_roles_default_role', 0);
+    $default_role = variable_get('og_user_roles_default_role_' . og_user_roles_get_node_type($nid), 0);
   }
   return $default_role;
 }
diff --git a/og_user_roles.pages.inc b/og_user_roles.pages.inc
index 5b375b8..80692f5 100644
--- a/og_user_roles.pages.inc
+++ b/og_user_roles.pages.inc
@@ -51,20 +51,22 @@ function og_user_roles_admin_settings() {
     '#description' => t('Select a role to automatically assign to users who join a group.'),
     '#collapsible' => TRUE,
   );
-  $form['og_user_roles_defaults']['og_user_roles_default_admin_role'] = array(
-    '#type' => 'select',
-    '#title' => t('Default role for new group administrators'),
-    '#options' => array(0 => t('None')) + $roles,
-    '#default_value' => variable_get('og_user_roles_default_admin_role', 0),
-    '#description' => t('This role can only be unassigned by removing a user from the administrators of a group.'),
-  );
-  $form['og_user_roles_defaults']['og_user_roles_default_role'] = array(
-    '#type' => 'select',
-    '#title' => t('Default role for new group members'),
-    '#options' => array(0 => t('None')) + $roles,
-    '#default_value' => variable_get('og_user_roles_default_role', 0),
-    '#description' => t('This setting can be overridden at the group level by group admins with the %permission permission.', array('%permission' => 'override group default role')),
-  );
+  foreach ($types as $type => $name) {
+    $form['og_user_roles_defaults']["og_user_roles_default_admin_role_$type"] = array(
+      '#type' => 'select',
+      '#title' => t('Default role for new administrators in %name',array('%name' => $name)),
+      '#options' => array(0 => t('None')) + $roles,
+      '#default_value' => variable_get("og_user_roles_default_admin_role_$type", 0),
+      '#description' => t('This role can only be unassigned by removing a user from the administrators of a group.'),
+    );
+    $form['og_user_roles_defaults']["og_user_roles_default_role_$type"] = array(
+      '#type' => 'select',
+      '#title' => t('Default role for new members in %name',array('%name' => $name)),
+      '#options' => array(0 => t('None')) + $roles,
+      '#default_value' => variable_get("og_user_roles_default_role_$type", 0),
+      '#description' => t('This setting can be overridden at the group level by group admins with the %permission permission.', array('%permission' => 'override group default role')),
+    );
+  }
 
   return system_settings_form($form);
 }
