diff --git a/src/Tonatona.hs b/src/Tonatona.hs
--- a/src/Tonatona.hs
+++ b/src/Tonatona.hs
@@ -1,5 +1,6 @@
 module Tonatona
   ( run
+  , liftIOCont
   , HasParser(..)
   , HasConfig(..)
   ) where
@@ -14,6 +15,12 @@
 run action = do
   withConfig parser $ \env ->
     runRIO env action
+
+{-| Lift Continuation-passing style IO function into RIO.
+ -}
+liftIOCont :: ((a -> IO b) -> IO c) -> (a -> RIO env b) -> RIO env c
+liftIOCont f action =
+  RIO $ ReaderT $ \env -> f (\a -> runReaderT (unRIO (action a)) env)
 
 class HasParser a where
   parser :: Parser a
diff --git a/tonatona.cabal b/tonatona.cabal
--- a/tonatona.cabal
+++ b/tonatona.cabal
@@ -1,11 +1,13 @@
--- This file has been generated from package.yaml by hpack version 0.28.2.
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.31.2.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 751af5463d63658aecac1ed45756de8d47b3bc82d44a012ec98f0b86904742c3
+-- hash: fca606db818f005427b5d021291f1bbcd816f9d94ba931855b0af7feb48c3d1e
 
 name:           tonatona
-version:        0.1.0.1
+version:        0.1.1.0
 synopsis:       meta application framework
 description:    Tonatona is a **meta** application framework. It handles lots of boring tasks that are needed for real-world development such as reading in values defined in environment variables, setting up logging, sending emails, accessing databases, etc.
 category:       Framework, Library, Tonatona, Web
@@ -17,7 +19,6 @@
 license:        MIT
 license-file:   LICENSE
 build-type:     Simple
-cabal-version:  >= 1.10
 extra-source-files:
     README.md
 
