add transparent support for rational operations