diff --git a/src/Network/Wai/Middleware/ContentType.hs b/src/Network/Wai/Middleware/ContentType.hs
--- a/src/Network/Wai/Middleware/ContentType.hs
+++ b/src/Network/Wai/Middleware/ContentType.hs
@@ -42,11 +42,11 @@
 import Network.Wai.Middleware.ContentType.Lucius
 import Network.Wai.Middleware.ContentType.Text
 
-import Network.Wai.Trans (Response, MiddlewareT, requestHeaders,
-                         pathInfo)
+import Network.Wai (Response, requestHeaders, pathInfo)
+import Network.Wai.Trans (MiddlewareT)
 import Network.Wai.Logger (withStdoutLogger)
 import qualified Data.HashMap.Lazy as HM
-import Data.Monoid
+import Data.Monoid (First (..))
 import Control.Monad.Trans.Control.Aligned (MonadBaseControl (..))
 import Data.Singleton.Class (Extractable (..))
 
diff --git a/src/Network/Wai/Middleware/ContentType/Blaze.hs b/src/Network/Wai/Middleware/ContentType/Blaze.hs
--- a/src/Network/Wai/Middleware/ContentType/Blaze.hs
+++ b/src/Network/Wai/Middleware/ContentType/Blaze.hs
@@ -4,7 +4,7 @@
 
 module Network.Wai.Middleware.ContentType.Blaze where
 
-import           Network.Wai.Middleware.ContentType.Types
+import           Network.Wai.Middleware.ContentType.Types (FileExtListenerT, tell', FileExt (Html), ResponseVia (..))
 import           Network.HTTP.Types                      (status200, Status, ResponseHeaders)
 import           Network.Wai                             (Response, responseBuilder)
 
diff --git a/src/Network/Wai/Middleware/ContentType/ByteString.hs b/src/Network/Wai/Middleware/ContentType/ByteString.hs
--- a/src/Network/Wai/Middleware/ContentType/ByteString.hs
+++ b/src/Network/Wai/Middleware/ContentType/ByteString.hs
@@ -1,6 +1,6 @@
 module Network.Wai.Middleware.ContentType.ByteString where
 
-import           Network.Wai.Middleware.ContentType.Types
+import           Network.Wai.Middleware.ContentType.Types (FileExtListenerT, tell', getLogger, FileExt, ResponseVia (..))
 import           Network.HTTP.Types                      (status200, Status, ResponseHeaders)
 import           Network.Wai                             (Response, responseLBS)
 
diff --git a/src/Network/Wai/Middleware/ContentType/Cassius.hs b/src/Network/Wai/Middleware/ContentType/Cassius.hs
--- a/src/Network/Wai/Middleware/ContentType/Cassius.hs
+++ b/src/Network/Wai/Middleware/ContentType/Cassius.hs
@@ -6,11 +6,11 @@
 module Network.Wai.Middleware.ContentType.Cassius where
 
 import           Network.Wai.Middleware.ContentType.Types as CT
-import           Network.Wai.Middleware.ContentType.Text
+import           Network.Wai.Middleware.ContentType.Text  (textOnly)
 import           Network.HTTP.Types                       (status200, Status, ResponseHeaders)
 import           Network.Wai                              (Response)
 
-import           Text.Cassius
+import           Text.Cassius (Css, renderCss)
 import qualified Data.HashMap.Lazy                        as HM
 
 
diff --git a/src/Network/Wai/Middleware/ContentType/Clay.hs b/src/Network/Wai/Middleware/ContentType/Clay.hs
--- a/src/Network/Wai/Middleware/ContentType/Clay.hs
+++ b/src/Network/Wai/Middleware/ContentType/Clay.hs
@@ -6,12 +6,12 @@
 module Network.Wai.Middleware.ContentType.Clay where
 
 import           Network.Wai.Middleware.ContentType.Types as CT
-import           Network.Wai.Middleware.ContentType.Text
+import           Network.Wai.Middleware.ContentType.Text  (textOnly)
 import           Network.HTTP.Types                       (status200, Status, ResponseHeaders)
 import           Network.Wai                              (Response)
 
-import           Clay.Render
-import           Clay.Stylesheet
+import           Clay.Render (Config, renderWith)
+import           Clay.Stylesheet (Css, App)
 import qualified Data.HashMap.Lazy                        as HM
 
 
diff --git a/src/Network/Wai/Middleware/ContentType/Json.hs b/src/Network/Wai/Middleware/ContentType/Json.hs
--- a/src/Network/Wai/Middleware/ContentType/Json.hs
+++ b/src/Network/Wai/Middleware/ContentType/Json.hs
@@ -4,8 +4,8 @@
 
 module Network.Wai.Middleware.ContentType.Json where
 
-import           Network.Wai.Middleware.ContentType.Types
-import           Network.Wai.Middleware.ContentType.ByteString
+import           Network.Wai.Middleware.ContentType.Types (FileExtListenerT, FileExt (Json), mapHeaders, overFileExts)
+import           Network.Wai.Middleware.ContentType.ByteString (bytestringOnly, bytestring)
 import           Network.HTTP.Types                      (Status, ResponseHeaders)
 import           Network.Wai                             (Response)
 
@@ -21,8 +21,8 @@
         ) => j
           -> FileExtListenerT m ()
 json =
-  (overFileExts [Json] $ mapHeaders (("Content-Type","application/json"):))
-  . bytestring Json . A.encode
+  overFileExts [Json] (mapHeaders (("Content-Type","application/json"):))
+    . bytestring Json . A.encode
 
 {-# INLINEABLE json #-}
 
diff --git a/src/Network/Wai/Middleware/ContentType/Julius.hs b/src/Network/Wai/Middleware/ContentType/Julius.hs
--- a/src/Network/Wai/Middleware/ContentType/Julius.hs
+++ b/src/Network/Wai/Middleware/ContentType/Julius.hs
@@ -6,11 +6,11 @@
 module Network.Wai.Middleware.ContentType.Julius where
 
 import           Network.Wai.Middleware.ContentType.Types as CT
-import           Network.Wai.Middleware.ContentType.Text
+import           Network.Wai.Middleware.ContentType.Text  (textOnly)
 import           Network.HTTP.Types                       (status200, Status, ResponseHeaders)
 import           Network.Wai                              (Response)
 
-import           Text.Julius
+import           Text.Julius (Javascript (..), renderJavascript)
 import qualified Data.HashMap.Lazy                        as HM
 
 
diff --git a/src/Network/Wai/Middleware/ContentType/Lucid.hs b/src/Network/Wai/Middleware/ContentType/Lucid.hs
--- a/src/Network/Wai/Middleware/ContentType/Lucid.hs
+++ b/src/Network/Wai/Middleware/ContentType/Lucid.hs
@@ -4,12 +4,12 @@
 
 module Network.Wai.Middleware.ContentType.Lucid where
 
-import           Network.Wai.Middleware.ContentType.Types
+import           Network.Wai.Middleware.ContentType.Types (FileExtListenerT, tell', FileExt (Html), ResponseVia (..))
 import           Network.HTTP.Types                      (status200, Status, ResponseHeaders)
 import           Network.Wai                             (Response, responseBuilder)
 
 import qualified Lucid.Base                              as L
-import           Control.Monad.Trans
+import           Control.Monad.Trans (MonadTrans (lift))
 import qualified Data.HashMap.Lazy                       as HM
 
 
diff --git a/src/Network/Wai/Middleware/ContentType/Lucius.hs b/src/Network/Wai/Middleware/ContentType/Lucius.hs
--- a/src/Network/Wai/Middleware/ContentType/Lucius.hs
+++ b/src/Network/Wai/Middleware/ContentType/Lucius.hs
@@ -6,11 +6,11 @@
 module Network.Wai.Middleware.ContentType.Lucius where
 
 import           Network.Wai.Middleware.ContentType.Types as CT
-import           Network.Wai.Middleware.ContentType.Text
+import           Network.Wai.Middleware.ContentType.Text  (textOnly)
 import           Network.HTTP.Types                       (status200, Status, ResponseHeaders)
 import           Network.Wai                              (Response)
 
-import           Text.Lucius
+import           Text.Lucius (Css, renderCss)
 import qualified Data.HashMap.Lazy                        as HM
 
 
diff --git a/src/Network/Wai/Middleware/ContentType/Text.hs b/src/Network/Wai/Middleware/ContentType/Text.hs
--- a/src/Network/Wai/Middleware/ContentType/Text.hs
+++ b/src/Network/Wai/Middleware/ContentType/Text.hs
@@ -4,7 +4,7 @@
 
 module Network.Wai.Middleware.ContentType.Text where
 
-import           Network.Wai.Middleware.ContentType.Types
+import           Network.Wai.Middleware.ContentType.Types (FileExtListenerT, tell', FileExt (Text), ResponseVia (..))
 import           Network.HTTP.Types                       (status200, Status, ResponseHeaders)
 import           Network.Wai                              (Response, responseBuilder)
 
diff --git a/src/Network/Wai/Middleware/ContentType/Types.hs b/src/Network/Wai/Middleware/ContentType/Types.hs
--- a/src/Network/Wai/Middleware/ContentType/Types.hs
+++ b/src/Network/Wai/Middleware/ContentType/Types.hs
@@ -45,29 +45,33 @@
   ) where
 
 import qualified Data.Text              as T
-import           Data.HashMap.Lazy hiding (null)
+import           Data.HashMap.Lazy (HashMap)
 import qualified Data.HashMap.Lazy as HM
-import           Data.Monoid
+import           Data.Monoid ((<>))
 import           Data.Maybe (fromMaybe)
-import           Data.Url
-import           Data.Hashable
+import           Data.Url (MonadUrl)
+import           Data.Hashable (Hashable)
 import qualified Data.ByteString        as BS
-import           Control.Applicative
-import           Control.Monad.Base
-import           Control.Monad.Catch
-import           Control.Monad.Cont
-import           Control.Monad.Except
-import           Control.Monad.Trans.Control hiding (embed)
-import           Control.Monad.Trans.Resource
-import           Control.Monad.State
-import           Control.Monad.Writer hiding (tell)
-import           Control.Monad.Reader
-import           Control.Monad.Logger
+import           Control.Monad (MonadPlus)
+import           Control.Applicative (Alternative)
+import           Control.Monad.Fix (MonadFix)
+import           Control.Monad.IO.Class (MonadIO)
+import           Control.Monad.Trans (MonadTrans (..))
+import           Control.Monad.Base (MonadBase (..))
+import           Control.Monad.Catch (MonadMask, MonadCatch, MonadThrow)
+import           Control.Monad.Cont (MonadCont)
+import           Control.Monad.Except (MonadError)
+import           Control.Monad.Trans.Control (MonadTransControl (..), MonadBaseControl (..), ComposeSt, defaultRestoreM, defaultLiftBaseWith)
+import           Control.Monad.Trans.Resource (MonadResource)
+import           Control.Monad.State (StateT (..), MonadState, get, put, execStateT, modify')
+import           Control.Monad.Writer (MonadWriter)
+import           Control.Monad.Reader (ReaderT (..), MonadReader (..))
+import           Control.Monad.Logger (MonadLogger (..))
 
-import           GHC.Generics
+import           GHC.Generics (Generic)
 import           Network.HTTP.Types (Status, ResponseHeaders)
 import           Network.HTTP.Media (mapAccept)
-import           Network.Wai.Trans (Response)
+import           Network.Wai (Response)
 
 
 -- | Version of 'Control.Monad.Writer.tell' for 'Control.Monad.State.StateT'
@@ -84,7 +88,7 @@
   | Json
   | Text
   | Markdown
-  | Other T.Text -- ^ excluding prefix period, i.e. `foo`
+  | Other {-# UNPACK #-} !T.Text -- ^ excluding prefix period, i.e. `foo`
   deriving (Show, Eq, Ord, Generic)
 
 instance Hashable FileExt
@@ -94,7 +98,7 @@
 getFileExt :: [T.Text] -> Maybe FileExt
 getFileExt chunks = case chunks of
   [] -> Nothing
-  xs -> toExt . T.breakOnEnd "." $ last xs
+  xs -> toExt (T.breakOnEnd "." (last xs))
 
 {-# INLINEABLE getFileExt #-}
 
@@ -111,7 +115,7 @@
   | x `elem` jsons       = Just Json
   | x `elem` texts       = Just Text
   | x `elem` markdowns   = Just Markdown
-  | otherwise            = Just $ Other x
+  | otherwise            = Just (Other x)
   where
     htmls       = ["htm", "html"]
     csss        = ["css"]
@@ -171,17 +175,17 @@
              )
 
 getLogger :: Monad m => FileExtListenerT m (Status -> Maybe Integer -> IO ())
-getLogger = FileExtListenerT $ ReaderT $ \aplogger -> pure aplogger
+getLogger = FileExtListenerT (ReaderT pure)
 
 instance MonadTrans FileExtListenerT where
-  lift m = FileExtListenerT $ ReaderT $ \_ -> lift m
+  lift m = FileExtListenerT (ReaderT (\_ -> lift m))
 
 instance MonadReader r m => MonadReader r (FileExtListenerT m) where
-  ask = FileExtListenerT $ ReaderT $ \_ -> ask
+  ask = FileExtListenerT (ReaderT (const ask))
   local f (FileExtListenerT (ReaderT g)) = FileExtListenerT $ ReaderT $ \x -> local f (g x)
 
 instance Monad m => Monoid (FileExtListenerT m ()) where
-  mempty = FileExtListenerT $ put mempty
+  mempty = FileExtListenerT (put mempty)
   mappend x y = x >> y
 
 deriving instance (MonadResource m, MonadBase IO m) => MonadResource (FileExtListenerT m)
@@ -270,6 +274,6 @@
 --   >   text "foo"
 --   >   invalidEncoding myErrorHandler -- handles all except text/plain
 invalidEncoding :: Monad m => ResponseVia -> FileExtListenerT m ()
-invalidEncoding r = mapM_ (\t -> tell' $ HM.singleton t r) [Html,Css,JavaScript,Json,Text,Markdown]
+invalidEncoding r = mapM_ (\t -> tell' (HM.singleton t r)) [Html,Css,JavaScript,Json,Text,Markdown]
 
 {-# INLINEABLE invalidEncoding #-}
diff --git a/test/Network/Wai/Middleware/ContentTypeSpec.hs b/test/Network/Wai/Middleware/ContentTypeSpec.hs
--- a/test/Network/Wai/Middleware/ContentTypeSpec.hs
+++ b/test/Network/Wai/Middleware/ContentTypeSpec.hs
@@ -6,16 +6,17 @@
 module Network.Wai.Middleware.ContentTypeSpec where
 
 import Network.Wai.Middleware.ContentType
-import Network.Wai.Trans
-import Network.Wai.Internal
-import Network.HTTP.Types
+  ( FileExtListenerT, FileExt (Other), bytestring, julius, cassius, json, lucid, text
+  , textOnly, fileExtsToMiddleware
+  )
+import Network.Wai (Application)
+import Network.HTTP.Types (status406)
 import qualified Data.Text      as T
-import qualified Data.Text.Lazy as LT
 import qualified Data.Text.Lazy.Encoding as LT
 import qualified Lucid          as L
 import qualified Text.Lucius    as SL
 import qualified Text.Julius    as SJ
-import Test.Hspec
+import Test.Hspec (Spec, it, describe)
 import Test.Hspec.Wai   as HW
 
 
diff --git a/wai-middleware-content-type.cabal b/wai-middleware-content-type.cabal
--- a/wai-middleware-content-type.cabal
+++ b/wai-middleware-content-type.cabal
@@ -2,13 +2,15 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 9afbbd3c4ff146797016c5eef9779f0e704a685311098f1e20cdf09ca06c944f
+-- hash: f497bfc449fb4f1433a5f05220106caabf2e30185da00ecd30075efef2dfa54d
 
 name:           wai-middleware-content-type
-version:        0.6.0
+version:        0.6.1
 synopsis:       Route to different middlewares based on the incoming Accept header.
 description:    Please see the README on Github at <https://git.localcooking.com/tooling/wai-middleware-content-type#readme>
 category:       Web
+homepage:       https://github.com/athanclark/wai-middleware-content-type#readme
+bug-reports:    https://github.com/athanclark/wai-middleware-content-type/issues
 author:         Athan Clark
 maintainer:     athan.clark@localcooking.com
 copyright:      2018 Athan Clark
@@ -22,7 +24,7 @@
 
 source-repository head
   type: git
-  location: git://git.localcooking.com/tooling/wai-middleware-content-type.git
+  location: https://github.com/athanclark/wai-middleware-content-type
 
 library
   exposed-modules:
@@ -69,7 +71,7 @@
     , urlpath >=8.0.1
     , wai >=3.2
     , wai-logger
-    , wai-transformers
+    , wai-transformers >=0.1.0
   default-language: Haskell2010
 
 test-suite wai-middleware-content-type-test
