added another datasource, refactor