added array reductions