extract IImageProvider to common code;
extract base class of ImageDownloader