diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,18 @@
+1.0.1.0
+
+* Added the functions:
+
+  liftThrough
+    :: (MonadTransControl t, Monad (t m), Monad m)
+    => (m (StT t a) -> m (StT t b)) -- ^
+    -> t m a -> t m b
+
+  captureT :: (MonadTransControl t, Monad (t m), Monad m) => t m (StT t ())
+  captureM :: MonadBaseControl b m => m (StM m ())
+
+* Added Travis-CI integration
+
+
 1.0.0.5
 
 * Support transformers-0.5 & ransformers-compat-0.5.*.
diff --git a/Control/Monad/Trans/Control.hs b/Control/Monad/Trans/Control.hs
--- a/Control/Monad/Trans/Control.hs
+++ b/Control/Monad/Trans/Control.hs
@@ -29,23 +29,25 @@
     ( -- * MonadTransControl
       MonadTransControl(..), Run
 
-      -- ** Defaults for MonadTransControl
+      -- ** Defaults
       -- $MonadTransControlDefaults
     , RunDefault, defaultLiftWith, defaultRestoreT
 
       -- * MonadBaseControl
     , MonadBaseControl (..), RunInBase
 
-      -- ** Defaults for MonadBaseControl
+      -- ** Defaults
       -- $MonadBaseControlDefaults
     , ComposeSt, RunInBaseDefault, defaultLiftBaseWith, defaultRestoreM
 
       -- * Utility functions
-    , control, embed, embed_
+    , control, embed, embed_, captureT, captureM
 
     , liftBaseOp, liftBaseOp_
 
     , liftBaseDiscard, liftBaseOpDiscard
+
+    , liftThrough
     ) where
 
 
@@ -464,6 +466,16 @@
 embed_ f = liftBaseWith $ \runInBase -> return (void . runInBase . f)
 {-# INLINABLE embed_ #-}
 
+-- | Capture the current state of a transformer
+captureT :: (MonadTransControl t, Monad (t m), Monad m) => t m (StT t ())
+captureT = liftWith $ \runInM -> runInM (return ())
+{-# INLINABLE captureT #-}
+
+-- | Capture the current state above the base monad
+captureM :: MonadBaseControl b m => m (StM m ())
+captureM = liftBaseWith $ \runInBase -> runInBase (return ())
+{-# INLINABLE captureM #-}
+
 -- | @liftBaseOp@ is a particular application of 'liftBaseWith' that allows
 -- lifting control operations of type:
 --
@@ -525,3 +537,13 @@
                   ->  (a -> m ()) -> m c
 liftBaseOpDiscard f g = liftBaseWith $ \runInBase -> f $ void . runInBase . g
 {-# INLINABLE liftBaseOpDiscard #-}
+
+-- | Transform an action in @t m@ using a transformer that operates on the underlying monad @m@
+liftThrough
+    :: (MonadTransControl t, Monad (t m), Monad m)
+    => (m (StT t a) -> m (StT t b)) -- ^
+    -> t m a -> t m b
+liftThrough f t = do
+  st <- liftWith $ \run -> do
+    f $ run t
+  restoreT $ return st
diff --git a/README.markdown b/README.markdown
--- a/README.markdown
+++ b/README.markdown
@@ -1,3 +1,6 @@
+[![Hackage](https://img.shields.io/hackage/v/monad-control.svg)](https://hackage.haskell.org/package/monad-control)
+[![Build Status](https://travis-ci.org/basvandijk/monad-control.svg)](https://travis-ci.org/basvandijk/monad-control)
+
 This package defines the type class `MonadControlIO`, a subset of
 `MonadIO` into which generic control operations such as `catch` can be
 lifted from `IO`.  Instances are based on monad transformers in
diff --git a/monad-control.cabal b/monad-control.cabal
--- a/monad-control.cabal
+++ b/monad-control.cabal
@@ -1,5 +1,5 @@
 Name:                monad-control
-Version:             1.0.0.5
+Version:             1.0.1.0
 Synopsis:            Lift control operations, like exception catching, through monad transformers
 License:             BSD3
 License-file:        LICENSE
@@ -28,6 +28,12 @@
   simplify and speedup most definitions.
 
 extra-source-files:  README.markdown, CHANGELOG
+tested-with:
+  GHC==7.4.2,
+  GHC==7.6.3,
+  GHC==7.8.4,
+  GHC==7.10.3,
+  GHC==8.0.1
 
 --------------------------------------------------------------------------------
 
