Added Semigroup instances.