using a data provider