diff --git a/happstack-clientsession.cabal b/happstack-clientsession.cabal
--- a/happstack-clientsession.cabal
+++ b/happstack-clientsession.cabal
@@ -1,5 +1,5 @@
 Name          : happstack-clientsession
-Version       : 7.1.1
+Version       : 7.2.1
 License       : BSD3
 License-file  : COPYING
 Synopsis      : client-side session data
diff --git a/src/Happstack/Server/ClientSession.hs b/src/Happstack/Server/ClientSession.hs
--- a/src/Happstack/Server/ClientSession.hs
+++ b/src/Happstack/Server/ClientSession.hs
@@ -163,14 +163,14 @@
 
 import Control.Applicative   (Applicative, Alternative, optional)
 import Control.Monad         (MonadPlus(..), liftM)
-import Control.Monad.Base    (MonadBase )
-import Control.Monad.Cont    (MonadCont)
-import Control.Monad.Error   (MonadError)
+import Control.Monad.Base    (MonadBase)
+import Control.Monad.Cont    (MonadCont, ContT)
+import Control.Monad.Error   (MonadError, ErrorT, Error)
 import Control.Monad.Fix     (MonadFix)
 import Control.Monad.Reader  (MonadReader(ask, local), ReaderT(..), mapReaderT)
 import Control.Monad.State   (MonadState(get,put), StateT(..), mapStateT)
-import Control.Monad.Writer  (MonadWriter(tell, listen, pass))
-import Control.Monad.RWS     (MonadRWS)
+import Control.Monad.Writer  (MonadWriter(tell, listen, pass), WriterT(..))
+import Control.Monad.RWS     (MonadRWS, RWST)
 import Control.Monad.Trans   (MonadIO(liftIO), MonadTrans(lift))
 import Control.Monad.Trans.Control               ( MonadTransControl(..)
                                                  , MonadBaseControl(..)
@@ -490,6 +490,36 @@
     getSession    = getSessionCST
     putSession    = putSessionCST
     expireSession = expireSessionCST
+
+instance (Monad m, MonadClientSession sessionData m) => MonadClientSession sessionData (ContT c m) where
+    getSession    = lift getSession
+    putSession    = lift . putSession
+    expireSession = lift expireSession
+
+instance (Monad m, MonadClientSession sessionData m, Error e) => MonadClientSession sessionData (ErrorT e m) where
+    getSession    = lift getSession
+    putSession    = lift . putSession
+    expireSession = lift expireSession
+
+instance (Monad m, MonadClientSession sessionData m) => MonadClientSession sessionData (ReaderT r m) where
+    getSession    = lift getSession
+    putSession    = lift . putSession
+    expireSession = lift expireSession
+
+instance (Monad m, MonadClientSession sessionData m) => MonadClientSession sessionData (StateT s m) where
+    getSession    = lift getSession
+    putSession    = lift . putSession
+    expireSession = lift expireSession
+
+instance (Monad m, MonadClientSession sessionData m, Monoid w) => MonadClientSession sessionData (WriterT w m) where
+    getSession    = lift getSession
+    putSession    = lift . putSession
+    expireSession = lift expireSession
+
+instance (Monad m, MonadClientSession sessionData m, Monoid w) => MonadClientSession sessionData (RWST r w s m) where
+    getSession    = lift getSession
+    putSession    = lift . putSession
+    expireSession = lift expireSession
 
 ------------------------------------------------------------------------------
 -- liftSessionStateT
