diff --git a/fay-base.cabal b/fay-base.cabal
--- a/fay-base.cabal
+++ b/fay-base.cabal
@@ -1,5 +1,5 @@
 name:                fay-base
-version:             0.14.3.2
+version:             0.16.0.0
 synopsis:            The base package for Fay.
 description:         The base package for Fay.
                      This package exports Prelude and FFI which you probably want to use with Fay.
@@ -13,7 +13,11 @@
 category:            Development
 build-type:          Simple
 cabal-version:       >=1.8
-data-files:          src/Prelude.hs src/FFI.hs src/Data/Data.hs
+data-files:
+  src/Prelude.hs
+  src/FFI.hs
+  src/Data/Data.hs
+  src/Data/Ratio.hs
 
 source-repository head
   type: git
@@ -25,4 +29,5 @@
   exposed-modules:   Prelude
                     ,FFI
                     ,Data.Data
-  build-depends: base == 4.*, fay >= 0.14.3.0
+                    ,Data.Ratio
+  build-depends: base == 4.*, fay >= 0.16
diff --git a/src/Data/Ratio.hs b/src/Data/Ratio.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Ratio.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE PackageImports #-}
+{-# OPTIONS -w #-}
+
+module Data.Ratio where
+
+import Data.Data
+import Prelude
+import qualified "base" Prelude as Base
+
+--------------------------------------------------------------------------------
+-- Rational
+
+data Rational = Ratio Int Int
+instance Base.Show Rational
+instance Data Rational
+instance Typeable Rational
+
+(%) :: Int -> Int -> Rational
+x % y = reduce (x * signum y) (abs y)
+  where reduce :: Int -> Int -> Rational
+        reduce x y | y == 0    = error "can't devide by zero"
+                   | otherwise = let d = gcd x y
+                                 in Ratio (x `quot` d) (y `quot` d)
+
+numerator, denominator :: Rational -> Int
+numerator (Ratio n _) = n
+denominator (Ratio _ d) = d
diff --git a/src/FFI.hs b/src/FFI.hs
--- a/src/FFI.hs
+++ b/src/FFI.hs
@@ -1,5 +1,5 @@
 module FFI
-  (module Language.Fay.FFI)
+  (module Fay.FFI)
   where
 
-import Language.Fay.FFI
+import Fay.FFI
diff --git a/src/Prelude.hs b/src/Prelude.hs
--- a/src/Prelude.hs
+++ b/src/Prelude.hs
@@ -36,8 +36,6 @@
   ,(*)
   ,(+)
   ,(-)
-  -- Ratio
-  ,Rational
   -- Ord
   ,Ord
   ,Ordering(..)
@@ -206,7 +204,7 @@
   where
 
 import                  Fay.Types (Fay)
-import                  Language.Fay.FFI
+import                  Fay.FFI
 import Data.Data
 import qualified "base" Prelude as Base
 import "base" Prelude (Bool(True,False)
@@ -265,14 +263,6 @@
 maybe :: t -> (t1 -> t) -> Maybe t1 -> t
 maybe m _ Nothing = m
 maybe _ f (Just x) = f x
-
---------------------------------------------------------------------------------
--- Rational
-
-data Rational = Ratio Int Int
-instance Base.Show Rational
-instance Data Rational
-instance Typeable Rational
 
 --------------------------------------------------------------------------------
 -- Monads
