Separated out the data provider implementations.