add map-reduce