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.3
+Version:       0.4
 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
@@ -18,6 +18,7 @@
 , supplies
 ) where
 
+import Control.Applicative
 import Control.Monad.Identity
 import Control.Monad.State
 import Control.Monad.Error
@@ -31,11 +32,11 @@
 
 -- | Supply monad transformer.
 newtype SupplyT s m a = SupplyT (StateT [s] m a)
-  deriving (Functor, Monad, MonadTrans, MonadIO)
+  deriving (Functor, Applicative, Monad, MonadTrans, MonadIO)
 
 -- | Supply monad. 
 newtype Supply s a = Supply (SupplyT s Identity a)
-  deriving (Functor, Monad, MonadSupply s)
+  deriving (Functor, Applicative, Monad, MonadSupply s)
 
 instance Monad m => MonadSupply s (SupplyT s m) where
   supply = SupplyT $ do (x:xs) <- get
