wip. all semi-rings