introduce IRIValueType which is a wrapper around a IValue so that Custom
types stay IValues