refactor CourseDownloader and add FlashCard downloader