new Value and CompositeValue classes (still need to use it)