why is this better than the default Semigroup?