diff --git a/src/Data/Url.hs b/src/Data/Url.hs
--- a/src/Data/Url.hs
+++ b/src/Data/Url.hs
@@ -34,6 +34,7 @@
 import Path.Extended
 
 import Data.Functor.Identity
+import Data.Functor.Compose
 import Data.URI (URI (..))
 import Data.URI.Auth (URIAuth (..))
 import Data.URI.Auth.Host (URIAuthHost (Localhost))
@@ -49,6 +50,7 @@
 import Control.Monad.Trans.Error (Error, ErrorT)
 import Control.Monad.Except
 import Control.Monad.Trans.Control
+import qualified Control.Monad.Trans.Control.Aligned as Aligned
 import Control.Monad.Trans.Identity
 import Control.Monad.Trans.Maybe
 import Control.Monad.List
@@ -183,12 +185,21 @@
   liftWith f = RelativeUrlT (f runRelativeUrlT)
   restoreT = RelativeUrlT
 
+instance Aligned.MonadTransControl RelativeUrlT Identity where
+  liftWith f = RelativeUrlT (f (\x -> Identity <$> runRelativeUrlT x))
+  restoreT x = RelativeUrlT (runIdentity <$> x)
+
 instance ( MonadBaseControl b m
          ) => MonadBaseControl b (RelativeUrlT m) where
   type StM (RelativeUrlT m) a = ComposeSt RelativeUrlT m a
   liftBaseWith = defaultLiftBaseWith
   restoreM = defaultRestoreM
 
+instance ( Aligned.MonadBaseControl b m stM
+         ) => Aligned.MonadBaseControl b (RelativeUrlT m) (Compose stM Identity) where
+  liftBaseWith = Aligned.defaultLiftBaseWith
+  restoreM = Aligned.defaultRestoreM
+
 instance MFunctor RelativeUrlT where
   hoist f (RelativeUrlT x) = RelativeUrlT (f x)
 
@@ -228,12 +239,21 @@
   liftWith f = GroundedUrlT (f runGroundedUrlT)
   restoreT = GroundedUrlT
 
+instance Aligned.MonadTransControl GroundedUrlT Identity where
+  liftWith f = GroundedUrlT (f (\x -> Identity <$> runGroundedUrlT x))
+  restoreT x = GroundedUrlT (runIdentity <$> x)
+
 instance ( MonadBaseControl b m
          ) => MonadBaseControl b (GroundedUrlT m) where
   type StM (GroundedUrlT m) a = ComposeSt GroundedUrlT m a
   liftBaseWith = defaultLiftBaseWith
   restoreM = defaultRestoreM
 
+instance ( Aligned.MonadBaseControl b m stM
+         ) => Aligned.MonadBaseControl b (GroundedUrlT m) (Compose stM Identity) where
+  liftBaseWith = Aligned.defaultLiftBaseWith
+  restoreM = Aligned.defaultRestoreM
+
 instance MFunctor GroundedUrlT where
   hoist f (GroundedUrlT x) = GroundedUrlT (f x)
 
@@ -332,11 +352,21 @@
     f $ \t -> runAbsoluteUrlT t r
   restoreT = AbsoluteUrlT . const
 
+instance Aligned.MonadTransControl AbsoluteUrlT Identity where
+  liftWith f = AbsoluteUrlT $ \r ->
+    f $ \x -> Identity <$> runAbsoluteUrlT x r
+  restoreT x = AbsoluteUrlT $ \_ -> runIdentity <$> x
+
 instance ( MonadBaseControl b m
          ) => MonadBaseControl b (AbsoluteUrlT m) where
   type StM (AbsoluteUrlT m) a = ComposeSt AbsoluteUrlT m a
   liftBaseWith = defaultLiftBaseWith
   restoreM = defaultRestoreM
+
+instance ( Aligned.MonadBaseControl b m stM
+         ) => Aligned.MonadBaseControl b (AbsoluteUrlT m) (Compose stM Identity) where
+  liftBaseWith = Aligned.defaultLiftBaseWith
+  restoreM = Aligned.defaultRestoreM
 
 instance ( MonadThrow m
          ) => MonadThrow (AbsoluteUrlT m) where
diff --git a/urlpath.cabal b/urlpath.cabal
--- a/urlpath.cabal
+++ b/urlpath.cabal
@@ -1,5 +1,5 @@
 Name:                   urlpath
-Version:                6.0.1
+Version:                6.0.2
 Author:                 Athan Clark <athan.clark@gmail.com>
 Maintainer:             Athan Clark <athan.clark@gmail.com>
 License:                MIT
@@ -21,6 +21,7 @@
                       , exceptions
                       , mmorph
                       , monad-control
+                      , monad-control-aligned
                       , monad-logger
                       , mtl
                       , path-extra >= 0.0.5
