implemented flatmap, and reimplemented map and map2 using flatmap