some initial work on making it easy to add a custom datasource without modifing the original source, #701, #553