refactor to subrequests