Generic Set, SemiGroup, etc.