diff --git a/hw-uri.cabal b/hw-uri.cabal
--- a/hw-uri.cabal
+++ b/hw-uri.cabal
@@ -1,7 +1,7 @@
 cabal-version:          2.4
 
 name:                   hw-uri
-version:                0.1.1.9
+version:                0.1.1.10
 synopsis:               Supports IO on URIs
 description:            Supports IO on URIs.
 homepage:               https://github.com/haskell-works/hw-uri
@@ -11,6 +11,7 @@
 maintainer:             newhoggy@gmail.com
 copyright:              John Ky 2019, David Turnbull 2019
 category:               Data
+tested-with:            GHC == 8.8.1, GHC == 8.6.5, GHC == 8.4.4, GHC == 8.2.2
 extra-source-files:     CHANGELOG.md, README.md
 
 source-repository head
@@ -23,8 +24,8 @@
 common amazonka                       { build-depends: amazonka                       >= 1.6.1      && < 1.7    }
 common amazonka-core                  { build-depends: amazonka-core                  >= 1.6.1      && < 1.7    }
 common amazonka-s3                    { build-depends: amazonka-s3                    >= 1.6.1      && < 1.7    }
-common antiope-core                   { build-depends: antiope-core                   >= 7.4.2      && < 8      }
-common antiope-s3                     { build-depends: antiope-s3                     >= 7.4.2      && < 8      }
+common antiope-core                   { build-depends: antiope-core                   >= 7.4.4      && < 8      }
+common antiope-s3                     { build-depends: antiope-s3                     >= 7.4.4      && < 8      }
 common antiope-optparse-applicative   { build-depends: antiope-optparse-applicative   >= 7.0.1      && < 8      }
 common bytestring                     { build-depends: bytestring                     >= 0.10.8.2   && < 0.11   }
 common directory                      { build-depends: directory                      >= 1.3.3.0    && < 1.4    }
diff --git a/test/HaskellWorks/Data/Uri/Gen.hs b/test/HaskellWorks/Data/Uri/Gen.hs
--- a/test/HaskellWorks/Data/Uri/Gen.hs
+++ b/test/HaskellWorks/Data/Uri/Gen.hs
@@ -2,13 +2,15 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 module HaskellWorks.Data.Uri.Gen
-  ( s3Uri
+  ( bucketName
+  , s3Uri
   , location
   , localPath
   ) where
 
 import Antiope.S3                     (BucketName (..), ObjectKey (..), S3Uri (..))
 import Data.Semigroup                 ((<>))
+import Data.Text                      (Text)
 import HaskellWorks.Data.Uri.Location
 import Hedgehog                       (MonadGen)
 
@@ -21,13 +23,26 @@
 {-# ANN module ("HLint: ignore Reduce duplication"  :: String) #-}
 {-# ANN module ("HLint: ignore Redundant bracket"   :: String) #-}
 
+bucketName :: MonadGen m => m BucketName
+bucketName = BucketName <$> G.text (R.linear 3 10) G.alphaNum
+
+baseName :: MonadGen m => m Text
+baseName = G.text (R.linear 3 10) G.alphaNum
+
+s3UriWithObjectKey :: MonadGen m => m S3Uri
+s3UriWithObjectKey = do
+  bkt       <- bucketName
+  basenames <- G.list (R.linear 1 5) baseName
+  ext       <- G.text (R.linear 2 4) G.alphaNum
+  pure $ S3Uri bkt (ObjectKey (T.intercalate "/" basenames <> "." <> ext))
+
+s3UriWithout :: MonadGen m => m S3Uri
+s3UriWithout = do
+  bkt       <- bucketName
+  pure $ S3Uri bkt ""
+
 s3Uri :: MonadGen m => m S3Uri
-s3Uri = do
-  let partGen = G.text (R.linear 3 10) G.alphaNum
-  bkt   <- partGen
-  parts <- G.list (R.linear 1 5) partGen
-  ext   <- G.text (R.linear 2 4) G.alphaNum
-  pure $ S3Uri (BucketName bkt) (ObjectKey (T.intercalate "/" parts <> "." <> ext))
+s3Uri = G.choice [s3UriWithout, s3UriWithObjectKey]
 
 localPath :: MonadGen m => m FilePath
 localPath = do
