add DataValue class and refactorx