diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# 2016-06-02 0.7.2
+
+* Add missing Data.ByteString.ExtendedTests (Thanks to nomeata for reporting
+  this).
+* Support GHC 8 by raising the upper bound of base (GHC8 ships with base-4.9)
+  (Thanks to Utku Demir).
+
 # 2016-04-11 0.7.1
 
 * Add `binarySecret` function to enable providing a secret based on a `ByteString`
diff --git a/jwt.cabal b/jwt.cabal
--- a/jwt.cabal
+++ b/jwt.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                jwt
-version:             0.7.1
+version:             0.7.2
 synopsis:            JSON Web Token (JWT) decoding and encoding
 license:             MIT
 license-file:        LICENSE
@@ -31,7 +31,7 @@
 library
   exposed-modules:     Web.JWT
   other-modules:       Data.Text.Extended, Data.ByteString.Extended
-  build-depends:       base >= 4.6 && < 4.9
+  build-depends:       base >= 4.6 && < 5
                      , cryptonite               >= 0.6
                      , memory                   >= 0.8
                      , bytestring               >= 0.10
@@ -66,6 +66,7 @@
                      , Web.JWTTestsCompat
                      , Data.Text.Extended
                      , Data.Text.ExtendedTests
+                     , Data.ByteString.ExtendedTests
   hs-source-dirs:      tests/src, src
   build-depends:       base < 5 && >= 4.4
                      , tasty >= 0.7
diff --git a/tests/src/Data/ByteString/ExtendedTests.hs b/tests/src/Data/ByteString/ExtendedTests.hs
new file mode 100644
--- /dev/null
+++ b/tests/src/Data/ByteString/ExtendedTests.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE OverloadedStrings   #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TemplateHaskell     #-}
+module Data.ByteString.ExtendedTests
+  (
+    main
+  , defaultTestGroup
+) where
+
+import           Control.Applicative
+import qualified Data.ByteString.Extended as BS
+import           Data.String              (fromString)
+import qualified Test.QuickCheck          as QC
+import           Test.Tasty
+import           Test.Tasty.QuickCheck
+import           Test.Tasty.TH
+
+defaultTestGroup :: TestTree
+defaultTestGroup = $(testGroupGenerator)
+
+main :: IO ()
+main = defaultMain defaultTestGroup
+
+prop_constTimeCompare :: BS.ByteString -> BS.ByteString  -> Bool
+prop_constTimeCompare a b = (a == b) == (a `BS.constTimeCompare` b)
+
+instance Arbitrary BS.ByteString where
+    arbitrary = BS.pack <$> arbitrary
+    shrink xs = BS.pack <$> shrink (BS.unpack xs)
diff --git a/tests/src/Web/JWTInteropTests.hs b/tests/src/Web/JWTInteropTests.hs
--- a/tests/src/Web/JWTInteropTests.hs
+++ b/tests/src/Web/JWTInteropTests.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE FlexibleInstances    #-}
+{-# LANGUAGE OverlappingInstances #-}
 {-# LANGUAGE OverloadedStrings    #-}
 {-# LANGUAGE ScopedTypeVariables  #-}
 {-# LANGUAGE TemplateHaskell      #-}
diff --git a/tests/src/Web/JWTTests.hs b/tests/src/Web/JWTTests.hs
--- a/tests/src/Web/JWTTests.hs
+++ b/tests/src/Web/JWTTests.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE BangPatterns, OverloadedStrings, ScopedTypeVariables, TemplateHaskell #-}
-{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}
+{-# LANGUAGE TypeSynonymInstances, FlexibleInstances, OverlappingInstances #-}
 module Web.JWTTests
   (
     main
