making datasource cacheable