Всё по теме Semigroup