add hashcode and equals method