diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.7.0.0
+* BREAKING: Switch from partial Monoid instance on Parser to total Semigroup instance.
+* Compatibility with GHC 8.4.x/base-4.11.1.0
+
 0.6.8.1
 * Fix documentation mistake in FromNamedRecord/ToNamedRecord examples.
 
diff --git a/csv-conduit.cabal b/csv-conduit.cabal
--- a/csv-conduit.cabal
+++ b/csv-conduit.cabal
@@ -1,5 +1,5 @@
 Name:                csv-conduit
-Version:             0.6.8.1
+Version:             0.7.0.0
 Synopsis:            A flexible, fast, conduit-based CSV parser library for Haskell.
 Homepage:            http://github.com/ozataman/csv-conduit
 License:             BSD3
@@ -98,6 +98,7 @@
     , mmorph
     , primitive
     , resourcet              >= 1.1.2.1
+    , semigroups
 
   if impl(ghc >= 7.2.1)
     cpp-options: -DGENERICS
diff --git a/src/Data/CSV/Conduit/Conversion.hs b/src/Data/CSV/Conduit/Conversion.hs
--- a/src/Data/CSV/Conduit/Conversion.hs
+++ b/src/Data/CSV/Conduit/Conversion.hs
@@ -64,7 +64,7 @@
 
 import Data.Int (Int8, Int16, Int32, Int64)
 import qualified Data.Map as M
-import Data.Monoid as Monoid
+import Data.Semigroup as Semigroup
 import qualified Data.Text as T
 import qualified Data.Text.Encoding as T
 import qualified Data.Text.Lazy as LT
@@ -778,11 +778,9 @@
                                    in unParser a kf' ks
     {-# INLINE mplus #-}
 
-instance Monoid.Monoid (Parser a) where
-    mempty  = fail "mempty"
-    {-# INLINE mempty #-}
-    mappend = mplus
-    {-# INLINE mappend #-}
+instance Semigroup.Semigroup (Parser a) where
+    (<>) = mplus
+    {-# INLINE (<>) #-}
 
 apP :: Parser (a -> b) -> Parser a -> Parser b
 apP d e = do
diff --git a/src/Data/CSV/Conduit/Monoid.hs b/src/Data/CSV/Conduit/Monoid.hs
--- a/src/Data/CSV/Conduit/Monoid.hs
+++ b/src/Data/CSV/Conduit/Monoid.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE CPP #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
 module Data.CSV.Conduit.Monoid
     ( (<>)
diff --git a/test/Test.hs b/test/Test.hs
--- a/test/Test.hs
+++ b/test/Test.hs
@@ -7,7 +7,7 @@
 import           Control.Exception
 import qualified Data.ByteString.Char8          as B
 import           Data.Map                       ((!))
-import           Data.Monoid
+import           Data.Monoid                    as M
 import           Data.Text
 import qualified Data.Vector                    as V
 import           System.Directory
@@ -48,7 +48,7 @@
       let efoos = decodeCSV defCSVSettings ("Foo\nbad" :: B.ByteString)
       case efoos :: Either SomeException (V.Vector (Named Foo)) of
         Left e     -> assertFailure (show e)
-        Right foos -> mempty @=? foos
+        Right foos -> M.mempty @=? foos
   ]
 
 
@@ -60,7 +60,7 @@
     s <- nr .: "Foo"
     case s of
       "foo" -> pure Foo
-      _ -> fail ("Expected \"foo\" but got " <> B.unpack s)
+      _     -> fail ("Expected \"foo\" but got " <> B.unpack s)
 
 
 instance ToNamedRecord Foo where
