Semigroup post

I think it's all converted from js to ps, but you should double check to make sure I didn't miss anything.