diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,9 @@
+0.4.1
+=====
+
+  * Supported GHC 8.4.3.
+
+
 0.4
 ===
 
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2014-2016, Matvey Aksenov
+Copyright (c) 2014-2017, Matvey Aksenov
 
 All rights reserved.
 
diff --git a/README.markdown b/README.markdown
--- a/README.markdown
+++ b/README.markdown
@@ -7,4 +7,7 @@
 
 See `example/Main.hs` for an executable example
 
+As to why anyone would want to use environment to configure their applications, here's [what some folks think][1] about it.
+
   [0]: https://hackage.haskell.org/package/optparse-applicative
+  [1]: https://12factor.net/config
diff --git a/envparse.cabal b/envparse.cabal
--- a/envparse.cabal
+++ b/envparse.cabal
@@ -1,5 +1,5 @@
 name:                envparse
-version:             0.4
+version:             0.4.1
 synopsis:            Parse environment variables
 description:
   Here's a simple example of a program that uses @envparse@'s parser:
@@ -53,7 +53,7 @@
 category:            System
 build-type:          Simple
 cabal-version:       >= 1.10
-tested-with:         GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1
+tested-with:         GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.3
 extra-source-files:
   README.markdown
   CHANGELOG.markdown
@@ -69,7 +69,7 @@
 source-repository this
   type:     git
   location: https://github.com/supki/envparse
-  tag:      0.4
+  tag:      0.4.1
 
 library
   default-language:
diff --git a/src/Env/Internal/Parser.hs b/src/Env/Internal/Parser.hs
--- a/src/Env/Internal/Parser.hs
+++ b/src/Env/Internal/Parser.hs
@@ -39,6 +39,9 @@
 #if __GLASGOW_HASKELL__ < 710
 import           Data.Monoid (Monoid(..))
 #endif
+#if MIN_VERSION_base(4,9,0)
+import           Data.Semigroup (Semigroup(..))
+#endif
 import           Data.String (IsString(..))
 
 import           Env.Internal.Free
@@ -186,9 +189,19 @@
 -- Combine them using the 'Monoid' instance.
 newtype Mod t a = Mod (t a -> t a)
 
+#if MIN_VERSION_base(4,9,0)
+instance Semigroup (Mod t a) where
+  Mod f <> Mod g = Mod (g . f)
+#endif
+
 instance Monoid (Mod t a) where
   mempty = Mod id
+#if MIN_VERSION_base(4,11,0)
+#elif MIN_VERSION_base(4,9,0)
+  mappend = (<>)
+#else
   mappend (Mod f) (Mod g) = Mod (g . f)
+#endif
 
 -- | Environment variable metadata
 data Var a = Var
