diff --git a/src/Yam.hs b/src/Yam.hs
--- a/src/Yam.hs
+++ b/src/Yam.hs
@@ -1,8 +1,11 @@
 module Yam(
+  -- * Application
     module Yam.Internal
-  , module Yam.Logger
   , module Yam.Types
+  -- * Modules
+  , module Yam.Logger
   , module Yam.Swagger
+  -- * Middlewares
   , module Yam.Middleware
   , module Yam.Middleware.Auth
   , module Yam.Middleware.Client
diff --git a/src/Yam/Middleware/Auth.hs b/src/Yam/Middleware/Auth.hs
--- a/src/Yam/Middleware/Auth.hs
+++ b/src/Yam/Middleware/Auth.hs
@@ -1,4 +1,10 @@
-module Yam.Middleware.Auth where
+module Yam.Middleware.Auth(
+  -- * Auth Middleware
+    authAppMiddleware
+  , CheckAuth
+  , HasAuthKey(..)
+  , AuthChecker(..)
+  ) where
 import           Control.Lens
 import           Data.Swagger
 import qualified Data.Vault.Lazy                            as L
diff --git a/src/Yam/Middleware/Client.hs b/src/Yam/Middleware/Client.hs
--- a/src/Yam/Middleware/Client.hs
+++ b/src/Yam/Middleware/Client.hs
@@ -1,4 +1,5 @@
 module Yam.Middleware.Client(
+  -- * Client Middleware
     ClientConfig(..)
   , runClient
   , clientMiddleware
diff --git a/src/Yam/Middleware/Default.hs b/src/Yam/Middleware/Default.hs
--- a/src/Yam/Middleware/Default.hs
+++ b/src/Yam/Middleware/Default.hs
@@ -1,4 +1,7 @@
-module Yam.Middleware.Default where
+module Yam.Middleware.Default(
+  -- * Default Middleware
+    defaultMiddleware
+  ) where
 
 import           Yam.Middleware
 import           Yam.Middleware.Client
diff --git a/src/Yam/Middleware/Trace.hs b/src/Yam/Middleware/Trace.hs
--- a/src/Yam/Middleware/Trace.hs
+++ b/src/Yam/Middleware/Trace.hs
@@ -1,4 +1,5 @@
 module Yam.Middleware.Trace(
+  -- * Trace Middleware
     MonadTracer(..)
   , MonadTracing(..)
   , TraceConfig(..)
diff --git a/src/Yam/Swagger.hs b/src/Yam/Swagger.hs
--- a/src/Yam/Swagger.hs
+++ b/src/Yam/Swagger.hs
@@ -2,7 +2,6 @@
 module Yam.Swagger(
     SwaggerConfig(..)
   , serveWithContextAndSwagger
-  , module Control.Lens
   ) where
 
 import           Control.Lens       hiding (Context, Empty, allOf, (.=))
diff --git a/src/Yam/Types.hs b/src/Yam/Types.hs
--- a/src/Yam/Types.hs
+++ b/src/Yam/Types.hs
@@ -1,5 +1,5 @@
 module Yam.Types(
-  -- * AppM Monad
+  -- * App Monad
     App
   , runApp
   , runTestApp
diff --git a/src/Yam/Types/Env.hs b/src/Yam/Types/Env.hs
--- a/src/Yam/Types/Env.hs
+++ b/src/Yam/Types/Env.hs
@@ -1,4 +1,5 @@
 module Yam.Types.Env(
+  -- * Environment
     AppConfig(..)
   , Env(..)
   , getAttr
diff --git a/src/Yam/Types/Prelude.hs b/src/Yam/Types/Prelude.hs
--- a/src/Yam/Types/Prelude.hs
+++ b/src/Yam/Types/Prelude.hs
@@ -1,13 +1,18 @@
 {-# LANGUAGE CPP                  #-}
 {-# LANGUAGE ImplicitParams       #-}
 {-# LANGUAGE UndecidableInstances #-}
+
+#define IS_NEW() ((MIN_VERSION_salak(0,1,7) && !MIN_VERSION_salak(0.2.0)) || MIN_VERSION_salak(0.2.1))
+
 module Yam.Types.Prelude(
+  -- * Utilities
     randomString
   , showText
   , throwS
   , randomCode
   , whenException
-#if !MIN_VERSION_salak(0,1,7)
+  -- * Reexport Functions
+#if !IS_NEW
   , (.>>)
   , (.?>)
   , (.?=)
@@ -78,7 +83,7 @@
 import           System.IO.Unsafe                   (unsafePerformIO)
 import           System.Random.MWC
 
-#if MIN_VERSION_salak(0,1,7)
+#if IS_NEW
 import           Data.Salak                         ((.>>), (.?=), (.?>), (.|=))
 #else
 import qualified Data.Salak                         as S
diff --git a/yam.cabal b/yam.cabal
--- a/yam.cabal
+++ b/yam.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.12
 name: yam
-version: 0.5.8
+version: 0.5.9
 license: BSD3
 license-file: LICENSE
 copyright: (c) 2018 Daniel YU
@@ -25,11 +25,11 @@
         Yam.Middleware.Client
         Yam.Swagger
         Yam.Types
-        Yam.Types.Prelude
-        Yam.Types.Env
         Yam.Logger
     hs-source-dirs: src
     other-modules:
+        Yam.Types.Prelude
+        Yam.Types.Env
         Data.Opentracing
         Data.Opentracing.Types
         Data.Opentracing.Tracer
