basic downloader implementation