Downloaders need to be implementable for providers. Maybe move download function to the provider itself?