non-string equality and hashcode for uniqueness