revoke impl