def semigroup: Semigroup[O]
// and add that the law here is that batchCreate(is) == semigroup.sumOption(is.map(create(_)))