add map_reduce