move bucketing & combining into observables

deferEvaluation: true means that the work will be skipped on list view