initial implementation switching between different datasources