using std string for unification