Add Downloader class which wraps all the downloading logic