unify approval logic