refactor to promise favor