better hashCode (I think)