diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # recursion
 
+## 1.2.0.0
+
+* Remove `chema`
+* Add rewrite rules for `cata`/`ana`.
+
 ## 1.1.0.0
 
 * Add `NonEmptyF` and relevant instances
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# yayo
+# recursion
 
 This is heavily inspired by Edward Kmett's
 [recursion-schemes](http://hackage.haskell.org/package/recursion-schemes)
diff --git a/recursion.cabal b/recursion.cabal
--- a/recursion.cabal
+++ b/recursion.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: recursion
-version: 1.1.0.0
+version: 1.2.0.0
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
diff --git a/src/Control/Recursion.hs b/src/Control/Recursion.hs
--- a/src/Control/Recursion.hs
+++ b/src/Control/Recursion.hs
@@ -29,8 +29,6 @@
     , meta
     , meta'
     , dicata
-    -- * Mutual recursion
-    , chema
     -- * Mendler-style recursion schemes
     , mhisto
     , mcata
@@ -41,8 +39,6 @@
     -- * Helper functions
     , lambek
     , colambek
-    -- * Helper types
-    , Lens'
     ) where
 
 import           Control.Arrow       ((&&&))
@@ -51,6 +47,7 @@
 import           Data.Foldable       (toList)
 import           Data.List.NonEmpty  (NonEmpty (..))
 import qualified Data.List.NonEmpty  as NE
+import           Data.Traversable    (Traversable (..))
 import           Numeric.Natural     (Natural)
 
 type family Base t :: * -> *
@@ -59,20 +56,10 @@
 
     project :: t -> Base t t
 
-    -- | Catamorphism. Folds a structure. (see [here](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.125&rep=rep1&type=pdf))
-    cata :: (Base t a -> a) -> t -> a
-    cata f = c where c = f . fmap c . project
-
-
 class (Functor (Base t)) => Corecursive t where
 
     embed :: Base t t -> t
 
-    -- | Anamorphism, meant to build up a structure recursively.
-    ana :: (a -> Base t a) -> a -> t
-    ana g = a where a = embed . fmap a . g
-
--- | Base functor for a list of type @[a]@.
 data ListF a b = Cons a b
                | Nil
                deriving (Functor)
@@ -86,9 +73,6 @@
 
 newtype Mu f = Mu (forall a. (f a -> a) -> a)
 
--- | A map of \\( F \\)-coalgebras
-type Lens' s a = forall f . Functor f => (a -> f a) -> s -> f s
-
 type instance Base (Fix f) = f
 
 type instance Base (Mu f) = f
@@ -114,11 +98,9 @@
 
 instance Functor f => Corecursive (Nu f) where
     embed = colambek
-    ana = Nu
 
 instance Functor f => Recursive (Mu f) where
     project = lambek
-    cata f (Mu g) = g f
 
 instance Functor f => Corecursive (Mu f) where
     embed m = Mu (\f -> f (fmap (cata f) m))
@@ -139,10 +121,34 @@
     embed (NonEmptyF x Nothing)   = x :| []
     embed (NonEmptyF x (Just xs)) = x :| toList xs
 
+-- | Catamorphism. Folds a structure. (see [here](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.125&rep=rep1&type=pdf))
+cata :: (Recursive t) => (Base t a -> a) -> t -> a
+cata f = c where c = f . fmap c . project
+{-# NOINLINE [0] cata #-}
+
+{-# RULES
+  "cata/Mu" forall f (g :: forall a. (f a -> a) -> a). cata f (Mu g) = g f;
+     #-}
+
+-- | Anamorphism, meant to build up a structure recursively.
+ana :: (Corecursive t) => (a -> Base t a) -> a -> t
+ana g = a where a = embed . fmap a . g
+{-# NOINLINE [0] ana #-}
+
+{-# RULES
+   "ana/Nu" forall (f :: a -> f a). ana f = Nu f;
+      #-}
+
+-- | Base functor for a list of type @[a]@.
 -- | Hylomorphism; fold a structure while buildiung it up.
 hylo :: Functor f => (f b -> b) -> (a -> f a) -> a -> b
 hylo f g = h where h = f . fmap h . g
+{-# NOINLINE [0] hylo #-}
 
+{-# RULES
+  "ana/cata/hylo"  forall f g x. cata f (ana g x) = hylo f g x;
+     #-}
+
 cataM :: (Recursive t, Traversable (Base t), Monad m) => (Base t a -> m a) -> t -> m a
 cataM f = c where c = f <=< (traverse c . project)
 
@@ -207,7 +213,7 @@
 elgot :: Functor f => (f a -> a) -> (b -> Either a (f b)) -> b -> a
 elgot phi psi = h where h = either id (phi . fmap h) . psi
 
--- | Anamorphism allowing shortcuts.
+-- | Anamorphism allowing shortcuts. Compare 'apo'
 micro :: (Corecursive a) => (b -> Either a (Base a b)) -> b -> a
 micro = elgot embed
 
@@ -215,14 +221,6 @@
 coelgot :: Functor f => ((a, f b) -> b) -> (a -> f a) -> a -> b
 coelgot phi psi = h where h = phi . ((,) <*> (fmap h . psi))
 
--- | Apomorphism
+-- | Apomorphism. Compare 'micro'.
 apo :: (Corecursive t) => (a -> Base t (Either t a)) -> a -> t
 apo g = a where a = embed . fmap (either id a) . g
-
--- Entangle two anamorphisms.
-chema :: (Corecursive t')
-      => ((a -> f a) -> Lens' b b) -- ^ A lens parametric in an \\( F \\)-coalgebra that allows @b@ to inspect itself.
-      -> (a -> f a) -- ^ A @(Base t)@-coalgebra
-      -> (b -> Base t' b) -- ^ A @(Base t')@-coalgebra
-      -> b -> t'
-chema = (ana .*)
