added rational stuff