diff --git a/Control/Monad/Free.hs b/Control/Monad/Free.hs
--- a/Control/Monad/Free.hs
+++ b/Control/Monad/Free.hs
@@ -83,6 +83,7 @@
   Pure   f <*> x = fmap f x
   Impure f <*> x = Impure (fmap (<*> x) f)
 
+
 isPure Pure{} = True; isPure _ = False
 isImpure = not . isPure
 
@@ -159,6 +160,10 @@
 instance (Functor f, Monad m, MonadPlus m) => MonadPlus (FreeT f m) where
     mzero = lift mzero
     mplus a b = FreeT (mplus (unFreeT a) (unFreeT b))
+
+instance (Functor f, Functor m, Monad m, MonadPlus m) => Alternative (FreeT f m) where
+    empty = mzero
+    (<|>) = mplus
 
 foldFreeT :: (Traversable f, Monad m) => (a -> m b) -> (f b -> m b) -> FreeT f m a -> m b
 foldFreeT p i m = unFreeT m >>= \r ->
diff --git a/Control/Monad/Free/Improve.hs b/Control/Monad/Free/Improve.hs
--- a/Control/Monad/Free/Improve.hs
+++ b/Control/Monad/Free/Improve.hs
@@ -54,4 +54,8 @@
   mzero       = rep mzero
   mplus p1 p2 = rep (mplus (improve p1) (improve p2))
 
+instance MonadPlus mu => Alternative (C mu) where
+  empty = mzero
+  (<|>) = mplus
+
 instance MonadTrans C where lift m = C (m >>=)
diff --git a/control-monad-free.cabal b/control-monad-free.cabal
--- a/control-monad-free.cabal
+++ b/control-monad-free.cabal
@@ -1,5 +1,5 @@
 name: control-monad-free
-version: 0.6.0.1
+version: 0.6.1
 Cabal-Version:  >= 1.6
 build-type: Simple
 license: PublicDomain
