added addition and subtraction methods, as well as map2: (A, A) => A