some refactor downloader