refactoring around Value
implemented ValueWithAttr