diff --git a/Data/Functor/Foldable.hs b/Data/Functor/Foldable.hs
--- a/Data/Functor/Foldable.hs
+++ b/Data/Functor/Foldable.hs
@@ -69,13 +69,13 @@
 import Control.Comonad
 import Control.Comonad.Trans.Class
 import Control.Comonad.Trans.Env
+import qualified Control.Comonad.Trans.Cofree as Cofree
+import Control.Comonad.Trans.Cofree (Cofree(..))
 import Control.Monad (liftM, join)
-import Control.Monad.Free
+import Control.Monad.Trans.Free
 import Data.Functor.Identity
 import Control.Arrow
 import Data.Function (on)
-import qualified Data.Stream.Branching as Stream
-import Data.Stream.Branching (Stream(..))
 import Text.Read
 import Data.Data hiding (gunfold)
 import qualified Data.Data as Data
@@ -394,17 +394,17 @@
 distGApo f = either (fmap Left . f) (fmap Right)
 
 -- | Course-of-value iteration
-histo :: Foldable t => (Base t (Stream (Base t) a) -> a) -> t -> a
+histo :: Foldable t => (Base t (Cofree (Base t) a) -> a) -> t -> a
 histo = gcata distHisto
 
-ghisto :: (Foldable t, Functor h) => (forall b. Base t (h b) -> h (Base t b)) -> (Base t (Stream h a) -> a) -> t -> a
+ghisto :: (Foldable t, Functor h) => (forall b. Base t (h b) -> h (Base t b)) -> (Base t (Cofree h a) -> a) -> t -> a
 ghisto g = gcata (distGHisto g)
 
-distHisto :: Functor f => f (Stream f a) -> Stream f (f a)
+distHisto :: Functor f => f (Cofree f a) -> Cofree f (f a)
 distHisto = distGHisto id
 
-distGHisto :: (Functor f, Functor h) => (forall b. f (h b) -> h (f b)) -> f (Stream h a) -> Stream h (f a)
-distGHisto k = Stream.unfold (\as -> (Stream.head <$> as, k (Stream.tail <$> as)))
+distGHisto :: (Functor f, Functor h) => (forall b. f (h b) -> h (f b)) -> f (Cofree h a) -> Cofree h (f a)
+distGHisto k = Cofree.unfold (\as -> (extract <$> as, k (Cofree.unwrap <$> as)))
 
 -- TODO: futu & chrono, these require Free monads 
 -- TODO: distGApoT, requires EitherT
@@ -432,7 +432,7 @@
   :: (Unfoldable t, Foldable t) 
   => (Base t b -> b)
   -> (forall c. Base t c -> Base t c)
-  -> (Base t (EnvT b (Stream (Base t)) a) -> a)
+  -> (Base t (EnvT b (Cofree (Base t)) a) -> a)
   -> t
   -> a
 zygoHistoPrepro f g t = gprepro (distZygoT f distHisto) g t
diff --git a/recursion-schemes.cabal b/recursion-schemes.cabal
--- a/recursion-schemes.cabal
+++ b/recursion-schemes.cabal
@@ -1,6 +1,6 @@
 name:          recursion-schemes
 category:      Control, Recursion
-version:       0.4.3
+version:       0.5.0
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
@@ -48,8 +48,7 @@
     base >= 4 && < 4.4,
     transformers >= 0.2 && < 0.3,
     comonad >= 1.1 && < 1.2,
-    comonad-transformers >= 1.6.2 && < 1.7,
-    free >= 0.2 && < 0.3,
+    comonad-transformers >= 1.7 && < 1.8,
     streams >= 0.7 && < 0.8
 
   exposed-modules:
