add hashcode and equals in domain models