Improve the way Equals and Hashcode are generated