0: deep refactor for the property, changed with value object