diff --git a/monad-supply.cabal b/monad-supply.cabal
--- a/monad-supply.cabal
+++ b/monad-supply.cabal
@@ -1,6 +1,6 @@
 Name:          monad-supply
 Build-type:    Simple
-Version:       0.4
+Version:       0.5
 Cabal-Version: >= 1.6
 Synopsis:      Stateful supply monad.
 Description:   Support for computations which consume values from a (possibly infinite) supply.
diff --git a/src/Control/Monad/Supply.hs b/src/Control/Monad/Supply.hs
--- a/src/Control/Monad/Supply.hs
+++ b/src/Control/Monad/Supply.hs
@@ -21,7 +21,7 @@
 import Control.Applicative
 import Control.Monad.Identity
 import Control.Monad.State
-import Control.Monad.Error
+import Control.Monad.Except
 import Control.Monad.Reader
 import Control.Monad.Writer
 
@@ -32,11 +32,11 @@
 
 -- | Supply monad transformer.
 newtype SupplyT s m a = SupplyT (StateT [s] m a)
-  deriving (Functor, Applicative, Monad, MonadTrans, MonadIO)
+  deriving (Functor, Applicative, Monad, MonadTrans, MonadIO, MonadFix)
 
 -- | Supply monad. 
 newtype Supply s a = Supply (SupplyT s Identity a)
-  deriving (Functor, Applicative, Monad, MonadSupply s)
+  deriving (Functor, Applicative, Monad, MonadSupply s, MonadFix)
 
 instance Monad m => MonadSupply s (SupplyT s m) where
   supply = SupplyT $ do (x:xs) <- get
@@ -46,7 +46,7 @@
   exhausted = SupplyT $ gets null
 
 -- Monad transformer instances
-instance (Error e,MonadSupply s m) => MonadSupply s (ErrorT e m) where
+instance MonadSupply s m => MonadSupply s (ExceptT e m) where
   supply = lift supply
   peek = lift peek
   exhausted = lift exhausted
