add data source constructor