create abstract data provider