added data provider factory