diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for monadic-recursion-schemes
 
+## 0.1.7.0 -- 2020-05-15
+
+* refine mutuM and comutuM. These have correct type signature.
+
 ## 0.1.6.1 -- 2020-05-15
 
 * bugfix: export preproM and postproM.
diff --git a/monadic-recursion-schemes.cabal b/monadic-recursion-schemes.cabal
--- a/monadic-recursion-schemes.cabal
+++ b/monadic-recursion-schemes.cabal
@@ -4,7 +4,7 @@
 -- http://haskell.org/cabal/users-guide/
 
 name:                monadic-recursion-schemes
-version:             0.1.6.1
+version:             0.1.7.0
 synopsis:            Recursion Schemes for Monadic version.
 description:         Yet another recursion schemes for monadic style, depends on recursion-schemes.
 homepage:            https://github.com/cutsea110/monadic-recursion-schemes.git
diff --git a/src/Data/Functor/Foldable/Monadic.hs b/src/Data/Functor/Foldable/Monadic.hs
--- a/src/Data/Functor/Foldable/Monadic.hs
+++ b/src/Data/Functor/Foldable/Monadic.hs
@@ -213,10 +213,12 @@
 
 -- | mutumorphism on mutual recursive
 mutuM :: (Monad m, Traversable (Base t), Recursive t)
-      => (Base t (a, a) -> m a) -- ^ algebra
-      -> (Base t (a, a) -> m a) -- ^ algebra
-      -> t -> m a
-mutuM f g = g <=< mapM (liftM2 (,) <$> mutuM g f <*> mutuM f g) . project
+      => (Base t (a, b) -> m b) -- ^ algebra
+      -> (Base t (a, b) -> m a) -- ^ algebra
+      -> t -> m b
+mutuM g f = v g f
+  where u f g = f <=< mapM (liftM2 (,) <$> u f g <*> v g f) . project
+        v g f = g <=< mapM (liftM2 (,) <$> u f g <*> v g f) . project
 
 -- | mutumorphism on recursive variant over catamorphism
 mutuM' :: (Monad m, Traversable (Base t), Recursive t)
@@ -227,10 +229,12 @@
 
 -- | comutumorphism on comutual recursive
 comutuM :: (Monad m, Traversable (Base t), Corecursive t)
-        => (a -> m (Base t (Either a a))) -- ^ coalgebra
-        -> (a -> m (Base t (Either a a))) -- ^ coalgebra
-        -> a -> m t
-comutuM f g = fmap embed . mapM (either (comutuM g f) (comutuM f g)) <=< g
+        => (b -> m (Base t (Either a b))) -- ^ coalgebra
+        -> (a -> m (Base t (Either a b))) -- ^ coalgebra
+        -> b -> m t
+comutuM g f = v g f
+  where u f g = fmap embed . mapM (either (u f g) (v g f)) <=< f
+        v g f = fmap embed . mapM (either (u f g) (v g f)) <=< g
 
 -- | comutumorphism on recursive variant over anamorphism
 comutuM' :: (Monad m, Traversable (Base t), Corecursive t)
