diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2017, Quixoftic, LLC
+Copyright (c) 2018, Quixoftic, LLC
 
 All rights reserved.
 
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,15 @@
+## 0.8.0.5 (2018-02-04)
+
+Changes:
+
+  - This package now uses Protolude.
+
+  - Disable hlint tests by default.
+
+  - Add a `stack-lts-9.yaml` file for LTS 9 Stack builds.
+
+  - Pare down support to just GHC 8.0.2 and GHC 8.2.2.
+
 ## 0.8.0.4 (2018-01-26)
 
 - Require hlint 2.0.x.
diff --git a/mellon-core.cabal b/mellon-core.cabal
--- a/mellon-core.cabal
+++ b/mellon-core.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: c241c1dea92ace19196c4e4721144b03ede6c6f16f531f177adb9296e10611b0
+-- hash: 230c051b3a9aee836cded92a01acf529ac1e0e4fc62e0a333b929a0ae1744a06
 
 name:                   mellon-core
-version:                0.8.0.4
+version:                0.8.0.5
 synopsis:               Control physical access devices
 description:            /Speak, friend, and enter./
                         .
@@ -117,10 +117,10 @@
 bug-reports:            https://github.com/quixoftic/mellon/issues
 author:                 Drew Hess <dhess-src@quixoftic.com>
 maintainer:             Drew Hess <dhess-src@quixoftic.com>
-copyright:              Copyright (c) 2017, Quixoftic, LLC
+copyright:              Copyright (c) 2018, Quixoftic, LLC
 license:                BSD3
 license-file:           LICENSE
-tested-with:            GHC==7.10.3 GHC==8.0.1 GHC==8.0.2 GHC==8.2.1 GHC==8.2.2
+tested-with:            GHC==8.0.2 GHC==8.2.2
 build-type:             Simple
 cabal-version:          >= 1.10
 
@@ -142,16 +142,18 @@
 flag test-hlint
   description: Build hlint test
   manual: True
-  default: True
+  default: False
 
 library
   hs-source-dirs:
       src
+  default-extensions: NoImplicitPrelude
   other-extensions: DeriveDataTypeable DeriveGeneric Safe
   build-depends:
       async ==2.1.*
     , base >=4.8 && <5
     , mtl ==2.2.*
+    , protolude ==0.2.*
     , time >=1.5 && <2
     , transformers >=0.4.2 && <0.6
   if impl(ghc >= 8.0)
@@ -178,6 +180,7 @@
   main-is: doctest.hs
   hs-source-dirs:
       test
+  default-extensions: NoImplicitPrelude
   ghc-options: -threaded
   if impl(ghc >= 8.0)
     ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates
@@ -190,6 +193,7 @@
         QuickCheck >=2.8 && <2.12
       , base
       , doctest >=0.11 && <0.14
+      , protolude
       , quickcheck-instances ==0.3.*
   default-language: Haskell2010
 
@@ -198,6 +202,7 @@
   main-is: hlint.hs
   hs-source-dirs:
       test
+  default-extensions: NoImplicitPrelude
   ghc-options: -w -threaded -rtsopts -with-rtsopts=-N
   if impl(ghc >= 8.0)
     ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates
@@ -209,6 +214,7 @@
     build-depends:
         base
       , hlint ==2.0.*
+      , protolude
   default-language: Haskell2010
 
 test-suite spec
@@ -216,6 +222,7 @@
   main-is: Main.hs
   hs-source-dirs:
       test
+  default-extensions: NoImplicitPrelude
   other-extensions: DeriveDataTypeable
   ghc-options: -w -threaded -rtsopts -with-rtsopts=-N
   build-depends:
@@ -224,6 +231,7 @@
     , hspec >=2.2 && <2.5
     , mellon-core
     , mtl
+    , protolude
     , time
     , transformers
   if impl(ghc >= 8.0)
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,11 +1,11 @@
 name:       mellon-core
-version:    0.8.0.4
+version:    0.8.0.5
 synopsis:   Control physical access devices
 category:   System
 stability:  experimental
 author:     Drew Hess <dhess-src@quixoftic.com>
 maintainer: Drew Hess <dhess-src@quixoftic.com>
-copyright:  Copyright (c) 2017, Quixoftic, LLC
+copyright:  Copyright (c) 2018, Quixoftic, LLC
 license:    BSD3
 github:     quixoftic/mellon
 
@@ -205,13 +205,13 @@
 
   properly, and you should look for an alternative solution.'
 
-tested-with: GHC==7.10.3 GHC==8.0.1 GHC==8.0.2 GHC==8.2.1 GHC==8.2.2
+tested-with: GHC==8.0.2 GHC==8.2.2
 
 flags:
   test-hlint:
     description: Build hlint test
     manual: true
-    default: true
+    default: false
   test-doctests:
     description: Build doctests
     manual: true
@@ -230,6 +230,9 @@
         - -fwarn-incomplete-uni-patterns
         - -fwarn-incomplete-record-updates
 
+default-extensions:
+  - NoImplicitPrelude
+
 library:
   when:
     - condition: impl(ghc >= 8.0)
@@ -252,6 +255,7 @@
     - base         >=4.8 && <5
     - async        ==2.1.*
     - mtl          ==2.2.*
+    - protolude    ==0.2.*
     - time         >=1.5 && <2
     - transformers >=0.4.2 && <0.6
 
@@ -272,7 +276,8 @@
         else:
           dependencies:
             - base
-            - hlint ==2.0.*
+            - hlint     ==2.0.*
+            - protolude
   doctest:
     main: doctest.hs
     source-dirs: test
@@ -287,8 +292,9 @@
           dependencies:
             - base
             - QuickCheck           >=2.8    && <2.12
-            - quickcheck-instances ==0.3.*
             - doctest              >=0.11 && <0.14
+            - protolude
+            - quickcheck-instances ==0.3.*
   spec:
     main: Main.hs
     source-dirs:
@@ -306,6 +312,7 @@
       - hspec        >=2.2 && <2.5
       - mellon-core
       - mtl
+      - protolude
       - time
       - transformers
 
diff --git a/src/Mellon/Controller.hs b/src/Mellon/Controller.hs
--- a/src/Mellon/Controller.hs
+++ b/src/Mellon/Controller.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : Mellon.Controller
 Description : The default @mellon-core@ controller
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
diff --git a/src/Mellon/Controller/Async.hs b/src/Mellon/Controller/Async.hs
--- a/src/Mellon/Controller/Async.hs
+++ b/src/Mellon/Controller/Async.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : Mellon.Controller.Async
 Description : An asynchronous @mellon-core@ controller
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
@@ -42,6 +42,7 @@
        , State(..)
        ) where
 
+import Protolude hiding (State, state)
 import Control.Concurrent
        (MVar, modifyMVar, newMVar, readMVar, threadDelay)
 import Control.Concurrent.Async (async, link)
diff --git a/src/Mellon/Device.hs b/src/Mellon/Device.hs
--- a/src/Mellon/Device.hs
+++ b/src/Mellon/Device.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : Mellon.Device
 Description : An interface for physical access devices
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
@@ -37,12 +37,12 @@
        , mockLockDevice
        ) where
 
+import Protolude
 import Control.Concurrent
        (MVar, newMVar, putMVar, readMVar, takeMVar)
 import Control.Monad.IO.Class (MonadIO, liftIO)
 import Data.Data
 import Data.Time (UTCTime, getCurrentTime)
-import GHC.Generics
 
 -- | A parametric device type which provides two "methods," one to
 -- lock the device, and the other to unlock it.
diff --git a/src/Mellon/StateMachine.hs b/src/Mellon/StateMachine.hs
--- a/src/Mellon/StateMachine.hs
+++ b/src/Mellon/StateMachine.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : Mellon.StateMachine
 Description : The @mellon-core@ state machine
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
@@ -53,9 +53,9 @@
        , transition
        ) where
 
+import Protolude hiding (State)
 import Data.Data
 import Data.Time (UTCTime)
-import GHC.Generics
 
 {- $setup
 
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -1,5 +1,6 @@
 module Main where
 
+import Protolude
 import Test.Hspec
 import Spec
 
diff --git a/test/Mellon/Controller/AsyncSpec.hs b/test/Mellon/Controller/AsyncSpec.hs
--- a/test/Mellon/Controller/AsyncSpec.hs
+++ b/test/Mellon/Controller/AsyncSpec.hs
@@ -1,14 +1,15 @@
+{-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 
 module Mellon.Controller.AsyncSpec (spec) where
 
+import Protolude
 import Control.Concurrent (MVar, newMVar, modifyMVar, threadDelay)
 import Control.Concurrent.Async (race)
-import Control.Exception (Exception(..), throwIO)
+import Control.Exception (Exception(..))
 import Control.Monad (void, when)
 import Control.Monad.IO.Class (MonadIO, liftIO)
 import Control.Monad.RWS.Strict (RWST, execRWST, ask, tell)
-import Data.Data
 import Data.Time (NominalDiffTime, UTCTime, addUTCTime, diffUTCTime)
 import qualified Data.Time as Time (getCurrentTime)
 import Test.Hspec
@@ -88,7 +89,7 @@
           do _ <- unlockIt duration
              return ()
 
-type CheckedResults = Either ((MockLockEvent, MockLockEvent), String) String
+type CheckedResults = Either ((MockLockEvent, MockLockEvent), Text) Text
 
 checkResults :: [MockLockEvent]
              -> [MockLockEvent]
diff --git a/test/doctest.hs b/test/doctest.hs
--- a/test/doctest.hs
+++ b/test/doctest.hs
@@ -1,6 +1,7 @@
 module Main where
 
+import Protolude
 import Test.DocTest
 
 main :: IO ()
-main = doctest ["src"]
+main = doctest ["src", "-XNoImplicitPrelude"]
diff --git a/test/hlint.hs b/test/hlint.hs
--- a/test/hlint.hs
+++ b/test/hlint.hs
@@ -1,9 +1,8 @@
 module Main where
 
+import Protolude
 import Control.Monad (unless)
 import Language.Haskell.HLint
-import System.Environment
-import System.Exit
 
 main :: IO ()
 main =
