Reusable and extensible datasources for tableviews, collectionviews and more