separate map reduce methods