change source to datasource, for consistency with Go standard lib