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.2.7
+Version       : 7.3.0
 License       : BSD3
 License-file  : COPYING
 Synopsis      : client-side session data
@@ -12,9 +12,8 @@
 Build-Type    : Simple
 
 source-repository head
-    type:     darcs
-    subdir:   happstack-clientsession
-    location: http://hub.darcs.net/stepcut/happstack
+    type:     git
+    location: https://github.com/Happstack/happstack-clientsession
 
 Library
   GHC-Options     : -Wall
@@ -26,8 +25,8 @@
     bytestring        >= 0.9 && < 0.11,
     cereal            >= 0.3 && < 0.5,
     clientsession     >= 0.8 && < 0.10,
-    happstack-server  >= 7.0 && < 7.4,
-    monad-control     == 0.3.*,
+    happstack-server  >= 7.0 && < 7.5,
+    monad-control     >= 1.0 && < 1.1,
     mtl               >= 2.0 && < 2.3,
     safecopy          >= 0.7 && < 0.9,
     transformers-base == 0.4.*
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
@@ -282,16 +282,16 @@
     put a = SessionStateT $ put (Modified a)
 
 instance MonadTransControl (SessionStateT s) where
-    newtype StT (SessionStateT s) a = StSessionStateT { unStSessionStateT :: StT (StateT (SessionStatus s)) a }
+    type StT (SessionStateT s) a = StT (StateT (SessionStatus s)) a
     liftWith f =
-        SessionStateT $ liftWith $ \runStateT' ->
-            f $ liftM StSessionStateT . runStateT' . unSessionStateT
-    restoreT = SessionStateT . restoreT . liftM unStSessionStateT
+        liftWith $ \runStateT' ->
+            f $ runStateT'
+    restoreT = restoreT
 
 instance MonadBaseControl b m => MonadBaseControl b (SessionStateT s m) where
-    newtype StM (SessionStateT s m) a = StMSessionStateT { unStMSessionStateT :: ComposeSt (SessionStateT s) m a }
-    liftBaseWith = defaultLiftBaseWith StMSessionStateT
-    restoreM     = defaultRestoreM     unStMSessionStateT
+    type StM (SessionStateT s m) a = ComposeSt (SessionStateT s) m a
+    liftBaseWith = defaultLiftBaseWith
+    restoreM     = defaultRestoreM
 
 -- | run 'SessionStateT' and get the result, plus the final @SessionStatus sessionData@
 runSessionStateT :: SessionStateT sessionData m a -> SessionStatus sessionData -> m (a, SessionStatus sessionData)
@@ -352,19 +352,19 @@
     lift = ClientSessionT . lift . lift
 
 instance MonadTransControl (ClientSessionT s) where
-    newtype StT (ClientSessionT s) a = StClientSessionT { unStClientSessionT :: StT (SessionStateT s) (StT (ReaderT SessionConf) a) }
+    type StT (ClientSessionT s) a = StT (SessionStateT s) (StT (ReaderT SessionConf) a)
 
     liftWith f =
         ClientSessionT $ liftWith $ \runSessionStateT' ->
             liftWith $ \runReaderT' ->
-            f $ liftM StClientSessionT . runReaderT' . runSessionStateT' . unClientSessionT
+            f $ runReaderT' . runSessionStateT' . unClientSessionT
 
-    restoreT = ClientSessionT . restoreT . restoreT . liftM unStClientSessionT
+    restoreT = ClientSessionT . restoreT . restoreT
 
 instance MonadBaseControl b m => MonadBaseControl b (ClientSessionT s m) where
-    newtype StM (ClientSessionT s m) a = StMClientSessionT { unStMClientSessionT :: ComposeSt (ClientSessionT s) m a }
-    liftBaseWith = defaultLiftBaseWith StMClientSessionT
-    restoreM     = defaultRestoreM     unStMClientSessionT
+    type StM (ClientSessionT s m) a = ComposeSt (ClientSessionT s) m a
+    liftBaseWith = defaultLiftBaseWith
+    restoreM     = defaultRestoreM
 
 -- | transform the inner monad, but leave the session data alone.
 mapClientSessionT :: (forall s. m (a, s) -> n (b, s))
