added revoke functionality