Extract download functionality into a download manager class
Merge branch 'download_manager'