add Collection::reduce()