simpler reactive data source logic