hash code calculation now just considers toString().hashCode()