add hashcode function
add hashcode