added reduce1, reduceRight1