change hashcode implementation