Hello, as an analogue to everywhere', I suggest adding everywhereM' to Data.Generics.Schemes. The implementation would be everywhereM' :: Monad m => GenericM m -> GenericM m everywhereM' f x = do { x' <- f x; gmapM (everywhereM' f) x' } Best wishes, Maciej