builder impl + implementing hashCode and equals for base objects