add reduce + mapreduce