diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -17,3 +17,4 @@
 * [reactormonk](https://github.com/reactormonk)
 * [Oleg Grenrus](https://github.com/phadej)
 * [Edward Betts](https://github.com/EdwardBetts)
+* [clinty](https://github.com/clinty)
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,6 @@
+0.3.2.0
+* Only depend on the fail package when it is needed due to GHC version.
+
 0.3.0.2
 * Avoid using OverloadedStrings for Builder.
 
diff --git a/src/URI/ByteString/Internal.hs b/src/URI/ByteString/Internal.hs
--- a/src/URI/ByteString/Internal.hs
+++ b/src/URI/ByteString/Internal.hs
@@ -26,9 +26,9 @@
                                                      sortBy, stripPrefix, (\\))
 import qualified Data.Map.Strict                    as M
 import           Data.Maybe
-import           Data.Monoid
-import           Data.Semigroup                     (Semigroup)
+import           Data.Monoid                        as Monoid
 import           Data.Ord                           (comparing)
+import           Data.Semigroup                     (Semigroup)
 import           Data.Word
 import           Text.Read                          (readMaybe)
 -------------------------------------------------------------------------------
@@ -183,7 +183,7 @@
     dropSegs (h:t)
       | unoDropExtraSlashes = h:(filter (not . BS.null) t)
       | otherwise = h:t
-    authority = maybe mempty (serializeAuthority o mScheme) rrAuthority
+    authority = maybe Monoid.mempty (serializeAuthority o mScheme) rrAuthority
     query = serializeQuery o rrQuery
     fragment = maybe mempty (\s -> c8 '#' <> bs s) rrFragment
 
diff --git a/uri-bytestring.cabal b/uri-bytestring.cabal
--- a/uri-bytestring.cabal
+++ b/uri-bytestring.cabal
@@ -1,5 +1,5 @@
 name:                uri-bytestring
-version:             0.3.1.1
+version:             0.3.2.0
 synopsis:            Haskell URI parsing as ByteStrings
 description: uri-bytestring aims to be an RFC3986 compliant URI parser that uses efficient ByteStrings for parsing and representing the URI data.
 license:             BSD3
@@ -41,7 +41,6 @@
 
       attoparsec       >= 0.13.1.0 && < 0.14
     , base             >= 4.6     && < 5
-    , fail             >= 4.9     && < 5
     , bytestring       >= 0.9.1   && < 0.11
     , blaze-builder    >= 0.3.0.0 && < 0.5
     , template-haskell >= 2.9     && < 2.14
@@ -57,6 +56,7 @@
   if !impl(ghc >= 8)
     cpp-options: -DLIFT_COMPAT
     build-depends:
+      fail >= 4.9 && < 5,
       th-lift >= 0.7.5 && < 0.8,
       semigroups >= 0.16.2.2 && <0.19
 
