diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+0.5.2.0
+=======
+
+* Support `servant-0.12`.
+
 0.5.1.0
 =======
 
diff --git a/example/acid/servant-auth-token-example-acid.cabal b/example/acid/servant-auth-token-example-acid.cabal
--- a/example/acid/servant-auth-token-example-acid.cabal
+++ b/example/acid/servant-auth-token-example-acid.cabal
@@ -35,11 +35,11 @@
     , mtl                           >= 2.2      && < 2.3
     , optparse-applicative          >= 0.12     && < 0.15
     , safecopy                      >= 0.9      && < 0.10
-    , servant                       >= 0.9      && < 0.12
+    , servant                       >= 0.9      && < 0.13
     , servant-auth-token            >= 0.5      && < 0.6
     , servant-auth-token-acid       >= 0.5      && < 0.6
     , servant-auth-token-api        >= 0.5      && < 0.6
-    , servant-server                >= 0.9      && < 0.12
+    , servant-server                >= 0.12     && < 0.13
     , text                          >= 1.2      && < 1.3
     , time                          >= 1.6      && < 1.9
     , transformers-base             >= 0.4      && < 0.5
diff --git a/example/acid/src/Monad.hs b/example/acid/src/Monad.hs
--- a/example/acid/src/Monad.hs
+++ b/example/acid/src/Monad.hs
@@ -5,7 +5,6 @@
   , newServerEnv
   , runServerM
   , runServerMIO
-  , serverMtoHandler
   , AuthM(..)
   , runAuth
   ) where
@@ -78,10 +77,6 @@
   case ea of
     Left e -> fail $ "runServerMIO: " <> show e
     Right a -> return a
-
--- | Transformation to Servant 'Handler'
-serverMtoHandler :: ServerEnv -> ServerM :~> Handler
-serverMtoHandler e = NT (runServerM e)
 
 -- Derive HasStorage for 'AcidBackendT' with your 'DB'
 deriveAcidHasStorage ''DB
diff --git a/example/acid/src/Server.hs b/example/acid/src/Server.hs
--- a/example/acid/src/Server.hs
+++ b/example/acid/src/Server.hs
@@ -34,9 +34,10 @@
 
 -- | WAI application of server
 exampleServerApp :: ServerEnv -> Application
-exampleServerApp e = serve (Proxy :: Proxy ExampleAPI) apiImpl
+exampleServerApp e = serve api apiImpl
   where
-    apiImpl = enter (serverMtoHandler e) exampleServer
+    api = Proxy :: Proxy ExampleAPI
+    apiImpl = hoistServer api (runServerM e) exampleServer
 
 -- | Implementation of main server API
 exampleServer :: ServerT ExampleAPI ServerM
diff --git a/example/leveldb/servant-auth-token-example-leveldb.cabal b/example/leveldb/servant-auth-token-example-leveldb.cabal
--- a/example/leveldb/servant-auth-token-example-leveldb.cabal
+++ b/example/leveldb/servant-auth-token-example-leveldb.cabal
@@ -35,11 +35,11 @@
     , mtl                           >= 2.2      && < 2.3
     , optparse-applicative          >= 0.12     && < 0.15
     , safecopy                      >= 0.9      && < 0.10
-    , servant                       >= 0.11     && < 0.12
+    , servant                       >= 0.12     && < 0.13
     , servant-auth-token            >= 0.5      && < 0.6
     , servant-auth-token-api        >= 0.5      && < 0.6
     , servant-auth-token-leveldb    >= 0.5      && < 0.6
-    , servant-server                >= 0.9      && < 0.12
+    , servant-server                >= 0.12     && < 0.13
     , text                          >= 1.2      && < 1.3
     , time                          >= 1.6      && < 1.9
     , transformers-base             >= 0.4      && < 0.5
diff --git a/example/leveldb/src/Monad.hs b/example/leveldb/src/Monad.hs
--- a/example/leveldb/src/Monad.hs
+++ b/example/leveldb/src/Monad.hs
@@ -5,7 +5,6 @@
   , newServerEnv
   , runServerM
   , runServerMIO
-  , serverMtoHandler
   , AuthM(..)
   , runAuth
   ) where
@@ -81,10 +80,6 @@
   case ea of
     Left e -> fail $ "runServerMIO: " <> show e
     Right a -> return a
-
--- | Transformation to Servant 'Handler'
-serverMtoHandler :: ServerEnv -> ServerM :~> Handler
-serverMtoHandler e = NT (runServerM e)
 
 -- | Special monad for authorisation actions
 newtype AuthM a = AuthM { unAuthM :: LevelDBBackendT IO a }
diff --git a/example/leveldb/src/Server.hs b/example/leveldb/src/Server.hs
--- a/example/leveldb/src/Server.hs
+++ b/example/leveldb/src/Server.hs
@@ -34,9 +34,10 @@
 
 -- | WAI application of server
 exampleServerApp :: ServerEnv -> Application
-exampleServerApp e = serve (Proxy :: Proxy ExampleAPI) apiImpl
+exampleServerApp e = serve api apiImpl
   where
-    apiImpl = enter (serverMtoHandler e) exampleServer
+    api = Proxy :: Proxy ExampleAPI
+    apiImpl = hoistServer api (runServerM e) exampleServer
 
 -- | Implementation of main server API
 exampleServer :: ServerT ExampleAPI ServerM
diff --git a/example/persistent/servant-auth-token-example-persistent.cabal b/example/persistent/servant-auth-token-example-persistent.cabal
--- a/example/persistent/servant-auth-token-example-persistent.cabal
+++ b/example/persistent/servant-auth-token-example-persistent.cabal
@@ -34,11 +34,11 @@
     , optparse-applicative          >= 0.12     && < 0.15
     , persistent                    >= 2.6      && < 2.8
     , persistent-postgresql         >= 2.6      && < 2.8
-    , servant                       >= 0.11     && < 0.12
+    , servant                       >= 0.12     && < 0.13
     , servant-auth-token            >= 0.5      && < 0.6
     , servant-auth-token-api        >= 0.5      && < 0.6
     , servant-auth-token-persistent >= 0.6      && < 0.7
-    , servant-server                >= 0.9      && < 0.12
+    , servant-server                >= 0.12     && < 0.13
     , text                          >= 1.2      && < 1.3
     , time                          >= 1.6      && < 1.9
     , transformers-base             >= 0.4      && < 0.5
diff --git a/example/persistent/src/Monad.hs b/example/persistent/src/Monad.hs
--- a/example/persistent/src/Monad.hs
+++ b/example/persistent/src/Monad.hs
@@ -4,7 +4,6 @@
   , newServerEnv
   , runServerM
   , runServerMIO
-  , serverMtoHandler
   , AuthM(..)
   , runAuth
   ) where
@@ -81,10 +80,6 @@
   case ea of
     Left e -> fail $ "runServerMIO: " <> show e
     Right a -> return a
-
--- | Transformation to Servant 'Handler'
-serverMtoHandler :: ServerEnv -> ServerM :~> Handler
-serverMtoHandler e = NT (runServerM e)
 
 -- | Special monad for authorisation actions
 newtype AuthM a = AuthM { unAuthM :: PersistentBackendT IO a }
diff --git a/example/persistent/src/Server.hs b/example/persistent/src/Server.hs
--- a/example/persistent/src/Server.hs
+++ b/example/persistent/src/Server.hs
@@ -34,9 +34,10 @@
 
 -- | WAI application of server
 exampleServerApp :: ServerEnv -> Application
-exampleServerApp e = serve (Proxy :: Proxy ExampleAPI) apiImpl
+exampleServerApp e = serve api apiImpl
   where
-    apiImpl = enter (serverMtoHandler e) exampleServer
+    api = Proxy :: Proxy ExampleAPI
+    apiImpl = hoistServer api (runServerM e) exampleServer
 
 -- | Implementation of main server API
 exampleServer :: ServerT ExampleAPI ServerM
diff --git a/servant-auth-token.cabal b/servant-auth-token.cabal
--- a/servant-auth-token.cabal
+++ b/servant-auth-token.cabal
@@ -1,5 +1,5 @@
 name:                servant-auth-token
-version:             0.5.1.0
+version:             0.5.2.0
 synopsis:            Servant based API and server for token based authorisation
 description:         Please see README.md
 homepage:            https://github.com/ncrashed/servant-auth-token#readme
@@ -67,9 +67,9 @@
     , http-api-data           >= 0.3.5  && < 0.4
     , mtl                     >= 2.2    && < 2.3
     , pwstore-fast            >= 2.4    && < 2.5
-    , servant                 >= 0.11   && < 0.12
+    , servant                 >= 0.11   && < 0.13
     , servant-auth-token-api  >= 0.5    && < 0.6
-    , servant-server          >= 0.11   && < 0.12
+    , servant-server          >= 0.11   && < 0.13
     , text                    >= 1.2    && < 1.3
     , time                    >= 1.5    && < 1.9
     , transformers            >= 0.4    && < 0.6
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -15,7 +15,7 @@
 # resolver:
 #  name: custom-snapshot
 #  location: "./custom-snapshot.yaml"
-resolver: lts-10.0
+resolver: lts-10.4
 
 # User packages to be built.
 # Various formats can be used as shown in the example below.
@@ -62,7 +62,11 @@
 - acid-state-0.14.3
 - rocksdb-haskell-1.0.1
 - safecopy-store-0.9.6
+- servant-0.12.1
 - servant-auth-token-api-0.5.1.0
+- servant-client-0.12.0.1
+- servant-docs-0.11.1
+- servant-server-0.12
 
 # Override default flag values for local packages and extra-deps
 flags: {}
