add rational, dispatch