mapper/reducer abstract class