diff --git a/node_revision_per_role.module b/node_revision_per_role.module
index 35bc8f3..9d712bc 100644
--- a/node_revision_per_role.module
+++ b/node_revision_per_role.module
@@ -44,6 +44,10 @@ function _node_revision_per_role_access($node, $op = 'view', $account = NULL) {
     return TRUE;
   }
 
+  if (user_access("administer own $node->type content revisions", $account) && $node->uid == $account->uid) {
+    return TRUE;
+  }
+
   return FALSE;
 }
 
@@ -67,7 +71,10 @@ function node_revision_per_role_permission() {
 
   foreach (node_type_get_types() as $info) {
     $perms["administer $info->type content revisions"] = array(
-      'title' => t('Administer %type_name: content revisions', array('%type_name' => $info->name)),
+      'title' => t('%type_name: Administer any content revisions', array('%type_name' => $info->name)),
+    );
+    $perms["administer own $info->type content revisions"] = array(
+      'title' => t('%type_name: Administer own content revisions', array('%type_name' => $info->name)),
     );
   }
 
@@ -96,8 +103,12 @@ function node_revision_taxonomy_vocabulary_update($info) {
  * Implements hook_node_type_delete().
  */
 function node_revision_node_type_delete($info) {
+  $or = db_or();
+  $or->condition('permission', 'administer ' . $info->type . ' content revisions');
+  $or->condition('permission', 'administer own ' . $info->type . ' content revisions');
+
   db_delete('role_permission')
-    ->condition('permission', 'administer ' . $info->type . ' content revisions')
+    ->condition($or)
     ->execute();
 
   // Clear the user access cache.
