add constraint support to unifier, add tests