removing semigroup dependency