backend logic for approval operations