diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for shake-plus-extended
 
+## V0.4.1.0
+
+* Add `runLoggedShakeForward`.
+
 ## v0.4.0.0
 
 * Add `Development.Shake.Plus.Extended.Conduit" with conduit oracle.
diff --git a/shake-plus-extended.cabal b/shake-plus-extended.cabal
--- a/shake-plus-extended.cabal
+++ b/shake-plus-extended.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           shake-plus-extended
-version:        0.4.0.0
+version:        0.4.1.0
 synopsis:       Experimental extensions to shake-plus
 description:    Experimental extensions to shake-plus - `within`-style file rules, HashMap and IxSet batch loaders.
 category:       development, shake
diff --git a/src/Development/Shake/Plus/Extended/Loaders.hs b/src/Development/Shake/Plus/Extended/Loaders.hs
--- a/src/Development/Shake/Plus/Extended/Loaders.hs
+++ b/src/Development/Shake/Plus/Extended/Loaders.hs
@@ -74,4 +74,4 @@
                 -> Path Rel Dir
                 -> [FilePattern]
                 -> m (Ix.IxSet ixs x)
-batchLoadIndex' proxy rd dir fp = Ix.fromList . HM.elems <$> batchLoad dir fp rd
+batchLoadIndex' _ rd dir fp = Ix.fromList . HM.elems <$> batchLoad dir fp rd
diff --git a/src/Development/Shake/Plus/Extended/Simple.hs b/src/Development/Shake/Plus/Extended/Simple.hs
--- a/src/Development/Shake/Plus/Extended/Simple.hs
+++ b/src/Development/Shake/Plus/Extended/Simple.hs
@@ -11,12 +11,13 @@
   SimpleSPlusEnv(..)
 , runLoggedShakePlus
 , runSimpleShakePlus
+, runLoggedShakeForward
 ) where
 
-import           Control.Exception
-import           Development.Shake.Plus
-import           Development.Shake.Plus.Extended.FileRules
-import           RIO
+import Development.Shake.Plus
+import Development.Shake.Plus.Forward
+import Development.Shake.Plus.Extended.FileRules
+import RIO
 
 data SimpleSPlusEnv = SimpleSPlusEnv {
   logFunc  :: LogFunc
@@ -30,19 +31,26 @@
   localOutL = lens localOut (\x y -> x { localOut = y})
 
 -- | Run a `ShakePlus` with just a `LogFunc` in the environment that logs to stderr.
-runLoggedShakePlus :: MonadIO m => ShakePlus LogFunc a -> m ()
-runLoggedShakePlus m = do
+runLoggedShakePlus :: MonadIO m => ShakeOptions -> ShakePlus LogFunc a -> m ()
+runLoggedShakePlus opts m = do
   lo <- logOptionsHandle stderr True
   (lf, dlf) <- newLogFunc (setLogMinLevel LevelInfo lo)
-  liftIO $ shakeArgs shakeOptions $ void $ runShakePlus lf m
+  liftIO $ shakeArgs opts $ void $ runShakePlus lf m
   dlf
 
-
 -- | Run a `ShakePlus` with just a `SimpleSPlusEnv`.
-runSimpleShakePlus :: MonadIO m => Path Rel Dir -> ShakePlus SimpleSPlusEnv a -> m ()
-runSimpleShakePlus outputFolder m = do
+runSimpleShakePlus :: MonadIO m => Path Rel Dir -> ShakeOptions -> ShakePlus SimpleSPlusEnv a -> m ()
+runSimpleShakePlus outputFolder opts m = do
   lo <- logOptionsHandle stderr True
   (lf, dlf) <- newLogFunc (setLogMinLevel LevelInfo lo)
   let env = SimpleSPlusEnv lf outputFolder
-  liftIO $ shakeArgs shakeOptions $ void $ runShakePlus env m
+  liftIO $ shakeArgs opts $ void $ runShakePlus env m
+  dlf
+
+-- | Run an `RAction` in forward mode.
+runLoggedShakeForward :: MonadIO m => ShakeOptions -> RAction LogFunc () -> m ()
+runLoggedShakeForward opts m = do
+  lo <- logOptionsHandle stderr True
+  (lf, dlf) <- newLogFunc (setLogMinLevel LevelInfo lo)
+  shakeArgsForward opts lf m
   dlf
