add reduce()