request refactor