added reduce(), reduceRight, and modified create()