refactor RationalType to utilise IntType