refactor rational type to extend from AbstractMultiValueType
refactor to have complete abstract hierarchy