Introduced Semigroup.