diff --git a/ldap_authorization/ldap_authorization_og/LdapAuthorizationConsumerOG.class.php b/ldap_authorization/ldap_authorization_og/LdapAuthorizationConsumerOG.class.php
index ec92733..f0c7641 100644
--- a/ldap_authorization/ldap_authorization_og/LdapAuthorizationConsumerOG.class.php
+++ b/ldap_authorization/ldap_authorization_og/LdapAuthorizationConsumerOG.class.php
@@ -347,14 +347,15 @@ class LdapAuthorizationConsumerOG extends LdapAuthorizationConsumerAbstract {
 
 
   public function hasAuthorization(&$user, $consumer_id) {
+
     if ($this->ogVersion == 1) {
       list($gid, $rid) = @explode('-', $consumer_id);
-      $roles = og_get_user_roles($gid, $user->uid);
-      $result = (!empty($roles[$rid]));
+      $result = ldap_authorization_og1_has_role($gid, $user->uid, $rid);
     }
     else {
       $result = ldap_authorization_og2_has_consumer_id($consumer_id, $user->uid);
     }
+    
     return $result;
   }
 
@@ -374,9 +375,17 @@ class LdapAuthorizationConsumerOG extends LdapAuthorizationConsumerAbstract {
   *
   */
 
-  public function revokeSingleAuthorization(&$user, $consumer_id, $consumer, &$user_auth_data, $reset = FALSE) {
+  public function revokeSingleAuthorization(&$user, $consumer_id, $consumer, &$user_auth_data, $discarded_user_save_flag = TRUE, $reset = FALSE) {
+    
+    if ($this->ogVersion == 1) {
+      list($gid, $rid) = @explode('-', $consumer_id);
+    }
+    else {
+      list($group_entity_type, $gid, $rid) = @explode(':', $consumer_id);
+    }
+
     if (!$this->hasAuthorization($user, $consumer_id)) {
-      og_invalidate_cache(); // if trying to revoke, but thinks not granted, flush cache
+      og_invalidate_cache(array($gid)); // if trying to revoke, but thinks not granted, flush cache
       if (!$this->hasAuthorization($user, $consumer_id)) {
         return TRUE;
       }
@@ -385,18 +394,17 @@ class LdapAuthorizationConsumerOG extends LdapAuthorizationConsumerAbstract {
     $watchdog_tokens =  array('%consumer_id' => $consumer_id, '%username' => $user->name,
       '%ogversion' => $this->ogVersion, '%function' => 'LdapAuthorizationConsumerOG.revokeSingleAuthorization()');
 
-    if ($this->ogVersion == 1) {
-      list($gid, $rid) = @explode('-', $consumer_id);
-    }
-    else {
-      list($group_entity_type, $gid, $rid) = @explode(':', $consumer_id);
-    }
     // make sure group exists, since og doesn't do much error catching.
     if (!empty($consumer['value'])) {
       $og_group = $consumer['value'];
     }
     else {
-      $og_group = @entity_load_single($group_entity_type, $gid);
+      if ($this->ogVersion == 1) {
+        $og_group = og_load($gid);
+      }
+      else {
+        $og_group = @entity_load_single($group_entity_type, $gid);
+      }
       if (!$og_group) {
         return FALSE; // group cannot be found
       }
@@ -411,16 +419,10 @@ class LdapAuthorizationConsumerOG extends LdapAuthorizationConsumerAbstract {
     // CASE: revoke
     if (count($users_group_roles) == 1) {  // ungroup if only single role left
       if ($this->ogVersion == 1) { // og 7.x-1.x
-        $entity = og_ungroup($gid, 'user', $user->uid, TRUE);
-        if ($reset) {
-          og_invalidate_cache();
-        }
+        $entity = og_ungroup($gid, 'user', $user, TRUE);
       }
       else { // og 7.x-2.x
         $entity = og_ungroup($group_entity_type, $gid, 'user', $user->uid);
-        if ($reset) {
-          og_invalidate_cache(array($gid));
-        }
       }
       $result = (boolean)($entity);
       $watchdog_tokens['%action'] = 'og_ungroup';
@@ -428,19 +430,16 @@ class LdapAuthorizationConsumerOG extends LdapAuthorizationConsumerAbstract {
     else { // if more than one role left, just revoke single role.
       if ($this->ogVersion == 1) { // og 7.x-1.x
         og_role_revoke($gid, $user->uid, $rid);
-        if ($reset) {
-          og_invalidate_cache();
-        }
       }
       else { // og 7.x-2.x
         og_role_revoke($group_entity_type, $gid, $user->uid, $rid);
-        if ($reset) {
-          og_invalidate_cache(array($gid));
-        }
       }
       $watchdog_tokens['%action'] = 'og_role_revoke';
       $result = TRUE;
     }
+    if ($reset) {
+      og_invalidate_cache(array($gid));
+    }
     $watchdog_tokens['%result'] = '$result';
     if ($this->detailedWatchdogLog) {
       watchdog('ldap_authorization_og', '%function revoked: result=%result, gid=%gid, rid=%rid, action=%action for username=%username',
@@ -457,7 +456,7 @@ class LdapAuthorizationConsumerOG extends LdapAuthorizationConsumerAbstract {
    * @see ldapAuthorizationConsumerAbstract::grantSingleAuthorization()
    *
    */
-  public function grantSingleAuthorization(&$user, $consumer_id, $consumer, &$user_auth_data, $reset = FALSE) {
+  public function grantSingleAuthorization(&$user, $consumer_id, $consumer, &$user_auth_data, $discarded_user_save_flag = TRUE, $reset = FALSE) {
     $watchdog_tokens =  array(
       '%consumer_id' => $consumer_id,
       '%username' => $user->name,
@@ -465,8 +464,16 @@ class LdapAuthorizationConsumerOG extends LdapAuthorizationConsumerAbstract {
       '%function' => 'LdapAuthorizationConsumerOG.grantSingleAuthorization()'
     );
 
+    if ($this->ogVersion == 1) {
+      list($gid, $rid) = @explode('-', $consumer_id);
+    }
+    else {
+      list($group_entity_type, $gid, $rid) = @explode(':', $consumer_id);
+      $watchdog_tokens['%entity_type'] = $group_entity_type;
+    }
+    
     if ($this->hasAuthorization($user, $consumer_id)) {
-      og_invalidate_cache(); // if trying to grant, but things already granted, flush cache
+      og_invalidate_cache(array($gid)); // if trying to grant, but things already granted, flush cache
       if ($this->hasAuthorization($user, $consumer_id)) {
         return TRUE;
       }
@@ -479,13 +486,7 @@ class LdapAuthorizationConsumerOG extends LdapAuthorizationConsumerAbstract {
       return FALSE;
     }
 
-    if ($this->ogVersion == 1) {
-      list($gid, $rid) = @explode('-', $consumer_id);
-    }
-    else {
-      list($group_entity_type, $gid, $rid) = @explode(':', $consumer_id);
-      $watchdog_tokens['%entity_type'] = $group_entity_type;
-    }
+
     $watchdog_tokens['%gid'] = $gid;
     $watchdog_tokens['%rid'] = $rid;
     $watchdog_tokens['%uid'] = $user->uid;
@@ -498,6 +499,7 @@ class LdapAuthorizationConsumerOG extends LdapAuthorizationConsumerAbstract {
     }
 
     if ($this->ogVersion == 1) {
+      //@todo. need to test if og_group is needed.  may just need to add a role, if og default membership already exists
       $values = array(
         'entity type' => 'user',
         'entity' => $user,
@@ -506,11 +508,9 @@ class LdapAuthorizationConsumerOG extends LdapAuthorizationConsumerAbstract {
       );
       $user_entity = og_group($gid, $values);
       og_role_grant($gid, $user->uid, $rid);
-      if ($reset) {
-        og_invalidate_cache();
-      }
     }
     else {
+      //@todo.  is 'entity' param in og2 supposed to point to entity id?
       $values = array(
         'entity_type' => 'user',
         'entity' => $user->uid,
@@ -519,11 +519,11 @@ class LdapAuthorizationConsumerOG extends LdapAuthorizationConsumerAbstract {
       );
       $og_membership = og_group($group_entity_type, $gid, $values);
       og_role_grant($group_entity_type, $gid, $user->uid, $rid);
-      if ($reset) {
-        og_invalidate_cache(array($gid));
-      }
-    }
 
+    }
+    if ($reset) {
+      og_invalidate_cache(array($gid));
+    }
 
     if ($this->detailedWatchdogLog) {
       watchdog('ldap_auth_og', '%function <hr />granted: entity_type=%entity_type gid=%gid, rid=%rid for username=%username',
