diff --git a/calamity.cabal b/calamity.cabal
--- a/calamity.cabal
+++ b/calamity.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: ff41b2035734187fe33f9394cd057e7ad8f187dc4e297c846472c876600e2d45
+-- hash: 8e92a779010033140a384ff887303116946beadaf66f3565d2a1850b65824b5f
 
 name:           calamity
-version:        0.1.6.0
+version:        0.1.6.1
 synopsis:       A library for writing discord bots
 description:    Please see the README on GitHub at <https://github.com/nitros12/calamity#readme>
 category:       Network, Web
@@ -121,7 +121,7 @@
     , deepseq >=1.4.4.0 && <2
     , deque >=0.4 && <0.5
     , df1 >=0.3 && <0.4
-    , di-polysemy >=0.1.1 && <0.2
+    , di-polysemy >=0.1.3 && <0.2
     , exceptions >=0.10 && <0.11
     , fmt >=0.6 && <0.7
     , focus >=1.0 && <2
diff --git a/src/Calamity/Client/Client.hs b/src/Calamity/Client/Client.hs
--- a/src/Calamity/Client/Client.hs
+++ b/src/Calamity/Client/Client.hs
@@ -81,11 +81,11 @@
 runBotIO token setup = do
   client <- P.embed $ newClient token
   handlers <- P.embed $ newTVarIO def
-  P.asyncToIOFinal . P.runAtomicStateTVar handlers . P.runReader client . Di.runDiToStderrIO $ do
-    setup
+  P.asyncToIOFinal . P.runAtomicStateTVar handlers . P.runReader client . Di.runDiToStderrIO . Di.push "calamity" $ do
+    Di.push "calamity-setup" setup
     shardBot
-    clientLoop
-    finishUp
+    Di.push "calamity-loop" clientLoop
+    Di.push "calamity-stop" finishUp
 
 react :: forall s r. (BotC r, InsertEventHandler s (P.Sem r)) => EHType s (P.Sem r) -> P.Sem r ()
 react handler = let handlers = makeEventHandlers (Proxy @s) (Proxy @(P.Sem r)) handler
@@ -145,13 +145,12 @@
   debug "handling a custom event"
   eventHandlers <- P.atomicGet
 
-  for_ (getCustomEventHandlers s (dynTypeRep d) eventHandlers) (\h -> fromJust . fromDynamic @(P.Sem r ()) $ dynApp h d)
+  for_ (getCustomEventHandlers s (dynTypeRep d) eventHandlers) (\h -> P.async . fromJust . fromDynamic @(P.Sem r ()) $ dynApp h d)
 
 handleEvent :: BotC r => DispatchData -> P.Sem r ()
 handleEvent data' = do
   debug "handling an event"
   eventHandlers <- P.atomicGet
-
   actions <- P.runFail $ do
     cacheUpdateHisto <- registerHistogram "cache_update" mempty [10, 20..100]
     (time, res) <- timeA $ handleEvent' eventHandlers data'
@@ -162,7 +161,7 @@
 
   case actions of
     Right actions -> for_ actions $ \action -> P.async $ do
-      (time, _) <- timeA action
+      (time, _) <- timeA $ Di.reset action
       void $ observeHistogram time eventHandleHisto
     Left err      -> debug $ "Failed handling actions for event: " +| err |+ ""
 
@@ -329,7 +328,7 @@
   pure $ map ($ oldMsg) (getEventHandlers @'MessageDeleteEvt eh)
 
 handleEvent' eh evt@(MessageDeleteBulk MessageDeleteBulkData { ids }) = do
-  messages <- catMaybes <$> mapM getMessage ids
+  messages <- catMaybes <$> traverse getMessage ids
   updateCache evt
   join <$> for messages (\msg -> pure $ map ($ msg) (getEventHandlers @'MessageDeleteEvt eh))
 
@@ -395,7 +394,7 @@
   updateDM (getID chan) (update chan)
 
 updateCache (ChannelUpdate (GuildChannel' chan)) =
-  updateGuild (getID chan) (#channels . at (getID chan) . _Just %~ update chan)
+  updateGuild (getID chan) (#channels . ix (getID chan) %~ update chan)
 
 updateCache (ChannelDelete (DMChannel' chan)) =
   delDM (getID chan)
diff --git a/src/Calamity/Gateway/Shard.hs b/src/Calamity/Gateway/Shard.hs
--- a/src/Calamity/Gateway/Shard.hs
+++ b/src/Calamity/Gateway/Shard.hs
@@ -92,7 +92,7 @@
     pure (cmdIn, stateVar)
 
   let runShard = P.runAtomicStateIORef stateVar shardLoop
-  let action = attr "shard-id" id . push "calamity-shard" $ runShard
+  let action = push "calamity-shard" . attr "shard-id" id $ runShard
 
   thread' <- P.async action
 
