added division semigroup