We should always override hashCode when overriding equals