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:               0.3.3
+version:               0.3.4
 synopsis:              Amazon Simple Storage Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -48,6 +48,7 @@
         , Network.AWS.S3.DeleteBucketCors
         , Network.AWS.S3.DeleteBucketLifecycle
         , Network.AWS.S3.DeleteBucketPolicy
+        , Network.AWS.S3.DeleteBucketReplication
         , Network.AWS.S3.DeleteBucketTagging
         , Network.AWS.S3.DeleteBucketWebsite
         , Network.AWS.S3.DeleteObject
@@ -58,7 +59,9 @@
         , Network.AWS.S3.GetBucketLocation
         , Network.AWS.S3.GetBucketLogging
         , Network.AWS.S3.GetBucketNotification
+        , Network.AWS.S3.GetBucketNotificationConfiguration
         , Network.AWS.S3.GetBucketPolicy
+        , Network.AWS.S3.GetBucketReplication
         , Network.AWS.S3.GetBucketRequestPayment
         , Network.AWS.S3.GetBucketTagging
         , Network.AWS.S3.GetBucketVersioning
@@ -78,7 +81,9 @@
         , Network.AWS.S3.PutBucketLifecycle
         , Network.AWS.S3.PutBucketLogging
         , Network.AWS.S3.PutBucketNotification
+        , Network.AWS.S3.PutBucketNotificationConfiguration
         , Network.AWS.S3.PutBucketPolicy
+        , Network.AWS.S3.PutBucketReplication
         , Network.AWS.S3.PutBucketRequestPayment
         , Network.AWS.S3.PutBucketTagging
         , Network.AWS.S3.PutBucketVersioning
@@ -95,5 +100,5 @@
           Network.AWS.S3.Internal
 
     build-depends:
-          amazonka-core == 0.3.3.*
+          amazonka-core == 0.3.4.*
         , base          >= 4.7     && < 5
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
@@ -27,6 +27,7 @@
     , module Network.AWS.S3.DeleteBucketCors
     , module Network.AWS.S3.DeleteBucketLifecycle
     , module Network.AWS.S3.DeleteBucketPolicy
+    , module Network.AWS.S3.DeleteBucketReplication
     , module Network.AWS.S3.DeleteBucketTagging
     , module Network.AWS.S3.DeleteBucketWebsite
     , module Network.AWS.S3.DeleteObject
@@ -37,7 +38,9 @@
     , module Network.AWS.S3.GetBucketLocation
     , module Network.AWS.S3.GetBucketLogging
     , module Network.AWS.S3.GetBucketNotification
+    , module Network.AWS.S3.GetBucketNotificationConfiguration
     , module Network.AWS.S3.GetBucketPolicy
+    , module Network.AWS.S3.GetBucketReplication
     , module Network.AWS.S3.GetBucketRequestPayment
     , module Network.AWS.S3.GetBucketTagging
     , module Network.AWS.S3.GetBucketVersioning
@@ -57,7 +60,9 @@
     , module Network.AWS.S3.PutBucketLifecycle
     , module Network.AWS.S3.PutBucketLogging
     , module Network.AWS.S3.PutBucketNotification
+    , module Network.AWS.S3.PutBucketNotificationConfiguration
     , module Network.AWS.S3.PutBucketPolicy
+    , module Network.AWS.S3.PutBucketReplication
     , module Network.AWS.S3.PutBucketRequestPayment
     , module Network.AWS.S3.PutBucketTagging
     , module Network.AWS.S3.PutBucketVersioning
@@ -80,6 +85,7 @@
 import Network.AWS.S3.DeleteBucketCors
 import Network.AWS.S3.DeleteBucketLifecycle
 import Network.AWS.S3.DeleteBucketPolicy
+import Network.AWS.S3.DeleteBucketReplication
 import Network.AWS.S3.DeleteBucketTagging
 import Network.AWS.S3.DeleteBucketWebsite
 import Network.AWS.S3.DeleteObject
@@ -90,7 +96,9 @@
 import Network.AWS.S3.GetBucketLocation
 import Network.AWS.S3.GetBucketLogging
 import Network.AWS.S3.GetBucketNotification
+import Network.AWS.S3.GetBucketNotificationConfiguration
 import Network.AWS.S3.GetBucketPolicy
+import Network.AWS.S3.GetBucketReplication
 import Network.AWS.S3.GetBucketRequestPayment
 import Network.AWS.S3.GetBucketTagging
 import Network.AWS.S3.GetBucketVersioning
@@ -110,7 +118,9 @@
 import Network.AWS.S3.PutBucketLifecycle
 import Network.AWS.S3.PutBucketLogging
 import Network.AWS.S3.PutBucketNotification
+import Network.AWS.S3.PutBucketNotificationConfiguration
 import Network.AWS.S3.PutBucketPolicy
+import Network.AWS.S3.PutBucketReplication
 import Network.AWS.S3.PutBucketRequestPayment
 import Network.AWS.S3.PutBucketTagging
 import Network.AWS.S3.PutBucketVersioning
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
@@ -38,12 +38,15 @@
     -- ** Request lenses
     , amuBucket
     , amuKey
+    , amuRequestPayer
     , amuUploadId
 
     -- * Response
     , AbortMultipartUploadResponse
     -- ** Response constructor
     , abortMultipartUploadResponse
+    -- ** Response lenses
+    , amurRequestCharged
     ) where
 
 import Network.AWS.Prelude
@@ -52,10 +55,11 @@
 import qualified GHC.Exts
 
 data AbortMultipartUpload = AbortMultipartUpload
-    { _amuBucket   :: Text
-    , _amuKey      :: Text
-    , _amuUploadId :: Text
-    } deriving (Eq, Ord, Read, Show)
+    { _amuBucket       :: Text
+    , _amuKey          :: Text
+    , _amuRequestPayer :: Maybe RequestPayer
+    , _amuUploadId     :: Text
+    } deriving (Eq, Read, Show)
 
 -- | 'AbortMultipartUpload' constructor.
 --
@@ -65,6 +69,8 @@
 --
 -- * 'amuKey' @::@ 'Text'
 --
+-- * 'amuRequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 -- * 'amuUploadId' @::@ 'Text'
 --
 abortMultipartUpload :: Text -- ^ 'amuBucket'
@@ -72,9 +78,10 @@
                      -> Text -- ^ 'amuUploadId'
                      -> AbortMultipartUpload
 abortMultipartUpload p1 p2 p3 = AbortMultipartUpload
-    { _amuBucket   = p1
-    , _amuKey      = p2
-    , _amuUploadId = p3
+    { _amuBucket       = p1
+    , _amuKey          = p2
+    , _amuUploadId     = p3
+    , _amuRequestPayer = Nothing
     }
 
 amuBucket :: Lens' AbortMultipartUpload Text
@@ -83,16 +90,31 @@
 amuKey :: Lens' AbortMultipartUpload Text
 amuKey = lens _amuKey (\s a -> s { _amuKey = a })
 
+amuRequestPayer :: Lens' AbortMultipartUpload (Maybe RequestPayer)
+amuRequestPayer = lens _amuRequestPayer (\s a -> s { _amuRequestPayer = a })
+
 amuUploadId :: Lens' AbortMultipartUpload Text
 amuUploadId = lens _amuUploadId (\s a -> s { _amuUploadId = a })
 
-data AbortMultipartUploadResponse = AbortMultipartUploadResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+newtype AbortMultipartUploadResponse = AbortMultipartUploadResponse
+    { _amurRequestCharged :: Maybe RequestCharged
+    } deriving (Eq, Read, Show)
 
 -- | 'AbortMultipartUploadResponse' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'amurRequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 abortMultipartUploadResponse :: AbortMultipartUploadResponse
 abortMultipartUploadResponse = AbortMultipartUploadResponse
+    { _amurRequestCharged = Nothing
+    }
 
+amurRequestCharged :: Lens' AbortMultipartUploadResponse (Maybe RequestCharged)
+amurRequestCharged =
+    lens _amurRequestCharged (\s a -> s { _amurRequestCharged = a })
+
 instance ToPath AbortMultipartUpload where
     toPath AbortMultipartUpload{..} = mconcat
         [ "/"
@@ -104,7 +126,10 @@
 instance ToQuery AbortMultipartUpload where
     toQuery rq = "uploadId" =? _amuUploadId rq
 
-instance ToHeaders AbortMultipartUpload
+instance ToHeaders AbortMultipartUpload where
+    toHeaders AbortMultipartUpload{..} = mconcat
+        [ "x-amz-request-payer" =: _amuRequestPayer
+        ]
 
 instance ToXMLRoot AbortMultipartUpload where
     toXMLRoot = const (namespaced ns "AbortMultipartUpload" [])
@@ -116,4 +141,5 @@
     type Rs AbortMultipartUpload = AbortMultipartUploadResponse
 
     request  = delete
-    response = nullResponse AbortMultipartUploadResponse
+    response = headerResponse $ \h -> AbortMultipartUploadResponse
+        <$> h ~:? "x-amz-request-charged"
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
@@ -35,6 +35,7 @@
     , cmu1Bucket
     , cmu1Key
     , cmu1MultipartUpload
+    , cmu1RequestPayer
     , cmu1UploadId
 
     -- * Response
@@ -47,6 +48,7 @@
     , cmur1Expiration
     , cmur1Key
     , cmur1Location
+    , cmur1RequestCharged
     , cmur1SSEKMSKeyId
     , cmur1ServerSideEncryption
     , cmur1VersionId
@@ -61,6 +63,7 @@
     { _cmu1Bucket          :: Text
     , _cmu1Key             :: Text
     , _cmu1MultipartUpload :: Maybe CompletedMultipartUpload
+    , _cmu1RequestPayer    :: Maybe RequestPayer
     , _cmu1UploadId        :: Text
     } deriving (Eq, Read, Show)
 
@@ -74,6 +77,8 @@
 --
 -- * 'cmu1MultipartUpload' @::@ 'Maybe' 'CompletedMultipartUpload'
 --
+-- * 'cmu1RequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 -- * 'cmu1UploadId' @::@ 'Text'
 --
 completeMultipartUpload :: Text -- ^ 'cmu1Bucket'
@@ -85,6 +90,7 @@
     , _cmu1Key             = p2
     , _cmu1UploadId        = p3
     , _cmu1MultipartUpload = Nothing
+    , _cmu1RequestPayer    = Nothing
     }
 
 cmu1Bucket :: Lens' CompleteMultipartUpload Text
@@ -97,6 +103,9 @@
 cmu1MultipartUpload =
     lens _cmu1MultipartUpload (\s a -> s { _cmu1MultipartUpload = a })
 
+cmu1RequestPayer :: Lens' CompleteMultipartUpload (Maybe RequestPayer)
+cmu1RequestPayer = lens _cmu1RequestPayer (\s a -> s { _cmu1RequestPayer = a })
+
 cmu1UploadId :: Lens' CompleteMultipartUpload Text
 cmu1UploadId = lens _cmu1UploadId (\s a -> s { _cmu1UploadId = a })
 
@@ -106,6 +115,7 @@
     , _cmur1Expiration           :: Maybe Text
     , _cmur1Key                  :: Maybe Text
     , _cmur1Location             :: Maybe Text
+    , _cmur1RequestCharged       :: Maybe RequestCharged
     , _cmur1SSEKMSKeyId          :: Maybe (Sensitive Text)
     , _cmur1ServerSideEncryption :: Maybe ServerSideEncryption
     , _cmur1VersionId            :: Maybe Text
@@ -125,6 +135,8 @@
 --
 -- * 'cmur1Location' @::@ 'Maybe' 'Text'
 --
+-- * 'cmur1RequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 -- * 'cmur1SSEKMSKeyId' @::@ 'Maybe' 'Text'
 --
 -- * 'cmur1ServerSideEncryption' @::@ 'Maybe' 'ServerSideEncryption'
@@ -141,6 +153,7 @@
     , _cmur1ServerSideEncryption = Nothing
     , _cmur1VersionId            = Nothing
     , _cmur1SSEKMSKeyId          = Nothing
+    , _cmur1RequestCharged       = Nothing
     }
 
 cmur1Bucket :: Lens' CompleteMultipartUploadResponse (Maybe Text)
@@ -161,6 +174,10 @@
 cmur1Location :: Lens' CompleteMultipartUploadResponse (Maybe Text)
 cmur1Location = lens _cmur1Location (\s a -> s { _cmur1Location = a })
 
+cmur1RequestCharged :: Lens' CompleteMultipartUploadResponse (Maybe RequestCharged)
+cmur1RequestCharged =
+    lens _cmur1RequestCharged (\s a -> s { _cmur1RequestCharged = a })
+
 -- | If present, specifies the ID of the AWS Key Management Service (KMS) master
 -- encryption key that was used for the object.
 cmur1SSEKMSKeyId :: Lens' CompleteMultipartUploadResponse (Maybe Text)
@@ -188,12 +205,13 @@
 instance ToQuery CompleteMultipartUpload where
     toQuery rq = "uploadId" =? _cmu1UploadId rq
 
-instance ToHeaders CompleteMultipartUpload
+instance ToHeaders CompleteMultipartUpload where
+    toHeaders CompleteMultipartUpload{..} = mconcat
+        [ "x-amz-request-payer" =: _cmu1RequestPayer
+        ]
 
 instance ToXMLRoot CompleteMultipartUpload where
-    toXMLRoot CompleteMultipartUpload{..} = namespaced ns "CompleteMultipartUpload"
-        [ "CompleteMultipartUpload" =@ _cmu1MultipartUpload
-        ]
+    toXMLRoot = extractRoot ns . toXML . _cmu1MultipartUpload
 
 instance ToXML CompleteMultipartUpload
 
@@ -208,6 +226,7 @@
         <*> h ~:? "x-amz-expiration"
         <*> x .@? "Key"
         <*> x .@? "Location"
+        <*> h ~:? "x-amz-request-charged"
         <*> h ~:? "x-amz-server-side-encryption-aws-kms-key-id"
         <*> h ~:? "x-amz-server-side-encryption"
         <*> h ~:? "x-amz-version-id"
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
@@ -55,6 +55,7 @@
     , coKey
     , coMetadata
     , coMetadataDirective
+    , coRequestPayer
     , coSSECustomerAlgorithm
     , coSSECustomerKey
     , coSSECustomerKeyMD5
@@ -71,6 +72,7 @@
     , corCopyObjectResult
     , corCopySourceVersionId
     , corExpiration
+    , corRequestCharged
     , corSSECustomerAlgorithm
     , corSSECustomerKeyMD5
     , corSSEKMSKeyId
@@ -106,6 +108,7 @@
     , _coKey                            :: Text
     , _coMetadata                       :: Map (CI Text) Text
     , _coMetadataDirective              :: Maybe MetadataDirective
+    , _coRequestPayer                   :: Maybe RequestPayer
     , _coSSECustomerAlgorithm           :: Maybe Text
     , _coSSECustomerKey                 :: Maybe (Sensitive Text)
     , _coSSECustomerKeyMD5              :: Maybe Text
@@ -165,6 +168,8 @@
 --
 -- * 'coMetadataDirective' @::@ 'Maybe' 'MetadataDirective'
 --
+-- * 'coRequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 -- * 'coSSECustomerAlgorithm' @::@ 'Maybe' 'Text'
 --
 -- * 'coSSECustomerKey' @::@ 'Maybe' 'Text'
@@ -214,6 +219,7 @@
     , _coCopySourceSSECustomerAlgorithm = Nothing
     , _coCopySourceSSECustomerKey       = Nothing
     , _coCopySourceSSECustomerKeyMD5    = Nothing
+    , _coRequestPayer                   = Nothing
     }
 
 -- | The canned ACL to apply to the object.
@@ -336,6 +342,9 @@
 coMetadataDirective =
     lens _coMetadataDirective (\s a -> s { _coMetadataDirective = a })
 
+coRequestPayer :: Lens' CopyObject (Maybe RequestPayer)
+coRequestPayer = lens _coRequestPayer (\s a -> s { _coRequestPayer = a })
+
 -- | Specifies the algorithm to use to when encrypting the object (e.g., AES256,
 -- aws:kms).
 coSSECustomerAlgorithm :: Lens' CopyObject (Maybe Text)
@@ -387,6 +396,7 @@
     { _corCopyObjectResult     :: Maybe CopyObjectResult
     , _corCopySourceVersionId  :: Maybe Text
     , _corExpiration           :: Maybe Text
+    , _corRequestCharged       :: Maybe RequestCharged
     , _corSSECustomerAlgorithm :: Maybe Text
     , _corSSECustomerKeyMD5    :: Maybe Text
     , _corSSEKMSKeyId          :: Maybe (Sensitive Text)
@@ -403,6 +413,8 @@
 --
 -- * 'corExpiration' @::@ 'Maybe' 'Text'
 --
+-- * 'corRequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 -- * 'corSSECustomerAlgorithm' @::@ 'Maybe' 'Text'
 --
 -- * 'corSSECustomerKeyMD5' @::@ 'Maybe' 'Text'
@@ -420,6 +432,7 @@
     , _corSSECustomerAlgorithm = Nothing
     , _corSSECustomerKeyMD5    = Nothing
     , _corSSEKMSKeyId          = Nothing
+    , _corRequestCharged       = Nothing
     }
 
 corCopyObjectResult :: Lens' CopyObjectResponse (Maybe CopyObjectResult)
@@ -434,6 +447,10 @@
 corExpiration :: Lens' CopyObjectResponse (Maybe Text)
 corExpiration = lens _corExpiration (\s a -> s { _corExpiration = a })
 
+corRequestCharged :: Lens' CopyObjectResponse (Maybe RequestCharged)
+corRequestCharged =
+    lens _corRequestCharged (\s a -> s { _corRequestCharged = a })
+
 -- | If server-side encryption with a customer-provided encryption key was
 -- requested, the response will include this header confirming the encryption
 -- algorithm used.
@@ -500,6 +517,7 @@
         , "x-amz-copy-source-server-side-encryption-customer-algorithm" =: _coCopySourceSSECustomerAlgorithm
         , "x-amz-copy-source-server-side-encryption-customer-key"       =: _coCopySourceSSECustomerKey
         , "x-amz-copy-source-server-side-encryption-customer-key-MD5"   =: _coCopySourceSSECustomerKeyMD5
+        , "x-amz-request-payer"                                         =: _coRequestPayer
         ]
 
 instance ToXMLRoot CopyObject where
@@ -516,6 +534,7 @@
         <$> x .@? "CopyObjectResult"
         <*> h ~:? "x-amz-copy-source-version-id"
         <*> h ~:? "x-amz-expiration"
+        <*> h ~:? "x-amz-request-charged"
         <*> h ~:? "x-amz-server-side-encryption-customer-algorithm"
         <*> h ~:? "x-amz-server-side-encryption-customer-key-MD5"
         <*> h ~:? "x-amz-server-side-encryption-aws-kms-key-id"
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
@@ -52,6 +52,7 @@
     , cmuGrantWriteACP
     , cmuKey
     , cmuMetadata
+    , cmuRequestPayer
     , cmuSSECustomerAlgorithm
     , cmuSSECustomerKey
     , cmuSSECustomerKeyMD5
@@ -67,6 +68,7 @@
     -- ** Response lenses
     , cmurBucket
     , cmurKey
+    , cmurRequestCharged
     , cmurSSECustomerAlgorithm
     , cmurSSECustomerKeyMD5
     , cmurSSEKMSKeyId
@@ -94,6 +96,7 @@
     , _cmuGrantWriteACP           :: Maybe Text
     , _cmuKey                     :: Text
     , _cmuMetadata                :: Map (CI Text) Text
+    , _cmuRequestPayer            :: Maybe RequestPayer
     , _cmuSSECustomerAlgorithm    :: Maybe Text
     , _cmuSSECustomerKey          :: Maybe (Sensitive Text)
     , _cmuSSECustomerKeyMD5       :: Maybe Text
@@ -135,6 +138,8 @@
 --
 -- * 'cmuMetadata' @::@ 'HashMap' ('CI' 'Text') 'Text'
 --
+-- * 'cmuRequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 -- * 'cmuSSECustomerAlgorithm' @::@ 'Maybe' 'Text'
 --
 -- * 'cmuSSECustomerKey' @::@ 'Maybe' 'Text'
@@ -174,6 +179,7 @@
     , _cmuSSECustomerKey          = Nothing
     , _cmuSSECustomerKeyMD5       = Nothing
     , _cmuSSEKMSKeyId             = Nothing
+    , _cmuRequestPayer            = Nothing
     }
 
 -- | The canned ACL to apply to the object.
@@ -236,6 +242,9 @@
 cmuMetadata :: Lens' CreateMultipartUpload (HashMap (CI Text) Text)
 cmuMetadata = lens _cmuMetadata (\s a -> s { _cmuMetadata = a }) . _Map
 
+cmuRequestPayer :: Lens' CreateMultipartUpload (Maybe RequestPayer)
+cmuRequestPayer = lens _cmuRequestPayer (\s a -> s { _cmuRequestPayer = a })
+
 -- | Specifies the algorithm to use to when encrypting the object (e.g., AES256,
 -- aws:kms).
 cmuSSECustomerAlgorithm :: Lens' CreateMultipartUpload (Maybe Text)
@@ -288,6 +297,7 @@
 data CreateMultipartUploadResponse = CreateMultipartUploadResponse
     { _cmurBucket               :: Maybe Text
     , _cmurKey                  :: Maybe Text
+    , _cmurRequestCharged       :: Maybe RequestCharged
     , _cmurSSECustomerAlgorithm :: Maybe Text
     , _cmurSSECustomerKeyMD5    :: Maybe Text
     , _cmurSSEKMSKeyId          :: Maybe (Sensitive Text)
@@ -303,6 +313,8 @@
 --
 -- * 'cmurKey' @::@ 'Maybe' 'Text'
 --
+-- * 'cmurRequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 -- * 'cmurSSECustomerAlgorithm' @::@ 'Maybe' 'Text'
 --
 -- * 'cmurSSECustomerKeyMD5' @::@ 'Maybe' 'Text'
@@ -322,6 +334,7 @@
     , _cmurSSECustomerAlgorithm = Nothing
     , _cmurSSECustomerKeyMD5    = Nothing
     , _cmurSSEKMSKeyId          = Nothing
+    , _cmurRequestCharged       = Nothing
     }
 
 -- | Name of the bucket to which the multipart upload was initiated.
@@ -332,6 +345,10 @@
 cmurKey :: Lens' CreateMultipartUploadResponse (Maybe Text)
 cmurKey = lens _cmurKey (\s a -> s { _cmurKey = a })
 
+cmurRequestCharged :: Lens' CreateMultipartUploadResponse (Maybe RequestCharged)
+cmurRequestCharged =
+    lens _cmurRequestCharged (\s a -> s { _cmurRequestCharged = a })
+
 -- | If server-side encryption with a customer-provided encryption key was
 -- requested, the response will include this header confirming the encryption
 -- algorithm used.
@@ -395,6 +412,7 @@
         , "x-amz-server-side-encryption-customer-key"       =: _cmuSSECustomerKey
         , "x-amz-server-side-encryption-customer-key-MD5"   =: _cmuSSECustomerKeyMD5
         , "x-amz-server-side-encryption-aws-kms-key-id"     =: _cmuSSEKMSKeyId
+        , "x-amz-request-payer"                             =: _cmuRequestPayer
         ]
 
 instance ToXMLRoot CreateMultipartUpload where
@@ -410,6 +428,7 @@
     response = xmlHeaderResponse $ \h x -> CreateMultipartUploadResponse
         <$> x .@? "Bucket"
         <*> x .@? "Key"
+        <*> h ~:? "x-amz-request-charged"
         <*> h ~:? "x-amz-server-side-encryption-customer-algorithm"
         <*> h ~:? "x-amz-server-side-encryption-customer-key-MD5"
         <*> h ~:? "x-amz-server-side-encryption-aws-kms-key-id"
diff --git a/gen/Network/AWS/S3/DeleteBucketReplication.hs b/gen/Network/AWS/S3/DeleteBucketReplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/S3/DeleteBucketReplication.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.S3.DeleteBucketReplication
+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | <http://docs.aws.amazon.com/AmazonS3/latest/API/DeleteBucketReplication.html>
+module Network.AWS.S3.DeleteBucketReplication
+    (
+    -- * Request
+      DeleteBucketReplication
+    -- ** Request constructor
+    , deleteBucketReplication
+    -- ** Request lenses
+    , dbrBucket
+
+    -- * Response
+    , DeleteBucketReplicationResponse
+    -- ** Response constructor
+    , deleteBucketReplicationResponse
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.S3
+import Network.AWS.S3.Types
+import qualified GHC.Exts
+
+newtype DeleteBucketReplication = DeleteBucketReplication
+    { _dbrBucket :: Text
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+
+-- | 'DeleteBucketReplication' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'dbrBucket' @::@ 'Text'
+--
+deleteBucketReplication :: Text -- ^ 'dbrBucket'
+                        -> DeleteBucketReplication
+deleteBucketReplication p1 = DeleteBucketReplication
+    { _dbrBucket = p1
+    }
+
+dbrBucket :: Lens' DeleteBucketReplication Text
+dbrBucket = lens _dbrBucket (\s a -> s { _dbrBucket = a })
+
+data DeleteBucketReplicationResponse = DeleteBucketReplicationResponse
+    deriving (Eq, Ord, Read, Show, Generic)
+
+-- | 'DeleteBucketReplicationResponse' constructor.
+deleteBucketReplicationResponse :: DeleteBucketReplicationResponse
+deleteBucketReplicationResponse = DeleteBucketReplicationResponse
+
+instance ToPath DeleteBucketReplication where
+    toPath DeleteBucketReplication{..} = mconcat
+        [ "/"
+        , toText _dbrBucket
+        ]
+
+instance ToQuery DeleteBucketReplication where
+    toQuery = const "replication"
+
+instance ToHeaders DeleteBucketReplication
+
+instance ToXMLRoot DeleteBucketReplication where
+    toXMLRoot = const (namespaced ns "DeleteBucketReplication" [])
+
+instance ToXML DeleteBucketReplication
+
+instance AWSRequest DeleteBucketReplication where
+    type Sv DeleteBucketReplication = S3
+    type Rs DeleteBucketReplication = DeleteBucketReplicationResponse
+
+    request  = delete
+    response = nullResponse DeleteBucketReplicationResponse
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
@@ -37,6 +37,7 @@
     , doBucket
     , doKey
     , doMFA
+    , doRequestPayer
     , doVersionId
 
     -- * Response
@@ -45,6 +46,7 @@
     , deleteObjectResponse
     -- ** Response lenses
     , dorDeleteMarker
+    , dorRequestCharged
     , dorVersionId
     ) where
 
@@ -54,11 +56,12 @@
 import qualified GHC.Exts
 
 data DeleteObject = DeleteObject
-    { _doBucket    :: Text
-    , _doKey       :: Text
-    , _doMFA       :: Maybe Text
-    , _doVersionId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+    { _doBucket       :: Text
+    , _doKey          :: Text
+    , _doMFA          :: Maybe Text
+    , _doRequestPayer :: Maybe RequestPayer
+    , _doVersionId    :: Maybe Text
+    } deriving (Eq, Read, Show)
 
 -- | 'DeleteObject' constructor.
 --
@@ -70,16 +73,19 @@
 --
 -- * 'doMFA' @::@ 'Maybe' 'Text'
 --
+-- * 'doRequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 -- * 'doVersionId' @::@ 'Maybe' 'Text'
 --
 deleteObject :: Text -- ^ 'doBucket'
              -> Text -- ^ 'doKey'
              -> DeleteObject
 deleteObject p1 p2 = DeleteObject
-    { _doBucket    = p1
-    , _doKey       = p2
-    , _doMFA       = Nothing
-    , _doVersionId = Nothing
+    { _doBucket       = p1
+    , _doKey          = p2
+    , _doMFA          = Nothing
+    , _doVersionId    = Nothing
+    , _doRequestPayer = Nothing
     }
 
 doBucket :: Lens' DeleteObject Text
@@ -93,14 +99,18 @@
 doMFA :: Lens' DeleteObject (Maybe Text)
 doMFA = lens _doMFA (\s a -> s { _doMFA = a })
 
+doRequestPayer :: Lens' DeleteObject (Maybe RequestPayer)
+doRequestPayer = lens _doRequestPayer (\s a -> s { _doRequestPayer = a })
+
 -- | VersionId used to reference a specific version of the object.
 doVersionId :: Lens' DeleteObject (Maybe Text)
 doVersionId = lens _doVersionId (\s a -> s { _doVersionId = a })
 
 data DeleteObjectResponse = DeleteObjectResponse
-    { _dorDeleteMarker :: Maybe Bool
-    , _dorVersionId    :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+    { _dorDeleteMarker   :: Maybe Bool
+    , _dorRequestCharged :: Maybe RequestCharged
+    , _dorVersionId      :: Maybe Text
+    } deriving (Eq, Read, Show)
 
 -- | 'DeleteObjectResponse' constructor.
 --
@@ -108,12 +118,15 @@
 --
 -- * 'dorDeleteMarker' @::@ 'Maybe' 'Bool'
 --
+-- * 'dorRequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 -- * 'dorVersionId' @::@ 'Maybe' 'Text'
 --
 deleteObjectResponse :: DeleteObjectResponse
 deleteObjectResponse = DeleteObjectResponse
-    { _dorDeleteMarker = Nothing
-    , _dorVersionId    = Nothing
+    { _dorDeleteMarker   = Nothing
+    , _dorVersionId      = Nothing
+    , _dorRequestCharged = Nothing
     }
 
 -- | Specifies whether the versioned object that was permanently deleted was
@@ -121,6 +134,10 @@
 dorDeleteMarker :: Lens' DeleteObjectResponse (Maybe Bool)
 dorDeleteMarker = lens _dorDeleteMarker (\s a -> s { _dorDeleteMarker = a })
 
+dorRequestCharged :: Lens' DeleteObjectResponse (Maybe RequestCharged)
+dorRequestCharged =
+    lens _dorRequestCharged (\s a -> s { _dorRequestCharged = a })
+
 -- | Returns the version ID of the delete marker created as a result of the DELETE
 -- operation.
 dorVersionId :: Lens' DeleteObjectResponse (Maybe Text)
@@ -139,7 +156,8 @@
 
 instance ToHeaders DeleteObject where
     toHeaders DeleteObject{..} = mconcat
-        [ "x-amz-mfa" =: _doMFA
+        [ "x-amz-mfa"           =: _doMFA
+        , "x-amz-request-payer" =: _doRequestPayer
         ]
 
 instance ToXMLRoot DeleteObject where
@@ -154,4 +172,5 @@
     request  = delete
     response = headerResponse $ \h -> DeleteObjectResponse
         <$> h ~:? "x-amz-delete-marker"
+        <*> h ~:? "x-amz-request-charged"
         <*> h ~:? "x-amz-version-id"
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
@@ -36,14 +36,16 @@
     , do1Bucket
     , do1Delete
     , do1MFA
+    , do1RequestPayer
 
     -- * Response
     , DeleteObjectsResponse
     -- ** Response constructor
     , deleteObjectsResponse
     -- ** Response lenses
-    , dorDeleted
-    , dorErrors
+    , dor1Deleted
+    , dor1Errors
+    , dor1RequestCharged
     ) where
 
 import Network.AWS.Prelude
@@ -52,9 +54,10 @@
 import qualified GHC.Exts
 
 data DeleteObjects = DeleteObjects
-    { _do1Bucket :: Text
-    , _do1Delete :: Delete
-    , _do1MFA    :: Maybe Text
+    { _do1Bucket       :: Text
+    , _do1Delete       :: Delete
+    , _do1MFA          :: Maybe Text
+    , _do1RequestPayer :: Maybe RequestPayer
     } deriving (Eq, Read, Show)
 
 -- | 'DeleteObjects' constructor.
@@ -67,13 +70,16 @@
 --
 -- * 'do1MFA' @::@ 'Maybe' 'Text'
 --
+-- * 'do1RequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 deleteObjects :: Text -- ^ 'do1Bucket'
               -> Delete -- ^ 'do1Delete'
               -> DeleteObjects
 deleteObjects p1 p2 = DeleteObjects
-    { _do1Bucket = p1
-    , _do1Delete = p2
-    , _do1MFA    = Nothing
+    { _do1Bucket       = p1
+    , _do1Delete       = p2
+    , _do1MFA          = Nothing
+    , _do1RequestPayer = Nothing
     }
 
 do1Bucket :: Lens' DeleteObjects Text
@@ -87,31 +93,42 @@
 do1MFA :: Lens' DeleteObjects (Maybe Text)
 do1MFA = lens _do1MFA (\s a -> s { _do1MFA = a })
 
+do1RequestPayer :: Lens' DeleteObjects (Maybe RequestPayer)
+do1RequestPayer = lens _do1RequestPayer (\s a -> s { _do1RequestPayer = a })
+
 data DeleteObjectsResponse = DeleteObjectsResponse
-    { _dorDeleted :: List "Deleted" DeletedObject
-    , _dorErrors  :: List "Error" S3ServiceError
+    { _dor1Deleted        :: List "Deleted" DeletedObject
+    , _dor1Errors         :: List "Error" S3ServiceError
+    , _dor1RequestCharged :: Maybe RequestCharged
     } deriving (Eq, Read, Show)
 
 -- | 'DeleteObjectsResponse' constructor.
 --
 -- The fields accessible through corresponding lenses are:
 --
--- * 'dorDeleted' @::@ ['DeletedObject']
+-- * 'dor1Deleted' @::@ ['DeletedObject']
 --
--- * 'dorErrors' @::@ ['S3ServiceError']
+-- * 'dor1Errors' @::@ ['S3ServiceError']
 --
+-- * 'dor1RequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 deleteObjectsResponse :: DeleteObjectsResponse
 deleteObjectsResponse = DeleteObjectsResponse
-    { _dorDeleted = mempty
-    , _dorErrors  = mempty
+    { _dor1Deleted        = mempty
+    , _dor1RequestCharged = Nothing
+    , _dor1Errors         = mempty
     }
 
-dorDeleted :: Lens' DeleteObjectsResponse [DeletedObject]
-dorDeleted = lens _dorDeleted (\s a -> s { _dorDeleted = a }) . _List
+dor1Deleted :: Lens' DeleteObjectsResponse [DeletedObject]
+dor1Deleted = lens _dor1Deleted (\s a -> s { _dor1Deleted = a }) . _List
 
-dorErrors :: Lens' DeleteObjectsResponse [S3ServiceError]
-dorErrors = lens _dorErrors (\s a -> s { _dorErrors = a }) . _List
+dor1Errors :: Lens' DeleteObjectsResponse [S3ServiceError]
+dor1Errors = lens _dor1Errors (\s a -> s { _dor1Errors = a }) . _List
 
+dor1RequestCharged :: Lens' DeleteObjectsResponse (Maybe RequestCharged)
+dor1RequestCharged =
+    lens _dor1RequestCharged (\s a -> s { _dor1RequestCharged = a })
+
 instance ToPath DeleteObjects where
     toPath DeleteObjects{..} = mconcat
         [ "/"
@@ -123,7 +140,8 @@
 
 instance ToHeaders DeleteObjects where
     toHeaders DeleteObjects{..} = mconcat
-        [ "x-amz-mfa" =: _do1MFA
+        [ "x-amz-mfa"           =: _do1MFA
+        , "x-amz-request-payer" =: _do1RequestPayer
         ]
 
 instance ToXMLRoot DeleteObjects where
@@ -136,9 +154,7 @@
     type Rs DeleteObjects = DeleteObjectsResponse
 
     request  = post
-    response = xmlResponse
-
-instance FromXML DeleteObjectsResponse where
-    parseXML x = DeleteObjectsResponse
-        <$> parseXML x
-        <*> parseXML x
+    response = xmlHeaderResponse $ \h x -> DeleteObjectsResponse
+        <$> x .@? "Deleted" .!@ mempty
+        <*> x .@? "Error" .!@ mempty
+        <*> h ~:? "x-amz-request-charged"
diff --git a/gen/Network/AWS/S3/GetBucketNotification.hs b/gen/Network/AWS/S3/GetBucketNotification.hs
--- a/gen/Network/AWS/S3/GetBucketNotification.hs
+++ b/gen/Network/AWS/S3/GetBucketNotification.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | Return the notification configuration of a bucket.
+-- | Deprecated, see the GetBucketNotificationConfiguration operation.
 --
 -- <http://docs.aws.amazon.com/AmazonS3/latest/API/GetBucketNotification.html>
 module Network.AWS.S3.GetBucketNotification
@@ -65,13 +65,14 @@
     { _gbnBucket = p1
     }
 
+-- | Name of the buket to get the notification configuration for.
 gbnBucket :: Lens' GetBucketNotification Text
 gbnBucket = lens _gbnBucket (\s a -> s { _gbnBucket = a })
 
 data GetBucketNotificationResponse = GetBucketNotificationResponse
     { _gbnrCloudFunctionConfiguration :: Maybe CloudFunctionConfiguration
-    , _gbnrQueueConfiguration         :: Maybe QueueConfiguration
-    , _gbnrTopicConfiguration         :: Maybe TopicConfiguration
+    , _gbnrQueueConfiguration         :: Maybe QueueConfigurationDeprecated
+    , _gbnrTopicConfiguration         :: Maybe TopicConfigurationDeprecated
     } deriving (Eq, Read, Show)
 
 -- | 'GetBucketNotificationResponse' constructor.
@@ -80,9 +81,9 @@
 --
 -- * 'gbnrCloudFunctionConfiguration' @::@ 'Maybe' 'CloudFunctionConfiguration'
 --
--- * 'gbnrQueueConfiguration' @::@ 'Maybe' 'QueueConfiguration'
+-- * 'gbnrQueueConfiguration' @::@ 'Maybe' 'QueueConfigurationDeprecated'
 --
--- * 'gbnrTopicConfiguration' @::@ 'Maybe' 'TopicConfiguration'
+-- * 'gbnrTopicConfiguration' @::@ 'Maybe' 'TopicConfigurationDeprecated'
 --
 getBucketNotificationResponse :: GetBucketNotificationResponse
 getBucketNotificationResponse = GetBucketNotificationResponse
@@ -96,11 +97,11 @@
     lens _gbnrCloudFunctionConfiguration
         (\s a -> s { _gbnrCloudFunctionConfiguration = a })
 
-gbnrQueueConfiguration :: Lens' GetBucketNotificationResponse (Maybe QueueConfiguration)
+gbnrQueueConfiguration :: Lens' GetBucketNotificationResponse (Maybe QueueConfigurationDeprecated)
 gbnrQueueConfiguration =
     lens _gbnrQueueConfiguration (\s a -> s { _gbnrQueueConfiguration = a })
 
-gbnrTopicConfiguration :: Lens' GetBucketNotificationResponse (Maybe TopicConfiguration)
+gbnrTopicConfiguration :: Lens' GetBucketNotificationResponse (Maybe TopicConfigurationDeprecated)
 gbnrTopicConfiguration =
     lens _gbnrTopicConfiguration (\s a -> s { _gbnrTopicConfiguration = a })
 
diff --git a/gen/Network/AWS/S3/GetBucketNotificationConfiguration.hs b/gen/Network/AWS/S3/GetBucketNotificationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/S3/GetBucketNotificationConfiguration.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.S3.GetBucketNotificationConfiguration
+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | Returns the notification configuration of a bucket.
+--
+-- <http://docs.aws.amazon.com/AmazonS3/latest/API/GetBucketNotificationConfiguration.html>
+module Network.AWS.S3.GetBucketNotificationConfiguration
+    (
+    -- * Request
+      GetBucketNotificationConfiguration
+    -- ** Request constructor
+    , getBucketNotificationConfiguration
+    -- ** Request lenses
+    , gbnc1Bucket
+
+    -- * Response
+    , GetBucketNotificationConfigurationResponse
+    -- ** Response constructor
+    , getBucketNotificationConfigurationResponse
+    -- ** Response lenses
+    , gbncrLambdaFunctionConfigurations
+    , gbncrQueueConfigurations
+    , gbncrTopicConfigurations
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.S3
+import Network.AWS.S3.Types
+import qualified GHC.Exts
+
+newtype GetBucketNotificationConfiguration = GetBucketNotificationConfiguration
+    { _gbnc1Bucket :: Text
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+
+-- | 'GetBucketNotificationConfiguration' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'gbnc1Bucket' @::@ 'Text'
+--
+getBucketNotificationConfiguration :: Text -- ^ 'gbnc1Bucket'
+                                   -> GetBucketNotificationConfiguration
+getBucketNotificationConfiguration p1 = GetBucketNotificationConfiguration
+    { _gbnc1Bucket = p1
+    }
+
+-- | Name of the buket to get the notification configuration for.
+gbnc1Bucket :: Lens' GetBucketNotificationConfiguration Text
+gbnc1Bucket = lens _gbnc1Bucket (\s a -> s { _gbnc1Bucket = a })
+
+data GetBucketNotificationConfigurationResponse = GetBucketNotificationConfigurationResponse
+    { _gbncrLambdaFunctionConfigurations :: List "CloudFunctionConfiguration" LambdaFunctionConfiguration
+    , _gbncrQueueConfigurations          :: List "QueueConfiguration" QueueConfiguration
+    , _gbncrTopicConfigurations          :: List "TopicConfiguration" TopicConfiguration
+    } deriving (Eq, Read, Show)
+
+-- | 'GetBucketNotificationConfigurationResponse' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'gbncrLambdaFunctionConfigurations' @::@ ['LambdaFunctionConfiguration']
+--
+-- * 'gbncrQueueConfigurations' @::@ ['QueueConfiguration']
+--
+-- * 'gbncrTopicConfigurations' @::@ ['TopicConfiguration']
+--
+getBucketNotificationConfigurationResponse :: GetBucketNotificationConfigurationResponse
+getBucketNotificationConfigurationResponse = GetBucketNotificationConfigurationResponse
+    { _gbncrTopicConfigurations          = mempty
+    , _gbncrQueueConfigurations          = mempty
+    , _gbncrLambdaFunctionConfigurations = mempty
+    }
+
+gbncrLambdaFunctionConfigurations :: Lens' GetBucketNotificationConfigurationResponse [LambdaFunctionConfiguration]
+gbncrLambdaFunctionConfigurations =
+    lens _gbncrLambdaFunctionConfigurations
+        (\s a -> s { _gbncrLambdaFunctionConfigurations = a })
+            . _List
+
+gbncrQueueConfigurations :: Lens' GetBucketNotificationConfigurationResponse [QueueConfiguration]
+gbncrQueueConfigurations =
+    lens _gbncrQueueConfigurations
+        (\s a -> s { _gbncrQueueConfigurations = a })
+            . _List
+
+gbncrTopicConfigurations :: Lens' GetBucketNotificationConfigurationResponse [TopicConfiguration]
+gbncrTopicConfigurations =
+    lens _gbncrTopicConfigurations
+        (\s a -> s { _gbncrTopicConfigurations = a })
+            . _List
+
+instance ToPath GetBucketNotificationConfiguration where
+    toPath GetBucketNotificationConfiguration{..} = mconcat
+        [ "/"
+        , toText _gbnc1Bucket
+        ]
+
+instance ToQuery GetBucketNotificationConfiguration where
+    toQuery = const "notification"
+
+instance ToHeaders GetBucketNotificationConfiguration
+
+instance ToXMLRoot GetBucketNotificationConfiguration where
+    toXMLRoot = const (namespaced ns "GetBucketNotificationConfiguration" [])
+
+instance ToXML GetBucketNotificationConfiguration
+
+instance AWSRequest GetBucketNotificationConfiguration where
+    type Sv GetBucketNotificationConfiguration = S3
+    type Rs GetBucketNotificationConfiguration = GetBucketNotificationConfigurationResponse
+
+    request  = get
+    response = xmlResponse
+
+instance FromXML GetBucketNotificationConfigurationResponse where
+    parseXML x = GetBucketNotificationConfigurationResponse
+        <$> parseXML x
+        <*> parseXML x
+        <*> parseXML x
diff --git a/gen/Network/AWS/S3/GetBucketReplication.hs b/gen/Network/AWS/S3/GetBucketReplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/S3/GetBucketReplication.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.S3.GetBucketReplication
+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | <http://docs.aws.amazon.com/AmazonS3/latest/API/GetBucketReplication.html>
+module Network.AWS.S3.GetBucketReplication
+    (
+    -- * Request
+      GetBucketReplication
+    -- ** Request constructor
+    , getBucketReplication
+    -- ** Request lenses
+    , gbrBucket
+
+    -- * Response
+    , GetBucketReplicationResponse
+    -- ** Response constructor
+    , getBucketReplicationResponse
+    -- ** Response lenses
+    , gbrrReplicationConfiguration
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.S3
+import Network.AWS.S3.Types
+import qualified GHC.Exts
+
+newtype GetBucketReplication = GetBucketReplication
+    { _gbrBucket :: Text
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+
+-- | 'GetBucketReplication' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'gbrBucket' @::@ 'Text'
+--
+getBucketReplication :: Text -- ^ 'gbrBucket'
+                     -> GetBucketReplication
+getBucketReplication p1 = GetBucketReplication
+    { _gbrBucket = p1
+    }
+
+gbrBucket :: Lens' GetBucketReplication Text
+gbrBucket = lens _gbrBucket (\s a -> s { _gbrBucket = a })
+
+newtype GetBucketReplicationResponse = GetBucketReplicationResponse
+    { _gbrrReplicationConfiguration :: Maybe ReplicationConfiguration
+    } deriving (Eq, Read, Show)
+
+-- | 'GetBucketReplicationResponse' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'gbrrReplicationConfiguration' @::@ 'Maybe' 'ReplicationConfiguration'
+--
+getBucketReplicationResponse :: GetBucketReplicationResponse
+getBucketReplicationResponse = GetBucketReplicationResponse
+    { _gbrrReplicationConfiguration = Nothing
+    }
+
+gbrrReplicationConfiguration :: Lens' GetBucketReplicationResponse (Maybe ReplicationConfiguration)
+gbrrReplicationConfiguration =
+    lens _gbrrReplicationConfiguration
+        (\s a -> s { _gbrrReplicationConfiguration = a })
+
+instance ToPath GetBucketReplication where
+    toPath GetBucketReplication{..} = mconcat
+        [ "/"
+        , toText _gbrBucket
+        ]
+
+instance ToQuery GetBucketReplication where
+    toQuery = const "replication"
+
+instance ToHeaders GetBucketReplication
+
+instance ToXMLRoot GetBucketReplication where
+    toXMLRoot = const (namespaced ns "GetBucketReplication" [])
+
+instance ToXML GetBucketReplication
+
+instance AWSRequest GetBucketReplication where
+    type Sv GetBucketReplication = S3
+    type Rs GetBucketReplication = GetBucketReplicationResponse
+
+    request  = get
+    response = xmlResponse
+
+instance FromXML GetBucketReplicationResponse where
+    parseXML x = GetBucketReplicationResponse
+        <$> x .@? "ReplicationConfiguration"
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
@@ -39,6 +39,7 @@
     , goIfUnmodifiedSince
     , goKey
     , goRange
+    , goRequestPayer
     , goResponseCacheControl
     , goResponseContentDisposition
     , goResponseContentEncoding
@@ -70,6 +71,8 @@
     , gorLastModified
     , gorMetadata
     , gorMissingMeta
+    , gorReplicationStatus
+    , gorRequestCharged
     , gorRestore
     , gorSSECustomerAlgorithm
     , gorSSECustomerKeyMD5
@@ -92,6 +95,7 @@
     , _goIfUnmodifiedSince          :: Maybe RFC822
     , _goKey                        :: Text
     , _goRange                      :: Maybe Text
+    , _goRequestPayer               :: Maybe RequestPayer
     , _goResponseCacheControl       :: Maybe Text
     , _goResponseContentDisposition :: Maybe Text
     , _goResponseContentEncoding    :: Maybe Text
@@ -102,7 +106,7 @@
     , _goSSECustomerKey             :: Maybe (Sensitive Text)
     , _goSSECustomerKeyMD5          :: Maybe Text
     , _goVersionId                  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'GetObject' constructor.
 --
@@ -122,6 +126,8 @@
 --
 -- * 'goRange' @::@ 'Maybe' 'Text'
 --
+-- * 'goRequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 -- * 'goResponseCacheControl' @::@ 'Maybe' 'Text'
 --
 -- * 'goResponseContentDisposition' @::@ 'Maybe' 'Text'
@@ -163,6 +169,7 @@
     , _goSSECustomerAlgorithm       = Nothing
     , _goSSECustomerKey             = Nothing
     , _goSSECustomerKeyMD5          = Nothing
+    , _goRequestPayer               = Nothing
     }
 
 goBucket :: Lens' GetObject Text
@@ -201,6 +208,9 @@
 goRange :: Lens' GetObject (Maybe Text)
 goRange = lens _goRange (\s a -> s { _goRange = a })
 
+goRequestPayer :: Lens' GetObject (Maybe RequestPayer)
+goRequestPayer = lens _goRequestPayer (\s a -> s { _goRequestPayer = a })
+
 -- | Sets the Cache-Control header of the response.
 goResponseCacheControl :: Lens' GetObject (Maybe Text)
 goResponseCacheControl =
@@ -276,6 +286,8 @@
     , _gorLastModified            :: Maybe RFC822
     , _gorMetadata                :: Map (CI Text) Text
     , _gorMissingMeta             :: Maybe Int
+    , _gorReplicationStatus       :: Maybe ReplicationStatus
+    , _gorRequestCharged          :: Maybe RequestCharged
     , _gorRestore                 :: Maybe Text
     , _gorSSECustomerAlgorithm    :: Maybe Text
     , _gorSSECustomerKeyMD5       :: Maybe Text
@@ -319,6 +331,10 @@
 --
 -- * 'gorMissingMeta' @::@ 'Maybe' 'Int'
 --
+-- * 'gorReplicationStatus' @::@ 'Maybe' 'ReplicationStatus'
+--
+-- * 'gorRequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 -- * 'gorRestore' @::@ 'Maybe' 'Text'
 --
 -- * 'gorSSECustomerAlgorithm' @::@ 'Maybe' 'Text'
@@ -358,6 +374,8 @@
     , _gorSSECustomerAlgorithm    = Nothing
     , _gorSSECustomerKeyMD5       = Nothing
     , _gorSSEKMSKeyId             = Nothing
+    , _gorRequestCharged          = Nothing
+    , _gorReplicationStatus       = Nothing
     }
 
 gorAcceptRanges :: Lens' GetObjectResponse (Maybe Text)
@@ -432,6 +450,14 @@
 gorMissingMeta :: Lens' GetObjectResponse (Maybe Int)
 gorMissingMeta = lens _gorMissingMeta (\s a -> s { _gorMissingMeta = a })
 
+gorReplicationStatus :: Lens' GetObjectResponse (Maybe ReplicationStatus)
+gorReplicationStatus =
+    lens _gorReplicationStatus (\s a -> s { _gorReplicationStatus = a })
+
+gorRequestCharged :: Lens' GetObjectResponse (Maybe RequestCharged)
+gorRequestCharged =
+    lens _gorRequestCharged (\s a -> s { _gorRequestCharged = a })
+
 -- | Provides information about object restoration operation and expiration time
 -- of the restored object copy.
 gorRestore :: Lens' GetObjectResponse (Maybe Text)
@@ -503,6 +529,7 @@
         , "x-amz-server-side-encryption-customer-algorithm" =: _goSSECustomerAlgorithm
         , "x-amz-server-side-encryption-customer-key"       =: _goSSECustomerKey
         , "x-amz-server-side-encryption-customer-key-MD5"   =: _goSSECustomerKeyMD5
+        , "x-amz-request-payer"                             =: _goRequestPayer
         ]
 
 instance ToXMLRoot GetObject where
@@ -531,6 +558,8 @@
         <*> h ~:? "Last-Modified"
         <*> h ~:: "x-amz-meta-"
         <*> h ~:? "x-amz-missing-meta"
+        <*> h ~:? "x-amz-replication-status"
+        <*> h ~:? "x-amz-request-charged"
         <*> h ~:? "x-amz-restore"
         <*> h ~:? "x-amz-server-side-encryption-customer-algorithm"
         <*> h ~:? "x-amz-server-side-encryption-customer-key-MD5"
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
@@ -34,6 +34,7 @@
     -- ** Request lenses
     , goaBucket
     , goaKey
+    , goaRequestPayer
     , goaVersionId
 
     -- * Response
@@ -43,6 +44,7 @@
     -- ** Response lenses
     , goarGrants
     , goarOwner
+    , goarRequestCharged
     ) where
 
 import Network.AWS.Prelude
@@ -51,10 +53,11 @@
 import qualified GHC.Exts
 
 data GetObjectAcl = GetObjectAcl
-    { _goaBucket    :: Text
-    , _goaKey       :: Text
-    , _goaVersionId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+    { _goaBucket       :: Text
+    , _goaKey          :: Text
+    , _goaRequestPayer :: Maybe RequestPayer
+    , _goaVersionId    :: Maybe Text
+    } deriving (Eq, Read, Show)
 
 -- | 'GetObjectAcl' constructor.
 --
@@ -64,15 +67,18 @@
 --
 -- * 'goaKey' @::@ 'Text'
 --
+-- * 'goaRequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 -- * 'goaVersionId' @::@ 'Maybe' 'Text'
 --
 getObjectAcl :: Text -- ^ 'goaBucket'
              -> Text -- ^ 'goaKey'
              -> GetObjectAcl
 getObjectAcl p1 p2 = GetObjectAcl
-    { _goaBucket    = p1
-    , _goaKey       = p2
-    , _goaVersionId = Nothing
+    { _goaBucket       = p1
+    , _goaKey          = p2
+    , _goaVersionId    = Nothing
+    , _goaRequestPayer = Nothing
     }
 
 goaBucket :: Lens' GetObjectAcl Text
@@ -81,13 +87,17 @@
 goaKey :: Lens' GetObjectAcl Text
 goaKey = lens _goaKey (\s a -> s { _goaKey = a })
 
+goaRequestPayer :: Lens' GetObjectAcl (Maybe RequestPayer)
+goaRequestPayer = lens _goaRequestPayer (\s a -> s { _goaRequestPayer = a })
+
 -- | VersionId used to reference a specific version of the object.
 goaVersionId :: Lens' GetObjectAcl (Maybe Text)
 goaVersionId = lens _goaVersionId (\s a -> s { _goaVersionId = a })
 
 data GetObjectAclResponse = GetObjectAclResponse
-    { _goarGrants :: List "Grant" Grant
-    , _goarOwner  :: Maybe Owner
+    { _goarGrants         :: List "Grant" Grant
+    , _goarOwner          :: Maybe Owner
+    , _goarRequestCharged :: Maybe RequestCharged
     } deriving (Eq, Read, Show)
 
 -- | 'GetObjectAclResponse' constructor.
@@ -98,10 +108,13 @@
 --
 -- * 'goarOwner' @::@ 'Maybe' 'Owner'
 --
+-- * 'goarRequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 getObjectAclResponse :: GetObjectAclResponse
 getObjectAclResponse = GetObjectAclResponse
-    { _goarOwner  = Nothing
-    , _goarGrants = mempty
+    { _goarOwner          = Nothing
+    , _goarGrants         = mempty
+    , _goarRequestCharged = Nothing
     }
 
 -- | A list of grants.
@@ -111,6 +124,10 @@
 goarOwner :: Lens' GetObjectAclResponse (Maybe Owner)
 goarOwner = lens _goarOwner (\s a -> s { _goarOwner = a })
 
+goarRequestCharged :: Lens' GetObjectAclResponse (Maybe RequestCharged)
+goarRequestCharged =
+    lens _goarRequestCharged (\s a -> s { _goarRequestCharged = a })
+
 instance ToPath GetObjectAcl where
     toPath GetObjectAcl{..} = mconcat
         [ "/"
@@ -125,7 +142,10 @@
         , "versionId" =? _goaVersionId
         ]
 
-instance ToHeaders GetObjectAcl
+instance ToHeaders GetObjectAcl where
+    toHeaders GetObjectAcl{..} = mconcat
+        [ "x-amz-request-payer" =: _goaRequestPayer
+        ]
 
 instance ToXMLRoot GetObjectAcl where
     toXMLRoot = const (namespaced ns "GetObjectAcl" [])
@@ -137,9 +157,7 @@
     type Rs GetObjectAcl = GetObjectAclResponse
 
     request  = get
-    response = xmlResponse
-
-instance FromXML GetObjectAclResponse where
-    parseXML x = GetObjectAclResponse
+    response = xmlHeaderResponse $ \h x -> GetObjectAclResponse
         <$> x .@? "AccessControlList" .!@ mempty
         <*> x .@? "Owner"
+        <*> h ~:? "x-amz-request-charged"
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
@@ -34,6 +34,7 @@
     -- ** Request lenses
     , gotBucket
     , gotKey
+    , gotRequestPayer
 
     -- * Response
     , GetObjectTorrentResponse
@@ -41,6 +42,7 @@
     , getObjectTorrentResponse
     -- ** Response lenses
     , gotrBody
+    , gotrRequestCharged
     ) where
 
 import Network.AWS.Prelude
@@ -49,9 +51,10 @@
 import qualified GHC.Exts
 
 data GetObjectTorrent = GetObjectTorrent
-    { _gotBucket :: Text
-    , _gotKey    :: Text
-    } deriving (Eq, Ord, Read, Show)
+    { _gotBucket       :: Text
+    , _gotKey          :: Text
+    , _gotRequestPayer :: Maybe RequestPayer
+    } deriving (Eq, Read, Show)
 
 -- | 'GetObjectTorrent' constructor.
 --
@@ -61,12 +64,15 @@
 --
 -- * 'gotKey' @::@ 'Text'
 --
+-- * 'gotRequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 getObjectTorrent :: Text -- ^ 'gotBucket'
                  -> Text -- ^ 'gotKey'
                  -> GetObjectTorrent
 getObjectTorrent p1 p2 = GetObjectTorrent
-    { _gotBucket = p1
-    , _gotKey    = p2
+    { _gotBucket       = p1
+    , _gotKey          = p2
+    , _gotRequestPayer = Nothing
     }
 
 gotBucket :: Lens' GetObjectTorrent Text
@@ -75,8 +81,12 @@
 gotKey :: Lens' GetObjectTorrent Text
 gotKey = lens _gotKey (\s a -> s { _gotKey = a })
 
-newtype GetObjectTorrentResponse = GetObjectTorrentResponse
-    { _gotrBody :: RsBody
+gotRequestPayer :: Lens' GetObjectTorrent (Maybe RequestPayer)
+gotRequestPayer = lens _gotRequestPayer (\s a -> s { _gotRequestPayer = a })
+
+data GetObjectTorrentResponse = GetObjectTorrentResponse
+    { _gotrBody           :: RsBody
+    , _gotrRequestCharged :: Maybe RequestCharged
     } deriving (Show)
 
 -- | 'GetObjectTorrentResponse' constructor.
@@ -85,15 +95,22 @@
 --
 -- * 'gotrBody' @::@ 'RsBody'
 --
+-- * 'gotrRequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 getObjectTorrentResponse :: RsBody -- ^ 'gotrBody'
                          -> GetObjectTorrentResponse
 getObjectTorrentResponse p1 = GetObjectTorrentResponse
-    { _gotrBody = p1
+    { _gotrBody           = p1
+    , _gotrRequestCharged = Nothing
     }
 
 gotrBody :: Lens' GetObjectTorrentResponse RsBody
 gotrBody = lens _gotrBody (\s a -> s { _gotrBody = a })
 
+gotrRequestCharged :: Lens' GetObjectTorrentResponse (Maybe RequestCharged)
+gotrRequestCharged =
+    lens _gotrRequestCharged (\s a -> s { _gotrRequestCharged = a })
+
 instance ToPath GetObjectTorrent where
     toPath GetObjectTorrent{..} = mconcat
         [ "/"
@@ -105,7 +122,10 @@
 instance ToQuery GetObjectTorrent where
     toQuery = const "torrent"
 
-instance ToHeaders GetObjectTorrent
+instance ToHeaders GetObjectTorrent where
+    toHeaders GetObjectTorrent{..} = mconcat
+        [ "x-amz-request-payer" =: _gotRequestPayer
+        ]
 
 instance ToXMLRoot GetObjectTorrent where
     toXMLRoot = const (namespaced ns "GetObjectTorrent" [])
@@ -117,5 +137,6 @@
     type Rs GetObjectTorrent = GetObjectTorrentResponse
 
     request  = get
-    response = bodyResponse $ \_ _ b -> GetObjectTorrentResponse
+    response = bodyResponse $ \h s b -> GetObjectTorrentResponse
         <$> pure (RsBody b)
+        <*> h ~:? "x-amz-request-charged"
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
@@ -41,6 +41,7 @@
     , hoIfUnmodifiedSince
     , hoKey
     , hoRange
+    , hoRequestPayer
     , hoSSECustomerAlgorithm
     , hoSSECustomerKey
     , hoSSECustomerKeyMD5
@@ -65,6 +66,8 @@
     , horLastModified
     , horMetadata
     , horMissingMeta
+    , horReplicationStatus
+    , horRequestCharged
     , horRestore
     , horSSECustomerAlgorithm
     , horSSECustomerKeyMD5
@@ -87,11 +90,12 @@
     , _hoIfUnmodifiedSince    :: Maybe RFC822
     , _hoKey                  :: Text
     , _hoRange                :: Maybe Text
+    , _hoRequestPayer         :: Maybe RequestPayer
     , _hoSSECustomerAlgorithm :: Maybe Text
     , _hoSSECustomerKey       :: Maybe (Sensitive Text)
     , _hoSSECustomerKeyMD5    :: Maybe Text
     , _hoVersionId            :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'HeadObject' constructor.
 --
@@ -111,6 +115,8 @@
 --
 -- * 'hoRange' @::@ 'Maybe' 'Text'
 --
+-- * 'hoRequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 -- * 'hoSSECustomerAlgorithm' @::@ 'Maybe' 'Text'
 --
 -- * 'hoSSECustomerKey' @::@ 'Maybe' 'Text'
@@ -134,6 +140,7 @@
     , _hoSSECustomerAlgorithm = Nothing
     , _hoSSECustomerKey       = Nothing
     , _hoSSECustomerKeyMD5    = Nothing
+    , _hoRequestPayer         = Nothing
     }
 
 hoBucket :: Lens' HeadObject Text
@@ -172,6 +179,9 @@
 hoRange :: Lens' HeadObject (Maybe Text)
 hoRange = lens _hoRange (\s a -> s { _hoRange = a })
 
+hoRequestPayer :: Lens' HeadObject (Maybe RequestPayer)
+hoRequestPayer = lens _hoRequestPayer (\s a -> s { _hoRequestPayer = a })
+
 -- | Specifies the algorithm to use to when encrypting the object (e.g., AES256,
 -- aws:kms).
 hoSSECustomerAlgorithm :: Lens' HeadObject (Maybe Text)
@@ -212,6 +222,8 @@
     , _horLastModified            :: Maybe RFC822
     , _horMetadata                :: Map (CI Text) Text
     , _horMissingMeta             :: Maybe Int
+    , _horReplicationStatus       :: Maybe ReplicationStatus
+    , _horRequestCharged          :: Maybe RequestCharged
     , _horRestore                 :: Maybe Text
     , _horSSECustomerAlgorithm    :: Maybe Text
     , _horSSECustomerKeyMD5       :: Maybe Text
@@ -253,6 +265,10 @@
 --
 -- * 'horMissingMeta' @::@ 'Maybe' 'Int'
 --
+-- * 'horReplicationStatus' @::@ 'Maybe' 'ReplicationStatus'
+--
+-- * 'horRequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 -- * 'horRestore' @::@ 'Maybe' 'Text'
 --
 -- * 'horSSECustomerAlgorithm' @::@ 'Maybe' 'Text'
@@ -290,6 +306,8 @@
     , _horSSECustomerAlgorithm    = Nothing
     , _horSSECustomerKeyMD5       = Nothing
     , _horSSEKMSKeyId             = Nothing
+    , _horRequestCharged          = Nothing
+    , _horReplicationStatus       = Nothing
     }
 
 horAcceptRanges :: Lens' HeadObjectResponse (Maybe Text)
@@ -360,6 +378,14 @@
 horMissingMeta :: Lens' HeadObjectResponse (Maybe Int)
 horMissingMeta = lens _horMissingMeta (\s a -> s { _horMissingMeta = a })
 
+horReplicationStatus :: Lens' HeadObjectResponse (Maybe ReplicationStatus)
+horReplicationStatus =
+    lens _horReplicationStatus (\s a -> s { _horReplicationStatus = a })
+
+horRequestCharged :: Lens' HeadObjectResponse (Maybe RequestCharged)
+horRequestCharged =
+    lens _horRequestCharged (\s a -> s { _horRequestCharged = a })
+
 -- | Provides information about object restoration operation and expiration time
 -- of the restored object copy.
 horRestore :: Lens' HeadObjectResponse (Maybe Text)
@@ -423,6 +449,7 @@
         , "x-amz-server-side-encryption-customer-algorithm" =: _hoSSECustomerAlgorithm
         , "x-amz-server-side-encryption-customer-key"       =: _hoSSECustomerKey
         , "x-amz-server-side-encryption-customer-key-MD5"   =: _hoSSECustomerKeyMD5
+        , "x-amz-request-payer"                             =: _hoRequestPayer
         ]
 
 instance ToXMLRoot HeadObject where
@@ -450,6 +477,8 @@
         <*> h ~:? "Last-Modified"
         <*> h ~:: "x-amz-meta-"
         <*> h ~:? "x-amz-missing-meta"
+        <*> h ~:? "x-amz-replication-status"
+        <*> h ~:? "x-amz-request-charged"
         <*> h ~:? "x-amz-restore"
         <*> h ~:? "x-amz-server-side-encryption-customer-algorithm"
         <*> h ~:? "x-amz-server-side-encryption-customer-key-MD5"
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
@@ -36,6 +36,7 @@
     , lpKey
     , lpMaxParts
     , lpPartNumberMarker
+    , lpRequestPayer
     , lpUploadId
 
     -- * Response
@@ -52,6 +53,7 @@
     , lprOwner
     , lprPartNumberMarker
     , lprParts
+    , lprRequestCharged
     , lprStorageClass
     , lprUploadId
     ) where
@@ -66,8 +68,9 @@
     , _lpKey              :: Text
     , _lpMaxParts         :: Maybe Int
     , _lpPartNumberMarker :: Maybe Int
+    , _lpRequestPayer     :: Maybe RequestPayer
     , _lpUploadId         :: Text
-    } deriving (Eq, Ord, Read, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ListParts' constructor.
 --
@@ -81,6 +84,8 @@
 --
 -- * 'lpPartNumberMarker' @::@ 'Maybe' 'Int'
 --
+-- * 'lpRequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 -- * 'lpUploadId' @::@ 'Text'
 --
 listParts :: Text -- ^ 'lpBucket'
@@ -93,6 +98,7 @@
     , _lpUploadId         = p3
     , _lpMaxParts         = Nothing
     , _lpPartNumberMarker = Nothing
+    , _lpRequestPayer     = Nothing
     }
 
 lpBucket :: Lens' ListParts Text
@@ -111,6 +117,9 @@
 lpPartNumberMarker =
     lens _lpPartNumberMarker (\s a -> s { _lpPartNumberMarker = a })
 
+lpRequestPayer :: Lens' ListParts (Maybe RequestPayer)
+lpRequestPayer = lens _lpRequestPayer (\s a -> s { _lpRequestPayer = a })
+
 -- | Upload ID identifying the multipart upload whose parts are being listed.
 lpUploadId :: Lens' ListParts Text
 lpUploadId = lens _lpUploadId (\s a -> s { _lpUploadId = a })
@@ -125,6 +134,7 @@
     , _lprOwner                :: Maybe Owner
     , _lprPartNumberMarker     :: Maybe Int
     , _lprParts                :: List "Part" Part
+    , _lprRequestCharged       :: Maybe RequestCharged
     , _lprStorageClass         :: Maybe StorageClass
     , _lprUploadId             :: Maybe Text
     } deriving (Eq, Read, Show)
@@ -151,6 +161,8 @@
 --
 -- * 'lprParts' @::@ ['Part']
 --
+-- * 'lprRequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 -- * 'lprStorageClass' @::@ 'Maybe' 'StorageClass'
 --
 -- * 'lprUploadId' @::@ 'Maybe' 'Text'
@@ -168,6 +180,7 @@
     , _lprInitiator            = Nothing
     , _lprOwner                = Nothing
     , _lprStorageClass         = Nothing
+    , _lprRequestCharged       = Nothing
     }
 
 -- | Name of the bucket to which the multipart upload was initiated.
@@ -208,6 +221,10 @@
 lprParts :: Lens' ListPartsResponse [Part]
 lprParts = lens _lprParts (\s a -> s { _lprParts = a }) . _List
 
+lprRequestCharged :: Lens' ListPartsResponse (Maybe RequestCharged)
+lprRequestCharged =
+    lens _lprRequestCharged (\s a -> s { _lprRequestCharged = a })
+
 -- | The class of storage used to store the object.
 lprStorageClass :: Lens' ListPartsResponse (Maybe StorageClass)
 lprStorageClass = lens _lprStorageClass (\s a -> s { _lprStorageClass = a })
@@ -231,7 +248,10 @@
         , "uploadId"           =? _lpUploadId
         ]
 
-instance ToHeaders ListParts
+instance ToHeaders ListParts where
+    toHeaders ListParts{..} = mconcat
+        [ "x-amz-request-payer" =: _lpRequestPayer
+        ]
 
 instance ToXMLRoot ListParts where
     toXMLRoot = const (namespaced ns "ListParts" [])
@@ -243,10 +263,7 @@
     type Rs ListParts = ListPartsResponse
 
     request  = get
-    response = xmlResponse
-
-instance FromXML ListPartsResponse where
-    parseXML x = ListPartsResponse
+    response = xmlHeaderResponse $ \h x -> ListPartsResponse
         <$> x .@? "Bucket"
         <*> x .@? "Initiator"
         <*> x .@? "IsTruncated"
@@ -255,7 +272,8 @@
         <*> x .@? "NextPartNumberMarker"
         <*> x .@? "Owner"
         <*> x .@? "PartNumberMarker"
-        <*> parseXML x
+        <*> x .@? "Part" .!@ mempty
+        <*> h ~:? "x-amz-request-charged"
         <*> x .@? "StorageClass"
         <*> x .@? "UploadId"
 
diff --git a/gen/Network/AWS/S3/PutBucketNotification.hs b/gen/Network/AWS/S3/PutBucketNotification.hs
--- a/gen/Network/AWS/S3/PutBucketNotification.hs
+++ b/gen/Network/AWS/S3/PutBucketNotification.hs
@@ -22,7 +22,7 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | Enables notifications of specified events for a bucket.
+-- | Deprecated, see the PutBucketNotificationConfiguraiton operation.
 --
 -- <http://docs.aws.amazon.com/AmazonS3/latest/API/PutBucketNotification.html>
 module Network.AWS.S3.PutBucketNotification
@@ -50,7 +50,7 @@
 data PutBucketNotification = PutBucketNotification
     { _pbnBucket                    :: Text
     , _pbnContentMD5                :: Maybe Text
-    , _pbnNotificationConfiguration :: NotificationConfiguration
+    , _pbnNotificationConfiguration :: NotificationConfigurationDeprecated
     } deriving (Eq, Read, Show)
 
 -- | 'PutBucketNotification' constructor.
@@ -61,10 +61,10 @@
 --
 -- * 'pbnContentMD5' @::@ 'Maybe' 'Text'
 --
--- * 'pbnNotificationConfiguration' @::@ 'NotificationConfiguration'
+-- * 'pbnNotificationConfiguration' @::@ 'NotificationConfigurationDeprecated'
 --
 putBucketNotification :: Text -- ^ 'pbnBucket'
-                      -> NotificationConfiguration -- ^ 'pbnNotificationConfiguration'
+                      -> NotificationConfigurationDeprecated -- ^ 'pbnNotificationConfiguration'
                       -> PutBucketNotification
 putBucketNotification p1 p2 = PutBucketNotification
     { _pbnBucket                    = p1
@@ -78,7 +78,7 @@
 pbnContentMD5 :: Lens' PutBucketNotification (Maybe Text)
 pbnContentMD5 = lens _pbnContentMD5 (\s a -> s { _pbnContentMD5 = a })
 
-pbnNotificationConfiguration :: Lens' PutBucketNotification NotificationConfiguration
+pbnNotificationConfiguration :: Lens' PutBucketNotification NotificationConfigurationDeprecated
 pbnNotificationConfiguration =
     lens _pbnNotificationConfiguration
         (\s a -> s { _pbnNotificationConfiguration = a })
diff --git a/gen/Network/AWS/S3/PutBucketNotificationConfiguration.hs b/gen/Network/AWS/S3/PutBucketNotificationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/S3/PutBucketNotificationConfiguration.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.S3.PutBucketNotificationConfiguration
+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | Enables notifications of specified events for a bucket.
+--
+-- <http://docs.aws.amazon.com/AmazonS3/latest/API/PutBucketNotificationConfiguration.html>
+module Network.AWS.S3.PutBucketNotificationConfiguration
+    (
+    -- * Request
+      PutBucketNotificationConfiguration
+    -- ** Request constructor
+    , putBucketNotificationConfiguration
+    -- ** Request lenses
+    , pbncBucket
+    , pbncNotificationConfiguration
+
+    -- * Response
+    , PutBucketNotificationConfigurationResponse
+    -- ** Response constructor
+    , putBucketNotificationConfigurationResponse
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.S3
+import Network.AWS.S3.Types
+import qualified GHC.Exts
+
+data PutBucketNotificationConfiguration = PutBucketNotificationConfiguration
+    { _pbncBucket                    :: Text
+    , _pbncNotificationConfiguration :: NotificationConfiguration
+    } deriving (Eq, Read, Show)
+
+-- | 'PutBucketNotificationConfiguration' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'pbncBucket' @::@ 'Text'
+--
+-- * 'pbncNotificationConfiguration' @::@ 'NotificationConfiguration'
+--
+putBucketNotificationConfiguration :: Text -- ^ 'pbncBucket'
+                                   -> NotificationConfiguration -- ^ 'pbncNotificationConfiguration'
+                                   -> PutBucketNotificationConfiguration
+putBucketNotificationConfiguration p1 p2 = PutBucketNotificationConfiguration
+    { _pbncBucket                    = p1
+    , _pbncNotificationConfiguration = p2
+    }
+
+pbncBucket :: Lens' PutBucketNotificationConfiguration Text
+pbncBucket = lens _pbncBucket (\s a -> s { _pbncBucket = a })
+
+pbncNotificationConfiguration :: Lens' PutBucketNotificationConfiguration NotificationConfiguration
+pbncNotificationConfiguration =
+    lens _pbncNotificationConfiguration
+        (\s a -> s { _pbncNotificationConfiguration = a })
+
+data PutBucketNotificationConfigurationResponse = PutBucketNotificationConfigurationResponse
+    deriving (Eq, Ord, Read, Show, Generic)
+
+-- | 'PutBucketNotificationConfigurationResponse' constructor.
+putBucketNotificationConfigurationResponse :: PutBucketNotificationConfigurationResponse
+putBucketNotificationConfigurationResponse = PutBucketNotificationConfigurationResponse
+
+instance ToPath PutBucketNotificationConfiguration where
+    toPath PutBucketNotificationConfiguration{..} = mconcat
+        [ "/"
+        , toText _pbncBucket
+        ]
+
+instance ToQuery PutBucketNotificationConfiguration where
+    toQuery = const "notification"
+
+instance ToHeaders PutBucketNotificationConfiguration
+
+instance ToXMLRoot PutBucketNotificationConfiguration where
+    toXMLRoot PutBucketNotificationConfiguration{..} = namespaced ns "PutBucketNotificationConfiguration"
+        [ "NotificationConfiguration" =@ _pbncNotificationConfiguration
+        ]
+
+instance ToXML PutBucketNotificationConfiguration
+
+instance AWSRequest PutBucketNotificationConfiguration where
+    type Sv PutBucketNotificationConfiguration = S3
+    type Rs PutBucketNotificationConfiguration = PutBucketNotificationConfigurationResponse
+
+    request  = put
+    response = nullResponse PutBucketNotificationConfigurationResponse
diff --git a/gen/Network/AWS/S3/PutBucketReplication.hs b/gen/Network/AWS/S3/PutBucketReplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/S3/PutBucketReplication.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.S3.PutBucketReplication
+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | Creates a new replication configuration (or replaces an existing one, if
+-- present).
+--
+-- <http://docs.aws.amazon.com/AmazonS3/latest/API/PutBucketReplication.html>
+module Network.AWS.S3.PutBucketReplication
+    (
+    -- * Request
+      PutBucketReplication
+    -- ** Request constructor
+    , putBucketReplication
+    -- ** Request lenses
+    , pbrBucket
+    , pbrContentMD5
+    , pbrReplicationConfiguration
+
+    -- * Response
+    , PutBucketReplicationResponse
+    -- ** Response constructor
+    , putBucketReplicationResponse
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.S3
+import Network.AWS.S3.Types
+import qualified GHC.Exts
+
+data PutBucketReplication = PutBucketReplication
+    { _pbrBucket                   :: Text
+    , _pbrContentMD5               :: Maybe Text
+    , _pbrReplicationConfiguration :: ReplicationConfiguration
+    } deriving (Eq, Read, Show)
+
+-- | 'PutBucketReplication' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'pbrBucket' @::@ 'Text'
+--
+-- * 'pbrContentMD5' @::@ 'Maybe' 'Text'
+--
+-- * 'pbrReplicationConfiguration' @::@ 'ReplicationConfiguration'
+--
+putBucketReplication :: Text -- ^ 'pbrBucket'
+                     -> ReplicationConfiguration -- ^ 'pbrReplicationConfiguration'
+                     -> PutBucketReplication
+putBucketReplication p1 p2 = PutBucketReplication
+    { _pbrBucket                   = p1
+    , _pbrReplicationConfiguration = p2
+    , _pbrContentMD5               = Nothing
+    }
+
+pbrBucket :: Lens' PutBucketReplication Text
+pbrBucket = lens _pbrBucket (\s a -> s { _pbrBucket = a })
+
+pbrContentMD5 :: Lens' PutBucketReplication (Maybe Text)
+pbrContentMD5 = lens _pbrContentMD5 (\s a -> s { _pbrContentMD5 = a })
+
+pbrReplicationConfiguration :: Lens' PutBucketReplication ReplicationConfiguration
+pbrReplicationConfiguration =
+    lens _pbrReplicationConfiguration
+        (\s a -> s { _pbrReplicationConfiguration = a })
+
+data PutBucketReplicationResponse = PutBucketReplicationResponse
+    deriving (Eq, Ord, Read, Show, Generic)
+
+-- | 'PutBucketReplicationResponse' constructor.
+putBucketReplicationResponse :: PutBucketReplicationResponse
+putBucketReplicationResponse = PutBucketReplicationResponse
+
+instance ToPath PutBucketReplication where
+    toPath PutBucketReplication{..} = mconcat
+        [ "/"
+        , toText _pbrBucket
+        ]
+
+instance ToQuery PutBucketReplication where
+    toQuery = const "replication"
+
+instance ToHeaders PutBucketReplication where
+    toHeaders PutBucketReplication{..} = mconcat
+        [ "Content-MD5" =: _pbrContentMD5
+        ]
+
+instance ToXMLRoot PutBucketReplication where
+    toXMLRoot = extractRoot ns . toXML . _pbrReplicationConfiguration
+
+instance ToXML PutBucketReplication
+
+instance AWSRequest PutBucketReplication where
+    type Sv PutBucketReplication = S3
+    type Rs PutBucketReplication = PutBucketReplicationResponse
+
+    request  = put
+    response = nullResponse PutBucketReplicationResponse
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
@@ -25,7 +25,9 @@
 -- | Sets the request payment configuration for a bucket. By default, the bucket
 -- owner pays for downloads from the bucket. This configuration parameter
 -- enables the bucket owner (only) to specify that the person requesting the
--- download will be charged for the download.
+-- download will be charged for the download. Documentation on requester pays
+-- buckets can be found at
+-- http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html
 --
 -- <http://docs.aws.amazon.com/AmazonS3/latest/API/PutBucketRequestPayment.html>
 module Network.AWS.S3.PutBucketRequestPayment
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
@@ -49,6 +49,7 @@
     , poGrantWriteACP
     , poKey
     , poMetadata
+    , poRequestPayer
     , poSSECustomerAlgorithm
     , poSSECustomerKey
     , poSSECustomerKeyMD5
@@ -64,6 +65,7 @@
     -- ** Response lenses
     , porETag
     , porExpiration
+    , porRequestCharged
     , porSSECustomerAlgorithm
     , porSSECustomerKeyMD5
     , porSSEKMSKeyId
@@ -94,6 +96,7 @@
     , _poGrantWriteACP           :: Maybe Text
     , _poKey                     :: Text
     , _poMetadata                :: Map (CI Text) Text
+    , _poRequestPayer            :: Maybe RequestPayer
     , _poSSECustomerAlgorithm    :: Maybe Text
     , _poSSECustomerKey          :: Maybe (Sensitive Text)
     , _poSSECustomerKeyMD5       :: Maybe Text
@@ -141,6 +144,8 @@
 --
 -- * 'poMetadata' @::@ 'HashMap' ('CI' 'Text') 'Text'
 --
+-- * 'poRequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 -- * 'poSSECustomerAlgorithm' @::@ 'Maybe' 'Text'
 --
 -- * 'poSSECustomerKey' @::@ 'Maybe' 'Text'
@@ -184,6 +189,7 @@
     , _poSSECustomerKey          = Nothing
     , _poSSECustomerKeyMD5       = Nothing
     , _poSSEKMSKeyId             = Nothing
+    , _poRequestPayer            = Nothing
     }
 
 -- | The canned ACL to apply to the object.
@@ -258,6 +264,9 @@
 poMetadata :: Lens' PutObject (HashMap (CI Text) Text)
 poMetadata = lens _poMetadata (\s a -> s { _poMetadata = a }) . _Map
 
+poRequestPayer :: Lens' PutObject (Maybe RequestPayer)
+poRequestPayer = lens _poRequestPayer (\s a -> s { _poRequestPayer = a })
+
 -- | Specifies the algorithm to use to when encrypting the object (e.g., AES256,
 -- aws:kms).
 poSSECustomerAlgorithm :: Lens' PutObject (Maybe Text)
@@ -308,6 +317,7 @@
 data PutObjectResponse = PutObjectResponse
     { _porETag                 :: Maybe Text
     , _porExpiration           :: Maybe Text
+    , _porRequestCharged       :: Maybe RequestCharged
     , _porSSECustomerAlgorithm :: Maybe Text
     , _porSSECustomerKeyMD5    :: Maybe Text
     , _porSSEKMSKeyId          :: Maybe (Sensitive Text)
@@ -323,6 +333,8 @@
 --
 -- * 'porExpiration' @::@ 'Maybe' 'Text'
 --
+-- * 'porRequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 -- * 'porSSECustomerAlgorithm' @::@ 'Maybe' 'Text'
 --
 -- * 'porSSECustomerKeyMD5' @::@ 'Maybe' 'Text'
@@ -342,6 +354,7 @@
     , _porSSECustomerAlgorithm = Nothing
     , _porSSECustomerKeyMD5    = Nothing
     , _porSSEKMSKeyId          = Nothing
+    , _porRequestCharged       = Nothing
     }
 
 -- | Entity tag for the uploaded object.
@@ -353,6 +366,10 @@
 porExpiration :: Lens' PutObjectResponse (Maybe Text)
 porExpiration = lens _porExpiration (\s a -> s { _porExpiration = a })
 
+porRequestCharged :: Lens' PutObjectResponse (Maybe RequestCharged)
+porRequestCharged =
+    lens _porRequestCharged (\s a -> s { _porRequestCharged = a })
+
 -- | If server-side encryption with a customer-provided encryption key was
 -- requested, the response will include this header confirming the encryption
 -- algorithm used.
@@ -416,6 +433,7 @@
         , "x-amz-server-side-encryption-customer-key"       =: _poSSECustomerKey
         , "x-amz-server-side-encryption-customer-key-MD5"   =: _poSSECustomerKeyMD5
         , "x-amz-server-side-encryption-aws-kms-key-id"     =: _poSSEKMSKeyId
+        , "x-amz-request-payer"                             =: _poRequestPayer
         ]
 
 instance ToBody PutObject where
@@ -429,6 +447,7 @@
     response = headerResponse $ \h -> PutObjectResponse
         <$> h ~:? "ETag"
         <*> h ~:? "x-amz-expiration"
+        <*> h ~:? "x-amz-request-charged"
         <*> h ~:? "x-amz-server-side-encryption-customer-algorithm"
         <*> h ~:? "x-amz-server-side-encryption-customer-key-MD5"
         <*> h ~:? "x-amz-server-side-encryption-aws-kms-key-id"
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
@@ -43,11 +43,14 @@
     , poaGrantWrite
     , poaGrantWriteACP
     , poaKey
+    , poaRequestPayer
 
     -- * Response
     , PutObjectAclResponse
     -- ** Response constructor
     , putObjectAclResponse
+    -- ** Response lenses
+    , poarRequestCharged
     ) where
 
 import Network.AWS.Prelude
@@ -66,6 +69,7 @@
     , _poaGrantWrite          :: Maybe Text
     , _poaGrantWriteACP       :: Maybe Text
     , _poaKey                 :: Text
+    , _poaRequestPayer        :: Maybe RequestPayer
     } deriving (Eq, Read, Show)
 
 -- | 'PutObjectAcl' constructor.
@@ -92,6 +96,8 @@
 --
 -- * 'poaKey' @::@ 'Text'
 --
+-- * 'poaRequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 putObjectAcl :: Text -- ^ 'poaBucket'
              -> Text -- ^ 'poaKey'
              -> PutObjectAcl
@@ -106,6 +112,7 @@
     , _poaGrantReadACP        = Nothing
     , _poaGrantWrite          = Nothing
     , _poaGrantWriteACP       = Nothing
+    , _poaRequestPayer        = Nothing
     }
 
 -- | The canned ACL to apply to the object.
@@ -147,13 +154,28 @@
 poaKey :: Lens' PutObjectAcl Text
 poaKey = lens _poaKey (\s a -> s { _poaKey = a })
 
-data PutObjectAclResponse = PutObjectAclResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+poaRequestPayer :: Lens' PutObjectAcl (Maybe RequestPayer)
+poaRequestPayer = lens _poaRequestPayer (\s a -> s { _poaRequestPayer = a })
 
+newtype PutObjectAclResponse = PutObjectAclResponse
+    { _poarRequestCharged :: Maybe RequestCharged
+    } deriving (Eq, Read, Show)
+
 -- | 'PutObjectAclResponse' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'poarRequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 putObjectAclResponse :: PutObjectAclResponse
 putObjectAclResponse = PutObjectAclResponse
+    { _poarRequestCharged = Nothing
+    }
 
+poarRequestCharged :: Lens' PutObjectAclResponse (Maybe RequestCharged)
+poarRequestCharged =
+    lens _poarRequestCharged (\s a -> s { _poarRequestCharged = a })
+
 instance ToPath PutObjectAcl where
     toPath PutObjectAcl{..} = mconcat
         [ "/"
@@ -174,6 +196,7 @@
         , "x-amz-grant-read-acp"     =: _poaGrantReadACP
         , "x-amz-grant-write"        =: _poaGrantWrite
         , "x-amz-grant-write-acp"    =: _poaGrantWriteACP
+        , "x-amz-request-payer"      =: _poaRequestPayer
         ]
 
 instance ToXMLRoot PutObjectAcl where
@@ -186,4 +209,5 @@
     type Rs PutObjectAcl = PutObjectAclResponse
 
     request  = put
-    response = nullResponse PutObjectAclResponse
+    response = headerResponse $ \h -> PutObjectAclResponse
+        <$> h ~:? "x-amz-request-charged"
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
@@ -34,6 +34,7 @@
     -- ** Request lenses
     , roBucket
     , roKey
+    , roRequestPayer
     , roRestoreRequest
     , roVersionId
 
@@ -41,6 +42,8 @@
     , RestoreObjectResponse
     -- ** Response constructor
     , restoreObjectResponse
+    -- ** Response lenses
+    , rorRequestCharged
     ) where
 
 import Network.AWS.Prelude
@@ -51,6 +54,7 @@
 data RestoreObject = RestoreObject
     { _roBucket         :: Text
     , _roKey            :: Text
+    , _roRequestPayer   :: Maybe RequestPayer
     , _roRestoreRequest :: Maybe RestoreRequest
     , _roVersionId      :: Maybe Text
     } deriving (Eq, Read, Show)
@@ -63,6 +67,8 @@
 --
 -- * 'roKey' @::@ 'Text'
 --
+-- * 'roRequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 -- * 'roRestoreRequest' @::@ 'Maybe' 'RestoreRequest'
 --
 -- * 'roVersionId' @::@ 'Maybe' 'Text'
@@ -75,6 +81,7 @@
     , _roKey            = p2
     , _roVersionId      = Nothing
     , _roRestoreRequest = Nothing
+    , _roRequestPayer   = Nothing
     }
 
 roBucket :: Lens' RestoreObject Text
@@ -83,19 +90,34 @@
 roKey :: Lens' RestoreObject Text
 roKey = lens _roKey (\s a -> s { _roKey = a })
 
+roRequestPayer :: Lens' RestoreObject (Maybe RequestPayer)
+roRequestPayer = lens _roRequestPayer (\s a -> s { _roRequestPayer = a })
+
 roRestoreRequest :: Lens' RestoreObject (Maybe RestoreRequest)
 roRestoreRequest = lens _roRestoreRequest (\s a -> s { _roRestoreRequest = a })
 
 roVersionId :: Lens' RestoreObject (Maybe Text)
 roVersionId = lens _roVersionId (\s a -> s { _roVersionId = a })
 
-data RestoreObjectResponse = RestoreObjectResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+newtype RestoreObjectResponse = RestoreObjectResponse
+    { _rorRequestCharged :: Maybe RequestCharged
+    } deriving (Eq, Read, Show)
 
 -- | 'RestoreObjectResponse' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'rorRequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 restoreObjectResponse :: RestoreObjectResponse
 restoreObjectResponse = RestoreObjectResponse
+    { _rorRequestCharged = Nothing
+    }
 
+rorRequestCharged :: Lens' RestoreObjectResponse (Maybe RequestCharged)
+rorRequestCharged =
+    lens _rorRequestCharged (\s a -> s { _rorRequestCharged = a })
+
 instance ToPath RestoreObject where
     toPath RestoreObject{..} = mconcat
         [ "/"
@@ -110,12 +132,13 @@
         , "versionId" =? _roVersionId
         ]
 
-instance ToHeaders RestoreObject
+instance ToHeaders RestoreObject where
+    toHeaders RestoreObject{..} = mconcat
+        [ "x-amz-request-payer" =: _roRequestPayer
+        ]
 
 instance ToXMLRoot RestoreObject where
-    toXMLRoot RestoreObject{..} = namespaced ns "RestoreObject"
-        [ "RestoreRequest" =@ _roRestoreRequest
-        ]
+    toXMLRoot = extractRoot ns . toXML . _roRestoreRequest
 
 instance ToXML RestoreObject
 
@@ -124,4 +147,5 @@
     type Rs RestoreObject = RestoreObjectResponse
 
     request  = post
-    response = nullResponse RestoreObjectResponse
+    response = headerResponse $ \h -> RestoreObjectResponse
+        <$> h ~:? "x-amz-request-charged"
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
@@ -32,9 +32,28 @@
     -- ** XML
     , ns
 
+    -- * GetBucketNotificationConfigurationRequest
+    , GetBucketNotificationConfigurationRequest
+    , getBucketNotificationConfigurationRequest
+    , gbncBucket
+
+    -- * ReplicationConfiguration
+    , ReplicationConfiguration
+    , replicationConfiguration
+    , rcRole
+    , rcRules
+
+    -- * Destination
+    , Destination
+    , destination
+    , dBucket
+
     -- * Event
     , Event (..)
 
+    -- * RequestCharged
+    , RequestCharged (..)
+
     -- * NoncurrentVersionExpiration
     , NoncurrentVersionExpiration
     , noncurrentVersionExpiration
@@ -85,6 +104,14 @@
     -- * MetadataDirective
     , MetadataDirective (..)
 
+    -- * ReplicationRule
+    , ReplicationRule
+    , replicationRule
+    , rrDestination
+    , rrID
+    , rrPrefix
+    , rrStatus
+
     -- * RedirectAllRequestsTo
     , RedirectAllRequestsTo
     , redirectAllRequestsTo
@@ -100,9 +127,9 @@
     -- * NotificationConfiguration
     , NotificationConfiguration
     , notificationConfiguration
-    , ncCloudFunctionConfiguration
-    , ncQueueConfiguration
-    , ncTopicConfiguration
+    , ncLambdaFunctionConfigurations
+    , ncQueueConfigurations
+    , ncTopicConfigurations
 
     -- * S3ServiceError
     , S3ServiceError
@@ -204,21 +231,22 @@
     , rStatus
     , rTransition
 
+    -- * RequestPayer
+    , RequestPayer (..)
+
     -- * TopicConfiguration
     , TopicConfiguration
     , topicConfiguration
-    , tcEvent
     , tcEvents
     , tcId
-    , tcTopic
+    , tcTopicArn
 
     -- * QueueConfiguration
     , QueueConfiguration
     , queueConfiguration
-    , qcEvent
     , qcEvents
     , qcId
-    , qcQueue
+    , qcQueueArn
 
     -- * Owner
     , Owner
@@ -231,6 +259,13 @@
     , bucketLoggingStatus
     , blsLoggingEnabled
 
+    -- * NotificationConfigurationDeprecated
+    , NotificationConfigurationDeprecated
+    , notificationConfigurationDeprecated
+    , ncdCloudFunctionConfiguration
+    , ncdQueueConfiguration
+    , ncdTopicConfiguration
+
     -- * ErrorDocument
     , ErrorDocument
     , errorDocument
@@ -327,9 +362,35 @@
     , muStorageClass
     , muUploadId
 
+    -- * LambdaFunctionConfiguration
+    , LambdaFunctionConfiguration
+    , lambdaFunctionConfiguration
+    , lfcEvents
+    , lfcId
+    , lfcLambdaFunctionArn
+
+    -- * QueueConfigurationDeprecated
+    , QueueConfigurationDeprecated
+    , queueConfigurationDeprecated
+    , qcdEvent
+    , qcdEvents
+    , qcdId
+    , qcdQueue
+
+    -- * TopicConfigurationDeprecated
+    , TopicConfigurationDeprecated
+    , topicConfigurationDeprecated
+    , tcdEvent
+    , tcdEvents
+    , tcdId
+    , tcdTopic
+
     -- * Type
     , Type (..)
 
+    -- * ReplicationStatus
+    , ReplicationStatus (..)
+
     -- * TransitionStorageClass
     , TransitionStorageClass (..)
 
@@ -389,6 +450,9 @@
     , leTargetGrants
     , leTargetPrefix
 
+    -- * ReplicationRuleStatus
+    , ReplicationRuleStatus (..)
+
     -- * ServerSideEncryption
     , ServerSideEncryption (..)
 
@@ -469,6 +533,108 @@
 ns = "http://s3.amazonaws.com/doc/2006-03-01/"
 {-# INLINE ns #-}
 
+newtype GetBucketNotificationConfigurationRequest = GetBucketNotificationConfigurationRequest
+    { _gbncBucket :: Text
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+
+-- | 'GetBucketNotificationConfigurationRequest' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'gbncBucket' @::@ 'Text'
+--
+getBucketNotificationConfigurationRequest :: Text -- ^ 'gbncBucket'
+                                          -> GetBucketNotificationConfigurationRequest
+getBucketNotificationConfigurationRequest p1 = GetBucketNotificationConfigurationRequest
+    { _gbncBucket = p1
+    }
+
+-- | Name of the buket to get the notification configuration for.
+gbncBucket :: Lens' GetBucketNotificationConfigurationRequest Text
+gbncBucket = lens _gbncBucket (\s a -> s { _gbncBucket = a })
+
+instance FromXML GetBucketNotificationConfigurationRequest where
+    parseXML x = GetBucketNotificationConfigurationRequest
+        <$> x .@  "Bucket"
+
+instance ToXMLRoot GetBucketNotificationConfigurationRequest where
+    toXMLRoot = const (namespaced ns "GetBucketNotificationConfigurationRequest" [])
+
+instance ToXML GetBucketNotificationConfigurationRequest
+
+data ReplicationConfiguration = ReplicationConfiguration
+    { _rcRole  :: Text
+    , _rcRules :: List "Rule" ReplicationRule
+    } deriving (Eq, Read, Show)
+
+-- | 'ReplicationConfiguration' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'rcRole' @::@ 'Text'
+--
+-- * 'rcRules' @::@ ['ReplicationRule']
+--
+replicationConfiguration :: Text -- ^ 'rcRole'
+                         -> ReplicationConfiguration
+replicationConfiguration p1 = ReplicationConfiguration
+    { _rcRole  = p1
+    , _rcRules = mempty
+    }
+
+-- | Amazon Resource Name (ARN) of an IAM role for Amazon S3 to assume when
+-- replicating the objects.
+rcRole :: Lens' ReplicationConfiguration Text
+rcRole = lens _rcRole (\s a -> s { _rcRole = a })
+
+-- | Container for information about a particular replication rule. Replication
+-- configuration must have at least one rule and can contain up to 1,000 rules.
+rcRules :: Lens' ReplicationConfiguration [ReplicationRule]
+rcRules = lens _rcRules (\s a -> s { _rcRules = a }) . _List
+
+instance FromXML ReplicationConfiguration where
+    parseXML x = ReplicationConfiguration
+        <$> x .@  "Role"
+        <*> parseXML x
+
+instance ToXMLRoot ReplicationConfiguration where
+    toXMLRoot ReplicationConfiguration{..} = namespaced ns "ReplicationConfiguration"
+        [ "Role" =@ _rcRole
+        , "Rule" =@ _rcRules
+        ]
+
+instance ToXML ReplicationConfiguration
+
+newtype Destination = Destination
+    { _dBucket :: Text
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+
+-- | 'Destination' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'dBucket' @::@ 'Text'
+--
+destination :: Text -- ^ 'dBucket'
+            -> Destination
+destination p1 = Destination
+    { _dBucket = p1
+    }
+
+-- | Amazon resource name (ARN) of the bucket where you want Amazon S3 to store
+-- replicas of the object identified by the rule.
+dBucket :: Lens' Destination Text
+dBucket = lens _dBucket (\s a -> s { _dBucket = a })
+
+instance FromXML Destination where
+    parseXML x = Destination
+        <$> x .@  "Bucket"
+
+instance ToXML Destination where
+    toXML Destination{..} = nodes "Destination"
+        [ "Bucket" =@ _dBucket
+        ]
+
 data Event
     = S3ObjectCreatedCompleteMultipartUpload -- ^ s3:ObjectCreated:CompleteMultipartUpload
     | S3ObjectCreatedCopy                    -- ^ s3:ObjectCreated:Copy
@@ -507,6 +673,31 @@
 instance ToXML Event where
     toXML = toXMLText
 
+data RequestCharged
+    = Requester -- ^ requester
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
+
+instance Hashable RequestCharged
+
+instance FromText RequestCharged where
+    parser = takeLowerText >>= \case
+        "requester" -> pure Requester
+        e           -> fail $
+            "Failure parsing RequestCharged from " ++ show e
+
+instance ToText RequestCharged where
+    toText Requester = "requester"
+
+instance ToByteString RequestCharged
+instance ToHeader     RequestCharged
+instance ToQuery      RequestCharged
+
+instance FromXML RequestCharged where
+    parseXML = parseXMLText "RequestCharged"
+
+instance ToXML RequestCharged where
+    toXML = toXMLText
+
 newtype NoncurrentVersionExpiration = NoncurrentVersionExpiration
     { _nveNoncurrentDays :: Int
     } deriving (Eq, Ord, Read, Show, Enum, Num, Integral, Real)
@@ -887,6 +1078,69 @@
 instance ToXML MetadataDirective where
     toXML = toXMLText
 
+data ReplicationRule = ReplicationRule
+    { _rrDestination :: Destination
+    , _rrID          :: Maybe Text
+    , _rrPrefix      :: Text
+    , _rrStatus      :: ReplicationRuleStatus
+    } deriving (Eq, Read, Show)
+
+-- | 'ReplicationRule' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'rrDestination' @::@ 'Destination'
+--
+-- * 'rrID' @::@ 'Maybe' 'Text'
+--
+-- * 'rrPrefix' @::@ 'Text'
+--
+-- * 'rrStatus' @::@ 'ReplicationRuleStatus'
+--
+replicationRule :: Text -- ^ 'rrPrefix'
+                -> ReplicationRuleStatus -- ^ 'rrStatus'
+                -> Destination -- ^ 'rrDestination'
+                -> ReplicationRule
+replicationRule p1 p2 p3 = ReplicationRule
+    { _rrPrefix      = p1
+    , _rrStatus      = p2
+    , _rrDestination = p3
+    , _rrID          = Nothing
+    }
+
+rrDestination :: Lens' ReplicationRule Destination
+rrDestination = lens _rrDestination (\s a -> s { _rrDestination = a })
+
+-- | Unique identifier for the rule. The value cannot be longer than 255
+-- characters.
+rrID :: Lens' ReplicationRule (Maybe Text)
+rrID = lens _rrID (\s a -> s { _rrID = a })
+
+-- | Object keyname prefix identifying one or more objects to which the rule
+-- applies. Maximum prefix length can be up to 1,024 characters. Overlapping
+-- prefixes are not supported.
+rrPrefix :: Lens' ReplicationRule Text
+rrPrefix = lens _rrPrefix (\s a -> s { _rrPrefix = a })
+
+-- | The rule is ignored if status is not Enabled.
+rrStatus :: Lens' ReplicationRule ReplicationRuleStatus
+rrStatus = lens _rrStatus (\s a -> s { _rrStatus = a })
+
+instance FromXML ReplicationRule where
+    parseXML x = ReplicationRule
+        <$> x .@  "Destination"
+        <*> x .@? "ID"
+        <*> x .@  "Prefix"
+        <*> x .@  "Status"
+
+instance ToXML ReplicationRule where
+    toXML ReplicationRule{..} = nodes "ReplicationRule"
+        [ "ID"          =@ _rrID
+        , "Prefix"      =@ _rrPrefix
+        , "Status"      =@ _rrStatus
+        , "Destination" =@ _rrDestination
+        ]
+
 data RedirectAllRequestsTo = RedirectAllRequestsTo
     { _rartHostName :: Text
     , _rartProtocol :: Maybe Protocol
@@ -972,54 +1226,59 @@
         ]
 
 data NotificationConfiguration = NotificationConfiguration
-    { _ncCloudFunctionConfiguration :: Maybe CloudFunctionConfiguration
-    , _ncQueueConfiguration         :: Maybe QueueConfiguration
-    , _ncTopicConfiguration         :: Maybe TopicConfiguration
+    { _ncLambdaFunctionConfigurations :: List "CloudFunctionConfiguration" LambdaFunctionConfiguration
+    , _ncQueueConfigurations          :: List "QueueConfiguration" QueueConfiguration
+    , _ncTopicConfigurations          :: List "TopicConfiguration" TopicConfiguration
     } deriving (Eq, Read, Show)
 
 -- | 'NotificationConfiguration' constructor.
 --
 -- The fields accessible through corresponding lenses are:
 --
--- * 'ncCloudFunctionConfiguration' @::@ 'Maybe' 'CloudFunctionConfiguration'
+-- * 'ncLambdaFunctionConfigurations' @::@ ['LambdaFunctionConfiguration']
 --
--- * 'ncQueueConfiguration' @::@ 'Maybe' 'QueueConfiguration'
+-- * 'ncQueueConfigurations' @::@ ['QueueConfiguration']
 --
--- * 'ncTopicConfiguration' @::@ 'Maybe' 'TopicConfiguration'
+-- * 'ncTopicConfigurations' @::@ ['TopicConfiguration']
 --
 notificationConfiguration :: NotificationConfiguration
 notificationConfiguration = NotificationConfiguration
-    { _ncTopicConfiguration         = Nothing
-    , _ncQueueConfiguration         = Nothing
-    , _ncCloudFunctionConfiguration = Nothing
+    { _ncTopicConfigurations          = mempty
+    , _ncQueueConfigurations          = mempty
+    , _ncLambdaFunctionConfigurations = mempty
     }
 
-ncCloudFunctionConfiguration :: Lens' NotificationConfiguration (Maybe CloudFunctionConfiguration)
-ncCloudFunctionConfiguration =
-    lens _ncCloudFunctionConfiguration
-        (\s a -> s { _ncCloudFunctionConfiguration = a })
+ncLambdaFunctionConfigurations :: Lens' NotificationConfiguration [LambdaFunctionConfiguration]
+ncLambdaFunctionConfigurations =
+    lens _ncLambdaFunctionConfigurations
+        (\s a -> s { _ncLambdaFunctionConfigurations = a })
+            . _List
 
-ncQueueConfiguration :: Lens' NotificationConfiguration (Maybe QueueConfiguration)
-ncQueueConfiguration =
-    lens _ncQueueConfiguration (\s a -> s { _ncQueueConfiguration = a })
+ncQueueConfigurations :: Lens' NotificationConfiguration [QueueConfiguration]
+ncQueueConfigurations =
+    lens _ncQueueConfigurations (\s a -> s { _ncQueueConfigurations = a })
+        . _List
 
-ncTopicConfiguration :: Lens' NotificationConfiguration (Maybe TopicConfiguration)
-ncTopicConfiguration =
-    lens _ncTopicConfiguration (\s a -> s { _ncTopicConfiguration = a })
+ncTopicConfigurations :: Lens' NotificationConfiguration [TopicConfiguration]
+ncTopicConfigurations =
+    lens _ncTopicConfigurations (\s a -> s { _ncTopicConfigurations = a })
+        . _List
 
 instance FromXML NotificationConfiguration where
     parseXML x = NotificationConfiguration
-        <$> x .@? "CloudFunctionConfiguration"
-        <*> x .@? "QueueConfiguration"
-        <*> x .@? "TopicConfiguration"
+        <$> parseXML x
+        <*> parseXML x
+        <*> parseXML x
 
-instance ToXML NotificationConfiguration where
-    toXML NotificationConfiguration{..} = nodes "NotificationConfiguration"
-        [ "TopicConfiguration"         =@ _ncTopicConfiguration
-        , "QueueConfiguration"         =@ _ncQueueConfiguration
-        , "CloudFunctionConfiguration" =@ _ncCloudFunctionConfiguration
+instance ToXMLRoot NotificationConfiguration where
+    toXMLRoot NotificationConfiguration{..} = namespaced ns "NotificationConfiguration"
+        [ "TopicConfiguration"         =@ _ncTopicConfigurations
+        , "QueueConfiguration"         =@ _ncQueueConfigurations
+        , "CloudFunctionConfiguration" =@ _ncLambdaFunctionConfigurations
         ]
 
+instance ToXML NotificationConfiguration
+
 data S3ServiceError = S3ServiceError
     { _sseCode      :: Maybe Text
     , _sseKey       :: Maybe Text
@@ -1775,115 +2034,125 @@
         , "NoncurrentVersionExpiration" =@ _rNoncurrentVersionExpiration
         ]
 
+data RequestPayer
+    = RPRequester -- ^ requester
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
+
+instance Hashable RequestPayer
+
+instance FromText RequestPayer where
+    parser = takeLowerText >>= \case
+        "requester" -> pure RPRequester
+        e           -> fail $
+            "Failure parsing RequestPayer from " ++ show e
+
+instance ToText RequestPayer where
+    toText RPRequester = "requester"
+
+instance ToByteString RequestPayer
+instance ToHeader     RequestPayer
+instance ToQuery      RequestPayer
+
+instance FromXML RequestPayer where
+    parseXML = parseXMLText "RequestPayer"
+
+instance ToXML RequestPayer where
+    toXML = toXMLText
+
 data TopicConfiguration = TopicConfiguration
-    { _tcEvent  :: Maybe Event
-    , _tcEvents :: List "Event" Event
-    , _tcId     :: Maybe Text
-    , _tcTopic  :: Maybe Text
+    { _tcEvents   :: List "Event" Event
+    , _tcId       :: Maybe Text
+    , _tcTopicArn :: Text
     } deriving (Eq, Read, Show)
 
 -- | 'TopicConfiguration' constructor.
 --
 -- The fields accessible through corresponding lenses are:
 --
--- * 'tcEvent' @::@ 'Maybe' 'Event'
---
 -- * 'tcEvents' @::@ ['Event']
 --
 -- * 'tcId' @::@ 'Maybe' 'Text'
 --
--- * 'tcTopic' @::@ 'Maybe' 'Text'
+-- * 'tcTopicArn' @::@ 'Text'
 --
-topicConfiguration :: TopicConfiguration
-topicConfiguration = TopicConfiguration
-    { _tcId     = Nothing
-    , _tcEvents = mempty
-    , _tcEvent  = Nothing
-    , _tcTopic  = Nothing
+topicConfiguration :: Text -- ^ 'tcTopicArn'
+                   -> TopicConfiguration
+topicConfiguration p1 = TopicConfiguration
+    { _tcTopicArn = p1
+    , _tcId       = Nothing
+    , _tcEvents   = mempty
     }
 
--- | Bucket event for which to send notifications.
-tcEvent :: Lens' TopicConfiguration (Maybe Event)
-tcEvent = lens _tcEvent (\s a -> s { _tcEvent = a })
-
 tcEvents :: Lens' TopicConfiguration [Event]
 tcEvents = lens _tcEvents (\s a -> s { _tcEvents = a }) . _List
 
 tcId :: Lens' TopicConfiguration (Maybe Text)
 tcId = lens _tcId (\s a -> s { _tcId = a })
 
--- | Amazon SNS topic to which Amazon S3 will publish a message to report the
--- specified events for the bucket.
-tcTopic :: Lens' TopicConfiguration (Maybe Text)
-tcTopic = lens _tcTopic (\s a -> s { _tcTopic = a })
+-- | Amazon SNS topic ARN to which Amazon S3 will publish a message when it
+-- detects events of specified type.
+tcTopicArn :: Lens' TopicConfiguration Text
+tcTopicArn = lens _tcTopicArn (\s a -> s { _tcTopicArn = a })
 
 instance FromXML TopicConfiguration where
     parseXML x = TopicConfiguration
-        <$> x .@? "Event"
-        <*> parseXML x
+        <$> parseXML x
         <*> x .@? "Id"
-        <*> x .@? "Topic"
+        <*> x .@  "Topic"
 
 instance ToXML TopicConfiguration where
     toXML TopicConfiguration{..} = nodes "TopicConfiguration"
         [ "Id"    =@ _tcId
+        , "Topic" =@ _tcTopicArn
         , unsafeToXML     _tcEvents
-        , "Event" =@ _tcEvent
-        , "Topic" =@ _tcTopic
         ]
 
 data QueueConfiguration = QueueConfiguration
-    { _qcEvent  :: Maybe Event
-    , _qcEvents :: List "Event" Event
-    , _qcId     :: Maybe Text
-    , _qcQueue  :: Maybe Text
+    { _qcEvents   :: List "Event" Event
+    , _qcId       :: Maybe Text
+    , _qcQueueArn :: Text
     } deriving (Eq, Read, Show)
 
 -- | 'QueueConfiguration' constructor.
 --
 -- The fields accessible through corresponding lenses are:
 --
--- * 'qcEvent' @::@ 'Maybe' 'Event'
---
 -- * 'qcEvents' @::@ ['Event']
 --
 -- * 'qcId' @::@ 'Maybe' 'Text'
 --
--- * 'qcQueue' @::@ 'Maybe' 'Text'
+-- * 'qcQueueArn' @::@ 'Text'
 --
-queueConfiguration :: QueueConfiguration
-queueConfiguration = QueueConfiguration
-    { _qcId     = Nothing
-    , _qcEvent  = Nothing
-    , _qcEvents = mempty
-    , _qcQueue  = Nothing
+queueConfiguration :: Text -- ^ 'qcQueueArn'
+                   -> QueueConfiguration
+queueConfiguration p1 = QueueConfiguration
+    { _qcQueueArn = p1
+    , _qcId       = Nothing
+    , _qcEvents   = mempty
     }
 
-qcEvent :: Lens' QueueConfiguration (Maybe Event)
-qcEvent = lens _qcEvent (\s a -> s { _qcEvent = a })
-
 qcEvents :: Lens' QueueConfiguration [Event]
 qcEvents = lens _qcEvents (\s a -> s { _qcEvents = a }) . _List
 
 qcId :: Lens' QueueConfiguration (Maybe Text)
 qcId = lens _qcId (\s a -> s { _qcId = a })
 
-qcQueue :: Lens' QueueConfiguration (Maybe Text)
-qcQueue = lens _qcQueue (\s a -> s { _qcQueue = a })
+-- | Amazon SQS queue ARN to which Amazon S3 will publish a message when it
+-- detects events of specified type.
+qcQueueArn :: Lens' QueueConfiguration Text
+qcQueueArn = lens _qcQueueArn (\s a -> s { _qcQueueArn = a })
 
 instance FromXML QueueConfiguration where
     parseXML x = QueueConfiguration
-        <$> x .@? "Event"
-        <*> parseXML x
+        <$> parseXML x
         <*> x .@? "Id"
-        <*> x .@? "Queue"
+        <*> x .@  "Queue"
 
 instance ToXML QueueConfiguration where
     toXML QueueConfiguration{..} = nodes "QueueConfiguration"
         [ "Id"    =@ _qcId
-        , "Event" =@ _qcEvent
+        , "Queue" =@ _qcQueueArn
         , unsafeToXML     _qcEvents
-        , "Queue" =@ _qcQueue
         ]
 
 data Owner = Owner
@@ -1952,6 +2221,57 @@
         [ "LoggingEnabled" =@ _blsLoggingEnabled
         ]
 
+data NotificationConfigurationDeprecated = NotificationConfigurationDeprecated
+    { _ncdCloudFunctionConfiguration :: Maybe CloudFunctionConfiguration
+    , _ncdQueueConfiguration         :: Maybe QueueConfigurationDeprecated
+    , _ncdTopicConfiguration         :: Maybe TopicConfigurationDeprecated
+    } deriving (Eq, Read, Show)
+
+-- | 'NotificationConfigurationDeprecated' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'ncdCloudFunctionConfiguration' @::@ 'Maybe' 'CloudFunctionConfiguration'
+--
+-- * 'ncdQueueConfiguration' @::@ 'Maybe' 'QueueConfigurationDeprecated'
+--
+-- * 'ncdTopicConfiguration' @::@ 'Maybe' 'TopicConfigurationDeprecated'
+--
+notificationConfigurationDeprecated :: NotificationConfigurationDeprecated
+notificationConfigurationDeprecated = NotificationConfigurationDeprecated
+    { _ncdTopicConfiguration         = Nothing
+    , _ncdQueueConfiguration         = Nothing
+    , _ncdCloudFunctionConfiguration = Nothing
+    }
+
+ncdCloudFunctionConfiguration :: Lens' NotificationConfigurationDeprecated (Maybe CloudFunctionConfiguration)
+ncdCloudFunctionConfiguration =
+    lens _ncdCloudFunctionConfiguration
+        (\s a -> s { _ncdCloudFunctionConfiguration = a })
+
+ncdQueueConfiguration :: Lens' NotificationConfigurationDeprecated (Maybe QueueConfigurationDeprecated)
+ncdQueueConfiguration =
+    lens _ncdQueueConfiguration (\s a -> s { _ncdQueueConfiguration = a })
+
+ncdTopicConfiguration :: Lens' NotificationConfigurationDeprecated (Maybe TopicConfigurationDeprecated)
+ncdTopicConfiguration =
+    lens _ncdTopicConfiguration (\s a -> s { _ncdTopicConfiguration = a })
+
+instance FromXML NotificationConfigurationDeprecated where
+    parseXML x = NotificationConfigurationDeprecated
+        <$> x .@? "CloudFunctionConfiguration"
+        <*> x .@? "QueueConfiguration"
+        <*> x .@? "TopicConfiguration"
+
+instance ToXMLRoot NotificationConfigurationDeprecated where
+    toXMLRoot NotificationConfigurationDeprecated{..} = namespaced ns "NotificationConfigurationDeprecated"
+        [ "TopicConfiguration"         =@ _ncdTopicConfiguration
+        , "QueueConfiguration"         =@ _ncdQueueConfiguration
+        , "CloudFunctionConfiguration" =@ _ncdCloudFunctionConfiguration
+        ]
+
+instance ToXML NotificationConfigurationDeprecated
+
 newtype ErrorDocument = ErrorDocument
     { _edKey :: Text
     } deriving (Eq, Ord, Read, Show, Monoid, IsString)
@@ -2174,23 +2494,23 @@
     toXML = toXMLText
 
 data Payer
-    = BucketOwner -- ^ BucketOwner
-    | Requester   -- ^ Requester
+    = PBucketOwner -- ^ BucketOwner
+    | PRequester   -- ^ Requester
       deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable Payer
 
 instance FromText Payer where
     parser = takeLowerText >>= \case
-        "bucketowner" -> pure BucketOwner
-        "requester"   -> pure Requester
+        "bucketowner" -> pure PBucketOwner
+        "requester"   -> pure PRequester
         e             -> fail $
             "Failure parsing Payer from " ++ show e
 
 instance ToText Payer where
     toText = \case
-        BucketOwner -> "BucketOwner"
-        Requester   -> "Requester"
+        PBucketOwner -> "BucketOwner"
+        PRequester   -> "Requester"
 
 instance ToByteString Payer
 instance ToHeader     Payer
@@ -2366,7 +2686,8 @@
     { _cbcLocationConstraint = Nothing
     }
 
--- | Specifies the region where the bucket will be created.
+-- | Specifies the region where the bucket will be created. If you don't specify a
+-- region, the bucket will be created in US Standard.
 cbcLocationConstraint :: Lens' CreateBucketConfiguration (Maybe Region)
 cbcLocationConstraint =
     lens _cbcLocationConstraint (\s a -> s { _cbcLocationConstraint = a })
@@ -2665,6 +2986,166 @@
         , "Initiator"    =@ _muInitiator
         ]
 
+data LambdaFunctionConfiguration = LambdaFunctionConfiguration
+    { _lfcEvents            :: List "Event" Event
+    , _lfcId                :: Maybe Text
+    , _lfcLambdaFunctionArn :: Text
+    } deriving (Eq, Read, Show)
+
+-- | 'LambdaFunctionConfiguration' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'lfcEvents' @::@ ['Event']
+--
+-- * 'lfcId' @::@ 'Maybe' 'Text'
+--
+-- * 'lfcLambdaFunctionArn' @::@ 'Text'
+--
+lambdaFunctionConfiguration :: Text -- ^ 'lfcLambdaFunctionArn'
+                            -> LambdaFunctionConfiguration
+lambdaFunctionConfiguration p1 = LambdaFunctionConfiguration
+    { _lfcLambdaFunctionArn = p1
+    , _lfcId                = Nothing
+    , _lfcEvents            = mempty
+    }
+
+lfcEvents :: Lens' LambdaFunctionConfiguration [Event]
+lfcEvents = lens _lfcEvents (\s a -> s { _lfcEvents = a }) . _List
+
+lfcId :: Lens' LambdaFunctionConfiguration (Maybe Text)
+lfcId = lens _lfcId (\s a -> s { _lfcId = a })
+
+-- | Lambda cloud function ARN that Amazon S3 can invoke when it detects events of
+-- the specified type.
+lfcLambdaFunctionArn :: Lens' LambdaFunctionConfiguration Text
+lfcLambdaFunctionArn =
+    lens _lfcLambdaFunctionArn (\s a -> s { _lfcLambdaFunctionArn = a })
+
+instance FromXML LambdaFunctionConfiguration where
+    parseXML x = LambdaFunctionConfiguration
+        <$> parseXML x
+        <*> x .@? "Id"
+        <*> x .@  "CloudFunction"
+
+instance ToXML LambdaFunctionConfiguration where
+    toXML LambdaFunctionConfiguration{..} = nodes "LambdaFunctionConfiguration"
+        [ "Id"            =@ _lfcId
+        , "CloudFunction" =@ _lfcLambdaFunctionArn
+        , unsafeToXML        _lfcEvents
+        ]
+
+data QueueConfigurationDeprecated = QueueConfigurationDeprecated
+    { _qcdEvent  :: Maybe Event
+    , _qcdEvents :: List "Event" Event
+    , _qcdId     :: Maybe Text
+    , _qcdQueue  :: Maybe Text
+    } deriving (Eq, Read, Show)
+
+-- | 'QueueConfigurationDeprecated' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'qcdEvent' @::@ 'Maybe' 'Event'
+--
+-- * 'qcdEvents' @::@ ['Event']
+--
+-- * 'qcdId' @::@ 'Maybe' 'Text'
+--
+-- * 'qcdQueue' @::@ 'Maybe' 'Text'
+--
+queueConfigurationDeprecated :: QueueConfigurationDeprecated
+queueConfigurationDeprecated = QueueConfigurationDeprecated
+    { _qcdId     = Nothing
+    , _qcdEvent  = Nothing
+    , _qcdEvents = mempty
+    , _qcdQueue  = Nothing
+    }
+
+qcdEvent :: Lens' QueueConfigurationDeprecated (Maybe Event)
+qcdEvent = lens _qcdEvent (\s a -> s { _qcdEvent = a })
+
+qcdEvents :: Lens' QueueConfigurationDeprecated [Event]
+qcdEvents = lens _qcdEvents (\s a -> s { _qcdEvents = a }) . _List
+
+qcdId :: Lens' QueueConfigurationDeprecated (Maybe Text)
+qcdId = lens _qcdId (\s a -> s { _qcdId = a })
+
+qcdQueue :: Lens' QueueConfigurationDeprecated (Maybe Text)
+qcdQueue = lens _qcdQueue (\s a -> s { _qcdQueue = a })
+
+instance FromXML QueueConfigurationDeprecated where
+    parseXML x = QueueConfigurationDeprecated
+        <$> x .@? "Event"
+        <*> parseXML x
+        <*> x .@? "Id"
+        <*> x .@? "Queue"
+
+instance ToXML QueueConfigurationDeprecated where
+    toXML QueueConfigurationDeprecated{..} = nodes "QueueConfigurationDeprecated"
+        [ "Id"    =@ _qcdId
+        , "Event" =@ _qcdEvent
+        , unsafeToXML     _qcdEvents
+        , "Queue" =@ _qcdQueue
+        ]
+
+data TopicConfigurationDeprecated = TopicConfigurationDeprecated
+    { _tcdEvent  :: Maybe Event
+    , _tcdEvents :: List "Event" Event
+    , _tcdId     :: Maybe Text
+    , _tcdTopic  :: Maybe Text
+    } deriving (Eq, Read, Show)
+
+-- | 'TopicConfigurationDeprecated' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'tcdEvent' @::@ 'Maybe' 'Event'
+--
+-- * 'tcdEvents' @::@ ['Event']
+--
+-- * 'tcdId' @::@ 'Maybe' 'Text'
+--
+-- * 'tcdTopic' @::@ 'Maybe' 'Text'
+--
+topicConfigurationDeprecated :: TopicConfigurationDeprecated
+topicConfigurationDeprecated = TopicConfigurationDeprecated
+    { _tcdId     = Nothing
+    , _tcdEvents = mempty
+    , _tcdEvent  = Nothing
+    , _tcdTopic  = Nothing
+    }
+
+-- | Bucket event for which to send notifications.
+tcdEvent :: Lens' TopicConfigurationDeprecated (Maybe Event)
+tcdEvent = lens _tcdEvent (\s a -> s { _tcdEvent = a })
+
+tcdEvents :: Lens' TopicConfigurationDeprecated [Event]
+tcdEvents = lens _tcdEvents (\s a -> s { _tcdEvents = a }) . _List
+
+tcdId :: Lens' TopicConfigurationDeprecated (Maybe Text)
+tcdId = lens _tcdId (\s a -> s { _tcdId = a })
+
+-- | Amazon SNS topic to which Amazon S3 will publish a message to report the
+-- specified events for the bucket.
+tcdTopic :: Lens' TopicConfigurationDeprecated (Maybe Text)
+tcdTopic = lens _tcdTopic (\s a -> s { _tcdTopic = a })
+
+instance FromXML TopicConfigurationDeprecated where
+    parseXML x = TopicConfigurationDeprecated
+        <$> x .@? "Event"
+        <*> parseXML x
+        <*> x .@? "Id"
+        <*> x .@? "Topic"
+
+instance ToXML TopicConfigurationDeprecated where
+    toXML TopicConfigurationDeprecated{..} = nodes "TopicConfigurationDeprecated"
+        [ "Id"    =@ _tcdId
+        , unsafeToXML     _tcdEvents
+        , "Event" =@ _tcdEvent
+        , "Topic" =@ _tcdTopic
+        ]
+
 data Type
     = AmazonCustomerByEmail -- ^ AmazonCustomerByEmail
     | CanonicalUser         -- ^ CanonicalUser
@@ -2697,6 +3178,41 @@
 instance ToXML Type where
     toXML = toXMLText
 
+data ReplicationStatus
+    = Complete -- ^ COMPLETE
+    | Failed   -- ^ FAILED
+    | Pending  -- ^ PENDING
+    | Replica  -- ^ REPLICA
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
+
+instance Hashable ReplicationStatus
+
+instance FromText ReplicationStatus where
+    parser = takeLowerText >>= \case
+        "complete" -> pure Complete
+        "failed"   -> pure Failed
+        "pending"  -> pure Pending
+        "replica"  -> pure Replica
+        e          -> fail $
+            "Failure parsing ReplicationStatus from " ++ show e
+
+instance ToText ReplicationStatus where
+    toText = \case
+        Complete -> "COMPLETE"
+        Failed   -> "FAILED"
+        Pending  -> "PENDING"
+        Replica  -> "REPLICA"
+
+instance ToByteString ReplicationStatus
+instance ToHeader     ReplicationStatus
+instance ToQuery      ReplicationStatus
+
+instance FromXML ReplicationStatus where
+    parseXML = parseXMLText "ReplicationStatus"
+
+instance ToXML ReplicationStatus where
+    toXML = toXMLText
+
 data TransitionStorageClass
     = TSCGlacier -- ^ GLACIER
       deriving (Eq, Ord, Read, Show, Generic, Enum)
@@ -3061,7 +3577,7 @@
         <$> x .@? "DisplayName"
         <*> x .@? "EmailAddress"
         <*> x .@? "ID"
-        <*> x .@  "Type"
+        <*> x .@  "xsi:type"
         <*> x .@? "URI"
 
 instance ToXML Grantee where
@@ -3069,7 +3585,7 @@
         [ "DisplayName"  =@ _gDisplayName
         , "EmailAddress" =@ _gEmailAddress
         , "ID"           =@ _gID
-        , "Type"         =@ _gType
+        , "xsi:type"     =@ _gType
         , "URI"          =@ _gURI
         ]
 
@@ -3152,6 +3668,35 @@
         , "TargetGrants" =@ _leTargetGrants
         , "TargetPrefix" =@ _leTargetPrefix
         ]
+
+data ReplicationRuleStatus
+    = RRSDisabled -- ^ Disabled
+    | RRSEnabled  -- ^ Enabled
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
+
+instance Hashable ReplicationRuleStatus
+
+instance FromText ReplicationRuleStatus where
+    parser = takeLowerText >>= \case
+        "disabled" -> pure RRSDisabled
+        "enabled"  -> pure RRSEnabled
+        e          -> fail $
+            "Failure parsing ReplicationRuleStatus from " ++ show e
+
+instance ToText ReplicationRuleStatus where
+    toText = \case
+        RRSDisabled -> "Disabled"
+        RRSEnabled  -> "Enabled"
+
+instance ToByteString ReplicationRuleStatus
+instance ToHeader     ReplicationRuleStatus
+instance ToQuery      ReplicationRuleStatus
+
+instance FromXML ReplicationRuleStatus where
+    parseXML = parseXMLText "ReplicationRuleStatus"
+
+instance ToXML ReplicationRuleStatus where
+    toXML = toXMLText
 
 data ServerSideEncryption
     = AES256 -- ^ AES256
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
@@ -44,6 +44,7 @@
     , upContentMD5
     , upKey
     , upPartNumber
+    , upRequestPayer
     , upSSECustomerAlgorithm
     , upSSECustomerKey
     , upSSECustomerKeyMD5
@@ -55,6 +56,7 @@
     , uploadPartResponse
     -- ** Response lenses
     , uprETag
+    , uprRequestCharged
     , uprSSECustomerAlgorithm
     , uprSSECustomerKeyMD5
     , uprSSEKMSKeyId
@@ -73,6 +75,7 @@
     , _upContentMD5           :: Maybe Text
     , _upKey                  :: Text
     , _upPartNumber           :: Int
+    , _upRequestPayer         :: Maybe RequestPayer
     , _upSSECustomerAlgorithm :: Maybe Text
     , _upSSECustomerKey       :: Maybe (Sensitive Text)
     , _upSSECustomerKeyMD5    :: Maybe Text
@@ -95,6 +98,8 @@
 --
 -- * 'upPartNumber' @::@ 'Int'
 --
+-- * 'upRequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 -- * 'upSSECustomerAlgorithm' @::@ 'Maybe' 'Text'
 --
 -- * 'upSSECustomerKey' @::@ 'Maybe' 'Text'
@@ -120,6 +125,7 @@
     , _upSSECustomerAlgorithm = Nothing
     , _upSSECustomerKey       = Nothing
     , _upSSECustomerKeyMD5    = Nothing
+    , _upRequestPayer         = Nothing
     }
 
 upBody :: Lens' UploadPart RqBody
@@ -143,6 +149,9 @@
 upPartNumber :: Lens' UploadPart Int
 upPartNumber = lens _upPartNumber (\s a -> s { _upPartNumber = a })
 
+upRequestPayer :: Lens' UploadPart (Maybe RequestPayer)
+upRequestPayer = lens _upRequestPayer (\s a -> s { _upRequestPayer = a })
+
 -- | Specifies the algorithm to use to when encrypting the object (e.g., AES256,
 -- aws:kms).
 upSSECustomerAlgorithm :: Lens' UploadPart (Maybe Text)
@@ -171,6 +180,7 @@
 
 data UploadPartResponse = UploadPartResponse
     { _uprETag                 :: Maybe Text
+    , _uprRequestCharged       :: Maybe RequestCharged
     , _uprSSECustomerAlgorithm :: Maybe Text
     , _uprSSECustomerKeyMD5    :: Maybe Text
     , _uprSSEKMSKeyId          :: Maybe (Sensitive Text)
@@ -183,6 +193,8 @@
 --
 -- * 'uprETag' @::@ 'Maybe' 'Text'
 --
+-- * 'uprRequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 -- * 'uprSSECustomerAlgorithm' @::@ 'Maybe' 'Text'
 --
 -- * 'uprSSECustomerKeyMD5' @::@ 'Maybe' 'Text'
@@ -198,12 +210,17 @@
     , _uprSSECustomerAlgorithm = Nothing
     , _uprSSECustomerKeyMD5    = Nothing
     , _uprSSEKMSKeyId          = Nothing
+    , _uprRequestCharged       = Nothing
     }
 
 -- | Entity tag for the uploaded object.
 uprETag :: Lens' UploadPartResponse (Maybe Text)
 uprETag = lens _uprETag (\s a -> s { _uprETag = a })
 
+uprRequestCharged :: Lens' UploadPartResponse (Maybe RequestCharged)
+uprRequestCharged =
+    lens _uprRequestCharged (\s a -> s { _uprRequestCharged = a })
+
 -- | If server-side encryption with a customer-provided encryption key was
 -- requested, the response will include this header confirming the encryption
 -- algorithm used.
@@ -250,6 +267,7 @@
         , "x-amz-server-side-encryption-customer-algorithm" =: _upSSECustomerAlgorithm
         , "x-amz-server-side-encryption-customer-key"       =: _upSSECustomerKey
         , "x-amz-server-side-encryption-customer-key-MD5"   =: _upSSECustomerKeyMD5
+        , "x-amz-request-payer"                             =: _upRequestPayer
         ]
 
 instance ToBody UploadPart where
@@ -262,6 +280,7 @@
     request  = stream PUT
     response = headerResponse $ \h -> UploadPartResponse
         <$> h ~:? "ETag"
+        <*> h ~:? "x-amz-request-charged"
         <*> h ~:? "x-amz-server-side-encryption-customer-algorithm"
         <*> h ~:? "x-amz-server-side-encryption-customer-key-MD5"
         <*> h ~:? "x-amz-server-side-encryption-aws-kms-key-id"
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
@@ -44,6 +44,7 @@
     , upcCopySourceSSECustomerKeyMD5
     , upcKey
     , upcPartNumber
+    , upcRequestPayer
     , upcSSECustomerAlgorithm
     , upcSSECustomerKey
     , upcSSECustomerKeyMD5
@@ -56,6 +57,7 @@
     -- ** Response lenses
     , upcrCopyPartResult
     , upcrCopySourceVersionId
+    , upcrRequestCharged
     , upcrSSECustomerAlgorithm
     , upcrSSECustomerKeyMD5
     , upcrSSEKMSKeyId
@@ -80,11 +82,12 @@
     , _upcCopySourceSSECustomerKeyMD5    :: Maybe Text
     , _upcKey                            :: Text
     , _upcPartNumber                     :: Int
+    , _upcRequestPayer                   :: Maybe RequestPayer
     , _upcSSECustomerAlgorithm           :: Maybe Text
     , _upcSSECustomerKey                 :: Maybe (Sensitive Text)
     , _upcSSECustomerKeyMD5              :: Maybe Text
     , _upcUploadId                       :: Text
-    } deriving (Eq, Ord, Read, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'UploadPartCopy' constructor.
 --
@@ -114,6 +117,8 @@
 --
 -- * 'upcPartNumber' @::@ 'Int'
 --
+-- * 'upcRequestPayer' @::@ 'Maybe' 'RequestPayer'
+--
 -- * 'upcSSECustomerAlgorithm' @::@ 'Maybe' 'Text'
 --
 -- * 'upcSSECustomerKey' @::@ 'Maybe' 'Text'
@@ -145,6 +150,7 @@
     , _upcCopySourceSSECustomerAlgorithm = Nothing
     , _upcCopySourceSSECustomerKey       = Nothing
     , _upcCopySourceSSECustomerKeyMD5    = Nothing
+    , _upcRequestPayer                   = Nothing
     }
 
 upcBucket :: Lens' UploadPartCopy Text
@@ -221,6 +227,9 @@
 upcPartNumber :: Lens' UploadPartCopy Int
 upcPartNumber = lens _upcPartNumber (\s a -> s { _upcPartNumber = a })
 
+upcRequestPayer :: Lens' UploadPartCopy (Maybe RequestPayer)
+upcRequestPayer = lens _upcRequestPayer (\s a -> s { _upcRequestPayer = a })
+
 -- | Specifies the algorithm to use to when encrypting the object (e.g., AES256,
 -- aws:kms).
 upcSSECustomerAlgorithm :: Lens' UploadPartCopy (Maybe Text)
@@ -252,6 +261,7 @@
 data UploadPartCopyResponse = UploadPartCopyResponse
     { _upcrCopyPartResult       :: Maybe CopyPartResult
     , _upcrCopySourceVersionId  :: Maybe Text
+    , _upcrRequestCharged       :: Maybe RequestCharged
     , _upcrSSECustomerAlgorithm :: Maybe Text
     , _upcrSSECustomerKeyMD5    :: Maybe Text
     , _upcrSSEKMSKeyId          :: Maybe (Sensitive Text)
@@ -266,6 +276,8 @@
 --
 -- * 'upcrCopySourceVersionId' @::@ 'Maybe' 'Text'
 --
+-- * 'upcrRequestCharged' @::@ 'Maybe' 'RequestCharged'
+--
 -- * 'upcrSSECustomerAlgorithm' @::@ 'Maybe' 'Text'
 --
 -- * 'upcrSSECustomerKeyMD5' @::@ 'Maybe' 'Text'
@@ -282,6 +294,7 @@
     , _upcrSSECustomerAlgorithm = Nothing
     , _upcrSSECustomerKeyMD5    = Nothing
     , _upcrSSEKMSKeyId          = Nothing
+    , _upcrRequestCharged       = Nothing
     }
 
 upcrCopyPartResult :: Lens' UploadPartCopyResponse (Maybe CopyPartResult)
@@ -294,6 +307,10 @@
 upcrCopySourceVersionId =
     lens _upcrCopySourceVersionId (\s a -> s { _upcrCopySourceVersionId = a })
 
+upcrRequestCharged :: Lens' UploadPartCopyResponse (Maybe RequestCharged)
+upcrRequestCharged =
+    lens _upcrRequestCharged (\s a -> s { _upcrRequestCharged = a })
+
 -- | If server-side encryption with a customer-provided encryption key was
 -- requested, the response will include this header confirming the encryption
 -- algorithm used.
@@ -349,6 +366,7 @@
         , "x-amz-copy-source-server-side-encryption-customer-algorithm" =: _upcCopySourceSSECustomerAlgorithm
         , "x-amz-copy-source-server-side-encryption-customer-key"       =: _upcCopySourceSSECustomerKey
         , "x-amz-copy-source-server-side-encryption-customer-key-MD5"   =: _upcCopySourceSSECustomerKeyMD5
+        , "x-amz-request-payer"                                         =: _upcRequestPayer
         ]
 
 instance ToXMLRoot UploadPartCopy where
@@ -364,6 +382,7 @@
     response = xmlHeaderResponse $ \h x -> UploadPartCopyResponse
         <$> x .@? "CopyPartResult"
         <*> h ~:? "x-amz-copy-source-version-id"
+        <*> h ~:? "x-amz-request-charged"
         <*> h ~:? "x-amz-server-side-encryption-customer-algorithm"
         <*> h ~:? "x-amz-server-side-encryption-customer-key-MD5"
         <*> h ~:? "x-amz-server-side-encryption-aws-kms-key-id"
