with hashCode and Friends