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.8.0 -- 2020-05-16
+
+* add cascadeM (a.k.a. supermap).
+
 ## 0.1.7.0 -- 2020-05-15
 
 * refine mutuM and comutuM. These have correct type signature.
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.7.0
+version:             0.1.8.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
@@ -20,12 +20,13 @@
 library
   exposed-modules:     Data.Functor.Foldable.Monadic
   -- other-modules:
-  other-extensions:    GADTs,
-                       LambdaCase,
-                       DeriveFunctor,
+  other-extensions:    AllowAmbiguousTypes,
                        DeriveFoldable,
+                       DeriveFunctor,
                        DeriveTraversable,
-                       AllowAmbiguousTypes,
+                       FlexibleContexts,
+                       GADTs,
+                       LambdaCase,
                        ScopedTypeVariables
   build-depends:       base ^>=4.12.0.0,
                        containers >=0.6,
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
@@ -22,6 +22,7 @@
   , mutuM, comutuM
   , mutuM', comutuM'
   , preproM, postproM
+  , cascadeM
   ) where
 
 import           Control.Comonad              (Comonad (..))
@@ -260,3 +261,10 @@
 postproM h psi = u
   where u = return . embed <=< mapM f <=< psi
         f = anaM (h . project) <=< u
+
+-- | cascade (a.k.a supermap)
+cascadeM :: (Monad m, Corecursive (f a), Traversable (Base (f a)), Traversable f, Recursive (f a))
+         => (a -> m a) -- ^ operator
+         -> f a -> m (f a)
+cascadeM f = u
+  where u = return . embed <=< mapM u <=< mapM (mapM f) . project
