Implement abstract data_provider, file_data and mem_data classes