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
@@ -30,11 +30,18 @@
 -}
 
 module Control.Monad.Trans.Control
-    ( MonadTransControl(..), Run
+    ( -- * MonadTransControl
+      MonadTransControl(..), Run
+
+      -- ** Defaults for MonadTransControl
+      -- $MonadTransControlDefaults
+    , defaultLiftWith, defaultRestoreT
+
+      -- * MonadBaseControl
     , MonadBaseControl (..), RunInBase
 
-      -- * Defaults for MonadBaseControl
-      -- $defaults
+      -- ** Defaults for MonadBaseControl
+      -- $MonadBaseControlDefaults
     , ComposeSt, defaultLiftBaseWith, defaultRestoreM
 
       -- * Utility functions
@@ -140,6 +147,44 @@
 
 
 --------------------------------------------------------------------------------
+-- Defaults for MonadTransControl
+--------------------------------------------------------------------------------
+
+-- $MonadTransControlDefaults
+-- Following functions can be used to define 'MonadTransControl' instances for
+-- newtypes.
+--
+-- @{-\# LANGUAGE GeneralizedNewtypeDeriving \#-}
+--
+-- newtype CounterT m a = CounterT {unCounterT :: StateT Int m a}
+--   deriving (Monad, MonadTrans)
+--
+-- instance MonadTransControl CounterT where
+--     newtype StT CounterT a = StCounter {unStCounter :: StT (StateT Int) a}
+--     liftWith = 'defaultLiftWith' CounterT unCounterT StCounter
+--     restoreT = 'defaultRestoreT' CounterT unStCounter
+-- @
+
+-- | Default definition for the 'liftWith' method.
+defaultLiftWith ∷ (Monad m, MonadTransControl n)
+                ⇒ (∀ b.   n m b → t m b)     -- ^ Monad constructor
+                → (∀ o b. t o b → n o b)     -- ^ Monad deconstructor
+                → (∀ b.   StT n b → StT t b) -- ^ 'StT' constructor
+                → (Run t → m a)
+                → t m a
+defaultLiftWith t unT stT = \f → t $ liftWith $ \run → f $ liftM stT ∘ run ∘ unT
+{-# INLINE defaultLiftWith #-}
+
+defaultRestoreT ∷ (Monad m, MonadTransControl n)
+                ⇒ (n m a → t m a)     -- ^ Monad constructor
+                → (StT t a → StT n a) -- ^ 'StT' deconstructor
+                → m (StT t a)
+                → t m a
+defaultRestoreT t unStT = t ∘ restoreT ∘ liftM unStT
+{-# INLINE defaultRestoreT #-}
+
+
+--------------------------------------------------------------------------------
 -- MonadTransControl instances
 --------------------------------------------------------------------------------
 
@@ -305,7 +350,7 @@
 -- Defaults for MonadBaseControl
 --------------------------------------------------------------------------------
 
--- $defaults
+-- $MonadBaseControlDefaults
 --
 -- Note that by using the following default definitions it's easy to make a
 -- monad transformer @T@ an instance of 'MonadBaseControl':
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:             0.3.1.4
+Version:             0.3.2
 Synopsis:            Lift control operations, like exception catching, through monad transformers
 License:             BSD3
 License-file:        LICENSE
