be warned, lazy is not available in hashCode and equals