refactored Unifier