added Partial() and Reduce()