diff --git a/poolboy.cabal b/poolboy.cabal
--- a/poolboy.cabal
+++ b/poolboy.cabal
@@ -1,6 +1,6 @@
 cabal-version:       3.0
 name:                poolboy
-version:             0.2.1.0
+version:             0.2.2.0
 author:              Gautier DI FOLCO
 maintainer:          gautier.difolco@gmail.com
 category:            Data
@@ -16,9 +16,9 @@
   default-language:   Haskell2010
   build-depends:
       base == 4.*
-    , safe-exceptions == 0.1.*
-    , stm == 2.*
     , async == 2.*
+    , stm == 2.*
+    , unliftio == 0.2.*
   hs-source-dirs: src
   exposed-modules:
       Data.Poolboy
diff --git a/src/Data/Poolboy.hs b/src/Data/Poolboy.hs
--- a/src/Data/Poolboy.hs
+++ b/src/Data/Poolboy.hs
@@ -31,11 +31,11 @@
 import Control.Concurrent
 import Control.Concurrent.Async
 import Control.Concurrent.STM.TQueue
-import Control.Exception.Safe (bracket, tryAny)
 import Control.Monad
 import Control.Monad.STM
 import Data.Maybe (isNothing)
 import System.Timeout (timeout)
+import UnliftIO.Exception (bracket, tryAny)
 
 -- | Initial settings
 data PoolboySettings = PoolboySettings
@@ -55,7 +55,7 @@
 defaultPoolboySettings =
   PoolboySettings
     { workersCount = CapabilitiesWCS,
-      log = \_ -> return ()
+      log = \x -> seq x $ return ()
     }
 
 -- | Arbitrary-numbered settings
@@ -95,7 +95,7 @@
     forkIO $
       controller $
         WorkQueueControllerState
-          {commands = wq.commands,
+          { commands = wq.commands,
             queue = wq.queue,
             stopped = wq.stopped,
             log = settings.log,
@@ -144,7 +144,7 @@
   signalQSemN wq.waitingWorkers 1
 
 -- | Enqueue action and some actions to be run after it
-enqueueAfter :: Foldable f => WorkQueue -> IO () -> f (IO ()) -> IO ()
+enqueueAfter :: (Foldable f) => WorkQueue -> IO () -> f (IO ()) -> IO ()
 enqueueAfter wq x xs =
   enqueue wq $ do
     x
@@ -191,11 +191,11 @@
             return ([], wq.capabilityCount)
           else do
             let newWorkersCount = abs diff
-            newWorkers <- forM [1..newWorkersCount] $ \capability -> do
+            newWorkers <- forM [1 .. newWorkersCount] $ \capability -> do
               wq.log $ prefix <> "Pre-fork"
-              asyncOn (capability - 1) $ worker $ WorkQueueWorkerState{queue = wq.queue, waitingWorkers = wq.waitingWorkers, log = wq.log}
+              asyncOn (capability - 1) $ worker $ WorkQueueWorkerState {queue = wq.queue, waitingWorkers = wq.waitingWorkers, log = wq.log}
             return (newWorkers, wq.capabilityCount + newWorkersCount)
-      controller $ wq { workers = newWorkers <> liveWorkers, capabilityCount = newCapabilityCount }
+      controller $ wq {workers = newWorkers <> liveWorkers, capabilityCount = newCapabilityCount}
     Stop -> do
       liveWorkers <- getLiveWorkers
       let currentCount = length liveWorkers
