diff --git a/Criterion/Main/Options.hs b/Criterion/Main/Options.hs
--- a/Criterion/Main/Options.hs
+++ b/Criterion/Main/Options.hs
@@ -22,9 +22,6 @@
     , versionInfo
     ) where
 
--- Temporary: to support pre-SMP
-import Data.Semigroup ((<>))
-
 import Control.Monad (when)
 import Criterion.Analysis (validateAccessors)
 import Criterion.Types (Config(..), Verbosity(..), measureAccessors,
diff --git a/Criterion/Report.hs b/Criterion/Report.hs
--- a/Criterion/Report.hs
+++ b/Criterion/Report.hs
@@ -40,7 +40,6 @@
 import Data.Aeson (ToJSON (..), Value(..), object, (.=), Value, encode)
 import Data.Data (Data, Typeable)
 import Data.Foldable (forM_)
-import Data.Monoid ((<>))
 import GHC.Generics (Generic)
 import Paths_criterion (getDataFileName)
 import Statistics.Function (minMax)
diff --git a/Criterion/Types.hs b/Criterion/Types.hs
--- a/Criterion/Types.hs
+++ b/Criterion/Types.hs
@@ -72,9 +72,6 @@
     , DataRecord(..)
     ) where
 
--- Temporary: to support pre-SMP
-import Data.Semigroup
-
 import Control.DeepSeq (NFData(rnf))
 import Criterion.Types.Internal (fakeEnvironment, nf', whnf')
 import Data.Aeson (FromJSON(..), ToJSON(..))
diff --git a/app/Options.hs b/app/Options.hs
--- a/app/Options.hs
+++ b/app/Options.hs
@@ -8,7 +8,6 @@
     ) where
 
 import Data.Data (Data, Typeable)
-import Data.Semigroup ((<>))
 import Data.Version (showVersion)
 import GHC.Generics (Generic)
 import Paths_criterion (version)
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,6 @@
+1.4.1.0
+* Use `base-compat-batteries`.
+
 1.4.0.0
 
 * We now do three samples for statistics:
@@ -19,8 +22,8 @@
   Now, it is:
 
   ```haskell
-     Maybe GCStatistics -- ^ Statistics gathered at the end of a run, post-GC. 
-  -> Maybe GCStatistics -- ^ Statistics gathered at the end of a run, pre-GC. 
+     Maybe GCStatistics -- ^ Statistics gathered at the end of a run, post-GC.
+  -> Maybe GCStatistics -- ^ Statistics gathered at the end of a run, pre-GC.
   -> Maybe GCStatistics -- ^ Statistics gathered at the beginning of a run.
   -> Measured -> Measured
   ```
diff --git a/criterion.cabal b/criterion.cabal
--- a/criterion.cabal
+++ b/criterion.cabal
@@ -1,10 +1,10 @@
 name:           criterion
-version:        1.4.0.0
+version:        1.4.1.0
 synopsis:       Robust, reliable performance measurement and analysis
 license:        BSD3
 license-file:   LICENSE
 author:         Bryan O'Sullivan <bos@serpentine.com>
-maintainer:     Bryan O'Sullivan <bos@serpentine.com>
+maintainer:     Ryan Scott <ryan.gl.scott@gmail.com>
 copyright:      2009-2016 Bryan O'Sullivan and others
 category:       Development, Performance, Testing, Benchmarking
 homepage:       http://www.serpentine.com/criterion
@@ -91,7 +91,7 @@
     aeson >= 0.8,
     ansi-wl-pprint >= 0.6.7.2,
     base >= 4.5 && < 5,
-    base-compat >= 0.9,
+    base-compat-batteries >= 0.10 && < 0.11,
     binary >= 0.5.1.0,
     bytestring >= 0.9 && < 1.0,
     cassava >= 0.3.0.0,
@@ -99,7 +99,7 @@
     containers,
     deepseq >= 1.1.0.0,
     directory,
-    exceptions >= 0.8.2 && < 0.10,
+    exceptions >= 0.8.2 && < 0.11,
     filepath,
     Glob >= 0.7.2,
     microstache >= 1.0.1 && < 1.1,
@@ -146,7 +146,7 @@
 
   Build-Depends:
     base,
-    base-compat,
+    base-compat-batteries,
     criterion,
     optparse-applicative >= 0.13,
     semigroups
@@ -188,6 +188,7 @@
   build-depends:
     QuickCheck >= 2.4,
     base,
+    base-compat-batteries,
     criterion,
     statistics,
     HUnit,
diff --git a/examples/criterion-examples.cabal b/examples/criterion-examples.cabal
--- a/examples/criterion-examples.cabal
+++ b/examples/criterion-examples.cabal
@@ -19,6 +19,9 @@
   GHC==8.2.2,
   GHC==8.4.1
 
+flag maps
+  default: True
+
 executable fibber
   main-is: Fibber.hs
 
@@ -35,10 +38,13 @@
     base == 4.*,
     conduit >= 1.2.13.1,
     criterion,
-    pipes >= 4.1,
+    pipes >= 4.3.5,
     transformers
 
 executable maps
+  if !flag(maps)
+    buildable: False
+
   main-is: Maps.hs
 
   ghc-options: -Wall -rtsopts
diff --git a/tests/Properties.hs b/tests/Properties.hs
--- a/tests/Properties.hs
+++ b/tests/Properties.hs
@@ -5,22 +5,14 @@
 
 import Control.Applicative as A ((<$>))
 import Criterion.Analysis
+import Prelude ()
+import Prelude.Compat
 import Statistics.Types (Sample)
 import Test.Tasty (TestTree, testGroup)
 import Test.Tasty.QuickCheck (testProperty)
 import Test.QuickCheck
 import qualified Data.Vector.Generic as G
 import qualified Data.Vector.Unboxed as U
-
-#if __GLASGOW_HASKELL__ >= 704
-import Data.Monoid ((<>))
-#else
-import Data.Monoid
-
-(<>) :: Monoid m => m -> m -> m
-(<>) = mappend
-infixr 6 <>
-#endif
 
 instance (Arbitrary a, U.Unbox a) => Arbitrary (U.Vector a) where
   arbitrary = U.fromList A.<$> arbitrary
