diff --git a/Control/Monad/FreeT.hs b/Control/Monad/FreeT.hs
--- a/Control/Monad/FreeT.hs
+++ b/Control/Monad/FreeT.hs
@@ -1,5 +1,7 @@
-module Control.Monad.FreeT (FreeT(..)) where
+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
 
+module Control.Monad.FreeT (FreeT(..), MonadFree(..)) where
+
 import Control.Applicative
 import Control.Monad (liftM)
 import Control.Monad.Trans
@@ -24,3 +26,10 @@
 
 instance (Functor f) => MonadTrans (FreeT f) where
     lift = FreeT . liftM Left
+
+
+class (Functor f, Monad m) => MonadFree f m where
+    free :: m a -> m (Either a (f (m a)))
+
+instance (Functor f, Monad m) => MonadFree f (FreeT f m) where
+    free = lift . runFreeT
diff --git a/control-monad-free.cabal b/control-monad-free.cabal
--- a/control-monad-free.cabal
+++ b/control-monad-free.cabal
@@ -1,7 +1,7 @@
 Name: control-monad-free
 Description:
     A monad transformer for free monads.
-Version: 0.2
+Version: 0.3
 Stability: experimental
 Synopsis: A monad transformer for free monads.
 License: PublicDomain
