Split up data source and delegate