diff --git a/antiope-s3.cabal b/antiope-s3.cabal
--- a/antiope-s3.cabal
+++ b/antiope-s3.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.4
 
 name:                   antiope-s3
-version:                7.4.4
+version:                7.4.5
 synopsis:               Please see the README on Github at <https://github.com/arbor/antiope#readme>
 description:            Please see the README on Github at <https://github.com/arbor/antiope#readme>.
 category:               Services
@@ -52,10 +52,11 @@
                       , bytestring
                       , conduit
                       , conduit-extra
+                      , deepseq
+                      , dlist                 >= 0.8.0.7
                       , exceptions
                       , generic-lens
                       , http-types
-                      , dlist                 >= 0.8.0.7
                       , lens
                       , mtl
                       , network-uri
diff --git a/src/Antiope/S3/Types.hs b/src/Antiope/S3/Types.hs
--- a/src/Antiope/S3/Types.hs
+++ b/src/Antiope/S3/Types.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE DeriveAnyClass    #-}
 {-# LANGUAGE DeriveGeneric     #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE TypeApplications  #-}
@@ -17,6 +18,7 @@
 
 import Antiope.S3.Internal
 import Control.Applicative
+import Control.DeepSeq
 import Control.Lens
 import Control.Monad
 import Data.Aeson
@@ -41,7 +43,7 @@
 data S3Uri = S3Uri
   { bucket    :: BucketName
   , objectKey :: ObjectKey
-  } deriving (Show, Eq, Ord, Generic)
+  } deriving (Show, Eq, Ord, Generic, NFData)
 
 instance FromText S3Uri where
   parser = do
@@ -68,7 +70,7 @@
 data Range = Range
   { first :: Int
   , last  :: Int
-  } deriving (Eq, Show, Generic)
+  } deriving (Eq, Show, Generic, NFData)
 
 readString :: String -> RP.ReadPrec String
 readString s = do
