implement mapEitherWithKey