diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for eventuo11y-batteries
 
+## 0.2.0.0 -- 2022-10-03
+
+- Update for eventuo11y-0.2.0.0 BackendModification DSL
+
 ## 0.1.0.1 -- 2022-09-30
 
 Relax aeson lower bound
diff --git a/eventuo11y-batteries.cabal b/eventuo11y-batteries.cabal
--- a/eventuo11y-batteries.cabal
+++ b/eventuo11y-batteries.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               eventuo11y-batteries
-version:            0.1.0.1
+version:            0.2.0.0
 synopsis:           Grab bag of eventuo11y-enriched functionality
 description:
   Miscellaneous helpers for instrumenting with [eventuo11y](https://hackage.haskell.org/package/eventuo11y) and 3rd-party packages.
@@ -27,13 +27,12 @@
 
   build-depends:
     , aeson                ^>=2.0.2.0
-    , async                ^>=2.2.4
     , base                 >=4.14      && <4.17
     , binary               ^>=0.8
     , bytestring           >=0.10.12.0 && <0.12
     , case-insensitive     ^>=1.2.1.0
     , containers           ^>=0.6
-    , eventuo11y           ^>=0.1.0.1
+    , eventuo11y           ^>=0.2
     , exceptions           ^>=0.10.4
     , http-media           ^>=0.8.0.0
     , http-types           ^>=0.12.3
@@ -45,7 +44,6 @@
     , servant-client-core  ^>=0.19
     , text                 ^>=1.2.5.0
     , transformers-base    ^>=0.4.6
-    , unliftio-core        ^>=0.2.0.1
     , wai                  ^>=3.2.3
     , warp                 ^>=3.3.19
 
diff --git a/src/Observe/Event/Crash.hs b/src/Observe/Event/Crash.hs
--- a/src/Observe/Event/Crash.hs
+++ b/src/Observe/Event/Crash.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE GADTs #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE RecordWildCards #-}
 
 -- |
 -- Description : Combine eventuo11y instrumentation with crash-only designs.
@@ -27,37 +28,27 @@
   )
 where
 
-import Control.Concurrent.Async
-import Control.Concurrent.MVar
-import Control.Monad
-import Control.Monad.IO.Unlift
+import Control.Monad.Catch
 import Data.Void
 import Observe.Event
+import Observe.Event.BackendModification
 import Observe.Event.Render.JSON
 
 -- | Run an action with a 'ScheduleCrash' that can be called to crash the application.
 withScheduleCrash ::
-  (MonadUnliftIO m) =>
+  (MonadMask m) =>
   EventBackend m r Crashing ->
   -- | Actually perform the crash.
   DoCrash m ->
   (ScheduleCrash m r -> m a) ->
   m a
-withScheduleCrash backend crash go = withRunInIO $ \runInIO -> do
-  scheduleCrashChan <- newEmptyMVar
-  let waitForCrash = do
-        cause <- takeMVar scheduleCrashChan
-        withEvent (hoistEventBackend runInIO backend) Crashing \ev ->
-          maybe
-            (pure ())
-            (addProximate ev)
-            cause
-        runInIO crash
-  withAsync waitForCrash \_ ->
-    runInIO $ go $ void . liftIO . tryPutMVar scheduleCrashChan
+withScheduleCrash backend crash go =
+  go $ ScheduleCrash \mods ->
+    let backend' = modifyEventBackend mods backend
+     in withEvent backend' Crashing $ const crash
 
--- | Function to schedule an application crash, perhaps caused by a referenced 'Event'.
-type ScheduleCrash m r = Maybe r -> m ()
+-- | Function to schedule an application crash.
+newtype ScheduleCrash m r = ScheduleCrash {schedule :: forall r'. EventBackendModifiers r r' -> m ()}
 
 -- | Function to actually initiate the crash.
 type DoCrash m = m ()
@@ -68,7 +59,7 @@
   (forall x. f x -> g x) ->
   ScheduleCrash f r ->
   ScheduleCrash g r
-hoistScheduleCrash nt s = nt . s
+hoistScheduleCrash nt (ScheduleCrash {..}) = ScheduleCrash $ nt . schedule
 
 -- | Event selector for 'withScheduleCrash'.
 data Crashing f where
diff --git a/src/Observe/Event/Wai.hs b/src/Observe/Event/Wai.hs
--- a/src/Observe/Event/Wai.hs
+++ b/src/Observe/Event/Wai.hs
@@ -81,6 +81,10 @@
 
 -- | A 'Network.Wai.Handler.Warp.setOnException' callback which creates an 'Event' rendering
 -- 'Exception's.
+--
+-- Ideally this would have a way to get a parent 'Event' from 'application'. Would be nice to
+-- use 'vault', but there doesn't seem to be a way to get at the 'Request' that Warp will pass
+-- here.
 onExceptionCallback :: EventBackend IO r OnException -> Maybe Request -> SomeException -> IO ()
 onExceptionCallback backend req e =
   if defaultShouldDisplayException e
