move individual function into data provider instead