splitting reduce into Slice and Chan versions