Made DataProvider generic
Renamed DataProvider to DataProducer