use TextTuple as map key