Refactored to value objects