adds semigroups