diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,12 @@
 Changes
 =======
 
+Version 1.4.2.2
+---------------
+
+- Fix compilation with `mtl-2.3`
+- Tested with GHC 8.0 - 9.2; dropped support for GHC 7.x
+
 Version 1.4.2.1
 ---------------
 
diff --git a/Test/Tasty/Ingredients/ConsoleReporter.hs b/Test/Tasty/Ingredients/ConsoleReporter.hs
--- a/Test/Tasty/Ingredients/ConsoleReporter.hs
+++ b/Test/Tasty/Ingredients/ConsoleReporter.hs
@@ -27,8 +27,10 @@
   ) where
 
 import Prelude hiding (fail, EQ)
-import Control.Monad.State hiding (fail)
-import Control.Monad.Reader hiding (fail,reader)
+import Control.Monad (join, unless, void, when, (<=<))
+import Control.Monad.IO.Class (liftIO)
+import Control.Monad.Reader (Reader, runReader, ask)
+import Control.Monad.State (evalState, evalStateT, get, modify, put)
 import Control.Concurrent.STM
 import Control.Exception
 import Test.Tasty.Core
@@ -500,7 +502,9 @@
   optionHelp = return "Do not produce any output; indicate success only by the exit code"
   optionCLParser = mkFlagCLParser (short 'q') (Quiet True)
 
--- | Report only failed tests
+-- | Report only failed tests.
+--
+-- At the moment, this option only works globally. As an argument to 'localOption', it does nothing.
 newtype HideSuccesses = HideSuccesses Bool
   deriving (Eq, Ord, Typeable)
 instance IsOption HideSuccesses where
diff --git a/Test/Tasty/Patterns/Eval.hs b/Test/Tasty/Patterns/Eval.hs
--- a/Test/Tasty/Patterns/Eval.hs
+++ b/Test/Tasty/Patterns/Eval.hs
@@ -2,7 +2,8 @@
 module Test.Tasty.Patterns.Eval (Path, eval, withFields, asB) where
 
 import Prelude hiding (Ordering(..))
-import Control.Monad.Reader
+import Control.Monad ((<=<))
+import Control.Monad.Reader (ReaderT, runReaderT, ask)
 import Control.Monad.Error.Class (throwError) -- see #201
 import qualified Data.Sequence as Seq
 import Data.Foldable
diff --git a/Test/Tasty/Run.hs b/Test/Tasty/Run.hs
--- a/Test/Tasty/Run.hs
+++ b/Test/Tasty/Run.hs
@@ -14,9 +14,10 @@
 import Data.Maybe
 import Data.Graph (SCC(..), stronglyConnComp)
 import Data.Typeable
-import Control.Monad.State
-import Control.Monad.Writer
-import Control.Monad.Reader
+import Control.Monad (forever, guard, join, liftM)
+import Control.Monad.IO.Class (liftIO)
+import Control.Monad.Reader (ReaderT(..), local, ask)
+import Control.Monad.Writer (WriterT(..), execWriterT, tell)
 import Control.Concurrent
 import Control.Concurrent.STM
 import Control.Concurrent.Timeout (timeout)
@@ -24,6 +25,7 @@
 import Control.Exception as E
 import Control.Applicative
 import Control.Arrow
+import Data.Monoid (First(..))
 import GHC.Conc (labelThread)
 import Prelude  -- Silence AMP and FTP import warnings
 
diff --git a/tasty.cabal b/tasty.cabal
--- a/tasty.cabal
+++ b/tasty.cabal
@@ -2,7 +2,7 @@
 --  see http://haskell.org/cabal/users-guide/
 
 name:                tasty
-version:             1.4.2.1
+version:             1.4.2.2
 synopsis:            Modern and extensible testing framework
 description:         Tasty is a modern testing framework for Haskell.
                      It lets you combine your unit tests, golden
@@ -66,7 +66,7 @@
     Test.Tasty.Ingredients.ListTests
     Test.Tasty.Ingredients.IncludingOptions
   build-depends:
-    base >= 4.8 && < 5,
+    base >= 4.9 && < 5,
     stm >= 2.3,
     containers,
     mtl >= 2.1.3.1,
