Extract downloader and refactor.