diff --git a/Control/Comonad/Cofree.hs b/Control/Comonad/Cofree.hs
--- a/Control/Comonad/Cofree.hs
+++ b/Control/Comonad/Cofree.hs
@@ -14,6 +14,7 @@
 ----------------------------------------------------------------------------
 module Control.Comonad.Cofree
   ( Cofree(..)
+  , section
   , outCofree
   , coiter
   , unfold
diff --git a/Control/Monad/Free.hs b/Control/Monad/Free.hs
--- a/Control/Monad/Free.hs
+++ b/Control/Monad/Free.hs
@@ -19,7 +19,7 @@
   ) where
 
 import Control.Applicative
-import Control.Monad (liftM)
+import Control.Monad (liftM, MonadPlus(..))
 import Control.Monad.Trans.Class
 import Data.Functor.Bind
 import Data.Foldable
@@ -83,6 +83,14 @@
   return = Pure
   Pure a >>= f = f a
   Free m >>= f = Free ((>>= f) <$> m)
+
+instance Alternative v => Alternative (Free v) where
+  empty = Free empty
+  a <|> b = Free (pure a <|> pure b)
+
+instance (Functor v, MonadPlus v) => MonadPlus (Free v) where
+  mzero = Free mzero
+  a `mplus` b = Free (return a `mplus` return b)
 
 instance MonadTrans Free where
   lift = Free . liftM Pure
diff --git a/free.cabal b/free.cabal
--- a/free.cabal
+++ b/free.cabal
@@ -1,6 +1,6 @@
 name:          free
 category:      Control, Monads
-version:       0.2.2
+version:       0.2.3
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
