diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.1.0`
+`1.2.0`
 
 
 ## Description
diff --git a/amazonka-s3.cabal b/amazonka-s3.cabal
--- a/amazonka-s3.cabal
+++ b/amazonka-s3.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-s3
-version:               1.1.0
+version:               1.2.0
 synopsis:              Amazon Simple Storage Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -108,7 +108,7 @@
         , Network.AWS.S3.Types.Sum
 
     build-depends:
-          amazonka-core == 1.1.0.*
+          amazonka-core == 1.2.0.*
         , base          >= 4.7     && < 5
         , lens >= 4.4
         , text >= 1.1
@@ -129,9 +129,9 @@
         , Test.AWS.S3.Internal
 
     build-depends:
-          amazonka-core == 1.1.0
-        , amazonka-test == 1.1.0
-        , amazonka-s3 == 1.1.0
+          amazonka-core == 1.2.0
+        , amazonka-test == 1.2.0
+        , amazonka-s3 == 1.2.0
         , base
         , bytestring
         , lens
diff --git a/gen/Network/AWS/S3.hs b/gen/Network/AWS/S3.hs
--- a/gen/Network/AWS/S3.hs
+++ b/gen/Network/AWS/S3.hs
@@ -22,8 +22,8 @@
 -- /See:/ <http://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html AWS API Reference>
 module Network.AWS.S3
     (
-    -- * Service
-      S3
+    -- * Service Configuration
+      s3
 
     -- * Errors
     -- $errors
diff --git a/gen/Network/AWS/S3/AbortMultipartUpload.hs b/gen/Network/AWS/S3/AbortMultipartUpload.hs
--- a/gen/Network/AWS/S3/AbortMultipartUpload.hs
+++ b/gen/Network/AWS/S3/AbortMultipartUpload.hs
@@ -99,10 +99,9 @@
 amuUploadId = lens _amuUploadId (\ s a -> s{_amuUploadId = a});
 
 instance AWSRequest AbortMultipartUpload where
-        type Sv AbortMultipartUpload = S3
         type Rs AbortMultipartUpload =
              AbortMultipartUploadResponse
-        request = delete
+        request = delete s3
         response
           = receiveEmpty
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/CompleteMultipartUpload.hs b/gen/Network/AWS/S3/CompleteMultipartUpload.hs
--- a/gen/Network/AWS/S3/CompleteMultipartUpload.hs
+++ b/gen/Network/AWS/S3/CompleteMultipartUpload.hs
@@ -112,10 +112,9 @@
 cUploadId = lens _cUploadId (\ s a -> s{_cUploadId = a});
 
 instance AWSRequest CompleteMultipartUpload where
-        type Sv CompleteMultipartUpload = S3
         type Rs CompleteMultipartUpload =
              CompleteMultipartUploadResponse
-        request = postXML
+        request = postXML s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/CopyObject.hs b/gen/Network/AWS/S3/CopyObject.hs
--- a/gen/Network/AWS/S3/CopyObject.hs
+++ b/gen/Network/AWS/S3/CopyObject.hs
@@ -370,9 +370,8 @@
 coKey = lens _coKey (\ s a -> s{_coKey = a});
 
 instance AWSRequest CopyObject where
-        type Sv CopyObject = S3
         type Rs CopyObject = CopyObjectResponse
-        request = put
+        request = put s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/CreateBucket.hs b/gen/Network/AWS/S3/CreateBucket.hs
--- a/gen/Network/AWS/S3/CreateBucket.hs
+++ b/gen/Network/AWS/S3/CreateBucket.hs
@@ -131,9 +131,8 @@
 cbBucket = lens _cbBucket (\ s a -> s{_cbBucket = a});
 
 instance AWSRequest CreateBucket where
-        type Sv CreateBucket = S3
         type Rs CreateBucket = CreateBucketResponse
-        request = putXML
+        request = putXML s3
         response
           = receiveEmpty
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/CreateMultipartUpload.hs b/gen/Network/AWS/S3/CreateMultipartUpload.hs
--- a/gen/Network/AWS/S3/CreateMultipartUpload.hs
+++ b/gen/Network/AWS/S3/CreateMultipartUpload.hs
@@ -286,10 +286,9 @@
 cmuKey = lens _cmuKey (\ s a -> s{_cmuKey = a});
 
 instance AWSRequest CreateMultipartUpload where
-        type Sv CreateMultipartUpload = S3
         type Rs CreateMultipartUpload =
              CreateMultipartUploadResponse
-        request = post
+        request = post s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/DeleteBucket.hs b/gen/Network/AWS/S3/DeleteBucket.hs
--- a/gen/Network/AWS/S3/DeleteBucket.hs
+++ b/gen/Network/AWS/S3/DeleteBucket.hs
@@ -65,9 +65,8 @@
 dbBucket = lens _dbBucket (\ s a -> s{_dbBucket = a});
 
 instance AWSRequest DeleteBucket where
-        type Sv DeleteBucket = S3
         type Rs DeleteBucket = DeleteBucketResponse
-        request = delete
+        request = delete s3
         response = receiveNull DeleteBucketResponse'
 
 instance ToHeaders DeleteBucket where
diff --git a/gen/Network/AWS/S3/DeleteBucketCORS.hs b/gen/Network/AWS/S3/DeleteBucketCORS.hs
--- a/gen/Network/AWS/S3/DeleteBucketCORS.hs
+++ b/gen/Network/AWS/S3/DeleteBucketCORS.hs
@@ -63,9 +63,8 @@
 dbcBucket = lens _dbcBucket (\ s a -> s{_dbcBucket = a});
 
 instance AWSRequest DeleteBucketCORS where
-        type Sv DeleteBucketCORS = S3
         type Rs DeleteBucketCORS = DeleteBucketCORSResponse
-        request = delete
+        request = delete s3
         response = receiveNull DeleteBucketCORSResponse'
 
 instance ToHeaders DeleteBucketCORS where
diff --git a/gen/Network/AWS/S3/DeleteBucketLifecycle.hs b/gen/Network/AWS/S3/DeleteBucketLifecycle.hs
--- a/gen/Network/AWS/S3/DeleteBucketLifecycle.hs
+++ b/gen/Network/AWS/S3/DeleteBucketLifecycle.hs
@@ -63,10 +63,9 @@
 dblBucket = lens _dblBucket (\ s a -> s{_dblBucket = a});
 
 instance AWSRequest DeleteBucketLifecycle where
-        type Sv DeleteBucketLifecycle = S3
         type Rs DeleteBucketLifecycle =
              DeleteBucketLifecycleResponse
-        request = delete
+        request = delete s3
         response = receiveNull DeleteBucketLifecycleResponse'
 
 instance ToHeaders DeleteBucketLifecycle where
diff --git a/gen/Network/AWS/S3/DeleteBucketPolicy.hs b/gen/Network/AWS/S3/DeleteBucketPolicy.hs
--- a/gen/Network/AWS/S3/DeleteBucketPolicy.hs
+++ b/gen/Network/AWS/S3/DeleteBucketPolicy.hs
@@ -63,10 +63,9 @@
 dbpBucket = lens _dbpBucket (\ s a -> s{_dbpBucket = a});
 
 instance AWSRequest DeleteBucketPolicy where
-        type Sv DeleteBucketPolicy = S3
         type Rs DeleteBucketPolicy =
              DeleteBucketPolicyResponse
-        request = delete
+        request = delete s3
         response = receiveNull DeleteBucketPolicyResponse'
 
 instance ToHeaders DeleteBucketPolicy where
diff --git a/gen/Network/AWS/S3/DeleteBucketReplication.hs b/gen/Network/AWS/S3/DeleteBucketReplication.hs
--- a/gen/Network/AWS/S3/DeleteBucketReplication.hs
+++ b/gen/Network/AWS/S3/DeleteBucketReplication.hs
@@ -63,10 +63,9 @@
 dbrBucket = lens _dbrBucket (\ s a -> s{_dbrBucket = a});
 
 instance AWSRequest DeleteBucketReplication where
-        type Sv DeleteBucketReplication = S3
         type Rs DeleteBucketReplication =
              DeleteBucketReplicationResponse
-        request = delete
+        request = delete s3
         response
           = receiveNull DeleteBucketReplicationResponse'
 
diff --git a/gen/Network/AWS/S3/DeleteBucketTagging.hs b/gen/Network/AWS/S3/DeleteBucketTagging.hs
--- a/gen/Network/AWS/S3/DeleteBucketTagging.hs
+++ b/gen/Network/AWS/S3/DeleteBucketTagging.hs
@@ -63,10 +63,9 @@
 dbtBucket = lens _dbtBucket (\ s a -> s{_dbtBucket = a});
 
 instance AWSRequest DeleteBucketTagging where
-        type Sv DeleteBucketTagging = S3
         type Rs DeleteBucketTagging =
              DeleteBucketTaggingResponse
-        request = delete
+        request = delete s3
         response = receiveNull DeleteBucketTaggingResponse'
 
 instance ToHeaders DeleteBucketTagging where
diff --git a/gen/Network/AWS/S3/DeleteBucketWebsite.hs b/gen/Network/AWS/S3/DeleteBucketWebsite.hs
--- a/gen/Network/AWS/S3/DeleteBucketWebsite.hs
+++ b/gen/Network/AWS/S3/DeleteBucketWebsite.hs
@@ -63,10 +63,9 @@
 dbwBucket = lens _dbwBucket (\ s a -> s{_dbwBucket = a});
 
 instance AWSRequest DeleteBucketWebsite where
-        type Sv DeleteBucketWebsite = S3
         type Rs DeleteBucketWebsite =
              DeleteBucketWebsiteResponse
-        request = delete
+        request = delete s3
         response = receiveNull DeleteBucketWebsiteResponse'
 
 instance ToHeaders DeleteBucketWebsite where
diff --git a/gen/Network/AWS/S3/DeleteObject.hs b/gen/Network/AWS/S3/DeleteObject.hs
--- a/gen/Network/AWS/S3/DeleteObject.hs
+++ b/gen/Network/AWS/S3/DeleteObject.hs
@@ -108,9 +108,8 @@
 doKey = lens _doKey (\ s a -> s{_doKey = a});
 
 instance AWSRequest DeleteObject where
-        type Sv DeleteObject = S3
         type Rs DeleteObject = DeleteObjectResponse
-        request = delete
+        request = delete s3
         response
           = receiveEmpty
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/DeleteObjects.hs b/gen/Network/AWS/S3/DeleteObjects.hs
--- a/gen/Network/AWS/S3/DeleteObjects.hs
+++ b/gen/Network/AWS/S3/DeleteObjects.hs
@@ -98,9 +98,8 @@
 dosDelete = lens _dosDelete (\ s a -> s{_dosDelete = a});
 
 instance AWSRequest DeleteObjects where
-        type Sv DeleteObjects = S3
         type Rs DeleteObjects = DeleteObjectsResponse
-        request = contentMD5 . postXML
+        request = contentMD5 . postXML s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/GetBucketACL.hs b/gen/Network/AWS/S3/GetBucketACL.hs
--- a/gen/Network/AWS/S3/GetBucketACL.hs
+++ b/gen/Network/AWS/S3/GetBucketACL.hs
@@ -67,9 +67,8 @@
 gbaBucket = lens _gbaBucket (\ s a -> s{_gbaBucket = a});
 
 instance AWSRequest GetBucketACL where
-        type Sv GetBucketACL = S3
         type Rs GetBucketACL = GetBucketACLResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/GetBucketCORS.hs b/gen/Network/AWS/S3/GetBucketCORS.hs
--- a/gen/Network/AWS/S3/GetBucketCORS.hs
+++ b/gen/Network/AWS/S3/GetBucketCORS.hs
@@ -66,9 +66,8 @@
 gbcBucket = lens _gbcBucket (\ s a -> s{_gbcBucket = a});
 
 instance AWSRequest GetBucketCORS where
-        type Sv GetBucketCORS = S3
         type Rs GetBucketCORS = GetBucketCORSResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/GetBucketLifecycle.hs b/gen/Network/AWS/S3/GetBucketLifecycle.hs
--- a/gen/Network/AWS/S3/GetBucketLifecycle.hs
+++ b/gen/Network/AWS/S3/GetBucketLifecycle.hs
@@ -66,10 +66,9 @@
 gBucket = lens _gBucket (\ s a -> s{_gBucket = a});
 
 instance AWSRequest GetBucketLifecycle where
-        type Sv GetBucketLifecycle = S3
         type Rs GetBucketLifecycle =
              GetBucketLifecycleResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/GetBucketLocation.hs b/gen/Network/AWS/S3/GetBucketLocation.hs
--- a/gen/Network/AWS/S3/GetBucketLocation.hs
+++ b/gen/Network/AWS/S3/GetBucketLocation.hs
@@ -66,9 +66,8 @@
 gblBucket = lens _gblBucket (\ s a -> s{_gblBucket = a});
 
 instance AWSRequest GetBucketLocation where
-        type Sv GetBucketLocation = S3
         type Rs GetBucketLocation = GetBucketLocationResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/GetBucketLogging.hs b/gen/Network/AWS/S3/GetBucketLogging.hs
--- a/gen/Network/AWS/S3/GetBucketLogging.hs
+++ b/gen/Network/AWS/S3/GetBucketLogging.hs
@@ -67,9 +67,8 @@
 getBucket = lens _getBucket (\ s a -> s{_getBucket = a});
 
 instance AWSRequest GetBucketLogging where
-        type Sv GetBucketLogging = S3
         type Rs GetBucketLogging = GetBucketLoggingResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/GetBucketNotificationConfiguration.hs b/gen/Network/AWS/S3/GetBucketNotificationConfiguration.hs
--- a/gen/Network/AWS/S3/GetBucketNotificationConfiguration.hs
+++ b/gen/Network/AWS/S3/GetBucketNotificationConfiguration.hs
@@ -68,10 +68,9 @@
 
 instance AWSRequest
          GetBucketNotificationConfiguration where
-        type Sv GetBucketNotificationConfiguration = S3
         type Rs GetBucketNotificationConfiguration =
              NotificationConfiguration
-        request = get
+        request = get s3
         response = receiveXML (\ s h x -> parseXML x)
 
 instance ToHeaders GetBucketNotificationConfiguration
diff --git a/gen/Network/AWS/S3/GetBucketPolicy.hs b/gen/Network/AWS/S3/GetBucketPolicy.hs
--- a/gen/Network/AWS/S3/GetBucketPolicy.hs
+++ b/gen/Network/AWS/S3/GetBucketPolicy.hs
@@ -66,9 +66,8 @@
 gbpBucket = lens _gbpBucket (\ s a -> s{_gbpBucket = a});
 
 instance AWSRequest GetBucketPolicy where
-        type Sv GetBucketPolicy = S3
         type Rs GetBucketPolicy = GetBucketPolicyResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/GetBucketReplication.hs b/gen/Network/AWS/S3/GetBucketReplication.hs
--- a/gen/Network/AWS/S3/GetBucketReplication.hs
+++ b/gen/Network/AWS/S3/GetBucketReplication.hs
@@ -66,10 +66,9 @@
 gbrBucket = lens _gbrBucket (\ s a -> s{_gbrBucket = a});
 
 instance AWSRequest GetBucketReplication where
-        type Sv GetBucketReplication = S3
         type Rs GetBucketReplication =
              GetBucketReplicationResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/GetBucketRequestPayment.hs b/gen/Network/AWS/S3/GetBucketRequestPayment.hs
--- a/gen/Network/AWS/S3/GetBucketRequestPayment.hs
+++ b/gen/Network/AWS/S3/GetBucketRequestPayment.hs
@@ -66,10 +66,9 @@
 gbrpBucket = lens _gbrpBucket (\ s a -> s{_gbrpBucket = a});
 
 instance AWSRequest GetBucketRequestPayment where
-        type Sv GetBucketRequestPayment = S3
         type Rs GetBucketRequestPayment =
              GetBucketRequestPaymentResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/GetBucketTagging.hs b/gen/Network/AWS/S3/GetBucketTagging.hs
--- a/gen/Network/AWS/S3/GetBucketTagging.hs
+++ b/gen/Network/AWS/S3/GetBucketTagging.hs
@@ -66,9 +66,8 @@
 gbtBucket = lens _gbtBucket (\ s a -> s{_gbtBucket = a});
 
 instance AWSRequest GetBucketTagging where
-        type Sv GetBucketTagging = S3
         type Rs GetBucketTagging = GetBucketTaggingResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/GetBucketVersioning.hs b/gen/Network/AWS/S3/GetBucketVersioning.hs
--- a/gen/Network/AWS/S3/GetBucketVersioning.hs
+++ b/gen/Network/AWS/S3/GetBucketVersioning.hs
@@ -66,10 +66,9 @@
 gbvBucket = lens _gbvBucket (\ s a -> s{_gbvBucket = a});
 
 instance AWSRequest GetBucketVersioning where
-        type Sv GetBucketVersioning = S3
         type Rs GetBucketVersioning =
              GetBucketVersioningResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/GetBucketWebsite.hs b/gen/Network/AWS/S3/GetBucketWebsite.hs
--- a/gen/Network/AWS/S3/GetBucketWebsite.hs
+++ b/gen/Network/AWS/S3/GetBucketWebsite.hs
@@ -69,9 +69,8 @@
 gbwBucket = lens _gbwBucket (\ s a -> s{_gbwBucket = a});
 
 instance AWSRequest GetBucketWebsite where
-        type Sv GetBucketWebsite = S3
         type Rs GetBucketWebsite = GetBucketWebsiteResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/GetObject.hs b/gen/Network/AWS/S3/GetObject.hs
--- a/gen/Network/AWS/S3/GetObject.hs
+++ b/gen/Network/AWS/S3/GetObject.hs
@@ -258,9 +258,8 @@
 goKey = lens _goKey (\ s a -> s{_goKey = a});
 
 instance AWSRequest GetObject where
-        type Sv GetObject = S3
         type Rs GetObject = GetObjectResponse
-        request = get
+        request = get s3
         response
           = receiveBody
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/GetObjectACL.hs b/gen/Network/AWS/S3/GetObjectACL.hs
--- a/gen/Network/AWS/S3/GetObjectACL.hs
+++ b/gen/Network/AWS/S3/GetObjectACL.hs
@@ -96,9 +96,8 @@
 goaKey = lens _goaKey (\ s a -> s{_goaKey = a});
 
 instance AWSRequest GetObjectACL where
-        type Sv GetObjectACL = S3
         type Rs GetObjectACL = GetObjectACLResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/GetObjectTorrent.hs b/gen/Network/AWS/S3/GetObjectTorrent.hs
--- a/gen/Network/AWS/S3/GetObjectTorrent.hs
+++ b/gen/Network/AWS/S3/GetObjectTorrent.hs
@@ -86,9 +86,8 @@
 gotKey = lens _gotKey (\ s a -> s{_gotKey = a});
 
 instance AWSRequest GetObjectTorrent where
-        type Sv GetObjectTorrent = S3
         type Rs GetObjectTorrent = GetObjectTorrentResponse
-        request = get
+        request = get s3
         response
           = receiveBody
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/HeadBucket.hs b/gen/Network/AWS/S3/HeadBucket.hs
--- a/gen/Network/AWS/S3/HeadBucket.hs
+++ b/gen/Network/AWS/S3/HeadBucket.hs
@@ -64,9 +64,8 @@
 hbBucket = lens _hbBucket (\ s a -> s{_hbBucket = a});
 
 instance AWSRequest HeadBucket where
-        type Sv HeadBucket = S3
         type Rs HeadBucket = HeadBucketResponse
-        request = head'
+        request = head' s3
         response = receiveNull HeadBucketResponse'
 
 instance ToHeaders HeadBucket where
diff --git a/gen/Network/AWS/S3/HeadObject.hs b/gen/Network/AWS/S3/HeadObject.hs
--- a/gen/Network/AWS/S3/HeadObject.hs
+++ b/gen/Network/AWS/S3/HeadObject.hs
@@ -205,9 +205,8 @@
 hoKey = lens _hoKey (\ s a -> s{_hoKey = a});
 
 instance AWSRequest HeadObject where
-        type Sv HeadObject = S3
         type Rs HeadObject = HeadObjectResponse
-        request = head'
+        request = head' s3
         response
           = receiveEmpty
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/ListBuckets.hs b/gen/Network/AWS/S3/ListBuckets.hs
--- a/gen/Network/AWS/S3/ListBuckets.hs
+++ b/gen/Network/AWS/S3/ListBuckets.hs
@@ -55,9 +55,8 @@
 listBuckets = ListBuckets'
 
 instance AWSRequest ListBuckets where
-        type Sv ListBuckets = S3
         type Rs ListBuckets = ListBucketsResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/ListMultipartUploads.hs b/gen/Network/AWS/S3/ListMultipartUploads.hs
--- a/gen/Network/AWS/S3/ListMultipartUploads.hs
+++ b/gen/Network/AWS/S3/ListMultipartUploads.hs
@@ -150,10 +150,9 @@
               & lmuUploadIdMarker .~ rs ^. lmursNextUploadIdMarker
 
 instance AWSRequest ListMultipartUploads where
-        type Sv ListMultipartUploads = S3
         type Rs ListMultipartUploads =
              ListMultipartUploadsResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/ListObjectVersions.hs b/gen/Network/AWS/S3/ListObjectVersions.hs
--- a/gen/Network/AWS/S3/ListObjectVersions.hs
+++ b/gen/Network/AWS/S3/ListObjectVersions.hs
@@ -147,10 +147,9 @@
               lovVersionIdMarker .~ rs ^. lovrsNextVersionIdMarker
 
 instance AWSRequest ListObjectVersions where
-        type Sv ListObjectVersions = S3
         type Rs ListObjectVersions =
              ListObjectVersionsResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/ListObjects.hs b/gen/Network/AWS/S3/ListObjects.hs
--- a/gen/Network/AWS/S3/ListObjects.hs
+++ b/gen/Network/AWS/S3/ListObjects.hs
@@ -141,9 +141,8 @@
                     (^? (lorsContents . _last . oKey))
 
 instance AWSRequest ListObjects where
-        type Sv ListObjects = S3
         type Rs ListObjects = ListObjectsResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/ListParts.hs b/gen/Network/AWS/S3/ListParts.hs
--- a/gen/Network/AWS/S3/ListParts.hs
+++ b/gen/Network/AWS/S3/ListParts.hs
@@ -137,9 +137,8 @@
               lpPartNumberMarker .~ rs ^. lprsNextPartNumberMarker
 
 instance AWSRequest ListParts where
-        type Sv ListParts = S3
         type Rs ListParts = ListPartsResponse
-        request = get
+        request = get s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/PutBucketACL.hs b/gen/Network/AWS/S3/PutBucketACL.hs
--- a/gen/Network/AWS/S3/PutBucketACL.hs
+++ b/gen/Network/AWS/S3/PutBucketACL.hs
@@ -137,9 +137,8 @@
 pbaBucket = lens _pbaBucket (\ s a -> s{_pbaBucket = a});
 
 instance AWSRequest PutBucketACL where
-        type Sv PutBucketACL = S3
         type Rs PutBucketACL = PutBucketACLResponse
-        request = putXML
+        request = putXML s3
         response = receiveNull PutBucketACLResponse'
 
 instance ToElement PutBucketACL where
diff --git a/gen/Network/AWS/S3/PutBucketCORS.hs b/gen/Network/AWS/S3/PutBucketCORS.hs
--- a/gen/Network/AWS/S3/PutBucketCORS.hs
+++ b/gen/Network/AWS/S3/PutBucketCORS.hs
@@ -81,9 +81,8 @@
 pbcBucket = lens _pbcBucket (\ s a -> s{_pbcBucket = a});
 
 instance AWSRequest PutBucketCORS where
-        type Sv PutBucketCORS = S3
         type Rs PutBucketCORS = PutBucketCORSResponse
-        request = contentMD5 . putXML
+        request = contentMD5 . putXML s3
         response = receiveNull PutBucketCORSResponse'
 
 instance ToElement PutBucketCORS where
diff --git a/gen/Network/AWS/S3/PutBucketLifecycle.hs b/gen/Network/AWS/S3/PutBucketLifecycle.hs
--- a/gen/Network/AWS/S3/PutBucketLifecycle.hs
+++ b/gen/Network/AWS/S3/PutBucketLifecycle.hs
@@ -82,10 +82,9 @@
 pBucket = lens _pBucket (\ s a -> s{_pBucket = a});
 
 instance AWSRequest PutBucketLifecycle where
-        type Sv PutBucketLifecycle = S3
         type Rs PutBucketLifecycle =
              PutBucketLifecycleResponse
-        request = contentMD5 . putXML
+        request = contentMD5 . putXML s3
         response = receiveNull PutBucketLifecycleResponse'
 
 instance ToElement PutBucketLifecycle where
diff --git a/gen/Network/AWS/S3/PutBucketLogging.hs b/gen/Network/AWS/S3/PutBucketLogging.hs
--- a/gen/Network/AWS/S3/PutBucketLogging.hs
+++ b/gen/Network/AWS/S3/PutBucketLogging.hs
@@ -84,9 +84,8 @@
 pblBucketLoggingStatus = lens _pblBucketLoggingStatus (\ s a -> s{_pblBucketLoggingStatus = a});
 
 instance AWSRequest PutBucketLogging where
-        type Sv PutBucketLogging = S3
         type Rs PutBucketLogging = PutBucketLoggingResponse
-        request = putXML
+        request = putXML s3
         response = receiveNull PutBucketLoggingResponse'
 
 instance ToElement PutBucketLogging where
diff --git a/gen/Network/AWS/S3/PutBucketNotificationConfiguration.hs b/gen/Network/AWS/S3/PutBucketNotificationConfiguration.hs
--- a/gen/Network/AWS/S3/PutBucketNotificationConfiguration.hs
+++ b/gen/Network/AWS/S3/PutBucketNotificationConfiguration.hs
@@ -74,10 +74,9 @@
 
 instance AWSRequest
          PutBucketNotificationConfiguration where
-        type Sv PutBucketNotificationConfiguration = S3
         type Rs PutBucketNotificationConfiguration =
              PutBucketNotificationConfigurationResponse
-        request = putXML
+        request = putXML s3
         response
           = receiveNull
               PutBucketNotificationConfigurationResponse'
diff --git a/gen/Network/AWS/S3/PutBucketPolicy.hs b/gen/Network/AWS/S3/PutBucketPolicy.hs
--- a/gen/Network/AWS/S3/PutBucketPolicy.hs
+++ b/gen/Network/AWS/S3/PutBucketPolicy.hs
@@ -83,9 +83,8 @@
 pbpPolicy = lens _pbpPolicy (\ s a -> s{_pbpPolicy = a});
 
 instance AWSRequest PutBucketPolicy where
-        type Sv PutBucketPolicy = S3
         type Rs PutBucketPolicy = PutBucketPolicyResponse
-        request = contentMD5 . putXML
+        request = contentMD5 . putXML s3
         response = receiveNull PutBucketPolicyResponse'
 
 instance ToElement PutBucketPolicy where
diff --git a/gen/Network/AWS/S3/PutBucketReplication.hs b/gen/Network/AWS/S3/PutBucketReplication.hs
--- a/gen/Network/AWS/S3/PutBucketReplication.hs
+++ b/gen/Network/AWS/S3/PutBucketReplication.hs
@@ -83,10 +83,9 @@
 pbrReplicationConfiguration = lens _pbrReplicationConfiguration (\ s a -> s{_pbrReplicationConfiguration = a});
 
 instance AWSRequest PutBucketReplication where
-        type Sv PutBucketReplication = S3
         type Rs PutBucketReplication =
              PutBucketReplicationResponse
-        request = putXML
+        request = putXML s3
         response = receiveNull PutBucketReplicationResponse'
 
 instance ToElement PutBucketReplication where
diff --git a/gen/Network/AWS/S3/PutBucketRequestPayment.hs b/gen/Network/AWS/S3/PutBucketRequestPayment.hs
--- a/gen/Network/AWS/S3/PutBucketRequestPayment.hs
+++ b/gen/Network/AWS/S3/PutBucketRequestPayment.hs
@@ -87,10 +87,9 @@
 pbrpRequestPaymentConfiguration = lens _pbrpRequestPaymentConfiguration (\ s a -> s{_pbrpRequestPaymentConfiguration = a});
 
 instance AWSRequest PutBucketRequestPayment where
-        type Sv PutBucketRequestPayment = S3
         type Rs PutBucketRequestPayment =
              PutBucketRequestPaymentResponse
-        request = putXML
+        request = putXML s3
         response
           = receiveNull PutBucketRequestPaymentResponse'
 
diff --git a/gen/Network/AWS/S3/PutBucketTagging.hs b/gen/Network/AWS/S3/PutBucketTagging.hs
--- a/gen/Network/AWS/S3/PutBucketTagging.hs
+++ b/gen/Network/AWS/S3/PutBucketTagging.hs
@@ -82,9 +82,8 @@
 pbtTagging = lens _pbtTagging (\ s a -> s{_pbtTagging = a});
 
 instance AWSRequest PutBucketTagging where
-        type Sv PutBucketTagging = S3
         type Rs PutBucketTagging = PutBucketTaggingResponse
-        request = contentMD5 . putXML
+        request = contentMD5 . putXML s3
         response = receiveNull PutBucketTaggingResponse'
 
 instance ToElement PutBucketTagging where
diff --git a/gen/Network/AWS/S3/PutBucketVersioning.hs b/gen/Network/AWS/S3/PutBucketVersioning.hs
--- a/gen/Network/AWS/S3/PutBucketVersioning.hs
+++ b/gen/Network/AWS/S3/PutBucketVersioning.hs
@@ -93,10 +93,9 @@
 pbvVersioningConfiguration = lens _pbvVersioningConfiguration (\ s a -> s{_pbvVersioningConfiguration = a});
 
 instance AWSRequest PutBucketVersioning where
-        type Sv PutBucketVersioning = S3
         type Rs PutBucketVersioning =
              PutBucketVersioningResponse
-        request = putXML
+        request = putXML s3
         response = receiveNull PutBucketVersioningResponse'
 
 instance ToElement PutBucketVersioning where
diff --git a/gen/Network/AWS/S3/PutBucketWebsite.hs b/gen/Network/AWS/S3/PutBucketWebsite.hs
--- a/gen/Network/AWS/S3/PutBucketWebsite.hs
+++ b/gen/Network/AWS/S3/PutBucketWebsite.hs
@@ -82,9 +82,8 @@
 pbwWebsiteConfiguration = lens _pbwWebsiteConfiguration (\ s a -> s{_pbwWebsiteConfiguration = a});
 
 instance AWSRequest PutBucketWebsite where
-        type Sv PutBucketWebsite = S3
         type Rs PutBucketWebsite = PutBucketWebsiteResponse
-        request = putXML
+        request = putXML s3
         response = receiveNull PutBucketWebsiteResponse'
 
 instance ToElement PutBucketWebsite where
diff --git a/gen/Network/AWS/S3/PutObject.hs b/gen/Network/AWS/S3/PutObject.hs
--- a/gen/Network/AWS/S3/PutObject.hs
+++ b/gen/Network/AWS/S3/PutObject.hs
@@ -309,9 +309,8 @@
 poBody = lens _poBody (\ s a -> s{_poBody = a});
 
 instance AWSRequest PutObject where
-        type Sv PutObject = S3
         type Rs PutObject = PutObjectResponse
-        request = putBody
+        request = putBody s3
         response
           = receiveEmpty
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/PutObjectACL.hs b/gen/Network/AWS/S3/PutObjectACL.hs
--- a/gen/Network/AWS/S3/PutObjectACL.hs
+++ b/gen/Network/AWS/S3/PutObjectACL.hs
@@ -160,9 +160,8 @@
 poaKey = lens _poaKey (\ s a -> s{_poaKey = a});
 
 instance AWSRequest PutObjectACL where
-        type Sv PutObjectACL = S3
         type Rs PutObjectACL = PutObjectACLResponse
-        request = putXML
+        request = putXML s3
         response
           = receiveEmpty
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/RestoreObject.hs b/gen/Network/AWS/S3/RestoreObject.hs
--- a/gen/Network/AWS/S3/RestoreObject.hs
+++ b/gen/Network/AWS/S3/RestoreObject.hs
@@ -103,9 +103,8 @@
 roKey = lens _roKey (\ s a -> s{_roKey = a});
 
 instance AWSRequest RestoreObject where
-        type Sv RestoreObject = S3
         type Rs RestoreObject = RestoreObjectResponse
-        request = postXML
+        request = postXML s3
         response
           = receiveEmpty
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/Types.hs b/gen/Network/AWS/S3/Types.hs
--- a/gen/Network/AWS/S3/Types.hs
+++ b/gen/Network/AWS/S3/Types.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE TypeFamilies      #-}
 
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
@@ -13,8 +12,8 @@
 --
 module Network.AWS.S3.Types
     (
-    -- * Service
-      S3
+    -- * Service Configuration
+      s3
 
     -- * Errors
     , _ObjectAlreadyInActiveTierError
@@ -465,41 +464,38 @@
 import           Network.AWS.S3.Types.Sum
 import           Network.AWS.Sign.V4
 
--- | Version @2006-03-01@ of the Amazon Simple Storage Service SDK.
-data S3
-
-instance AWSService S3 where
-    type Sg S3 = V4
-    service = const svc
-      where
-        svc =
-            Service
-            { _svcAbbrev = "S3"
-            , _svcPrefix = "s3"
-            , _svcVersion = "2006-03-01"
-            , _svcEndpoint = defaultEndpoint svc
-            , _svcTimeout = Just 70
-            , _svcStatus = statusSuccess
-            , _svcError = parseXMLError
-            , _svcRetry = retry
-            }
-        retry =
-            Exponential
-            { _retryBase = 5.0e-2
-            , _retryGrowth = 2
-            , _retryAttempts = 5
-            , _retryCheck = check
-            }
-        check e
-          | has (hasCode "ThrottlingException" . hasStatus 400) e =
-              Just "throttling_exception"
-          | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
-          | has (hasCode "BadDigest" . hasStatus 400) e = Just "contentmd5"
-          | has (hasStatus 503) e = Just "service_unavailable"
-          | has (hasCode "RequestTimeout" . hasStatus 400) e = Just "timeouts"
-          | has (hasStatus 500) e = Just "general_server_error"
-          | has (hasStatus 509) e = Just "limit_exceeded"
-          | otherwise = Nothing
+-- | API version '2006-03-01' of the Amazon Simple Storage Service SDK configuration.
+s3 :: Service
+s3 =
+    Service
+    { _svcAbbrev = "S3"
+    , _svcSigner = v4
+    , _svcPrefix = "s3"
+    , _svcVersion = "2006-03-01"
+    , _svcEndpoint = defaultEndpoint s3
+    , _svcTimeout = Just 70
+    , _svcCheck = statusSuccess
+    , _svcError = parseXMLError
+    , _svcRetry = retry
+    }
+  where
+    retry =
+        Exponential
+        { _retryBase = 5.0e-2
+        , _retryGrowth = 2
+        , _retryAttempts = 5
+        , _retryCheck = check
+        }
+    check e
+      | has (hasCode "ThrottlingException" . hasStatus 400) e =
+          Just "throttling_exception"
+      | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
+      | has (hasCode "BadDigest" . hasStatus 400) e = Just "contentmd5"
+      | has (hasStatus 503) e = Just "service_unavailable"
+      | has (hasCode "RequestTimeout" . hasStatus 400) e = Just "timeouts"
+      | has (hasStatus 500) e = Just "general_server_error"
+      | has (hasStatus 509) e = Just "limit_exceeded"
+      | otherwise = Nothing
 
 -- | This operation is not allowed against this storage tier
 _ObjectAlreadyInActiveTierError :: AsError a => Getting (First ServiceError) a ServiceError
diff --git a/gen/Network/AWS/S3/Types/Product.hs b/gen/Network/AWS/S3/Types/Product.hs
--- a/gen/Network/AWS/S3/Types/Product.hs
+++ b/gen/Network/AWS/S3/Types/Product.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE OverloadedStrings  #-}
 {-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
diff --git a/gen/Network/AWS/S3/UploadPart.hs b/gen/Network/AWS/S3/UploadPart.hs
--- a/gen/Network/AWS/S3/UploadPart.hs
+++ b/gen/Network/AWS/S3/UploadPart.hs
@@ -182,9 +182,8 @@
 upBody = lens _upBody (\ s a -> s{_upBody = a});
 
 instance AWSRequest UploadPart where
-        type Sv UploadPart = S3
         type Rs UploadPart = UploadPartResponse
-        request = putBody
+        request = putBody s3
         response
           = receiveEmpty
               (\ s h x ->
diff --git a/gen/Network/AWS/S3/UploadPartCopy.hs b/gen/Network/AWS/S3/UploadPartCopy.hs
--- a/gen/Network/AWS/S3/UploadPartCopy.hs
+++ b/gen/Network/AWS/S3/UploadPartCopy.hs
@@ -241,9 +241,8 @@
 upcUploadId = lens _upcUploadId (\ s a -> s{_upcUploadId = a});
 
 instance AWSRequest UploadPartCopy where
-        type Sv UploadPartCopy = S3
         type Rs UploadPartCopy = UploadPartCopyResponse
-        request = put
+        request = put s3
         response
           = receiveXML
               (\ s h x ->
diff --git a/test/Test/AWS/Gen/S3.hs b/test/Test/AWS/Gen/S3.hs
--- a/test/Test/AWS/Gen/S3.hs
+++ b/test/Test/AWS/Gen/S3.hs
@@ -604,298 +604,348 @@
 testPutBucketRequestPaymentResponse = res
     "PutBucketRequestPaymentResponse"
     "fixture/PutBucketRequestPaymentResponse"
+    s3
     (Proxy :: Proxy PutBucketRequestPayment)
 
 testPutObjectResponse :: PutObjectResponse -> TestTree
 testPutObjectResponse = res
     "PutObjectResponse"
     "fixture/PutObjectResponse"
+    s3
     (Proxy :: Proxy PutObject)
 
 testPutBucketLoggingResponse :: PutBucketLoggingResponse -> TestTree
 testPutBucketLoggingResponse = res
     "PutBucketLoggingResponse"
     "fixture/PutBucketLoggingResponse"
+    s3
     (Proxy :: Proxy PutBucketLogging)
 
 testDeleteObjectResponse :: DeleteObjectResponse -> TestTree
 testDeleteObjectResponse = res
     "DeleteObjectResponse"
     "fixture/DeleteObjectResponse"
+    s3
     (Proxy :: Proxy DeleteObject)
 
 testDeleteBucketResponse :: DeleteBucketResponse -> TestTree
 testDeleteBucketResponse = res
     "DeleteBucketResponse"
     "fixture/DeleteBucketResponse"
+    s3
     (Proxy :: Proxy DeleteBucket)
 
 testListBucketsResponse :: ListBucketsResponse -> TestTree
 testListBucketsResponse = res
     "ListBucketsResponse"
     "fixture/ListBucketsResponse"
+    s3
     (Proxy :: Proxy ListBuckets)
 
 testCreateBucketResponse :: CreateBucketResponse -> TestTree
 testCreateBucketResponse = res
     "CreateBucketResponse"
     "fixture/CreateBucketResponse"
+    s3
     (Proxy :: Proxy CreateBucket)
 
 testPutBucketTaggingResponse :: PutBucketTaggingResponse -> TestTree
 testPutBucketTaggingResponse = res
     "PutBucketTaggingResponse"
     "fixture/PutBucketTaggingResponse"
+    s3
     (Proxy :: Proxy PutBucketTagging)
 
 testDeleteBucketTaggingResponse :: DeleteBucketTaggingResponse -> TestTree
 testDeleteBucketTaggingResponse = res
     "DeleteBucketTaggingResponse"
     "fixture/DeleteBucketTaggingResponse"
+    s3
     (Proxy :: Proxy DeleteBucketTagging)
 
 testPutObjectACLResponse :: PutObjectACLResponse -> TestTree
 testPutObjectACLResponse = res
     "PutObjectACLResponse"
     "fixture/PutObjectACLResponse"
+    s3
     (Proxy :: Proxy PutObjectACL)
 
 testGetBucketNotificationConfigurationResponse :: NotificationConfiguration -> TestTree
 testGetBucketNotificationConfigurationResponse = res
     "GetBucketNotificationConfigurationResponse"
     "fixture/GetBucketNotificationConfigurationResponse"
+    s3
     (Proxy :: Proxy GetBucketNotificationConfiguration)
 
 testGetBucketLocationResponse :: GetBucketLocationResponse -> TestTree
 testGetBucketLocationResponse = res
     "GetBucketLocationResponse"
     "fixture/GetBucketLocationResponse"
+    s3
     (Proxy :: Proxy GetBucketLocation)
 
 testPutBucketReplicationResponse :: PutBucketReplicationResponse -> TestTree
 testPutBucketReplicationResponse = res
     "PutBucketReplicationResponse"
     "fixture/PutBucketReplicationResponse"
+    s3
     (Proxy :: Proxy PutBucketReplication)
 
 testGetBucketWebsiteResponse :: GetBucketWebsiteResponse -> TestTree
 testGetBucketWebsiteResponse = res
     "GetBucketWebsiteResponse"
     "fixture/GetBucketWebsiteResponse"
+    s3
     (Proxy :: Proxy GetBucketWebsite)
 
 testDeleteBucketReplicationResponse :: DeleteBucketReplicationResponse -> TestTree
 testDeleteBucketReplicationResponse = res
     "DeleteBucketReplicationResponse"
     "fixture/DeleteBucketReplicationResponse"
+    s3
     (Proxy :: Proxy DeleteBucketReplication)
 
 testGetBucketRequestPaymentResponse :: GetBucketRequestPaymentResponse -> TestTree
 testGetBucketRequestPaymentResponse = res
     "GetBucketRequestPaymentResponse"
     "fixture/GetBucketRequestPaymentResponse"
+    s3
     (Proxy :: Proxy GetBucketRequestPayment)
 
 testListObjectVersionsResponse :: ListObjectVersionsResponse -> TestTree
 testListObjectVersionsResponse = res
     "ListObjectVersionsResponse"
     "fixture/ListObjectVersionsResponse"
+    s3
     (Proxy :: Proxy ListObjectVersions)
 
 testGetBucketLifecycleResponse :: GetBucketLifecycleResponse -> TestTree
 testGetBucketLifecycleResponse = res
     "GetBucketLifecycleResponse"
     "fixture/GetBucketLifecycleResponse"
+    s3
     (Proxy :: Proxy GetBucketLifecycle)
 
 testHeadBucketResponse :: HeadBucketResponse -> TestTree
 testHeadBucketResponse = res
     "HeadBucketResponse"
     "fixture/HeadBucketResponse"
+    s3
     (Proxy :: Proxy HeadBucket)
 
 testPutBucketLifecycleResponse :: PutBucketLifecycleResponse -> TestTree
 testPutBucketLifecycleResponse = res
     "PutBucketLifecycleResponse"
     "fixture/PutBucketLifecycleResponse"
+    s3
     (Proxy :: Proxy PutBucketLifecycle)
 
 testCreateMultipartUploadResponse :: CreateMultipartUploadResponse -> TestTree
 testCreateMultipartUploadResponse = res
     "CreateMultipartUploadResponse"
     "fixture/CreateMultipartUploadResponse"
+    s3
     (Proxy :: Proxy CreateMultipartUpload)
 
 testDeleteBucketLifecycleResponse :: DeleteBucketLifecycleResponse -> TestTree
 testDeleteBucketLifecycleResponse = res
     "DeleteBucketLifecycleResponse"
     "fixture/DeleteBucketLifecycleResponse"
+    s3
     (Proxy :: Proxy DeleteBucketLifecycle)
 
 testGetBucketReplicationResponse :: GetBucketReplicationResponse -> TestTree
 testGetBucketReplicationResponse = res
     "GetBucketReplicationResponse"
     "fixture/GetBucketReplicationResponse"
+    s3
     (Proxy :: Proxy GetBucketReplication)
 
 testPutBucketWebsiteResponse :: PutBucketWebsiteResponse -> TestTree
 testPutBucketWebsiteResponse = res
     "PutBucketWebsiteResponse"
     "fixture/PutBucketWebsiteResponse"
+    s3
     (Proxy :: Proxy PutBucketWebsite)
 
 testCompleteMultipartUploadResponse :: CompleteMultipartUploadResponse -> TestTree
 testCompleteMultipartUploadResponse = res
     "CompleteMultipartUploadResponse"
     "fixture/CompleteMultipartUploadResponse"
+    s3
     (Proxy :: Proxy CompleteMultipartUpload)
 
 testUploadPartResponse :: UploadPartResponse -> TestTree
 testUploadPartResponse = res
     "UploadPartResponse"
     "fixture/UploadPartResponse"
+    s3
     (Proxy :: Proxy UploadPart)
 
 testListMultipartUploadsResponse :: ListMultipartUploadsResponse -> TestTree
 testListMultipartUploadsResponse = res
     "ListMultipartUploadsResponse"
     "fixture/ListMultipartUploadsResponse"
+    s3
     (Proxy :: Proxy ListMultipartUploads)
 
 testDeleteBucketWebsiteResponse :: DeleteBucketWebsiteResponse -> TestTree
 testDeleteBucketWebsiteResponse = res
     "DeleteBucketWebsiteResponse"
     "fixture/DeleteBucketWebsiteResponse"
+    s3
     (Proxy :: Proxy DeleteBucketWebsite)
 
 testListObjectsResponse :: ListObjectsResponse -> TestTree
 testListObjectsResponse = res
     "ListObjectsResponse"
     "fixture/ListObjectsResponse"
+    s3
     (Proxy :: Proxy ListObjects)
 
 testDeleteObjectsResponse :: DeleteObjectsResponse -> TestTree
 testDeleteObjectsResponse = res
     "DeleteObjectsResponse"
     "fixture/DeleteObjectsResponse"
+    s3
     (Proxy :: Proxy DeleteObjects)
 
 testPutBucketPolicyResponse :: PutBucketPolicyResponse -> TestTree
 testPutBucketPolicyResponse = res
     "PutBucketPolicyResponse"
     "fixture/PutBucketPolicyResponse"
+    s3
     (Proxy :: Proxy PutBucketPolicy)
 
 testDeleteBucketPolicyResponse :: DeleteBucketPolicyResponse -> TestTree
 testDeleteBucketPolicyResponse = res
     "DeleteBucketPolicyResponse"
     "fixture/DeleteBucketPolicyResponse"
+    s3
     (Proxy :: Proxy DeleteBucketPolicy)
 
 testAbortMultipartUploadResponse :: AbortMultipartUploadResponse -> TestTree
 testAbortMultipartUploadResponse = res
     "AbortMultipartUploadResponse"
     "fixture/AbortMultipartUploadResponse"
+    s3
     (Proxy :: Proxy AbortMultipartUpload)
 
 testPutBucketCORSResponse :: PutBucketCORSResponse -> TestTree
 testPutBucketCORSResponse = res
     "PutBucketCORSResponse"
     "fixture/PutBucketCORSResponse"
+    s3
     (Proxy :: Proxy PutBucketCORS)
 
 testDeleteBucketCORSResponse :: DeleteBucketCORSResponse -> TestTree
 testDeleteBucketCORSResponse = res
     "DeleteBucketCORSResponse"
     "fixture/DeleteBucketCORSResponse"
+    s3
     (Proxy :: Proxy DeleteBucketCORS)
 
 testGetBucketVersioningResponse :: GetBucketVersioningResponse -> TestTree
 testGetBucketVersioningResponse = res
     "GetBucketVersioningResponse"
     "fixture/GetBucketVersioningResponse"
+    s3
     (Proxy :: Proxy GetBucketVersioning)
 
 testPutBucketNotificationConfigurationResponse :: PutBucketNotificationConfigurationResponse -> TestTree
 testPutBucketNotificationConfigurationResponse = res
     "PutBucketNotificationConfigurationResponse"
     "fixture/PutBucketNotificationConfigurationResponse"
+    s3
     (Proxy :: Proxy PutBucketNotificationConfiguration)
 
 testGetBucketTaggingResponse :: GetBucketTaggingResponse -> TestTree
 testGetBucketTaggingResponse = res
     "GetBucketTaggingResponse"
     "fixture/GetBucketTaggingResponse"
+    s3
     (Proxy :: Proxy GetBucketTagging)
 
 testHeadObjectResponse :: HeadObjectResponse -> TestTree
 testHeadObjectResponse = res
     "HeadObjectResponse"
     "fixture/HeadObjectResponse"
+    s3
     (Proxy :: Proxy HeadObject)
 
 testPutBucketVersioningResponse :: PutBucketVersioningResponse -> TestTree
 testPutBucketVersioningResponse = res
     "PutBucketVersioningResponse"
     "fixture/PutBucketVersioningResponse"
+    s3
     (Proxy :: Proxy PutBucketVersioning)
 
 testGetObjectACLResponse :: GetObjectACLResponse -> TestTree
 testGetObjectACLResponse = res
     "GetObjectACLResponse"
     "fixture/GetObjectACLResponse"
+    s3
     (Proxy :: Proxy GetObjectACL)
 
 testRestoreObjectResponse :: RestoreObjectResponse -> TestTree
 testRestoreObjectResponse = res
     "RestoreObjectResponse"
     "fixture/RestoreObjectResponse"
+    s3
     (Proxy :: Proxy RestoreObject)
 
 testGetBucketCORSResponse :: GetBucketCORSResponse -> TestTree
 testGetBucketCORSResponse = res
     "GetBucketCORSResponse"
     "fixture/GetBucketCORSResponse"
+    s3
     (Proxy :: Proxy GetBucketCORS)
 
 testCopyObjectResponse :: CopyObjectResponse -> TestTree
 testCopyObjectResponse = res
     "CopyObjectResponse"
     "fixture/CopyObjectResponse"
+    s3
     (Proxy :: Proxy CopyObject)
 
 testGetBucketPolicyResponse :: GetBucketPolicyResponse -> TestTree
 testGetBucketPolicyResponse = res
     "GetBucketPolicyResponse"
     "fixture/GetBucketPolicyResponse"
+    s3
     (Proxy :: Proxy GetBucketPolicy)
 
 testGetBucketLoggingResponse :: GetBucketLoggingResponse -> TestTree
 testGetBucketLoggingResponse = res
     "GetBucketLoggingResponse"
     "fixture/GetBucketLoggingResponse"
+    s3
     (Proxy :: Proxy GetBucketLogging)
 
 testListPartsResponse :: ListPartsResponse -> TestTree
 testListPartsResponse = res
     "ListPartsResponse"
     "fixture/ListPartsResponse"
+    s3
     (Proxy :: Proxy ListParts)
 
 testGetBucketACLResponse :: GetBucketACLResponse -> TestTree
 testGetBucketACLResponse = res
     "GetBucketACLResponse"
     "fixture/GetBucketACLResponse"
+    s3
     (Proxy :: Proxy GetBucketACL)
 
 testPutBucketACLResponse :: PutBucketACLResponse -> TestTree
 testPutBucketACLResponse = res
     "PutBucketACLResponse"
     "fixture/PutBucketACLResponse"
+    s3
     (Proxy :: Proxy PutBucketACL)
 
 testUploadPartCopyResponse :: UploadPartCopyResponse -> TestTree
 testUploadPartCopyResponse = res
     "UploadPartCopyResponse"
     "fixture/UploadPartCopyResponse"
+    s3
     (Proxy :: Proxy UploadPartCopy)
