refactoring, change to use data source proxy