completed Rational class