diff --git a/src/Control/TimeWarp/Rpc/Transfer.hs b/src/Control/TimeWarp/Rpc/Transfer.hs
--- a/src/Control/TimeWarp/Rpc/Transfer.hs
+++ b/src/Control/TimeWarp/Rpc/Transfer.hs
@@ -64,8 +64,11 @@
        -- * Transfer
          Transfer (..)
        , TransferException (..)
+       , ConnectionPool
        , runTransfer
        , runTransferS
+       , runTransferRaw
+       , getConnPool
 
        -- * Settings
        , FailsInRow
@@ -414,12 +417,21 @@
 
 type instance ThreadId (Transfer s) = C.ThreadId
 
+runTransferRaw
+  :: Settings
+  -> TV.TVar (ConnectionPool s)
+  -> IO s
+  -> Transfer s a
+  -> LoggerNameBox TimedIO a
+runTransferRaw s m us t =
+    flip runReaderT us $ flip runReaderT m $ flip runReaderT s $
+    getTransfer t
+
 -- | Run with specified settings.
 runTransferS :: Settings -> IO s -> Transfer s a -> LoggerNameBox TimedIO a
 runTransferS s us t = do
     m <- liftIO (TV.newTVarIO initConnectionPool)
-    flip runReaderT us $ flip runReaderT m $ flip runReaderT s $
-        getTransfer t
+    runTransferRaw s m us t
 
 -- | Run `Transfer`, with a way to create initial state for socket.
 runTransfer :: IO s -> Transfer s a -> LoggerNameBox TimedIO a
@@ -429,6 +441,8 @@
 modifyManager how = Transfer . lift $
     ask >>= liftIO . atomically . flip modifyTVarS how
 
+getConnPool :: Transfer s (TV.TVar (ConnectionPool s))
+getConnPool = Transfer $ lift ask
 
 -- * Logic
 
diff --git a/time-warp.cabal b/time-warp.cabal
--- a/time-warp.cabal
+++ b/time-warp.cabal
@@ -1,5 +1,5 @@
 name:                time-warp
-version:             1.1.1.0
+version:             1.1.1.1
 homepage:            https://github.com/serokell/time-warp
 bug-reports:         https://github.com/serokell/time-warp/issues
 license:             MIT
