refactor request  approve flow