complete refactoring over to Value object