diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,8 +1,5 @@
 # yam
 
-[![Hackage](https://img.shields.io/badge/hackage-v0.5.1-orange.svg)](https://hackage.haskell.org/package/yam)
-[![Build Status](https://travis-ci.org/leptonyu/yam.svg?branch=master)](https://travis-ci.org/leptonyu/yam)
-
 Servant based Web Wrapper for Production in Haskell.
 
 
diff --git a/src/Yam/Internal.hs b/src/Yam/Internal.hs
--- a/src/Yam/Internal.hs
+++ b/src/Yam/Internal.hs
@@ -12,6 +12,7 @@
   -- * Utilities
   , throwS
   , readConf
+  , getLogger
   ) where
 
 import           Control.Exception          hiding (Handler)
@@ -21,6 +22,7 @@
 import           GHC.Stack
 import           Network.Wai.Handler.Warp   (run)
 import           Servant.Swagger
+import           System.IO.Unsafe           (unsafePerformIO)
 import           Yam.Logger
 import           Yam.Swagger
 import           Yam.Trace
@@ -40,6 +42,19 @@
   logErrorCS ?callStack msg
   lift $ throw e
 
+{-# NOINLINE loggerKey #-}
+loggerKey :: Key LogFunc
+loggerKey = unsafePerformIO newKey
+
+getLogger :: Env -> Maybe LogFunc
+getLogger env =
+  let trace :: Maybe TraceLog = getAttr traceKey  env
+      logger :: Maybe LogFunc = getAttr loggerKey env
+      {-# INLINE nlf #-}
+      nlf x (Just t) = addTrace x t
+      nlf x _        = x
+  in (`nlf` trace) <$> logger
+
 startYam
   :: forall api. (HasSwagger api, HasServer api '[Env])
   => AppConfig
@@ -54,7 +69,7 @@
   = withLogger name logConfig $ do
       logInfo $ "Start Service [" <> name <> "] ..."
       logger <- askLoggerIO
-      (runAM $ foldr1 (<>) (traceMiddleware enableTrace : middlewares)) (Env L.empty Nothing ac) $ \(env, middleware) -> do
+      (runAM $ foldr1 (<>) (traceMiddleware enableTrace : middlewares)) (Env (L.insert loggerKey logger L.empty) Nothing ac) $ \(env, middleware) -> do
         let cxt                  = env :. EmptyContext
             pCxt                 = Proxy :: Proxy '[Env]
             portText             = showText port
@@ -73,12 +88,7 @@
   where
     {-# INLINE go #-}
     go :: App a -> App a
-    go b = do
-      let trace :: Maybe TraceLog = L.lookup traceKey v
-      withAppM (\(env,lf) -> (env { reqAttributes = Just v}, nlf lf trace)) b
-    {-# INLINE nlf #-}
-    nlf x (Just t) = addTrace x t
-    nlf x _        = x
+    go = withAppM (\(env,lf) -> let env' = env { reqAttributes = Just v} in (env', fromMaybe lf $ getLogger env'))
 
 readConf :: (Default a, S.FromProperties a) => Text -> S.Properties -> a
 readConf k p = fromMaybe def $ S.lookup k p
diff --git a/yam.cabal b/yam.cabal
--- a/yam.cabal
+++ b/yam.cabal
@@ -4,13 +4,13 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 7dcbc1f022111b764d8abc3792f3a3aba5cd1e9dd501a85c2e76d07305d9899c
+-- hash: 8354a1cbffc8b45ccba09be46e0df544e4e479ad6c5062ac6650d1187e8312ae
 
 name:           yam
-version:        0.5.1
+version:        0.5.2
 synopsis:       Yam Web
 category:       Web
-homepage:       https://github.com/leptonyu/yam#readme
+homepage:       https://github.com/leptonyu/yam/yam#readme
 author:         Daniel YU
 maintainer:     Daniel YU <leptonyu@gmail.com>
 copyright:      (c) 2018 Daniel YU
@@ -33,7 +33,7 @@
   hs-source-dirs:
       src
   default-extensions: AutoDeriveTypeable BangPatterns BinaryLiterals ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable DuplicateRecordFields DoAndIfThenElse EmptyDataDecls ExistentialQuantification FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MonadFailDesugaring MultiParamTypeClasses MultiWayIf NamedFieldPuns OverloadedStrings PartialTypeSignatures PatternGuards PolyKinds RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances ViewPatterns
-  ghc-options: -Wall -optP-Wno-nonportable-include-path -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -fno-warn-orphans -fno-warn-missing-signatures
+  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -fno-warn-orphans -fno-warn-missing-signatures
   build-depends:
       aeson
     , base >=4.7 && <5
@@ -49,7 +49,6 @@
     , servant-swagger
     , servant-swagger-ui
     , text
-    , unliftio-core
     , vault
     , wai
     , warp
@@ -62,7 +61,7 @@
   hs-source-dirs:
       demo
   default-extensions: AutoDeriveTypeable BangPatterns BinaryLiterals ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable DuplicateRecordFields DoAndIfThenElse EmptyDataDecls ExistentialQuantification FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MonadFailDesugaring MultiParamTypeClasses MultiWayIf NamedFieldPuns OverloadedStrings PartialTypeSignatures PatternGuards PolyKinds RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances ViewPatterns
-  ghc-options: -Wall -optP-Wno-nonportable-include-path -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -fno-warn-orphans -fno-warn-missing-signatures
+  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -fno-warn-orphans -fno-warn-missing-signatures
   build-depends:
       aeson
     , base >=4.7 && <5
@@ -78,10 +77,8 @@
     , servant-swagger
     , servant-swagger-ui
     , text
-    , unliftio-core
     , vault
     , wai
-    , wai-extra
     , warp
     , yam
   default-language: Haskell2010
@@ -101,7 +98,7 @@
       test
       src
   default-extensions: AutoDeriveTypeable BangPatterns BinaryLiterals ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable DuplicateRecordFields DoAndIfThenElse EmptyDataDecls ExistentialQuantification FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MonadFailDesugaring MultiParamTypeClasses MultiWayIf NamedFieldPuns OverloadedStrings PartialTypeSignatures PatternGuards PolyKinds RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances ViewPatterns
-  ghc-options: -Wall -optP-Wno-nonportable-include-path -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -fno-warn-orphans -fno-warn-missing-signatures
+  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -fno-warn-orphans -fno-warn-missing-signatures
   build-depends:
       QuickCheck
     , aeson
@@ -119,7 +116,6 @@
     , servant-swagger
     , servant-swagger-ui
     , text
-    , unliftio-core
     , vault
     , wai
     , warp
