re-factor value objects