diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+0.4.1.1
+=======
+
+* Relax `servant` and `servant-server` versions.
+
 0.4.1.0
 =======
 
diff --git a/servant-auth-token-acid.cabal b/servant-auth-token-acid.cabal
--- a/servant-auth-token-acid.cabal
+++ b/servant-auth-token-acid.cabal
@@ -1,5 +1,5 @@
 name:                servant-auth-token-acid
-version:             0.4.1.0
+version:             0.4.1.1
 synopsis:            Acid-state backend for servant-auth-token server
 description:         Please see README.md
 homepage:            https://github.com/ncrashed/servant-auth-token#readme
@@ -33,7 +33,7 @@
     , safecopy                >= 0.9    && < 0.10
     , servant-auth-token      >= 0.4    && < 0.5
     , servant-auth-token-api  >= 0.4    && < 0.5
-    , servant-server          >= 0.9    && < 0.10
+    , servant-server          >= 0.9    && < 0.12
     , template-haskell        >= 2.11   && < 2.12
     , text                    >= 1.2    && < 1.3
     , time                    >= 1.5    && < 1.7
@@ -56,10 +56,12 @@
     QuasiQuotes
     RecordWildCards
     ScopedTypeVariables
+    StandaloneDeriving
     TemplateHaskell
     TupleSections
     TypeFamilies
     TypeOperators
+    UndecidableInstances
 
 source-repository head
   type:     git
diff --git a/src/Servant/Server/Auth/Token/Acid.hs b/src/Servant/Server/Auth/Token/Acid.hs
--- a/src/Servant/Server/Auth/Token/Acid.hs
+++ b/src/Servant/Server/Auth/Token/Acid.hs
@@ -4,8 +4,10 @@
   , deriveAcidHasStorage
   ) where
 
+import Control.Monad.Base
 import Control.Monad.Except
 import Control.Monad.Reader
+import Control.Monad.Trans.Control
 import Data.Acid
 import Data.Acid.Core
 import Language.Haskell.TH
@@ -17,8 +19,17 @@
 newtype AcidBackendT st m a = AcidBackendT { unAcidBackendT :: ReaderT (AuthConfig, AcidState st) (ExceptT ServantErr m) a }
   deriving (Functor, Applicative, Monad, MonadIO, MonadError ServantErr, MonadReader (AuthConfig, AcidState st))
 
+deriving instance MonadBase IO m => MonadBase IO (AcidBackendT st m)
+
 instance Monad m => HasAuthConfig (AcidBackendT st m) where
   getAuthConfig = fmap fst $ AcidBackendT ask
+
+newtype StMAcidBackendT st m a = StMAcidBackendT { unStMAcidBackendT :: StM (ReaderT (AuthConfig, AcidState st) (ExceptT ServantErr m)) a }
+
+instance MonadBaseControl IO m => MonadBaseControl IO (AcidBackendT st m) where
+    type StM (AcidBackendT st m) a = StMAcidBackendT st m a
+    liftBaseWith f = AcidBackendT $ liftBaseWith $ \q -> f (fmap StMAcidBackendT . q . unAcidBackendT)
+    restoreM = AcidBackendT . restoreM . unStMAcidBackendT
 
 -- | Execute backend action with given connection pool.
 runAcidBackendT :: AuthConfig -> AcidState st -> AcidBackendT st m a -> m (Either ServantErr a)
