override hashCode as well