diff --git a/eck.entity_type.inc b/eck.entity_type.inc
index c3d74b5..123dd7d 100644
--- a/eck.entity_type.inc
+++ b/eck.entity_type.inc
@@ -396,6 +396,11 @@ function eck__entity_type__info($entity_type) {
             'eck edit bundles',
             "eck administer {$entity_type->name} bundles",
             "eck edit {$entity_type->name} bundles",
+            'eck administer bundles own',
+            'eck edit own bundles own',
+            "eck administer own {$entity_type->name} bundles own",
+            "eck edit own {$entity_type->name} bundles own",
+
           ),
         ),
       ),
diff --git a/eck.module b/eck.module
index e3fde5e..10dd27c 100644
--- a/eck.module
+++ b/eck.module
@@ -552,6 +552,10 @@ function eck_permission() {
         $perms[$perm_name] = array(
           'title' => "{$op_label} {$entity_type->label} {$bundle->label} Entities",
         );
+
+        $perms[$perm_name.' own'] = array(
+          'title' => "{$op_label} {$entity_type->label} own {$bundle->label} Entities",
+        );
       }
     }
   }
@@ -576,20 +580,20 @@ function eck__multiple_access_check($perms, $b_own = FALSE, $account = NULL) {
   if (!isset($account)) {
     $account = $GLOBALS['user'];
   }
-  foreach ($perms as $perm) {
-    if (user_access($perm, $account)) {
-      return TRUE;
+  if ($b_own){
+    foreach ($perms as $perm) {
+      if (user_access($perm . ' own', $account)) {
+        return TRUE;
+      }
     }
   }
-  if (!$b_own) {
-    return FALSE;
-  }
-  // Check for entity author field and user ownership permissions.
+
   foreach ($perms as $perm) {
-    if (user_access($perm . ' own', $account)) {
+    if (user_access($perm, $account)) {
       return TRUE;
     }
   }
+
   // The user does not have any of the supplied permissions.
   return FALSE;
 }
@@ -813,8 +817,14 @@ function eck__entity_access($op, $entity_or_bundle, $account, $entity_type_name)
   }
 
   // @todo should auto-load entity author here.
+  global $user;
+  if ($entity_or_bundle->uid == $user->uid){
+    $isOwn = TRUE;
+  } else {
+    $isOwn = FALSE;
+  }
 
-  return eck__multiple_access_check($permissions, FALSE, $account);
+  return eck__multiple_access_check($permissions, $isOwn, $account);
 }
 
 /**
