I think I understand it after seeing how it's used. If you called it ``self.provider_data`` instead of ``self.kwargs`` I think it would make more sense. Also, I don't think this needs to be an abstract class, YAGNI.