made hashCode computation lazy