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
@@ -27,6 +27,7 @@
 import qualified Data.Map.Strict                    as M
 import           Data.Maybe
 import           Data.Monoid
+import           Data.Semigroup                     (Semigroup)
 import           Data.Ord                           (comparing)
 import           Data.Word
 import           Text.Read                          (readMaybe)
@@ -794,6 +795,7 @@
                              , Alternative
                              , Monad
                              , MonadPlus
+                             , Semigroup
                              , Monoid)
 
 
diff --git a/src/URI/ByteString/Types.hs b/src/URI/ByteString/Types.hs
--- a/src/URI/ByteString/Types.hs
+++ b/src/URI/ByteString/Types.hs
@@ -15,6 +15,7 @@
 import           Data.ByteString (ByteString)
 import qualified Data.Map.Strict as M
 import           Data.Monoid
+import           Data.Semigroup (Semigroup)
 import           Data.Typeable
 import           Data.Word
 import           GHC.Generics
@@ -89,7 +90,7 @@
 
 -------------------------------------------------------------------------------
 newtype Query = Query { queryPairs :: [(ByteString, ByteString)] }
-              deriving (Show, Eq, Monoid, Generic, Typeable, Ord)
+              deriving (Show, Eq, Semigroup, Monoid, Generic, Typeable, Ord)
 
 #ifdef LIFT_COMPAT
 deriveLift ''Query
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.0.2
+version:             0.3.1.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
@@ -13,8 +13,7 @@
 cabal-version:       >=1.16
 homepage:            https://github.com/Soostone/uri-bytestring
 bug-reports:         https://github.com/Soostone/uri-bytestring/issues
-Tested-With:         GHC == 7.6.3
-                   , GHC == 7.8.4
+Tested-With:         GHC == 7.8.4
                    , GHC == 7.10.1
                    , GHC == 8.0.2
                    , GHC == 8.2.1
@@ -39,7 +38,7 @@
 
   build-depends:
 
-      attoparsec       >= 0.12    && < 0.14
+      attoparsec       >= 0.13.1.0 && < 0.14
     , base             >= 4.6     && < 5
     , fail             >= 4.9     && < 5
     , bytestring       >= 0.9.1   && < 0.11
@@ -54,10 +53,11 @@
   if impl(ghc >= 7.8)
     cpp-options: -DWITH_TYPEABLE
 
-  if impl(ghc < 8)
+  if !impl(ghc >= 8)
     cpp-options: -DLIFT_COMPAT
     build-depends:
-      th-lift >= 0.7.5 && < 0.8
+      th-lift >= 0.7.5 && < 0.8,
+      semigroups >= 0.16.2.2 && <0.19
 
   if flag(lib-Werror)
     ghc-options: -Werror
