diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for polysemy-methodology
 
+## v0.1.8.0
+
+* Add `runMethodologyMappendPure` and `runMethodologyMappendSem`.
+
 ## v0.1.7.0
 
 * Add `pureMethodology` and `pureMethodology'`.
diff --git a/polysemy-methodology.cabal b/polysemy-methodology.cabal
--- a/polysemy-methodology.cabal
+++ b/polysemy-methodology.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           polysemy-methodology
-version:        0.1.7.0
+version:        0.1.8.0
 synopsis:       Domain modelling algebra for polysemy
 category:       Polysemy
 author:         Daniel Firth
@@ -33,7 +33,7 @@
   build-depends:
       base >=4.7 && <5
     , co-log-polysemy
-    , polysemy
+    , polysemy >=1.3.0.0 && <1.5
     , polysemy-plugin
-    , polysemy-zoo
+    , polysemy-zoo >=0.7.0.1 && <0.8
   default-language: Haskell2010
diff --git a/src/Polysemy/Methodology.hs b/src/Polysemy/Methodology.hs
--- a/src/Polysemy/Methodology.hs
+++ b/src/Polysemy/Methodology.hs
@@ -62,6 +62,8 @@
 , plugMethodologyInput
 , runMethodologyAsKVStore
 , runMethodologyAsKVStoreWithDefault
+, runMethodologyMappendPure
+, runMethodologyMappendSem
 
 -- * Tracing
 , traceMethodologyStart
@@ -74,6 +76,7 @@
 , logMethodologyAround
 ) where
 
+import Control.Applicative
 import Control.Arrow
 import Control.Monad
 import Colog.Polysemy as C
@@ -282,6 +285,32 @@
       Just a -> return a
       Nothing -> return d
 {-# INLINE runMethodologyAsKVStoreWithDefault #-}
+
+-- | Run a `Methodology` targetting a `Monoid` without consuming it, pure version. This should probably be considered an
+-- anti-pattern, and it's probably better to decompose the inputs fully, but is otherwise sound.
+--
+-- @since 0.1.8.0
+runMethodologyMappendPure :: forall b c r a.
+                             (Monoid c,
+                             Members '[Methodology b c] r)
+                          => (b -> c)
+                          -> Sem r a -> Sem r a
+runMethodologyMappendPure f = intercept \case
+  Process b -> (f b <>) <$> process @b @c b
+{-# INLINE runMethodologyMappendPure #-}
+
+-- | Run a `Methodology` targetting a `Monoid` without consuming it, `Sem` version. This should probably be considered an
+-- anti-pattern, and it's probably better to decompose the inputs fully, but is otherwise sound.
+--
+-- @since 0.1.8.0
+runMethodologyMappendSem :: forall b c r a.
+                            (Monoid c,
+                            Members '[Methodology b c] r)
+                          => (b -> Sem r c)
+                          -> Sem r a -> Sem r a
+runMethodologyMappendSem f = intercept \case
+  Process b -> liftA2 (<>) (f b) (process @b @c b)
+{-# INLINE runMethodologyMappendSem #-}
 
 -- | Decompose a `Methodology` into several components to be recombined. This is `cutMethodology` specialised to `HList`.
 --
