diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,8 @@
+4.0.1
+-----
+- GHC 8.4 compatibility.
+- Adjust lower bound on base (>= 4.9) to reflect reality.
+
 4.0.0
 -----
 - Add support for CQL V4 binary protocol.
diff --git a/cql.cabal b/cql.cabal
--- a/cql.cabal
+++ b/cql.cabal
@@ -1,5 +1,5 @@
 name:                 cql
-version:              4.0.0
+version:              4.0.1
 synopsis:             Cassandra CQL binary protocol.
 stability:            experimental
 license:              OtherLicense
@@ -62,7 +62,7 @@
         cpp-options: -DINCOMPATIBLE_VARINT
 
     build-depends:
-          base             >= 4.5    && < 5.0
+          base             >= 4.9    && < 5.0
         , bytestring       >= 0.10
         , cereal           >= 0.3
         , containers       >= 0.5
diff --git a/src/Database/CQL/Protocol/Header.hs b/src/Database/CQL/Protocol/Header.hs
--- a/src/Database/CQL/Protocol/Header.hs
+++ b/src/Database/CQL/Protocol/Header.hs
@@ -32,7 +32,8 @@
 import Data.Bits
 import Data.ByteString.Lazy (ByteString)
 import Data.Int
-import Data.Monoid
+import Data.Monoid hiding ((<>))
+import Data.Semigroup
 import Data.Serialize
 import Data.Word
 import Database.CQL.Protocol.Codec
@@ -136,9 +137,12 @@
 -- as in @compress <> tracing <> mempty@.
 newtype Flags = Flags Word8 deriving (Eq, Show)
 
+instance Semigroup Flags where
+    (Flags a) <> (Flags b) = Flags (a .|. b)
+
 instance Monoid Flags where
-    mempty = Flags 0
-    mappend (Flags a) (Flags b) = Flags (a .|. b)
+    mempty  = Flags 0
+    mappend = (<>)
 
 encodeFlags :: Putter Flags
 encodeFlags (Flags x) = encodeByte x
diff --git a/src/Database/CQL/Protocol/Request.hs b/src/Database/CQL/Protocol/Request.hs
--- a/src/Database/CQL/Protocol/Request.hs
+++ b/src/Database/CQL/Protocol/Request.hs
@@ -52,7 +52,6 @@
     ) where
 
 import Control.Applicative
-import Control.Monad (when)
 import Data.Bits
 import Data.ByteString.Lazy (ByteString)
 import Data.Foldable (traverse_)
