diff --git a/Control/Monad/Catch.hs b/Control/Monad/Catch.hs
--- a/Control/Monad/Catch.hs
+++ b/Control/Monad/Catch.hs
@@ -40,19 +40,25 @@
 
 instance Functor m => Functor (WrappedMonadError m) where
   fmap f = WrapMonadError . fmap f . unwrapMonadError
+#if MIN_VERSION_base(4, 2, 0)
   a <$ m = WrapMonadError $ a <$ unwrapMonadError m
+#endif
 
 instance Applicative m => Applicative (WrappedMonadError m) where
   pure = WrapMonadError . pure
   f <*> a = WrapMonadError $ unwrapMonadError f <*> unwrapMonadError a
+#if MIN_VERSION_base(4, 2, 0)
   a *> b = WrapMonadError $ unwrapMonadError a *> unwrapMonadError b
   a <* b = WrapMonadError $ unwrapMonadError a <* unwrapMonadError b
+#endif
 
 instance Alternative m => Alternative (WrappedMonadError m) where
   empty = WrapMonadError empty
   m <|> n = WrapMonadError $ unwrapMonadError m <|> unwrapMonadError n
+#if MIN_VERSION_base(4, 2, 0)
   some = WrapMonadError . some . unwrapMonadError
   many = WrapMonadError . many . unwrapMonadError
+#endif
 
 instance Monad m => Monad (WrappedMonadError m) where
   return = WrapMonadError . return
@@ -89,15 +95,21 @@
 instance MonadReader r m => MonadReader r (WrappedMonadError m) where
   ask = WrapMonadError ask
   local f = WrapMonadError . local f . unwrapMonadError
+#if MIN_VERSION_mtl(2, 1, 0)
   reader = WrapMonadError . reader
+#endif
 
 instance MonadState s m => MonadState s (WrappedMonadError m) where
   get = WrapMonadError get
   put = WrapMonadError . put
+#if MIN_VERSION_mtl(2, 1, 0)
   state = WrapMonadError . state
+#endif
 
 instance MonadWriter w m => MonadWriter w (WrappedMonadError m) where
+#if MIN_VERSION_mtl(2, 1, 0)
   writer = WrapMonadError . writer
+#endif
   tell = WrapMonadError . tell
   listen = WrapMonadError . listen . unwrapMonadError
   pass = WrapMonadError . pass . unwrapMonadError
@@ -108,19 +120,25 @@
 
 instance Functor m => Functor (WrappedMonadCatch m) where
   fmap f = WrapMonadCatch . fmap f . unwrapMonadCatch
+#if MIN_VERSION_base(4, 2, 0)
   a <$ m = WrapMonadCatch $ a <$ unwrapMonadCatch m
+#endif
 
 instance Applicative m => Applicative (WrappedMonadCatch m) where
   pure = WrapMonadCatch . pure
   f <*> a = WrapMonadCatch $ unwrapMonadCatch f <*> unwrapMonadCatch a
+#if MIN_VERSION_base(4, 2, 0)
   a *> b = WrapMonadCatch $ unwrapMonadCatch a *> unwrapMonadCatch b
   a <* b = WrapMonadCatch $ unwrapMonadCatch a <* unwrapMonadCatch b
+#endif
 
 instance Alternative m => Alternative (WrappedMonadCatch m) where
   empty = WrapMonadCatch empty
   m <|> n = WrapMonadCatch $ unwrapMonadCatch m <|> unwrapMonadCatch n
+#if MIN_VERSION_base(4, 2, 0)
   some = WrapMonadCatch . some . unwrapMonadCatch
   many = WrapMonadCatch . many . unwrapMonadCatch
+#endif
 
 instance Monad m => Monad (WrappedMonadCatch m) where
   return = WrapMonadCatch . return
@@ -155,15 +173,21 @@
 instance MonadReader r m => MonadReader r (WrappedMonadCatch m) where
   ask = WrapMonadCatch ask
   local f = WrapMonadCatch . local f . unwrapMonadCatch
+#if MIN_VERSION_mtl(2, 1, 0)
   reader = WrapMonadCatch . reader
+#endif
 
 instance MonadState s m => MonadState s (WrappedMonadCatch m) where
   get = WrapMonadCatch get
   put = WrapMonadCatch . put
+#if MIN_VERSION_mtl(2, 1, 0)
   state = WrapMonadCatch . state
+#endif
 
 instance MonadWriter w m => MonadWriter w (WrappedMonadCatch m) where
+#if MIN_VERSION_mtl(2, 1, 0)
   writer = WrapMonadCatch . writer
+#endif
   tell = WrapMonadCatch . tell
   listen = WrapMonadCatch . listen . unwrapMonadCatch
   pass = WrapMonadCatch . pass . unwrapMonadCatch
diff --git a/catch-fd.cabal b/catch-fd.cabal
--- a/catch-fd.cabal
+++ b/catch-fd.cabal
@@ -1,5 +1,5 @@
 name:                catch-fd
-version:             0.2.0.0
+version:             0.2.0.1
 cabal-version:       >= 1.10
 synopsis:            MonadThrow and MonadCatch, using functional dependencies
 description:         MonadThrow and MonadCatch, using functional dependencies
