diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # Revision history for wai-control
 
+## 0.2.0.0 -- 2022-07-04
+
+* Replace the 'monad-control-identity' dependency with 'unliftio-core'.
+* Replace `MonadBase IO` constraints with `MonadIO`.
+* Replace `MonadBaseControlIdentity IO` constraints with `MonadUnliftIO`.
+
 ## 0.1.0.2 -- 2020-07-28
 
 * Improve description.
diff --git a/src/Network/Wai/Handler/WebSockets/Trans.hs b/src/Network/Wai/Handler/WebSockets/Trans.hs
--- a/src/Network/Wai/Handler/WebSockets/Trans.hs
+++ b/src/Network/Wai/Handler/WebSockets/Trans.hs
@@ -17,8 +17,7 @@
 
 ) where
 
-import Control.Monad.Base
-import Control.Monad.Trans.Control.Identity
+import Control.Monad.IO.Unlift
 import Network.Wai.Handler.WebSockets
 import Network.WebSockets
 
@@ -28,38 +27,38 @@
 type ServerAppT m = PendingConnection -> m ()
 
 -- | Lift a websockets 'ServerApp' to a 'ServerAppT'.
-liftServerApp :: MonadBase IO m
+liftServerApp :: MonadIO m
               => ServerApp
               -> ServerAppT m
-liftServerApp serverApp = liftBase . serverApp
+liftServerApp serverApp = liftIO . serverApp
 
 -- | Run a 'ServerAppT' in the inner monad.
-runServerAppT :: MonadBaseControlIdentity IO m
+runServerAppT :: MonadUnliftIO m
               => ServerAppT m
               -> m ServerApp
-runServerAppT serverAppT = liftBaseWithIdentity $ \ runInBase ->
-  return $ runInBase . serverAppT
+runServerAppT serverAppT = withRunInIO $ \ runInIO ->
+  return $ runInIO . serverAppT
 
 -- | A type synonym for a websockets 'ClientApp' which has been lifted from the 'IO' monad.
 type ClientAppT m a = Connection -> m a
 
 -- | Lift a websockets 'ClientApp' to a 'ClientAppT'.
-liftClientApp :: MonadBase IO m
+liftClientApp :: MonadIO m
               => ClientApp a
               -> ClientAppT m a
-liftClientApp clientApp = liftBase . clientApp
+liftClientApp clientApp = liftIO . clientApp
 
 -- | Run a 'ClientAppT' in the inner monad.
-runClientAppT :: MonadBaseControlIdentity IO m
+runClientAppT :: MonadUnliftIO m
               => ClientAppT m a
               -> m (ClientApp a)
-runClientAppT clientAppT = liftBaseWithIdentity $ \ runInBase ->
-  return $ runInBase . clientAppT
+runClientAppT clientAppT = withRunInIO $ \ runInIO ->
+  return $ runInIO . clientAppT
 
 {- | Upgrade a 'ServerAppT' to a 'MiddlewareT'.
   This function is based on 'websocketsOr'.
 -}
-websocketsOrT :: MonadBaseControlIdentity IO m
+websocketsOrT :: MonadUnliftIO m
               => ConnectionOptions
               -> ServerAppT m
               -> MiddlewareT m
diff --git a/src/Network/Wai/Trans.hs b/src/Network/Wai/Trans.hs
--- a/src/Network/Wai/Trans.hs
+++ b/src/Network/Wai/Trans.hs
@@ -14,43 +14,42 @@
 
 ) where
 
-import Control.Monad.Base
-import Control.Monad.Trans.Control.Identity
+import Control.Monad.IO.Unlift
 import Network.Wai
 
 -- | A type synonym for a wai 'Application' which has been lifted from the 'IO' monad.
 type ApplicationT m = Request -> (Response -> m ResponseReceived) -> m ResponseReceived
 
 -- | Lift a wai 'Application' to an 'ApplicationT'.
-liftApplication :: MonadBaseControlIdentity IO m
+liftApplication :: MonadUnliftIO m
                 => Application
                 -> ApplicationT m
-liftApplication app request respond = liftBaseWithIdentity $ \ runInBase ->
-  app request $ runInBase . respond
+liftApplication app request respond = withRunInIO $ \ runInIO ->
+  app request $ runInIO . respond
 
 -- | Run an 'ApplicationT' in the inner monad.
-runApplicationT :: MonadBaseControlIdentity IO m
+runApplicationT :: MonadUnliftIO m
                 => ApplicationT m
                 -> m Application
-runApplicationT appT = liftBaseWithIdentity $ \ runInBase ->
-  return $ \ request respond -> runInBase $ appT request $ liftBase . respond
+runApplicationT appT = withRunInIO $ \ runInIO ->
+  return $ \ request respond -> runInIO $ appT request $ liftIO . respond
 
 -- | A type synonym for a wai 'Middleware' which has been lifted from the 'IO' monad.
 type MiddlewareT m = ApplicationT m -> ApplicationT m
 
 -- | Lift a wai 'Middleware' to a 'MiddlewareT'.
-liftMiddleware :: MonadBaseControlIdentity IO m
+liftMiddleware :: MonadUnliftIO m
                => Middleware
                -> MiddlewareT m
 liftMiddleware mid appT request respond = do
   app <- runApplicationT appT
-  liftBaseWithIdentity $ \ runInBase -> mid app request $ runInBase . respond
+  withRunInIO $ \ runInIO -> mid app request $ runInIO . respond
 
 -- | Run a 'MiddlewareT' in the inner monad.
-runMiddlewareT :: MonadBaseControlIdentity IO m
+runMiddlewareT :: MonadUnliftIO m
                => MiddlewareT m
                -> m Middleware
-runMiddlewareT midT = liftBaseWithIdentity $ \ runInBase ->
+runMiddlewareT midT = withRunInIO $ \ runInIO ->
   return $ \ app request respond -> do
-    app' <- runInBase . runApplicationT . midT $ liftApplication app
+    app' <- runInIO . runApplicationT . midT $ liftApplication app
     app' request respond
diff --git a/wai-control.cabal b/wai-control.cabal
--- a/wai-control.cabal
+++ b/wai-control.cabal
@@ -1,11 +1,11 @@
 name:                wai-control
-version:             0.1.0.2
+version:             0.2.0.0
 synopsis:            Run wai Applications in IO based monads
 description:         This package allows 'IO' based monads in covariant and contravariant positions
                      of <https://hackage.haskell.org/package/wai wai> 'Application's.
                      .
                      The monads, which are applicable for this, need to have
-                     'MonadBaseControlIdentity' 'IO' instances.
+                     'MonadUnliftIO' instances.
                      This are for most cases 'ReaderT' stacks based on the 'IO' monad.
                      This package will especially be of interest, if you are sharing access to
                      'MVar's, 'TVar's or other concurrent data, while controlling that access with
@@ -29,8 +29,7 @@
   exposed-modules:     Network.Wai.Trans
                        Network.Wai.Handler.WebSockets.Trans
   build-depends:       base                   >= 4.5      && < 5
-                     , monad-control-identity >= 0.1.0.1  && < 0.2
-                     , transformers-base      >= 0.4.5.2  && < 0.5
+                     , unliftio-core          >= 0.2      && < 0.3
                      , wai                    >= 3.2      && < 3.3
                      , wai-websockets         >= 3.0.1.2  && < 3.1
                      , websockets             >= 0.12.5.3 && < 0.13
