diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,25 +1,39 @@
 # Amazon Simple Email Service SDK
 
-> _Warning:_ This is an experimental preview release which is still under heavy development and not intended for public consumption, _caveat emptor_!
-
+* [Version](#version)
 * [Description](#description)
 * [Contribute](#contribute)
 * [Licence](#licence)
 
+
+## Version
+
+`1.0.0`
+
+
 ## Description
 
-Amazon Simple Email Service (Amazon SES) is a cost-effective outbound-only
-email-sending service built on the reliable and scalable infrastructure that
-Amazon.com has developed to serve its own customer base. With Amazon SES, you
-can send transactional email, marketing messages, or any other type of
-high-quality content and you only pay for what you use. Along with high
-deliverability, Amazon SES provides easy, real-time access to your sending
-statistics and built-in notifications for bounces, complaints, and deliveries
-to help you fine-tune your email-sending strategy.
+Amazon Simple Email Service
 
+This is the API Reference for Amazon Simple Email Service (Amazon SES).
+This documentation is intended to be used in conjunction with the
+<http://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html Amazon SES Developer Guide>.
+
+For a list of Amazon SES endpoints to use in service requests, see
+<http://docs.aws.amazon.com/ses/latest/DeveloperGuide/regions.html Regions and Amazon SES>
+in the Amazon SES Developer Guide.
+
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-ses)
 and the [AWS API Reference](http://docs.aws.amazon.com/ses/latest/APIReference/Welcome.html).
 
+The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),
+which provides mechanisms for specifying AuthN/AuthZ information and sending requests.
+
+Use of lenses is required for constructing and manipulating types.
+This is due to the amount of nesting of AWS types and transparency regarding
+de/serialisation into more palatable Haskell values.
+The provided lenses should be compatible with any of the major lens libraries
+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
 
 ## Contribute
 
diff --git a/amazonka-ses.cabal b/amazonka-ses.cabal
--- a/amazonka-ses.cabal
+++ b/amazonka-ses.cabal
@@ -1,32 +1,41 @@
 name:                  amazonka-ses
-version:               0.3.6
+version:               1.0.0
 synopsis:              Amazon Simple Email Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
 license-file:          LICENSE
 author:                Brendan Hay
 maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2013-2014 Brendan Hay
+copyright:             Copyright (c) 2013-2015 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 extra-source-files:    README.md
 cabal-version:         >= 1.10
 
 description:
-    Amazon Simple Email Service (Amazon SES) is a cost-effective outbound-only
-    email-sending service built on the reliable and scalable infrastructure that
-    Amazon.com has developed to serve its own customer base. With Amazon SES, you
-    can send transactional email, marketing messages, or any other type of
-    high-quality content and you only pay for what you use. Along with high
-    deliverability, Amazon SES provides easy, real-time access to your sending
-    statistics and built-in notifications for bounces, complaints, and deliveries
-    to help you fine-tune your email-sending strategy.
+    Amazon Simple Email Service
 
+    This is the API Reference for Amazon Simple Email Service (Amazon SES).
+    This documentation is intended to be used in conjunction with the
+    <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html Amazon SES Developer Guide>.
+
+    For a list of Amazon SES endpoints to use in service requests, see
+    <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/regions.html Regions and Amazon SES>
+    in the Amazon SES Developer Guide.
     .
-    /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/Welcome.html AWS API Reference>
+    The types from this library are intended to be used with
+    <http://hackage.haskell.org/package/amazonka amazonka>, which provides
+    mechanisms for specifying AuthN/AuthZ information and sending requests.
     .
-    /Warning:/ This is an experimental preview release which is still under
-    heavy development and not intended for public consumption, caveat emptor!
+    Use of lenses is required for constructing and manipulating types.
+    This is due to the amount of nesting of AWS types and transparency regarding
+    de/serialisation into more palatable Haskell values.
+    The provided lenses should be compatible with any of the major lens libraries
+    such as <http://hackage.haskell.org/package/lens lens> or
+    <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
+    .
+    See "Network.AWS.SES" and the <http://docs.aws.amazon.com/ses/latest/APIReference/Welcome.html AWS API Reference>
+    to get started.
 
 source-repository head
     type:     git
@@ -41,14 +50,18 @@
     exposed-modules:
           Network.AWS.SES
         , Network.AWS.SES.DeleteIdentity
+        , Network.AWS.SES.DeleteIdentityPolicy
         , Network.AWS.SES.DeleteVerifiedEmailAddress
         , Network.AWS.SES.GetIdentityDkimAttributes
         , Network.AWS.SES.GetIdentityNotificationAttributes
+        , Network.AWS.SES.GetIdentityPolicies
         , Network.AWS.SES.GetIdentityVerificationAttributes
         , Network.AWS.SES.GetSendQuota
         , Network.AWS.SES.GetSendStatistics
         , Network.AWS.SES.ListIdentities
+        , Network.AWS.SES.ListIdentityPolicies
         , Network.AWS.SES.ListVerifiedEmailAddresses
+        , Network.AWS.SES.PutIdentityPolicy
         , Network.AWS.SES.SendEmail
         , Network.AWS.SES.SendRawEmail
         , Network.AWS.SES.SetIdentityDkimEnabled
@@ -62,7 +75,37 @@
         , Network.AWS.SES.Waiters
 
     other-modules:
+          Network.AWS.SES.Types.Product
+        , Network.AWS.SES.Types.Sum
 
     build-depends:
-          amazonka-core == 0.3.6.*
+          amazonka-core == 1.0.0.*
         , base          >= 4.7     && < 5
+
+test-suite amazonka-ses-test
+    type:              exitcode-stdio-1.0
+    default-language:  Haskell2010
+    hs-source-dirs:    test
+    main-is:           Main.hs
+
+    ghc-options:       -Wall -threaded
+
+    -- This is not comprehensive if modules have manually been added.
+    -- It exists to ensure cabal 'somewhat' detects test module changes.
+    other-modules:
+          Test.AWS.SES
+        , Test.AWS.Gen.SES
+        , Test.AWS.SES.Internal
+
+    build-depends:
+          amazonka-core == 1.0.0
+        , amazonka-test == 1.0.0
+        , amazonka-ses == 1.0.0
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
diff --git a/gen/Network/AWS/SES.hs b/gen/Network/AWS/SES.hs
--- a/gen/Network/AWS/SES.hs
+++ b/gen/Network/AWS/SES.hs
@@ -1,63 +1,236 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Amazon Simple Email Service (Amazon SES) is a cost-effective outbound-only
--- email-sending service built on the reliable and scalable infrastructure that
--- Amazon.com has developed to serve its own customer base. With Amazon SES, you
--- can send transactional email, marketing messages, or any other type of
--- high-quality content and you only pay for what you use. Along with high
--- deliverability, Amazon SES provides easy, real-time access to your sending
--- statistics and built-in notifications for bounces, complaints, and deliveries
--- to help you fine-tune your email-sending strategy.
+-- Amazon Simple Email Service
+--
+-- This is the API Reference for Amazon Simple Email Service (Amazon SES).
+-- This documentation is intended to be used in conjunction with the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html Amazon SES Developer Guide>.
+--
+-- For a list of Amazon SES endpoints to use in service requests, see
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/regions.html Regions and Amazon SES>
+-- in the Amazon SES Developer Guide.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.SES
-    ( module Network.AWS.SES.DeleteIdentity
-    , module Network.AWS.SES.DeleteVerifiedEmailAddress
-    , module Network.AWS.SES.GetIdentityDkimAttributes
-    , module Network.AWS.SES.GetIdentityNotificationAttributes
-    , module Network.AWS.SES.GetIdentityVerificationAttributes
+    (
+    -- * Service
+      SES
+
+    -- * Errors
+    -- $errors
+
+    -- ** MessageRejected
+    , _MessageRejected
+
+    -- ** InvalidPolicyException
+    , _InvalidPolicyException
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** GetSendQuota
     , module Network.AWS.SES.GetSendQuota
-    , module Network.AWS.SES.GetSendStatistics
-    , module Network.AWS.SES.ListIdentities
-    , module Network.AWS.SES.ListVerifiedEmailAddresses
-    , module Network.AWS.SES.SendEmail
-    , module Network.AWS.SES.SendRawEmail
+
+    -- ** DeleteIdentityPolicy
+    , module Network.AWS.SES.DeleteIdentityPolicy
+
+    -- ** PutIdentityPolicy
+    , module Network.AWS.SES.PutIdentityPolicy
+
+    -- ** SetIdentityDkimEnabled
     , module Network.AWS.SES.SetIdentityDkimEnabled
+
+    -- ** GetIdentityNotificationAttributes
+    , module Network.AWS.SES.GetIdentityNotificationAttributes
+
+    -- ** ListIdentityPolicies
+    , module Network.AWS.SES.ListIdentityPolicies
+
+    -- ** SetIdentityFeedbackForwardingEnabled
     , module Network.AWS.SES.SetIdentityFeedbackForwardingEnabled
-    , module Network.AWS.SES.SetIdentityNotificationTopic
-    , module Network.AWS.SES.Types
-    , module Network.AWS.SES.VerifyDomainDkim
+
+    -- ** GetIdentityVerificationAttributes
+    , module Network.AWS.SES.GetIdentityVerificationAttributes
+
+    -- ** GetIdentityPolicies
+    , module Network.AWS.SES.GetIdentityPolicies
+
+    -- ** VerifyDomainIdentity
     , module Network.AWS.SES.VerifyDomainIdentity
+
+    -- ** VerifyDomainDkim
+    , module Network.AWS.SES.VerifyDomainDkim
+
+    -- ** SendRawEmail
+    , module Network.AWS.SES.SendRawEmail
+
+    -- ** GetIdentityDkimAttributes
+    , module Network.AWS.SES.GetIdentityDkimAttributes
+
+    -- ** DeleteIdentity
+    , module Network.AWS.SES.DeleteIdentity
+
+    -- ** GetSendStatistics
+    , module Network.AWS.SES.GetSendStatistics
+
+    -- ** ListIdentities (Paginated)
+    , module Network.AWS.SES.ListIdentities
+
+    -- ** DeleteVerifiedEmailAddress
+    , module Network.AWS.SES.DeleteVerifiedEmailAddress
+
+    -- ** VerifyEmailAddress
     , module Network.AWS.SES.VerifyEmailAddress
+
+    -- ** VerifyEmailIdentity
     , module Network.AWS.SES.VerifyEmailIdentity
-    , module Network.AWS.SES.Waiters
+
+    -- ** SendEmail
+    , module Network.AWS.SES.SendEmail
+
+    -- ** ListVerifiedEmailAddresses
+    , module Network.AWS.SES.ListVerifiedEmailAddresses
+
+    -- ** SetIdentityNotificationTopic
+    , module Network.AWS.SES.SetIdentityNotificationTopic
+
+    -- * Types
+
+    -- ** IdentityType
+    , IdentityType (..)
+
+    -- ** NotificationType
+    , NotificationType (..)
+
+    -- ** VerificationStatus
+    , VerificationStatus (..)
+
+    -- ** Body
+    , Body
+    , body
+    , bText
+    , bHTML
+
+    -- ** Content
+    , Content
+    , content
+    , cCharset
+    , cData
+
+    -- ** Destination
+    , Destination
+    , destination
+    , dBCCAddresses
+    , dCCAddresses
+    , dToAddresses
+
+    -- ** IdentityDkimAttributes
+    , IdentityDkimAttributes
+    , identityDkimAttributes
+    , idaDkimTokens
+    , idaDkimEnabled
+    , idaDkimVerificationStatus
+
+    -- ** IdentityNotificationAttributes
+    , IdentityNotificationAttributes
+    , identityNotificationAttributes
+    , inaBounceTopic
+    , inaComplaintTopic
+    , inaDeliveryTopic
+    , inaForwardingEnabled
+
+    -- ** IdentityVerificationAttributes
+    , IdentityVerificationAttributes
+    , identityVerificationAttributes
+    , ivaVerificationToken
+    , ivaVerificationStatus
+
+    -- ** Message
+    , Message
+    , message
+    , mSubject
+    , mBody
+
+    -- ** RawMessage
+    , RawMessage
+    , rawMessage
+    , rmData
+
+    -- ** SendDataPoint
+    , SendDataPoint
+    , sendDataPoint
+    , sdpRejects
+    , sdpComplaints
+    , sdpDeliveryAttempts
+    , sdpBounces
+    , sdpTimestamp
     ) where
 
-import Network.AWS.SES.DeleteIdentity
-import Network.AWS.SES.DeleteVerifiedEmailAddress
-import Network.AWS.SES.GetIdentityDkimAttributes
-import Network.AWS.SES.GetIdentityNotificationAttributes
-import Network.AWS.SES.GetIdentityVerificationAttributes
-import Network.AWS.SES.GetSendQuota
-import Network.AWS.SES.GetSendStatistics
-import Network.AWS.SES.ListIdentities
-import Network.AWS.SES.ListVerifiedEmailAddresses
-import Network.AWS.SES.SendEmail
-import Network.AWS.SES.SendRawEmail
-import Network.AWS.SES.SetIdentityDkimEnabled
-import Network.AWS.SES.SetIdentityFeedbackForwardingEnabled
-import Network.AWS.SES.SetIdentityNotificationTopic
-import Network.AWS.SES.Types
-import Network.AWS.SES.VerifyDomainDkim
-import Network.AWS.SES.VerifyDomainIdentity
-import Network.AWS.SES.VerifyEmailAddress
-import Network.AWS.SES.VerifyEmailIdentity
-import Network.AWS.SES.Waiters
+import           Network.AWS.SES.DeleteIdentity
+import           Network.AWS.SES.DeleteIdentityPolicy
+import           Network.AWS.SES.DeleteVerifiedEmailAddress
+import           Network.AWS.SES.GetIdentityDkimAttributes
+import           Network.AWS.SES.GetIdentityNotificationAttributes
+import           Network.AWS.SES.GetIdentityPolicies
+import           Network.AWS.SES.GetIdentityVerificationAttributes
+import           Network.AWS.SES.GetSendQuota
+import           Network.AWS.SES.GetSendStatistics
+import           Network.AWS.SES.ListIdentities
+import           Network.AWS.SES.ListIdentityPolicies
+import           Network.AWS.SES.ListVerifiedEmailAddresses
+import           Network.AWS.SES.PutIdentityPolicy
+import           Network.AWS.SES.SendEmail
+import           Network.AWS.SES.SendRawEmail
+import           Network.AWS.SES.SetIdentityDkimEnabled
+import           Network.AWS.SES.SetIdentityFeedbackForwardingEnabled
+import           Network.AWS.SES.SetIdentityNotificationTopic
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.VerifyDomainDkim
+import           Network.AWS.SES.VerifyDomainIdentity
+import           Network.AWS.SES.VerifyEmailAddress
+import           Network.AWS.SES.VerifyEmailIdentity
+import           Network.AWS.SES.Waiters
+
+{- $errors
+Error matchers are designed for use with the functions provided by
+<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
+This allows catching (and rethrowing) service specific errors returned
+by 'SES'.
+-}
+
+{- $operations
+Some AWS operations return results that are incomplete and require subsequent
+requests in order to obtain the entire result set. The process of sending
+subsequent requests to continue where a previous request left off is called
+pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
+1000 objects at a time, and you must send subsequent requests with the
+appropriate Marker in order to retrieve the next page of results.
+
+Operations that have an 'AWSPager' instance can transparently perform subsequent
+requests, correctly setting Markers and other request facets to iterate through
+the entire result set of a truncated API operation. Operations which support
+this have an additional note in the documentation.
+
+Many operations have the ability to filter results on the server side. See the
+individual operation parameters for details.
+-}
+
+{- $waiters
+Waiters poll by repeatedly sending a request until some remote success condition
+configured by the 'Wait' specification is fulfilled. The 'Wait' specification
+determines how many attempts should be made, in addition to delay and retry strategies.
+-}
diff --git a/gen/Network/AWS/SES/DeleteIdentity.hs b/gen/Network/AWS/SES/DeleteIdentity.hs
--- a/gen/Network/AWS/SES/DeleteIdentity.hs
+++ b/gen/Network/AWS/SES/DeleteIdentity.hs
@@ -1,93 +1,119 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.DeleteIdentity
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes the specified identity (email address or domain) from the list of
--- verified identities.
+-- Deletes the specified identity (email address or domain) from the list
+-- of verified identities.
 --
 -- This action is throttled at one request per second.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentity.html>
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentity.html AWS API Reference> for DeleteIdentity.
 module Network.AWS.SES.DeleteIdentity
     (
-    -- * Request
-      DeleteIdentity
-    -- ** Request constructor
-    , deleteIdentity
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteIdentity
+    , DeleteIdentity
+    -- * Request Lenses
     , diIdentity
 
-    -- * Response
-    , DeleteIdentityResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteIdentityResponse
+    , DeleteIdentityResponse
+    -- * Response Lenses
+    , dirsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
-newtype DeleteIdentity = DeleteIdentity
+-- | Represents a request instructing the service to delete an identity from
+-- the list of identities for the AWS Account.
+--
+-- /See:/ 'deleteIdentity' smart constructor.
+newtype DeleteIdentity = DeleteIdentity'
     { _diIdentity :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteIdentity' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteIdentity' with the minimum fields required to make a request.
 --
--- * 'diIdentity' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteIdentity :: Text -- ^ 'diIdentity'
-               -> DeleteIdentity
-deleteIdentity p1 = DeleteIdentity
-    { _diIdentity = p1
+-- * 'diIdentity'
+deleteIdentity
+    :: Text -- ^ 'diIdentity'
+    -> DeleteIdentity
+deleteIdentity pIdentity_ =
+    DeleteIdentity'
+    { _diIdentity = pIdentity_
     }
 
--- | The identity to be removed from the list of identities for the AWS Account.
+-- | The identity to be removed from the list of identities for the AWS
+-- Account.
 diIdentity :: Lens' DeleteIdentity Text
-diIdentity = lens _diIdentity (\s a -> s { _diIdentity = a })
+diIdentity = lens _diIdentity (\ s a -> s{_diIdentity = a});
 
-data DeleteIdentityResponse = DeleteIdentityResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteIdentity where
+        type Sv DeleteIdentity = SES
+        type Rs DeleteIdentity = DeleteIdentityResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DeleteIdentityResult"
+              (\ s h x ->
+                 DeleteIdentityResponse' <$> (pure (fromEnum s)))
 
--- | 'DeleteIdentityResponse' constructor.
-deleteIdentityResponse :: DeleteIdentityResponse
-deleteIdentityResponse = DeleteIdentityResponse
+instance ToHeaders DeleteIdentity where
+        toHeaders = const mempty
 
 instance ToPath DeleteIdentity where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteIdentity where
-    toQuery DeleteIdentity{..} = mconcat
-        [ "Identity" =? _diIdentity
-        ]
+        toQuery DeleteIdentity'{..}
+          = mconcat
+              ["Action" =: ("DeleteIdentity" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "Identity" =: _diIdentity]
 
-instance ToHeaders DeleteIdentity
+-- | An empty element. Receiving this element indicates that the request
+-- completed successfully.
+--
+-- /See:/ 'deleteIdentityResponse' smart constructor.
+newtype DeleteIdentityResponse = DeleteIdentityResponse'
+    { _dirsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteIdentity where
-    type Sv DeleteIdentity = SES
-    type Rs DeleteIdentity = DeleteIdentityResponse
+-- | Creates a value of 'DeleteIdentityResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dirsStatus'
+deleteIdentityResponse
+    :: Int -- ^ 'dirsStatus'
+    -> DeleteIdentityResponse
+deleteIdentityResponse pStatus_ =
+    DeleteIdentityResponse'
+    { _dirsStatus = pStatus_
+    }
 
-    request  = post "DeleteIdentity"
-    response = nullResponse DeleteIdentityResponse
+-- | The response status code.
+dirsStatus :: Lens' DeleteIdentityResponse Int
+dirsStatus = lens _dirsStatus (\ s a -> s{_dirsStatus = a});
diff --git a/gen/Network/AWS/SES/DeleteIdentityPolicy.hs b/gen/Network/AWS/SES/DeleteIdentityPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/DeleteIdentityPolicy.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.SES.DeleteIdentityPolicy
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified sending authorization policy for the given
+-- identity (email address or domain). This API returns successfully even
+-- if a policy with the specified name does not exist.
+--
+-- This API is for the identity owner only. If you have not verified the
+-- identity, this API will return an error.
+--
+-- Sending authorization is a feature that enables an identity owner to
+-- authorize other senders to use its identities. For information about
+-- using sending authorization, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentityPolicy.html AWS API Reference> for DeleteIdentityPolicy.
+module Network.AWS.SES.DeleteIdentityPolicy
+    (
+    -- * Creating a Request
+      deleteIdentityPolicy
+    , DeleteIdentityPolicy
+    -- * Request Lenses
+    , dipIdentity
+    , dipPolicyName
+
+    -- * Destructuring the Response
+    , deleteIdentityPolicyResponse
+    , DeleteIdentityPolicyResponse
+    -- * Response Lenses
+    , diprsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | Represents a request instructing the service to delete an authorization
+-- policy applying to an identity.
+--
+-- This request succeeds regardless of whether the specified policy exists.
+--
+-- /See:/ 'deleteIdentityPolicy' smart constructor.
+data DeleteIdentityPolicy = DeleteIdentityPolicy'
+    { _dipIdentity   :: !Text
+    , _dipPolicyName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteIdentityPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dipIdentity'
+--
+-- * 'dipPolicyName'
+deleteIdentityPolicy
+    :: Text -- ^ 'dipIdentity'
+    -> Text -- ^ 'dipPolicyName'
+    -> DeleteIdentityPolicy
+deleteIdentityPolicy pIdentity_ pPolicyName_ =
+    DeleteIdentityPolicy'
+    { _dipIdentity = pIdentity_
+    , _dipPolicyName = pPolicyName_
+    }
+
+-- | The identity that is associated with the policy that you want to delete.
+-- You can specify the identity by using its name or by using its Amazon
+-- Resource Name (ARN). Examples: 'user\'example.com', 'example.com',
+-- 'arn:aws:ses:us-east-1:123456789012:identity\/example.com'.
+--
+-- To successfully call this API, you must own the identity.
+dipIdentity :: Lens' DeleteIdentityPolicy Text
+dipIdentity = lens _dipIdentity (\ s a -> s{_dipIdentity = a});
+
+-- | The name of the policy to be deleted.
+dipPolicyName :: Lens' DeleteIdentityPolicy Text
+dipPolicyName = lens _dipPolicyName (\ s a -> s{_dipPolicyName = a});
+
+instance AWSRequest DeleteIdentityPolicy where
+        type Sv DeleteIdentityPolicy = SES
+        type Rs DeleteIdentityPolicy =
+             DeleteIdentityPolicyResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DeleteIdentityPolicyResult"
+              (\ s h x ->
+                 DeleteIdentityPolicyResponse' <$>
+                   (pure (fromEnum s)))
+
+instance ToHeaders DeleteIdentityPolicy where
+        toHeaders = const mempty
+
+instance ToPath DeleteIdentityPolicy where
+        toPath = const "/"
+
+instance ToQuery DeleteIdentityPolicy where
+        toQuery DeleteIdentityPolicy'{..}
+          = mconcat
+              ["Action" =: ("DeleteIdentityPolicy" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "Identity" =: _dipIdentity,
+               "PolicyName" =: _dipPolicyName]
+
+-- | An empty element. Receiving this element indicates that the request
+-- completed successfully.
+--
+-- /See:/ 'deleteIdentityPolicyResponse' smart constructor.
+newtype DeleteIdentityPolicyResponse = DeleteIdentityPolicyResponse'
+    { _diprsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteIdentityPolicyResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'diprsStatus'
+deleteIdentityPolicyResponse
+    :: Int -- ^ 'diprsStatus'
+    -> DeleteIdentityPolicyResponse
+deleteIdentityPolicyResponse pStatus_ =
+    DeleteIdentityPolicyResponse'
+    { _diprsStatus = pStatus_
+    }
+
+-- | The response status code.
+diprsStatus :: Lens' DeleteIdentityPolicyResponse Int
+diprsStatus = lens _diprsStatus (\ s a -> s{_diprsStatus = a});
diff --git a/gen/Network/AWS/SES/DeleteVerifiedEmailAddress.hs b/gen/Network/AWS/SES/DeleteVerifiedEmailAddress.hs
--- a/gen/Network/AWS/SES/DeleteVerifiedEmailAddress.hs
+++ b/gen/Network/AWS/SES/DeleteVerifiedEmailAddress.hs
@@ -1,93 +1,105 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.DeleteVerifiedEmailAddress
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes the specified email address from the list of verified addresses.
+-- Deletes the specified email address from the list of verified addresses.
 --
--- The DeleteVerifiedEmailAddress action is deprecated as of the May 15, 2012
--- release of Domain Verification. The DeleteIdentity action is now preferred. This action is throttled at one request per second.
+-- The DeleteVerifiedEmailAddress action is deprecated as of the May 15,
+-- 2012 release of Domain Verification. The DeleteIdentity action is now
+-- preferred.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteVerifiedEmailAddress.html>
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteVerifiedEmailAddress.html AWS API Reference> for DeleteVerifiedEmailAddress.
 module Network.AWS.SES.DeleteVerifiedEmailAddress
     (
-    -- * Request
-      DeleteVerifiedEmailAddress
-    -- ** Request constructor
-    , deleteVerifiedEmailAddress
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteVerifiedEmailAddress
+    , DeleteVerifiedEmailAddress
+    -- * Request Lenses
     , dveaEmailAddress
 
-    -- * Response
-    , DeleteVerifiedEmailAddressResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteVerifiedEmailAddressResponse
+    , DeleteVerifiedEmailAddressResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
-newtype DeleteVerifiedEmailAddress = DeleteVerifiedEmailAddress
+-- | Represents a request instructing the service to delete an address from
+-- the list of verified email addresses.
+--
+-- /See:/ 'deleteVerifiedEmailAddress' smart constructor.
+newtype DeleteVerifiedEmailAddress = DeleteVerifiedEmailAddress'
     { _dveaEmailAddress :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteVerifiedEmailAddress' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteVerifiedEmailAddress' with the minimum fields required to make a request.
 --
--- * 'dveaEmailAddress' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteVerifiedEmailAddress :: Text -- ^ 'dveaEmailAddress'
-                           -> DeleteVerifiedEmailAddress
-deleteVerifiedEmailAddress p1 = DeleteVerifiedEmailAddress
-    { _dveaEmailAddress = p1
+-- * 'dveaEmailAddress'
+deleteVerifiedEmailAddress
+    :: Text -- ^ 'dveaEmailAddress'
+    -> DeleteVerifiedEmailAddress
+deleteVerifiedEmailAddress pEmailAddress_ =
+    DeleteVerifiedEmailAddress'
+    { _dveaEmailAddress = pEmailAddress_
     }
 
 -- | An email address to be removed from the list of verified addresses.
 dveaEmailAddress :: Lens' DeleteVerifiedEmailAddress Text
-dveaEmailAddress = lens _dveaEmailAddress (\s a -> s { _dveaEmailAddress = a })
+dveaEmailAddress = lens _dveaEmailAddress (\ s a -> s{_dveaEmailAddress = a});
 
-data DeleteVerifiedEmailAddressResponse = DeleteVerifiedEmailAddressResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteVerifiedEmailAddress where
+        type Sv DeleteVerifiedEmailAddress = SES
+        type Rs DeleteVerifiedEmailAddress =
+             DeleteVerifiedEmailAddressResponse
+        request = postQuery
+        response
+          = receiveNull DeleteVerifiedEmailAddressResponse'
 
--- | 'DeleteVerifiedEmailAddressResponse' constructor.
-deleteVerifiedEmailAddressResponse :: DeleteVerifiedEmailAddressResponse
-deleteVerifiedEmailAddressResponse = DeleteVerifiedEmailAddressResponse
+instance ToHeaders DeleteVerifiedEmailAddress where
+        toHeaders = const mempty
 
 instance ToPath DeleteVerifiedEmailAddress where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteVerifiedEmailAddress where
-    toQuery DeleteVerifiedEmailAddress{..} = mconcat
-        [ "EmailAddress" =? _dveaEmailAddress
-        ]
-
-instance ToHeaders DeleteVerifiedEmailAddress
+        toQuery DeleteVerifiedEmailAddress'{..}
+          = mconcat
+              ["Action" =:
+                 ("DeleteVerifiedEmailAddress" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "EmailAddress" =: _dveaEmailAddress]
 
-instance AWSRequest DeleteVerifiedEmailAddress where
-    type Sv DeleteVerifiedEmailAddress = SES
-    type Rs DeleteVerifiedEmailAddress = DeleteVerifiedEmailAddressResponse
+-- | /See:/ 'deleteVerifiedEmailAddressResponse' smart constructor.
+data DeleteVerifiedEmailAddressResponse =
+    DeleteVerifiedEmailAddressResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteVerifiedEmailAddress"
-    response = nullResponse DeleteVerifiedEmailAddressResponse
+-- | Creates a value of 'DeleteVerifiedEmailAddressResponse' with the minimum fields required to make a request.
+--
+deleteVerifiedEmailAddressResponse
+    :: DeleteVerifiedEmailAddressResponse
+deleteVerifiedEmailAddressResponse = DeleteVerifiedEmailAddressResponse'
diff --git a/gen/Network/AWS/SES/GetIdentityDkimAttributes.hs b/gen/Network/AWS/SES/GetIdentityDkimAttributes.hs
--- a/gen/Network/AWS/SES/GetIdentityDkimAttributes.hs
+++ b/gen/Network/AWS/SES/GetIdentityDkimAttributes.hs
@@ -1,131 +1,152 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.GetIdentityDkimAttributes
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns the current status of Easy DKIM signing for an entity. For domain
--- name identities, this action also returns the DKIM tokens that are required
--- for Easy DKIM signing, and whether Amazon SES has successfully verified that
--- these tokens have been published.
+-- Returns the current status of Easy DKIM signing for an entity. For
+-- domain name identities, this action also returns the DKIM tokens that
+-- are required for Easy DKIM signing, and whether Amazon SES has
+-- successfully verified that these tokens have been published.
 --
--- This action takes a list of identities as input and returns the following
--- information for each:
+-- This action takes a list of identities as input and returns the
+-- following information for each:
 --
--- Whether Easy DKIM signing is enabled or disabled. A set of DKIM tokens that
--- represent the identity. If the identity is an email address, the tokens
--- represent the domain of that address. Whether Amazon SES has successfully
--- verified the DKIM tokens published in the domain's DNS. This information is
--- only returned for domain name identities, not for email addresses.  This
--- action is throttled at one request per second and can only get DKIM
+-- -   Whether Easy DKIM signing is enabled or disabled.
+-- -   A set of DKIM tokens that represent the identity. If the identity is
+--     an email address, the tokens represent the domain of that address.
+-- -   Whether Amazon SES has successfully verified the DKIM tokens
+--     published in the domain\'s DNS. This information is only returned
+--     for domain name identities, not for email addresses.
+--
+-- This action is throttled at one request per second and can only get DKIM
 -- attributes for up to 100 identities at a time.
 --
--- For more information about creating DNS records using DKIM tokens, go to the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim-dns-records.html Amazon SES Developer Guide>.
+-- For more information about creating DNS records using DKIM tokens, go to
+-- the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim-dns-records.html Amazon SES Developer Guide>.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityDkimAttributes.html>
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityDkimAttributes.html AWS API Reference> for GetIdentityDkimAttributes.
 module Network.AWS.SES.GetIdentityDkimAttributes
     (
-    -- * Request
-      GetIdentityDkimAttributes
-    -- ** Request constructor
-    , getIdentityDkimAttributes
-    -- ** Request lenses
+    -- * Creating a Request
+      getIdentityDkimAttributes
+    , GetIdentityDkimAttributes
+    -- * Request Lenses
     , gidaIdentities
 
-    -- * Response
-    , GetIdentityDkimAttributesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getIdentityDkimAttributesResponse
-    -- ** Response lenses
-    , gidarDkimAttributes
+    , GetIdentityDkimAttributesResponse
+    -- * Response Lenses
+    , gidarsStatus
+    , gidarsDkimAttributes
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
-
-newtype GetIdentityDkimAttributes = GetIdentityDkimAttributes
-    { _gidaIdentities :: List "member" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList GetIdentityDkimAttributes where
-    type Item GetIdentityDkimAttributes = Text
-
-    fromList = GetIdentityDkimAttributes . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _gidaIdentities
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
--- | 'GetIdentityDkimAttributes' constructor.
+-- | Given a list of verified identities, describes their DKIM attributes.
+-- The DKIM attributes of an email address identity includes whether DKIM
+-- signing is individually enabled or disabled for that address. The DKIM
+-- attributes of a domain name identity includes whether DKIM signing is
+-- enabled, as well as the DNS records (tokens) that must remain published
+-- in the domain name\'s DNS.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getIdentityDkimAttributes' smart constructor.
+newtype GetIdentityDkimAttributes = GetIdentityDkimAttributes'
+    { _gidaIdentities :: [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIdentityDkimAttributes' with the minimum fields required to make a request.
 --
--- * 'gidaIdentities' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-getIdentityDkimAttributes :: GetIdentityDkimAttributes
-getIdentityDkimAttributes = GetIdentityDkimAttributes
+-- * 'gidaIdentities'
+getIdentityDkimAttributes
+    :: GetIdentityDkimAttributes
+getIdentityDkimAttributes =
+    GetIdentityDkimAttributes'
     { _gidaIdentities = mempty
     }
 
--- | A list of one or more verified identities - email addresses, domains, or both.
+-- | A list of one or more verified identities - email addresses, domains, or
+-- both.
 gidaIdentities :: Lens' GetIdentityDkimAttributes [Text]
-gidaIdentities = lens _gidaIdentities (\s a -> s { _gidaIdentities = a }) . _List
-
-newtype GetIdentityDkimAttributesResponse = GetIdentityDkimAttributesResponse
-    { _gidarDkimAttributes :: EMap "entry" "key" "value" Text IdentityDkimAttributes
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+gidaIdentities = lens _gidaIdentities (\ s a -> s{_gidaIdentities = a}) . _Coerce;
 
--- | 'GetIdentityDkimAttributesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'gidarDkimAttributes' @::@ 'HashMap' 'Text' 'IdentityDkimAttributes'
---
-getIdentityDkimAttributesResponse :: GetIdentityDkimAttributesResponse
-getIdentityDkimAttributesResponse = GetIdentityDkimAttributesResponse
-    { _gidarDkimAttributes = mempty
-    }
+instance AWSRequest GetIdentityDkimAttributes where
+        type Sv GetIdentityDkimAttributes = SES
+        type Rs GetIdentityDkimAttributes =
+             GetIdentityDkimAttributesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "GetIdentityDkimAttributesResult"
+              (\ s h x ->
+                 GetIdentityDkimAttributesResponse' <$>
+                   (pure (fromEnum s)) <*>
+                     (x .@? "DkimAttributes" .!@ mempty >>=
+                        parseXMLMap "entry" "key" "value"))
 
--- | The DKIM attributes for an email address or a domain.
-gidarDkimAttributes :: Lens' GetIdentityDkimAttributesResponse (HashMap Text IdentityDkimAttributes)
-gidarDkimAttributes =
-    lens _gidarDkimAttributes (\s a -> s { _gidarDkimAttributes = a })
-        . _EMap
+instance ToHeaders GetIdentityDkimAttributes where
+        toHeaders = const mempty
 
 instance ToPath GetIdentityDkimAttributes where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery GetIdentityDkimAttributes where
-    toQuery GetIdentityDkimAttributes{..} = mconcat
-        [ "Identities" =? _gidaIdentities
-        ]
+        toQuery GetIdentityDkimAttributes'{..}
+          = mconcat
+              ["Action" =:
+                 ("GetIdentityDkimAttributes" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "Identities" =: toQueryList "member" _gidaIdentities]
 
-instance ToHeaders GetIdentityDkimAttributes
+-- | Represents a list of all the DKIM attributes for the specified identity.
+--
+-- /See:/ 'getIdentityDkimAttributesResponse' smart constructor.
+data GetIdentityDkimAttributesResponse = GetIdentityDkimAttributesResponse'
+    { _gidarsStatus         :: !Int
+    , _gidarsDkimAttributes :: !(Map Text IdentityDkimAttributes)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest GetIdentityDkimAttributes where
-    type Sv GetIdentityDkimAttributes = SES
-    type Rs GetIdentityDkimAttributes = GetIdentityDkimAttributesResponse
+-- | Creates a value of 'GetIdentityDkimAttributesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gidarsStatus'
+--
+-- * 'gidarsDkimAttributes'
+getIdentityDkimAttributesResponse
+    :: Int -- ^ 'gidarsStatus'
+    -> GetIdentityDkimAttributesResponse
+getIdentityDkimAttributesResponse pStatus_ =
+    GetIdentityDkimAttributesResponse'
+    { _gidarsStatus = pStatus_
+    , _gidarsDkimAttributes = mempty
+    }
 
-    request  = post "GetIdentityDkimAttributes"
-    response = xmlResponse
+-- | The response status code.
+gidarsStatus :: Lens' GetIdentityDkimAttributesResponse Int
+gidarsStatus = lens _gidarsStatus (\ s a -> s{_gidarsStatus = a});
 
-instance FromXML GetIdentityDkimAttributesResponse where
-    parseXML = withElement "GetIdentityDkimAttributesResult" $ \x -> GetIdentityDkimAttributesResponse
-        <$> x .@? "DkimAttributes" .!@ mempty
+-- | The DKIM attributes for an email address or a domain.
+gidarsDkimAttributes :: Lens' GetIdentityDkimAttributesResponse (HashMap Text IdentityDkimAttributes)
+gidarsDkimAttributes = lens _gidarsDkimAttributes (\ s a -> s{_gidarsDkimAttributes = a}) . _Map;
diff --git a/gen/Network/AWS/SES/GetIdentityNotificationAttributes.hs b/gen/Network/AWS/SES/GetIdentityNotificationAttributes.hs
--- a/gen/Network/AWS/SES/GetIdentityNotificationAttributes.hs
+++ b/gen/Network/AWS/SES/GetIdentityNotificationAttributes.hs
@@ -1,122 +1,142 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.GetIdentityNotificationAttributes
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Given a list of verified identities (email addresses and/or domains), returns
--- a structure describing identity notification attributes.
+-- Given a list of verified identities (email addresses and\/or domains),
+-- returns a structure describing identity notification attributes.
 --
 -- This action is throttled at one request per second and can only get
 -- notification attributes for up to 100 identities at a time.
 --
--- For more information about using notifications with Amazon SES, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide>.
+-- For more information about using notifications with Amazon SES, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide>.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityNotificationAttributes.html>
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityNotificationAttributes.html AWS API Reference> for GetIdentityNotificationAttributes.
 module Network.AWS.SES.GetIdentityNotificationAttributes
     (
-    -- * Request
-      GetIdentityNotificationAttributes
-    -- ** Request constructor
-    , getIdentityNotificationAttributes
-    -- ** Request lenses
+    -- * Creating a Request
+      getIdentityNotificationAttributes
+    , GetIdentityNotificationAttributes
+    -- * Request Lenses
     , ginaIdentities
 
-    -- * Response
-    , GetIdentityNotificationAttributesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getIdentityNotificationAttributesResponse
-    -- ** Response lenses
-    , ginarNotificationAttributes
+    , GetIdentityNotificationAttributesResponse
+    -- * Response Lenses
+    , ginarsStatus
+    , ginarsNotificationAttributes
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
-
-newtype GetIdentityNotificationAttributes = GetIdentityNotificationAttributes
-    { _ginaIdentities :: List "member" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList GetIdentityNotificationAttributes where
-    type Item GetIdentityNotificationAttributes = Text
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
-    fromList = GetIdentityNotificationAttributes . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _ginaIdentities
+-- | /See:/ 'getIdentityNotificationAttributes' smart constructor.
+newtype GetIdentityNotificationAttributes = GetIdentityNotificationAttributes'
+    { _ginaIdentities :: [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'GetIdentityNotificationAttributes' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'GetIdentityNotificationAttributes' with the minimum fields required to make a request.
 --
--- * 'ginaIdentities' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-getIdentityNotificationAttributes :: GetIdentityNotificationAttributes
-getIdentityNotificationAttributes = GetIdentityNotificationAttributes
+-- * 'ginaIdentities'
+getIdentityNotificationAttributes
+    :: GetIdentityNotificationAttributes
+getIdentityNotificationAttributes =
+    GetIdentityNotificationAttributes'
     { _ginaIdentities = mempty
     }
 
--- | A list of one or more identities.
+-- | A list of one or more identities. You can specify an identity by using
+-- its name or by using its Amazon Resource Name (ARN). Examples:
+-- 'user\'example.com', 'example.com',
+-- 'arn:aws:ses:us-east-1:123456789012:identity\/example.com'.
 ginaIdentities :: Lens' GetIdentityNotificationAttributes [Text]
-ginaIdentities = lens _ginaIdentities (\s a -> s { _ginaIdentities = a }) . _List
-
-newtype GetIdentityNotificationAttributesResponse = GetIdentityNotificationAttributesResponse
-    { _ginarNotificationAttributes :: EMap "entry" "key" "value" Text IdentityNotificationAttributes
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+ginaIdentities = lens _ginaIdentities (\ s a -> s{_ginaIdentities = a}) . _Coerce;
 
--- | 'GetIdentityNotificationAttributesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ginarNotificationAttributes' @::@ 'HashMap' 'Text' 'IdentityNotificationAttributes'
---
-getIdentityNotificationAttributesResponse :: GetIdentityNotificationAttributesResponse
-getIdentityNotificationAttributesResponse = GetIdentityNotificationAttributesResponse
-    { _ginarNotificationAttributes = mempty
-    }
+instance AWSRequest GetIdentityNotificationAttributes
+         where
+        type Sv GetIdentityNotificationAttributes = SES
+        type Rs GetIdentityNotificationAttributes =
+             GetIdentityNotificationAttributesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "GetIdentityNotificationAttributesResult"
+              (\ s h x ->
+                 GetIdentityNotificationAttributesResponse' <$>
+                   (pure (fromEnum s)) <*>
+                     (x .@? "NotificationAttributes" .!@ mempty >>=
+                        parseXMLMap "entry" "key" "value"))
 
--- | A map of Identity to IdentityNotificationAttributes.
-ginarNotificationAttributes :: Lens' GetIdentityNotificationAttributesResponse (HashMap Text IdentityNotificationAttributes)
-ginarNotificationAttributes =
-    lens _ginarNotificationAttributes
-        (\s a -> s { _ginarNotificationAttributes = a })
-            . _EMap
+instance ToHeaders GetIdentityNotificationAttributes
+         where
+        toHeaders = const mempty
 
-instance ToPath GetIdentityNotificationAttributes where
-    toPath = const "/"
+instance ToPath GetIdentityNotificationAttributes
+         where
+        toPath = const "/"
 
-instance ToQuery GetIdentityNotificationAttributes where
-    toQuery GetIdentityNotificationAttributes{..} = mconcat
-        [ "Identities" =? _ginaIdentities
-        ]
+instance ToQuery GetIdentityNotificationAttributes
+         where
+        toQuery GetIdentityNotificationAttributes'{..}
+          = mconcat
+              ["Action" =:
+                 ("GetIdentityNotificationAttributes" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "Identities" =: toQueryList "member" _ginaIdentities]
 
-instance ToHeaders GetIdentityNotificationAttributes
+-- | Describes whether an identity has Amazon Simple Notification Service
+-- (Amazon SNS) topics set for bounce, complaint, and\/or delivery
+-- notifications, and specifies whether feedback forwarding is enabled for
+-- bounce and complaint notifications.
+--
+-- /See:/ 'getIdentityNotificationAttributesResponse' smart constructor.
+data GetIdentityNotificationAttributesResponse = GetIdentityNotificationAttributesResponse'
+    { _ginarsStatus                 :: !Int
+    , _ginarsNotificationAttributes :: !(Map Text IdentityNotificationAttributes)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest GetIdentityNotificationAttributes where
-    type Sv GetIdentityNotificationAttributes = SES
-    type Rs GetIdentityNotificationAttributes = GetIdentityNotificationAttributesResponse
+-- | Creates a value of 'GetIdentityNotificationAttributesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ginarsStatus'
+--
+-- * 'ginarsNotificationAttributes'
+getIdentityNotificationAttributesResponse
+    :: Int -- ^ 'ginarsStatus'
+    -> GetIdentityNotificationAttributesResponse
+getIdentityNotificationAttributesResponse pStatus_ =
+    GetIdentityNotificationAttributesResponse'
+    { _ginarsStatus = pStatus_
+    , _ginarsNotificationAttributes = mempty
+    }
 
-    request  = post "GetIdentityNotificationAttributes"
-    response = xmlResponse
+-- | The response status code.
+ginarsStatus :: Lens' GetIdentityNotificationAttributesResponse Int
+ginarsStatus = lens _ginarsStatus (\ s a -> s{_ginarsStatus = a});
 
-instance FromXML GetIdentityNotificationAttributesResponse where
-    parseXML = withElement "GetIdentityNotificationAttributesResult" $ \x -> GetIdentityNotificationAttributesResponse
-        <$> x .@? "NotificationAttributes" .!@ mempty
+-- | A map of Identity to IdentityNotificationAttributes.
+ginarsNotificationAttributes :: Lens' GetIdentityNotificationAttributesResponse (HashMap Text IdentityNotificationAttributes)
+ginarsNotificationAttributes = lens _ginarsNotificationAttributes (\ s a -> s{_ginarsNotificationAttributes = a}) . _Map;
diff --git a/gen/Network/AWS/SES/GetIdentityPolicies.hs b/gen/Network/AWS/SES/GetIdentityPolicies.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/GetIdentityPolicies.hs
@@ -0,0 +1,160 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.SES.GetIdentityPolicies
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the requested sending authorization policies for the given
+-- identity (email address or domain). The policies are returned as a map
+-- of policy names to policy contents. You can retrieve a maximum of 20
+-- policies at a time.
+--
+-- This API is for the identity owner only. If you have not verified the
+-- identity, this API will return an error.
+--
+-- Sending authorization is a feature that enables an identity owner to
+-- authorize other senders to use its identities. For information about
+-- using sending authorization, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityPolicies.html AWS API Reference> for GetIdentityPolicies.
+module Network.AWS.SES.GetIdentityPolicies
+    (
+    -- * Creating a Request
+      getIdentityPolicies
+    , GetIdentityPolicies
+    -- * Request Lenses
+    , gipIdentity
+    , gipPolicyNames
+
+    -- * Destructuring the Response
+    , getIdentityPoliciesResponse
+    , GetIdentityPoliciesResponse
+    -- * Response Lenses
+    , giprsStatus
+    , giprsPolicies
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | Represents a request instructing the service to retrieve the text of a
+-- list of authorization policies applying to an identity.
+--
+-- /See:/ 'getIdentityPolicies' smart constructor.
+data GetIdentityPolicies = GetIdentityPolicies'
+    { _gipIdentity    :: !Text
+    , _gipPolicyNames :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIdentityPolicies' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gipIdentity'
+--
+-- * 'gipPolicyNames'
+getIdentityPolicies
+    :: Text -- ^ 'gipIdentity'
+    -> GetIdentityPolicies
+getIdentityPolicies pIdentity_ =
+    GetIdentityPolicies'
+    { _gipIdentity = pIdentity_
+    , _gipPolicyNames = mempty
+    }
+
+-- | The identity for which the policies will be retrieved. You can specify
+-- an identity by using its name or by using its Amazon Resource Name
+-- (ARN). Examples: 'user\'example.com', 'example.com',
+-- 'arn:aws:ses:us-east-1:123456789012:identity\/example.com'.
+--
+-- To successfully call this API, you must own the identity.
+gipIdentity :: Lens' GetIdentityPolicies Text
+gipIdentity = lens _gipIdentity (\ s a -> s{_gipIdentity = a});
+
+-- | A list of the names of policies to be retrieved. You can retrieve a
+-- maximum of 20 policies at a time. If you do not know the names of the
+-- policies that are attached to the identity, you can use
+-- 'ListIdentityPolicies'.
+gipPolicyNames :: Lens' GetIdentityPolicies [Text]
+gipPolicyNames = lens _gipPolicyNames (\ s a -> s{_gipPolicyNames = a}) . _Coerce;
+
+instance AWSRequest GetIdentityPolicies where
+        type Sv GetIdentityPolicies = SES
+        type Rs GetIdentityPolicies =
+             GetIdentityPoliciesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "GetIdentityPoliciesResult"
+              (\ s h x ->
+                 GetIdentityPoliciesResponse' <$>
+                   (pure (fromEnum s)) <*>
+                     (x .@? "Policies" .!@ mempty >>=
+                        parseXMLMap "entry" "key" "value"))
+
+instance ToHeaders GetIdentityPolicies where
+        toHeaders = const mempty
+
+instance ToPath GetIdentityPolicies where
+        toPath = const "/"
+
+instance ToQuery GetIdentityPolicies where
+        toQuery GetIdentityPolicies'{..}
+          = mconcat
+              ["Action" =: ("GetIdentityPolicies" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "Identity" =: _gipIdentity,
+               "PolicyNames" =:
+                 toQueryList "member" _gipPolicyNames]
+
+-- | Represents a map of policy names to policies returned from a successful
+-- 'GetIdentityPolicies' request.
+--
+-- /See:/ 'getIdentityPoliciesResponse' smart constructor.
+data GetIdentityPoliciesResponse = GetIdentityPoliciesResponse'
+    { _giprsStatus   :: !Int
+    , _giprsPolicies :: !(Map Text Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIdentityPoliciesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'giprsStatus'
+--
+-- * 'giprsPolicies'
+getIdentityPoliciesResponse
+    :: Int -- ^ 'giprsStatus'
+    -> GetIdentityPoliciesResponse
+getIdentityPoliciesResponse pStatus_ =
+    GetIdentityPoliciesResponse'
+    { _giprsStatus = pStatus_
+    , _giprsPolicies = mempty
+    }
+
+-- | The response status code.
+giprsStatus :: Lens' GetIdentityPoliciesResponse Int
+giprsStatus = lens _giprsStatus (\ s a -> s{_giprsStatus = a});
+
+-- | A map of policy names to policies.
+giprsPolicies :: Lens' GetIdentityPoliciesResponse (HashMap Text Text)
+giprsPolicies = lens _giprsPolicies (\ s a -> s{_giprsPolicies = a}) . _Map;
diff --git a/gen/Network/AWS/SES/GetIdentityVerificationAttributes.hs b/gen/Network/AWS/SES/GetIdentityVerificationAttributes.hs
--- a/gen/Network/AWS/SES/GetIdentityVerificationAttributes.hs
+++ b/gen/Network/AWS/SES/GetIdentityVerificationAttributes.hs
@@ -1,121 +1,137 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.GetIdentityVerificationAttributes
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Given a list of identities (email addresses and/or domains), returns the
--- verification status and (for domain identities) the verification token for
--- each identity.
+-- Given a list of identities (email addresses and\/or domains), returns
+-- the verification status and (for domain identities) the verification
+-- token for each identity.
 --
 -- This action is throttled at one request per second and can only get
 -- verification attributes for up to 100 identities at a time.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityVerificationAttributes.html>
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityVerificationAttributes.html AWS API Reference> for GetIdentityVerificationAttributes.
 module Network.AWS.SES.GetIdentityVerificationAttributes
     (
-    -- * Request
-      GetIdentityVerificationAttributes
-    -- ** Request constructor
-    , getIdentityVerificationAttributes
-    -- ** Request lenses
+    -- * Creating a Request
+      getIdentityVerificationAttributes
+    , GetIdentityVerificationAttributes
+    -- * Request Lenses
     , givaIdentities
 
-    -- * Response
-    , GetIdentityVerificationAttributesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getIdentityVerificationAttributesResponse
-    -- ** Response lenses
-    , givarVerificationAttributes
+    , GetIdentityVerificationAttributesResponse
+    -- * Response Lenses
+    , givarsStatus
+    , givarsVerificationAttributes
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
-
-newtype GetIdentityVerificationAttributes = GetIdentityVerificationAttributes
-    { _givaIdentities :: List "member" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList GetIdentityVerificationAttributes where
-    type Item GetIdentityVerificationAttributes = Text
-
-    fromList = GetIdentityVerificationAttributes . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _givaIdentities
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
--- | 'GetIdentityVerificationAttributes' constructor.
+-- | Represents a request instructing the service to provide the verification
+-- attributes for a list of identities.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getIdentityVerificationAttributes' smart constructor.
+newtype GetIdentityVerificationAttributes = GetIdentityVerificationAttributes'
+    { _givaIdentities :: [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIdentityVerificationAttributes' with the minimum fields required to make a request.
 --
--- * 'givaIdentities' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-getIdentityVerificationAttributes :: GetIdentityVerificationAttributes
-getIdentityVerificationAttributes = GetIdentityVerificationAttributes
+-- * 'givaIdentities'
+getIdentityVerificationAttributes
+    :: GetIdentityVerificationAttributes
+getIdentityVerificationAttributes =
+    GetIdentityVerificationAttributes'
     { _givaIdentities = mempty
     }
 
 -- | A list of identities.
 givaIdentities :: Lens' GetIdentityVerificationAttributes [Text]
-givaIdentities = lens _givaIdentities (\s a -> s { _givaIdentities = a }) . _List
-
-newtype GetIdentityVerificationAttributesResponse = GetIdentityVerificationAttributesResponse
-    { _givarVerificationAttributes :: EMap "entry" "key" "value" Text IdentityVerificationAttributes
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+givaIdentities = lens _givaIdentities (\ s a -> s{_givaIdentities = a}) . _Coerce;
 
--- | 'GetIdentityVerificationAttributesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'givarVerificationAttributes' @::@ 'HashMap' 'Text' 'IdentityVerificationAttributes'
---
-getIdentityVerificationAttributesResponse :: GetIdentityVerificationAttributesResponse
-getIdentityVerificationAttributesResponse = GetIdentityVerificationAttributesResponse
-    { _givarVerificationAttributes = mempty
-    }
+instance AWSRequest GetIdentityVerificationAttributes
+         where
+        type Sv GetIdentityVerificationAttributes = SES
+        type Rs GetIdentityVerificationAttributes =
+             GetIdentityVerificationAttributesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "GetIdentityVerificationAttributesResult"
+              (\ s h x ->
+                 GetIdentityVerificationAttributesResponse' <$>
+                   (pure (fromEnum s)) <*>
+                     (x .@? "VerificationAttributes" .!@ mempty >>=
+                        parseXMLMap "entry" "key" "value"))
 
--- | A map of Identities to IdentityVerificationAttributes objects.
-givarVerificationAttributes :: Lens' GetIdentityVerificationAttributesResponse (HashMap Text IdentityVerificationAttributes)
-givarVerificationAttributes =
-    lens _givarVerificationAttributes
-        (\s a -> s { _givarVerificationAttributes = a })
-            . _EMap
+instance ToHeaders GetIdentityVerificationAttributes
+         where
+        toHeaders = const mempty
 
-instance ToPath GetIdentityVerificationAttributes where
-    toPath = const "/"
+instance ToPath GetIdentityVerificationAttributes
+         where
+        toPath = const "/"
 
-instance ToQuery GetIdentityVerificationAttributes where
-    toQuery GetIdentityVerificationAttributes{..} = mconcat
-        [ "Identities" =? _givaIdentities
-        ]
+instance ToQuery GetIdentityVerificationAttributes
+         where
+        toQuery GetIdentityVerificationAttributes'{..}
+          = mconcat
+              ["Action" =:
+                 ("GetIdentityVerificationAttributes" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "Identities" =: toQueryList "member" _givaIdentities]
 
-instance ToHeaders GetIdentityVerificationAttributes
+-- | Represents the verification attributes for a list of identities.
+--
+-- /See:/ 'getIdentityVerificationAttributesResponse' smart constructor.
+data GetIdentityVerificationAttributesResponse = GetIdentityVerificationAttributesResponse'
+    { _givarsStatus                 :: !Int
+    , _givarsVerificationAttributes :: !(Map Text IdentityVerificationAttributes)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest GetIdentityVerificationAttributes where
-    type Sv GetIdentityVerificationAttributes = SES
-    type Rs GetIdentityVerificationAttributes = GetIdentityVerificationAttributesResponse
+-- | Creates a value of 'GetIdentityVerificationAttributesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'givarsStatus'
+--
+-- * 'givarsVerificationAttributes'
+getIdentityVerificationAttributesResponse
+    :: Int -- ^ 'givarsStatus'
+    -> GetIdentityVerificationAttributesResponse
+getIdentityVerificationAttributesResponse pStatus_ =
+    GetIdentityVerificationAttributesResponse'
+    { _givarsStatus = pStatus_
+    , _givarsVerificationAttributes = mempty
+    }
 
-    request  = post "GetIdentityVerificationAttributes"
-    response = xmlResponse
+-- | The response status code.
+givarsStatus :: Lens' GetIdentityVerificationAttributesResponse Int
+givarsStatus = lens _givarsStatus (\ s a -> s{_givarsStatus = a});
 
-instance FromXML GetIdentityVerificationAttributesResponse where
-    parseXML = withElement "GetIdentityVerificationAttributesResult" $ \x -> GetIdentityVerificationAttributesResponse
-        <$> x .@? "VerificationAttributes" .!@ mempty
+-- | A map of Identities to IdentityVerificationAttributes objects.
+givarsVerificationAttributes :: Lens' GetIdentityVerificationAttributesResponse (HashMap Text IdentityVerificationAttributes)
+givarsVerificationAttributes = lens _givarsVerificationAttributes (\ s a -> s{_givarsVerificationAttributes = a}) . _Map;
diff --git a/gen/Network/AWS/SES/GetSendQuota.hs b/gen/Network/AWS/SES/GetSendQuota.hs
--- a/gen/Network/AWS/SES/GetSendQuota.hs
+++ b/gen/Network/AWS/SES/GetSendQuota.hs
@@ -1,120 +1,136 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.GetSendQuota
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns the user's current sending limits.
+-- Returns the user\'s current sending limits.
 --
 -- This action is throttled at one request per second.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_GetSendQuota.html>
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_GetSendQuota.html AWS API Reference> for GetSendQuota.
 module Network.AWS.SES.GetSendQuota
     (
-    -- * Request
-      GetSendQuota
-    -- ** Request constructor
-    , getSendQuota
+    -- * Creating a Request
+      getSendQuota
+    , GetSendQuota
 
-    -- * Response
-    , GetSendQuotaResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getSendQuotaResponse
-    -- ** Response lenses
-    , gsqrMax24HourSend
-    , gsqrMaxSendRate
-    , gsqrSentLast24Hours
+    , GetSendQuotaResponse
+    -- * Response Lenses
+    , gsqrsMaxSendRate
+    , gsqrsSentLast24Hours
+    , gsqrsMax24HourSend
+    , gsqrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
-data GetSendQuota = GetSendQuota
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | /See:/ 'getSendQuota' smart constructor.
+data GetSendQuota =
+    GetSendQuota'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'GetSendQuota' constructor.
-getSendQuota :: GetSendQuota
-getSendQuota = GetSendQuota
+-- | Creates a value of 'GetSendQuota' with the minimum fields required to make a request.
+--
+getSendQuota
+    :: GetSendQuota
+getSendQuota = GetSendQuota'
 
-data GetSendQuotaResponse = GetSendQuotaResponse
-    { _gsqrMax24HourSend   :: Maybe Double
-    , _gsqrMaxSendRate     :: Maybe Double
-    , _gsqrSentLast24Hours :: Maybe Double
-    } deriving (Eq, Ord, Read, Show)
+instance AWSRequest GetSendQuota where
+        type Sv GetSendQuota = SES
+        type Rs GetSendQuota = GetSendQuotaResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "GetSendQuotaResult"
+              (\ s h x ->
+                 GetSendQuotaResponse' <$>
+                   (x .@? "MaxSendRate") <*> (x .@? "SentLast24Hours")
+                     <*> (x .@? "Max24HourSend")
+                     <*> (pure (fromEnum s)))
 
--- | 'GetSendQuotaResponse' constructor.
+instance ToHeaders GetSendQuota where
+        toHeaders = const mempty
+
+instance ToPath GetSendQuota where
+        toPath = const "/"
+
+instance ToQuery GetSendQuota where
+        toQuery
+          = const
+              (mconcat
+                 ["Action" =: ("GetSendQuota" :: ByteString),
+                  "Version" =: ("2010-12-01" :: ByteString)])
+
+-- | Represents the user\'s current activity limits returned from a
+-- successful 'GetSendQuota' request.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getSendQuotaResponse' smart constructor.
+data GetSendQuotaResponse = GetSendQuotaResponse'
+    { _gsqrsMaxSendRate     :: !(Maybe Double)
+    , _gsqrsSentLast24Hours :: !(Maybe Double)
+    , _gsqrsMax24HourSend   :: !(Maybe Double)
+    , _gsqrsStatus          :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetSendQuotaResponse' with the minimum fields required to make a request.
 --
--- * 'gsqrMax24HourSend' @::@ 'Maybe' 'Double'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gsqrMaxSendRate' @::@ 'Maybe' 'Double'
+-- * 'gsqrsMaxSendRate'
 --
--- * 'gsqrSentLast24Hours' @::@ 'Maybe' 'Double'
+-- * 'gsqrsSentLast24Hours'
 --
-getSendQuotaResponse :: GetSendQuotaResponse
-getSendQuotaResponse = GetSendQuotaResponse
-    { _gsqrMax24HourSend   = Nothing
-    , _gsqrMaxSendRate     = Nothing
-    , _gsqrSentLast24Hours = Nothing
+-- * 'gsqrsMax24HourSend'
+--
+-- * 'gsqrsStatus'
+getSendQuotaResponse
+    :: Int -- ^ 'gsqrsStatus'
+    -> GetSendQuotaResponse
+getSendQuotaResponse pStatus_ =
+    GetSendQuotaResponse'
+    { _gsqrsMaxSendRate = Nothing
+    , _gsqrsSentLast24Hours = Nothing
+    , _gsqrsMax24HourSend = Nothing
+    , _gsqrsStatus = pStatus_
     }
 
--- | The maximum number of emails the user is allowed to send in a 24-hour
--- interval. A value of -1 signifies an unlimited quota.
-gsqrMax24HourSend :: Lens' GetSendQuotaResponse (Maybe Double)
-gsqrMax24HourSend =
-    lens _gsqrMax24HourSend (\s a -> s { _gsqrMax24HourSend = a })
-
--- | The maximum number of emails that Amazon SES can accept from the user's
+-- | The maximum number of emails that Amazon SES can accept from the user\'s
 -- account per second.
 --
--- The rate at which Amazon SES accepts the user's messages might be less than
--- the maximum send rate.
-gsqrMaxSendRate :: Lens' GetSendQuotaResponse (Maybe Double)
-gsqrMaxSendRate = lens _gsqrMaxSendRate (\s a -> s { _gsqrMaxSendRate = a })
+-- The rate at which Amazon SES accepts the user\'s messages might be less
+-- than the maximum send rate.
+gsqrsMaxSendRate :: Lens' GetSendQuotaResponse (Maybe Double)
+gsqrsMaxSendRate = lens _gsqrsMaxSendRate (\ s a -> s{_gsqrsMaxSendRate = a});
 
 -- | The number of emails sent during the previous 24 hours.
-gsqrSentLast24Hours :: Lens' GetSendQuotaResponse (Maybe Double)
-gsqrSentLast24Hours =
-    lens _gsqrSentLast24Hours (\s a -> s { _gsqrSentLast24Hours = a })
-
-instance ToPath GetSendQuota where
-    toPath = const "/"
-
-instance ToQuery GetSendQuota where
-    toQuery = const mempty
-
-instance ToHeaders GetSendQuota
-
-instance AWSRequest GetSendQuota where
-    type Sv GetSendQuota = SES
-    type Rs GetSendQuota = GetSendQuotaResponse
+gsqrsSentLast24Hours :: Lens' GetSendQuotaResponse (Maybe Double)
+gsqrsSentLast24Hours = lens _gsqrsSentLast24Hours (\ s a -> s{_gsqrsSentLast24Hours = a});
 
-    request  = post "GetSendQuota"
-    response = xmlResponse
+-- | The maximum number of emails the user is allowed to send in a 24-hour
+-- interval. A value of -1 signifies an unlimited quota.
+gsqrsMax24HourSend :: Lens' GetSendQuotaResponse (Maybe Double)
+gsqrsMax24HourSend = lens _gsqrsMax24HourSend (\ s a -> s{_gsqrsMax24HourSend = a});
 
-instance FromXML GetSendQuotaResponse where
-    parseXML = withElement "GetSendQuotaResult" $ \x -> GetSendQuotaResponse
-        <$> x .@? "Max24HourSend"
-        <*> x .@? "MaxSendRate"
-        <*> x .@? "SentLast24Hours"
+-- | The response status code.
+gsqrsStatus :: Lens' GetSendQuotaResponse Int
+gsqrsStatus = lens _gsqrsStatus (\ s a -> s{_gsqrsStatus = a});
diff --git a/gen/Network/AWS/SES/GetSendStatistics.hs b/gen/Network/AWS/SES/GetSendStatistics.hs
--- a/gen/Network/AWS/SES/GetSendStatistics.hs
+++ b/gen/Network/AWS/SES/GetSendStatistics.hs
@@ -1,104 +1,118 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.GetSendStatistics
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns the user's sending statistics. The result is a list of data points,
--- representing the last two weeks of sending activity.
+-- Returns the user\'s sending statistics. The result is a list of data
+-- points, representing the last two weeks of sending activity.
 --
--- Each data point in the list contains statistics for a 15-minute interval.
+-- Each data point in the list contains statistics for a 15-minute
+-- interval.
 --
 -- This action is throttled at one request per second.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_GetSendStatistics.html>
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_GetSendStatistics.html AWS API Reference> for GetSendStatistics.
 module Network.AWS.SES.GetSendStatistics
     (
-    -- * Request
-      GetSendStatistics
-    -- ** Request constructor
-    , getSendStatistics
+    -- * Creating a Request
+      getSendStatistics
+    , GetSendStatistics
 
-    -- * Response
-    , GetSendStatisticsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getSendStatisticsResponse
-    -- ** Response lenses
-    , gssrSendDataPoints
+    , GetSendStatisticsResponse
+    -- * Response Lenses
+    , gssrsSendDataPoints
+    , gssrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
-data GetSendStatistics = GetSendStatistics
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | /See:/ 'getSendStatistics' smart constructor.
+data GetSendStatistics =
+    GetSendStatistics'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'GetSendStatistics' constructor.
-getSendStatistics :: GetSendStatistics
-getSendStatistics = GetSendStatistics
+-- | Creates a value of 'GetSendStatistics' with the minimum fields required to make a request.
+--
+getSendStatistics
+    :: GetSendStatistics
+getSendStatistics = GetSendStatistics'
 
-newtype GetSendStatisticsResponse = GetSendStatisticsResponse
-    { _gssrSendDataPoints :: List "member" SendDataPoint
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest GetSendStatistics where
+        type Sv GetSendStatistics = SES
+        type Rs GetSendStatistics = GetSendStatisticsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "GetSendStatisticsResult"
+              (\ s h x ->
+                 GetSendStatisticsResponse' <$>
+                   (x .@? "SendDataPoints" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-instance GHC.Exts.IsList GetSendStatisticsResponse where
-    type Item GetSendStatisticsResponse = SendDataPoint
+instance ToHeaders GetSendStatistics where
+        toHeaders = const mempty
 
-    fromList = GetSendStatisticsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _gssrSendDataPoints
+instance ToPath GetSendStatistics where
+        toPath = const "/"
 
--- | 'GetSendStatisticsResponse' constructor.
+instance ToQuery GetSendStatistics where
+        toQuery
+          = const
+              (mconcat
+                 ["Action" =: ("GetSendStatistics" :: ByteString),
+                  "Version" =: ("2010-12-01" :: ByteString)])
+
+-- | Represents a list of 'SendDataPoint' items returned from a successful
+-- 'GetSendStatistics' request. This list contains aggregated data from the
+-- previous two weeks of sending activity.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getSendStatisticsResponse' smart constructor.
+data GetSendStatisticsResponse = GetSendStatisticsResponse'
+    { _gssrsSendDataPoints :: !(Maybe [SendDataPoint])
+    , _gssrsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetSendStatisticsResponse' with the minimum fields required to make a request.
 --
--- * 'gssrSendDataPoints' @::@ ['SendDataPoint']
+-- Use one of the following lenses to modify other fields as desired:
 --
-getSendStatisticsResponse :: GetSendStatisticsResponse
-getSendStatisticsResponse = GetSendStatisticsResponse
-    { _gssrSendDataPoints = mempty
+-- * 'gssrsSendDataPoints'
+--
+-- * 'gssrsStatus'
+getSendStatisticsResponse
+    :: Int -- ^ 'gssrsStatus'
+    -> GetSendStatisticsResponse
+getSendStatisticsResponse pStatus_ =
+    GetSendStatisticsResponse'
+    { _gssrsSendDataPoints = Nothing
+    , _gssrsStatus = pStatus_
     }
 
 -- | A list of data points, each of which represents 15 minutes of activity.
-gssrSendDataPoints :: Lens' GetSendStatisticsResponse [SendDataPoint]
-gssrSendDataPoints =
-    lens _gssrSendDataPoints (\s a -> s { _gssrSendDataPoints = a })
-        . _List
-
-instance ToPath GetSendStatistics where
-    toPath = const "/"
-
-instance ToQuery GetSendStatistics where
-    toQuery = const mempty
-
-instance ToHeaders GetSendStatistics
-
-instance AWSRequest GetSendStatistics where
-    type Sv GetSendStatistics = SES
-    type Rs GetSendStatistics = GetSendStatisticsResponse
-
-    request  = post "GetSendStatistics"
-    response = xmlResponse
+gssrsSendDataPoints :: Lens' GetSendStatisticsResponse [SendDataPoint]
+gssrsSendDataPoints = lens _gssrsSendDataPoints (\ s a -> s{_gssrsSendDataPoints = a}) . _Default . _Coerce;
 
-instance FromXML GetSendStatisticsResponse where
-    parseXML = withElement "GetSendStatisticsResult" $ \x -> GetSendStatisticsResponse
-        <$> x .@? "SendDataPoints" .!@ mempty
+-- | The response status code.
+gssrsStatus :: Lens' GetSendStatisticsResponse Int
+gssrsStatus = lens _gssrsStatus (\ s a -> s{_gssrsStatus = a});
diff --git a/gen/Network/AWS/SES/ListIdentities.hs b/gen/Network/AWS/SES/ListIdentities.hs
--- a/gen/Network/AWS/SES/ListIdentities.hs
+++ b/gen/Network/AWS/SES/ListIdentities.hs
@@ -1,148 +1,170 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.ListIdentities
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns a list containing all of the identities (email addresses and domains)
--- for a specific AWS Account, regardless of verification status.
+-- Returns a list containing all of the identities (email addresses and
+-- domains) for a specific AWS Account, regardless of verification status.
 --
 -- This action is throttled at one request per second.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentities.html>
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentities.html AWS API Reference> for ListIdentities.
+--
+-- This operation returns paginated results.
 module Network.AWS.SES.ListIdentities
     (
-    -- * Request
-      ListIdentities
-    -- ** Request constructor
-    , listIdentities
-    -- ** Request lenses
+    -- * Creating a Request
+      listIdentities
+    , ListIdentities
+    -- * Request Lenses
     , liIdentityType
-    , liMaxItems
     , liNextToken
+    , liMaxItems
 
-    -- * Response
-    , ListIdentitiesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listIdentitiesResponse
-    -- ** Response lenses
-    , lirIdentities
-    , lirNextToken
+    , ListIdentitiesResponse
+    -- * Response Lenses
+    , lirsNextToken
+    , lirsStatus
+    , lirsIdentities
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
-
-data ListIdentities = ListIdentities
-    { _liIdentityType :: Maybe IdentityType
-    , _liMaxItems     :: Maybe Int
-    , _liNextToken    :: Maybe Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
--- | 'ListIdentities' constructor.
+-- | Represents a request instructing the service to list all identities for
+-- the AWS Account.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'listIdentities' smart constructor.
+data ListIdentities = ListIdentities'
+    { _liIdentityType :: !(Maybe IdentityType)
+    , _liNextToken    :: !(Maybe Text)
+    , _liMaxItems     :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListIdentities' with the minimum fields required to make a request.
 --
--- * 'liIdentityType' @::@ 'Maybe' 'IdentityType'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'liMaxItems' @::@ 'Maybe' 'Int'
+-- * 'liIdentityType'
 --
--- * 'liNextToken' @::@ 'Maybe' 'Text'
+-- * 'liNextToken'
 --
-listIdentities :: ListIdentities
-listIdentities = ListIdentities
+-- * 'liMaxItems'
+listIdentities
+    :: ListIdentities
+listIdentities =
+    ListIdentities'
     { _liIdentityType = Nothing
-    , _liNextToken    = Nothing
-    , _liMaxItems     = Nothing
+    , _liNextToken = Nothing
+    , _liMaxItems = Nothing
     }
 
--- | The type of the identities to list. Possible values are "EmailAddress" and
--- "Domain". If this parameter is omitted, then all identities will be listed.
+-- | The type of the identities to list. Possible values are \"EmailAddress\"
+-- and \"Domain\". If this parameter is omitted, then all identities will
+-- be listed.
 liIdentityType :: Lens' ListIdentities (Maybe IdentityType)
-liIdentityType = lens _liIdentityType (\s a -> s { _liIdentityType = a })
-
--- | The maximum number of identities per page. Possible values are 1-1000
--- inclusive.
-liMaxItems :: Lens' ListIdentities (Maybe Int)
-liMaxItems = lens _liMaxItems (\s a -> s { _liMaxItems = a })
+liIdentityType = lens _liIdentityType (\ s a -> s{_liIdentityType = a});
 
 -- | The token to use for pagination.
 liNextToken :: Lens' ListIdentities (Maybe Text)
-liNextToken = lens _liNextToken (\s a -> s { _liNextToken = a })
+liNextToken = lens _liNextToken (\ s a -> s{_liNextToken = a});
 
-data ListIdentitiesResponse = ListIdentitiesResponse
-    { _lirIdentities :: List "member" Text
-    , _lirNextToken  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | The maximum number of identities per page. Possible values are 1-1000
+-- inclusive.
+liMaxItems :: Lens' ListIdentities (Maybe Int)
+liMaxItems = lens _liMaxItems (\ s a -> s{_liMaxItems = a});
 
--- | 'ListIdentitiesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lirIdentities' @::@ ['Text']
---
--- * 'lirNextToken' @::@ 'Maybe' 'Text'
---
-listIdentitiesResponse :: ListIdentitiesResponse
-listIdentitiesResponse = ListIdentitiesResponse
-    { _lirIdentities = mempty
-    , _lirNextToken  = Nothing
-    }
+instance AWSPager ListIdentities where
+        page rq rs
+          | stop (rs ^. lirsNextToken) = Nothing
+          | stop (rs ^. lirsIdentities) = Nothing
+          | otherwise =
+            Just $ rq & liNextToken .~ rs ^. lirsNextToken
 
--- | A list of identities.
-lirIdentities :: Lens' ListIdentitiesResponse [Text]
-lirIdentities = lens _lirIdentities (\s a -> s { _lirIdentities = a }) . _List
+instance AWSRequest ListIdentities where
+        type Sv ListIdentities = SES
+        type Rs ListIdentities = ListIdentitiesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "ListIdentitiesResult"
+              (\ s h x ->
+                 ListIdentitiesResponse' <$>
+                   (x .@? "NextToken") <*> (pure (fromEnum s)) <*>
+                     (x .@? "Identities" .!@ mempty >>=
+                        parseXMLList "member"))
 
--- | The token used for pagination.
-lirNextToken :: Lens' ListIdentitiesResponse (Maybe Text)
-lirNextToken = lens _lirNextToken (\s a -> s { _lirNextToken = a })
+instance ToHeaders ListIdentities where
+        toHeaders = const mempty
 
 instance ToPath ListIdentities where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ListIdentities where
-    toQuery ListIdentities{..} = mconcat
-        [ "IdentityType" =? _liIdentityType
-        , "MaxItems"     =? _liMaxItems
-        , "NextToken"    =? _liNextToken
-        ]
+        toQuery ListIdentities'{..}
+          = mconcat
+              ["Action" =: ("ListIdentities" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "IdentityType" =: _liIdentityType,
+               "NextToken" =: _liNextToken,
+               "MaxItems" =: _liMaxItems]
 
-instance ToHeaders ListIdentities
+-- | Represents a list of all verified identities for the AWS Account.
+--
+-- /See:/ 'listIdentitiesResponse' smart constructor.
+data ListIdentitiesResponse = ListIdentitiesResponse'
+    { _lirsNextToken  :: !(Maybe Text)
+    , _lirsStatus     :: !Int
+    , _lirsIdentities :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ListIdentities where
-    type Sv ListIdentities = SES
-    type Rs ListIdentities = ListIdentitiesResponse
+-- | Creates a value of 'ListIdentitiesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lirsNextToken'
+--
+-- * 'lirsStatus'
+--
+-- * 'lirsIdentities'
+listIdentitiesResponse
+    :: Int -- ^ 'lirsStatus'
+    -> ListIdentitiesResponse
+listIdentitiesResponse pStatus_ =
+    ListIdentitiesResponse'
+    { _lirsNextToken = Nothing
+    , _lirsStatus = pStatus_
+    , _lirsIdentities = mempty
+    }
 
-    request  = post "ListIdentities"
-    response = xmlResponse
+-- | The token used for pagination.
+lirsNextToken :: Lens' ListIdentitiesResponse (Maybe Text)
+lirsNextToken = lens _lirsNextToken (\ s a -> s{_lirsNextToken = a});
 
-instance FromXML ListIdentitiesResponse where
-    parseXML = withElement "ListIdentitiesResult" $ \x -> ListIdentitiesResponse
-        <$> x .@? "Identities" .!@ mempty
-        <*> x .@? "NextToken"
+-- | The response status code.
+lirsStatus :: Lens' ListIdentitiesResponse Int
+lirsStatus = lens _lirsStatus (\ s a -> s{_lirsStatus = a});
 
-instance AWSPager ListIdentities where
-    page rq rs
-        | stop (rs ^. lirNextToken) = Nothing
-        | otherwise = (\x -> rq & liNextToken ?~ x)
-            <$> (rs ^. lirNextToken)
+-- | A list of identities.
+lirsIdentities :: Lens' ListIdentitiesResponse [Text]
+lirsIdentities = lens _lirsIdentities (\ s a -> s{_lirsIdentities = a}) . _Coerce;
diff --git a/gen/Network/AWS/SES/ListIdentityPolicies.hs b/gen/Network/AWS/SES/ListIdentityPolicies.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/ListIdentityPolicies.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.SES.ListIdentityPolicies
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of sending authorization policies that are attached to
+-- the given identity (email address or domain). This API returns only a
+-- list. If you want the actual policy content, you can use
+-- 'GetIdentityPolicies'.
+--
+-- This API is for the identity owner only. If you have not verified the
+-- identity, this API will return an error.
+--
+-- Sending authorization is a feature that enables an identity owner to
+-- authorize other senders to use its identities. For information about
+-- using sending authorization, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentityPolicies.html AWS API Reference> for ListIdentityPolicies.
+module Network.AWS.SES.ListIdentityPolicies
+    (
+    -- * Creating a Request
+      listIdentityPolicies
+    , ListIdentityPolicies
+    -- * Request Lenses
+    , lipIdentity
+
+    -- * Destructuring the Response
+    , listIdentityPoliciesResponse
+    , ListIdentityPoliciesResponse
+    -- * Response Lenses
+    , liprsStatus
+    , liprsPolicyNames
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | Represents a request instructing the service to list all authorization
+-- policies, by name, applying to an identity.
+--
+-- /See:/ 'listIdentityPolicies' smart constructor.
+newtype ListIdentityPolicies = ListIdentityPolicies'
+    { _lipIdentity :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListIdentityPolicies' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lipIdentity'
+listIdentityPolicies
+    :: Text -- ^ 'lipIdentity'
+    -> ListIdentityPolicies
+listIdentityPolicies pIdentity_ =
+    ListIdentityPolicies'
+    { _lipIdentity = pIdentity_
+    }
+
+-- | The identity that is associated with the policy for which the policies
+-- will be listed. You can specify an identity by using its name or by
+-- using its Amazon Resource Name (ARN). Examples: 'user\'example.com',
+-- 'example.com',
+-- 'arn:aws:ses:us-east-1:123456789012:identity\/example.com'.
+--
+-- To successfully call this API, you must own the identity.
+lipIdentity :: Lens' ListIdentityPolicies Text
+lipIdentity = lens _lipIdentity (\ s a -> s{_lipIdentity = a});
+
+instance AWSRequest ListIdentityPolicies where
+        type Sv ListIdentityPolicies = SES
+        type Rs ListIdentityPolicies =
+             ListIdentityPoliciesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "ListIdentityPoliciesResult"
+              (\ s h x ->
+                 ListIdentityPoliciesResponse' <$>
+                   (pure (fromEnum s)) <*>
+                     (x .@? "PolicyNames" .!@ mempty >>=
+                        parseXMLList "member"))
+
+instance ToHeaders ListIdentityPolicies where
+        toHeaders = const mempty
+
+instance ToPath ListIdentityPolicies where
+        toPath = const "/"
+
+instance ToQuery ListIdentityPolicies where
+        toQuery ListIdentityPolicies'{..}
+          = mconcat
+              ["Action" =: ("ListIdentityPolicies" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "Identity" =: _lipIdentity]
+
+-- | Represents a list of policy names returned from a successful
+-- 'ListIdentityPolicies' request.
+--
+-- /See:/ 'listIdentityPoliciesResponse' smart constructor.
+data ListIdentityPoliciesResponse = ListIdentityPoliciesResponse'
+    { _liprsStatus      :: !Int
+    , _liprsPolicyNames :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListIdentityPoliciesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'liprsStatus'
+--
+-- * 'liprsPolicyNames'
+listIdentityPoliciesResponse
+    :: Int -- ^ 'liprsStatus'
+    -> ListIdentityPoliciesResponse
+listIdentityPoliciesResponse pStatus_ =
+    ListIdentityPoliciesResponse'
+    { _liprsStatus = pStatus_
+    , _liprsPolicyNames = mempty
+    }
+
+-- | The response status code.
+liprsStatus :: Lens' ListIdentityPoliciesResponse Int
+liprsStatus = lens _liprsStatus (\ s a -> s{_liprsStatus = a});
+
+-- | A list of names of policies that apply to the specified identity.
+liprsPolicyNames :: Lens' ListIdentityPoliciesResponse [Text]
+liprsPolicyNames = lens _liprsPolicyNames (\ s a -> s{_liprsPolicyNames = a}) . _Coerce;
diff --git a/gen/Network/AWS/SES/ListVerifiedEmailAddresses.hs b/gen/Network/AWS/SES/ListVerifiedEmailAddresses.hs
--- a/gen/Network/AWS/SES/ListVerifiedEmailAddresses.hs
+++ b/gen/Network/AWS/SES/ListVerifiedEmailAddresses.hs
@@ -1,103 +1,121 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.ListVerifiedEmailAddresses
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns a list containing all of the email addresses that have been verified.
+-- Returns a list containing all of the email addresses that have been
+-- verified.
 --
--- The ListVerifiedEmailAddresses action is deprecated as of the May 15, 2012
--- release of Domain Verification. The ListIdentities action is now preferred. This action is throttled at one request per second.
+-- The ListVerifiedEmailAddresses action is deprecated as of the May 15,
+-- 2012 release of Domain Verification. The ListIdentities action is now
+-- preferred.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_ListVerifiedEmailAddresses.html>
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_ListVerifiedEmailAddresses.html AWS API Reference> for ListVerifiedEmailAddresses.
 module Network.AWS.SES.ListVerifiedEmailAddresses
     (
-    -- * Request
-      ListVerifiedEmailAddresses
-    -- ** Request constructor
-    , listVerifiedEmailAddresses
+    -- * Creating a Request
+      listVerifiedEmailAddresses
+    , ListVerifiedEmailAddresses
 
-    -- * Response
-    , ListVerifiedEmailAddressesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listVerifiedEmailAddressesResponse
-    -- ** Response lenses
-    , lvearVerifiedEmailAddresses
+    , ListVerifiedEmailAddressesResponse
+    -- * Response Lenses
+    , lvearsVerifiedEmailAddresses
+    , lvearsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
-data ListVerifiedEmailAddresses = ListVerifiedEmailAddresses
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | /See:/ 'listVerifiedEmailAddresses' smart constructor.
+data ListVerifiedEmailAddresses =
+    ListVerifiedEmailAddresses'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ListVerifiedEmailAddresses' constructor.
-listVerifiedEmailAddresses :: ListVerifiedEmailAddresses
-listVerifiedEmailAddresses = ListVerifiedEmailAddresses
+-- | Creates a value of 'ListVerifiedEmailAddresses' with the minimum fields required to make a request.
+--
+listVerifiedEmailAddresses
+    :: ListVerifiedEmailAddresses
+listVerifiedEmailAddresses = ListVerifiedEmailAddresses'
 
-newtype ListVerifiedEmailAddressesResponse = ListVerifiedEmailAddressesResponse
-    { _lvearVerifiedEmailAddresses :: List "member" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
+instance AWSRequest ListVerifiedEmailAddresses where
+        type Sv ListVerifiedEmailAddresses = SES
+        type Rs ListVerifiedEmailAddresses =
+             ListVerifiedEmailAddressesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "ListVerifiedEmailAddressesResult"
+              (\ s h x ->
+                 ListVerifiedEmailAddressesResponse' <$>
+                   (x .@? "VerifiedEmailAddresses" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-instance GHC.Exts.IsList ListVerifiedEmailAddressesResponse where
-    type Item ListVerifiedEmailAddressesResponse = Text
+instance ToHeaders ListVerifiedEmailAddresses where
+        toHeaders = const mempty
 
-    fromList = ListVerifiedEmailAddressesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _lvearVerifiedEmailAddresses
+instance ToPath ListVerifiedEmailAddresses where
+        toPath = const "/"
 
--- | 'ListVerifiedEmailAddressesResponse' constructor.
+instance ToQuery ListVerifiedEmailAddresses where
+        toQuery
+          = const
+              (mconcat
+                 ["Action" =:
+                    ("ListVerifiedEmailAddresses" :: ByteString),
+                  "Version" =: ("2010-12-01" :: ByteString)])
+
+-- | Represents a list of all the email addresses verified for the current
+-- user.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'listVerifiedEmailAddressesResponse' smart constructor.
+data ListVerifiedEmailAddressesResponse = ListVerifiedEmailAddressesResponse'
+    { _lvearsVerifiedEmailAddresses :: !(Maybe [Text])
+    , _lvearsStatus                 :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListVerifiedEmailAddressesResponse' with the minimum fields required to make a request.
 --
--- * 'lvearVerifiedEmailAddresses' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-listVerifiedEmailAddressesResponse :: ListVerifiedEmailAddressesResponse
-listVerifiedEmailAddressesResponse = ListVerifiedEmailAddressesResponse
-    { _lvearVerifiedEmailAddresses = mempty
+-- * 'lvearsVerifiedEmailAddresses'
+--
+-- * 'lvearsStatus'
+listVerifiedEmailAddressesResponse
+    :: Int -- ^ 'lvearsStatus'
+    -> ListVerifiedEmailAddressesResponse
+listVerifiedEmailAddressesResponse pStatus_ =
+    ListVerifiedEmailAddressesResponse'
+    { _lvearsVerifiedEmailAddresses = Nothing
+    , _lvearsStatus = pStatus_
     }
 
 -- | A list of email addresses that have been verified.
-lvearVerifiedEmailAddresses :: Lens' ListVerifiedEmailAddressesResponse [Text]
-lvearVerifiedEmailAddresses =
-    lens _lvearVerifiedEmailAddresses
-        (\s a -> s { _lvearVerifiedEmailAddresses = a })
-            . _List
-
-instance ToPath ListVerifiedEmailAddresses where
-    toPath = const "/"
-
-instance ToQuery ListVerifiedEmailAddresses where
-    toQuery = const mempty
-
-instance ToHeaders ListVerifiedEmailAddresses
-
-instance AWSRequest ListVerifiedEmailAddresses where
-    type Sv ListVerifiedEmailAddresses = SES
-    type Rs ListVerifiedEmailAddresses = ListVerifiedEmailAddressesResponse
-
-    request  = post "ListVerifiedEmailAddresses"
-    response = xmlResponse
+lvearsVerifiedEmailAddresses :: Lens' ListVerifiedEmailAddressesResponse [Text]
+lvearsVerifiedEmailAddresses = lens _lvearsVerifiedEmailAddresses (\ s a -> s{_lvearsVerifiedEmailAddresses = a}) . _Default . _Coerce;
 
-instance FromXML ListVerifiedEmailAddressesResponse where
-    parseXML = withElement "ListVerifiedEmailAddressesResult" $ \x -> ListVerifiedEmailAddressesResponse
-        <$> x .@? "VerifiedEmailAddresses" .!@ mempty
+-- | The response status code.
+lvearsStatus :: Lens' ListVerifiedEmailAddressesResponse Int
+lvearsStatus = lens _lvearsStatus (\ s a -> s{_lvearsStatus = a});
diff --git a/gen/Network/AWS/SES/PutIdentityPolicy.hs b/gen/Network/AWS/SES/PutIdentityPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/PutIdentityPolicy.hs
@@ -0,0 +1,160 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.SES.PutIdentityPolicy
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds or updates a sending authorization policy for the specified
+-- identity (email address or domain).
+--
+-- This API is for the identity owner only. If you have not verified the
+-- identity, this API will return an error.
+--
+-- Sending authorization is a feature that enables an identity owner to
+-- authorize other senders to use its identities. For information about
+-- using sending authorization, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_PutIdentityPolicy.html AWS API Reference> for PutIdentityPolicy.
+module Network.AWS.SES.PutIdentityPolicy
+    (
+    -- * Creating a Request
+      putIdentityPolicy
+    , PutIdentityPolicy
+    -- * Request Lenses
+    , pipIdentity
+    , pipPolicyName
+    , pipPolicy
+
+    -- * Destructuring the Response
+    , putIdentityPolicyResponse
+    , PutIdentityPolicyResponse
+    -- * Response Lenses
+    , piprsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | Represents a request instructing the service to apply an authorization
+-- policy to an identity.
+--
+-- /See:/ 'putIdentityPolicy' smart constructor.
+data PutIdentityPolicy = PutIdentityPolicy'
+    { _pipIdentity   :: !Text
+    , _pipPolicyName :: !Text
+    , _pipPolicy     :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PutIdentityPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pipIdentity'
+--
+-- * 'pipPolicyName'
+--
+-- * 'pipPolicy'
+putIdentityPolicy
+    :: Text -- ^ 'pipIdentity'
+    -> Text -- ^ 'pipPolicyName'
+    -> Text -- ^ 'pipPolicy'
+    -> PutIdentityPolicy
+putIdentityPolicy pIdentity_ pPolicyName_ pPolicy_ =
+    PutIdentityPolicy'
+    { _pipIdentity = pIdentity_
+    , _pipPolicyName = pPolicyName_
+    , _pipPolicy = pPolicy_
+    }
+
+-- | The identity to which the policy will apply. You can specify an identity
+-- by using its name or by using its Amazon Resource Name (ARN). Examples:
+-- 'user\'example.com', 'example.com',
+-- 'arn:aws:ses:us-east-1:123456789012:identity\/example.com'.
+--
+-- To successfully call this API, you must own the identity.
+pipIdentity :: Lens' PutIdentityPolicy Text
+pipIdentity = lens _pipIdentity (\ s a -> s{_pipIdentity = a});
+
+-- | The name of the policy.
+--
+-- The policy name cannot exceed 64 characters and can only include
+-- alphanumeric characters, dashes, and underscores.
+pipPolicyName :: Lens' PutIdentityPolicy Text
+pipPolicyName = lens _pipPolicyName (\ s a -> s{_pipPolicyName = a});
+
+-- | The text of the policy in JSON format. The policy cannot exceed 4 KB.
+--
+-- For information about the syntax of sending authorization policies, see
+-- the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policies.html Amazon SES Developer Guide>.
+pipPolicy :: Lens' PutIdentityPolicy Text
+pipPolicy = lens _pipPolicy (\ s a -> s{_pipPolicy = a});
+
+instance AWSRequest PutIdentityPolicy where
+        type Sv PutIdentityPolicy = SES
+        type Rs PutIdentityPolicy = PutIdentityPolicyResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "PutIdentityPolicyResult"
+              (\ s h x ->
+                 PutIdentityPolicyResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders PutIdentityPolicy where
+        toHeaders = const mempty
+
+instance ToPath PutIdentityPolicy where
+        toPath = const "/"
+
+instance ToQuery PutIdentityPolicy where
+        toQuery PutIdentityPolicy'{..}
+          = mconcat
+              ["Action" =: ("PutIdentityPolicy" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "Identity" =: _pipIdentity,
+               "PolicyName" =: _pipPolicyName,
+               "Policy" =: _pipPolicy]
+
+-- | An empty element. Receiving this element indicates that the request
+-- completed successfully.
+--
+-- /See:/ 'putIdentityPolicyResponse' smart constructor.
+newtype PutIdentityPolicyResponse = PutIdentityPolicyResponse'
+    { _piprsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PutIdentityPolicyResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piprsStatus'
+putIdentityPolicyResponse
+    :: Int -- ^ 'piprsStatus'
+    -> PutIdentityPolicyResponse
+putIdentityPolicyResponse pStatus_ =
+    PutIdentityPolicyResponse'
+    { _piprsStatus = pStatus_
+    }
+
+-- | The response status code.
+piprsStatus :: Lens' PutIdentityPolicyResponse Int
+piprsStatus = lens _piprsStatus (\ s a -> s{_piprsStatus = a});
diff --git a/gen/Network/AWS/SES/SendEmail.hs b/gen/Network/AWS/SES/SendEmail.hs
--- a/gen/Network/AWS/SES/SendEmail.hs
+++ b/gen/Network/AWS/SES/SendEmail.hs
@@ -1,182 +1,268 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.SendEmail
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Composes an email message based on input data, and then immediately queues
--- the message for sending.
---
--- You can only send email from verified email addresses and domains. If your
--- account is still in the Amazon SES sandbox, you must also verify every
--- recipient email address except for the recipients provided by the Amazon SES
--- mailbox simulator. For more information, go to the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
--- The total size of the message cannot exceed 10 MB.
+-- Composes an email message based on input data, and then immediately
+-- queues the message for sending.
 --
--- Amazon SES has a limit on the total number of recipients per message: The
--- combined number of To:, CC: and BCC: email addresses cannot exceed 50. If you
--- need to send an email message to a larger audience, you can divide your
--- recipient list into groups of 50 or fewer, and then call Amazon SES
--- repeatedly to send the message to each group.
+-- There are several important points to know about 'SendEmail':
 --
--- For every message that you send, the total number of recipients (To:, CC:
--- and BCC:) is counted against your /sending quota/ - the maximum number of
--- emails you can send in a 24-hour period. For information about your sending
--- quota, go to the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html Amazon SES Developer Guide>.
+-- -   You can only send email from verified email addresses and domains;
+--     otherwise, you will get an \"Email address not verified\" error. If
+--     your account is still in the Amazon SES sandbox, you must also
+--     verify every recipient email address except for the recipients
+--     provided by the Amazon SES mailbox simulator. For more information,
+--     go to the
+--     <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
+-- -   The total size of the message cannot exceed 10 MB. This includes any
+--     attachments that are part of the message.
+-- -   Amazon SES has a limit on the total number of recipients per
+--     message. The combined number of To:, CC: and BCC: email addresses
+--     cannot exceed 50. If you need to send an email message to a larger
+--     audience, you can divide your recipient list into groups of 50 or
+--     fewer, and then call Amazon SES repeatedly to send the message to
+--     each group.
+-- -   For every message that you send, the total number of recipients
+--     (To:, CC: and BCC:) is counted against your sending quota - the
+--     maximum number of emails you can send in a 24-hour period. For
+--     information about your sending quota, go to the
+--     <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html Amazon SES Developer Guide>.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_SendEmail.html>
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_SendEmail.html AWS API Reference> for SendEmail.
 module Network.AWS.SES.SendEmail
     (
-    -- * Request
-      SendEmail
-    -- ** Request constructor
-    , sendEmail
-    -- ** Request lenses
-    , seDestination
-    , seMessage
-    , seReplyToAddresses
+    -- * Creating a Request
+      sendEmail
+    , SendEmail
+    -- * Request Lenses
     , seReturnPath
+    , seSourceARN
+    , seReturnPathARN
+    , seReplyToAddresses
     , seSource
+    , seDestination
+    , seMessage
 
-    -- * Response
-    , SendEmailResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , sendEmailResponse
-    -- ** Response lenses
-    , serMessageId
+    , SendEmailResponse
+    -- * Response Lenses
+    , sersStatus
+    , sersMessageId
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
-data SendEmail = SendEmail
-    { _seDestination      :: Destination
-    , _seMessage          :: Message
-    , _seReplyToAddresses :: List "member" Text
-    , _seReturnPath       :: Maybe Text
-    , _seSource           :: Text
-    } deriving (Eq, Read, Show)
+-- | Represents a request instructing the service to send a single email
+-- message.
+--
+-- This datatype can be used in application code to compose a message
+-- consisting of source, destination, message, reply-to, and return-path
+-- parts. This object can then be sent using the 'SendEmail' action.
+--
+-- /See:/ 'sendEmail' smart constructor.
+data SendEmail = SendEmail'
+    { _seReturnPath       :: !(Maybe Text)
+    , _seSourceARN        :: !(Maybe Text)
+    , _seReturnPathARN    :: !(Maybe Text)
+    , _seReplyToAddresses :: !(Maybe [Text])
+    , _seSource           :: !Text
+    , _seDestination      :: !Destination
+    , _seMessage          :: !Message
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'SendEmail' constructor.
+-- | Creates a value of 'SendEmail' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'seDestination' @::@ 'Destination'
+-- * 'seReturnPath'
 --
--- * 'seMessage' @::@ 'Message'
+-- * 'seSourceARN'
 --
--- * 'seReplyToAddresses' @::@ ['Text']
+-- * 'seReturnPathARN'
 --
--- * 'seReturnPath' @::@ 'Maybe' 'Text'
+-- * 'seReplyToAddresses'
 --
--- * 'seSource' @::@ 'Text'
+-- * 'seSource'
 --
-sendEmail :: Text -- ^ 'seSource'
-          -> Destination -- ^ 'seDestination'
-          -> Message -- ^ 'seMessage'
-          -> SendEmail
-sendEmail p1 p2 p3 = SendEmail
-    { _seSource           = p1
-    , _seDestination      = p2
-    , _seMessage          = p3
-    , _seReplyToAddresses = mempty
-    , _seReturnPath       = Nothing
+-- * 'seDestination'
+--
+-- * 'seMessage'
+sendEmail
+    :: Text -- ^ 'seSource'
+    -> Destination -- ^ 'seDestination'
+    -> Message -- ^ 'seMessage'
+    -> SendEmail
+sendEmail pSource_ pDestination_ pMessage_ =
+    SendEmail'
+    { _seReturnPath = Nothing
+    , _seSourceARN = Nothing
+    , _seReturnPathARN = Nothing
+    , _seReplyToAddresses = Nothing
+    , _seSource = pSource_
+    , _seDestination = pDestination_
+    , _seMessage = pMessage_
     }
 
--- | The destination for this email, composed of To:, CC:, and BCC: fields.
-seDestination :: Lens' SendEmail Destination
-seDestination = lens _seDestination (\s a -> s { _seDestination = a })
+-- | The email address to which bounces and complaints are to be forwarded
+-- when feedback forwarding is enabled. If the message cannot be delivered
+-- to the recipient, then an error message will be returned from the
+-- recipient\'s ISP; this message will then be forwarded to the email
+-- address specified by the 'ReturnPath' parameter. The 'ReturnPath'
+-- parameter is never overwritten. This email address must be either
+-- individually verified with Amazon SES, or from a domain that has been
+-- verified with Amazon SES.
+seReturnPath :: Lens' SendEmail (Maybe Text)
+seReturnPath = lens _seReturnPath (\ s a -> s{_seReturnPath = a});
 
--- | The message to be sent.
-seMessage :: Lens' SendEmail Message
-seMessage = lens _seMessage (\s a -> s { _seMessage = a })
+-- | This parameter is used only for sending authorization. It is the ARN of
+-- the identity that is associated with the sending authorization policy
+-- that permits you to send for the email address specified in the 'Source'
+-- parameter.
+--
+-- For example, if the owner of 'example.com' (which has ARN
+-- 'arn:aws:ses:us-east-1:123456789012:identity\/example.com') attaches a
+-- policy to it that authorizes you to send from 'user\'example.com', then
+-- you would specify the 'SourceArn' to be
+-- 'arn:aws:ses:us-east-1:123456789012:identity\/example.com', and the
+-- 'Source' to be 'user\'example.com'.
+--
+-- For more information about sending authorization, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+seSourceARN :: Lens' SendEmail (Maybe Text)
+seSourceARN = lens _seSourceARN (\ s a -> s{_seSourceARN = a});
 
--- | The reply-to email address(es) for the message. If the recipient replies to
--- the message, each reply-to address will receive the reply.
-seReplyToAddresses :: Lens' SendEmail [Text]
-seReplyToAddresses =
-    lens _seReplyToAddresses (\s a -> s { _seReplyToAddresses = a })
-        . _List
+-- | This parameter is used only for sending authorization. It is the ARN of
+-- the identity that is associated with the sending authorization policy
+-- that permits you to use the email address specified in the 'ReturnPath'
+-- parameter.
+--
+-- For example, if the owner of 'example.com' (which has ARN
+-- 'arn:aws:ses:us-east-1:123456789012:identity\/example.com') attaches a
+-- policy to it that authorizes you to use 'feedback\'example.com', then
+-- you would specify the 'ReturnPathArn' to be
+-- 'arn:aws:ses:us-east-1:123456789012:identity\/example.com', and the
+-- 'ReturnPath' to be 'feedback\'example.com'.
+--
+-- For more information about sending authorization, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+seReturnPathARN :: Lens' SendEmail (Maybe Text)
+seReturnPathARN = lens _seReturnPathARN (\ s a -> s{_seReturnPathARN = a});
 
--- | The email address to which bounces and complaints are to be forwarded when
--- feedback forwarding is enabled. If the message cannot be delivered to the
--- recipient, then an error message will be returned from the recipient's ISP;
--- this message will then be forwarded to the email address specified by the 'ReturnPath' parameter. The 'ReturnPath' parameter is never overwritten. This email address
--- must be either individually verified with Amazon SES, or from a domain that
--- has been verified with Amazon SES.
-seReturnPath :: Lens' SendEmail (Maybe Text)
-seReturnPath = lens _seReturnPath (\s a -> s { _seReturnPath = a })
+-- | The reply-to email address(es) for the message. If the recipient replies
+-- to the message, each reply-to address will receive the reply.
+seReplyToAddresses :: Lens' SendEmail [Text]
+seReplyToAddresses = lens _seReplyToAddresses (\ s a -> s{_seReplyToAddresses = a}) . _Default . _Coerce;
 
--- | The identity's email address.
+-- | The email address that is sending the email. This email address must be
+-- either individually verified with Amazon SES, or from a domain that has
+-- been verified with Amazon SES. For information about verifying
+-- identities, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
 --
--- By default, the string must be 7-bit ASCII. If the text must contain any
--- other characters, then you must use MIME encoded-word syntax (RFC 2047)
--- instead of a literal string. MIME encoded-word syntax uses the following
--- form: '=?charset?encoding?encoded-text?='. For more information, see <http://tools.ietf.org/html/rfc2047 RFC 2047>.
+-- If you are sending on behalf of another user and have been permitted to
+-- do so by a sending authorization policy, then you must also specify the
+-- 'SourceArn' parameter. For more information about sending authorization,
+-- see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- In all cases, the email address must be 7-bit ASCII. If the text must
+-- contain any other characters, then you must use MIME encoded-word syntax
+-- (RFC 2047) instead of a literal string. MIME encoded-word syntax uses
+-- the following form: '=?charset?encoding?encoded-text?='. For more
+-- information, see <http://tools.ietf.org/html/rfc2047 RFC 2047>.
 seSource :: Lens' SendEmail Text
-seSource = lens _seSource (\s a -> s { _seSource = a })
+seSource = lens _seSource (\ s a -> s{_seSource = a});
 
-newtype SendEmailResponse = SendEmailResponse
-    { _serMessageId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+-- | The destination for this email, composed of To:, CC:, and BCC: fields.
+seDestination :: Lens' SendEmail Destination
+seDestination = lens _seDestination (\ s a -> s{_seDestination = a});
 
--- | 'SendEmailResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'serMessageId' @::@ 'Text'
---
-sendEmailResponse :: Text -- ^ 'serMessageId'
-                  -> SendEmailResponse
-sendEmailResponse p1 = SendEmailResponse
-    { _serMessageId = p1
-    }
+-- | The message to be sent.
+seMessage :: Lens' SendEmail Message
+seMessage = lens _seMessage (\ s a -> s{_seMessage = a});
 
--- | The unique message identifier returned from the 'SendEmail' action.
-serMessageId :: Lens' SendEmailResponse Text
-serMessageId = lens _serMessageId (\s a -> s { _serMessageId = a })
+instance AWSRequest SendEmail where
+        type Sv SendEmail = SES
+        type Rs SendEmail = SendEmailResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "SendEmailResult"
+              (\ s h x ->
+                 SendEmailResponse' <$>
+                   (pure (fromEnum s)) <*> (x .@ "MessageId"))
 
+instance ToHeaders SendEmail where
+        toHeaders = const mempty
+
 instance ToPath SendEmail where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery SendEmail where
-    toQuery SendEmail{..} = mconcat
-        [ "Destination"      =? _seDestination
-        , "Message"          =? _seMessage
-        , "ReplyToAddresses" =? _seReplyToAddresses
-        , "ReturnPath"       =? _seReturnPath
-        , "Source"           =? _seSource
-        ]
+        toQuery SendEmail'{..}
+          = mconcat
+              ["Action" =: ("SendEmail" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "ReturnPath" =: _seReturnPath,
+               "SourceArn" =: _seSourceARN,
+               "ReturnPathArn" =: _seReturnPathARN,
+               "ReplyToAddresses" =:
+                 toQuery
+                   (toQueryList "member" <$> _seReplyToAddresses),
+               "Source" =: _seSource,
+               "Destination" =: _seDestination,
+               "Message" =: _seMessage]
 
-instance ToHeaders SendEmail
+-- | Represents a unique message ID returned from a successful 'SendEmail'
+-- request.
+--
+-- /See:/ 'sendEmailResponse' smart constructor.
+data SendEmailResponse = SendEmailResponse'
+    { _sersStatus    :: !Int
+    , _sersMessageId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest SendEmail where
-    type Sv SendEmail = SES
-    type Rs SendEmail = SendEmailResponse
+-- | Creates a value of 'SendEmailResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sersStatus'
+--
+-- * 'sersMessageId'
+sendEmailResponse
+    :: Int -- ^ 'sersStatus'
+    -> Text -- ^ 'sersMessageId'
+    -> SendEmailResponse
+sendEmailResponse pStatus_ pMessageId_ =
+    SendEmailResponse'
+    { _sersStatus = pStatus_
+    , _sersMessageId = pMessageId_
+    }
 
-    request  = post "SendEmail"
-    response = xmlResponse
+-- | The response status code.
+sersStatus :: Lens' SendEmailResponse Int
+sersStatus = lens _sersStatus (\ s a -> s{_sersStatus = a});
 
-instance FromXML SendEmailResponse where
-    parseXML = withElement "SendEmailResult" $ \x -> SendEmailResponse
-        <$> x .@  "MessageId"
+-- | The unique message identifier returned from the 'SendEmail' action.
+sersMessageId :: Lens' SendEmailResponse Text
+sersMessageId = lens _sersMessageId (\ s a -> s{_sersMessageId = a});
diff --git a/gen/Network/AWS/SES/SendRawEmail.hs b/gen/Network/AWS/SES/SendRawEmail.hs
--- a/gen/Network/AWS/SES/SendRawEmail.hs
+++ b/gen/Network/AWS/SES/SendRawEmail.hs
@@ -1,173 +1,303 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.SendRawEmail
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Sends an email message, with header and content specified by the client. The 'SendRawEmail' action is useful for sending multipart MIME emails. The raw text of the
--- message must comply with Internet email standards; otherwise, the message
--- cannot be sent.
---
--- You can only send email from verified email addresses and domains. If your
--- account is still in the Amazon SES sandbox, you must also verify every
--- recipient email address except for the recipients provided by the Amazon SES
--- mailbox simulator. For more information, go to the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
--- The total size of the message cannot exceed 10 MB. This includes any
--- attachments that are part of the message.
+-- Sends an email message, with header and content specified by the client.
+-- The 'SendRawEmail' action is useful for sending multipart MIME emails.
+-- The raw text of the message must comply with Internet email standards;
+-- otherwise, the message cannot be sent.
 --
--- Amazon SES has a limit on the total number of recipients per message: The
--- combined number of To:, CC: and BCC: email addresses cannot exceed 50. If you
--- need to send an email message to a larger audience, you can divide your
--- recipient list into groups of 50 or fewer, and then call Amazon SES
--- repeatedly to send the message to each group.
+-- There are several important points to know about 'SendRawEmail':
 --
--- The To:, CC:, and BCC: headers in the raw message can contain a group list.
--- Note that each recipient in a group list counts towards the 50-recipient
--- limit.
+-- -   You can only send email from verified email addresses and domains;
+--     otherwise, you will get an \"Email address not verified\" error. If
+--     your account is still in the Amazon SES sandbox, you must also
+--     verify every recipient email address except for the recipients
+--     provided by the Amazon SES mailbox simulator. For more information,
+--     go to the
+--     <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
+-- -   The total size of the message cannot exceed 10 MB. This includes any
+--     attachments that are part of the message.
+-- -   Amazon SES has a limit on the total number of recipients per
+--     message. The combined number of To:, CC: and BCC: email addresses
+--     cannot exceed 50. If you need to send an email message to a larger
+--     audience, you can divide your recipient list into groups of 50 or
+--     fewer, and then call Amazon SES repeatedly to send the message to
+--     each group.
+-- -   The To:, CC:, and BCC: headers in the raw message can contain a
+--     group list. Note that each recipient in a group list counts towards
+--     the 50-recipient limit.
+-- -   For every message that you send, the total number of recipients
+--     (To:, CC: and BCC:) is counted against your sending quota - the
+--     maximum number of emails you can send in a 24-hour period. For
+--     information about your sending quota, go to the
+--     <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html Amazon SES Developer Guide>.
+-- -   If you are using sending authorization to send on behalf of another
+--     user, 'SendRawEmail' enables you to specify the cross-account
+--     identity for the email\'s \"Source,\" \"From,\" and \"Return-Path\"
+--     parameters in one of two ways: you can pass optional parameters
+--     'SourceArn', 'FromArn', and\/or 'ReturnPathArn' to the API, or you
+--     can include the following X-headers in the header of your raw email:
+--     -   'X-SES-SOURCE-ARN'
+--     -   'X-SES-FROM-ARN'
+--     -   'X-SES-RETURN-PATH-ARN'
 --
--- For every message that you send, the total number of recipients (To:, CC:
--- and BCC:) is counted against your /sending quota/ - the maximum number of
--- emails you can send in a 24-hour period. For information about your sending
--- quota, go to the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html Amazon SES Developer Guide>.
+--     Do not include these X-headers in the DKIM signature, because they
+--     are removed by Amazon SES before sending the email.
+--     For the most common sending authorization use case, we recommend
+--     that you specify the 'SourceIdentityArn' and do not specify either
+--     the 'FromIdentityArn' or 'ReturnPathIdentityArn'. (The same note
+--     applies to the corresponding X-headers.) If you only specify the
+--     'SourceIdentityArn', Amazon SES will simply set the \"From\" address
+--     and the \"Return Path\" address to the identity specified in
+--     'SourceIdentityArn'. For more information about sending
+--     authorization, see the
+--     <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_SendRawEmail.html>
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_SendRawEmail.html AWS API Reference> for SendRawEmail.
 module Network.AWS.SES.SendRawEmail
     (
-    -- * Request
-      SendRawEmail
-    -- ** Request constructor
-    , sendRawEmail
-    -- ** Request lenses
+    -- * Creating a Request
+      sendRawEmail
+    , SendRawEmail
+    -- * Request Lenses
+    , sreSourceARN
     , sreDestinations
-    , sreRawMessage
+    , sreReturnPathARN
     , sreSource
+    , sreFromARN
+    , sreRawMessage
 
-    -- * Response
-    , SendRawEmailResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , sendRawEmailResponse
-    -- ** Response lenses
-    , srerMessageId
+    , SendRawEmailResponse
+    -- * Response Lenses
+    , srersStatus
+    , srersMessageId
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
-data SendRawEmail = SendRawEmail
-    { _sreDestinations :: List "member" Text
-    , _sreRawMessage   :: RawMessage
-    , _sreSource       :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | Represents a request instructing the service to send a raw email
+-- message.
+--
+-- This datatype can be used in application code to compose a message
+-- consisting of source, destination, and raw message text. This object can
+-- then be sent using the 'SendRawEmail' action.
+--
+-- /See:/ 'sendRawEmail' smart constructor.
+data SendRawEmail = SendRawEmail'
+    { _sreSourceARN     :: !(Maybe Text)
+    , _sreDestinations  :: !(Maybe [Text])
+    , _sreReturnPathARN :: !(Maybe Text)
+    , _sreSource        :: !(Maybe Text)
+    , _sreFromARN       :: !(Maybe Text)
+    , _sreRawMessage    :: !RawMessage
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'SendRawEmail' constructor.
+-- | Creates a value of 'SendRawEmail' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sreDestinations' @::@ ['Text']
+-- * 'sreSourceARN'
 --
--- * 'sreRawMessage' @::@ 'RawMessage'
+-- * 'sreDestinations'
 --
--- * 'sreSource' @::@ 'Maybe' 'Text'
+-- * 'sreReturnPathARN'
 --
-sendRawEmail :: RawMessage -- ^ 'sreRawMessage'
-             -> SendRawEmail
-sendRawEmail p1 = SendRawEmail
-    { _sreRawMessage   = p1
-    , _sreSource       = Nothing
-    , _sreDestinations = mempty
+-- * 'sreSource'
+--
+-- * 'sreFromARN'
+--
+-- * 'sreRawMessage'
+sendRawEmail
+    :: RawMessage -- ^ 'sreRawMessage'
+    -> SendRawEmail
+sendRawEmail pRawMessage_ =
+    SendRawEmail'
+    { _sreSourceARN = Nothing
+    , _sreDestinations = Nothing
+    , _sreReturnPathARN = Nothing
+    , _sreSource = Nothing
+    , _sreFromARN = Nothing
+    , _sreRawMessage = pRawMessage_
     }
 
+-- | This parameter is used only for sending authorization. It is the ARN of
+-- the identity that is associated with the sending authorization policy
+-- that permits you to send for the email address specified in the 'Source'
+-- parameter.
+--
+-- For example, if the owner of 'example.com' (which has ARN
+-- 'arn:aws:ses:us-east-1:123456789012:identity\/example.com') attaches a
+-- policy to it that authorizes you to send from 'user\'example.com', then
+-- you would specify the 'SourceArn' to be
+-- 'arn:aws:ses:us-east-1:123456789012:identity\/example.com', and the
+-- 'Source' to be 'user\'example.com'.
+--
+-- Instead of using this parameter, you can use the X-header
+-- 'X-SES-SOURCE-ARN' in the raw message of the email. If you use both the
+-- 'SourceArn' parameter and the corresponding X-header, Amazon SES uses
+-- the value of the 'SourceArn' parameter.
+--
+-- For information about when to use this parameter, see the description of
+-- 'SendRawEmail' in this guide, or see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-delegate-sender-tasks-email.html Amazon SES Developer Guide>.
+sreSourceARN :: Lens' SendRawEmail (Maybe Text)
+sreSourceARN = lens _sreSourceARN (\ s a -> s{_sreSourceARN = a});
+
 -- | A list of destinations for the message, consisting of To:, CC:, and BCC:
 -- addresses.
 sreDestinations :: Lens' SendRawEmail [Text]
-sreDestinations = lens _sreDestinations (\s a -> s { _sreDestinations = a }) . _List
+sreDestinations = lens _sreDestinations (\ s a -> s{_sreDestinations = a}) . _Default . _Coerce;
 
--- | The raw text of the message. The client is responsible for ensuring the
--- following:
+-- | This parameter is used only for sending authorization. It is the ARN of
+-- the identity that is associated with the sending authorization policy
+-- that permits you to use the email address specified in the 'ReturnPath'
+-- parameter.
 --
--- Message must contain a header and a body, separated by a blank line. All
--- required header fields must be present. Each part of a multipart MIME message
--- must be formatted properly. MIME content types must be among those supported
--- by Amazon SES. For more information, go to the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/mime-types.html Amazon SES Developer Guide>.  Content must be base64-encoded, if MIME requires it.
+-- For example, if the owner of 'example.com' (which has ARN
+-- 'arn:aws:ses:us-east-1:123456789012:identity\/example.com') attaches a
+-- policy to it that authorizes you to use 'feedback\'example.com', then
+-- you would specify the 'ReturnPathArn' to be
+-- 'arn:aws:ses:us-east-1:123456789012:identity\/example.com', and the
+-- 'ReturnPath' to be 'feedback\'example.com'.
 --
-sreRawMessage :: Lens' SendRawEmail RawMessage
-sreRawMessage = lens _sreRawMessage (\s a -> s { _sreRawMessage = a })
+-- Instead of using this parameter, you can use the X-header
+-- 'X-SES-RETURN-PATH-ARN' in the raw message of the email. If you use both
+-- the 'ReturnPathArn' parameter and the corresponding X-header, Amazon SES
+-- uses the value of the 'ReturnPathArn' parameter.
+--
+-- For information about when to use this parameter, see the description of
+-- 'SendRawEmail' in this guide, or see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-delegate-sender-tasks-email.html Amazon SES Developer Guide>.
+sreReturnPathARN :: Lens' SendRawEmail (Maybe Text)
+sreReturnPathARN = lens _sreReturnPathARN (\ s a -> s{_sreReturnPathARN = a});
 
--- | The identity's email address. If you do not provide a value for this
--- parameter, you must specify a "From" address in the raw text of the message.
--- (You can also specify both.)
+-- | The identity\'s email address. If you do not provide a value for this
+-- parameter, you must specify a \"From\" address in the raw text of the
+-- message. (You can also specify both.)
 --
 -- By default, the string must be 7-bit ASCII. If the text must contain any
 -- other characters, then you must use MIME encoded-word syntax (RFC 2047)
 -- instead of a literal string. MIME encoded-word syntax uses the following
--- form: '=?charset?encoding?encoded-text?='. For more information, see <http://tools.ietf.org/html/rfc2047 RFC 2047>.
+-- form: '=?charset?encoding?encoded-text?='. For more information, see
+-- <http://tools.ietf.org/html/rfc2047 RFC 2047>.
 --
--- If you specify the 'Source' parameter and have feedback forwarding enabled,
--- then bounces and complaints will be sent to this email address. This takes
--- precedence over any /Return-Path/ header that you might include in the raw text
--- of the message.
+-- If you specify the 'Source' parameter and have feedback forwarding
+-- enabled, then bounces and complaints will be sent to this email address.
+-- This takes precedence over any /Return-Path/ header that you might
+-- include in the raw text of the message.
 sreSource :: Lens' SendRawEmail (Maybe Text)
-sreSource = lens _sreSource (\s a -> s { _sreSource = a })
-
-newtype SendRawEmailResponse = SendRawEmailResponse
-    { _srerMessageId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+sreSource = lens _sreSource (\ s a -> s{_sreSource = a});
 
--- | 'SendRawEmailResponse' constructor.
+-- | This parameter is used only for sending authorization. It is the ARN of
+-- the identity that is associated with the sending authorization policy
+-- that permits you to specify a particular \"From\" address in the header
+-- of the raw email.
 --
--- The fields accessible through corresponding lenses are:
+-- Instead of using this parameter, you can use the X-header
+-- 'X-SES-FROM-ARN' in the raw message of the email. If you use both the
+-- 'FromArn' parameter and the corresponding X-header, Amazon SES uses the
+-- value of the 'FromArn' parameter.
 --
--- * 'srerMessageId' @::@ 'Text'
+-- For information about when to use this parameter, see the description of
+-- 'SendRawEmail' in this guide, or see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-delegate-sender-tasks-email.html Amazon SES Developer Guide>.
+sreFromARN :: Lens' SendRawEmail (Maybe Text)
+sreFromARN = lens _sreFromARN (\ s a -> s{_sreFromARN = a});
+
+-- | The raw text of the message. The client is responsible for ensuring the
+-- following:
 --
-sendRawEmailResponse :: Text -- ^ 'srerMessageId'
-                     -> SendRawEmailResponse
-sendRawEmailResponse p1 = SendRawEmailResponse
-    { _srerMessageId = p1
-    }
+-- -   Message must contain a header and a body, separated by a blank line.
+-- -   All required header fields must be present.
+-- -   Each part of a multipart MIME message must be formatted properly.
+-- -   MIME content types must be among those supported by Amazon SES. For
+--     more information, go to the
+--     <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/mime-types.html Amazon SES Developer Guide>.
+-- -   Content must be base64-encoded, if MIME requires it.
+sreRawMessage :: Lens' SendRawEmail RawMessage
+sreRawMessage = lens _sreRawMessage (\ s a -> s{_sreRawMessage = a});
 
--- | The unique message identifier returned from the 'SendRawEmail' action.
-srerMessageId :: Lens' SendRawEmailResponse Text
-srerMessageId = lens _srerMessageId (\s a -> s { _srerMessageId = a })
+instance AWSRequest SendRawEmail where
+        type Sv SendRawEmail = SES
+        type Rs SendRawEmail = SendRawEmailResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "SendRawEmailResult"
+              (\ s h x ->
+                 SendRawEmailResponse' <$>
+                   (pure (fromEnum s)) <*> (x .@ "MessageId"))
 
+instance ToHeaders SendRawEmail where
+        toHeaders = const mempty
+
 instance ToPath SendRawEmail where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery SendRawEmail where
-    toQuery SendRawEmail{..} = mconcat
-        [ "Destinations" =? _sreDestinations
-        , "RawMessage"   =? _sreRawMessage
-        , "Source"       =? _sreSource
-        ]
+        toQuery SendRawEmail'{..}
+          = mconcat
+              ["Action" =: ("SendRawEmail" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "SourceArn" =: _sreSourceARN,
+               "Destinations" =:
+                 toQuery (toQueryList "member" <$> _sreDestinations),
+               "ReturnPathArn" =: _sreReturnPathARN,
+               "Source" =: _sreSource, "FromArn" =: _sreFromARN,
+               "RawMessage" =: _sreRawMessage]
 
-instance ToHeaders SendRawEmail
+-- | Represents a unique message ID returned from a successful 'SendRawEmail'
+-- request.
+--
+-- /See:/ 'sendRawEmailResponse' smart constructor.
+data SendRawEmailResponse = SendRawEmailResponse'
+    { _srersStatus    :: !Int
+    , _srersMessageId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest SendRawEmail where
-    type Sv SendRawEmail = SES
-    type Rs SendRawEmail = SendRawEmailResponse
+-- | Creates a value of 'SendRawEmailResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'srersStatus'
+--
+-- * 'srersMessageId'
+sendRawEmailResponse
+    :: Int -- ^ 'srersStatus'
+    -> Text -- ^ 'srersMessageId'
+    -> SendRawEmailResponse
+sendRawEmailResponse pStatus_ pMessageId_ =
+    SendRawEmailResponse'
+    { _srersStatus = pStatus_
+    , _srersMessageId = pMessageId_
+    }
 
-    request  = post "SendRawEmail"
-    response = xmlResponse
+-- | The response status code.
+srersStatus :: Lens' SendRawEmailResponse Int
+srersStatus = lens _srersStatus (\ s a -> s{_srersStatus = a});
 
-instance FromXML SendRawEmailResponse where
-    parseXML = withElement "SendRawEmailResult" $ \x -> SendRawEmailResponse
-        <$> x .@  "MessageId"
+-- | The unique message identifier returned from the 'SendRawEmail' action.
+srersMessageId :: Lens' SendRawEmailResponse Text
+srersMessageId = lens _srersMessageId (\ s a -> s{_srersMessageId = a});
diff --git a/gen/Network/AWS/SES/SetIdentityDkimEnabled.hs b/gen/Network/AWS/SES/SetIdentityDkimEnabled.hs
--- a/gen/Network/AWS/SES/SetIdentityDkimEnabled.hs
+++ b/gen/Network/AWS/SES/SetIdentityDkimEnabled.hs
@@ -1,113 +1,146 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.SetIdentityDkimEnabled
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Enables or disables Easy DKIM signing of email sent from an identity:
+-- Enables or disables Easy DKIM signing of email sent from an identity:
 --
--- If Easy DKIM signing is enabled for a domain name identity (e.g., 'example.com'), then Amazon SES will DKIM-sign all email sent by addresses under that
--- domain name (e.g., 'user@example.com'). If Easy DKIM signing is enabled for an
--- email address, then Amazon SES will DKIM-sign all email sent by that email
--- address.  For email addresses (e.g., 'user@example.com'), you can only enable
--- Easy DKIM signing if the corresponding domain (e.g., 'example.com') has been
--- set up for Easy DKIM using the AWS Console or the 'VerifyDomainDkim' action.
+-- -   If Easy DKIM signing is enabled for a domain name identity (e.g.,
+--     'example.com'), then Amazon SES will DKIM-sign all email sent by
+--     addresses under that domain name (e.g., 'user\'example.com').
+-- -   If Easy DKIM signing is enabled for an email address, then Amazon
+--     SES will DKIM-sign all email sent by that email address.
 --
+-- For email addresses (e.g., 'user\'example.com'), you can only enable
+-- Easy DKIM signing if the corresponding domain (e.g., 'example.com') has
+-- been set up for Easy DKIM using the AWS Console or the
+-- 'VerifyDomainDkim' action.
+--
 -- This action is throttled at one request per second.
 --
--- For more information about Easy DKIM signing, go to the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES DeveloperGuide>.
+-- For more information about Easy DKIM signing, go to the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide>.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityDkimEnabled.html>
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityDkimEnabled.html AWS API Reference> for SetIdentityDkimEnabled.
 module Network.AWS.SES.SetIdentityDkimEnabled
     (
-    -- * Request
-      SetIdentityDkimEnabled
-    -- ** Request constructor
-    , setIdentityDkimEnabled
-    -- ** Request lenses
-    , sideDkimEnabled
+    -- * Creating a Request
+      setIdentityDkimEnabled
+    , SetIdentityDkimEnabled
+    -- * Request Lenses
     , sideIdentity
+    , sideDkimEnabled
 
-    -- * Response
-    , SetIdentityDkimEnabledResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setIdentityDkimEnabledResponse
+    , SetIdentityDkimEnabledResponse
+    -- * Response Lenses
+    , sidersStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
-
-data SetIdentityDkimEnabled = SetIdentityDkimEnabled
-    { _sideDkimEnabled :: Bool
-    , _sideIdentity    :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
--- | 'SetIdentityDkimEnabled' constructor.
+-- | Represents a request instructing the service to enable or disable DKIM
+-- signing for an identity.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'setIdentityDkimEnabled' smart constructor.
+data SetIdentityDkimEnabled = SetIdentityDkimEnabled'
+    { _sideIdentity    :: !Text
+    , _sideDkimEnabled :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetIdentityDkimEnabled' with the minimum fields required to make a request.
 --
--- * 'sideDkimEnabled' @::@ 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sideIdentity' @::@ 'Text'
+-- * 'sideIdentity'
 --
-setIdentityDkimEnabled :: Text -- ^ 'sideIdentity'
-                       -> Bool -- ^ 'sideDkimEnabled'
-                       -> SetIdentityDkimEnabled
-setIdentityDkimEnabled p1 p2 = SetIdentityDkimEnabled
-    { _sideIdentity    = p1
-    , _sideDkimEnabled = p2
+-- * 'sideDkimEnabled'
+setIdentityDkimEnabled
+    :: Text -- ^ 'sideIdentity'
+    -> Bool -- ^ 'sideDkimEnabled'
+    -> SetIdentityDkimEnabled
+setIdentityDkimEnabled pIdentity_ pDkimEnabled_ =
+    SetIdentityDkimEnabled'
+    { _sideIdentity = pIdentity_
+    , _sideDkimEnabled = pDkimEnabled_
     }
 
--- | Sets whether DKIM signing is enabled for an identity. Set to 'true' to enable
--- DKIM signing for this identity; 'false' to disable it.
-sideDkimEnabled :: Lens' SetIdentityDkimEnabled Bool
-sideDkimEnabled = lens _sideDkimEnabled (\s a -> s { _sideDkimEnabled = a })
-
 -- | The identity for which DKIM signing should be enabled or disabled.
 sideIdentity :: Lens' SetIdentityDkimEnabled Text
-sideIdentity = lens _sideIdentity (\s a -> s { _sideIdentity = a })
+sideIdentity = lens _sideIdentity (\ s a -> s{_sideIdentity = a});
 
-data SetIdentityDkimEnabledResponse = SetIdentityDkimEnabledResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | Sets whether DKIM signing is enabled for an identity. Set to 'true' to
+-- enable DKIM signing for this identity; 'false' to disable it.
+sideDkimEnabled :: Lens' SetIdentityDkimEnabled Bool
+sideDkimEnabled = lens _sideDkimEnabled (\ s a -> s{_sideDkimEnabled = a});
 
--- | 'SetIdentityDkimEnabledResponse' constructor.
-setIdentityDkimEnabledResponse :: SetIdentityDkimEnabledResponse
-setIdentityDkimEnabledResponse = SetIdentityDkimEnabledResponse
+instance AWSRequest SetIdentityDkimEnabled where
+        type Sv SetIdentityDkimEnabled = SES
+        type Rs SetIdentityDkimEnabled =
+             SetIdentityDkimEnabledResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "SetIdentityDkimEnabledResult"
+              (\ s h x ->
+                 SetIdentityDkimEnabledResponse' <$>
+                   (pure (fromEnum s)))
 
+instance ToHeaders SetIdentityDkimEnabled where
+        toHeaders = const mempty
+
 instance ToPath SetIdentityDkimEnabled where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery SetIdentityDkimEnabled where
-    toQuery SetIdentityDkimEnabled{..} = mconcat
-        [ "DkimEnabled" =? _sideDkimEnabled
-        , "Identity"    =? _sideIdentity
-        ]
+        toQuery SetIdentityDkimEnabled'{..}
+          = mconcat
+              ["Action" =:
+                 ("SetIdentityDkimEnabled" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "Identity" =: _sideIdentity,
+               "DkimEnabled" =: _sideDkimEnabled]
 
-instance ToHeaders SetIdentityDkimEnabled
+-- | An empty element. Receiving this element indicates that the request
+-- completed successfully.
+--
+-- /See:/ 'setIdentityDkimEnabledResponse' smart constructor.
+newtype SetIdentityDkimEnabledResponse = SetIdentityDkimEnabledResponse'
+    { _sidersStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest SetIdentityDkimEnabled where
-    type Sv SetIdentityDkimEnabled = SES
-    type Rs SetIdentityDkimEnabled = SetIdentityDkimEnabledResponse
+-- | Creates a value of 'SetIdentityDkimEnabledResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sidersStatus'
+setIdentityDkimEnabledResponse
+    :: Int -- ^ 'sidersStatus'
+    -> SetIdentityDkimEnabledResponse
+setIdentityDkimEnabledResponse pStatus_ =
+    SetIdentityDkimEnabledResponse'
+    { _sidersStatus = pStatus_
+    }
 
-    request  = post "SetIdentityDkimEnabled"
-    response = nullResponse SetIdentityDkimEnabledResponse
+-- | The response status code.
+sidersStatus :: Lens' SetIdentityDkimEnabledResponse Int
+sidersStatus = lens _sidersStatus (\ s a -> s{_sidersStatus = a});
diff --git a/gen/Network/AWS/SES/SetIdentityFeedbackForwardingEnabled.hs b/gen/Network/AWS/SES/SetIdentityFeedbackForwardingEnabled.hs
--- a/gen/Network/AWS/SES/SetIdentityFeedbackForwardingEnabled.hs
+++ b/gen/Network/AWS/SES/SetIdentityFeedbackForwardingEnabled.hs
@@ -1,118 +1,151 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.SetIdentityFeedbackForwardingEnabled
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Given an identity (email address or domain), enables or disables whether
--- Amazon SES forwards bounce and complaint notifications as email. Feedback
--- forwarding can only be disabled when Amazon Simple Notification Service
--- (Amazon SNS) topics are specified for both bounces and complaints.
+-- Given an identity (email address or domain), enables or disables whether
+-- Amazon SES forwards bounce and complaint notifications as email.
+-- Feedback forwarding can only be disabled when Amazon Simple Notification
+-- Service (Amazon SNS) topics are specified for both bounces and
+-- complaints.
 --
 -- Feedback forwarding does not apply to delivery notifications. Delivery
--- notifications are only available through Amazon SNS. This action is throttled
--- at one request per second.
+-- notifications are only available through Amazon SNS.
 --
--- For more information about using notifications with Amazon SES, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide>.
+-- This action is throttled at one request per second.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityFeedbackForwardingEnabled.html>
+-- For more information about using notifications with Amazon SES, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide>.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityFeedbackForwardingEnabled.html AWS API Reference> for SetIdentityFeedbackForwardingEnabled.
 module Network.AWS.SES.SetIdentityFeedbackForwardingEnabled
     (
-    -- * Request
-      SetIdentityFeedbackForwardingEnabled
-    -- ** Request constructor
-    , setIdentityFeedbackForwardingEnabled
-    -- ** Request lenses
-    , siffeForwardingEnabled
+    -- * Creating a Request
+      setIdentityFeedbackForwardingEnabled
+    , SetIdentityFeedbackForwardingEnabled
+    -- * Request Lenses
     , siffeIdentity
+    , siffeForwardingEnabled
 
-    -- * Response
-    , SetIdentityFeedbackForwardingEnabledResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setIdentityFeedbackForwardingEnabledResponse
+    , SetIdentityFeedbackForwardingEnabledResponse
+    -- * Response Lenses
+    , siffersStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
-data SetIdentityFeedbackForwardingEnabled = SetIdentityFeedbackForwardingEnabled
-    { _siffeForwardingEnabled :: Bool
-    , _siffeIdentity          :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'setIdentityFeedbackForwardingEnabled' smart constructor.
+data SetIdentityFeedbackForwardingEnabled = SetIdentityFeedbackForwardingEnabled'
+    { _siffeIdentity          :: !Text
+    , _siffeForwardingEnabled :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'SetIdentityFeedbackForwardingEnabled' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'SetIdentityFeedbackForwardingEnabled' with the minimum fields required to make a request.
 --
--- * 'siffeForwardingEnabled' @::@ 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'siffeIdentity' @::@ 'Text'
+-- * 'siffeIdentity'
 --
-setIdentityFeedbackForwardingEnabled :: Text -- ^ 'siffeIdentity'
-                                     -> Bool -- ^ 'siffeForwardingEnabled'
-                                     -> SetIdentityFeedbackForwardingEnabled
-setIdentityFeedbackForwardingEnabled p1 p2 = SetIdentityFeedbackForwardingEnabled
-    { _siffeIdentity          = p1
-    , _siffeForwardingEnabled = p2
+-- * 'siffeForwardingEnabled'
+setIdentityFeedbackForwardingEnabled
+    :: Text -- ^ 'siffeIdentity'
+    -> Bool -- ^ 'siffeForwardingEnabled'
+    -> SetIdentityFeedbackForwardingEnabled
+setIdentityFeedbackForwardingEnabled pIdentity_ pForwardingEnabled_ =
+    SetIdentityFeedbackForwardingEnabled'
+    { _siffeIdentity = pIdentity_
+    , _siffeForwardingEnabled = pForwardingEnabled_
     }
 
--- | Sets whether Amazon SES will forward bounce and complaint notifications as
--- email. 'true' specifies that Amazon SES will forward bounce and complaint
--- notifications as email, in addition to any Amazon SNS topic publishing
--- otherwise specified. 'false' specifies that Amazon SES will publish bounce and
--- complaint notifications only through Amazon SNS. This value can only be set
--- to 'false' when Amazon SNS topics are set for both 'Bounce' and 'Complaint'
--- notification types.
-siffeForwardingEnabled :: Lens' SetIdentityFeedbackForwardingEnabled Bool
-siffeForwardingEnabled =
-    lens _siffeForwardingEnabled (\s a -> s { _siffeForwardingEnabled = a })
-
--- | The identity for which to set bounce and complaint notification forwarding.
--- Examples: 'user@example.com', 'example.com'.
+-- | The identity for which to set bounce and complaint notification
+-- forwarding. Examples: 'user\'example.com', 'example.com'.
 siffeIdentity :: Lens' SetIdentityFeedbackForwardingEnabled Text
-siffeIdentity = lens _siffeIdentity (\s a -> s { _siffeIdentity = a })
+siffeIdentity = lens _siffeIdentity (\ s a -> s{_siffeIdentity = a});
 
-data SetIdentityFeedbackForwardingEnabledResponse = SetIdentityFeedbackForwardingEnabledResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | Sets whether Amazon SES will forward bounce and complaint notifications
+-- as email. 'true' specifies that Amazon SES will forward bounce and
+-- complaint notifications as email, in addition to any Amazon SNS topic
+-- publishing otherwise specified. 'false' specifies that Amazon SES will
+-- publish bounce and complaint notifications only through Amazon SNS. This
+-- value can only be set to 'false' when Amazon SNS topics are set for both
+-- 'Bounce' and 'Complaint' notification types.
+siffeForwardingEnabled :: Lens' SetIdentityFeedbackForwardingEnabled Bool
+siffeForwardingEnabled = lens _siffeForwardingEnabled (\ s a -> s{_siffeForwardingEnabled = a});
 
--- | 'SetIdentityFeedbackForwardingEnabledResponse' constructor.
-setIdentityFeedbackForwardingEnabledResponse :: SetIdentityFeedbackForwardingEnabledResponse
-setIdentityFeedbackForwardingEnabledResponse = SetIdentityFeedbackForwardingEnabledResponse
+instance AWSRequest
+         SetIdentityFeedbackForwardingEnabled where
+        type Sv SetIdentityFeedbackForwardingEnabled = SES
+        type Rs SetIdentityFeedbackForwardingEnabled =
+             SetIdentityFeedbackForwardingEnabledResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "SetIdentityFeedbackForwardingEnabledResult"
+              (\ s h x ->
+                 SetIdentityFeedbackForwardingEnabledResponse' <$>
+                   (pure (fromEnum s)))
 
-instance ToPath SetIdentityFeedbackForwardingEnabled where
-    toPath = const "/"
+instance ToHeaders
+         SetIdentityFeedbackForwardingEnabled where
+        toHeaders = const mempty
 
-instance ToQuery SetIdentityFeedbackForwardingEnabled where
-    toQuery SetIdentityFeedbackForwardingEnabled{..} = mconcat
-        [ "ForwardingEnabled" =? _siffeForwardingEnabled
-        , "Identity"          =? _siffeIdentity
-        ]
+instance ToPath SetIdentityFeedbackForwardingEnabled
+         where
+        toPath = const "/"
 
-instance ToHeaders SetIdentityFeedbackForwardingEnabled
+instance ToQuery SetIdentityFeedbackForwardingEnabled
+         where
+        toQuery SetIdentityFeedbackForwardingEnabled'{..}
+          = mconcat
+              ["Action" =:
+                 ("SetIdentityFeedbackForwardingEnabled" ::
+                    ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "Identity" =: _siffeIdentity,
+               "ForwardingEnabled" =: _siffeForwardingEnabled]
 
-instance AWSRequest SetIdentityFeedbackForwardingEnabled where
-    type Sv SetIdentityFeedbackForwardingEnabled = SES
-    type Rs SetIdentityFeedbackForwardingEnabled = SetIdentityFeedbackForwardingEnabledResponse
+-- | An empty element. Receiving this element indicates that the request
+-- completed successfully.
+--
+-- /See:/ 'setIdentityFeedbackForwardingEnabledResponse' smart constructor.
+newtype SetIdentityFeedbackForwardingEnabledResponse = SetIdentityFeedbackForwardingEnabledResponse'
+    { _siffersStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "SetIdentityFeedbackForwardingEnabled"
-    response = nullResponse SetIdentityFeedbackForwardingEnabledResponse
+-- | Creates a value of 'SetIdentityFeedbackForwardingEnabledResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'siffersStatus'
+setIdentityFeedbackForwardingEnabledResponse
+    :: Int -- ^ 'siffersStatus'
+    -> SetIdentityFeedbackForwardingEnabledResponse
+setIdentityFeedbackForwardingEnabledResponse pStatus_ =
+    SetIdentityFeedbackForwardingEnabledResponse'
+    { _siffersStatus = pStatus_
+    }
+
+-- | The response status code.
+siffersStatus :: Lens' SetIdentityFeedbackForwardingEnabledResponse Int
+siffersStatus = lens _siffersStatus (\ s a -> s{_siffersStatus = a});
diff --git a/gen/Network/AWS/SES/SetIdentityNotificationTopic.hs b/gen/Network/AWS/SES/SetIdentityNotificationTopic.hs
--- a/gen/Network/AWS/SES/SetIdentityNotificationTopic.hs
+++ b/gen/Network/AWS/SES/SetIdentityNotificationTopic.hs
@@ -1,123 +1,158 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.SetIdentityNotificationTopic
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Given an identity (email address or domain), sets the Amazon Simple
+-- Given an identity (email address or domain), sets the Amazon Simple
 -- Notification Service (Amazon SNS) topic to which Amazon SES will publish
--- bounce, complaint, and/or delivery notifications for emails sent with that
--- identity as the 'Source'.
+-- bounce, complaint, and\/or delivery notifications for emails sent with
+-- that identity as the 'Source'.
 --
--- Unless feedback forwarding is enabled, you must specify Amazon SNS topics
--- for bounce and complaint notifications. For more information, see 'SetIdentityFeedbackForwardingEnabled'.  This action is throttled at one request per second.
+-- Unless feedback forwarding is enabled, you must specify Amazon SNS
+-- topics for bounce and complaint notifications. For more information, see
+-- 'SetIdentityFeedbackForwardingEnabled'.
 --
--- For more information about feedback notification, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SESDeveloper Guide>.
+-- This action is throttled at one request per second.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityNotificationTopic.html>
+-- For more information about feedback notification, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide>.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityNotificationTopic.html AWS API Reference> for SetIdentityNotificationTopic.
 module Network.AWS.SES.SetIdentityNotificationTopic
     (
-    -- * Request
-      SetIdentityNotificationTopic
-    -- ** Request constructor
-    , setIdentityNotificationTopic
-    -- ** Request lenses
+    -- * Creating a Request
+      setIdentityNotificationTopic
+    , SetIdentityNotificationTopic
+    -- * Request Lenses
+    , sintSNSTopic
     , sintIdentity
     , sintNotificationType
-    , sintSnsTopic
 
-    -- * Response
-    , SetIdentityNotificationTopicResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setIdentityNotificationTopicResponse
+    , SetIdentityNotificationTopicResponse
+    -- * Response Lenses
+    , sintrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
-
-data SetIdentityNotificationTopic = SetIdentityNotificationTopic
-    { _sintIdentity         :: Text
-    , _sintNotificationType :: NotificationType
-    , _sintSnsTopic         :: Maybe Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
--- | 'SetIdentityNotificationTopic' constructor.
+-- | Represents a request to set or clear an identity\'s notification topic.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'setIdentityNotificationTopic' smart constructor.
+data SetIdentityNotificationTopic = SetIdentityNotificationTopic'
+    { _sintSNSTopic         :: !(Maybe Text)
+    , _sintIdentity         :: !Text
+    , _sintNotificationType :: !NotificationType
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetIdentityNotificationTopic' with the minimum fields required to make a request.
 --
--- * 'sintIdentity' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sintNotificationType' @::@ 'NotificationType'
+-- * 'sintSNSTopic'
 --
--- * 'sintSnsTopic' @::@ 'Maybe' 'Text'
+-- * 'sintIdentity'
 --
-setIdentityNotificationTopic :: Text -- ^ 'sintIdentity'
-                             -> NotificationType -- ^ 'sintNotificationType'
-                             -> SetIdentityNotificationTopic
-setIdentityNotificationTopic p1 p2 = SetIdentityNotificationTopic
-    { _sintIdentity         = p1
-    , _sintNotificationType = p2
-    , _sintSnsTopic         = Nothing
+-- * 'sintNotificationType'
+setIdentityNotificationTopic
+    :: Text -- ^ 'sintIdentity'
+    -> NotificationType -- ^ 'sintNotificationType'
+    -> SetIdentityNotificationTopic
+setIdentityNotificationTopic pIdentity_ pNotificationType_ =
+    SetIdentityNotificationTopic'
+    { _sintSNSTopic = Nothing
+    , _sintIdentity = pIdentity_
+    , _sintNotificationType = pNotificationType_
     }
 
--- | The identity for which the Amazon SNS topic will be set. Examples: 'user@example.com', 'example.com'.
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic. If the parameter
+-- is omitted from the request or a null value is passed, 'SnsTopic' is
+-- cleared and publishing is disabled.
+sintSNSTopic :: Lens' SetIdentityNotificationTopic (Maybe Text)
+sintSNSTopic = lens _sintSNSTopic (\ s a -> s{_sintSNSTopic = a});
+
+-- | The identity for which the Amazon SNS topic will be set. You can specify
+-- an identity by using its name or by using its Amazon Resource Name
+-- (ARN). Examples: 'user\'example.com', 'example.com',
+-- 'arn:aws:ses:us-east-1:123456789012:identity\/example.com'.
 sintIdentity :: Lens' SetIdentityNotificationTopic Text
-sintIdentity = lens _sintIdentity (\s a -> s { _sintIdentity = a })
+sintIdentity = lens _sintIdentity (\ s a -> s{_sintIdentity = a});
 
--- | The type of notifications that will be published to the specified Amazon SNS
--- topic.
+-- | The type of notifications that will be published to the specified Amazon
+-- SNS topic.
 sintNotificationType :: Lens' SetIdentityNotificationTopic NotificationType
-sintNotificationType =
-    lens _sintNotificationType (\s a -> s { _sintNotificationType = a })
-
--- | The Amazon Resource Name (ARN) of the Amazon SNS topic. If the parameter is
--- omitted from the request or a null value is passed, 'SnsTopic' is cleared and
--- publishing is disabled.
-sintSnsTopic :: Lens' SetIdentityNotificationTopic (Maybe Text)
-sintSnsTopic = lens _sintSnsTopic (\s a -> s { _sintSnsTopic = a })
+sintNotificationType = lens _sintNotificationType (\ s a -> s{_sintNotificationType = a});
 
-data SetIdentityNotificationTopicResponse = SetIdentityNotificationTopicResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest SetIdentityNotificationTopic
+         where
+        type Sv SetIdentityNotificationTopic = SES
+        type Rs SetIdentityNotificationTopic =
+             SetIdentityNotificationTopicResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "SetIdentityNotificationTopicResult"
+              (\ s h x ->
+                 SetIdentityNotificationTopicResponse' <$>
+                   (pure (fromEnum s)))
 
--- | 'SetIdentityNotificationTopicResponse' constructor.
-setIdentityNotificationTopicResponse :: SetIdentityNotificationTopicResponse
-setIdentityNotificationTopicResponse = SetIdentityNotificationTopicResponse
+instance ToHeaders SetIdentityNotificationTopic where
+        toHeaders = const mempty
 
 instance ToPath SetIdentityNotificationTopic where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery SetIdentityNotificationTopic where
-    toQuery SetIdentityNotificationTopic{..} = mconcat
-        [ "Identity"         =? _sintIdentity
-        , "NotificationType" =? _sintNotificationType
-        , "SnsTopic"         =? _sintSnsTopic
-        ]
+        toQuery SetIdentityNotificationTopic'{..}
+          = mconcat
+              ["Action" =:
+                 ("SetIdentityNotificationTopic" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "SnsTopic" =: _sintSNSTopic,
+               "Identity" =: _sintIdentity,
+               "NotificationType" =: _sintNotificationType]
 
-instance ToHeaders SetIdentityNotificationTopic
+-- | An empty element. Receiving this element indicates that the request
+-- completed successfully.
+--
+-- /See:/ 'setIdentityNotificationTopicResponse' smart constructor.
+newtype SetIdentityNotificationTopicResponse = SetIdentityNotificationTopicResponse'
+    { _sintrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest SetIdentityNotificationTopic where
-    type Sv SetIdentityNotificationTopic = SES
-    type Rs SetIdentityNotificationTopic = SetIdentityNotificationTopicResponse
+-- | Creates a value of 'SetIdentityNotificationTopicResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sintrsStatus'
+setIdentityNotificationTopicResponse
+    :: Int -- ^ 'sintrsStatus'
+    -> SetIdentityNotificationTopicResponse
+setIdentityNotificationTopicResponse pStatus_ =
+    SetIdentityNotificationTopicResponse'
+    { _sintrsStatus = pStatus_
+    }
 
-    request  = post "SetIdentityNotificationTopic"
-    response = nullResponse SetIdentityNotificationTopicResponse
+-- | The response status code.
+sintrsStatus :: Lens' SetIdentityNotificationTopicResponse Int
+sintrsStatus = lens _sintrsStatus (\ s a -> s{_sintrsStatus = a});
diff --git a/gen/Network/AWS/SES/Types.hs b/gen/Network/AWS/SES/Types.hs
--- a/gen/Network/AWS/SES/Types.hs
+++ b/gen/Network/AWS/SES/Types.hs
@@ -1,74 +1,39 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-{-# LANGUAGE ViewPatterns                #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
 
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
 
+-- |
 -- Module      : Network.AWS.SES.Types
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
 module Network.AWS.SES.Types
     (
     -- * Service
       SES
-    -- ** Error
-    , RESTError
-    -- ** XML
-    , ns
 
-    -- * Destination
-    , Destination
-    , destination
-    , dBccAddresses
-    , dCcAddresses
-    , dToAddresses
+    -- * Errors
+    , _MessageRejected
+    , _InvalidPolicyException
 
-    -- * IdentityDkimAttributes
-    , IdentityDkimAttributes
-    , identityDkimAttributes
-    , idaDkimEnabled
-    , idaDkimTokens
-    , idaDkimVerificationStatus
+    -- * IdentityType
+    , IdentityType (..)
 
+    -- * NotificationType
+    , NotificationType (..)
+
+    -- * VerificationStatus
+    , VerificationStatus (..)
+
     -- * Body
     , Body
     , body
-    , bHtml
     , bText
-
-    -- * IdentityVerificationAttributes
-    , IdentityVerificationAttributes
-    , identityVerificationAttributes
-    , ivaVerificationStatus
-    , ivaVerificationToken
-
-    -- * SendDataPoint
-    , SendDataPoint
-    , sendDataPoint
-    , sdpBounces
-    , sdpComplaints
-    , sdpDeliveryAttempts
-    , sdpRejects
-    , sdpTimestamp
-
-    -- * IdentityType
-    , IdentityType (..)
+    , bHTML
 
     -- * Content
     , Content
@@ -76,6 +41,20 @@
     , cCharset
     , cData
 
+    -- * Destination
+    , Destination
+    , destination
+    , dBCCAddresses
+    , dCCAddresses
+    , dToAddresses
+
+    -- * IdentityDkimAttributes
+    , IdentityDkimAttributes
+    , identityDkimAttributes
+    , idaDkimTokens
+    , idaDkimEnabled
+    , idaDkimVerificationStatus
+
     -- * IdentityNotificationAttributes
     , IdentityNotificationAttributes
     , identityNotificationAttributes
@@ -84,610 +63,79 @@
     , inaDeliveryTopic
     , inaForwardingEnabled
 
-    -- * RawMessage
-    , RawMessage
-    , rawMessage
-    , rmData
-
-    -- * NotificationType
-    , NotificationType (..)
-
-    -- * VerificationStatus
-    , VerificationStatus (..)
+    -- * IdentityVerificationAttributes
+    , IdentityVerificationAttributes
+    , identityVerificationAttributes
+    , ivaVerificationToken
+    , ivaVerificationStatus
 
     -- * Message
     , Message
     , message
-    , mBody
     , mSubject
+    , mBody
+
+    -- * RawMessage
+    , RawMessage
+    , rawMessage
+    , rmData
+
+    -- * SendDataPoint
+    , SendDataPoint
+    , sendDataPoint
+    , sdpRejects
+    , sdpComplaints
+    , sdpDeliveryAttempts
+    , sdpBounces
+    , sdpTimestamp
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Signing
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.SES.Types.Product
+import           Network.AWS.SES.Types.Sum
+import           Network.AWS.Sign.V4
 
--- | Version @2010-12-01@ of the Amazon Simple Email Service service.
+-- | Version @2010-12-01@ of the Amazon Simple Email Service SDK.
 data SES
 
 instance AWSService SES where
     type Sg SES = V4
-    type Er SES = RESTError
-
-    service = service'
+    service = const svc
       where
-        service' :: Service SES
-        service' = Service
-            { _svcAbbrev       = "SES"
-            , _svcPrefix       = "email"
-            , _svcVersion      = "2010-12-01"
-            , _svcTargetPrefix = Nothing
-            , _svcJSONVersion  = Nothing
-            , _svcHandle       = handle
-            , _svcRetry        = retry
+        svc =
+            Service
+            { _svcAbbrev = "SES"
+            , _svcPrefix = "email"
+            , _svcVersion = "2010-12-01"
+            , _svcEndpoint = defaultEndpoint svc
+            , _svcTimeout = Just 70
+            , _svcStatus = statusSuccess
+            , _svcError = parseXMLError
+            , _svcRetry = retry
             }
-
-        handle :: Status
-               -> Maybe (LazyByteString -> ServiceError RESTError)
-        handle = restError statusSuccess service'
-
-        retry :: Retry SES
-        retry = Exponential
-            { _retryBase     = 0.05
-            , _retryGrowth   = 2
+        retry =
+            Exponential
+            { _retryBase = 5.0e-2
+            , _retryGrowth = 2
             , _retryAttempts = 5
-            , _retryCheck    = check
+            , _retryCheck = check
             }
-
-        check :: Status
-              -> RESTError
-              -> Bool
-        check (statusCode -> s) (awsErrorCode -> e)
-            | s == 400 && (Just "Throttling") == e = True -- Throttling
-            | s == 500  = True -- General Server Error
-            | s == 509  = True -- Limit Exceeded
-            | s == 503  = True -- Service Unavailable
-            | otherwise = False
-
-ns :: Text
-ns = "http://ses.amazonaws.com/doc/2010-12-01/"
-{-# INLINE ns #-}
-
-data Destination = Destination
-    { _dBccAddresses :: List "member" Text
-    , _dCcAddresses  :: List "member" Text
-    , _dToAddresses  :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Destination' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dBccAddresses' @::@ ['Text']
---
--- * 'dCcAddresses' @::@ ['Text']
---
--- * 'dToAddresses' @::@ ['Text']
---
-destination :: Destination
-destination = Destination
-    { _dToAddresses  = mempty
-    , _dCcAddresses  = mempty
-    , _dBccAddresses = mempty
-    }
-
--- | The BCC: field(s) of the message.
-dBccAddresses :: Lens' Destination [Text]
-dBccAddresses = lens _dBccAddresses (\s a -> s { _dBccAddresses = a }) . _List
-
--- | The CC: field(s) of the message.
-dCcAddresses :: Lens' Destination [Text]
-dCcAddresses = lens _dCcAddresses (\s a -> s { _dCcAddresses = a }) . _List
-
--- | The To: field(s) of the message.
-dToAddresses :: Lens' Destination [Text]
-dToAddresses = lens _dToAddresses (\s a -> s { _dToAddresses = a }) . _List
-
-instance FromXML Destination where
-    parseXML x = Destination
-        <$> x .@? "BccAddresses" .!@ mempty
-        <*> x .@? "CcAddresses" .!@ mempty
-        <*> x .@? "ToAddresses" .!@ mempty
-
-instance ToQuery Destination where
-    toQuery Destination{..} = mconcat
-        [ "BccAddresses" =? _dBccAddresses
-        , "CcAddresses"  =? _dCcAddresses
-        , "ToAddresses"  =? _dToAddresses
-        ]
-
-data IdentityDkimAttributes = IdentityDkimAttributes
-    { _idaDkimEnabled            :: Bool
-    , _idaDkimTokens             :: List "member" Text
-    , _idaDkimVerificationStatus :: VerificationStatus
-    } deriving (Eq, Read, Show)
-
--- | 'IdentityDkimAttributes' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'idaDkimEnabled' @::@ 'Bool'
---
--- * 'idaDkimTokens' @::@ ['Text']
---
--- * 'idaDkimVerificationStatus' @::@ 'VerificationStatus'
---
-identityDkimAttributes :: Bool -- ^ 'idaDkimEnabled'
-                       -> VerificationStatus -- ^ 'idaDkimVerificationStatus'
-                       -> IdentityDkimAttributes
-identityDkimAttributes p1 p2 = IdentityDkimAttributes
-    { _idaDkimEnabled            = p1
-    , _idaDkimVerificationStatus = p2
-    , _idaDkimTokens             = mempty
-    }
-
--- | True if DKIM signing is enabled for email sent from the identity; false
--- otherwise.
-idaDkimEnabled :: Lens' IdentityDkimAttributes Bool
-idaDkimEnabled = lens _idaDkimEnabled (\s a -> s { _idaDkimEnabled = a })
-
--- | A set of character strings that represent the domain's identity. Using these
--- tokens, you will need to create DNS CNAME records that point to DKIM public
--- keys hosted by Amazon SES. Amazon Web Services will eventually detect that
--- you have updated your DNS records; this detection process may take up to 72
--- hours. Upon successful detection, Amazon SES will be able to DKIM-sign email
--- originating from that domain. (This only applies to domain identities, not
--- email address identities.)
---
--- For more information about creating DNS records using DKIM tokens, go to the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim-dns-records.html Amazon SES Developer Guide>.
-idaDkimTokens :: Lens' IdentityDkimAttributes [Text]
-idaDkimTokens = lens _idaDkimTokens (\s a -> s { _idaDkimTokens = a }) . _List
-
--- | Describes whether Amazon SES has successfully verified the DKIM DNS records
--- (tokens) published in the domain name's DNS. (This only applies to domain
--- identities, not email address identities.)
-idaDkimVerificationStatus :: Lens' IdentityDkimAttributes VerificationStatus
-idaDkimVerificationStatus =
-    lens _idaDkimVerificationStatus
-        (\s a -> s { _idaDkimVerificationStatus = a })
-
-instance FromXML IdentityDkimAttributes where
-    parseXML x = IdentityDkimAttributes
-        <$> x .@  "DkimEnabled"
-        <*> x .@? "DkimTokens" .!@ mempty
-        <*> x .@  "DkimVerificationStatus"
-
-instance ToQuery IdentityDkimAttributes where
-    toQuery IdentityDkimAttributes{..} = mconcat
-        [ "DkimEnabled"            =? _idaDkimEnabled
-        , "DkimTokens"             =? _idaDkimTokens
-        , "DkimVerificationStatus" =? _idaDkimVerificationStatus
-        ]
-
-data Body = Body
-    { _bHtml :: Maybe Content
-    , _bText :: Maybe Content
-    } deriving (Eq, Read, Show)
-
--- | 'Body' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'bHtml' @::@ 'Maybe' 'Content'
---
--- * 'bText' @::@ 'Maybe' 'Content'
---
-body :: Body
-body = Body
-    { _bText = Nothing
-    , _bHtml = Nothing
-    }
-
--- | The content of the message, in HTML format. Use this for email clients that
--- can process HTML. You can include clickable links, formatted text, and much
--- more in an HTML message.
-bHtml :: Lens' Body (Maybe Content)
-bHtml = lens _bHtml (\s a -> s { _bHtml = a })
-
--- | The content of the message, in text format. Use this for text-based email
--- clients, or clients on high-latency networks (such as mobile devices).
-bText :: Lens' Body (Maybe Content)
-bText = lens _bText (\s a -> s { _bText = a })
-
-instance FromXML Body where
-    parseXML x = Body
-        <$> x .@? "Html"
-        <*> x .@? "Text"
-
-instance ToQuery Body where
-    toQuery Body{..} = mconcat
-        [ "Html" =? _bHtml
-        , "Text" =? _bText
-        ]
-
-data IdentityVerificationAttributes = IdentityVerificationAttributes
-    { _ivaVerificationStatus :: VerificationStatus
-    , _ivaVerificationToken  :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'IdentityVerificationAttributes' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ivaVerificationStatus' @::@ 'VerificationStatus'
---
--- * 'ivaVerificationToken' @::@ 'Maybe' 'Text'
---
-identityVerificationAttributes :: VerificationStatus -- ^ 'ivaVerificationStatus'
-                               -> IdentityVerificationAttributes
-identityVerificationAttributes p1 = IdentityVerificationAttributes
-    { _ivaVerificationStatus = p1
-    , _ivaVerificationToken  = Nothing
-    }
-
--- | The verification status of the identity: "Pending", "Success", "Failed", or
--- "TemporaryFailure".
-ivaVerificationStatus :: Lens' IdentityVerificationAttributes VerificationStatus
-ivaVerificationStatus =
-    lens _ivaVerificationStatus (\s a -> s { _ivaVerificationStatus = a })
-
--- | The verification token for a domain identity. Null for email address
--- identities.
-ivaVerificationToken :: Lens' IdentityVerificationAttributes (Maybe Text)
-ivaVerificationToken =
-    lens _ivaVerificationToken (\s a -> s { _ivaVerificationToken = a })
-
-instance FromXML IdentityVerificationAttributes where
-    parseXML x = IdentityVerificationAttributes
-        <$> x .@  "VerificationStatus"
-        <*> x .@? "VerificationToken"
-
-instance ToQuery IdentityVerificationAttributes where
-    toQuery IdentityVerificationAttributes{..} = mconcat
-        [ "VerificationStatus" =? _ivaVerificationStatus
-        , "VerificationToken"  =? _ivaVerificationToken
-        ]
-
-data SendDataPoint = SendDataPoint
-    { _sdpBounces          :: Maybe Integer
-    , _sdpComplaints       :: Maybe Integer
-    , _sdpDeliveryAttempts :: Maybe Integer
-    , _sdpRejects          :: Maybe Integer
-    , _sdpTimestamp        :: Maybe ISO8601
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'SendDataPoint' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'sdpBounces' @::@ 'Maybe' 'Integer'
---
--- * 'sdpComplaints' @::@ 'Maybe' 'Integer'
---
--- * 'sdpDeliveryAttempts' @::@ 'Maybe' 'Integer'
---
--- * 'sdpRejects' @::@ 'Maybe' 'Integer'
---
--- * 'sdpTimestamp' @::@ 'Maybe' 'UTCTime'
---
-sendDataPoint :: SendDataPoint
-sendDataPoint = SendDataPoint
-    { _sdpTimestamp        = Nothing
-    , _sdpDeliveryAttempts = Nothing
-    , _sdpBounces          = Nothing
-    , _sdpComplaints       = Nothing
-    , _sdpRejects          = Nothing
-    }
-
--- | Number of emails that have bounced.
-sdpBounces :: Lens' SendDataPoint (Maybe Integer)
-sdpBounces = lens _sdpBounces (\s a -> s { _sdpBounces = a })
-
--- | Number of unwanted emails that were rejected by recipients.
-sdpComplaints :: Lens' SendDataPoint (Maybe Integer)
-sdpComplaints = lens _sdpComplaints (\s a -> s { _sdpComplaints = a })
-
--- | Number of emails that have been enqueued for sending.
-sdpDeliveryAttempts :: Lens' SendDataPoint (Maybe Integer)
-sdpDeliveryAttempts =
-    lens _sdpDeliveryAttempts (\s a -> s { _sdpDeliveryAttempts = a })
-
--- | Number of emails rejected by Amazon SES.
-sdpRejects :: Lens' SendDataPoint (Maybe Integer)
-sdpRejects = lens _sdpRejects (\s a -> s { _sdpRejects = a })
-
--- | Time of the data point.
-sdpTimestamp :: Lens' SendDataPoint (Maybe UTCTime)
-sdpTimestamp = lens _sdpTimestamp (\s a -> s { _sdpTimestamp = a }) . mapping _Time
-
-instance FromXML SendDataPoint where
-    parseXML x = SendDataPoint
-        <$> x .@? "Bounces"
-        <*> x .@? "Complaints"
-        <*> x .@? "DeliveryAttempts"
-        <*> x .@? "Rejects"
-        <*> x .@? "Timestamp"
-
-instance ToQuery SendDataPoint where
-    toQuery SendDataPoint{..} = mconcat
-        [ "Bounces"          =? _sdpBounces
-        , "Complaints"       =? _sdpComplaints
-        , "DeliveryAttempts" =? _sdpDeliveryAttempts
-        , "Rejects"          =? _sdpRejects
-        , "Timestamp"        =? _sdpTimestamp
-        ]
-
-data IdentityType
-    = ITDomain       -- ^ Domain
-    | ITEmailAddress -- ^ EmailAddress
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable IdentityType
-
-instance FromText IdentityType where
-    parser = takeLowerText >>= \case
-        "domain"       -> pure ITDomain
-        "emailaddress" -> pure ITEmailAddress
-        e              -> fail $
-            "Failure parsing IdentityType from " ++ show e
-
-instance ToText IdentityType where
-    toText = \case
-        ITDomain       -> "Domain"
-        ITEmailAddress -> "EmailAddress"
-
-instance ToByteString IdentityType
-instance ToHeader     IdentityType
-instance ToQuery      IdentityType
-
-instance FromXML IdentityType where
-    parseXML = parseXMLText "IdentityType"
-
-data Content = Content
-    { _cCharset :: Maybe Text
-    , _cData    :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Content' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cCharset' @::@ 'Maybe' 'Text'
---
--- * 'cData' @::@ 'Text'
---
-content :: Text -- ^ 'cData'
-        -> Content
-content p1 = Content
-    { _cData    = p1
-    , _cCharset = Nothing
-    }
-
--- | The character set of the content.
-cCharset :: Lens' Content (Maybe Text)
-cCharset = lens _cCharset (\s a -> s { _cCharset = a })
-
--- | The textual data of the content.
-cData :: Lens' Content Text
-cData = lens _cData (\s a -> s { _cData = a })
-
-instance FromXML Content where
-    parseXML x = Content
-        <$> x .@? "Charset"
-        <*> x .@  "Data"
-
-instance ToQuery Content where
-    toQuery Content{..} = mconcat
-        [ "Charset" =? _cCharset
-        , "Data"    =? _cData
-        ]
-
-data IdentityNotificationAttributes = IdentityNotificationAttributes
-    { _inaBounceTopic       :: Text
-    , _inaComplaintTopic    :: Text
-    , _inaDeliveryTopic     :: Text
-    , _inaForwardingEnabled :: Bool
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'IdentityNotificationAttributes' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'inaBounceTopic' @::@ 'Text'
---
--- * 'inaComplaintTopic' @::@ 'Text'
---
--- * 'inaDeliveryTopic' @::@ 'Text'
---
--- * 'inaForwardingEnabled' @::@ 'Bool'
---
-identityNotificationAttributes :: Text -- ^ 'inaBounceTopic'
-                               -> Text -- ^ 'inaComplaintTopic'
-                               -> Text -- ^ 'inaDeliveryTopic'
-                               -> Bool -- ^ 'inaForwardingEnabled'
-                               -> IdentityNotificationAttributes
-identityNotificationAttributes p1 p2 p3 p4 = IdentityNotificationAttributes
-    { _inaBounceTopic       = p1
-    , _inaComplaintTopic    = p2
-    , _inaDeliveryTopic     = p3
-    , _inaForwardingEnabled = p4
-    }
-
--- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will
--- publish bounce notifications.
-inaBounceTopic :: Lens' IdentityNotificationAttributes Text
-inaBounceTopic = lens _inaBounceTopic (\s a -> s { _inaBounceTopic = a })
-
--- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will
--- publish complaint notifications.
-inaComplaintTopic :: Lens' IdentityNotificationAttributes Text
-inaComplaintTopic =
-    lens _inaComplaintTopic (\s a -> s { _inaComplaintTopic = a })
-
--- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will
--- publish delivery notifications.
-inaDeliveryTopic :: Lens' IdentityNotificationAttributes Text
-inaDeliveryTopic = lens _inaDeliveryTopic (\s a -> s { _inaDeliveryTopic = a })
-
--- | Describes whether Amazon SES will forward bounce and complaint notifications
--- as email. 'true' indicates that Amazon SES will forward bounce and complaint
--- notifications as email, while 'false' indicates that bounce and complaint
--- notifications will be published only to the specified bounce and complaint
--- Amazon SNS topics.
-inaForwardingEnabled :: Lens' IdentityNotificationAttributes Bool
-inaForwardingEnabled =
-    lens _inaForwardingEnabled (\s a -> s { _inaForwardingEnabled = a })
-
-instance FromXML IdentityNotificationAttributes where
-    parseXML x = IdentityNotificationAttributes
-        <$> x .@  "BounceTopic"
-        <*> x .@  "ComplaintTopic"
-        <*> x .@  "DeliveryTopic"
-        <*> x .@  "ForwardingEnabled"
-
-instance ToQuery IdentityNotificationAttributes where
-    toQuery IdentityNotificationAttributes{..} = mconcat
-        [ "BounceTopic"       =? _inaBounceTopic
-        , "ComplaintTopic"    =? _inaComplaintTopic
-        , "DeliveryTopic"     =? _inaDeliveryTopic
-        , "ForwardingEnabled" =? _inaForwardingEnabled
-        ]
-
-newtype RawMessage = RawMessage
-    { _rmData :: Base64
-    } deriving (Eq, Read, Show)
-
--- | 'RawMessage' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rmData' @::@ 'Base64'
---
-rawMessage :: Base64 -- ^ 'rmData'
-           -> RawMessage
-rawMessage p1 = RawMessage
-    { _rmData = p1
-    }
-
--- | The raw data of the message. The client must ensure that the message format
--- complies with Internet email standards regarding email header fields, MIME
--- types, MIME encoding, and base64 encoding (if necessary).
---
--- The To:, CC:, and BCC: headers in the raw message can contain a group list.
---
--- For more information, go to the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html Amazon SES Developer Guide>.
-rmData :: Lens' RawMessage Base64
-rmData = lens _rmData (\s a -> s { _rmData = a })
-
-instance FromXML RawMessage where
-    parseXML x = RawMessage
-        <$> x .@  "Data"
-
-instance ToQuery RawMessage where
-    toQuery RawMessage{..} = mconcat
-        [ "Data" =? _rmData
-        ]
-
-data NotificationType
-    = Bounce    -- ^ Bounce
-    | Complaint -- ^ Complaint
-    | Delivery  -- ^ Delivery
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable NotificationType
-
-instance FromText NotificationType where
-    parser = takeLowerText >>= \case
-        "bounce"    -> pure Bounce
-        "complaint" -> pure Complaint
-        "delivery"  -> pure Delivery
-        e           -> fail $
-            "Failure parsing NotificationType from " ++ show e
-
-instance ToText NotificationType where
-    toText = \case
-        Bounce    -> "Bounce"
-        Complaint -> "Complaint"
-        Delivery  -> "Delivery"
-
-instance ToByteString NotificationType
-instance ToHeader     NotificationType
-instance ToQuery      NotificationType
-
-instance FromXML NotificationType where
-    parseXML = parseXMLText "NotificationType"
-
-data VerificationStatus
-    = Failed           -- ^ Failed
-    | NotStarted       -- ^ NotStarted
-    | Pending          -- ^ Pending
-    | Success          -- ^ Success
-    | TemporaryFailure -- ^ TemporaryFailure
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable VerificationStatus
-
-instance FromText VerificationStatus where
-    parser = takeLowerText >>= \case
-        "failed"           -> pure Failed
-        "notstarted"       -> pure NotStarted
-        "pending"          -> pure Pending
-        "success"          -> pure Success
-        "temporaryfailure" -> pure TemporaryFailure
-        e                  -> fail $
-            "Failure parsing VerificationStatus from " ++ show e
-
-instance ToText VerificationStatus where
-    toText = \case
-        Failed           -> "Failed"
-        NotStarted       -> "NotStarted"
-        Pending          -> "Pending"
-        Success          -> "Success"
-        TemporaryFailure -> "TemporaryFailure"
-
-instance ToByteString VerificationStatus
-instance ToHeader     VerificationStatus
-instance ToQuery      VerificationStatus
-
-instance FromXML VerificationStatus where
-    parseXML = parseXMLText "VerificationStatus"
-
-data Message = Message
-    { _mBody    :: Body
-    , _mSubject :: Content
-    } deriving (Eq, Read, Show)
-
--- | 'Message' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'mBody' @::@ 'Body'
---
--- * 'mSubject' @::@ 'Content'
---
-message :: Content -- ^ 'mSubject'
-        -> Body -- ^ 'mBody'
-        -> Message
-message p1 p2 = Message
-    { _mSubject = p1
-    , _mBody    = p2
-    }
-
--- | The message body.
-mBody :: Lens' Message Body
-mBody = lens _mBody (\s a -> s { _mBody = a })
-
--- | The subject of the message: A short summary of the content, which will appear
--- in the recipient's inbox.
-mSubject :: Lens' Message Content
-mSubject = lens _mSubject (\s a -> s { _mSubject = a })
+        check e
+          | has (hasCode "ThrottlingException" . hasStatus 400) e =
+              Just "throttling_exception"
+          | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
+          | has (hasStatus 503) e = Just "service_unavailable"
+          | has (hasStatus 500) e = Just "general_server_error"
+          | has (hasStatus 509) e = Just "limit_exceeded"
+          | otherwise = Nothing
 
-instance FromXML Message where
-    parseXML x = Message
-        <$> x .@  "Body"
-        <*> x .@  "Subject"
+-- | Indicates that the action failed, and the message could not be sent.
+-- Check the error stack for more information about what caused the error.
+_MessageRejected :: AsError a => Getting (First ServiceError) a ServiceError
+_MessageRejected = _ServiceError . hasStatus 400 . hasCode "MessageRejected"
 
-instance ToQuery Message where
-    toQuery Message{..} = mconcat
-        [ "Body"    =? _mBody
-        , "Subject" =? _mSubject
-        ]
+-- | Indicates that the provided policy is invalid. Check the error stack for
+-- more information about what caused the error.
+_InvalidPolicyException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidPolicyException =
+    _ServiceError . hasStatus 400 . hasCode "InvalidPolicy"
diff --git a/gen/Network/AWS/SES/Types/Product.hs b/gen/Network/AWS/SES/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/Types/Product.hs
@@ -0,0 +1,475 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.SES.Types.Product
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.SES.Types.Product where
+
+import           Network.AWS.Prelude
+import           Network.AWS.SES.Types.Sum
+
+-- | Represents the body of the message. You can specify text, HTML, or both.
+-- If you use both, then the message should display correctly in the widest
+-- variety of email clients.
+--
+-- /See:/ 'body' smart constructor.
+data Body = Body'
+    { _bText :: !(Maybe Content)
+    , _bHTML :: !(Maybe Content)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Body' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bText'
+--
+-- * 'bHTML'
+body
+    :: Body
+body =
+    Body'
+    { _bText = Nothing
+    , _bHTML = Nothing
+    }
+
+-- | The content of the message, in text format. Use this for text-based
+-- email clients, or clients on high-latency networks (such as mobile
+-- devices).
+bText :: Lens' Body (Maybe Content)
+bText = lens _bText (\ s a -> s{_bText = a});
+
+-- | The content of the message, in HTML format. Use this for email clients
+-- that can process HTML. You can include clickable links, formatted text,
+-- and much more in an HTML message.
+bHTML :: Lens' Body (Maybe Content)
+bHTML = lens _bHTML (\ s a -> s{_bHTML = a});
+
+instance ToQuery Body where
+        toQuery Body'{..}
+          = mconcat ["Text" =: _bText, "Html" =: _bHTML]
+
+-- | Represents textual data, plus an optional character set specification.
+--
+-- By default, the text must be 7-bit ASCII, due to the constraints of the
+-- SMTP protocol. If the text must contain any other characters, then you
+-- must also specify a character set. Examples include UTF-8, ISO-8859-1,
+-- and Shift_JIS.
+--
+-- /See:/ 'content' smart constructor.
+data Content = Content'
+    { _cCharset :: !(Maybe Text)
+    , _cData    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Content' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cCharset'
+--
+-- * 'cData'
+content
+    :: Text -- ^ 'cData'
+    -> Content
+content pData_ =
+    Content'
+    { _cCharset = Nothing
+    , _cData = pData_
+    }
+
+-- | The character set of the content.
+cCharset :: Lens' Content (Maybe Text)
+cCharset = lens _cCharset (\ s a -> s{_cCharset = a});
+
+-- | The textual data of the content.
+cData :: Lens' Content Text
+cData = lens _cData (\ s a -> s{_cData = a});
+
+instance ToQuery Content where
+        toQuery Content'{..}
+          = mconcat ["Charset" =: _cCharset, "Data" =: _cData]
+
+-- | Represents the destination of the message, consisting of To:, CC:, and
+-- BCC: fields.
+--
+-- By default, the string must be 7-bit ASCII. If the text must contain any
+-- other characters, then you must use MIME encoded-word syntax (RFC 2047)
+-- instead of a literal string. MIME encoded-word syntax uses the following
+-- form: '=?charset?encoding?encoded-text?='. For more information, see
+-- <http://tools.ietf.org/html/rfc2047 RFC 2047>.
+--
+-- /See:/ 'destination' smart constructor.
+data Destination = Destination'
+    { _dBCCAddresses :: !(Maybe [Text])
+    , _dCCAddresses  :: !(Maybe [Text])
+    , _dToAddresses  :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Destination' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dBCCAddresses'
+--
+-- * 'dCCAddresses'
+--
+-- * 'dToAddresses'
+destination
+    :: Destination
+destination =
+    Destination'
+    { _dBCCAddresses = Nothing
+    , _dCCAddresses = Nothing
+    , _dToAddresses = Nothing
+    }
+
+-- | The BCC: field(s) of the message.
+dBCCAddresses :: Lens' Destination [Text]
+dBCCAddresses = lens _dBCCAddresses (\ s a -> s{_dBCCAddresses = a}) . _Default . _Coerce;
+
+-- | The CC: field(s) of the message.
+dCCAddresses :: Lens' Destination [Text]
+dCCAddresses = lens _dCCAddresses (\ s a -> s{_dCCAddresses = a}) . _Default . _Coerce;
+
+-- | The To: field(s) of the message.
+dToAddresses :: Lens' Destination [Text]
+dToAddresses = lens _dToAddresses (\ s a -> s{_dToAddresses = a}) . _Default . _Coerce;
+
+instance ToQuery Destination where
+        toQuery Destination'{..}
+          = mconcat
+              ["BccAddresses" =:
+                 toQuery (toQueryList "member" <$> _dBCCAddresses),
+               "CcAddresses" =:
+                 toQuery (toQueryList "member" <$> _dCCAddresses),
+               "ToAddresses" =:
+                 toQuery (toQueryList "member" <$> _dToAddresses)]
+
+-- | Represents the DKIM attributes of a verified email address or a domain.
+--
+-- /See:/ 'identityDkimAttributes' smart constructor.
+data IdentityDkimAttributes = IdentityDkimAttributes'
+    { _idaDkimTokens             :: !(Maybe [Text])
+    , _idaDkimEnabled            :: !Bool
+    , _idaDkimVerificationStatus :: !VerificationStatus
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IdentityDkimAttributes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'idaDkimTokens'
+--
+-- * 'idaDkimEnabled'
+--
+-- * 'idaDkimVerificationStatus'
+identityDkimAttributes
+    :: Bool -- ^ 'idaDkimEnabled'
+    -> VerificationStatus -- ^ 'idaDkimVerificationStatus'
+    -> IdentityDkimAttributes
+identityDkimAttributes pDkimEnabled_ pDkimVerificationStatus_ =
+    IdentityDkimAttributes'
+    { _idaDkimTokens = Nothing
+    , _idaDkimEnabled = pDkimEnabled_
+    , _idaDkimVerificationStatus = pDkimVerificationStatus_
+    }
+
+-- | A set of character strings that represent the domain\'s identity. Using
+-- these tokens, you will need to create DNS CNAME records that point to
+-- DKIM public keys hosted by Amazon SES. Amazon Web Services will
+-- eventually detect that you have updated your DNS records; this detection
+-- process may take up to 72 hours. Upon successful detection, Amazon SES
+-- will be able to DKIM-sign email originating from that domain. (This only
+-- applies to domain identities, not email address identities.)
+--
+-- For more information about creating DNS records using DKIM tokens, go to
+-- the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim-dns-records.html Amazon SES Developer Guide>.
+idaDkimTokens :: Lens' IdentityDkimAttributes [Text]
+idaDkimTokens = lens _idaDkimTokens (\ s a -> s{_idaDkimTokens = a}) . _Default . _Coerce;
+
+-- | True if DKIM signing is enabled for email sent from the identity; false
+-- otherwise.
+idaDkimEnabled :: Lens' IdentityDkimAttributes Bool
+idaDkimEnabled = lens _idaDkimEnabled (\ s a -> s{_idaDkimEnabled = a});
+
+-- | Describes whether Amazon SES has successfully verified the DKIM DNS
+-- records (tokens) published in the domain name\'s DNS. (This only applies
+-- to domain identities, not email address identities.)
+idaDkimVerificationStatus :: Lens' IdentityDkimAttributes VerificationStatus
+idaDkimVerificationStatus = lens _idaDkimVerificationStatus (\ s a -> s{_idaDkimVerificationStatus = a});
+
+instance FromXML IdentityDkimAttributes where
+        parseXML x
+          = IdentityDkimAttributes' <$>
+              (x .@? "DkimTokens" .!@ mempty >>=
+                 may (parseXMLList "member"))
+                <*> (x .@ "DkimEnabled")
+                <*> (x .@ "DkimVerificationStatus")
+
+-- | Represents the notification attributes of an identity, including whether
+-- an identity has Amazon Simple Notification Service (Amazon SNS) topics
+-- set for bounce, complaint, and\/or delivery notifications, and whether
+-- feedback forwarding is enabled for bounce and complaint notifications.
+--
+-- /See:/ 'identityNotificationAttributes' smart constructor.
+data IdentityNotificationAttributes = IdentityNotificationAttributes'
+    { _inaBounceTopic       :: !Text
+    , _inaComplaintTopic    :: !Text
+    , _inaDeliveryTopic     :: !Text
+    , _inaForwardingEnabled :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IdentityNotificationAttributes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'inaBounceTopic'
+--
+-- * 'inaComplaintTopic'
+--
+-- * 'inaDeliveryTopic'
+--
+-- * 'inaForwardingEnabled'
+identityNotificationAttributes
+    :: Text -- ^ 'inaBounceTopic'
+    -> Text -- ^ 'inaComplaintTopic'
+    -> Text -- ^ 'inaDeliveryTopic'
+    -> Bool -- ^ 'inaForwardingEnabled'
+    -> IdentityNotificationAttributes
+identityNotificationAttributes pBounceTopic_ pComplaintTopic_ pDeliveryTopic_ pForwardingEnabled_ =
+    IdentityNotificationAttributes'
+    { _inaBounceTopic = pBounceTopic_
+    , _inaComplaintTopic = pComplaintTopic_
+    , _inaDeliveryTopic = pDeliveryTopic_
+    , _inaForwardingEnabled = pForwardingEnabled_
+    }
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+-- will publish bounce notifications.
+inaBounceTopic :: Lens' IdentityNotificationAttributes Text
+inaBounceTopic = lens _inaBounceTopic (\ s a -> s{_inaBounceTopic = a});
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+-- will publish complaint notifications.
+inaComplaintTopic :: Lens' IdentityNotificationAttributes Text
+inaComplaintTopic = lens _inaComplaintTopic (\ s a -> s{_inaComplaintTopic = a});
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+-- will publish delivery notifications.
+inaDeliveryTopic :: Lens' IdentityNotificationAttributes Text
+inaDeliveryTopic = lens _inaDeliveryTopic (\ s a -> s{_inaDeliveryTopic = a});
+
+-- | Describes whether Amazon SES will forward bounce and complaint
+-- notifications as email. 'true' indicates that Amazon SES will forward
+-- bounce and complaint notifications as email, while 'false' indicates
+-- that bounce and complaint notifications will be published only to the
+-- specified bounce and complaint Amazon SNS topics.
+inaForwardingEnabled :: Lens' IdentityNotificationAttributes Bool
+inaForwardingEnabled = lens _inaForwardingEnabled (\ s a -> s{_inaForwardingEnabled = a});
+
+instance FromXML IdentityNotificationAttributes where
+        parseXML x
+          = IdentityNotificationAttributes' <$>
+              (x .@ "BounceTopic") <*> (x .@ "ComplaintTopic") <*>
+                (x .@ "DeliveryTopic")
+                <*> (x .@ "ForwardingEnabled")
+
+-- | Represents the verification attributes of a single identity.
+--
+-- /See:/ 'identityVerificationAttributes' smart constructor.
+data IdentityVerificationAttributes = IdentityVerificationAttributes'
+    { _ivaVerificationToken  :: !(Maybe Text)
+    , _ivaVerificationStatus :: !VerificationStatus
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IdentityVerificationAttributes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ivaVerificationToken'
+--
+-- * 'ivaVerificationStatus'
+identityVerificationAttributes
+    :: VerificationStatus -- ^ 'ivaVerificationStatus'
+    -> IdentityVerificationAttributes
+identityVerificationAttributes pVerificationStatus_ =
+    IdentityVerificationAttributes'
+    { _ivaVerificationToken = Nothing
+    , _ivaVerificationStatus = pVerificationStatus_
+    }
+
+-- | The verification token for a domain identity. Null for email address
+-- identities.
+ivaVerificationToken :: Lens' IdentityVerificationAttributes (Maybe Text)
+ivaVerificationToken = lens _ivaVerificationToken (\ s a -> s{_ivaVerificationToken = a});
+
+-- | The verification status of the identity: \"Pending\", \"Success\",
+-- \"Failed\", or \"TemporaryFailure\".
+ivaVerificationStatus :: Lens' IdentityVerificationAttributes VerificationStatus
+ivaVerificationStatus = lens _ivaVerificationStatus (\ s a -> s{_ivaVerificationStatus = a});
+
+instance FromXML IdentityVerificationAttributes where
+        parseXML x
+          = IdentityVerificationAttributes' <$>
+              (x .@? "VerificationToken") <*>
+                (x .@ "VerificationStatus")
+
+-- | Represents the message to be sent, composed of a subject and a body.
+--
+-- /See:/ 'message' smart constructor.
+data Message = Message'
+    { _mSubject :: !Content
+    , _mBody    :: !Body
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Message' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mSubject'
+--
+-- * 'mBody'
+message
+    :: Content -- ^ 'mSubject'
+    -> Body -- ^ 'mBody'
+    -> Message
+message pSubject_ pBody_ =
+    Message'
+    { _mSubject = pSubject_
+    , _mBody = pBody_
+    }
+
+-- | The subject of the message: A short summary of the content, which will
+-- appear in the recipient\'s inbox.
+mSubject :: Lens' Message Content
+mSubject = lens _mSubject (\ s a -> s{_mSubject = a});
+
+-- | The message body.
+mBody :: Lens' Message Body
+mBody = lens _mBody (\ s a -> s{_mBody = a});
+
+instance ToQuery Message where
+        toQuery Message'{..}
+          = mconcat ["Subject" =: _mSubject, "Body" =: _mBody]
+
+-- | Represents the raw data of the message.
+--
+-- /See:/ 'rawMessage' smart constructor.
+newtype RawMessage = RawMessage'
+    { _rmData :: Base64
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RawMessage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rmData'
+rawMessage
+    :: ByteString -- ^ 'rmData'
+    -> RawMessage
+rawMessage pData_ =
+    RawMessage'
+    { _rmData = _Base64 # pData_
+    }
+
+-- | The raw data of the message. The client must ensure that the message
+-- format complies with Internet email standards regarding email header
+-- fields, MIME types, MIME encoding, and base64 encoding (if necessary).
+--
+-- The To:, CC:, and BCC: headers in the raw message can contain a group
+-- list.
+--
+-- If you are using 'SendRawEmail' with sending authorization, you can
+-- include X-headers in the raw message to specify the \"Source,\"
+-- \"From,\" and \"Return-Path\" addresses. For more information, see the
+-- documentation for 'SendRawEmail'.
+--
+-- Do not include these X-headers in the DKIM signature, because they are
+-- removed by Amazon SES before sending the email.
+--
+-- For more information, go to the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html Amazon SES Developer Guide>.
+rmData :: Lens' RawMessage ByteString
+rmData = lens _rmData (\ s a -> s{_rmData = a}) . _Base64;
+
+instance ToQuery RawMessage where
+        toQuery RawMessage'{..} = mconcat ["Data" =: _rmData]
+
+-- | Represents sending statistics data. Each 'SendDataPoint' contains
+-- statistics for a 15-minute period of sending activity.
+--
+-- /See:/ 'sendDataPoint' smart constructor.
+data SendDataPoint = SendDataPoint'
+    { _sdpRejects          :: !(Maybe Integer)
+    , _sdpComplaints       :: !(Maybe Integer)
+    , _sdpDeliveryAttempts :: !(Maybe Integer)
+    , _sdpBounces          :: !(Maybe Integer)
+    , _sdpTimestamp        :: !(Maybe ISO8601)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SendDataPoint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdpRejects'
+--
+-- * 'sdpComplaints'
+--
+-- * 'sdpDeliveryAttempts'
+--
+-- * 'sdpBounces'
+--
+-- * 'sdpTimestamp'
+sendDataPoint
+    :: SendDataPoint
+sendDataPoint =
+    SendDataPoint'
+    { _sdpRejects = Nothing
+    , _sdpComplaints = Nothing
+    , _sdpDeliveryAttempts = Nothing
+    , _sdpBounces = Nothing
+    , _sdpTimestamp = Nothing
+    }
+
+-- | Number of emails rejected by Amazon SES.
+sdpRejects :: Lens' SendDataPoint (Maybe Integer)
+sdpRejects = lens _sdpRejects (\ s a -> s{_sdpRejects = a});
+
+-- | Number of unwanted emails that were rejected by recipients.
+sdpComplaints :: Lens' SendDataPoint (Maybe Integer)
+sdpComplaints = lens _sdpComplaints (\ s a -> s{_sdpComplaints = a});
+
+-- | Number of emails that have been enqueued for sending.
+sdpDeliveryAttempts :: Lens' SendDataPoint (Maybe Integer)
+sdpDeliveryAttempts = lens _sdpDeliveryAttempts (\ s a -> s{_sdpDeliveryAttempts = a});
+
+-- | Number of emails that have bounced.
+sdpBounces :: Lens' SendDataPoint (Maybe Integer)
+sdpBounces = lens _sdpBounces (\ s a -> s{_sdpBounces = a});
+
+-- | Time of the data point.
+sdpTimestamp :: Lens' SendDataPoint (Maybe UTCTime)
+sdpTimestamp = lens _sdpTimestamp (\ s a -> s{_sdpTimestamp = a}) . mapping _Time;
+
+instance FromXML SendDataPoint where
+        parseXML x
+          = SendDataPoint' <$>
+              (x .@? "Rejects") <*> (x .@? "Complaints") <*>
+                (x .@? "DeliveryAttempts")
+                <*> (x .@? "Bounces")
+                <*> (x .@? "Timestamp")
diff --git a/gen/Network/AWS/SES/Types/Sum.hs b/gen/Network/AWS/SES/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/Types/Sum.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.SES.Types.Sum
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.SES.Types.Sum where
+
+import           Network.AWS.Prelude
+
+data IdentityType
+    = Domain
+    | EmailAddress
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText IdentityType where
+    parser = takeLowerText >>= \case
+        "domain" -> pure Domain
+        "emailaddress" -> pure EmailAddress
+        e -> fromTextError $ "Failure parsing IdentityType from value: '" <> e
+           <> "'. Accepted values: domain, emailaddress"
+
+instance ToText IdentityType where
+    toText = \case
+        Domain -> "domain"
+        EmailAddress -> "emailaddress"
+
+instance Hashable     IdentityType
+instance ToByteString IdentityType
+instance ToQuery      IdentityType
+instance ToHeader     IdentityType
+
+data NotificationType
+    = Bounce
+    | Complaint
+    | Delivery
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText NotificationType where
+    parser = takeLowerText >>= \case
+        "bounce" -> pure Bounce
+        "complaint" -> pure Complaint
+        "delivery" -> pure Delivery
+        e -> fromTextError $ "Failure parsing NotificationType from value: '" <> e
+           <> "'. Accepted values: bounce, complaint, delivery"
+
+instance ToText NotificationType where
+    toText = \case
+        Bounce -> "bounce"
+        Complaint -> "complaint"
+        Delivery -> "delivery"
+
+instance Hashable     NotificationType
+instance ToByteString NotificationType
+instance ToQuery      NotificationType
+instance ToHeader     NotificationType
+
+data VerificationStatus
+    = Failed
+    | NotStarted
+    | Pending
+    | Success
+    | TemporaryFailure
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText VerificationStatus where
+    parser = takeLowerText >>= \case
+        "failed" -> pure Failed
+        "notstarted" -> pure NotStarted
+        "pending" -> pure Pending
+        "success" -> pure Success
+        "temporaryfailure" -> pure TemporaryFailure
+        e -> fromTextError $ "Failure parsing VerificationStatus from value: '" <> e
+           <> "'. Accepted values: failed, notstarted, pending, success, temporaryfailure"
+
+instance ToText VerificationStatus where
+    toText = \case
+        Failed -> "failed"
+        NotStarted -> "notstarted"
+        Pending -> "pending"
+        Success -> "success"
+        TemporaryFailure -> "temporaryfailure"
+
+instance Hashable     VerificationStatus
+instance ToByteString VerificationStatus
+instance ToQuery      VerificationStatus
+instance ToHeader     VerificationStatus
+
+instance FromXML VerificationStatus where
+    parseXML = parseXMLText "VerificationStatus"
diff --git a/gen/Network/AWS/SES/VerifyDomainDkim.hs b/gen/Network/AWS/SES/VerifyDomainDkim.hs
--- a/gen/Network/AWS/SES/VerifyDomainDkim.hs
+++ b/gen/Network/AWS/SES/VerifyDomainDkim.hs
@@ -1,135 +1,154 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.VerifyDomainDkim
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns a set of DKIM tokens for a domain. DKIM /tokens/ are character strings
--- that represent your domain's identity. Using these tokens, you will need to
--- create DNS CNAME records that point to DKIM public keys hosted by Amazon SES.
--- Amazon Web Services will eventually detect that you have updated your DNS
--- records; this detection process may take up to 72 hours. Upon successful
--- detection, Amazon SES will be able to DKIM-sign email originating from that
--- domain.
+-- Returns a set of DKIM tokens for a domain. DKIM /tokens/ are character
+-- strings that represent your domain\'s identity. Using these tokens, you
+-- will need to create DNS CNAME records that point to DKIM public keys
+-- hosted by Amazon SES. Amazon Web Services will eventually detect that
+-- you have updated your DNS records; this detection process may take up to
+-- 72 hours. Upon successful detection, Amazon SES will be able to
+-- DKIM-sign email originating from that domain.
 --
 -- This action is throttled at one request per second.
 --
--- To enable or disable Easy DKIM signing for a domain, use the 'SetIdentityDkimEnabled' action.
+-- To enable or disable Easy DKIM signing for a domain, use the
+-- 'SetIdentityDkimEnabled' action.
 --
--- For more information about creating DNS records using DKIM tokens, go to the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim-dns-records.html Amazon SES Developer Guide>.
+-- For more information about creating DNS records using DKIM tokens, go to
+-- the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim-dns-records.html Amazon SES Developer Guide>.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainDkim.html>
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainDkim.html AWS API Reference> for VerifyDomainDkim.
 module Network.AWS.SES.VerifyDomainDkim
     (
-    -- * Request
-      VerifyDomainDkim
-    -- ** Request constructor
-    , verifyDomainDkim
-    -- ** Request lenses
+    -- * Creating a Request
+      verifyDomainDkim
+    , VerifyDomainDkim
+    -- * Request Lenses
     , vddDomain
 
-    -- * Response
-    , VerifyDomainDkimResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , verifyDomainDkimResponse
-    -- ** Response lenses
-    , vddrDkimTokens
+    , VerifyDomainDkimResponse
+    -- * Response Lenses
+    , vddrsStatus
+    , vddrsDkimTokens
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
-newtype VerifyDomainDkim = VerifyDomainDkim
+-- | Represents a request instructing the service to begin DKIM verification
+-- for a domain.
+--
+-- /See:/ 'verifyDomainDkim' smart constructor.
+newtype VerifyDomainDkim = VerifyDomainDkim'
     { _vddDomain :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'VerifyDomainDkim' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'VerifyDomainDkim' with the minimum fields required to make a request.
 --
--- * 'vddDomain' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-verifyDomainDkim :: Text -- ^ 'vddDomain'
-                 -> VerifyDomainDkim
-verifyDomainDkim p1 = VerifyDomainDkim
-    { _vddDomain = p1
+-- * 'vddDomain'
+verifyDomainDkim
+    :: Text -- ^ 'vddDomain'
+    -> VerifyDomainDkim
+verifyDomainDkim pDomain_ =
+    VerifyDomainDkim'
+    { _vddDomain = pDomain_
     }
 
 -- | The name of the domain to be verified for Easy DKIM signing.
 vddDomain :: Lens' VerifyDomainDkim Text
-vddDomain = lens _vddDomain (\s a -> s { _vddDomain = a })
+vddDomain = lens _vddDomain (\ s a -> s{_vddDomain = a});
 
-newtype VerifyDomainDkimResponse = VerifyDomainDkimResponse
-    { _vddrDkimTokens :: List "member" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
+instance AWSRequest VerifyDomainDkim where
+        type Sv VerifyDomainDkim = SES
+        type Rs VerifyDomainDkim = VerifyDomainDkimResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "VerifyDomainDkimResult"
+              (\ s h x ->
+                 VerifyDomainDkimResponse' <$>
+                   (pure (fromEnum s)) <*>
+                     (x .@? "DkimTokens" .!@ mempty >>=
+                        parseXMLList "member"))
 
-instance GHC.Exts.IsList VerifyDomainDkimResponse where
-    type Item VerifyDomainDkimResponse = Text
+instance ToHeaders VerifyDomainDkim where
+        toHeaders = const mempty
 
-    fromList = VerifyDomainDkimResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _vddrDkimTokens
+instance ToPath VerifyDomainDkim where
+        toPath = const "/"
 
--- | 'VerifyDomainDkimResponse' constructor.
+instance ToQuery VerifyDomainDkim where
+        toQuery VerifyDomainDkim'{..}
+          = mconcat
+              ["Action" =: ("VerifyDomainDkim" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "Domain" =: _vddDomain]
+
+-- | Represents the DNS records that must be published in the domain name\'s
+-- DNS to complete DKIM setup.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'verifyDomainDkimResponse' smart constructor.
+data VerifyDomainDkimResponse = VerifyDomainDkimResponse'
+    { _vddrsStatus     :: !Int
+    , _vddrsDkimTokens :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VerifyDomainDkimResponse' with the minimum fields required to make a request.
 --
--- * 'vddrDkimTokens' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-verifyDomainDkimResponse :: VerifyDomainDkimResponse
-verifyDomainDkimResponse = VerifyDomainDkimResponse
-    { _vddrDkimTokens = mempty
+-- * 'vddrsStatus'
+--
+-- * 'vddrsDkimTokens'
+verifyDomainDkimResponse
+    :: Int -- ^ 'vddrsStatus'
+    -> VerifyDomainDkimResponse
+verifyDomainDkimResponse pStatus_ =
+    VerifyDomainDkimResponse'
+    { _vddrsStatus = pStatus_
+    , _vddrsDkimTokens = mempty
     }
 
--- | A set of character strings that represent the domain's identity. If the
--- identity is an email address, the tokens represent the domain of that address.
+-- | The response status code.
+vddrsStatus :: Lens' VerifyDomainDkimResponse Int
+vddrsStatus = lens _vddrsStatus (\ s a -> s{_vddrsStatus = a});
+
+-- | A set of character strings that represent the domain\'s identity. If the
+-- identity is an email address, the tokens represent the domain of that
+-- address.
 --
--- Using these tokens, you will need to create DNS CNAME records that point to
--- DKIM public keys hosted by Amazon SES. Amazon Web Services will eventually
--- detect that you have updated your DNS records; this detection process may
--- take up to 72 hours. Upon successful detection, Amazon SES will be able to
--- DKIM-sign emails originating from that domain.
+-- Using these tokens, you will need to create DNS CNAME records that point
+-- to DKIM public keys hosted by Amazon SES. Amazon Web Services will
+-- eventually detect that you have updated your DNS records; this detection
+-- process may take up to 72 hours. Upon successful detection, Amazon SES
+-- will be able to DKIM-sign emails originating from that domain.
 --
--- For more information about creating DNS records using DKIM tokens, go to the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim-dns-records.html Amazon SES Developer Guide>.
-vddrDkimTokens :: Lens' VerifyDomainDkimResponse [Text]
-vddrDkimTokens = lens _vddrDkimTokens (\s a -> s { _vddrDkimTokens = a }) . _List
-
-instance ToPath VerifyDomainDkim where
-    toPath = const "/"
-
-instance ToQuery VerifyDomainDkim where
-    toQuery VerifyDomainDkim{..} = mconcat
-        [ "Domain" =? _vddDomain
-        ]
-
-instance ToHeaders VerifyDomainDkim
-
-instance AWSRequest VerifyDomainDkim where
-    type Sv VerifyDomainDkim = SES
-    type Rs VerifyDomainDkim = VerifyDomainDkimResponse
-
-    request  = post "VerifyDomainDkim"
-    response = xmlResponse
-
-instance FromXML VerifyDomainDkimResponse where
-    parseXML = withElement "VerifyDomainDkimResult" $ \x -> VerifyDomainDkimResponse
-        <$> x .@? "DkimTokens" .!@ mempty
+-- For more information about creating DNS records using DKIM tokens, go to
+-- the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim-dns-records.html Amazon SES Developer Guide>.
+vddrsDkimTokens :: Lens' VerifyDomainDkimResponse [Text]
+vddrsDkimTokens = lens _vddrsDkimTokens (\ s a -> s{_vddrsDkimTokens = a}) . _Coerce;
diff --git a/gen/Network/AWS/SES/VerifyDomainIdentity.hs b/gen/Network/AWS/SES/VerifyDomainIdentity.hs
--- a/gen/Network/AWS/SES/VerifyDomainIdentity.hs
+++ b/gen/Network/AWS/SES/VerifyDomainIdentity.hs
@@ -1,113 +1,129 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.VerifyDomainIdentity
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Verifies a domain.
+-- Verifies a domain.
 --
 -- This action is throttled at one request per second.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainIdentity.html>
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainIdentity.html AWS API Reference> for VerifyDomainIdentity.
 module Network.AWS.SES.VerifyDomainIdentity
     (
-    -- * Request
-      VerifyDomainIdentity
-    -- ** Request constructor
-    , verifyDomainIdentity
-    -- ** Request lenses
+    -- * Creating a Request
+      verifyDomainIdentity
+    , VerifyDomainIdentity
+    -- * Request Lenses
     , vdiDomain
 
-    -- * Response
-    , VerifyDomainIdentityResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , verifyDomainIdentityResponse
-    -- ** Response lenses
-    , vdirVerificationToken
+    , VerifyDomainIdentityResponse
+    -- * Response Lenses
+    , vdirsStatus
+    , vdirsVerificationToken
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
-newtype VerifyDomainIdentity = VerifyDomainIdentity
+-- | Represents a request instructing the service to begin domain
+-- verification.
+--
+-- /See:/ 'verifyDomainIdentity' smart constructor.
+newtype VerifyDomainIdentity = VerifyDomainIdentity'
     { _vdiDomain :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'VerifyDomainIdentity' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'VerifyDomainIdentity' with the minimum fields required to make a request.
 --
--- * 'vdiDomain' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-verifyDomainIdentity :: Text -- ^ 'vdiDomain'
-                     -> VerifyDomainIdentity
-verifyDomainIdentity p1 = VerifyDomainIdentity
-    { _vdiDomain = p1
+-- * 'vdiDomain'
+verifyDomainIdentity
+    :: Text -- ^ 'vdiDomain'
+    -> VerifyDomainIdentity
+verifyDomainIdentity pDomain_ =
+    VerifyDomainIdentity'
+    { _vdiDomain = pDomain_
     }
 
 -- | The domain to be verified.
 vdiDomain :: Lens' VerifyDomainIdentity Text
-vdiDomain = lens _vdiDomain (\s a -> s { _vdiDomain = a })
-
-newtype VerifyDomainIdentityResponse = VerifyDomainIdentityResponse
-    { _vdirVerificationToken :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+vdiDomain = lens _vdiDomain (\ s a -> s{_vdiDomain = a});
 
--- | 'VerifyDomainIdentityResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'vdirVerificationToken' @::@ 'Text'
---
-verifyDomainIdentityResponse :: Text -- ^ 'vdirVerificationToken'
-                             -> VerifyDomainIdentityResponse
-verifyDomainIdentityResponse p1 = VerifyDomainIdentityResponse
-    { _vdirVerificationToken = p1
-    }
+instance AWSRequest VerifyDomainIdentity where
+        type Sv VerifyDomainIdentity = SES
+        type Rs VerifyDomainIdentity =
+             VerifyDomainIdentityResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "VerifyDomainIdentityResult"
+              (\ s h x ->
+                 VerifyDomainIdentityResponse' <$>
+                   (pure (fromEnum s)) <*> (x .@ "VerificationToken"))
 
--- | A TXT record that must be placed in the DNS settings for the domain, in order
--- to complete domain verification.
-vdirVerificationToken :: Lens' VerifyDomainIdentityResponse Text
-vdirVerificationToken =
-    lens _vdirVerificationToken (\s a -> s { _vdirVerificationToken = a })
+instance ToHeaders VerifyDomainIdentity where
+        toHeaders = const mempty
 
 instance ToPath VerifyDomainIdentity where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery VerifyDomainIdentity where
-    toQuery VerifyDomainIdentity{..} = mconcat
-        [ "Domain" =? _vdiDomain
-        ]
+        toQuery VerifyDomainIdentity'{..}
+          = mconcat
+              ["Action" =: ("VerifyDomainIdentity" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "Domain" =: _vdiDomain]
 
-instance ToHeaders VerifyDomainIdentity
+-- | Represents a token used for domain ownership verification.
+--
+-- /See:/ 'verifyDomainIdentityResponse' smart constructor.
+data VerifyDomainIdentityResponse = VerifyDomainIdentityResponse'
+    { _vdirsStatus            :: !Int
+    , _vdirsVerificationToken :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest VerifyDomainIdentity where
-    type Sv VerifyDomainIdentity = SES
-    type Rs VerifyDomainIdentity = VerifyDomainIdentityResponse
+-- | Creates a value of 'VerifyDomainIdentityResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vdirsStatus'
+--
+-- * 'vdirsVerificationToken'
+verifyDomainIdentityResponse
+    :: Int -- ^ 'vdirsStatus'
+    -> Text -- ^ 'vdirsVerificationToken'
+    -> VerifyDomainIdentityResponse
+verifyDomainIdentityResponse pStatus_ pVerificationToken_ =
+    VerifyDomainIdentityResponse'
+    { _vdirsStatus = pStatus_
+    , _vdirsVerificationToken = pVerificationToken_
+    }
 
-    request  = post "VerifyDomainIdentity"
-    response = xmlResponse
+-- | The response status code.
+vdirsStatus :: Lens' VerifyDomainIdentityResponse Int
+vdirsStatus = lens _vdirsStatus (\ s a -> s{_vdirsStatus = a});
 
-instance FromXML VerifyDomainIdentityResponse where
-    parseXML = withElement "VerifyDomainIdentityResult" $ \x -> VerifyDomainIdentityResponse
-        <$> x .@  "VerificationToken"
+-- | A TXT record that must be placed in the DNS settings for the domain, in
+-- order to complete domain verification.
+vdirsVerificationToken :: Lens' VerifyDomainIdentityResponse Text
+vdirsVerificationToken = lens _vdirsVerificationToken (\ s a -> s{_vdirsVerificationToken = a});
diff --git a/gen/Network/AWS/SES/VerifyEmailAddress.hs b/gen/Network/AWS/SES/VerifyEmailAddress.hs
--- a/gen/Network/AWS/SES/VerifyEmailAddress.hs
+++ b/gen/Network/AWS/SES/VerifyEmailAddress.hs
@@ -1,95 +1,104 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.VerifyEmailAddress
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Verifies an email address. This action causes a confirmation email message to
--- be sent to the specified address.
+-- Verifies an email address. This action causes a confirmation email
+-- message to be sent to the specified address.
 --
--- The VerifyEmailAddress action is deprecated as of the May 15, 2012 release
--- of Domain Verification. The VerifyEmailIdentity action is now preferred. This
--- action is throttled at one request per second.
+-- The VerifyEmailAddress action is deprecated as of the May 15, 2012
+-- release of Domain Verification. The VerifyEmailIdentity action is now
+-- preferred.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyEmailAddress.html>
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyEmailAddress.html AWS API Reference> for VerifyEmailAddress.
 module Network.AWS.SES.VerifyEmailAddress
     (
-    -- * Request
-      VerifyEmailAddress
-    -- ** Request constructor
-    , verifyEmailAddress
-    -- ** Request lenses
+    -- * Creating a Request
+      verifyEmailAddress
+    , VerifyEmailAddress
+    -- * Request Lenses
     , veaEmailAddress
 
-    -- * Response
-    , VerifyEmailAddressResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , verifyEmailAddressResponse
+    , VerifyEmailAddressResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
-newtype VerifyEmailAddress = VerifyEmailAddress
+-- | Represents a request instructing the service to begin email address
+-- verification.
+--
+-- /See:/ 'verifyEmailAddress' smart constructor.
+newtype VerifyEmailAddress = VerifyEmailAddress'
     { _veaEmailAddress :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'VerifyEmailAddress' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'VerifyEmailAddress' with the minimum fields required to make a request.
 --
--- * 'veaEmailAddress' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-verifyEmailAddress :: Text -- ^ 'veaEmailAddress'
-                   -> VerifyEmailAddress
-verifyEmailAddress p1 = VerifyEmailAddress
-    { _veaEmailAddress = p1
+-- * 'veaEmailAddress'
+verifyEmailAddress
+    :: Text -- ^ 'veaEmailAddress'
+    -> VerifyEmailAddress
+verifyEmailAddress pEmailAddress_ =
+    VerifyEmailAddress'
+    { _veaEmailAddress = pEmailAddress_
     }
 
 -- | The email address to be verified.
 veaEmailAddress :: Lens' VerifyEmailAddress Text
-veaEmailAddress = lens _veaEmailAddress (\s a -> s { _veaEmailAddress = a })
+veaEmailAddress = lens _veaEmailAddress (\ s a -> s{_veaEmailAddress = a});
 
-data VerifyEmailAddressResponse = VerifyEmailAddressResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest VerifyEmailAddress where
+        type Sv VerifyEmailAddress = SES
+        type Rs VerifyEmailAddress =
+             VerifyEmailAddressResponse
+        request = postQuery
+        response = receiveNull VerifyEmailAddressResponse'
 
--- | 'VerifyEmailAddressResponse' constructor.
-verifyEmailAddressResponse :: VerifyEmailAddressResponse
-verifyEmailAddressResponse = VerifyEmailAddressResponse
+instance ToHeaders VerifyEmailAddress where
+        toHeaders = const mempty
 
 instance ToPath VerifyEmailAddress where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery VerifyEmailAddress where
-    toQuery VerifyEmailAddress{..} = mconcat
-        [ "EmailAddress" =? _veaEmailAddress
-        ]
-
-instance ToHeaders VerifyEmailAddress
+        toQuery VerifyEmailAddress'{..}
+          = mconcat
+              ["Action" =: ("VerifyEmailAddress" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "EmailAddress" =: _veaEmailAddress]
 
-instance AWSRequest VerifyEmailAddress where
-    type Sv VerifyEmailAddress = SES
-    type Rs VerifyEmailAddress = VerifyEmailAddressResponse
+-- | /See:/ 'verifyEmailAddressResponse' smart constructor.
+data VerifyEmailAddressResponse =
+    VerifyEmailAddressResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "VerifyEmailAddress"
-    response = nullResponse VerifyEmailAddressResponse
+-- | Creates a value of 'VerifyEmailAddressResponse' with the minimum fields required to make a request.
+--
+verifyEmailAddressResponse
+    :: VerifyEmailAddressResponse
+verifyEmailAddressResponse = VerifyEmailAddressResponse'
diff --git a/gen/Network/AWS/SES/VerifyEmailIdentity.hs b/gen/Network/AWS/SES/VerifyEmailIdentity.hs
--- a/gen/Network/AWS/SES/VerifyEmailIdentity.hs
+++ b/gen/Network/AWS/SES/VerifyEmailIdentity.hs
@@ -1,93 +1,119 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.VerifyEmailIdentity
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Verifies an email address. This action causes a confirmation email message to
--- be sent to the specified address.
+-- Verifies an email address. This action causes a confirmation email
+-- message to be sent to the specified address.
 --
 -- This action is throttled at one request per second.
 --
--- <http://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyEmailIdentity.html>
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyEmailIdentity.html AWS API Reference> for VerifyEmailIdentity.
 module Network.AWS.SES.VerifyEmailIdentity
     (
-    -- * Request
-      VerifyEmailIdentity
-    -- ** Request constructor
-    , verifyEmailIdentity
-    -- ** Request lenses
+    -- * Creating a Request
+      verifyEmailIdentity
+    , VerifyEmailIdentity
+    -- * Request Lenses
     , veiEmailAddress
 
-    -- * Response
-    , VerifyEmailIdentityResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , verifyEmailIdentityResponse
+    , VerifyEmailIdentityResponse
+    -- * Response Lenses
+    , veirsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.SES.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
 
-newtype VerifyEmailIdentity = VerifyEmailIdentity
+-- | Represents a request instructing the service to begin email address
+-- verification.
+--
+-- /See:/ 'verifyEmailIdentity' smart constructor.
+newtype VerifyEmailIdentity = VerifyEmailIdentity'
     { _veiEmailAddress :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'VerifyEmailIdentity' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'VerifyEmailIdentity' with the minimum fields required to make a request.
 --
--- * 'veiEmailAddress' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-verifyEmailIdentity :: Text -- ^ 'veiEmailAddress'
-                    -> VerifyEmailIdentity
-verifyEmailIdentity p1 = VerifyEmailIdentity
-    { _veiEmailAddress = p1
+-- * 'veiEmailAddress'
+verifyEmailIdentity
+    :: Text -- ^ 'veiEmailAddress'
+    -> VerifyEmailIdentity
+verifyEmailIdentity pEmailAddress_ =
+    VerifyEmailIdentity'
+    { _veiEmailAddress = pEmailAddress_
     }
 
 -- | The email address to be verified.
 veiEmailAddress :: Lens' VerifyEmailIdentity Text
-veiEmailAddress = lens _veiEmailAddress (\s a -> s { _veiEmailAddress = a })
+veiEmailAddress = lens _veiEmailAddress (\ s a -> s{_veiEmailAddress = a});
 
-data VerifyEmailIdentityResponse = VerifyEmailIdentityResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest VerifyEmailIdentity where
+        type Sv VerifyEmailIdentity = SES
+        type Rs VerifyEmailIdentity =
+             VerifyEmailIdentityResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "VerifyEmailIdentityResult"
+              (\ s h x ->
+                 VerifyEmailIdentityResponse' <$> (pure (fromEnum s)))
 
--- | 'VerifyEmailIdentityResponse' constructor.
-verifyEmailIdentityResponse :: VerifyEmailIdentityResponse
-verifyEmailIdentityResponse = VerifyEmailIdentityResponse
+instance ToHeaders VerifyEmailIdentity where
+        toHeaders = const mempty
 
 instance ToPath VerifyEmailIdentity where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery VerifyEmailIdentity where
-    toQuery VerifyEmailIdentity{..} = mconcat
-        [ "EmailAddress" =? _veiEmailAddress
-        ]
+        toQuery VerifyEmailIdentity'{..}
+          = mconcat
+              ["Action" =: ("VerifyEmailIdentity" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "EmailAddress" =: _veiEmailAddress]
 
-instance ToHeaders VerifyEmailIdentity
+-- | An empty element. Receiving this element indicates that the request
+-- completed successfully.
+--
+-- /See:/ 'verifyEmailIdentityResponse' smart constructor.
+newtype VerifyEmailIdentityResponse = VerifyEmailIdentityResponse'
+    { _veirsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest VerifyEmailIdentity where
-    type Sv VerifyEmailIdentity = SES
-    type Rs VerifyEmailIdentity = VerifyEmailIdentityResponse
+-- | Creates a value of 'VerifyEmailIdentityResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'veirsStatus'
+verifyEmailIdentityResponse
+    :: Int -- ^ 'veirsStatus'
+    -> VerifyEmailIdentityResponse
+verifyEmailIdentityResponse pStatus_ =
+    VerifyEmailIdentityResponse'
+    { _veirsStatus = pStatus_
+    }
 
-    request  = post "VerifyEmailIdentity"
-    response = nullResponse VerifyEmailIdentityResponse
+-- | The response status code.
+veirsStatus :: Lens' VerifyEmailIdentityResponse Int
+veirsStatus = lens _veirsStatus (\ s a -> s{_veirsStatus = a});
diff --git a/gen/Network/AWS/SES/Waiters.hs b/gen/Network/AWS/SES/Waiters.hs
--- a/gen/Network/AWS/SES/Waiters.hs
+++ b/gen/Network/AWS/SES/Waiters.hs
@@ -1,31 +1,20 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE TypeFamilies      #-}
 
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.SES.Waiters
--- 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/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
 module Network.AWS.SES.Waiters where
 
-import Network.AWS.SES.GetIdentityVerificationAttributes
-import Network.AWS.SES.Types
-import Network.AWS.Waiters
-
-identityExists :: Wait GetIdentityVerificationAttributes
-identityExists = Wait
-    { _waitName      = "IdentityExists"
-    , _waitAttempts  = 20
-    , _waitDelay     = 3
-    , _waitAcceptors =
-        [ matchAll Success AcceptSuccess
-            (givarVerificationAttributes . traverse . ivaVerificationStatus)
-        ]
-    }
+import           Network.AWS.Prelude
+import           Network.AWS.SES.Types
+import           Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,21 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Main (main) where
+
+import Test.Tasty
+import Test.AWS.SES
+import Test.AWS.SES.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "SES"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/Gen/SES.hs b/test/Test/AWS/Gen/SES.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/SES.hs
@@ -0,0 +1,413 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans        #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.AWS.Gen.SES
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Test.AWS.Gen.SES where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.SES
+import Test.AWS.SES.Internal
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ testGetSendQuota $
+--             getSendQuota
+--
+--         , testDeleteIdentityPolicy $
+--             deleteIdentityPolicy
+--
+--         , testPutIdentityPolicy $
+--             putIdentityPolicy
+--
+--         , testSetIdentityDkimEnabled $
+--             setIdentityDkimEnabled
+--
+--         , testGetIdentityNotificationAttributes $
+--             getIdentityNotificationAttributes
+--
+--         , testListIdentityPolicies $
+--             listIdentityPolicies
+--
+--         , testSetIdentityFeedbackForwardingEnabled $
+--             setIdentityFeedbackForwardingEnabled
+--
+--         , testGetIdentityVerificationAttributes $
+--             getIdentityVerificationAttributes
+--
+--         , testGetIdentityPolicies $
+--             getIdentityPolicies
+--
+--         , testVerifyDomainIdentity $
+--             verifyDomainIdentity
+--
+--         , testVerifyDomainDkim $
+--             verifyDomainDkim
+--
+--         , testSendRawEmail $
+--             sendRawEmail
+--
+--         , testGetIdentityDkimAttributes $
+--             getIdentityDkimAttributes
+--
+--         , testDeleteIdentity $
+--             deleteIdentity
+--
+--         , testGetSendStatistics $
+--             getSendStatistics
+--
+--         , testListIdentities $
+--             listIdentities
+--
+--         , testDeleteVerifiedEmailAddress $
+--             deleteVerifiedEmailAddress
+--
+--         , testVerifyEmailAddress $
+--             verifyEmailAddress
+--
+--         , testVerifyEmailIdentity $
+--             verifyEmailIdentity
+--
+--         , testSendEmail $
+--             sendEmail
+--
+--         , testListVerifiedEmailAddresses $
+--             listVerifiedEmailAddresses
+--
+--         , testSetIdentityNotificationTopic $
+--             setIdentityNotificationTopic
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testGetSendQuotaResponse $
+--             getSendQuotaResponse
+--
+--         , testDeleteIdentityPolicyResponse $
+--             deleteIdentityPolicyResponse
+--
+--         , testPutIdentityPolicyResponse $
+--             putIdentityPolicyResponse
+--
+--         , testSetIdentityDkimEnabledResponse $
+--             setIdentityDkimEnabledResponse
+--
+--         , testGetIdentityNotificationAttributesResponse $
+--             getIdentityNotificationAttributesResponse
+--
+--         , testListIdentityPoliciesResponse $
+--             listIdentityPoliciesResponse
+--
+--         , testSetIdentityFeedbackForwardingEnabledResponse $
+--             setIdentityFeedbackForwardingEnabledResponse
+--
+--         , testGetIdentityVerificationAttributesResponse $
+--             getIdentityVerificationAttributesResponse
+--
+--         , testGetIdentityPoliciesResponse $
+--             getIdentityPoliciesResponse
+--
+--         , testVerifyDomainIdentityResponse $
+--             verifyDomainIdentityResponse
+--
+--         , testVerifyDomainDkimResponse $
+--             verifyDomainDkimResponse
+--
+--         , testSendRawEmailResponse $
+--             sendRawEmailResponse
+--
+--         , testGetIdentityDkimAttributesResponse $
+--             getIdentityDkimAttributesResponse
+--
+--         , testDeleteIdentityResponse $
+--             deleteIdentityResponse
+--
+--         , testGetSendStatisticsResponse $
+--             getSendStatisticsResponse
+--
+--         , testListIdentitiesResponse $
+--             listIdentitiesResponse
+--
+--         , testDeleteVerifiedEmailAddressResponse $
+--             deleteVerifiedEmailAddressResponse
+--
+--         , testVerifyEmailAddressResponse $
+--             verifyEmailAddressResponse
+--
+--         , testVerifyEmailIdentityResponse $
+--             verifyEmailIdentityResponse
+--
+--         , testSendEmailResponse $
+--             sendEmailResponse
+--
+--         , testListVerifiedEmailAddressesResponse $
+--             listVerifiedEmailAddressesResponse
+--
+--         , testSetIdentityNotificationTopicResponse $
+--             setIdentityNotificationTopicResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testGetSendQuota :: GetSendQuota -> TestTree
+testGetSendQuota = req
+    "GetSendQuota"
+    "fixture/GetSendQuota"
+
+testDeleteIdentityPolicy :: DeleteIdentityPolicy -> TestTree
+testDeleteIdentityPolicy = req
+    "DeleteIdentityPolicy"
+    "fixture/DeleteIdentityPolicy"
+
+testPutIdentityPolicy :: PutIdentityPolicy -> TestTree
+testPutIdentityPolicy = req
+    "PutIdentityPolicy"
+    "fixture/PutIdentityPolicy"
+
+testSetIdentityDkimEnabled :: SetIdentityDkimEnabled -> TestTree
+testSetIdentityDkimEnabled = req
+    "SetIdentityDkimEnabled"
+    "fixture/SetIdentityDkimEnabled"
+
+testGetIdentityNotificationAttributes :: GetIdentityNotificationAttributes -> TestTree
+testGetIdentityNotificationAttributes = req
+    "GetIdentityNotificationAttributes"
+    "fixture/GetIdentityNotificationAttributes"
+
+testListIdentityPolicies :: ListIdentityPolicies -> TestTree
+testListIdentityPolicies = req
+    "ListIdentityPolicies"
+    "fixture/ListIdentityPolicies"
+
+testSetIdentityFeedbackForwardingEnabled :: SetIdentityFeedbackForwardingEnabled -> TestTree
+testSetIdentityFeedbackForwardingEnabled = req
+    "SetIdentityFeedbackForwardingEnabled"
+    "fixture/SetIdentityFeedbackForwardingEnabled"
+
+testGetIdentityVerificationAttributes :: GetIdentityVerificationAttributes -> TestTree
+testGetIdentityVerificationAttributes = req
+    "GetIdentityVerificationAttributes"
+    "fixture/GetIdentityVerificationAttributes"
+
+testGetIdentityPolicies :: GetIdentityPolicies -> TestTree
+testGetIdentityPolicies = req
+    "GetIdentityPolicies"
+    "fixture/GetIdentityPolicies"
+
+testVerifyDomainIdentity :: VerifyDomainIdentity -> TestTree
+testVerifyDomainIdentity = req
+    "VerifyDomainIdentity"
+    "fixture/VerifyDomainIdentity"
+
+testVerifyDomainDkim :: VerifyDomainDkim -> TestTree
+testVerifyDomainDkim = req
+    "VerifyDomainDkim"
+    "fixture/VerifyDomainDkim"
+
+testSendRawEmail :: SendRawEmail -> TestTree
+testSendRawEmail = req
+    "SendRawEmail"
+    "fixture/SendRawEmail"
+
+testGetIdentityDkimAttributes :: GetIdentityDkimAttributes -> TestTree
+testGetIdentityDkimAttributes = req
+    "GetIdentityDkimAttributes"
+    "fixture/GetIdentityDkimAttributes"
+
+testDeleteIdentity :: DeleteIdentity -> TestTree
+testDeleteIdentity = req
+    "DeleteIdentity"
+    "fixture/DeleteIdentity"
+
+testGetSendStatistics :: GetSendStatistics -> TestTree
+testGetSendStatistics = req
+    "GetSendStatistics"
+    "fixture/GetSendStatistics"
+
+testListIdentities :: ListIdentities -> TestTree
+testListIdentities = req
+    "ListIdentities"
+    "fixture/ListIdentities"
+
+testDeleteVerifiedEmailAddress :: DeleteVerifiedEmailAddress -> TestTree
+testDeleteVerifiedEmailAddress = req
+    "DeleteVerifiedEmailAddress"
+    "fixture/DeleteVerifiedEmailAddress"
+
+testVerifyEmailAddress :: VerifyEmailAddress -> TestTree
+testVerifyEmailAddress = req
+    "VerifyEmailAddress"
+    "fixture/VerifyEmailAddress"
+
+testVerifyEmailIdentity :: VerifyEmailIdentity -> TestTree
+testVerifyEmailIdentity = req
+    "VerifyEmailIdentity"
+    "fixture/VerifyEmailIdentity"
+
+testSendEmail :: SendEmail -> TestTree
+testSendEmail = req
+    "SendEmail"
+    "fixture/SendEmail"
+
+testListVerifiedEmailAddresses :: ListVerifiedEmailAddresses -> TestTree
+testListVerifiedEmailAddresses = req
+    "ListVerifiedEmailAddresses"
+    "fixture/ListVerifiedEmailAddresses"
+
+testSetIdentityNotificationTopic :: SetIdentityNotificationTopic -> TestTree
+testSetIdentityNotificationTopic = req
+    "SetIdentityNotificationTopic"
+    "fixture/SetIdentityNotificationTopic"
+
+-- Responses
+
+testGetSendQuotaResponse :: GetSendQuotaResponse -> TestTree
+testGetSendQuotaResponse = res
+    "GetSendQuotaResponse"
+    "fixture/GetSendQuotaResponse"
+    (Proxy :: Proxy GetSendQuota)
+
+testDeleteIdentityPolicyResponse :: DeleteIdentityPolicyResponse -> TestTree
+testDeleteIdentityPolicyResponse = res
+    "DeleteIdentityPolicyResponse"
+    "fixture/DeleteIdentityPolicyResponse"
+    (Proxy :: Proxy DeleteIdentityPolicy)
+
+testPutIdentityPolicyResponse :: PutIdentityPolicyResponse -> TestTree
+testPutIdentityPolicyResponse = res
+    "PutIdentityPolicyResponse"
+    "fixture/PutIdentityPolicyResponse"
+    (Proxy :: Proxy PutIdentityPolicy)
+
+testSetIdentityDkimEnabledResponse :: SetIdentityDkimEnabledResponse -> TestTree
+testSetIdentityDkimEnabledResponse = res
+    "SetIdentityDkimEnabledResponse"
+    "fixture/SetIdentityDkimEnabledResponse"
+    (Proxy :: Proxy SetIdentityDkimEnabled)
+
+testGetIdentityNotificationAttributesResponse :: GetIdentityNotificationAttributesResponse -> TestTree
+testGetIdentityNotificationAttributesResponse = res
+    "GetIdentityNotificationAttributesResponse"
+    "fixture/GetIdentityNotificationAttributesResponse"
+    (Proxy :: Proxy GetIdentityNotificationAttributes)
+
+testListIdentityPoliciesResponse :: ListIdentityPoliciesResponse -> TestTree
+testListIdentityPoliciesResponse = res
+    "ListIdentityPoliciesResponse"
+    "fixture/ListIdentityPoliciesResponse"
+    (Proxy :: Proxy ListIdentityPolicies)
+
+testSetIdentityFeedbackForwardingEnabledResponse :: SetIdentityFeedbackForwardingEnabledResponse -> TestTree
+testSetIdentityFeedbackForwardingEnabledResponse = res
+    "SetIdentityFeedbackForwardingEnabledResponse"
+    "fixture/SetIdentityFeedbackForwardingEnabledResponse"
+    (Proxy :: Proxy SetIdentityFeedbackForwardingEnabled)
+
+testGetIdentityVerificationAttributesResponse :: GetIdentityVerificationAttributesResponse -> TestTree
+testGetIdentityVerificationAttributesResponse = res
+    "GetIdentityVerificationAttributesResponse"
+    "fixture/GetIdentityVerificationAttributesResponse"
+    (Proxy :: Proxy GetIdentityVerificationAttributes)
+
+testGetIdentityPoliciesResponse :: GetIdentityPoliciesResponse -> TestTree
+testGetIdentityPoliciesResponse = res
+    "GetIdentityPoliciesResponse"
+    "fixture/GetIdentityPoliciesResponse"
+    (Proxy :: Proxy GetIdentityPolicies)
+
+testVerifyDomainIdentityResponse :: VerifyDomainIdentityResponse -> TestTree
+testVerifyDomainIdentityResponse = res
+    "VerifyDomainIdentityResponse"
+    "fixture/VerifyDomainIdentityResponse"
+    (Proxy :: Proxy VerifyDomainIdentity)
+
+testVerifyDomainDkimResponse :: VerifyDomainDkimResponse -> TestTree
+testVerifyDomainDkimResponse = res
+    "VerifyDomainDkimResponse"
+    "fixture/VerifyDomainDkimResponse"
+    (Proxy :: Proxy VerifyDomainDkim)
+
+testSendRawEmailResponse :: SendRawEmailResponse -> TestTree
+testSendRawEmailResponse = res
+    "SendRawEmailResponse"
+    "fixture/SendRawEmailResponse"
+    (Proxy :: Proxy SendRawEmail)
+
+testGetIdentityDkimAttributesResponse :: GetIdentityDkimAttributesResponse -> TestTree
+testGetIdentityDkimAttributesResponse = res
+    "GetIdentityDkimAttributesResponse"
+    "fixture/GetIdentityDkimAttributesResponse"
+    (Proxy :: Proxy GetIdentityDkimAttributes)
+
+testDeleteIdentityResponse :: DeleteIdentityResponse -> TestTree
+testDeleteIdentityResponse = res
+    "DeleteIdentityResponse"
+    "fixture/DeleteIdentityResponse"
+    (Proxy :: Proxy DeleteIdentity)
+
+testGetSendStatisticsResponse :: GetSendStatisticsResponse -> TestTree
+testGetSendStatisticsResponse = res
+    "GetSendStatisticsResponse"
+    "fixture/GetSendStatisticsResponse"
+    (Proxy :: Proxy GetSendStatistics)
+
+testListIdentitiesResponse :: ListIdentitiesResponse -> TestTree
+testListIdentitiesResponse = res
+    "ListIdentitiesResponse"
+    "fixture/ListIdentitiesResponse"
+    (Proxy :: Proxy ListIdentities)
+
+testDeleteVerifiedEmailAddressResponse :: DeleteVerifiedEmailAddressResponse -> TestTree
+testDeleteVerifiedEmailAddressResponse = res
+    "DeleteVerifiedEmailAddressResponse"
+    "fixture/DeleteVerifiedEmailAddressResponse"
+    (Proxy :: Proxy DeleteVerifiedEmailAddress)
+
+testVerifyEmailAddressResponse :: VerifyEmailAddressResponse -> TestTree
+testVerifyEmailAddressResponse = res
+    "VerifyEmailAddressResponse"
+    "fixture/VerifyEmailAddressResponse"
+    (Proxy :: Proxy VerifyEmailAddress)
+
+testVerifyEmailIdentityResponse :: VerifyEmailIdentityResponse -> TestTree
+testVerifyEmailIdentityResponse = res
+    "VerifyEmailIdentityResponse"
+    "fixture/VerifyEmailIdentityResponse"
+    (Proxy :: Proxy VerifyEmailIdentity)
+
+testSendEmailResponse :: SendEmailResponse -> TestTree
+testSendEmailResponse = res
+    "SendEmailResponse"
+    "fixture/SendEmailResponse"
+    (Proxy :: Proxy SendEmail)
+
+testListVerifiedEmailAddressesResponse :: ListVerifiedEmailAddressesResponse -> TestTree
+testListVerifiedEmailAddressesResponse = res
+    "ListVerifiedEmailAddressesResponse"
+    "fixture/ListVerifiedEmailAddressesResponse"
+    (Proxy :: Proxy ListVerifiedEmailAddresses)
+
+testSetIdentityNotificationTopicResponse :: SetIdentityNotificationTopicResponse -> TestTree
+testSetIdentityNotificationTopicResponse = res
+    "SetIdentityNotificationTopicResponse"
+    "fixture/SetIdentityNotificationTopicResponse"
+    (Proxy :: Proxy SetIdentityNotificationTopic)
diff --git a/test/Test/AWS/SES.hs b/test/Test/AWS/SES.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/SES.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Module      : Test.AWS.SES
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- 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)
+
+module Test.AWS.SES
+    ( tests
+    , fixtures
+    ) where
+
+import           Network.AWS.SES
+import           Test.AWS.Gen.SES
+import           Test.Tasty
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/SES/Internal.hs b/test/Test/AWS/SES/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/SES/Internal.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.SES.Internal
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- 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)
+
+module Test.AWS.SES.Internal where
+
+import Test.AWS.Prelude
