first pass at downloader exception hierarchy