dirty checking on value object assignment