diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,22 +1,47 @@
 # Amazon Elastic Load Balancing 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
 
-Elastic Load Balancing automatically distributes incoming application traffic
-across multiple Amazon EC2 instances. It enables you to achieve greater
-levels of fault tolerance in your applications, seamlessly providing the
-required amount of load balancing capacity needed to distribute application
-traffic.
+Elastic Load Balancing
 
+Elastic Load Balancing distributes incoming traffic across your EC2
+instances.
+
+For information about the features of Elastic Load Balancing, see
+<http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elastic-load-balancing.html What Is Elastic Load Balancing?>
+in the /Elastic Load Balancing Developer Guide/.
+
+For information about the AWS regions supported by Elastic Load
+Balancing, see
+<http://docs.aws.amazon.com/general/latest/gr/rande.html#elb_region Regions and Endpoints - Elastic Load Balancing>
+in the /Amazon Web Services General Reference/.
+
+All Elastic Load Balancing operations are /idempotent/, which means that
+they complete at most one time. If you repeat an operation, it succeeds
+with a 200 OK response code.
+
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-elb)
 and the [AWS API Reference](http://docs.aws.amazon.com/ElasticLoadBalancing/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-elb.cabal b/amazonka-elb.cabal
--- a/amazonka-elb.cabal
+++ b/amazonka-elb.cabal
@@ -1,29 +1,49 @@
 name:                  amazonka-elb
-version:               0.3.6
+version:               1.0.0
 synopsis:              Amazon Elastic Load Balancing 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:
-    Elastic Load Balancing automatically distributes incoming application traffic
-    across multiple Amazon EC2 instances. It enables you to achieve greater
-    levels of fault tolerance in your applications, seamlessly providing the
-    required amount of load balancing capacity needed to distribute application
-    traffic.
+    Elastic Load Balancing
 
+    Elastic Load Balancing distributes incoming traffic across your EC2
+    instances.
+
+    For information about the features of Elastic Load Balancing, see
+    <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elastic-load-balancing.html What Is Elastic Load Balancing?>
+    in the /Elastic Load Balancing Developer Guide/.
+
+    For information about the AWS regions supported by Elastic Load
+    Balancing, see
+    <http://docs.aws.amazon.com/general/latest/gr/rande.html#elb_region Regions and Endpoints - Elastic Load Balancing>
+    in the /Amazon Web Services General Reference/.
+
+    All Elastic Load Balancing operations are /idempotent/, which means that
+    they complete at most one time. If you repeat an operation, it succeeds
+    with a 200 OK response code.
     .
-    /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/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.ELB" and the <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/Welcome.html AWS API Reference>
+    to get started.
 
 source-repository head
     type:     git
@@ -66,9 +86,40 @@
         , Network.AWS.ELB.SetLoadBalancerPoliciesForBackendServer
         , Network.AWS.ELB.SetLoadBalancerPoliciesOfListener
         , Network.AWS.ELB.Types
+        , Network.AWS.ELB.Waiters
 
     other-modules:
+          Network.AWS.ELB.Types.Product
+        , Network.AWS.ELB.Types.Sum
 
     build-depends:
-          amazonka-core == 0.3.6.*
+          amazonka-core == 1.0.0.*
         , base          >= 4.7     && < 5
+
+test-suite amazonka-elb-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.ELB
+        , Test.AWS.Gen.ELB
+        , Test.AWS.ELB.Internal
+
+    build-depends:
+          amazonka-core == 1.0.0
+        , amazonka-test == 1.0.0
+        , amazonka-elb == 1.0.0
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
diff --git a/gen/Network/AWS/ELB.hs b/gen/Network/AWS/ELB.hs
--- a/gen/Network/AWS/ELB.hs
+++ b/gen/Network/AWS/ELB.hs
@@ -1,78 +1,429 @@
+{-# 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.ELB
--- 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.
-
--- | Elastic Load Balancing automatically distributes incoming application traffic
--- across multiple Amazon EC2 instances. It enables you to achieve greater
--- levels of fault tolerance in your applications, seamlessly providing the
--- required amount of load balancing capacity needed to distribute application
--- traffic.
+-- Elastic Load Balancing
+--
+-- Elastic Load Balancing distributes incoming traffic across your EC2
+-- instances.
+--
+-- For information about the features of Elastic Load Balancing, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elastic-load-balancing.html What Is Elastic Load Balancing?>
+-- in the /Elastic Load Balancing Developer Guide/.
+--
+-- For information about the AWS regions supported by Elastic Load
+-- Balancing, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html#elb_region Regions and Endpoints - Elastic Load Balancing>
+-- in the /Amazon Web Services General Reference/.
+--
+-- All Elastic Load Balancing operations are /idempotent/, which means that
+-- they complete at most one time. If you repeat an operation, it succeeds
+-- with a 200 OK response code.
+--
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.ELB
-    ( module Network.AWS.ELB.AddTags
+    (
+    -- * Service
+      ELB
+
+    -- * Errors
+    -- $errors
+
+    -- ** PolicyNotFoundException
+    , _PolicyNotFoundException
+
+    -- ** AccessPointNotFoundException
+    , _AccessPointNotFoundException
+
+    -- ** DuplicatePolicyNameException
+    , _DuplicatePolicyNameException
+
+    -- ** InvalidConfigurationRequestException
+    , _InvalidConfigurationRequestException
+
+    -- ** SubnetNotFoundException
+    , _SubnetNotFoundException
+
+    -- ** LoadBalancerAttributeNotFoundException
+    , _LoadBalancerAttributeNotFoundException
+
+    -- ** InvalidSubnetException
+    , _InvalidSubnetException
+
+    -- ** DuplicateTagKeysException
+    , _DuplicateTagKeysException
+
+    -- ** DuplicateListenerException
+    , _DuplicateListenerException
+
+    -- ** TooManyTagsException
+    , _TooManyTagsException
+
+    -- ** PolicyTypeNotFoundException
+    , _PolicyTypeNotFoundException
+
+    -- ** DuplicateAccessPointNameException
+    , _DuplicateAccessPointNameException
+
+    -- ** InvalidSecurityGroupException
+    , _InvalidSecurityGroupException
+
+    -- ** ListenerNotFoundException
+    , _ListenerNotFoundException
+
+    -- ** InvalidEndPointException
+    , _InvalidEndPointException
+
+    -- ** TooManyAccessPointsException
+    , _TooManyAccessPointsException
+
+    -- ** InvalidSchemeException
+    , _InvalidSchemeException
+
+    -- ** TooManyPoliciesException
+    , _TooManyPoliciesException
+
+    -- ** CertificateNotFoundException
+    , _CertificateNotFoundException
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** DescribeLoadBalancerPolicyTypes
+    , module Network.AWS.ELB.DescribeLoadBalancerPolicyTypes
+
+    -- ** DescribeTags
+    , module Network.AWS.ELB.DescribeTags
+
+    -- ** DescribeLoadBalancers (Paginated)
+    , module Network.AWS.ELB.DescribeLoadBalancers
+
+    -- ** ApplySecurityGroupsToLoadBalancer
     , module Network.AWS.ELB.ApplySecurityGroupsToLoadBalancer
-    , module Network.AWS.ELB.AttachLoadBalancerToSubnets
-    , module Network.AWS.ELB.ConfigureHealthCheck
-    , module Network.AWS.ELB.CreateAppCookieStickinessPolicy
+
+    -- ** RemoveTags
+    , module Network.AWS.ELB.RemoveTags
+
+    -- ** CreateLBCookieStickinessPolicy
     , module Network.AWS.ELB.CreateLBCookieStickinessPolicy
-    , module Network.AWS.ELB.CreateLoadBalancer
-    , module Network.AWS.ELB.CreateLoadBalancerListeners
-    , module Network.AWS.ELB.CreateLoadBalancerPolicy
+
+    -- ** DeleteLoadBalancer
     , module Network.AWS.ELB.DeleteLoadBalancer
-    , module Network.AWS.ELB.DeleteLoadBalancerListeners
-    , module Network.AWS.ELB.DeleteLoadBalancerPolicy
+
+    -- ** CreateLoadBalancerPolicy
+    , module Network.AWS.ELB.CreateLoadBalancerPolicy
+
+    -- ** DeregisterInstancesFromLoadBalancer
     , module Network.AWS.ELB.DeregisterInstancesFromLoadBalancer
-    , module Network.AWS.ELB.DescribeInstanceHealth
-    , module Network.AWS.ELB.DescribeLoadBalancerAttributes
+
+    -- ** DescribeLoadBalancerPolicies
     , module Network.AWS.ELB.DescribeLoadBalancerPolicies
-    , module Network.AWS.ELB.DescribeLoadBalancerPolicyTypes
-    , module Network.AWS.ELB.DescribeLoadBalancers
-    , module Network.AWS.ELB.DescribeTags
-    , module Network.AWS.ELB.DetachLoadBalancerFromSubnets
+
+    -- ** DisableAvailabilityZonesForLoadBalancer
     , module Network.AWS.ELB.DisableAvailabilityZonesForLoadBalancer
+
+    -- ** SetLoadBalancerPoliciesForBackendServer
+    , module Network.AWS.ELB.SetLoadBalancerPoliciesForBackendServer
+
+    -- ** EnableAvailabilityZonesForLoadBalancer
     , module Network.AWS.ELB.EnableAvailabilityZonesForLoadBalancer
+
+    -- ** SetLoadBalancerListenerSSLCertificate
+    , module Network.AWS.ELB.SetLoadBalancerListenerSSLCertificate
+
+    -- ** ConfigureHealthCheck
+    , module Network.AWS.ELB.ConfigureHealthCheck
+
+    -- ** AttachLoadBalancerToSubnets
+    , module Network.AWS.ELB.AttachLoadBalancerToSubnets
+
+    -- ** ModifyLoadBalancerAttributes
     , module Network.AWS.ELB.ModifyLoadBalancerAttributes
+
+    -- ** CreateAppCookieStickinessPolicy
+    , module Network.AWS.ELB.CreateAppCookieStickinessPolicy
+
+    -- ** AddTags
+    , module Network.AWS.ELB.AddTags
+
+    -- ** DescribeLoadBalancerAttributes
+    , module Network.AWS.ELB.DescribeLoadBalancerAttributes
+
+    -- ** DescribeInstanceHealth
+    , module Network.AWS.ELB.DescribeInstanceHealth
+
+    -- ** DetachLoadBalancerFromSubnets
+    , module Network.AWS.ELB.DetachLoadBalancerFromSubnets
+
+    -- ** RegisterInstancesWithLoadBalancer
     , module Network.AWS.ELB.RegisterInstancesWithLoadBalancer
-    , module Network.AWS.ELB.RemoveTags
-    , module Network.AWS.ELB.SetLoadBalancerListenerSSLCertificate
-    , module Network.AWS.ELB.SetLoadBalancerPoliciesForBackendServer
+
+    -- ** DeleteLoadBalancerPolicy
+    , module Network.AWS.ELB.DeleteLoadBalancerPolicy
+
+    -- ** CreateLoadBalancerListeners
+    , module Network.AWS.ELB.CreateLoadBalancerListeners
+
+    -- ** DeleteLoadBalancerListeners
+    , module Network.AWS.ELB.DeleteLoadBalancerListeners
+
+    -- ** CreateLoadBalancer
+    , module Network.AWS.ELB.CreateLoadBalancer
+
+    -- ** SetLoadBalancerPoliciesOfListener
     , module Network.AWS.ELB.SetLoadBalancerPoliciesOfListener
-    , module Network.AWS.ELB.Types
+
+    -- * Types
+
+    -- ** AccessLog
+    , AccessLog
+    , accessLog
+    , alEmitInterval
+    , alS3BucketPrefix
+    , alS3BucketName
+    , alEnabled
+
+    -- ** AdditionalAttribute
+    , AdditionalAttribute
+    , additionalAttribute
+    , aaValue
+    , aaKey
+
+    -- ** AppCookieStickinessPolicy
+    , AppCookieStickinessPolicy
+    , appCookieStickinessPolicy
+    , acspPolicyName
+    , acspCookieName
+
+    -- ** BackendServerDescription
+    , BackendServerDescription
+    , backendServerDescription
+    , bsdPolicyNames
+    , bsdInstancePort
+
+    -- ** ConnectionDraining
+    , ConnectionDraining
+    , connectionDraining
+    , cdTimeout
+    , cdEnabled
+
+    -- ** ConnectionSettings
+    , ConnectionSettings
+    , connectionSettings
+    , csIdleTimeout
+
+    -- ** CrossZoneLoadBalancing
+    , CrossZoneLoadBalancing
+    , crossZoneLoadBalancing
+    , czlbEnabled
+
+    -- ** HealthCheck
+    , HealthCheck
+    , healthCheck
+    , hcTarget
+    , hcInterval
+    , hcTimeout
+    , hcUnhealthyThreshold
+    , hcHealthyThreshold
+
+    -- ** Instance
+    , Instance
+    , instance'
+    , iInstanceId
+
+    -- ** InstanceState
+    , InstanceState
+    , instanceState
+    , isInstanceId
+    , isState
+    , isReasonCode
+    , isDescription
+
+    -- ** LBCookieStickinessPolicy
+    , LBCookieStickinessPolicy
+    , lBCookieStickinessPolicy
+    , lbcspPolicyName
+    , lbcspCookieExpirationPeriod
+
+    -- ** Listener
+    , Listener
+    , listener
+    , lInstanceProtocol
+    , lSSLCertificateId
+    , lProtocol
+    , lLoadBalancerPort
+    , lInstancePort
+
+    -- ** ListenerDescription
+    , ListenerDescription
+    , listenerDescription
+    , ldPolicyNames
+    , ldListener
+
+    -- ** LoadBalancerAttributes
+    , LoadBalancerAttributes
+    , loadBalancerAttributes
+    , lbaCrossZoneLoadBalancing
+    , lbaAccessLog
+    , lbaAdditionalAttributes
+    , lbaConnectionSettings
+    , lbaConnectionDraining
+
+    -- ** LoadBalancerDescription
+    , LoadBalancerDescription
+    , loadBalancerDescription
+    , lbdSourceSecurityGroup
+    , lbdHealthCheck
+    , lbdCanonicalHostedZoneName
+    , lbdSecurityGroups
+    , lbdLoadBalancerName
+    , lbdCreatedTime
+    , lbdVPCId
+    , lbdSubnets
+    , lbdAvailabilityZones
+    , lbdBackendServerDescriptions
+    , lbdCanonicalHostedZoneNameId
+    , lbdInstances
+    , lbdScheme
+    , lbdListenerDescriptions
+    , lbdDNSName
+    , lbdPolicies
+
+    -- ** Policies
+    , Policies
+    , policies
+    , pOtherPolicies
+    , pLBCookieStickinessPolicies
+    , pAppCookieStickinessPolicies
+
+    -- ** PolicyAttribute
+    , PolicyAttribute
+    , policyAttribute
+    , paAttributeValue
+    , paAttributeName
+
+    -- ** PolicyAttributeDescription
+    , PolicyAttributeDescription
+    , policyAttributeDescription
+    , padAttributeValue
+    , padAttributeName
+
+    -- ** PolicyAttributeTypeDescription
+    , PolicyAttributeTypeDescription
+    , policyAttributeTypeDescription
+    , patdAttributeType
+    , patdCardinality
+    , patdDefaultValue
+    , patdAttributeName
+    , patdDescription
+
+    -- ** PolicyDescription
+    , PolicyDescription
+    , policyDescription
+    , pdPolicyName
+    , pdPolicyAttributeDescriptions
+    , pdPolicyTypeName
+
+    -- ** PolicyTypeDescription
+    , PolicyTypeDescription
+    , policyTypeDescription
+    , ptdPolicyTypeName
+    , ptdDescription
+    , ptdPolicyAttributeTypeDescriptions
+
+    -- ** SourceSecurityGroup
+    , SourceSecurityGroup
+    , sourceSecurityGroup
+    , ssgOwnerAlias
+    , ssgGroupName
+
+    -- ** Tag
+    , Tag
+    , tag
+    , tagValue
+    , tagKey
+
+    -- ** TagDescription
+    , TagDescription
+    , tagDescription
+    , tdLoadBalancerName
+    , tdTags
+
+    -- ** TagKeyOnly
+    , TagKeyOnly
+    , tagKeyOnly
+    , tkoKey
     ) where
 
-import Network.AWS.ELB.AddTags
-import Network.AWS.ELB.ApplySecurityGroupsToLoadBalancer
-import Network.AWS.ELB.AttachLoadBalancerToSubnets
-import Network.AWS.ELB.ConfigureHealthCheck
-import Network.AWS.ELB.CreateAppCookieStickinessPolicy
-import Network.AWS.ELB.CreateLBCookieStickinessPolicy
-import Network.AWS.ELB.CreateLoadBalancer
-import Network.AWS.ELB.CreateLoadBalancerListeners
-import Network.AWS.ELB.CreateLoadBalancerPolicy
-import Network.AWS.ELB.DeleteLoadBalancer
-import Network.AWS.ELB.DeleteLoadBalancerListeners
-import Network.AWS.ELB.DeleteLoadBalancerPolicy
-import Network.AWS.ELB.DeregisterInstancesFromLoadBalancer
-import Network.AWS.ELB.DescribeInstanceHealth
-import Network.AWS.ELB.DescribeLoadBalancerAttributes
-import Network.AWS.ELB.DescribeLoadBalancerPolicies
-import Network.AWS.ELB.DescribeLoadBalancerPolicyTypes
-import Network.AWS.ELB.DescribeLoadBalancers
-import Network.AWS.ELB.DescribeTags
-import Network.AWS.ELB.DetachLoadBalancerFromSubnets
-import Network.AWS.ELB.DisableAvailabilityZonesForLoadBalancer
-import Network.AWS.ELB.EnableAvailabilityZonesForLoadBalancer
-import Network.AWS.ELB.ModifyLoadBalancerAttributes
-import Network.AWS.ELB.RegisterInstancesWithLoadBalancer
-import Network.AWS.ELB.RemoveTags
-import Network.AWS.ELB.SetLoadBalancerListenerSSLCertificate
-import Network.AWS.ELB.SetLoadBalancerPoliciesForBackendServer
-import Network.AWS.ELB.SetLoadBalancerPoliciesOfListener
-import Network.AWS.ELB.Types
+import           Network.AWS.ELB.AddTags
+import           Network.AWS.ELB.ApplySecurityGroupsToLoadBalancer
+import           Network.AWS.ELB.AttachLoadBalancerToSubnets
+import           Network.AWS.ELB.ConfigureHealthCheck
+import           Network.AWS.ELB.CreateAppCookieStickinessPolicy
+import           Network.AWS.ELB.CreateLBCookieStickinessPolicy
+import           Network.AWS.ELB.CreateLoadBalancer
+import           Network.AWS.ELB.CreateLoadBalancerListeners
+import           Network.AWS.ELB.CreateLoadBalancerPolicy
+import           Network.AWS.ELB.DeleteLoadBalancer
+import           Network.AWS.ELB.DeleteLoadBalancerListeners
+import           Network.AWS.ELB.DeleteLoadBalancerPolicy
+import           Network.AWS.ELB.DeregisterInstancesFromLoadBalancer
+import           Network.AWS.ELB.DescribeInstanceHealth
+import           Network.AWS.ELB.DescribeLoadBalancerAttributes
+import           Network.AWS.ELB.DescribeLoadBalancerPolicies
+import           Network.AWS.ELB.DescribeLoadBalancerPolicyTypes
+import           Network.AWS.ELB.DescribeLoadBalancers
+import           Network.AWS.ELB.DescribeTags
+import           Network.AWS.ELB.DetachLoadBalancerFromSubnets
+import           Network.AWS.ELB.DisableAvailabilityZonesForLoadBalancer
+import           Network.AWS.ELB.EnableAvailabilityZonesForLoadBalancer
+import           Network.AWS.ELB.ModifyLoadBalancerAttributes
+import           Network.AWS.ELB.RegisterInstancesWithLoadBalancer
+import           Network.AWS.ELB.RemoveTags
+import           Network.AWS.ELB.SetLoadBalancerListenerSSLCertificate
+import           Network.AWS.ELB.SetLoadBalancerPoliciesForBackendServer
+import           Network.AWS.ELB.SetLoadBalancerPoliciesOfListener
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.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 'ELB'.
+-}
+
+{- $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/ELB/AddTags.hs b/gen/Network/AWS/ELB/AddTags.hs
--- a/gen/Network/AWS/ELB/AddTags.hs
+++ b/gen/Network/AWS/ELB/AddTags.hs
@@ -1,108 +1,128 @@
-{-# 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.ELB.AddTags
--- 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.
-
--- | Adds the specified tags to the specified load balancer. Each load balancer
--- can have a maximum of 10 tags.
+-- Adds the specified tags to the specified load balancer. Each load
+-- balancer can have a maximum of 10 tags.
 --
--- Each tag consists of a key and an optional value. If a tag with the same key
--- is already associated with the load balancer, 'AddTags' updates its value.
+-- Each tag consists of a key and an optional value. If a tag with the same
+-- key is already associated with the load balancer, 'AddTags' updates its
+-- value.
 --
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#tagging-elb Tagging> in the /Elastic Load Balancing DeveloperGuide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/add-remove-tags.html Tag Your Load Balancer>
+-- in the /Elastic Load Balancing Developer Guide/.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_AddTags.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_AddTags.html AWS API Reference> for AddTags.
 module Network.AWS.ELB.AddTags
     (
-    -- * Request
-      AddTags
-    -- ** Request constructor
-    , addTags
-    -- ** Request lenses
+    -- * Creating a Request
+      addTags
+    , AddTags
+    -- * Request Lenses
     , atLoadBalancerNames
     , atTags
 
-    -- * Response
-    , AddTagsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , addTagsResponse
+    , AddTagsResponse
+    -- * Response Lenses
+    , atrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data AddTags = AddTags
-    { _atLoadBalancerNames :: List "member" Text
-    , _atTags              :: List1 "member" Tag
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'addTags' smart constructor.
+data AddTags = AddTags'
+    { _atLoadBalancerNames :: ![Text]
+    , _atTags              :: !(List1 Tag)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'AddTags' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'AddTags' with the minimum fields required to make a request.
 --
--- * 'atLoadBalancerNames' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'atTags' @::@ 'NonEmpty' 'Tag'
+-- * 'atLoadBalancerNames'
 --
-addTags :: NonEmpty Tag -- ^ 'atTags'
-        -> AddTags
-addTags p1 = AddTags
-    { _atTags              = withIso _List1 (const id) p1
-    , _atLoadBalancerNames = mempty
+-- * 'atTags'
+addTags
+    :: NonEmpty Tag -- ^ 'atTags'
+    -> AddTags
+addTags pTags_ =
+    AddTags'
+    { _atLoadBalancerNames = mempty
+    , _atTags = _List1 # pTags_
     }
 
 -- | The name of the load balancer. You can specify one load balancer only.
 atLoadBalancerNames :: Lens' AddTags [Text]
-atLoadBalancerNames =
-    lens _atLoadBalancerNames (\s a -> s { _atLoadBalancerNames = a })
-        . _List
+atLoadBalancerNames = lens _atLoadBalancerNames (\ s a -> s{_atLoadBalancerNames = a}) . _Coerce;
 
 -- | The tags.
 atTags :: Lens' AddTags (NonEmpty Tag)
-atTags = lens _atTags (\s a -> s { _atTags = a }) . _List1
+atTags = lens _atTags (\ s a -> s{_atTags = a}) . _List1;
 
-data AddTagsResponse = AddTagsResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest AddTags where
+        type Sv AddTags = ELB
+        type Rs AddTags = AddTagsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "AddTagsResult"
+              (\ s h x -> AddTagsResponse' <$> (pure (fromEnum s)))
 
--- | 'AddTagsResponse' constructor.
-addTagsResponse :: AddTagsResponse
-addTagsResponse = AddTagsResponse
+instance ToHeaders AddTags where
+        toHeaders = const mempty
 
 instance ToPath AddTags where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery AddTags where
-    toQuery AddTags{..} = mconcat
-        [ "LoadBalancerNames" =? _atLoadBalancerNames
-        , "Tags"              =? _atTags
-        ]
+        toQuery AddTags'{..}
+          = mconcat
+              ["Action" =: ("AddTags" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerNames" =:
+                 toQueryList "member" _atLoadBalancerNames,
+               "Tags" =: toQueryList "member" _atTags]
 
-instance ToHeaders AddTags
+-- | /See:/ 'addTagsResponse' smart constructor.
+newtype AddTagsResponse = AddTagsResponse'
+    { _atrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest AddTags where
-    type Sv AddTags = ELB
-    type Rs AddTags = AddTagsResponse
+-- | Creates a value of 'AddTagsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atrsStatus'
+addTagsResponse
+    :: Int -- ^ 'atrsStatus'
+    -> AddTagsResponse
+addTagsResponse pStatus_ =
+    AddTagsResponse'
+    { _atrsStatus = pStatus_
+    }
 
-    request  = post "AddTags"
-    response = nullResponse AddTagsResponse
+-- | The response status code.
+atrsStatus :: Lens' AddTagsResponse Int
+atrsStatus = lens _atrsStatus (\ s a -> s{_atrsStatus = a});
diff --git a/gen/Network/AWS/ELB/ApplySecurityGroupsToLoadBalancer.hs b/gen/Network/AWS/ELB/ApplySecurityGroupsToLoadBalancer.hs
--- a/gen/Network/AWS/ELB/ApplySecurityGroupsToLoadBalancer.hs
+++ b/gen/Network/AWS/ELB/ApplySecurityGroupsToLoadBalancer.hs
@@ -1,134 +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.ELB.ApplySecurityGroupsToLoadBalancer
--- 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.
-
--- | Associates one or more security groups with your load balancer in a virtual
--- private cloud (VPC). The specified security groups override the previously
--- associated security groups.
+-- Associates one or more security groups with your load balancer in a
+-- virtual private cloud (VPC). The specified security groups override the
+-- previously associated security groups.
 --
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/USVPC_ApplySG.html Manage Security Groups for Amazon VPC> in the /Elastic Load Balancing Developer Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-security-groups.html#elb-vpc-security-groups Security Groups for Load Balancers in a VPC>
+-- in the /Elastic Load Balancing Developer Guide/.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_ApplySecurityGroupsToLoadBalancer.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_ApplySecurityGroupsToLoadBalancer.html AWS API Reference> for ApplySecurityGroupsToLoadBalancer.
 module Network.AWS.ELB.ApplySecurityGroupsToLoadBalancer
     (
-    -- * Request
-      ApplySecurityGroupsToLoadBalancer
-    -- ** Request constructor
-    , applySecurityGroupsToLoadBalancer
-    -- ** Request lenses
+    -- * Creating a Request
+      applySecurityGroupsToLoadBalancer
+    , ApplySecurityGroupsToLoadBalancer
+    -- * Request Lenses
     , asgtlbLoadBalancerName
     , asgtlbSecurityGroups
 
-    -- * Response
-    , ApplySecurityGroupsToLoadBalancerResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , applySecurityGroupsToLoadBalancerResponse
-    -- ** Response lenses
-    , asgtlbrSecurityGroups
+    , ApplySecurityGroupsToLoadBalancerResponse
+    -- * Response Lenses
+    , asgtlbrsSecurityGroups
+    , asgtlbrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data ApplySecurityGroupsToLoadBalancer = ApplySecurityGroupsToLoadBalancer
-    { _asgtlbLoadBalancerName :: Text
-    , _asgtlbSecurityGroups   :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'applySecurityGroupsToLoadBalancer' smart constructor.
+data ApplySecurityGroupsToLoadBalancer = ApplySecurityGroupsToLoadBalancer'
+    { _asgtlbLoadBalancerName :: !Text
+    , _asgtlbSecurityGroups   :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ApplySecurityGroupsToLoadBalancer' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'ApplySecurityGroupsToLoadBalancer' with the minimum fields required to make a request.
 --
--- * 'asgtlbLoadBalancerName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'asgtlbSecurityGroups' @::@ ['Text']
+-- * 'asgtlbLoadBalancerName'
 --
-applySecurityGroupsToLoadBalancer :: Text -- ^ 'asgtlbLoadBalancerName'
-                                  -> ApplySecurityGroupsToLoadBalancer
-applySecurityGroupsToLoadBalancer p1 = ApplySecurityGroupsToLoadBalancer
-    { _asgtlbLoadBalancerName = p1
-    , _asgtlbSecurityGroups   = mempty
+-- * 'asgtlbSecurityGroups'
+applySecurityGroupsToLoadBalancer
+    :: Text -- ^ 'asgtlbLoadBalancerName'
+    -> ApplySecurityGroupsToLoadBalancer
+applySecurityGroupsToLoadBalancer pLoadBalancerName_ =
+    ApplySecurityGroupsToLoadBalancer'
+    { _asgtlbLoadBalancerName = pLoadBalancerName_
+    , _asgtlbSecurityGroups = mempty
     }
 
 -- | The name of the load balancer.
 asgtlbLoadBalancerName :: Lens' ApplySecurityGroupsToLoadBalancer Text
-asgtlbLoadBalancerName =
-    lens _asgtlbLoadBalancerName (\s a -> s { _asgtlbLoadBalancerName = a })
+asgtlbLoadBalancerName = lens _asgtlbLoadBalancerName (\ s a -> s{_asgtlbLoadBalancerName = a});
 
--- | The IDs of the security groups to associate with the load balancer. Note that
--- you cannot specify the name of the security group.
+-- | The IDs of the security groups to associate with the load balancer. Note
+-- that you cannot specify the name of the security group.
 asgtlbSecurityGroups :: Lens' ApplySecurityGroupsToLoadBalancer [Text]
-asgtlbSecurityGroups =
-    lens _asgtlbSecurityGroups (\s a -> s { _asgtlbSecurityGroups = a })
-        . _List
+asgtlbSecurityGroups = lens _asgtlbSecurityGroups (\ s a -> s{_asgtlbSecurityGroups = a}) . _Coerce;
 
-newtype ApplySecurityGroupsToLoadBalancerResponse = ApplySecurityGroupsToLoadBalancerResponse
-    { _asgtlbrSecurityGroups :: List "member" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
+instance AWSRequest ApplySecurityGroupsToLoadBalancer
+         where
+        type Sv ApplySecurityGroupsToLoadBalancer = ELB
+        type Rs ApplySecurityGroupsToLoadBalancer =
+             ApplySecurityGroupsToLoadBalancerResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "ApplySecurityGroupsToLoadBalancerResult"
+              (\ s h x ->
+                 ApplySecurityGroupsToLoadBalancerResponse' <$>
+                   (x .@? "SecurityGroups" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-instance GHC.Exts.IsList ApplySecurityGroupsToLoadBalancerResponse where
-    type Item ApplySecurityGroupsToLoadBalancerResponse = Text
+instance ToHeaders ApplySecurityGroupsToLoadBalancer
+         where
+        toHeaders = const mempty
 
-    fromList = ApplySecurityGroupsToLoadBalancerResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _asgtlbrSecurityGroups
+instance ToPath ApplySecurityGroupsToLoadBalancer
+         where
+        toPath = const "/"
 
--- | 'ApplySecurityGroupsToLoadBalancerResponse' constructor.
+instance ToQuery ApplySecurityGroupsToLoadBalancer
+         where
+        toQuery ApplySecurityGroupsToLoadBalancer'{..}
+          = mconcat
+              ["Action" =:
+                 ("ApplySecurityGroupsToLoadBalancer" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _asgtlbLoadBalancerName,
+               "SecurityGroups" =:
+                 toQueryList "member" _asgtlbSecurityGroups]
+
+-- | /See:/ 'applySecurityGroupsToLoadBalancerResponse' smart constructor.
+data ApplySecurityGroupsToLoadBalancerResponse = ApplySecurityGroupsToLoadBalancerResponse'
+    { _asgtlbrsSecurityGroups :: !(Maybe [Text])
+    , _asgtlbrsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ApplySecurityGroupsToLoadBalancerResponse' 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:
 --
--- * 'asgtlbrSecurityGroups' @::@ ['Text']
+-- * 'asgtlbrsSecurityGroups'
 --
-applySecurityGroupsToLoadBalancerResponse :: ApplySecurityGroupsToLoadBalancerResponse
-applySecurityGroupsToLoadBalancerResponse = ApplySecurityGroupsToLoadBalancerResponse
-    { _asgtlbrSecurityGroups = mempty
+-- * 'asgtlbrsStatus'
+applySecurityGroupsToLoadBalancerResponse
+    :: Int -- ^ 'asgtlbrsStatus'
+    -> ApplySecurityGroupsToLoadBalancerResponse
+applySecurityGroupsToLoadBalancerResponse pStatus_ =
+    ApplySecurityGroupsToLoadBalancerResponse'
+    { _asgtlbrsSecurityGroups = Nothing
+    , _asgtlbrsStatus = pStatus_
     }
 
 -- | The IDs of the security groups associated with the load balancer.
-asgtlbrSecurityGroups :: Lens' ApplySecurityGroupsToLoadBalancerResponse [Text]
-asgtlbrSecurityGroups =
-    lens _asgtlbrSecurityGroups (\s a -> s { _asgtlbrSecurityGroups = a })
-        . _List
-
-instance ToPath ApplySecurityGroupsToLoadBalancer where
-    toPath = const "/"
-
-instance ToQuery ApplySecurityGroupsToLoadBalancer where
-    toQuery ApplySecurityGroupsToLoadBalancer{..} = mconcat
-        [ "LoadBalancerName" =? _asgtlbLoadBalancerName
-        , "SecurityGroups"   =? _asgtlbSecurityGroups
-        ]
-
-instance ToHeaders ApplySecurityGroupsToLoadBalancer
-
-instance AWSRequest ApplySecurityGroupsToLoadBalancer where
-    type Sv ApplySecurityGroupsToLoadBalancer = ELB
-    type Rs ApplySecurityGroupsToLoadBalancer = ApplySecurityGroupsToLoadBalancerResponse
-
-    request  = post "ApplySecurityGroupsToLoadBalancer"
-    response = xmlResponse
+asgtlbrsSecurityGroups :: Lens' ApplySecurityGroupsToLoadBalancerResponse [Text]
+asgtlbrsSecurityGroups = lens _asgtlbrsSecurityGroups (\ s a -> s{_asgtlbrsSecurityGroups = a}) . _Default . _Coerce;
 
-instance FromXML ApplySecurityGroupsToLoadBalancerResponse where
-    parseXML = withElement "ApplySecurityGroupsToLoadBalancerResult" $ \x -> ApplySecurityGroupsToLoadBalancerResponse
-        <$> x .@? "SecurityGroups" .!@ mempty
+-- | The response status code.
+asgtlbrsStatus :: Lens' ApplySecurityGroupsToLoadBalancerResponse Int
+asgtlbrsStatus = lens _asgtlbrsStatus (\ s a -> s{_asgtlbrsStatus = a});
diff --git a/gen/Network/AWS/ELB/AttachLoadBalancerToSubnets.hs b/gen/Network/AWS/ELB/AttachLoadBalancerToSubnets.hs
--- a/gen/Network/AWS/ELB/AttachLoadBalancerToSubnets.hs
+++ b/gen/Network/AWS/ELB/AttachLoadBalancerToSubnets.hs
@@ -1,130 +1,141 @@
-{-# 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.ELB.AttachLoadBalancerToSubnets
--- 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.
-
--- | Adds one or more subnets to the set of configured subnets for the specified
--- load balancer.
+-- Adds one or more subnets to the set of configured subnets for the
+-- specified load balancer.
 --
--- The load balancer evenly distributes requests across all registered subnets.
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/UserScenariosForVPC.html Elastic Load Balancing in Amazon VPC> in the /ElasticLoad Balancing Developer Guide/.
+-- The load balancer evenly distributes requests across all registered
+-- subnets. For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-manage-subnets.html Add or Remove Subnets for Your Load Balancer in a VPC>
+-- in the /Elastic Load Balancing Developer Guide/.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_AttachLoadBalancerToSubnets.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_AttachLoadBalancerToSubnets.html AWS API Reference> for AttachLoadBalancerToSubnets.
 module Network.AWS.ELB.AttachLoadBalancerToSubnets
     (
-    -- * Request
-      AttachLoadBalancerToSubnets
-    -- ** Request constructor
-    , attachLoadBalancerToSubnets
-    -- ** Request lenses
+    -- * Creating a Request
+      attachLoadBalancerToSubnets
+    , AttachLoadBalancerToSubnets
+    -- * Request Lenses
     , albtsLoadBalancerName
     , albtsSubnets
 
-    -- * Response
-    , AttachLoadBalancerToSubnetsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , attachLoadBalancerToSubnetsResponse
-    -- ** Response lenses
-    , albtsrSubnets
+    , AttachLoadBalancerToSubnetsResponse
+    -- * Response Lenses
+    , albtsrsSubnets
+    , albtsrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data AttachLoadBalancerToSubnets = AttachLoadBalancerToSubnets
-    { _albtsLoadBalancerName :: Text
-    , _albtsSubnets          :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'attachLoadBalancerToSubnets' smart constructor.
+data AttachLoadBalancerToSubnets = AttachLoadBalancerToSubnets'
+    { _albtsLoadBalancerName :: !Text
+    , _albtsSubnets          :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'AttachLoadBalancerToSubnets' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'AttachLoadBalancerToSubnets' with the minimum fields required to make a request.
 --
--- * 'albtsLoadBalancerName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'albtsSubnets' @::@ ['Text']
+-- * 'albtsLoadBalancerName'
 --
-attachLoadBalancerToSubnets :: Text -- ^ 'albtsLoadBalancerName'
-                            -> AttachLoadBalancerToSubnets
-attachLoadBalancerToSubnets p1 = AttachLoadBalancerToSubnets
-    { _albtsLoadBalancerName = p1
-    , _albtsSubnets          = mempty
+-- * 'albtsSubnets'
+attachLoadBalancerToSubnets
+    :: Text -- ^ 'albtsLoadBalancerName'
+    -> AttachLoadBalancerToSubnets
+attachLoadBalancerToSubnets pLoadBalancerName_ =
+    AttachLoadBalancerToSubnets'
+    { _albtsLoadBalancerName = pLoadBalancerName_
+    , _albtsSubnets = mempty
     }
 
 -- | The name of the load balancer.
 albtsLoadBalancerName :: Lens' AttachLoadBalancerToSubnets Text
-albtsLoadBalancerName =
-    lens _albtsLoadBalancerName (\s a -> s { _albtsLoadBalancerName = a })
+albtsLoadBalancerName = lens _albtsLoadBalancerName (\ s a -> s{_albtsLoadBalancerName = a});
 
--- | The IDs of the subnets to add for the load balancer. You can add only one
--- subnet per Availability Zone.
+-- | The IDs of the subnets to add for the load balancer. You can add only
+-- one subnet per Availability Zone.
 albtsSubnets :: Lens' AttachLoadBalancerToSubnets [Text]
-albtsSubnets = lens _albtsSubnets (\s a -> s { _albtsSubnets = a }) . _List
+albtsSubnets = lens _albtsSubnets (\ s a -> s{_albtsSubnets = a}) . _Coerce;
 
-newtype AttachLoadBalancerToSubnetsResponse = AttachLoadBalancerToSubnetsResponse
-    { _albtsrSubnets :: List "member" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
+instance AWSRequest AttachLoadBalancerToSubnets where
+        type Sv AttachLoadBalancerToSubnets = ELB
+        type Rs AttachLoadBalancerToSubnets =
+             AttachLoadBalancerToSubnetsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "AttachLoadBalancerToSubnetsResult"
+              (\ s h x ->
+                 AttachLoadBalancerToSubnetsResponse' <$>
+                   (x .@? "Subnets" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-instance GHC.Exts.IsList AttachLoadBalancerToSubnetsResponse where
-    type Item AttachLoadBalancerToSubnetsResponse = Text
+instance ToHeaders AttachLoadBalancerToSubnets where
+        toHeaders = const mempty
 
-    fromList = AttachLoadBalancerToSubnetsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _albtsrSubnets
+instance ToPath AttachLoadBalancerToSubnets where
+        toPath = const "/"
 
--- | 'AttachLoadBalancerToSubnetsResponse' constructor.
+instance ToQuery AttachLoadBalancerToSubnets where
+        toQuery AttachLoadBalancerToSubnets'{..}
+          = mconcat
+              ["Action" =:
+                 ("AttachLoadBalancerToSubnets" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _albtsLoadBalancerName,
+               "Subnets" =: toQueryList "member" _albtsSubnets]
+
+-- | /See:/ 'attachLoadBalancerToSubnetsResponse' smart constructor.
+data AttachLoadBalancerToSubnetsResponse = AttachLoadBalancerToSubnetsResponse'
+    { _albtsrsSubnets :: !(Maybe [Text])
+    , _albtsrsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AttachLoadBalancerToSubnetsResponse' 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:
 --
--- * 'albtsrSubnets' @::@ ['Text']
+-- * 'albtsrsSubnets'
 --
-attachLoadBalancerToSubnetsResponse :: AttachLoadBalancerToSubnetsResponse
-attachLoadBalancerToSubnetsResponse = AttachLoadBalancerToSubnetsResponse
-    { _albtsrSubnets = mempty
+-- * 'albtsrsStatus'
+attachLoadBalancerToSubnetsResponse
+    :: Int -- ^ 'albtsrsStatus'
+    -> AttachLoadBalancerToSubnetsResponse
+attachLoadBalancerToSubnetsResponse pStatus_ =
+    AttachLoadBalancerToSubnetsResponse'
+    { _albtsrsSubnets = Nothing
+    , _albtsrsStatus = pStatus_
     }
 
 -- | The IDs of the subnets attached to the load balancer.
-albtsrSubnets :: Lens' AttachLoadBalancerToSubnetsResponse [Text]
-albtsrSubnets = lens _albtsrSubnets (\s a -> s { _albtsrSubnets = a }) . _List
-
-instance ToPath AttachLoadBalancerToSubnets where
-    toPath = const "/"
-
-instance ToQuery AttachLoadBalancerToSubnets where
-    toQuery AttachLoadBalancerToSubnets{..} = mconcat
-        [ "LoadBalancerName" =? _albtsLoadBalancerName
-        , "Subnets"          =? _albtsSubnets
-        ]
-
-instance ToHeaders AttachLoadBalancerToSubnets
-
-instance AWSRequest AttachLoadBalancerToSubnets where
-    type Sv AttachLoadBalancerToSubnets = ELB
-    type Rs AttachLoadBalancerToSubnets = AttachLoadBalancerToSubnetsResponse
-
-    request  = post "AttachLoadBalancerToSubnets"
-    response = xmlResponse
+albtsrsSubnets :: Lens' AttachLoadBalancerToSubnetsResponse [Text]
+albtsrsSubnets = lens _albtsrsSubnets (\ s a -> s{_albtsrsSubnets = a}) . _Default . _Coerce;
 
-instance FromXML AttachLoadBalancerToSubnetsResponse where
-    parseXML = withElement "AttachLoadBalancerToSubnetsResult" $ \x -> AttachLoadBalancerToSubnetsResponse
-        <$> x .@? "Subnets" .!@ mempty
+-- | The response status code.
+albtsrsStatus :: Lens' AttachLoadBalancerToSubnetsResponse Int
+albtsrsStatus = lens _albtsrsStatus (\ s a -> s{_albtsrsStatus = a});
diff --git a/gen/Network/AWS/ELB/ConfigureHealthCheck.hs b/gen/Network/AWS/ELB/ConfigureHealthCheck.hs
--- a/gen/Network/AWS/ELB/ConfigureHealthCheck.hs
+++ b/gen/Network/AWS/ELB/ConfigureHealthCheck.hs
@@ -1,123 +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.ELB.ConfigureHealthCheck
--- 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.
-
--- | Specifies the health check settings to use when evaluating the health state
--- of your back-end instances.
+-- Specifies the health check settings to use when evaluating the health
+-- state of your back-end instances.
 --
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#healthcheck Health Checks> in the /Elastic Load BalancingDeveloper Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-healthchecks.html Configure Health Checks>
+-- in the /Elastic Load Balancing Developer Guide/.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_ConfigureHealthCheck.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_ConfigureHealthCheck.html AWS API Reference> for ConfigureHealthCheck.
 module Network.AWS.ELB.ConfigureHealthCheck
     (
-    -- * Request
-      ConfigureHealthCheck
-    -- ** Request constructor
-    , configureHealthCheck
-    -- ** Request lenses
-    , chcHealthCheck
+    -- * Creating a Request
+      configureHealthCheck
+    , ConfigureHealthCheck
+    -- * Request Lenses
     , chcLoadBalancerName
+    , chcHealthCheck
 
-    -- * Response
-    , ConfigureHealthCheckResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , configureHealthCheckResponse
-    -- ** Response lenses
-    , chcrHealthCheck
+    , ConfigureHealthCheckResponse
+    -- * Response Lenses
+    , chcrsHealthCheck
+    , chcrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data ConfigureHealthCheck = ConfigureHealthCheck
-    { _chcHealthCheck      :: HealthCheck
-    , _chcLoadBalancerName :: Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'configureHealthCheck' smart constructor.
+data ConfigureHealthCheck = ConfigureHealthCheck'
+    { _chcLoadBalancerName :: !Text
+    , _chcHealthCheck      :: !HealthCheck
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ConfigureHealthCheck' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'ConfigureHealthCheck' with the minimum fields required to make a request.
 --
--- * 'chcHealthCheck' @::@ 'HealthCheck'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'chcLoadBalancerName' @::@ 'Text'
+-- * 'chcLoadBalancerName'
 --
-configureHealthCheck :: Text -- ^ 'chcLoadBalancerName'
-                     -> HealthCheck -- ^ 'chcHealthCheck'
-                     -> ConfigureHealthCheck
-configureHealthCheck p1 p2 = ConfigureHealthCheck
-    { _chcLoadBalancerName = p1
-    , _chcHealthCheck      = p2
+-- * 'chcHealthCheck'
+configureHealthCheck
+    :: Text -- ^ 'chcLoadBalancerName'
+    -> HealthCheck -- ^ 'chcHealthCheck'
+    -> ConfigureHealthCheck
+configureHealthCheck pLoadBalancerName_ pHealthCheck_ =
+    ConfigureHealthCheck'
+    { _chcLoadBalancerName = pLoadBalancerName_
+    , _chcHealthCheck = pHealthCheck_
     }
 
--- | The configuration information for the new health check.
-chcHealthCheck :: Lens' ConfigureHealthCheck HealthCheck
-chcHealthCheck = lens _chcHealthCheck (\s a -> s { _chcHealthCheck = a })
-
 -- | The name of the load balancer.
 chcLoadBalancerName :: Lens' ConfigureHealthCheck Text
-chcLoadBalancerName =
-    lens _chcLoadBalancerName (\s a -> s { _chcLoadBalancerName = a })
+chcLoadBalancerName = lens _chcLoadBalancerName (\ s a -> s{_chcLoadBalancerName = a});
 
-newtype ConfigureHealthCheckResponse = ConfigureHealthCheckResponse
-    { _chcrHealthCheck :: Maybe HealthCheck
-    } deriving (Eq, Read, Show)
+-- | The configuration information for the new health check.
+chcHealthCheck :: Lens' ConfigureHealthCheck HealthCheck
+chcHealthCheck = lens _chcHealthCheck (\ s a -> s{_chcHealthCheck = a});
 
--- | 'ConfigureHealthCheckResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'chcrHealthCheck' @::@ 'Maybe' 'HealthCheck'
---
-configureHealthCheckResponse :: ConfigureHealthCheckResponse
-configureHealthCheckResponse = ConfigureHealthCheckResponse
-    { _chcrHealthCheck = Nothing
-    }
+instance AWSRequest ConfigureHealthCheck where
+        type Sv ConfigureHealthCheck = ELB
+        type Rs ConfigureHealthCheck =
+             ConfigureHealthCheckResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "ConfigureHealthCheckResult"
+              (\ s h x ->
+                 ConfigureHealthCheckResponse' <$>
+                   (x .@? "HealthCheck") <*> (pure (fromEnum s)))
 
--- | The updated health check.
-chcrHealthCheck :: Lens' ConfigureHealthCheckResponse (Maybe HealthCheck)
-chcrHealthCheck = lens _chcrHealthCheck (\s a -> s { _chcrHealthCheck = a })
+instance ToHeaders ConfigureHealthCheck where
+        toHeaders = const mempty
 
 instance ToPath ConfigureHealthCheck where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ConfigureHealthCheck where
-    toQuery ConfigureHealthCheck{..} = mconcat
-        [ "HealthCheck"      =? _chcHealthCheck
-        , "LoadBalancerName" =? _chcLoadBalancerName
-        ]
+        toQuery ConfigureHealthCheck'{..}
+          = mconcat
+              ["Action" =: ("ConfigureHealthCheck" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _chcLoadBalancerName,
+               "HealthCheck" =: _chcHealthCheck]
 
-instance ToHeaders ConfigureHealthCheck
+-- | /See:/ 'configureHealthCheckResponse' smart constructor.
+data ConfigureHealthCheckResponse = ConfigureHealthCheckResponse'
+    { _chcrsHealthCheck :: !(Maybe HealthCheck)
+    , _chcrsStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ConfigureHealthCheck where
-    type Sv ConfigureHealthCheck = ELB
-    type Rs ConfigureHealthCheck = ConfigureHealthCheckResponse
+-- | Creates a value of 'ConfigureHealthCheckResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'chcrsHealthCheck'
+--
+-- * 'chcrsStatus'
+configureHealthCheckResponse
+    :: Int -- ^ 'chcrsStatus'
+    -> ConfigureHealthCheckResponse
+configureHealthCheckResponse pStatus_ =
+    ConfigureHealthCheckResponse'
+    { _chcrsHealthCheck = Nothing
+    , _chcrsStatus = pStatus_
+    }
 
-    request  = post "ConfigureHealthCheck"
-    response = xmlResponse
+-- | The updated health check.
+chcrsHealthCheck :: Lens' ConfigureHealthCheckResponse (Maybe HealthCheck)
+chcrsHealthCheck = lens _chcrsHealthCheck (\ s a -> s{_chcrsHealthCheck = a});
 
-instance FromXML ConfigureHealthCheckResponse where
-    parseXML = withElement "ConfigureHealthCheckResult" $ \x -> ConfigureHealthCheckResponse
-        <$> x .@? "HealthCheck"
+-- | The response status code.
+chcrsStatus :: Lens' ConfigureHealthCheckResponse Int
+chcrsStatus = lens _chcrsStatus (\ s a -> s{_chcrsStatus = a});
diff --git a/gen/Network/AWS/ELB/CreateAppCookieStickinessPolicy.hs b/gen/Network/AWS/ELB/CreateAppCookieStickinessPolicy.hs
--- a/gen/Network/AWS/ELB/CreateAppCookieStickinessPolicy.hs
+++ b/gen/Network/AWS/ELB/CreateAppCookieStickinessPolicy.hs
@@ -1,125 +1,155 @@
-{-# 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.ELB.CreateAppCookieStickinessPolicy
--- 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.
-
--- | Generates a stickiness policy with sticky session lifetimes that follow that
--- of an application-generated cookie. This policy can be associated only with
--- HTTP/HTTPS listeners.
+-- Generates a stickiness policy with sticky session lifetimes that follow
+-- that of an application-generated cookie. This policy can be associated
+-- only with HTTP\/HTTPS listeners.
 --
--- This policy is similar to the policy created by 'CreateLBCookieStickinessPolicy', except that the lifetime of the special Elastic Load Balancing cookie, 'AWSELB', follows the lifetime of the application-generated cookie specified in the
--- policy configuration. The load balancer only inserts a new stickiness cookie
--- when the application response includes a new application cookie.
+-- This policy is similar to the policy created by
+-- CreateLBCookieStickinessPolicy, except that the lifetime of the special
+-- Elastic Load Balancing cookie, 'AWSELB', follows the lifetime of the
+-- application-generated cookie specified in the policy configuration. The
+-- load balancer only inserts a new stickiness cookie when the application
+-- response includes a new application cookie.
 --
 -- If the application cookie is explicitly removed or expires, the session
 -- stops being sticky until a new application cookie is issued.
 --
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_StickySessions.html#US_EnableStickySessionsAppCookies Application-Controlled Session Stickiness> in the /Elastic Load Balancing Developer Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-sticky-sessions.html#enable-sticky-sessions-application Application-Controlled Session Stickiness>
+-- in the /Elastic Load Balancing Developer Guide/.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_CreateAppCookieStickinessPolicy.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_CreateAppCookieStickinessPolicy.html AWS API Reference> for CreateAppCookieStickinessPolicy.
 module Network.AWS.ELB.CreateAppCookieStickinessPolicy
     (
-    -- * Request
-      CreateAppCookieStickinessPolicy
-    -- ** Request constructor
-    , createAppCookieStickinessPolicy
-    -- ** Request lenses
-    , cacspCookieName
+    -- * Creating a Request
+      createAppCookieStickinessPolicy
+    , CreateAppCookieStickinessPolicy
+    -- * Request Lenses
     , cacspLoadBalancerName
     , cacspPolicyName
+    , cacspCookieName
 
-    -- * Response
-    , CreateAppCookieStickinessPolicyResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createAppCookieStickinessPolicyResponse
+    , CreateAppCookieStickinessPolicyResponse
+    -- * Response Lenses
+    , cacsprsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CreateAppCookieStickinessPolicy = CreateAppCookieStickinessPolicy
-    { _cacspCookieName       :: Text
-    , _cacspLoadBalancerName :: Text
-    , _cacspPolicyName       :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'createAppCookieStickinessPolicy' smart constructor.
+data CreateAppCookieStickinessPolicy = CreateAppCookieStickinessPolicy'
+    { _cacspLoadBalancerName :: !Text
+    , _cacspPolicyName       :: !Text
+    , _cacspCookieName       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateAppCookieStickinessPolicy' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CreateAppCookieStickinessPolicy' with the minimum fields required to make a request.
 --
--- * 'cacspCookieName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cacspLoadBalancerName' @::@ 'Text'
+-- * 'cacspLoadBalancerName'
 --
--- * 'cacspPolicyName' @::@ 'Text'
+-- * 'cacspPolicyName'
 --
-createAppCookieStickinessPolicy :: Text -- ^ 'cacspLoadBalancerName'
-                                -> Text -- ^ 'cacspPolicyName'
-                                -> Text -- ^ 'cacspCookieName'
-                                -> CreateAppCookieStickinessPolicy
-createAppCookieStickinessPolicy p1 p2 p3 = CreateAppCookieStickinessPolicy
-    { _cacspLoadBalancerName = p1
-    , _cacspPolicyName       = p2
-    , _cacspCookieName       = p3
+-- * 'cacspCookieName'
+createAppCookieStickinessPolicy
+    :: Text -- ^ 'cacspLoadBalancerName'
+    -> Text -- ^ 'cacspPolicyName'
+    -> Text -- ^ 'cacspCookieName'
+    -> CreateAppCookieStickinessPolicy
+createAppCookieStickinessPolicy pLoadBalancerName_ pPolicyName_ pCookieName_ =
+    CreateAppCookieStickinessPolicy'
+    { _cacspLoadBalancerName = pLoadBalancerName_
+    , _cacspPolicyName = pPolicyName_
+    , _cacspCookieName = pCookieName_
     }
 
--- | The name of the application cookie used for stickiness.
-cacspCookieName :: Lens' CreateAppCookieStickinessPolicy Text
-cacspCookieName = lens _cacspCookieName (\s a -> s { _cacspCookieName = a })
-
 -- | The name of the load balancer.
 cacspLoadBalancerName :: Lens' CreateAppCookieStickinessPolicy Text
-cacspLoadBalancerName =
-    lens _cacspLoadBalancerName (\s a -> s { _cacspLoadBalancerName = a })
+cacspLoadBalancerName = lens _cacspLoadBalancerName (\ s a -> s{_cacspLoadBalancerName = a});
 
--- | The name of the policy being created. This name must be unique within the set
--- of policies for this load balancer.
+-- | The name of the policy being created. This name must be unique within
+-- the set of policies for this load balancer.
 cacspPolicyName :: Lens' CreateAppCookieStickinessPolicy Text
-cacspPolicyName = lens _cacspPolicyName (\s a -> s { _cacspPolicyName = a })
+cacspPolicyName = lens _cacspPolicyName (\ s a -> s{_cacspPolicyName = a});
 
-data CreateAppCookieStickinessPolicyResponse = CreateAppCookieStickinessPolicyResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The name of the application cookie used for stickiness.
+cacspCookieName :: Lens' CreateAppCookieStickinessPolicy Text
+cacspCookieName = lens _cacspCookieName (\ s a -> s{_cacspCookieName = a});
 
--- | 'CreateAppCookieStickinessPolicyResponse' constructor.
-createAppCookieStickinessPolicyResponse :: CreateAppCookieStickinessPolicyResponse
-createAppCookieStickinessPolicyResponse = CreateAppCookieStickinessPolicyResponse
+instance AWSRequest CreateAppCookieStickinessPolicy
+         where
+        type Sv CreateAppCookieStickinessPolicy = ELB
+        type Rs CreateAppCookieStickinessPolicy =
+             CreateAppCookieStickinessPolicyResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "CreateAppCookieStickinessPolicyResult"
+              (\ s h x ->
+                 CreateAppCookieStickinessPolicyResponse' <$>
+                   (pure (fromEnum s)))
 
+instance ToHeaders CreateAppCookieStickinessPolicy
+         where
+        toHeaders = const mempty
+
 instance ToPath CreateAppCookieStickinessPolicy where
-    toPath = const "/"
+        toPath = const "/"
 
-instance ToQuery CreateAppCookieStickinessPolicy where
-    toQuery CreateAppCookieStickinessPolicy{..} = mconcat
-        [ "CookieName"       =? _cacspCookieName
-        , "LoadBalancerName" =? _cacspLoadBalancerName
-        , "PolicyName"       =? _cacspPolicyName
-        ]
+instance ToQuery CreateAppCookieStickinessPolicy
+         where
+        toQuery CreateAppCookieStickinessPolicy'{..}
+          = mconcat
+              ["Action" =:
+                 ("CreateAppCookieStickinessPolicy" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _cacspLoadBalancerName,
+               "PolicyName" =: _cacspPolicyName,
+               "CookieName" =: _cacspCookieName]
 
-instance ToHeaders CreateAppCookieStickinessPolicy
+-- | /See:/ 'createAppCookieStickinessPolicyResponse' smart constructor.
+newtype CreateAppCookieStickinessPolicyResponse = CreateAppCookieStickinessPolicyResponse'
+    { _cacsprsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateAppCookieStickinessPolicy where
-    type Sv CreateAppCookieStickinessPolicy = ELB
-    type Rs CreateAppCookieStickinessPolicy = CreateAppCookieStickinessPolicyResponse
+-- | Creates a value of 'CreateAppCookieStickinessPolicyResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cacsprsStatus'
+createAppCookieStickinessPolicyResponse
+    :: Int -- ^ 'cacsprsStatus'
+    -> CreateAppCookieStickinessPolicyResponse
+createAppCookieStickinessPolicyResponse pStatus_ =
+    CreateAppCookieStickinessPolicyResponse'
+    { _cacsprsStatus = pStatus_
+    }
 
-    request  = post "CreateAppCookieStickinessPolicy"
-    response = nullResponse CreateAppCookieStickinessPolicyResponse
+-- | The response status code.
+cacsprsStatus :: Lens' CreateAppCookieStickinessPolicyResponse Int
+cacsprsStatus = lens _cacsprsStatus (\ s a -> s{_cacsprsStatus = a});
diff --git a/gen/Network/AWS/ELB/CreateLBCookieStickinessPolicy.hs b/gen/Network/AWS/ELB/CreateLBCookieStickinessPolicy.hs
--- a/gen/Network/AWS/ELB/CreateLBCookieStickinessPolicy.hs
+++ b/gen/Network/AWS/ELB/CreateLBCookieStickinessPolicy.hs
@@ -1,133 +1,159 @@
-{-# 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.ELB.CreateLBCookieStickinessPolicy
--- 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.
-
--- | Generates a stickiness policy with sticky session lifetimes controlled by the
--- lifetime of the browser (user-agent) or a specified expiration period. This
--- policy can be associated only with HTTP/HTTPS listeners.
+-- Generates a stickiness policy with sticky session lifetimes controlled
+-- by the lifetime of the browser (user-agent) or a specified expiration
+-- period. This policy can be associated only with HTTP\/HTTPS listeners.
 --
 -- When a load balancer implements this policy, the load balancer uses a
--- special cookie to track the back-end server instance for each request. When
--- the load balancer receives a request, it first checks to see if this cookie
--- is present in the request. If so, the load balancer sends the request to the
--- application server specified in the cookie. If not, the load balancer sends
--- the request to a server that is chosen based on the existing load-balancing
--- algorithm.
+-- special cookie to track the back-end server instance for each request.
+-- When the load balancer receives a request, it first checks to see if
+-- this cookie is present in the request. If so, the load balancer sends
+-- the request to the application server specified in the cookie. If not,
+-- the load balancer sends the request to a server that is chosen based on
+-- the existing load-balancing algorithm.
 --
--- A cookie is inserted into the response for binding subsequent requests from
--- the same user to that server. The validity of the cookie is based on the
--- cookie expiration time, which is specified in the policy configuration.
+-- A cookie is inserted into the response for binding subsequent requests
+-- from the same user to that server. The validity of the cookie is based
+-- on the cookie expiration time, which is specified in the policy
+-- configuration.
 --
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_StickySessions.html#US_EnableStickySessionsLBCookies Duration-Based Session Stickiness> in the /ElasticLoad Balancing Developer Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-sticky-sessions.html#enable-sticky-sessions-duration Duration-Based Session Stickiness>
+-- in the /Elastic Load Balancing Developer Guide/.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_CreateLBCookieStickinessPolicy.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_CreateLBCookieStickinessPolicy.html AWS API Reference> for CreateLBCookieStickinessPolicy.
 module Network.AWS.ELB.CreateLBCookieStickinessPolicy
     (
-    -- * Request
-      CreateLBCookieStickinessPolicy
-    -- ** Request constructor
-    , createLBCookieStickinessPolicy
-    -- ** Request lenses
+    -- * Creating a Request
+      createLBCookieStickinessPolicy
+    , CreateLBCookieStickinessPolicy
+    -- * Request Lenses
     , clbcspCookieExpirationPeriod
     , clbcspLoadBalancerName
     , clbcspPolicyName
 
-    -- * Response
-    , CreateLBCookieStickinessPolicyResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createLBCookieStickinessPolicyResponse
+    , CreateLBCookieStickinessPolicyResponse
+    -- * Response Lenses
+    , clbcsprsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CreateLBCookieStickinessPolicy = CreateLBCookieStickinessPolicy
-    { _clbcspCookieExpirationPeriod :: Maybe Integer
-    , _clbcspLoadBalancerName       :: Text
-    , _clbcspPolicyName             :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'createLBCookieStickinessPolicy' smart constructor.
+data CreateLBCookieStickinessPolicy = CreateLBCookieStickinessPolicy'
+    { _clbcspCookieExpirationPeriod :: !(Maybe Integer)
+    , _clbcspLoadBalancerName       :: !Text
+    , _clbcspPolicyName             :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateLBCookieStickinessPolicy' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CreateLBCookieStickinessPolicy' with the minimum fields required to make a request.
 --
--- * 'clbcspCookieExpirationPeriod' @::@ 'Maybe' 'Integer'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'clbcspLoadBalancerName' @::@ 'Text'
+-- * 'clbcspCookieExpirationPeriod'
 --
--- * 'clbcspPolicyName' @::@ 'Text'
+-- * 'clbcspLoadBalancerName'
 --
-createLBCookieStickinessPolicy :: Text -- ^ 'clbcspLoadBalancerName'
-                               -> Text -- ^ 'clbcspPolicyName'
-                               -> CreateLBCookieStickinessPolicy
-createLBCookieStickinessPolicy p1 p2 = CreateLBCookieStickinessPolicy
-    { _clbcspLoadBalancerName       = p1
-    , _clbcspPolicyName             = p2
-    , _clbcspCookieExpirationPeriod = Nothing
+-- * 'clbcspPolicyName'
+createLBCookieStickinessPolicy
+    :: Text -- ^ 'clbcspLoadBalancerName'
+    -> Text -- ^ 'clbcspPolicyName'
+    -> CreateLBCookieStickinessPolicy
+createLBCookieStickinessPolicy pLoadBalancerName_ pPolicyName_ =
+    CreateLBCookieStickinessPolicy'
+    { _clbcspCookieExpirationPeriod = Nothing
+    , _clbcspLoadBalancerName = pLoadBalancerName_
+    , _clbcspPolicyName = pPolicyName_
     }
 
 -- | The time period, in seconds, after which the cookie should be considered
--- stale. If you do not specify this parameter, the sticky session lasts for the
--- duration of the browser session.
+-- stale. If you do not specify this parameter, the sticky session lasts
+-- for the duration of the browser session.
 clbcspCookieExpirationPeriod :: Lens' CreateLBCookieStickinessPolicy (Maybe Integer)
-clbcspCookieExpirationPeriod =
-    lens _clbcspCookieExpirationPeriod
-        (\s a -> s { _clbcspCookieExpirationPeriod = a })
+clbcspCookieExpirationPeriod = lens _clbcspCookieExpirationPeriod (\ s a -> s{_clbcspCookieExpirationPeriod = a});
 
 -- | The name of the load balancer.
 clbcspLoadBalancerName :: Lens' CreateLBCookieStickinessPolicy Text
-clbcspLoadBalancerName =
-    lens _clbcspLoadBalancerName (\s a -> s { _clbcspLoadBalancerName = a })
+clbcspLoadBalancerName = lens _clbcspLoadBalancerName (\ s a -> s{_clbcspLoadBalancerName = a});
 
--- | The name of the policy being created. This name must be unique within the set
--- of policies for this load balancer.
+-- | The name of the policy being created. This name must be unique within
+-- the set of policies for this load balancer.
 clbcspPolicyName :: Lens' CreateLBCookieStickinessPolicy Text
-clbcspPolicyName = lens _clbcspPolicyName (\s a -> s { _clbcspPolicyName = a })
+clbcspPolicyName = lens _clbcspPolicyName (\ s a -> s{_clbcspPolicyName = a});
 
-data CreateLBCookieStickinessPolicyResponse = CreateLBCookieStickinessPolicyResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest CreateLBCookieStickinessPolicy
+         where
+        type Sv CreateLBCookieStickinessPolicy = ELB
+        type Rs CreateLBCookieStickinessPolicy =
+             CreateLBCookieStickinessPolicyResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "CreateLBCookieStickinessPolicyResult"
+              (\ s h x ->
+                 CreateLBCookieStickinessPolicyResponse' <$>
+                   (pure (fromEnum s)))
 
--- | 'CreateLBCookieStickinessPolicyResponse' constructor.
-createLBCookieStickinessPolicyResponse :: CreateLBCookieStickinessPolicyResponse
-createLBCookieStickinessPolicyResponse = CreateLBCookieStickinessPolicyResponse
+instance ToHeaders CreateLBCookieStickinessPolicy
+         where
+        toHeaders = const mempty
 
 instance ToPath CreateLBCookieStickinessPolicy where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateLBCookieStickinessPolicy where
-    toQuery CreateLBCookieStickinessPolicy{..} = mconcat
-        [ "CookieExpirationPeriod" =? _clbcspCookieExpirationPeriod
-        , "LoadBalancerName"       =? _clbcspLoadBalancerName
-        , "PolicyName"             =? _clbcspPolicyName
-        ]
+        toQuery CreateLBCookieStickinessPolicy'{..}
+          = mconcat
+              ["Action" =:
+                 ("CreateLBCookieStickinessPolicy" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "CookieExpirationPeriod" =:
+                 _clbcspCookieExpirationPeriod,
+               "LoadBalancerName" =: _clbcspLoadBalancerName,
+               "PolicyName" =: _clbcspPolicyName]
 
-instance ToHeaders CreateLBCookieStickinessPolicy
+-- | /See:/ 'createLBCookieStickinessPolicyResponse' smart constructor.
+newtype CreateLBCookieStickinessPolicyResponse = CreateLBCookieStickinessPolicyResponse'
+    { _clbcsprsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateLBCookieStickinessPolicy where
-    type Sv CreateLBCookieStickinessPolicy = ELB
-    type Rs CreateLBCookieStickinessPolicy = CreateLBCookieStickinessPolicyResponse
+-- | Creates a value of 'CreateLBCookieStickinessPolicyResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'clbcsprsStatus'
+createLBCookieStickinessPolicyResponse
+    :: Int -- ^ 'clbcsprsStatus'
+    -> CreateLBCookieStickinessPolicyResponse
+createLBCookieStickinessPolicyResponse pStatus_ =
+    CreateLBCookieStickinessPolicyResponse'
+    { _clbcsprsStatus = pStatus_
+    }
 
-    request  = post "CreateLBCookieStickinessPolicy"
-    response = nullResponse CreateLBCookieStickinessPolicyResponse
+-- | The response status code.
+clbcsprsStatus :: Lens' CreateLBCookieStickinessPolicyResponse Int
+clbcsprsStatus = lens _clbcsprsStatus (\ s a -> s{_clbcsprsStatus = a});
diff --git a/gen/Network/AWS/ELB/CreateLoadBalancer.hs b/gen/Network/AWS/ELB/CreateLoadBalancer.hs
--- a/gen/Network/AWS/ELB/CreateLoadBalancer.hs
+++ b/gen/Network/AWS/ELB/CreateLoadBalancer.hs
@@ -1,211 +1,230 @@
-{-# 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.ELB.CreateLoadBalancer
--- 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.
-
--- | Creates a load balancer.
---
--- If the call completes successfully, a new load balancer is created with a
--- unique Domain Name Service (DNS) name. The DNS name includes the name of the
--- AWS region in which the load balancer was created. For example, the DNS name
--- might end with either of the following:
+-- Creates a load balancer.
 --
--- 'us-east-1.elb.amazonaws.com'   'us-west-2.elb.amazonaws.com'   For
--- information about the AWS regions supported by Elastic Load Balancing, see <http://docs.aws.amazon.com/general/latest/gr/rande.html#elb_region Regions and Endpoints> in the /Amazon Web Services General Reference/.
+-- If the call completes successfully, a new load balancer is created with
+-- a unique Domain Name Service (DNS) name. The load balancer receives
+-- incoming traffic and routes it to the registered instances. For more
+-- information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/how-elb-works.html How Elastic Load Balancing Works>
+-- in the /Elastic Load Balancing Developer Guide/.
 --
 -- You can create up to 20 load balancers per region per account. You can
--- request an increase for the number of load balancers for your account. For
--- more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-limits.html Elastic Load Balancing Limits> in the /Elastic LoadBalancing Developer Guide/.
---
--- Elastic Load Balancing supports load balancing your EC2 instances launched
--- in either the EC2-Classic or EC2-VPC platform. For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/UserScenariosForEC2.html Elastic Load Balancing in EC2-Classic> or <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/UserScenariosForVPC.html Elastic Load Balancing in a VPC> in the /Elastic Load Balancing DeveloperGuide/.
+-- request an increase for the number of load balancers for your account.
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-limits.html Elastic Load Balancing Limits>
+-- in the /Elastic Load Balancing Developer Guide/.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_CreateLoadBalancer.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_CreateLoadBalancer.html AWS API Reference> for CreateLoadBalancer.
 module Network.AWS.ELB.CreateLoadBalancer
     (
-    -- * Request
-      CreateLoadBalancer
-    -- ** Request constructor
-    , createLoadBalancer
-    -- ** Request lenses
-    , clbAvailabilityZones
-    , clbListeners
-    , clbLoadBalancerName
-    , clbScheme
+    -- * Creating a Request
+      createLoadBalancer
+    , CreateLoadBalancer
+    -- * Request Lenses
     , clbSecurityGroups
     , clbSubnets
+    , clbAvailabilityZones
+    , clbScheme
     , clbTags
+    , clbLoadBalancerName
+    , clbListeners
 
-    -- * Response
-    , CreateLoadBalancerResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createLoadBalancerResponse
-    -- ** Response lenses
-    , clbrDNSName
+    , CreateLoadBalancerResponse
+    -- * Response Lenses
+    , clbrsDNSName
+    , clbrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CreateLoadBalancer = CreateLoadBalancer
-    { _clbAvailabilityZones :: List "member" Text
-    , _clbListeners         :: List "member" Listener
-    , _clbLoadBalancerName  :: Text
-    , _clbScheme            :: Maybe Text
-    , _clbSecurityGroups    :: List "member" Text
-    , _clbSubnets           :: List "member" Text
-    , _clbTags              :: List1 "member" Tag
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'createLoadBalancer' smart constructor.
+data CreateLoadBalancer = CreateLoadBalancer'
+    { _clbSecurityGroups    :: !(Maybe [Text])
+    , _clbSubnets           :: !(Maybe [Text])
+    , _clbAvailabilityZones :: !(Maybe [Text])
+    , _clbScheme            :: !(Maybe Text)
+    , _clbTags              :: !(Maybe (List1 Tag))
+    , _clbLoadBalancerName  :: !Text
+    , _clbListeners         :: ![Listener]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateLoadBalancer' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CreateLoadBalancer' with the minimum fields required to make a request.
 --
--- * 'clbAvailabilityZones' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'clbListeners' @::@ ['Listener']
+-- * 'clbSecurityGroups'
 --
--- * 'clbLoadBalancerName' @::@ 'Text'
+-- * 'clbSubnets'
 --
--- * 'clbScheme' @::@ 'Maybe' 'Text'
+-- * 'clbAvailabilityZones'
 --
--- * 'clbSecurityGroups' @::@ ['Text']
+-- * 'clbScheme'
 --
--- * 'clbSubnets' @::@ ['Text']
+-- * 'clbTags'
 --
--- * 'clbTags' @::@ 'NonEmpty' 'Tag'
+-- * 'clbLoadBalancerName'
 --
-createLoadBalancer :: Text -- ^ 'clbLoadBalancerName'
-                   -> NonEmpty Tag -- ^ 'clbTags'
-                   -> CreateLoadBalancer
-createLoadBalancer p1 p2 = CreateLoadBalancer
-    { _clbLoadBalancerName  = p1
-    , _clbTags              = withIso _List1 (const id) p2
-    , _clbListeners         = mempty
-    , _clbAvailabilityZones = mempty
-    , _clbSubnets           = mempty
-    , _clbSecurityGroups    = mempty
-    , _clbScheme            = Nothing
+-- * 'clbListeners'
+createLoadBalancer
+    :: Text -- ^ 'clbLoadBalancerName'
+    -> CreateLoadBalancer
+createLoadBalancer pLoadBalancerName_ =
+    CreateLoadBalancer'
+    { _clbSecurityGroups = Nothing
+    , _clbSubnets = Nothing
+    , _clbAvailabilityZones = Nothing
+    , _clbScheme = Nothing
+    , _clbTags = Nothing
+    , _clbLoadBalancerName = pLoadBalancerName_
+    , _clbListeners = mempty
     }
 
--- | One or more Availability Zones from the same region as the load balancer.
--- Traffic is equally distributed across all specified Availability Zones.
+-- | The IDs of the security groups to assign to the load balancer.
+clbSecurityGroups :: Lens' CreateLoadBalancer [Text]
+clbSecurityGroups = lens _clbSecurityGroups (\ s a -> s{_clbSecurityGroups = a}) . _Default . _Coerce;
+
+-- | The IDs of the subnets in your VPC to attach to the load balancer.
+-- Specify one subnet per Availability Zone specified in
+-- 'AvailabilityZones'.
+clbSubnets :: Lens' CreateLoadBalancer [Text]
+clbSubnets = lens _clbSubnets (\ s a -> s{_clbSubnets = a}) . _Default . _Coerce;
+
+-- | One or more Availability Zones from the same region as the load
+-- balancer. Traffic is equally distributed across all specified
+-- Availability Zones.
 --
 -- You must specify at least one Availability Zone.
 --
--- You can add more Availability Zones after you create the load balancer using 'EnableAvailabilityZonesForLoadBalancer'.
+-- You can add more Availability Zones after you create the load balancer
+-- using EnableAvailabilityZonesForLoadBalancer.
 clbAvailabilityZones :: Lens' CreateLoadBalancer [Text]
-clbAvailabilityZones =
-    lens _clbAvailabilityZones (\s a -> s { _clbAvailabilityZones = a })
-        . _List
+clbAvailabilityZones = lens _clbAvailabilityZones (\ s a -> s{_clbAvailabilityZones = a}) . _Default . _Coerce;
 
--- | The listeners.
+-- | The type of a load balancer. Valid only for load balancers in a VPC.
 --
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-listener-config.html Listener Configurations for Elastic Load Balancing>
+-- By default, Elastic Load Balancing creates an Internet-facing load
+-- balancer with a publicly resolvable DNS name, which resolves to public
+-- IP addresses. For more information about Internet-facing and Internal
+-- load balancers, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/vpc-loadbalancer-types.html Internet-facing and Internal Load Balancers>
 -- in the /Elastic Load Balancing Developer Guide/.
-clbListeners :: Lens' CreateLoadBalancer [Listener]
-clbListeners = lens _clbListeners (\s a -> s { _clbListeners = a }) . _List
+--
+-- Specify 'internal' to create an internal load balancer with a DNS name
+-- that resolves to private IP addresses.
+clbScheme :: Lens' CreateLoadBalancer (Maybe Text)
+clbScheme = lens _clbScheme (\ s a -> s{_clbScheme = a});
 
+-- | A list of tags to assign to the load balancer.
+--
+-- For more information about tagging your load balancer, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#tagging-elb Tagging>
+-- in the /Elastic Load Balancing Developer Guide/.
+clbTags :: Lens' CreateLoadBalancer (Maybe (NonEmpty Tag))
+clbTags = lens _clbTags (\ s a -> s{_clbTags = a}) . mapping _List1;
+
 -- | The name of the load balancer.
 --
--- This name must be unique within your AWS account, must have a maximum of 32
--- characters, must contain only alphanumeric characters or hyphens, and cannot
--- begin or end with a hyphen.
+-- This name must be unique within your AWS account, must have a maximum of
+-- 32 characters, must contain only alphanumeric characters or hyphens, and
+-- cannot begin or end with a hyphen.
 clbLoadBalancerName :: Lens' CreateLoadBalancer Text
-clbLoadBalancerName =
-    lens _clbLoadBalancerName (\s a -> s { _clbLoadBalancerName = a })
+clbLoadBalancerName = lens _clbLoadBalancerName (\ s a -> s{_clbLoadBalancerName = a});
 
--- | The type of a load balancer. Valid only for load balancers in a VPC.
---
--- By default, Elastic Load Balancing creates an Internet-facing load balancer
--- with a publicly resolvable DNS name, which resolves to public IP addresses.
--- For more information about Internet-facing and Internal load balancers, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/vpc-loadbalancer-types.html Internet-facing and Internal Load Balancers> in the /Elastic Load Balancing Developer Guide/.
+-- | The listeners.
 --
--- Specify 'internal' to create an internal load balancer with a DNS name that
--- resolves to private IP addresses.
-clbScheme :: Lens' CreateLoadBalancer (Maybe Text)
-clbScheme = lens _clbScheme (\s a -> s { _clbScheme = a })
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-listener-config.html Listeners for Your Load Balancer>
+-- in the /Elastic Load Balancing Developer Guide/.
+clbListeners :: Lens' CreateLoadBalancer [Listener]
+clbListeners = lens _clbListeners (\ s a -> s{_clbListeners = a}) . _Coerce;
 
--- | The IDs of the security groups to assign to the load balancer.
-clbSecurityGroups :: Lens' CreateLoadBalancer [Text]
-clbSecurityGroups =
-    lens _clbSecurityGroups (\s a -> s { _clbSecurityGroups = a })
-        . _List
+instance AWSRequest CreateLoadBalancer where
+        type Sv CreateLoadBalancer = ELB
+        type Rs CreateLoadBalancer =
+             CreateLoadBalancerResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CreateLoadBalancerResult"
+              (\ s h x ->
+                 CreateLoadBalancerResponse' <$>
+                   (x .@? "DNSName") <*> (pure (fromEnum s)))
 
--- | The IDs of the subnets in your VPC to attach to the load balancer. Specify
--- one subnet per Availability Zone specified in 'AvailabilityZones'.
-clbSubnets :: Lens' CreateLoadBalancer [Text]
-clbSubnets = lens _clbSubnets (\s a -> s { _clbSubnets = a }) . _List
+instance ToHeaders CreateLoadBalancer where
+        toHeaders = const mempty
 
--- | A list of tags to assign to the load balancer.
---
--- For more information about tagging your load balancer, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#tagging-elb Tagging> in the /Elastic Load Balancing Developer Guide/.
-clbTags :: Lens' CreateLoadBalancer (NonEmpty Tag)
-clbTags = lens _clbTags (\s a -> s { _clbTags = a }) . _List1
+instance ToPath CreateLoadBalancer where
+        toPath = const "/"
 
-newtype CreateLoadBalancerResponse = CreateLoadBalancerResponse
-    { _clbrDNSName :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance ToQuery CreateLoadBalancer where
+        toQuery CreateLoadBalancer'{..}
+          = mconcat
+              ["Action" =: ("CreateLoadBalancer" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "SecurityGroups" =:
+                 toQuery
+                   (toQueryList "member" <$> _clbSecurityGroups),
+               "Subnets" =:
+                 toQuery (toQueryList "member" <$> _clbSubnets),
+               "AvailabilityZones" =:
+                 toQuery
+                   (toQueryList "member" <$> _clbAvailabilityZones),
+               "Scheme" =: _clbScheme,
+               "Tags" =:
+                 toQuery (toQueryList "member" <$> _clbTags),
+               "LoadBalancerName" =: _clbLoadBalancerName,
+               "Listeners" =: toQueryList "member" _clbListeners]
 
--- | 'CreateLoadBalancerResponse' constructor.
+-- | /See:/ 'createLoadBalancerResponse' smart constructor.
+data CreateLoadBalancerResponse = CreateLoadBalancerResponse'
+    { _clbrsDNSName :: !(Maybe Text)
+    , _clbrsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateLoadBalancerResponse' 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:
 --
--- * 'clbrDNSName' @::@ 'Maybe' 'Text'
+-- * 'clbrsDNSName'
 --
-createLoadBalancerResponse :: CreateLoadBalancerResponse
-createLoadBalancerResponse = CreateLoadBalancerResponse
-    { _clbrDNSName = Nothing
+-- * 'clbrsStatus'
+createLoadBalancerResponse
+    :: Int -- ^ 'clbrsStatus'
+    -> CreateLoadBalancerResponse
+createLoadBalancerResponse pStatus_ =
+    CreateLoadBalancerResponse'
+    { _clbrsDNSName = Nothing
+    , _clbrsStatus = pStatus_
     }
 
 -- | The DNS name of the load balancer.
-clbrDNSName :: Lens' CreateLoadBalancerResponse (Maybe Text)
-clbrDNSName = lens _clbrDNSName (\s a -> s { _clbrDNSName = a })
-
-instance ToPath CreateLoadBalancer where
-    toPath = const "/"
-
-instance ToQuery CreateLoadBalancer where
-    toQuery CreateLoadBalancer{..} = mconcat
-        [ "AvailabilityZones" =? _clbAvailabilityZones
-        , "Listeners"         =? _clbListeners
-        , "LoadBalancerName"  =? _clbLoadBalancerName
-        , "Scheme"            =? _clbScheme
-        , "SecurityGroups"    =? _clbSecurityGroups
-        , "Subnets"           =? _clbSubnets
-        , "Tags"              =? _clbTags
-        ]
-
-instance ToHeaders CreateLoadBalancer
-
-instance AWSRequest CreateLoadBalancer where
-    type Sv CreateLoadBalancer = ELB
-    type Rs CreateLoadBalancer = CreateLoadBalancerResponse
-
-    request  = post "CreateLoadBalancer"
-    response = xmlResponse
+clbrsDNSName :: Lens' CreateLoadBalancerResponse (Maybe Text)
+clbrsDNSName = lens _clbrsDNSName (\ s a -> s{_clbrsDNSName = a});
 
-instance FromXML CreateLoadBalancerResponse where
-    parseXML = withElement "CreateLoadBalancerResult" $ \x -> CreateLoadBalancerResponse
-        <$> x .@? "DNSName"
+-- | The response status code.
+clbrsStatus :: Lens' CreateLoadBalancerResponse Int
+clbrsStatus = lens _clbrsStatus (\ s a -> s{_clbrsStatus = a});
diff --git a/gen/Network/AWS/ELB/CreateLoadBalancerListeners.hs b/gen/Network/AWS/ELB/CreateLoadBalancerListeners.hs
--- a/gen/Network/AWS/ELB/CreateLoadBalancerListeners.hs
+++ b/gen/Network/AWS/ELB/CreateLoadBalancerListeners.hs
@@ -1,106 +1,130 @@
-{-# 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.ELB.CreateLoadBalancerListeners
--- 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.
-
--- | Creates one or more listeners for the specified load balancer. If a listener
--- with the specified port does not already exist, it is created; otherwise, the
--- properties of the new listener must match the properties of the existing
--- listener.
+-- Creates one or more listeners for the specified load balancer. If a
+-- listener with the specified port does not already exist, it is created;
+-- otherwise, the properties of the new listener must match the properties
+-- of the existing listener.
 --
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/us-add-listener.html Add a Listener to Your Load Balancer> in the /Elastic Load Balancing Developer Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/us-add-listener.html Add a Listener to Your Load Balancer>
+-- in the /Elastic Load Balancing Developer Guide/.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_CreateLoadBalancerListeners.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_CreateLoadBalancerListeners.html AWS API Reference> for CreateLoadBalancerListeners.
 module Network.AWS.ELB.CreateLoadBalancerListeners
     (
-    -- * Request
-      CreateLoadBalancerListeners
-    -- ** Request constructor
-    , createLoadBalancerListeners
-    -- ** Request lenses
-    , clblListeners
+    -- * Creating a Request
+      createLoadBalancerListeners
+    , CreateLoadBalancerListeners
+    -- * Request Lenses
     , clblLoadBalancerName
+    , clblListeners
 
-    -- * Response
-    , CreateLoadBalancerListenersResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createLoadBalancerListenersResponse
+    , CreateLoadBalancerListenersResponse
+    -- * Response Lenses
+    , clblrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CreateLoadBalancerListeners = CreateLoadBalancerListeners
-    { _clblListeners        :: List "member" Listener
-    , _clblLoadBalancerName :: Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'createLoadBalancerListeners' smart constructor.
+data CreateLoadBalancerListeners = CreateLoadBalancerListeners'
+    { _clblLoadBalancerName :: !Text
+    , _clblListeners        :: ![Listener]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateLoadBalancerListeners' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CreateLoadBalancerListeners' with the minimum fields required to make a request.
 --
--- * 'clblListeners' @::@ ['Listener']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'clblLoadBalancerName' @::@ 'Text'
+-- * 'clblLoadBalancerName'
 --
-createLoadBalancerListeners :: Text -- ^ 'clblLoadBalancerName'
-                            -> CreateLoadBalancerListeners
-createLoadBalancerListeners p1 = CreateLoadBalancerListeners
-    { _clblLoadBalancerName = p1
-    , _clblListeners        = mempty
+-- * 'clblListeners'
+createLoadBalancerListeners
+    :: Text -- ^ 'clblLoadBalancerName'
+    -> CreateLoadBalancerListeners
+createLoadBalancerListeners pLoadBalancerName_ =
+    CreateLoadBalancerListeners'
+    { _clblLoadBalancerName = pLoadBalancerName_
+    , _clblListeners = mempty
     }
 
--- | The listeners.
-clblListeners :: Lens' CreateLoadBalancerListeners [Listener]
-clblListeners = lens _clblListeners (\s a -> s { _clblListeners = a }) . _List
-
 -- | The name of the load balancer.
 clblLoadBalancerName :: Lens' CreateLoadBalancerListeners Text
-clblLoadBalancerName =
-    lens _clblLoadBalancerName (\s a -> s { _clblLoadBalancerName = a })
+clblLoadBalancerName = lens _clblLoadBalancerName (\ s a -> s{_clblLoadBalancerName = a});
 
-data CreateLoadBalancerListenersResponse = CreateLoadBalancerListenersResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The listeners.
+clblListeners :: Lens' CreateLoadBalancerListeners [Listener]
+clblListeners = lens _clblListeners (\ s a -> s{_clblListeners = a}) . _Coerce;
 
--- | 'CreateLoadBalancerListenersResponse' constructor.
-createLoadBalancerListenersResponse :: CreateLoadBalancerListenersResponse
-createLoadBalancerListenersResponse = CreateLoadBalancerListenersResponse
+instance AWSRequest CreateLoadBalancerListeners where
+        type Sv CreateLoadBalancerListeners = ELB
+        type Rs CreateLoadBalancerListeners =
+             CreateLoadBalancerListenersResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "CreateLoadBalancerListenersResult"
+              (\ s h x ->
+                 CreateLoadBalancerListenersResponse' <$>
+                   (pure (fromEnum s)))
 
+instance ToHeaders CreateLoadBalancerListeners where
+        toHeaders = const mempty
+
 instance ToPath CreateLoadBalancerListeners where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateLoadBalancerListeners where
-    toQuery CreateLoadBalancerListeners{..} = mconcat
-        [ "Listeners"        =? _clblListeners
-        , "LoadBalancerName" =? _clblLoadBalancerName
-        ]
+        toQuery CreateLoadBalancerListeners'{..}
+          = mconcat
+              ["Action" =:
+                 ("CreateLoadBalancerListeners" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _clblLoadBalancerName,
+               "Listeners" =: toQueryList "member" _clblListeners]
 
-instance ToHeaders CreateLoadBalancerListeners
+-- | /See:/ 'createLoadBalancerListenersResponse' smart constructor.
+newtype CreateLoadBalancerListenersResponse = CreateLoadBalancerListenersResponse'
+    { _clblrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateLoadBalancerListeners where
-    type Sv CreateLoadBalancerListeners = ELB
-    type Rs CreateLoadBalancerListeners = CreateLoadBalancerListenersResponse
+-- | Creates a value of 'CreateLoadBalancerListenersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'clblrsStatus'
+createLoadBalancerListenersResponse
+    :: Int -- ^ 'clblrsStatus'
+    -> CreateLoadBalancerListenersResponse
+createLoadBalancerListenersResponse pStatus_ =
+    CreateLoadBalancerListenersResponse'
+    { _clblrsStatus = pStatus_
+    }
 
-    request  = post "CreateLoadBalancerListeners"
-    response = nullResponse CreateLoadBalancerListenersResponse
+-- | The response status code.
+clblrsStatus :: Lens' CreateLoadBalancerListenersResponse Int
+clblrsStatus = lens _clblrsStatus (\ s a -> s{_clblrsStatus = a});
diff --git a/gen/Network/AWS/ELB/CreateLoadBalancerPolicy.hs b/gen/Network/AWS/ELB/CreateLoadBalancerPolicy.hs
--- a/gen/Network/AWS/ELB/CreateLoadBalancerPolicy.hs
+++ b/gen/Network/AWS/ELB/CreateLoadBalancerPolicy.hs
@@ -1,132 +1,153 @@
-{-# 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.ELB.CreateLoadBalancerPolicy
--- 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.
-
--- | Creates a policy with the specified attributes for the specified load
+-- Creates a policy with the specified attributes for the specified load
 -- balancer.
 --
--- Policies are settings that are saved for your load balancer and that can be
--- applied to the front-end listener or the back-end application server,
+-- Policies are settings that are saved for your load balancer and that can
+-- be applied to the front-end listener or the back-end application server,
 -- depending on the policy type.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_CreateLoadBalancerPolicy.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_CreateLoadBalancerPolicy.html AWS API Reference> for CreateLoadBalancerPolicy.
 module Network.AWS.ELB.CreateLoadBalancerPolicy
     (
-    -- * Request
-      CreateLoadBalancerPolicy
-    -- ** Request constructor
-    , createLoadBalancerPolicy
-    -- ** Request lenses
-    , clbpLoadBalancerName
+    -- * Creating a Request
+      createLoadBalancerPolicy
+    , CreateLoadBalancerPolicy
+    -- * Request Lenses
     , clbpPolicyAttributes
+    , clbpLoadBalancerName
     , clbpPolicyName
     , clbpPolicyTypeName
 
-    -- * Response
-    , CreateLoadBalancerPolicyResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createLoadBalancerPolicyResponse
+    , CreateLoadBalancerPolicyResponse
+    -- * Response Lenses
+    , clbprsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CreateLoadBalancerPolicy = CreateLoadBalancerPolicy
-    { _clbpLoadBalancerName :: Text
-    , _clbpPolicyAttributes :: List "member" PolicyAttribute
-    , _clbpPolicyName       :: Text
-    , _clbpPolicyTypeName   :: Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'createLoadBalancerPolicy' smart constructor.
+data CreateLoadBalancerPolicy = CreateLoadBalancerPolicy'
+    { _clbpPolicyAttributes :: !(Maybe [PolicyAttribute])
+    , _clbpLoadBalancerName :: !Text
+    , _clbpPolicyName       :: !Text
+    , _clbpPolicyTypeName   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateLoadBalancerPolicy' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CreateLoadBalancerPolicy' with the minimum fields required to make a request.
 --
--- * 'clbpLoadBalancerName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'clbpPolicyAttributes' @::@ ['PolicyAttribute']
+-- * 'clbpPolicyAttributes'
 --
--- * 'clbpPolicyName' @::@ 'Text'
+-- * 'clbpLoadBalancerName'
 --
--- * 'clbpPolicyTypeName' @::@ 'Text'
+-- * 'clbpPolicyName'
 --
-createLoadBalancerPolicy :: Text -- ^ 'clbpLoadBalancerName'
-                         -> Text -- ^ 'clbpPolicyName'
-                         -> Text -- ^ 'clbpPolicyTypeName'
-                         -> CreateLoadBalancerPolicy
-createLoadBalancerPolicy p1 p2 p3 = CreateLoadBalancerPolicy
-    { _clbpLoadBalancerName = p1
-    , _clbpPolicyName       = p2
-    , _clbpPolicyTypeName   = p3
-    , _clbpPolicyAttributes = mempty
+-- * 'clbpPolicyTypeName'
+createLoadBalancerPolicy
+    :: Text -- ^ 'clbpLoadBalancerName'
+    -> Text -- ^ 'clbpPolicyName'
+    -> Text -- ^ 'clbpPolicyTypeName'
+    -> CreateLoadBalancerPolicy
+createLoadBalancerPolicy pLoadBalancerName_ pPolicyName_ pPolicyTypeName_ =
+    CreateLoadBalancerPolicy'
+    { _clbpPolicyAttributes = Nothing
+    , _clbpLoadBalancerName = pLoadBalancerName_
+    , _clbpPolicyName = pPolicyName_
+    , _clbpPolicyTypeName = pPolicyTypeName_
     }
 
--- | The name of the load balancer.
-clbpLoadBalancerName :: Lens' CreateLoadBalancerPolicy Text
-clbpLoadBalancerName =
-    lens _clbpLoadBalancerName (\s a -> s { _clbpLoadBalancerName = a })
-
 -- | The attributes for the policy.
 clbpPolicyAttributes :: Lens' CreateLoadBalancerPolicy [PolicyAttribute]
-clbpPolicyAttributes =
-    lens _clbpPolicyAttributes (\s a -> s { _clbpPolicyAttributes = a })
-        . _List
+clbpPolicyAttributes = lens _clbpPolicyAttributes (\ s a -> s{_clbpPolicyAttributes = a}) . _Default . _Coerce;
 
--- | The name of the load balancer policy to be created. This name must be unique
--- within the set of policies for this load balancer.
+-- | The name of the load balancer.
+clbpLoadBalancerName :: Lens' CreateLoadBalancerPolicy Text
+clbpLoadBalancerName = lens _clbpLoadBalancerName (\ s a -> s{_clbpLoadBalancerName = a});
+
+-- | The name of the load balancer policy to be created. This name must be
+-- unique within the set of policies for this load balancer.
 clbpPolicyName :: Lens' CreateLoadBalancerPolicy Text
-clbpPolicyName = lens _clbpPolicyName (\s a -> s { _clbpPolicyName = a })
+clbpPolicyName = lens _clbpPolicyName (\ s a -> s{_clbpPolicyName = a});
 
--- | The name of the base policy type. To get the list of policy types, use 'DescribeLoadBalancerPolicyTypes'.
+-- | The name of the base policy type. To get the list of policy types, use
+-- DescribeLoadBalancerPolicyTypes.
 clbpPolicyTypeName :: Lens' CreateLoadBalancerPolicy Text
-clbpPolicyTypeName =
-    lens _clbpPolicyTypeName (\s a -> s { _clbpPolicyTypeName = a })
+clbpPolicyTypeName = lens _clbpPolicyTypeName (\ s a -> s{_clbpPolicyTypeName = a});
 
-data CreateLoadBalancerPolicyResponse = CreateLoadBalancerPolicyResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest CreateLoadBalancerPolicy where
+        type Sv CreateLoadBalancerPolicy = ELB
+        type Rs CreateLoadBalancerPolicy =
+             CreateLoadBalancerPolicyResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CreateLoadBalancerPolicyResult"
+              (\ s h x ->
+                 CreateLoadBalancerPolicyResponse' <$>
+                   (pure (fromEnum s)))
 
--- | 'CreateLoadBalancerPolicyResponse' constructor.
-createLoadBalancerPolicyResponse :: CreateLoadBalancerPolicyResponse
-createLoadBalancerPolicyResponse = CreateLoadBalancerPolicyResponse
+instance ToHeaders CreateLoadBalancerPolicy where
+        toHeaders = const mempty
 
 instance ToPath CreateLoadBalancerPolicy where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateLoadBalancerPolicy where
-    toQuery CreateLoadBalancerPolicy{..} = mconcat
-        [ "LoadBalancerName" =? _clbpLoadBalancerName
-        , "PolicyAttributes" =? _clbpPolicyAttributes
-        , "PolicyName"       =? _clbpPolicyName
-        , "PolicyTypeName"   =? _clbpPolicyTypeName
-        ]
+        toQuery CreateLoadBalancerPolicy'{..}
+          = mconcat
+              ["Action" =:
+                 ("CreateLoadBalancerPolicy" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "PolicyAttributes" =:
+                 toQuery
+                   (toQueryList "member" <$> _clbpPolicyAttributes),
+               "LoadBalancerName" =: _clbpLoadBalancerName,
+               "PolicyName" =: _clbpPolicyName,
+               "PolicyTypeName" =: _clbpPolicyTypeName]
 
-instance ToHeaders CreateLoadBalancerPolicy
+-- | /See:/ 'createLoadBalancerPolicyResponse' smart constructor.
+newtype CreateLoadBalancerPolicyResponse = CreateLoadBalancerPolicyResponse'
+    { _clbprsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateLoadBalancerPolicy where
-    type Sv CreateLoadBalancerPolicy = ELB
-    type Rs CreateLoadBalancerPolicy = CreateLoadBalancerPolicyResponse
+-- | Creates a value of 'CreateLoadBalancerPolicyResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'clbprsStatus'
+createLoadBalancerPolicyResponse
+    :: Int -- ^ 'clbprsStatus'
+    -> CreateLoadBalancerPolicyResponse
+createLoadBalancerPolicyResponse pStatus_ =
+    CreateLoadBalancerPolicyResponse'
+    { _clbprsStatus = pStatus_
+    }
 
-    request  = post "CreateLoadBalancerPolicy"
-    response = nullResponse CreateLoadBalancerPolicyResponse
+-- | The response status code.
+clbprsStatus :: Lens' CreateLoadBalancerPolicyResponse Int
+clbprsStatus = lens _clbprsStatus (\ s a -> s{_clbprsStatus = a});
diff --git a/gen/Network/AWS/ELB/DeleteLoadBalancer.hs b/gen/Network/AWS/ELB/DeleteLoadBalancer.hs
--- a/gen/Network/AWS/ELB/DeleteLoadBalancer.hs
+++ b/gen/Network/AWS/ELB/DeleteLoadBalancer.hs
@@ -1,99 +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.ELB.DeleteLoadBalancer
--- 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 load balancer.
+-- Deletes the specified load balancer.
 --
--- If you are attempting to recreate a load balancer, you must reconfigure all
--- settings. The DNS name associated with a deleted load balancer are no longer
--- usable. The name and associated DNS record of the deleted load balancer no
--- longer exist and traffic sent to any of its IP addresses is no longer
--- delivered to back-end instances.
+-- If you are attempting to recreate a load balancer, you must reconfigure
+-- all settings. The DNS name associated with a deleted load balancer are
+-- no longer usable. The name and associated DNS record of the deleted load
+-- balancer no longer exist and traffic sent to any of its IP addresses is
+-- no longer delivered to back-end instances.
 --
--- If the load balancer does not exist or has already been deleted, the call to 'DeleteLoadBalancer' still succeeds.
+-- If the load balancer does not exist or has already been deleted, the
+-- call to 'DeleteLoadBalancer' still succeeds.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DeleteLoadBalancer.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DeleteLoadBalancer.html AWS API Reference> for DeleteLoadBalancer.
 module Network.AWS.ELB.DeleteLoadBalancer
     (
-    -- * Request
-      DeleteLoadBalancer
-    -- ** Request constructor
-    , deleteLoadBalancer
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteLoadBalancer
+    , DeleteLoadBalancer
+    -- * Request Lenses
     , dlbLoadBalancerName
 
-    -- * Response
-    , DeleteLoadBalancerResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteLoadBalancerResponse
+    , DeleteLoadBalancerResponse
+    -- * Response Lenses
+    , drsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DeleteLoadBalancer = DeleteLoadBalancer
+-- | /See:/ 'deleteLoadBalancer' smart constructor.
+newtype DeleteLoadBalancer = DeleteLoadBalancer'
     { _dlbLoadBalancerName :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteLoadBalancer' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteLoadBalancer' with the minimum fields required to make a request.
 --
--- * 'dlbLoadBalancerName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteLoadBalancer :: Text -- ^ 'dlbLoadBalancerName'
-                   -> DeleteLoadBalancer
-deleteLoadBalancer p1 = DeleteLoadBalancer
-    { _dlbLoadBalancerName = p1
+-- * 'dlbLoadBalancerName'
+deleteLoadBalancer
+    :: Text -- ^ 'dlbLoadBalancerName'
+    -> DeleteLoadBalancer
+deleteLoadBalancer pLoadBalancerName_ =
+    DeleteLoadBalancer'
+    { _dlbLoadBalancerName = pLoadBalancerName_
     }
 
 -- | The name of the load balancer.
 dlbLoadBalancerName :: Lens' DeleteLoadBalancer Text
-dlbLoadBalancerName =
-    lens _dlbLoadBalancerName (\s a -> s { _dlbLoadBalancerName = a })
+dlbLoadBalancerName = lens _dlbLoadBalancerName (\ s a -> s{_dlbLoadBalancerName = a});
 
-data DeleteLoadBalancerResponse = DeleteLoadBalancerResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteLoadBalancer where
+        type Sv DeleteLoadBalancer = ELB
+        type Rs DeleteLoadBalancer =
+             DeleteLoadBalancerResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DeleteLoadBalancerResult"
+              (\ s h x ->
+                 DeleteLoadBalancerResponse' <$> (pure (fromEnum s)))
 
--- | 'DeleteLoadBalancerResponse' constructor.
-deleteLoadBalancerResponse :: DeleteLoadBalancerResponse
-deleteLoadBalancerResponse = DeleteLoadBalancerResponse
+instance ToHeaders DeleteLoadBalancer where
+        toHeaders = const mempty
 
 instance ToPath DeleteLoadBalancer where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteLoadBalancer where
-    toQuery DeleteLoadBalancer{..} = mconcat
-        [ "LoadBalancerName" =? _dlbLoadBalancerName
-        ]
+        toQuery DeleteLoadBalancer'{..}
+          = mconcat
+              ["Action" =: ("DeleteLoadBalancer" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _dlbLoadBalancerName]
 
-instance ToHeaders DeleteLoadBalancer
+-- | /See:/ 'deleteLoadBalancerResponse' smart constructor.
+newtype DeleteLoadBalancerResponse = DeleteLoadBalancerResponse'
+    { _drsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteLoadBalancer where
-    type Sv DeleteLoadBalancer = ELB
-    type Rs DeleteLoadBalancer = DeleteLoadBalancerResponse
+-- | Creates a value of 'DeleteLoadBalancerResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drsStatus'
+deleteLoadBalancerResponse
+    :: Int -- ^ 'drsStatus'
+    -> DeleteLoadBalancerResponse
+deleteLoadBalancerResponse pStatus_ =
+    DeleteLoadBalancerResponse'
+    { _drsStatus = pStatus_
+    }
 
-    request  = post "DeleteLoadBalancer"
-    response = nullResponse DeleteLoadBalancerResponse
+-- | The response status code.
+drsStatus :: Lens' DeleteLoadBalancerResponse Int
+drsStatus = lens _drsStatus (\ s a -> s{_drsStatus = a});
diff --git a/gen/Network/AWS/ELB/DeleteLoadBalancerListeners.hs b/gen/Network/AWS/ELB/DeleteLoadBalancerListeners.hs
--- a/gen/Network/AWS/ELB/DeleteLoadBalancerListeners.hs
+++ b/gen/Network/AWS/ELB/DeleteLoadBalancerListeners.hs
@@ -1,103 +1,124 @@
-{-# 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.ELB.DeleteLoadBalancerListeners
--- 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 listeners from the specified load balancer.
+-- Deletes the specified listeners from the specified load balancer.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DeleteLoadBalancerListeners.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DeleteLoadBalancerListeners.html AWS API Reference> for DeleteLoadBalancerListeners.
 module Network.AWS.ELB.DeleteLoadBalancerListeners
     (
-    -- * Request
-      DeleteLoadBalancerListeners
-    -- ** Request constructor
-    , deleteLoadBalancerListeners
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteLoadBalancerListeners
+    , DeleteLoadBalancerListeners
+    -- * Request Lenses
     , dlblLoadBalancerName
     , dlblLoadBalancerPorts
 
-    -- * Response
-    , DeleteLoadBalancerListenersResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteLoadBalancerListenersResponse
+    , DeleteLoadBalancerListenersResponse
+    -- * Response Lenses
+    , dlblrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DeleteLoadBalancerListeners = DeleteLoadBalancerListeners
-    { _dlblLoadBalancerName  :: Text
-    , _dlblLoadBalancerPorts :: List "member" Int
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'deleteLoadBalancerListeners' smart constructor.
+data DeleteLoadBalancerListeners = DeleteLoadBalancerListeners'
+    { _dlblLoadBalancerName  :: !Text
+    , _dlblLoadBalancerPorts :: ![Int]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteLoadBalancerListeners' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteLoadBalancerListeners' with the minimum fields required to make a request.
 --
--- * 'dlblLoadBalancerName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dlblLoadBalancerPorts' @::@ ['Int']
+-- * 'dlblLoadBalancerName'
 --
-deleteLoadBalancerListeners :: Text -- ^ 'dlblLoadBalancerName'
-                            -> DeleteLoadBalancerListeners
-deleteLoadBalancerListeners p1 = DeleteLoadBalancerListeners
-    { _dlblLoadBalancerName  = p1
+-- * 'dlblLoadBalancerPorts'
+deleteLoadBalancerListeners
+    :: Text -- ^ 'dlblLoadBalancerName'
+    -> DeleteLoadBalancerListeners
+deleteLoadBalancerListeners pLoadBalancerName_ =
+    DeleteLoadBalancerListeners'
+    { _dlblLoadBalancerName = pLoadBalancerName_
     , _dlblLoadBalancerPorts = mempty
     }
 
 -- | The name of the load balancer.
 dlblLoadBalancerName :: Lens' DeleteLoadBalancerListeners Text
-dlblLoadBalancerName =
-    lens _dlblLoadBalancerName (\s a -> s { _dlblLoadBalancerName = a })
+dlblLoadBalancerName = lens _dlblLoadBalancerName (\ s a -> s{_dlblLoadBalancerName = a});
 
 -- | The client port numbers of the listeners.
 dlblLoadBalancerPorts :: Lens' DeleteLoadBalancerListeners [Int]
-dlblLoadBalancerPorts =
-    lens _dlblLoadBalancerPorts (\s a -> s { _dlblLoadBalancerPorts = a })
-        . _List
+dlblLoadBalancerPorts = lens _dlblLoadBalancerPorts (\ s a -> s{_dlblLoadBalancerPorts = a}) . _Coerce;
 
-data DeleteLoadBalancerListenersResponse = DeleteLoadBalancerListenersResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteLoadBalancerListeners where
+        type Sv DeleteLoadBalancerListeners = ELB
+        type Rs DeleteLoadBalancerListeners =
+             DeleteLoadBalancerListenersResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DeleteLoadBalancerListenersResult"
+              (\ s h x ->
+                 DeleteLoadBalancerListenersResponse' <$>
+                   (pure (fromEnum s)))
 
--- | 'DeleteLoadBalancerListenersResponse' constructor.
-deleteLoadBalancerListenersResponse :: DeleteLoadBalancerListenersResponse
-deleteLoadBalancerListenersResponse = DeleteLoadBalancerListenersResponse
+instance ToHeaders DeleteLoadBalancerListeners where
+        toHeaders = const mempty
 
 instance ToPath DeleteLoadBalancerListeners where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteLoadBalancerListeners where
-    toQuery DeleteLoadBalancerListeners{..} = mconcat
-        [ "LoadBalancerName"  =? _dlblLoadBalancerName
-        , "LoadBalancerPorts" =? _dlblLoadBalancerPorts
-        ]
+        toQuery DeleteLoadBalancerListeners'{..}
+          = mconcat
+              ["Action" =:
+                 ("DeleteLoadBalancerListeners" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _dlblLoadBalancerName,
+               "LoadBalancerPorts" =:
+                 toQueryList "member" _dlblLoadBalancerPorts]
 
-instance ToHeaders DeleteLoadBalancerListeners
+-- | /See:/ 'deleteLoadBalancerListenersResponse' smart constructor.
+newtype DeleteLoadBalancerListenersResponse = DeleteLoadBalancerListenersResponse'
+    { _dlblrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteLoadBalancerListeners where
-    type Sv DeleteLoadBalancerListeners = ELB
-    type Rs DeleteLoadBalancerListeners = DeleteLoadBalancerListenersResponse
+-- | Creates a value of 'DeleteLoadBalancerListenersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlblrsStatus'
+deleteLoadBalancerListenersResponse
+    :: Int -- ^ 'dlblrsStatus'
+    -> DeleteLoadBalancerListenersResponse
+deleteLoadBalancerListenersResponse pStatus_ =
+    DeleteLoadBalancerListenersResponse'
+    { _dlblrsStatus = pStatus_
+    }
 
-    request  = post "DeleteLoadBalancerListeners"
-    response = nullResponse DeleteLoadBalancerListenersResponse
+-- | The response status code.
+dlblrsStatus :: Lens' DeleteLoadBalancerListenersResponse Int
+dlblrsStatus = lens _dlblrsStatus (\ s a -> s{_dlblrsStatus = a});
diff --git a/gen/Network/AWS/ELB/DeleteLoadBalancerPolicy.hs b/gen/Network/AWS/ELB/DeleteLoadBalancerPolicy.hs
--- a/gen/Network/AWS/ELB/DeleteLoadBalancerPolicy.hs
+++ b/gen/Network/AWS/ELB/DeleteLoadBalancerPolicy.hs
@@ -1,103 +1,126 @@
-{-# 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.ELB.DeleteLoadBalancerPolicy
--- 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 policy from the specified load balancer. This policy
--- must not be enabled for any listeners.
+-- Deletes the specified policy from the specified load balancer. This
+-- policy must not be enabled for any listeners.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DeleteLoadBalancerPolicy.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DeleteLoadBalancerPolicy.html AWS API Reference> for DeleteLoadBalancerPolicy.
 module Network.AWS.ELB.DeleteLoadBalancerPolicy
     (
-    -- * Request
-      DeleteLoadBalancerPolicy
-    -- ** Request constructor
-    , deleteLoadBalancerPolicy
-    -- ** Request lenses
-    , dlbp1LoadBalancerName
-    , dlbp1PolicyName
+    -- * Creating a Request
+      deleteLoadBalancerPolicy
+    , DeleteLoadBalancerPolicy
+    -- * Request Lenses
+    , dLoadBalancerName
+    , dPolicyName
 
-    -- * Response
-    , DeleteLoadBalancerPolicyResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteLoadBalancerPolicyResponse
+    , DeleteLoadBalancerPolicyResponse
+    -- * Response Lenses
+    , delrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
-
-data DeleteLoadBalancerPolicy = DeleteLoadBalancerPolicy
-    { _dlbp1LoadBalancerName :: Text
-    , _dlbp1PolicyName       :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DeleteLoadBalancerPolicy' constructor.
+-- | =
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'deleteLoadBalancerPolicy' smart constructor.
+data DeleteLoadBalancerPolicy = DeleteLoadBalancerPolicy'
+    { _dLoadBalancerName :: !Text
+    , _dPolicyName       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteLoadBalancerPolicy' with the minimum fields required to make a request.
 --
--- * 'dlbp1LoadBalancerName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dlbp1PolicyName' @::@ 'Text'
+-- * 'dLoadBalancerName'
 --
-deleteLoadBalancerPolicy :: Text -- ^ 'dlbp1LoadBalancerName'
-                         -> Text -- ^ 'dlbp1PolicyName'
-                         -> DeleteLoadBalancerPolicy
-deleteLoadBalancerPolicy p1 p2 = DeleteLoadBalancerPolicy
-    { _dlbp1LoadBalancerName = p1
-    , _dlbp1PolicyName       = p2
+-- * 'dPolicyName'
+deleteLoadBalancerPolicy
+    :: Text -- ^ 'dLoadBalancerName'
+    -> Text -- ^ 'dPolicyName'
+    -> DeleteLoadBalancerPolicy
+deleteLoadBalancerPolicy pLoadBalancerName_ pPolicyName_ =
+    DeleteLoadBalancerPolicy'
+    { _dLoadBalancerName = pLoadBalancerName_
+    , _dPolicyName = pPolicyName_
     }
 
 -- | The name of the load balancer.
-dlbp1LoadBalancerName :: Lens' DeleteLoadBalancerPolicy Text
-dlbp1LoadBalancerName =
-    lens _dlbp1LoadBalancerName (\s a -> s { _dlbp1LoadBalancerName = a })
+dLoadBalancerName :: Lens' DeleteLoadBalancerPolicy Text
+dLoadBalancerName = lens _dLoadBalancerName (\ s a -> s{_dLoadBalancerName = a});
 
 -- | The name of the policy.
-dlbp1PolicyName :: Lens' DeleteLoadBalancerPolicy Text
-dlbp1PolicyName = lens _dlbp1PolicyName (\s a -> s { _dlbp1PolicyName = a })
+dPolicyName :: Lens' DeleteLoadBalancerPolicy Text
+dPolicyName = lens _dPolicyName (\ s a -> s{_dPolicyName = a});
 
-data DeleteLoadBalancerPolicyResponse = DeleteLoadBalancerPolicyResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteLoadBalancerPolicy where
+        type Sv DeleteLoadBalancerPolicy = ELB
+        type Rs DeleteLoadBalancerPolicy =
+             DeleteLoadBalancerPolicyResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DeleteLoadBalancerPolicyResult"
+              (\ s h x ->
+                 DeleteLoadBalancerPolicyResponse' <$>
+                   (pure (fromEnum s)))
 
--- | 'DeleteLoadBalancerPolicyResponse' constructor.
-deleteLoadBalancerPolicyResponse :: DeleteLoadBalancerPolicyResponse
-deleteLoadBalancerPolicyResponse = DeleteLoadBalancerPolicyResponse
+instance ToHeaders DeleteLoadBalancerPolicy where
+        toHeaders = const mempty
 
 instance ToPath DeleteLoadBalancerPolicy where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteLoadBalancerPolicy where
-    toQuery DeleteLoadBalancerPolicy{..} = mconcat
-        [ "LoadBalancerName" =? _dlbp1LoadBalancerName
-        , "PolicyName"       =? _dlbp1PolicyName
-        ]
+        toQuery DeleteLoadBalancerPolicy'{..}
+          = mconcat
+              ["Action" =:
+                 ("DeleteLoadBalancerPolicy" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _dLoadBalancerName,
+               "PolicyName" =: _dPolicyName]
 
-instance ToHeaders DeleteLoadBalancerPolicy
+-- | /See:/ 'deleteLoadBalancerPolicyResponse' smart constructor.
+newtype DeleteLoadBalancerPolicyResponse = DeleteLoadBalancerPolicyResponse'
+    { _delrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteLoadBalancerPolicy where
-    type Sv DeleteLoadBalancerPolicy = ELB
-    type Rs DeleteLoadBalancerPolicy = DeleteLoadBalancerPolicyResponse
+-- | Creates a value of 'DeleteLoadBalancerPolicyResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'delrsStatus'
+deleteLoadBalancerPolicyResponse
+    :: Int -- ^ 'delrsStatus'
+    -> DeleteLoadBalancerPolicyResponse
+deleteLoadBalancerPolicyResponse pStatus_ =
+    DeleteLoadBalancerPolicyResponse'
+    { _delrsStatus = pStatus_
+    }
 
-    request  = post "DeleteLoadBalancerPolicy"
-    response = nullResponse DeleteLoadBalancerPolicyResponse
+-- | The response status code.
+delrsStatus :: Lens' DeleteLoadBalancerPolicyResponse Int
+delrsStatus = lens _delrsStatus (\ s a -> s{_delrsStatus = a});
diff --git a/gen/Network/AWS/ELB/DeregisterInstancesFromLoadBalancer.hs b/gen/Network/AWS/ELB/DeregisterInstancesFromLoadBalancer.hs
--- a/gen/Network/AWS/ELB/DeregisterInstancesFromLoadBalancer.hs
+++ b/gen/Network/AWS/ELB/DeregisterInstancesFromLoadBalancer.hs
@@ -1,133 +1,148 @@
-{-# 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.ELB.DeregisterInstancesFromLoadBalancer
--- 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.
-
--- | Deregisters the specified instances from the specified load balancer. After
--- the instance is deregistered, it no longer receives traffic from the load
--- balancer.
+-- Deregisters the specified instances from the specified load balancer.
+-- After the instance is deregistered, it no longer receives traffic from
+-- the load balancer.
 --
--- You can use 'DescribeLoadBalancers' to verify that the instance is
+-- You can use DescribeLoadBalancers to verify that the instance is
 -- deregistered from the load balancer.
 --
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_DeReg_Reg_Instances.html Deregister and Register Amazon EC2 Instances> in
--- the /Elastic Load Balancing Developer Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_DeReg_Reg_Instances.html Deregister and Register Amazon EC2 Instances>
+-- in the /Elastic Load Balancing Developer Guide/.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DeregisterInstancesFromLoadBalancer.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DeregisterInstancesFromLoadBalancer.html AWS API Reference> for DeregisterInstancesFromLoadBalancer.
 module Network.AWS.ELB.DeregisterInstancesFromLoadBalancer
     (
-    -- * Request
-      DeregisterInstancesFromLoadBalancer
-    -- ** Request constructor
-    , deregisterInstancesFromLoadBalancer
-    -- ** Request lenses
-    , diflbInstances
+    -- * Creating a Request
+      deregisterInstancesFromLoadBalancer
+    , DeregisterInstancesFromLoadBalancer
+    -- * Request Lenses
     , diflbLoadBalancerName
+    , diflbInstances
 
-    -- * Response
-    , DeregisterInstancesFromLoadBalancerResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deregisterInstancesFromLoadBalancerResponse
-    -- ** Response lenses
-    , diflbrInstances
+    , DeregisterInstancesFromLoadBalancerResponse
+    -- * Response Lenses
+    , diflbrsInstances
+    , diflbrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DeregisterInstancesFromLoadBalancer = DeregisterInstancesFromLoadBalancer
-    { _diflbInstances        :: List "member" Instance
-    , _diflbLoadBalancerName :: Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'deregisterInstancesFromLoadBalancer' smart constructor.
+data DeregisterInstancesFromLoadBalancer = DeregisterInstancesFromLoadBalancer'
+    { _diflbLoadBalancerName :: !Text
+    , _diflbInstances        :: ![Instance]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeregisterInstancesFromLoadBalancer' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeregisterInstancesFromLoadBalancer' with the minimum fields required to make a request.
 --
--- * 'diflbInstances' @::@ ['Instance']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'diflbLoadBalancerName' @::@ 'Text'
+-- * 'diflbLoadBalancerName'
 --
-deregisterInstancesFromLoadBalancer :: Text -- ^ 'diflbLoadBalancerName'
-                                    -> DeregisterInstancesFromLoadBalancer
-deregisterInstancesFromLoadBalancer p1 = DeregisterInstancesFromLoadBalancer
-    { _diflbLoadBalancerName = p1
-    , _diflbInstances        = mempty
+-- * 'diflbInstances'
+deregisterInstancesFromLoadBalancer
+    :: Text -- ^ 'diflbLoadBalancerName'
+    -> DeregisterInstancesFromLoadBalancer
+deregisterInstancesFromLoadBalancer pLoadBalancerName_ =
+    DeregisterInstancesFromLoadBalancer'
+    { _diflbLoadBalancerName = pLoadBalancerName_
+    , _diflbInstances = mempty
     }
 
+-- | The name of the load balancer.
+diflbLoadBalancerName :: Lens' DeregisterInstancesFromLoadBalancer Text
+diflbLoadBalancerName = lens _diflbLoadBalancerName (\ s a -> s{_diflbLoadBalancerName = a});
+
 -- | The IDs of the instances.
 diflbInstances :: Lens' DeregisterInstancesFromLoadBalancer [Instance]
-diflbInstances = lens _diflbInstances (\s a -> s { _diflbInstances = a }) . _List
+diflbInstances = lens _diflbInstances (\ s a -> s{_diflbInstances = a}) . _Coerce;
 
--- | The name of the load balancer.
-diflbLoadBalancerName :: Lens' DeregisterInstancesFromLoadBalancer Text
-diflbLoadBalancerName =
-    lens _diflbLoadBalancerName (\s a -> s { _diflbLoadBalancerName = a })
+instance AWSRequest
+         DeregisterInstancesFromLoadBalancer where
+        type Sv DeregisterInstancesFromLoadBalancer = ELB
+        type Rs DeregisterInstancesFromLoadBalancer =
+             DeregisterInstancesFromLoadBalancerResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DeregisterInstancesFromLoadBalancerResult"
+              (\ s h x ->
+                 DeregisterInstancesFromLoadBalancerResponse' <$>
+                   (x .@? "Instances" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-newtype DeregisterInstancesFromLoadBalancerResponse = DeregisterInstancesFromLoadBalancerResponse
-    { _diflbrInstances :: List "member" Instance
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance ToHeaders
+         DeregisterInstancesFromLoadBalancer where
+        toHeaders = const mempty
 
-instance GHC.Exts.IsList DeregisterInstancesFromLoadBalancerResponse where
-    type Item DeregisterInstancesFromLoadBalancerResponse = Instance
+instance ToPath DeregisterInstancesFromLoadBalancer
+         where
+        toPath = const "/"
 
-    fromList = DeregisterInstancesFromLoadBalancerResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _diflbrInstances
+instance ToQuery DeregisterInstancesFromLoadBalancer
+         where
+        toQuery DeregisterInstancesFromLoadBalancer'{..}
+          = mconcat
+              ["Action" =:
+                 ("DeregisterInstancesFromLoadBalancer" ::
+                    ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _diflbLoadBalancerName,
+               "Instances" =: toQueryList "member" _diflbInstances]
 
--- | 'DeregisterInstancesFromLoadBalancerResponse' constructor.
+-- | /See:/ 'deregisterInstancesFromLoadBalancerResponse' smart constructor.
+data DeregisterInstancesFromLoadBalancerResponse = DeregisterInstancesFromLoadBalancerResponse'
+    { _diflbrsInstances :: !(Maybe [Instance])
+    , _diflbrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeregisterInstancesFromLoadBalancerResponse' 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:
 --
--- * 'diflbrInstances' @::@ ['Instance']
+-- * 'diflbrsInstances'
 --
-deregisterInstancesFromLoadBalancerResponse :: DeregisterInstancesFromLoadBalancerResponse
-deregisterInstancesFromLoadBalancerResponse = DeregisterInstancesFromLoadBalancerResponse
-    { _diflbrInstances = mempty
+-- * 'diflbrsStatus'
+deregisterInstancesFromLoadBalancerResponse
+    :: Int -- ^ 'diflbrsStatus'
+    -> DeregisterInstancesFromLoadBalancerResponse
+deregisterInstancesFromLoadBalancerResponse pStatus_ =
+    DeregisterInstancesFromLoadBalancerResponse'
+    { _diflbrsInstances = Nothing
+    , _diflbrsStatus = pStatus_
     }
 
 -- | The remaining instances registered with the load balancer.
-diflbrInstances :: Lens' DeregisterInstancesFromLoadBalancerResponse [Instance]
-diflbrInstances = lens _diflbrInstances (\s a -> s { _diflbrInstances = a }) . _List
-
-instance ToPath DeregisterInstancesFromLoadBalancer where
-    toPath = const "/"
-
-instance ToQuery DeregisterInstancesFromLoadBalancer where
-    toQuery DeregisterInstancesFromLoadBalancer{..} = mconcat
-        [ "Instances"        =? _diflbInstances
-        , "LoadBalancerName" =? _diflbLoadBalancerName
-        ]
-
-instance ToHeaders DeregisterInstancesFromLoadBalancer
-
-instance AWSRequest DeregisterInstancesFromLoadBalancer where
-    type Sv DeregisterInstancesFromLoadBalancer = ELB
-    type Rs DeregisterInstancesFromLoadBalancer = DeregisterInstancesFromLoadBalancerResponse
-
-    request  = post "DeregisterInstancesFromLoadBalancer"
-    response = xmlResponse
+diflbrsInstances :: Lens' DeregisterInstancesFromLoadBalancerResponse [Instance]
+diflbrsInstances = lens _diflbrsInstances (\ s a -> s{_diflbrsInstances = a}) . _Default . _Coerce;
 
-instance FromXML DeregisterInstancesFromLoadBalancerResponse where
-    parseXML = withElement "DeregisterInstancesFromLoadBalancerResult" $ \x -> DeregisterInstancesFromLoadBalancerResponse
-        <$> x .@? "Instances" .!@ mempty
+-- | The response status code.
+diflbrsStatus :: Lens' DeregisterInstancesFromLoadBalancerResponse Int
+diflbrsStatus = lens _diflbrsStatus (\ s a -> s{_diflbrsStatus = a});
diff --git a/gen/Network/AWS/ELB/DescribeInstanceHealth.hs b/gen/Network/AWS/ELB/DescribeInstanceHealth.hs
--- a/gen/Network/AWS/ELB/DescribeInstanceHealth.hs
+++ b/gen/Network/AWS/ELB/DescribeInstanceHealth.hs
@@ -1,130 +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.ELB.DescribeInstanceHealth
--- 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.
-
--- | Describes the state of the specified instances registered with the specified
--- load balancer. If no instances are specified, the call describes the state of
--- all instances registered with the load balancer, not including any terminated
--- instances.
+-- Describes the state of the specified instances registered with the
+-- specified load balancer. If no instances are specified, the call
+-- describes the state of all instances registered with the load balancer,
+-- not including any terminated instances.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DescribeInstanceHealth.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DescribeInstanceHealth.html AWS API Reference> for DescribeInstanceHealth.
 module Network.AWS.ELB.DescribeInstanceHealth
     (
-    -- * Request
-      DescribeInstanceHealth
-    -- ** Request constructor
-    , describeInstanceHealth
-    -- ** Request lenses
+    -- * Creating a Request
+      describeInstanceHealth
+    , DescribeInstanceHealth
+    -- * Request Lenses
     , dihInstances
     , dihLoadBalancerName
 
-    -- * Response
-    , DescribeInstanceHealthResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeInstanceHealthResponse
-    -- ** Response lenses
-    , dihrInstanceStates
+    , DescribeInstanceHealthResponse
+    -- * Response Lenses
+    , dihrsInstanceStates
+    , dihrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeInstanceHealth = DescribeInstanceHealth
-    { _dihInstances        :: List "member" Instance
-    , _dihLoadBalancerName :: Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'describeInstanceHealth' smart constructor.
+data DescribeInstanceHealth = DescribeInstanceHealth'
+    { _dihInstances        :: !(Maybe [Instance])
+    , _dihLoadBalancerName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeInstanceHealth' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeInstanceHealth' with the minimum fields required to make a request.
 --
--- * 'dihInstances' @::@ ['Instance']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dihLoadBalancerName' @::@ 'Text'
+-- * 'dihInstances'
 --
-describeInstanceHealth :: Text -- ^ 'dihLoadBalancerName'
-                       -> DescribeInstanceHealth
-describeInstanceHealth p1 = DescribeInstanceHealth
-    { _dihLoadBalancerName = p1
-    , _dihInstances        = mempty
+-- * 'dihLoadBalancerName'
+describeInstanceHealth
+    :: Text -- ^ 'dihLoadBalancerName'
+    -> DescribeInstanceHealth
+describeInstanceHealth pLoadBalancerName_ =
+    DescribeInstanceHealth'
+    { _dihInstances = Nothing
+    , _dihLoadBalancerName = pLoadBalancerName_
     }
 
 -- | The IDs of the instances.
 dihInstances :: Lens' DescribeInstanceHealth [Instance]
-dihInstances = lens _dihInstances (\s a -> s { _dihInstances = a }) . _List
+dihInstances = lens _dihInstances (\ s a -> s{_dihInstances = a}) . _Default . _Coerce;
 
 -- | The name of the load balancer.
 dihLoadBalancerName :: Lens' DescribeInstanceHealth Text
-dihLoadBalancerName =
-    lens _dihLoadBalancerName (\s a -> s { _dihLoadBalancerName = a })
+dihLoadBalancerName = lens _dihLoadBalancerName (\ s a -> s{_dihLoadBalancerName = a});
 
-newtype DescribeInstanceHealthResponse = DescribeInstanceHealthResponse
-    { _dihrInstanceStates :: List "member" InstanceState
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest DescribeInstanceHealth where
+        type Sv DescribeInstanceHealth = ELB
+        type Rs DescribeInstanceHealth =
+             DescribeInstanceHealthResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeInstanceHealthResult"
+              (\ s h x ->
+                 DescribeInstanceHealthResponse' <$>
+                   (x .@? "InstanceStates" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-instance GHC.Exts.IsList DescribeInstanceHealthResponse where
-    type Item DescribeInstanceHealthResponse = InstanceState
+instance ToHeaders DescribeInstanceHealth where
+        toHeaders = const mempty
 
-    fromList = DescribeInstanceHealthResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dihrInstanceStates
+instance ToPath DescribeInstanceHealth where
+        toPath = const "/"
 
--- | 'DescribeInstanceHealthResponse' constructor.
+instance ToQuery DescribeInstanceHealth where
+        toQuery DescribeInstanceHealth'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeInstanceHealth" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "Instances" =:
+                 toQuery (toQueryList "member" <$> _dihInstances),
+               "LoadBalancerName" =: _dihLoadBalancerName]
+
+-- | /See:/ 'describeInstanceHealthResponse' smart constructor.
+data DescribeInstanceHealthResponse = DescribeInstanceHealthResponse'
+    { _dihrsInstanceStates :: !(Maybe [InstanceState])
+    , _dihrsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeInstanceHealthResponse' 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:
 --
--- * 'dihrInstanceStates' @::@ ['InstanceState']
+-- * 'dihrsInstanceStates'
 --
-describeInstanceHealthResponse :: DescribeInstanceHealthResponse
-describeInstanceHealthResponse = DescribeInstanceHealthResponse
-    { _dihrInstanceStates = mempty
+-- * 'dihrsStatus'
+describeInstanceHealthResponse
+    :: Int -- ^ 'dihrsStatus'
+    -> DescribeInstanceHealthResponse
+describeInstanceHealthResponse pStatus_ =
+    DescribeInstanceHealthResponse'
+    { _dihrsInstanceStates = Nothing
+    , _dihrsStatus = pStatus_
     }
 
 -- | Information about the health of the instances.
-dihrInstanceStates :: Lens' DescribeInstanceHealthResponse [InstanceState]
-dihrInstanceStates =
-    lens _dihrInstanceStates (\s a -> s { _dihrInstanceStates = a })
-        . _List
-
-instance ToPath DescribeInstanceHealth where
-    toPath = const "/"
-
-instance ToQuery DescribeInstanceHealth where
-    toQuery DescribeInstanceHealth{..} = mconcat
-        [ "Instances"        =? _dihInstances
-        , "LoadBalancerName" =? _dihLoadBalancerName
-        ]
-
-instance ToHeaders DescribeInstanceHealth
-
-instance AWSRequest DescribeInstanceHealth where
-    type Sv DescribeInstanceHealth = ELB
-    type Rs DescribeInstanceHealth = DescribeInstanceHealthResponse
-
-    request  = post "DescribeInstanceHealth"
-    response = xmlResponse
+dihrsInstanceStates :: Lens' DescribeInstanceHealthResponse [InstanceState]
+dihrsInstanceStates = lens _dihrsInstanceStates (\ s a -> s{_dihrsInstanceStates = a}) . _Default . _Coerce;
 
-instance FromXML DescribeInstanceHealthResponse where
-    parseXML = withElement "DescribeInstanceHealthResult" $ \x -> DescribeInstanceHealthResponse
-        <$> x .@? "InstanceStates" .!@ mempty
+-- | The response status code.
+dihrsStatus :: Lens' DescribeInstanceHealthResponse Int
+dihrsStatus = lens _dihrsStatus (\ s a -> s{_dihrsStatus = a});
diff --git a/gen/Network/AWS/ELB/DescribeLoadBalancerAttributes.hs b/gen/Network/AWS/ELB/DescribeLoadBalancerAttributes.hs
--- a/gen/Network/AWS/ELB/DescribeLoadBalancerAttributes.hs
+++ b/gen/Network/AWS/ELB/DescribeLoadBalancerAttributes.hs
@@ -1,111 +1,125 @@
-{-# 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.ELB.DescribeLoadBalancerAttributes
--- 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.
-
--- | Describes the attributes for the specified load balancer.
+-- Describes the attributes for the specified load balancer.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DescribeLoadBalancerAttributes.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DescribeLoadBalancerAttributes.html AWS API Reference> for DescribeLoadBalancerAttributes.
 module Network.AWS.ELB.DescribeLoadBalancerAttributes
     (
-    -- * Request
-      DescribeLoadBalancerAttributes
-    -- ** Request constructor
-    , describeLoadBalancerAttributes
-    -- ** Request lenses
+    -- * Creating a Request
+      describeLoadBalancerAttributes
+    , DescribeLoadBalancerAttributes
+    -- * Request Lenses
     , dlbaLoadBalancerName
 
-    -- * Response
-    , DescribeLoadBalancerAttributesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeLoadBalancerAttributesResponse
-    -- ** Response lenses
-    , dlbarLoadBalancerAttributes
+    , DescribeLoadBalancerAttributesResponse
+    -- * Response Lenses
+    , dlbarsLoadBalancerAttributes
+    , dlbarsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DescribeLoadBalancerAttributes = DescribeLoadBalancerAttributes
+-- | /See:/ 'describeLoadBalancerAttributes' smart constructor.
+newtype DescribeLoadBalancerAttributes = DescribeLoadBalancerAttributes'
     { _dlbaLoadBalancerName :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeLoadBalancerAttributes' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeLoadBalancerAttributes' with the minimum fields required to make a request.
 --
--- * 'dlbaLoadBalancerName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeLoadBalancerAttributes :: Text -- ^ 'dlbaLoadBalancerName'
-                               -> DescribeLoadBalancerAttributes
-describeLoadBalancerAttributes p1 = DescribeLoadBalancerAttributes
-    { _dlbaLoadBalancerName = p1
+-- * 'dlbaLoadBalancerName'
+describeLoadBalancerAttributes
+    :: Text -- ^ 'dlbaLoadBalancerName'
+    -> DescribeLoadBalancerAttributes
+describeLoadBalancerAttributes pLoadBalancerName_ =
+    DescribeLoadBalancerAttributes'
+    { _dlbaLoadBalancerName = pLoadBalancerName_
     }
 
 -- | The name of the load balancer.
 dlbaLoadBalancerName :: Lens' DescribeLoadBalancerAttributes Text
-dlbaLoadBalancerName =
-    lens _dlbaLoadBalancerName (\s a -> s { _dlbaLoadBalancerName = a })
-
-newtype DescribeLoadBalancerAttributesResponse = DescribeLoadBalancerAttributesResponse
-    { _dlbarLoadBalancerAttributes :: Maybe LoadBalancerAttributes
-    } deriving (Eq, Read, Show)
+dlbaLoadBalancerName = lens _dlbaLoadBalancerName (\ s a -> s{_dlbaLoadBalancerName = a});
 
--- | 'DescribeLoadBalancerAttributesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dlbarLoadBalancerAttributes' @::@ 'Maybe' 'LoadBalancerAttributes'
---
-describeLoadBalancerAttributesResponse :: DescribeLoadBalancerAttributesResponse
-describeLoadBalancerAttributesResponse = DescribeLoadBalancerAttributesResponse
-    { _dlbarLoadBalancerAttributes = Nothing
-    }
+instance AWSRequest DescribeLoadBalancerAttributes
+         where
+        type Sv DescribeLoadBalancerAttributes = ELB
+        type Rs DescribeLoadBalancerAttributes =
+             DescribeLoadBalancerAttributesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeLoadBalancerAttributesResult"
+              (\ s h x ->
+                 DescribeLoadBalancerAttributesResponse' <$>
+                   (x .@? "LoadBalancerAttributes") <*>
+                     (pure (fromEnum s)))
 
--- | Information about the load balancer attributes.
-dlbarLoadBalancerAttributes :: Lens' DescribeLoadBalancerAttributesResponse (Maybe LoadBalancerAttributes)
-dlbarLoadBalancerAttributes =
-    lens _dlbarLoadBalancerAttributes
-        (\s a -> s { _dlbarLoadBalancerAttributes = a })
+instance ToHeaders DescribeLoadBalancerAttributes
+         where
+        toHeaders = const mempty
 
 instance ToPath DescribeLoadBalancerAttributes where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeLoadBalancerAttributes where
-    toQuery DescribeLoadBalancerAttributes{..} = mconcat
-        [ "LoadBalancerName" =? _dlbaLoadBalancerName
-        ]
+        toQuery DescribeLoadBalancerAttributes'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeLoadBalancerAttributes" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _dlbaLoadBalancerName]
 
-instance ToHeaders DescribeLoadBalancerAttributes
+-- | /See:/ 'describeLoadBalancerAttributesResponse' smart constructor.
+data DescribeLoadBalancerAttributesResponse = DescribeLoadBalancerAttributesResponse'
+    { _dlbarsLoadBalancerAttributes :: !(Maybe LoadBalancerAttributes)
+    , _dlbarsStatus                 :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeLoadBalancerAttributes where
-    type Sv DescribeLoadBalancerAttributes = ELB
-    type Rs DescribeLoadBalancerAttributes = DescribeLoadBalancerAttributesResponse
+-- | Creates a value of 'DescribeLoadBalancerAttributesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlbarsLoadBalancerAttributes'
+--
+-- * 'dlbarsStatus'
+describeLoadBalancerAttributesResponse
+    :: Int -- ^ 'dlbarsStatus'
+    -> DescribeLoadBalancerAttributesResponse
+describeLoadBalancerAttributesResponse pStatus_ =
+    DescribeLoadBalancerAttributesResponse'
+    { _dlbarsLoadBalancerAttributes = Nothing
+    , _dlbarsStatus = pStatus_
+    }
 
-    request  = post "DescribeLoadBalancerAttributes"
-    response = xmlResponse
+-- | Information about the load balancer attributes.
+dlbarsLoadBalancerAttributes :: Lens' DescribeLoadBalancerAttributesResponse (Maybe LoadBalancerAttributes)
+dlbarsLoadBalancerAttributes = lens _dlbarsLoadBalancerAttributes (\ s a -> s{_dlbarsLoadBalancerAttributes = a});
 
-instance FromXML DescribeLoadBalancerAttributesResponse where
-    parseXML = withElement "DescribeLoadBalancerAttributesResult" $ \x -> DescribeLoadBalancerAttributesResponse
-        <$> x .@? "LoadBalancerAttributes"
+-- | The response status code.
+dlbarsStatus :: Lens' DescribeLoadBalancerAttributesResponse Int
+dlbarsStatus = lens _dlbarsStatus (\ s a -> s{_dlbarsStatus = a});
diff --git a/gen/Network/AWS/ELB/DescribeLoadBalancerPolicies.hs b/gen/Network/AWS/ELB/DescribeLoadBalancerPolicies.hs
--- a/gen/Network/AWS/ELB/DescribeLoadBalancerPolicies.hs
+++ b/gen/Network/AWS/ELB/DescribeLoadBalancerPolicies.hs
@@ -1,133 +1,143 @@
-{-# 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.ELB.DescribeLoadBalancerPolicies
--- 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.
-
--- | Describes the specified policies.
+-- Describes the specified policies.
 --
--- If you specify a load balancer name, the action returns the descriptions of
--- all policies created for the load balancer. If you specify a policy name
--- associated with your load balancer, the action returns the description of
--- that policy. If you don't specify a load balancer name, the action returns
--- descriptions of the specified sample policies, or descriptions of all sample
--- policies. The names of the sample policies have the 'ELBSample-' prefix.
+-- If you specify a load balancer name, the action returns the descriptions
+-- of all policies created for the load balancer. If you specify a policy
+-- name associated with your load balancer, the action returns the
+-- description of that policy. If you don\'t specify a load balancer name,
+-- the action returns descriptions of the specified sample policies, or
+-- descriptions of all sample policies. The names of the sample policies
+-- have the 'ELBSample-' prefix.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DescribeLoadBalancerPolicies.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DescribeLoadBalancerPolicies.html AWS API Reference> for DescribeLoadBalancerPolicies.
 module Network.AWS.ELB.DescribeLoadBalancerPolicies
     (
-    -- * Request
-      DescribeLoadBalancerPolicies
-    -- ** Request constructor
-    , describeLoadBalancerPolicies
-    -- ** Request lenses
-    , dlbpLoadBalancerName
+    -- * Creating a Request
+      describeLoadBalancerPolicies
+    , DescribeLoadBalancerPolicies
+    -- * Request Lenses
     , dlbpPolicyNames
+    , dlbpLoadBalancerName
 
-    -- * Response
-    , DescribeLoadBalancerPoliciesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeLoadBalancerPoliciesResponse
-    -- ** Response lenses
-    , dlbprPolicyDescriptions
+    , DescribeLoadBalancerPoliciesResponse
+    -- * Response Lenses
+    , dlbprsPolicyDescriptions
+    , dlbprsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeLoadBalancerPolicies = DescribeLoadBalancerPolicies
-    { _dlbpLoadBalancerName :: Maybe Text
-    , _dlbpPolicyNames      :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeLoadBalancerPolicies' smart constructor.
+data DescribeLoadBalancerPolicies = DescribeLoadBalancerPolicies'
+    { _dlbpPolicyNames      :: !(Maybe [Text])
+    , _dlbpLoadBalancerName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeLoadBalancerPolicies' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeLoadBalancerPolicies' with the minimum fields required to make a request.
 --
--- * 'dlbpLoadBalancerName' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dlbpPolicyNames' @::@ ['Text']
+-- * 'dlbpPolicyNames'
 --
-describeLoadBalancerPolicies :: DescribeLoadBalancerPolicies
-describeLoadBalancerPolicies = DescribeLoadBalancerPolicies
-    { _dlbpLoadBalancerName = Nothing
-    , _dlbpPolicyNames      = mempty
+-- * 'dlbpLoadBalancerName'
+describeLoadBalancerPolicies
+    :: DescribeLoadBalancerPolicies
+describeLoadBalancerPolicies =
+    DescribeLoadBalancerPolicies'
+    { _dlbpPolicyNames = Nothing
+    , _dlbpLoadBalancerName = Nothing
     }
 
+-- | The names of the policies.
+dlbpPolicyNames :: Lens' DescribeLoadBalancerPolicies [Text]
+dlbpPolicyNames = lens _dlbpPolicyNames (\ s a -> s{_dlbpPolicyNames = a}) . _Default . _Coerce;
+
 -- | The name of the load balancer.
 dlbpLoadBalancerName :: Lens' DescribeLoadBalancerPolicies (Maybe Text)
-dlbpLoadBalancerName =
-    lens _dlbpLoadBalancerName (\s a -> s { _dlbpLoadBalancerName = a })
+dlbpLoadBalancerName = lens _dlbpLoadBalancerName (\ s a -> s{_dlbpLoadBalancerName = a});
 
--- | The names of the policies.
-dlbpPolicyNames :: Lens' DescribeLoadBalancerPolicies [Text]
-dlbpPolicyNames = lens _dlbpPolicyNames (\s a -> s { _dlbpPolicyNames = a }) . _List
+instance AWSRequest DescribeLoadBalancerPolicies
+         where
+        type Sv DescribeLoadBalancerPolicies = ELB
+        type Rs DescribeLoadBalancerPolicies =
+             DescribeLoadBalancerPoliciesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeLoadBalancerPoliciesResult"
+              (\ s h x ->
+                 DescribeLoadBalancerPoliciesResponse' <$>
+                   (x .@? "PolicyDescriptions" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-newtype DescribeLoadBalancerPoliciesResponse = DescribeLoadBalancerPoliciesResponse
-    { _dlbprPolicyDescriptions :: List "member" PolicyDescription
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance ToHeaders DescribeLoadBalancerPolicies where
+        toHeaders = const mempty
 
-instance GHC.Exts.IsList DescribeLoadBalancerPoliciesResponse where
-    type Item DescribeLoadBalancerPoliciesResponse = PolicyDescription
+instance ToPath DescribeLoadBalancerPolicies where
+        toPath = const "/"
 
-    fromList = DescribeLoadBalancerPoliciesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dlbprPolicyDescriptions
+instance ToQuery DescribeLoadBalancerPolicies where
+        toQuery DescribeLoadBalancerPolicies'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeLoadBalancerPolicies" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "PolicyNames" =:
+                 toQuery (toQueryList "member" <$> _dlbpPolicyNames),
+               "LoadBalancerName" =: _dlbpLoadBalancerName]
 
--- | 'DescribeLoadBalancerPoliciesResponse' constructor.
+-- | /See:/ 'describeLoadBalancerPoliciesResponse' smart constructor.
+data DescribeLoadBalancerPoliciesResponse = DescribeLoadBalancerPoliciesResponse'
+    { _dlbprsPolicyDescriptions :: !(Maybe [PolicyDescription])
+    , _dlbprsStatus             :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeLoadBalancerPoliciesResponse' 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:
 --
--- * 'dlbprPolicyDescriptions' @::@ ['PolicyDescription']
+-- * 'dlbprsPolicyDescriptions'
 --
-describeLoadBalancerPoliciesResponse :: DescribeLoadBalancerPoliciesResponse
-describeLoadBalancerPoliciesResponse = DescribeLoadBalancerPoliciesResponse
-    { _dlbprPolicyDescriptions = mempty
+-- * 'dlbprsStatus'
+describeLoadBalancerPoliciesResponse
+    :: Int -- ^ 'dlbprsStatus'
+    -> DescribeLoadBalancerPoliciesResponse
+describeLoadBalancerPoliciesResponse pStatus_ =
+    DescribeLoadBalancerPoliciesResponse'
+    { _dlbprsPolicyDescriptions = Nothing
+    , _dlbprsStatus = pStatus_
     }
 
 -- | Information about the policies.
-dlbprPolicyDescriptions :: Lens' DescribeLoadBalancerPoliciesResponse [PolicyDescription]
-dlbprPolicyDescriptions =
-    lens _dlbprPolicyDescriptions (\s a -> s { _dlbprPolicyDescriptions = a })
-        . _List
-
-instance ToPath DescribeLoadBalancerPolicies where
-    toPath = const "/"
-
-instance ToQuery DescribeLoadBalancerPolicies where
-    toQuery DescribeLoadBalancerPolicies{..} = mconcat
-        [ "LoadBalancerName" =? _dlbpLoadBalancerName
-        , "PolicyNames"      =? _dlbpPolicyNames
-        ]
-
-instance ToHeaders DescribeLoadBalancerPolicies
-
-instance AWSRequest DescribeLoadBalancerPolicies where
-    type Sv DescribeLoadBalancerPolicies = ELB
-    type Rs DescribeLoadBalancerPolicies = DescribeLoadBalancerPoliciesResponse
-
-    request  = post "DescribeLoadBalancerPolicies"
-    response = xmlResponse
+dlbprsPolicyDescriptions :: Lens' DescribeLoadBalancerPoliciesResponse [PolicyDescription]
+dlbprsPolicyDescriptions = lens _dlbprsPolicyDescriptions (\ s a -> s{_dlbprsPolicyDescriptions = a}) . _Default . _Coerce;
 
-instance FromXML DescribeLoadBalancerPoliciesResponse where
-    parseXML = withElement "DescribeLoadBalancerPoliciesResult" $ \x -> DescribeLoadBalancerPoliciesResponse
-        <$> x .@? "PolicyDescriptions" .!@ mempty
+-- | The response status code.
+dlbprsStatus :: Lens' DescribeLoadBalancerPoliciesResponse Int
+dlbprsStatus = lens _dlbprsStatus (\ s a -> s{_dlbprsStatus = a});
diff --git a/gen/Network/AWS/ELB/DescribeLoadBalancerPolicyTypes.hs b/gen/Network/AWS/ELB/DescribeLoadBalancerPolicyTypes.hs
--- a/gen/Network/AWS/ELB/DescribeLoadBalancerPolicyTypes.hs
+++ b/gen/Network/AWS/ELB/DescribeLoadBalancerPolicyTypes.hs
@@ -1,128 +1,132 @@
-{-# 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.ELB.DescribeLoadBalancerPolicyTypes
--- 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.
-
--- | Describes the specified load balancer policy types.
+-- Describes the specified load balancer policy types.
 --
--- You can use these policy types with 'CreateLoadBalancerPolicy' to create
+-- You can use these policy types with CreateLoadBalancerPolicy to create
 -- policy configurations for a load balancer.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DescribeLoadBalancerPolicyTypes.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DescribeLoadBalancerPolicyTypes.html AWS API Reference> for DescribeLoadBalancerPolicyTypes.
 module Network.AWS.ELB.DescribeLoadBalancerPolicyTypes
     (
-    -- * Request
-      DescribeLoadBalancerPolicyTypes
-    -- ** Request constructor
-    , describeLoadBalancerPolicyTypes
-    -- ** Request lenses
+    -- * Creating a Request
+      describeLoadBalancerPolicyTypes
+    , DescribeLoadBalancerPolicyTypes
+    -- * Request Lenses
     , dlbptPolicyTypeNames
 
-    -- * Response
-    , DescribeLoadBalancerPolicyTypesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeLoadBalancerPolicyTypesResponse
-    -- ** Response lenses
-    , dlbptrPolicyTypeDescriptions
+    , DescribeLoadBalancerPolicyTypesResponse
+    -- * Response Lenses
+    , dlbptrsPolicyTypeDescriptions
+    , dlbptrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
-
-newtype DescribeLoadBalancerPolicyTypes = DescribeLoadBalancerPolicyTypes
-    { _dlbptPolicyTypeNames :: List "member" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeLoadBalancerPolicyTypes where
-    type Item DescribeLoadBalancerPolicyTypes = Text
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-    fromList = DescribeLoadBalancerPolicyTypes . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dlbptPolicyTypeNames
+-- | /See:/ 'describeLoadBalancerPolicyTypes' smart constructor.
+newtype DescribeLoadBalancerPolicyTypes = DescribeLoadBalancerPolicyTypes'
+    { _dlbptPolicyTypeNames :: Maybe [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeLoadBalancerPolicyTypes' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeLoadBalancerPolicyTypes' with the minimum fields required to make a request.
 --
--- * 'dlbptPolicyTypeNames' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeLoadBalancerPolicyTypes :: DescribeLoadBalancerPolicyTypes
-describeLoadBalancerPolicyTypes = DescribeLoadBalancerPolicyTypes
-    { _dlbptPolicyTypeNames = mempty
+-- * 'dlbptPolicyTypeNames'
+describeLoadBalancerPolicyTypes
+    :: DescribeLoadBalancerPolicyTypes
+describeLoadBalancerPolicyTypes =
+    DescribeLoadBalancerPolicyTypes'
+    { _dlbptPolicyTypeNames = Nothing
     }
 
 -- | The names of the policy types. If no names are specified, describes all
 -- policy types defined by Elastic Load Balancing.
 dlbptPolicyTypeNames :: Lens' DescribeLoadBalancerPolicyTypes [Text]
-dlbptPolicyTypeNames =
-    lens _dlbptPolicyTypeNames (\s a -> s { _dlbptPolicyTypeNames = a })
-        . _List
+dlbptPolicyTypeNames = lens _dlbptPolicyTypeNames (\ s a -> s{_dlbptPolicyTypeNames = a}) . _Default . _Coerce;
 
-newtype DescribeLoadBalancerPolicyTypesResponse = DescribeLoadBalancerPolicyTypesResponse
-    { _dlbptrPolicyTypeDescriptions :: List "member" PolicyTypeDescription
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest DescribeLoadBalancerPolicyTypes
+         where
+        type Sv DescribeLoadBalancerPolicyTypes = ELB
+        type Rs DescribeLoadBalancerPolicyTypes =
+             DescribeLoadBalancerPolicyTypesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeLoadBalancerPolicyTypesResult"
+              (\ s h x ->
+                 DescribeLoadBalancerPolicyTypesResponse' <$>
+                   (x .@? "PolicyTypeDescriptions" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-instance GHC.Exts.IsList DescribeLoadBalancerPolicyTypesResponse where
-    type Item DescribeLoadBalancerPolicyTypesResponse = PolicyTypeDescription
+instance ToHeaders DescribeLoadBalancerPolicyTypes
+         where
+        toHeaders = const mempty
 
-    fromList = DescribeLoadBalancerPolicyTypesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dlbptrPolicyTypeDescriptions
+instance ToPath DescribeLoadBalancerPolicyTypes where
+        toPath = const "/"
 
--- | 'DescribeLoadBalancerPolicyTypesResponse' constructor.
+instance ToQuery DescribeLoadBalancerPolicyTypes
+         where
+        toQuery DescribeLoadBalancerPolicyTypes'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeLoadBalancerPolicyTypes" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "PolicyTypeNames" =:
+                 toQuery
+                   (toQueryList "member" <$> _dlbptPolicyTypeNames)]
+
+-- | /See:/ 'describeLoadBalancerPolicyTypesResponse' smart constructor.
+data DescribeLoadBalancerPolicyTypesResponse = DescribeLoadBalancerPolicyTypesResponse'
+    { _dlbptrsPolicyTypeDescriptions :: !(Maybe [PolicyTypeDescription])
+    , _dlbptrsStatus                 :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeLoadBalancerPolicyTypesResponse' 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:
 --
--- * 'dlbptrPolicyTypeDescriptions' @::@ ['PolicyTypeDescription']
+-- * 'dlbptrsPolicyTypeDescriptions'
 --
-describeLoadBalancerPolicyTypesResponse :: DescribeLoadBalancerPolicyTypesResponse
-describeLoadBalancerPolicyTypesResponse = DescribeLoadBalancerPolicyTypesResponse
-    { _dlbptrPolicyTypeDescriptions = mempty
+-- * 'dlbptrsStatus'
+describeLoadBalancerPolicyTypesResponse
+    :: Int -- ^ 'dlbptrsStatus'
+    -> DescribeLoadBalancerPolicyTypesResponse
+describeLoadBalancerPolicyTypesResponse pStatus_ =
+    DescribeLoadBalancerPolicyTypesResponse'
+    { _dlbptrsPolicyTypeDescriptions = Nothing
+    , _dlbptrsStatus = pStatus_
     }
 
 -- | Information about the policy types.
-dlbptrPolicyTypeDescriptions :: Lens' DescribeLoadBalancerPolicyTypesResponse [PolicyTypeDescription]
-dlbptrPolicyTypeDescriptions =
-    lens _dlbptrPolicyTypeDescriptions
-        (\s a -> s { _dlbptrPolicyTypeDescriptions = a })
-            . _List
-
-instance ToPath DescribeLoadBalancerPolicyTypes where
-    toPath = const "/"
-
-instance ToQuery DescribeLoadBalancerPolicyTypes where
-    toQuery DescribeLoadBalancerPolicyTypes{..} = mconcat
-        [ "PolicyTypeNames" =? _dlbptPolicyTypeNames
-        ]
-
-instance ToHeaders DescribeLoadBalancerPolicyTypes
-
-instance AWSRequest DescribeLoadBalancerPolicyTypes where
-    type Sv DescribeLoadBalancerPolicyTypes = ELB
-    type Rs DescribeLoadBalancerPolicyTypes = DescribeLoadBalancerPolicyTypesResponse
-
-    request  = post "DescribeLoadBalancerPolicyTypes"
-    response = xmlResponse
+dlbptrsPolicyTypeDescriptions :: Lens' DescribeLoadBalancerPolicyTypesResponse [PolicyTypeDescription]
+dlbptrsPolicyTypeDescriptions = lens _dlbptrsPolicyTypeDescriptions (\ s a -> s{_dlbptrsPolicyTypeDescriptions = a}) . _Default . _Coerce;
 
-instance FromXML DescribeLoadBalancerPolicyTypesResponse where
-    parseXML = withElement "DescribeLoadBalancerPolicyTypesResult" $ \x -> DescribeLoadBalancerPolicyTypesResponse
-        <$> x .@? "PolicyTypeDescriptions" .!@ mempty
+-- | The response status code.
+dlbptrsStatus :: Lens' DescribeLoadBalancerPolicyTypesResponse Int
+dlbptrsStatus = lens _dlbptrsStatus (\ s a -> s{_dlbptrsStatus = a});
diff --git a/gen/Network/AWS/ELB/DescribeLoadBalancers.hs b/gen/Network/AWS/ELB/DescribeLoadBalancers.hs
--- a/gen/Network/AWS/ELB/DescribeLoadBalancers.hs
+++ b/gen/Network/AWS/ELB/DescribeLoadBalancers.hs
@@ -1,152 +1,167 @@
-{-# 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.ELB.DescribeLoadBalancers
--- 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.
-
--- | Describes the specified the load balancers. If no load balancers are
+-- Describes the specified the load balancers. If no load balancers are
 -- specified, the call describes all of your load balancers.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DescribeLoadBalancers.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DescribeLoadBalancers.html AWS API Reference> for DescribeLoadBalancers.
+--
+-- This operation returns paginated results.
 module Network.AWS.ELB.DescribeLoadBalancers
     (
-    -- * Request
-      DescribeLoadBalancers
-    -- ** Request constructor
-    , describeLoadBalancers
-    -- ** Request lenses
-    , dlbLoadBalancerNames
+    -- * Creating a Request
+      describeLoadBalancers
+    , DescribeLoadBalancers
+    -- * Request Lenses
     , dlbMarker
     , dlbPageSize
+    , dlbLoadBalancerNames
 
-    -- * Response
-    , DescribeLoadBalancersResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeLoadBalancersResponse
-    -- ** Response lenses
-    , dlbrLoadBalancerDescriptions
-    , dlbrNextMarker
+    , DescribeLoadBalancersResponse
+    -- * Response Lenses
+    , dlbrsLoadBalancerDescriptions
+    , dlbrsNextMarker
+    , dlbrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeLoadBalancers = DescribeLoadBalancers
-    { _dlbLoadBalancerNames :: List "member" Text
-    , _dlbMarker            :: Maybe Text
-    , _dlbPageSize          :: Maybe Nat
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeLoadBalancers' smart constructor.
+data DescribeLoadBalancers = DescribeLoadBalancers'
+    { _dlbMarker            :: !(Maybe Text)
+    , _dlbPageSize          :: !(Maybe Nat)
+    , _dlbLoadBalancerNames :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeLoadBalancers' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeLoadBalancers' with the minimum fields required to make a request.
 --
--- * 'dlbLoadBalancerNames' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dlbMarker' @::@ 'Maybe' 'Text'
+-- * 'dlbMarker'
 --
--- * 'dlbPageSize' @::@ 'Maybe' 'Natural'
+-- * 'dlbPageSize'
 --
-describeLoadBalancers :: DescribeLoadBalancers
-describeLoadBalancers = DescribeLoadBalancers
-    { _dlbLoadBalancerNames = mempty
-    , _dlbMarker            = Nothing
-    , _dlbPageSize          = Nothing
+-- * 'dlbLoadBalancerNames'
+describeLoadBalancers
+    :: DescribeLoadBalancers
+describeLoadBalancers =
+    DescribeLoadBalancers'
+    { _dlbMarker = Nothing
+    , _dlbPageSize = Nothing
+    , _dlbLoadBalancerNames = Nothing
     }
 
--- | The names of the load balancers.
-dlbLoadBalancerNames :: Lens' DescribeLoadBalancers [Text]
-dlbLoadBalancerNames =
-    lens _dlbLoadBalancerNames (\s a -> s { _dlbLoadBalancerNames = a })
-        . _List
-
 -- | The marker for the next set of results. (You received this marker from a
 -- previous call.)
 dlbMarker :: Lens' DescribeLoadBalancers (Maybe Text)
-dlbMarker = lens _dlbMarker (\s a -> s { _dlbMarker = a })
+dlbMarker = lens _dlbMarker (\ s a -> s{_dlbMarker = a});
 
--- | The maximum number of results to return with this call (a number from 1 to
--- 400). The default is 400.
+-- | The maximum number of results to return with this call (a number from 1
+-- to 400). The default is 400.
 dlbPageSize :: Lens' DescribeLoadBalancers (Maybe Natural)
-dlbPageSize = lens _dlbPageSize (\s a -> s { _dlbPageSize = a }) . mapping _Nat
+dlbPageSize = lens _dlbPageSize (\ s a -> s{_dlbPageSize = a}) . mapping _Nat;
 
-data DescribeLoadBalancersResponse = DescribeLoadBalancersResponse
-    { _dlbrLoadBalancerDescriptions :: List "member" LoadBalancerDescription
-    , _dlbrNextMarker               :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | The names of the load balancers.
+dlbLoadBalancerNames :: Lens' DescribeLoadBalancers [Text]
+dlbLoadBalancerNames = lens _dlbLoadBalancerNames (\ s a -> s{_dlbLoadBalancerNames = a}) . _Default . _Coerce;
 
--- | 'DescribeLoadBalancersResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dlbrLoadBalancerDescriptions' @::@ ['LoadBalancerDescription']
---
--- * 'dlbrNextMarker' @::@ 'Maybe' 'Text'
---
-describeLoadBalancersResponse :: DescribeLoadBalancersResponse
-describeLoadBalancersResponse = DescribeLoadBalancersResponse
-    { _dlbrLoadBalancerDescriptions = mempty
-    , _dlbrNextMarker               = Nothing
-    }
+instance AWSPager DescribeLoadBalancers where
+        page rq rs
+          | stop (rs ^. dlbrsNextMarker) = Nothing
+          | stop (rs ^. dlbrsLoadBalancerDescriptions) =
+            Nothing
+          | otherwise =
+            Just $ rq & dlbMarker .~ rs ^. dlbrsNextMarker
 
--- | Information about the load balancers.
-dlbrLoadBalancerDescriptions :: Lens' DescribeLoadBalancersResponse [LoadBalancerDescription]
-dlbrLoadBalancerDescriptions =
-    lens _dlbrLoadBalancerDescriptions
-        (\s a -> s { _dlbrLoadBalancerDescriptions = a })
-            . _List
+instance AWSRequest DescribeLoadBalancers where
+        type Sv DescribeLoadBalancers = ELB
+        type Rs DescribeLoadBalancers =
+             DescribeLoadBalancersResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeLoadBalancersResult"
+              (\ s h x ->
+                 DescribeLoadBalancersResponse' <$>
+                   (x .@? "LoadBalancerDescriptions" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (x .@? "NextMarker")
+                     <*> (pure (fromEnum s)))
 
--- | The marker to use when requesting the next set of results. If there are no
--- additional results, the string is empty.
-dlbrNextMarker :: Lens' DescribeLoadBalancersResponse (Maybe Text)
-dlbrNextMarker = lens _dlbrNextMarker (\s a -> s { _dlbrNextMarker = a })
+instance ToHeaders DescribeLoadBalancers where
+        toHeaders = const mempty
 
 instance ToPath DescribeLoadBalancers where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeLoadBalancers where
-    toQuery DescribeLoadBalancers{..} = mconcat
-        [ "LoadBalancerNames" =? _dlbLoadBalancerNames
-        , "Marker"            =? _dlbMarker
-        , "PageSize"          =? _dlbPageSize
-        ]
+        toQuery DescribeLoadBalancers'{..}
+          = mconcat
+              ["Action" =: ("DescribeLoadBalancers" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "Marker" =: _dlbMarker, "PageSize" =: _dlbPageSize,
+               "LoadBalancerNames" =:
+                 toQuery
+                   (toQueryList "member" <$> _dlbLoadBalancerNames)]
 
-instance ToHeaders DescribeLoadBalancers
+-- | /See:/ 'describeLoadBalancersResponse' smart constructor.
+data DescribeLoadBalancersResponse = DescribeLoadBalancersResponse'
+    { _dlbrsLoadBalancerDescriptions :: !(Maybe [LoadBalancerDescription])
+    , _dlbrsNextMarker               :: !(Maybe Text)
+    , _dlbrsStatus                   :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeLoadBalancers where
-    type Sv DescribeLoadBalancers = ELB
-    type Rs DescribeLoadBalancers = DescribeLoadBalancersResponse
+-- | Creates a value of 'DescribeLoadBalancersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlbrsLoadBalancerDescriptions'
+--
+-- * 'dlbrsNextMarker'
+--
+-- * 'dlbrsStatus'
+describeLoadBalancersResponse
+    :: Int -- ^ 'dlbrsStatus'
+    -> DescribeLoadBalancersResponse
+describeLoadBalancersResponse pStatus_ =
+    DescribeLoadBalancersResponse'
+    { _dlbrsLoadBalancerDescriptions = Nothing
+    , _dlbrsNextMarker = Nothing
+    , _dlbrsStatus = pStatus_
+    }
 
-    request  = post "DescribeLoadBalancers"
-    response = xmlResponse
+-- | Information about the load balancers.
+dlbrsLoadBalancerDescriptions :: Lens' DescribeLoadBalancersResponse [LoadBalancerDescription]
+dlbrsLoadBalancerDescriptions = lens _dlbrsLoadBalancerDescriptions (\ s a -> s{_dlbrsLoadBalancerDescriptions = a}) . _Default . _Coerce;
 
-instance FromXML DescribeLoadBalancersResponse where
-    parseXML = withElement "DescribeLoadBalancersResult" $ \x -> DescribeLoadBalancersResponse
-        <$> x .@? "LoadBalancerDescriptions" .!@ mempty
-        <*> x .@? "NextMarker"
+-- | The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+dlbrsNextMarker :: Lens' DescribeLoadBalancersResponse (Maybe Text)
+dlbrsNextMarker = lens _dlbrsNextMarker (\ s a -> s{_dlbrsNextMarker = a});
 
-instance AWSPager DescribeLoadBalancers where
-    page rq rs
-        | stop (rs ^. dlbrNextMarker) = Nothing
-        | otherwise = (\x -> rq & dlbMarker ?~ x)
-            <$> (rs ^. dlbrNextMarker)
+-- | The response status code.
+dlbrsStatus :: Lens' DescribeLoadBalancersResponse Int
+dlbrsStatus = lens _dlbrsStatus (\ s a -> s{_dlbrsStatus = a});
diff --git a/gen/Network/AWS/ELB/DescribeTags.hs b/gen/Network/AWS/ELB/DescribeTags.hs
--- a/gen/Network/AWS/ELB/DescribeTags.hs
+++ b/gen/Network/AWS/ELB/DescribeTags.hs
@@ -1,118 +1,122 @@
-{-# 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.ELB.DescribeTags
--- 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.
-
--- | Describes the tags associated with the specified load balancers.
+-- Describes the tags associated with the specified load balancers.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DescribeTags.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DescribeTags.html AWS API Reference> for DescribeTags.
 module Network.AWS.ELB.DescribeTags
     (
-    -- * Request
-      DescribeTags
-    -- ** Request constructor
-    , describeTags
-    -- ** Request lenses
+    -- * Creating a Request
+      describeTags
+    , DescribeTags
+    -- * Request Lenses
     , dtLoadBalancerNames
 
-    -- * Response
-    , DescribeTagsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeTagsResponse
-    -- ** Response lenses
-    , dtrTagDescriptions
+    , DescribeTagsResponse
+    -- * Response Lenses
+    , dtrsTagDescriptions
+    , dtrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DescribeTags = DescribeTags
-    { _dtLoadBalancerNames :: List1 "member" Text
-    } deriving (Eq, Ord, Read, Show, Semigroup)
+-- | /See:/ 'describeTags' smart constructor.
+newtype DescribeTags = DescribeTags'
+    { _dtLoadBalancerNames :: List1 Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeTags' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeTags' with the minimum fields required to make a request.
 --
--- * 'dtLoadBalancerNames' @::@ 'NonEmpty' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeTags :: NonEmpty Text -- ^ 'dtLoadBalancerNames'
-             -> DescribeTags
-describeTags p1 = DescribeTags
-    { _dtLoadBalancerNames = withIso _List1 (const id) p1
+-- * 'dtLoadBalancerNames'
+describeTags
+    :: NonEmpty Text -- ^ 'dtLoadBalancerNames'
+    -> DescribeTags
+describeTags pLoadBalancerNames_ =
+    DescribeTags'
+    { _dtLoadBalancerNames = _List1 # pLoadBalancerNames_
     }
 
 -- | The names of the load balancers.
 dtLoadBalancerNames :: Lens' DescribeTags (NonEmpty Text)
-dtLoadBalancerNames =
-    lens _dtLoadBalancerNames (\s a -> s { _dtLoadBalancerNames = a })
-        . _List1
+dtLoadBalancerNames = lens _dtLoadBalancerNames (\ s a -> s{_dtLoadBalancerNames = a}) . _List1;
 
-newtype DescribeTagsResponse = DescribeTagsResponse
-    { _dtrTagDescriptions :: List "member" TagDescription
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest DescribeTags where
+        type Sv DescribeTags = ELB
+        type Rs DescribeTags = DescribeTagsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeTagsResult"
+              (\ s h x ->
+                 DescribeTagsResponse' <$>
+                   (x .@? "TagDescriptions" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-instance GHC.Exts.IsList DescribeTagsResponse where
-    type Item DescribeTagsResponse = TagDescription
+instance ToHeaders DescribeTags where
+        toHeaders = const mempty
 
-    fromList = DescribeTagsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dtrTagDescriptions
+instance ToPath DescribeTags where
+        toPath = const "/"
 
--- | 'DescribeTagsResponse' constructor.
+instance ToQuery DescribeTags where
+        toQuery DescribeTags'{..}
+          = mconcat
+              ["Action" =: ("DescribeTags" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerNames" =:
+                 toQueryList "member" _dtLoadBalancerNames]
+
+-- | /See:/ 'describeTagsResponse' smart constructor.
+data DescribeTagsResponse = DescribeTagsResponse'
+    { _dtrsTagDescriptions :: !(Maybe [TagDescription])
+    , _dtrsStatus          :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeTagsResponse' 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:
 --
--- * 'dtrTagDescriptions' @::@ ['TagDescription']
+-- * 'dtrsTagDescriptions'
 --
-describeTagsResponse :: DescribeTagsResponse
-describeTagsResponse = DescribeTagsResponse
-    { _dtrTagDescriptions = mempty
+-- * 'dtrsStatus'
+describeTagsResponse
+    :: Int -- ^ 'dtrsStatus'
+    -> DescribeTagsResponse
+describeTagsResponse pStatus_ =
+    DescribeTagsResponse'
+    { _dtrsTagDescriptions = Nothing
+    , _dtrsStatus = pStatus_
     }
 
 -- | Information about the tags.
-dtrTagDescriptions :: Lens' DescribeTagsResponse [TagDescription]
-dtrTagDescriptions =
-    lens _dtrTagDescriptions (\s a -> s { _dtrTagDescriptions = a })
-        . _List
-
-instance ToPath DescribeTags where
-    toPath = const "/"
-
-instance ToQuery DescribeTags where
-    toQuery DescribeTags{..} = mconcat
-        [ "LoadBalancerNames" =? _dtLoadBalancerNames
-        ]
-
-instance ToHeaders DescribeTags
-
-instance AWSRequest DescribeTags where
-    type Sv DescribeTags = ELB
-    type Rs DescribeTags = DescribeTagsResponse
-
-    request  = post "DescribeTags"
-    response = xmlResponse
+dtrsTagDescriptions :: Lens' DescribeTagsResponse [TagDescription]
+dtrsTagDescriptions = lens _dtrsTagDescriptions (\ s a -> s{_dtrsTagDescriptions = a}) . _Default . _Coerce;
 
-instance FromXML DescribeTagsResponse where
-    parseXML = withElement "DescribeTagsResult" $ \x -> DescribeTagsResponse
-        <$> x .@? "TagDescriptions" .!@ mempty
+-- | The response status code.
+dtrsStatus :: Lens' DescribeTagsResponse Int
+dtrsStatus = lens _dtrsStatus (\ s a -> s{_dtrsStatus = a});
diff --git a/gen/Network/AWS/ELB/DetachLoadBalancerFromSubnets.hs b/gen/Network/AWS/ELB/DetachLoadBalancerFromSubnets.hs
--- a/gen/Network/AWS/ELB/DetachLoadBalancerFromSubnets.hs
+++ b/gen/Network/AWS/ELB/DetachLoadBalancerFromSubnets.hs
@@ -1,130 +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.ELB.DetachLoadBalancerFromSubnets
--- 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.
-
--- | Removes the specified subnets from the set of configured subnets for the load
--- balancer.
+-- Removes the specified subnets from the set of configured subnets for the
+-- load balancer.
 --
 -- After a subnet is removed, all EC2 instances registered with the load
--- balancer in the removed subnet go into the 'OutOfService' state. Then, the load
--- balancer balances the traffic among the remaining routable subnets.
+-- balancer in the removed subnet go into the 'OutOfService' state. Then,
+-- the load balancer balances the traffic among the remaining routable
+-- subnets.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DetachLoadBalancerFromSubnets.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DetachLoadBalancerFromSubnets.html AWS API Reference> for DetachLoadBalancerFromSubnets.
 module Network.AWS.ELB.DetachLoadBalancerFromSubnets
     (
-    -- * Request
-      DetachLoadBalancerFromSubnets
-    -- ** Request constructor
-    , detachLoadBalancerFromSubnets
-    -- ** Request lenses
+    -- * Creating a Request
+      detachLoadBalancerFromSubnets
+    , DetachLoadBalancerFromSubnets
+    -- * Request Lenses
     , dlbfsLoadBalancerName
     , dlbfsSubnets
 
-    -- * Response
-    , DetachLoadBalancerFromSubnetsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , detachLoadBalancerFromSubnetsResponse
-    -- ** Response lenses
-    , dlbfsrSubnets
+    , DetachLoadBalancerFromSubnetsResponse
+    -- * Response Lenses
+    , dlbfsrsSubnets
+    , dlbfsrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DetachLoadBalancerFromSubnets = DetachLoadBalancerFromSubnets
-    { _dlbfsLoadBalancerName :: Text
-    , _dlbfsSubnets          :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'detachLoadBalancerFromSubnets' smart constructor.
+data DetachLoadBalancerFromSubnets = DetachLoadBalancerFromSubnets'
+    { _dlbfsLoadBalancerName :: !Text
+    , _dlbfsSubnets          :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DetachLoadBalancerFromSubnets' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DetachLoadBalancerFromSubnets' with the minimum fields required to make a request.
 --
--- * 'dlbfsLoadBalancerName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dlbfsSubnets' @::@ ['Text']
+-- * 'dlbfsLoadBalancerName'
 --
-detachLoadBalancerFromSubnets :: Text -- ^ 'dlbfsLoadBalancerName'
-                              -> DetachLoadBalancerFromSubnets
-detachLoadBalancerFromSubnets p1 = DetachLoadBalancerFromSubnets
-    { _dlbfsLoadBalancerName = p1
-    , _dlbfsSubnets          = mempty
+-- * 'dlbfsSubnets'
+detachLoadBalancerFromSubnets
+    :: Text -- ^ 'dlbfsLoadBalancerName'
+    -> DetachLoadBalancerFromSubnets
+detachLoadBalancerFromSubnets pLoadBalancerName_ =
+    DetachLoadBalancerFromSubnets'
+    { _dlbfsLoadBalancerName = pLoadBalancerName_
+    , _dlbfsSubnets = mempty
     }
 
 -- | The name of the load balancer.
 dlbfsLoadBalancerName :: Lens' DetachLoadBalancerFromSubnets Text
-dlbfsLoadBalancerName =
-    lens _dlbfsLoadBalancerName (\s a -> s { _dlbfsLoadBalancerName = a })
+dlbfsLoadBalancerName = lens _dlbfsLoadBalancerName (\ s a -> s{_dlbfsLoadBalancerName = a});
 
 -- | The IDs of the subnets.
 dlbfsSubnets :: Lens' DetachLoadBalancerFromSubnets [Text]
-dlbfsSubnets = lens _dlbfsSubnets (\s a -> s { _dlbfsSubnets = a }) . _List
+dlbfsSubnets = lens _dlbfsSubnets (\ s a -> s{_dlbfsSubnets = a}) . _Coerce;
 
-newtype DetachLoadBalancerFromSubnetsResponse = DetachLoadBalancerFromSubnetsResponse
-    { _dlbfsrSubnets :: List "member" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
+instance AWSRequest DetachLoadBalancerFromSubnets
+         where
+        type Sv DetachLoadBalancerFromSubnets = ELB
+        type Rs DetachLoadBalancerFromSubnets =
+             DetachLoadBalancerFromSubnetsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DetachLoadBalancerFromSubnetsResult"
+              (\ s h x ->
+                 DetachLoadBalancerFromSubnetsResponse' <$>
+                   (x .@? "Subnets" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-instance GHC.Exts.IsList DetachLoadBalancerFromSubnetsResponse where
-    type Item DetachLoadBalancerFromSubnetsResponse = Text
+instance ToHeaders DetachLoadBalancerFromSubnets
+         where
+        toHeaders = const mempty
 
-    fromList = DetachLoadBalancerFromSubnetsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dlbfsrSubnets
+instance ToPath DetachLoadBalancerFromSubnets where
+        toPath = const "/"
 
--- | 'DetachLoadBalancerFromSubnetsResponse' constructor.
+instance ToQuery DetachLoadBalancerFromSubnets where
+        toQuery DetachLoadBalancerFromSubnets'{..}
+          = mconcat
+              ["Action" =:
+                 ("DetachLoadBalancerFromSubnets" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _dlbfsLoadBalancerName,
+               "Subnets" =: toQueryList "member" _dlbfsSubnets]
+
+-- | /See:/ 'detachLoadBalancerFromSubnetsResponse' smart constructor.
+data DetachLoadBalancerFromSubnetsResponse = DetachLoadBalancerFromSubnetsResponse'
+    { _dlbfsrsSubnets :: !(Maybe [Text])
+    , _dlbfsrsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DetachLoadBalancerFromSubnetsResponse' 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:
 --
--- * 'dlbfsrSubnets' @::@ ['Text']
+-- * 'dlbfsrsSubnets'
 --
-detachLoadBalancerFromSubnetsResponse :: DetachLoadBalancerFromSubnetsResponse
-detachLoadBalancerFromSubnetsResponse = DetachLoadBalancerFromSubnetsResponse
-    { _dlbfsrSubnets = mempty
+-- * 'dlbfsrsStatus'
+detachLoadBalancerFromSubnetsResponse
+    :: Int -- ^ 'dlbfsrsStatus'
+    -> DetachLoadBalancerFromSubnetsResponse
+detachLoadBalancerFromSubnetsResponse pStatus_ =
+    DetachLoadBalancerFromSubnetsResponse'
+    { _dlbfsrsSubnets = Nothing
+    , _dlbfsrsStatus = pStatus_
     }
 
 -- | The IDs of the remaining subnets for the load balancer.
-dlbfsrSubnets :: Lens' DetachLoadBalancerFromSubnetsResponse [Text]
-dlbfsrSubnets = lens _dlbfsrSubnets (\s a -> s { _dlbfsrSubnets = a }) . _List
-
-instance ToPath DetachLoadBalancerFromSubnets where
-    toPath = const "/"
-
-instance ToQuery DetachLoadBalancerFromSubnets where
-    toQuery DetachLoadBalancerFromSubnets{..} = mconcat
-        [ "LoadBalancerName" =? _dlbfsLoadBalancerName
-        , "Subnets"          =? _dlbfsSubnets
-        ]
-
-instance ToHeaders DetachLoadBalancerFromSubnets
-
-instance AWSRequest DetachLoadBalancerFromSubnets where
-    type Sv DetachLoadBalancerFromSubnets = ELB
-    type Rs DetachLoadBalancerFromSubnets = DetachLoadBalancerFromSubnetsResponse
-
-    request  = post "DetachLoadBalancerFromSubnets"
-    response = xmlResponse
+dlbfsrsSubnets :: Lens' DetachLoadBalancerFromSubnetsResponse [Text]
+dlbfsrsSubnets = lens _dlbfsrsSubnets (\ s a -> s{_dlbfsrsSubnets = a}) . _Default . _Coerce;
 
-instance FromXML DetachLoadBalancerFromSubnetsResponse where
-    parseXML = withElement "DetachLoadBalancerFromSubnetsResult" $ \x -> DetachLoadBalancerFromSubnetsResponse
-        <$> x .@? "Subnets" .!@ mempty
+-- | The response status code.
+dlbfsrsStatus :: Lens' DetachLoadBalancerFromSubnetsResponse Int
+dlbfsrsStatus = lens _dlbfsrsStatus (\ s a -> s{_dlbfsrsStatus = a});
diff --git a/gen/Network/AWS/ELB/DisableAvailabilityZonesForLoadBalancer.hs b/gen/Network/AWS/ELB/DisableAvailabilityZonesForLoadBalancer.hs
--- a/gen/Network/AWS/ELB/DisableAvailabilityZonesForLoadBalancer.hs
+++ b/gen/Network/AWS/ELB/DisableAvailabilityZonesForLoadBalancer.hs
@@ -1,138 +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.ELB.DisableAvailabilityZonesForLoadBalancer
--- 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.
-
--- | Removes the specified Availability Zones from the set of Availability Zones
--- for the specified load balancer.
+-- Removes the specified Availability Zones from the set of Availability
+-- Zones for the specified load balancer.
 --
--- There must be at least one Availability Zone registered with a load balancer
--- at all times. After an Availability Zone is removed, all instances registered
--- with the load balancer that are in the removed Availability Zone go into the 'OutOfService' state. Then, the load balancer attempts to equally balance the traffic among
--- its remaining Availability Zones.
+-- There must be at least one Availability Zone registered with a load
+-- balancer at all times. After an Availability Zone is removed, all
+-- instances registered with the load balancer that are in the removed
+-- Availability Zone go into the 'OutOfService' state. Then, the load
+-- balancer attempts to equally balance the traffic among its remaining
+-- Availability Zones.
 --
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_ShrinkLBApp04.html Disable an Availability Zone from a Load-BalancedApplication> in the /Elastic Load Balancing Developer Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_ShrinkLBApp04.html Disable an Availability Zone from a Load-Balanced Application>
+-- in the /Elastic Load Balancing Developer Guide/.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DisableAvailabilityZonesForLoadBalancer.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DisableAvailabilityZonesForLoadBalancer.html AWS API Reference> for DisableAvailabilityZonesForLoadBalancer.
 module Network.AWS.ELB.DisableAvailabilityZonesForLoadBalancer
     (
-    -- * Request
-      DisableAvailabilityZonesForLoadBalancer
-    -- ** Request constructor
-    , disableAvailabilityZonesForLoadBalancer
-    -- ** Request lenses
-    , dazflbAvailabilityZones
+    -- * Creating a Request
+      disableAvailabilityZonesForLoadBalancer
+    , DisableAvailabilityZonesForLoadBalancer
+    -- * Request Lenses
     , dazflbLoadBalancerName
+    , dazflbAvailabilityZones
 
-    -- * Response
-    , DisableAvailabilityZonesForLoadBalancerResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , disableAvailabilityZonesForLoadBalancerResponse
-    -- ** Response lenses
-    , dazflbrAvailabilityZones
+    , DisableAvailabilityZonesForLoadBalancerResponse
+    -- * Response Lenses
+    , dazflbrsAvailabilityZones
+    , dazflbrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DisableAvailabilityZonesForLoadBalancer = DisableAvailabilityZonesForLoadBalancer
-    { _dazflbAvailabilityZones :: List "member" Text
-    , _dazflbLoadBalancerName  :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'disableAvailabilityZonesForLoadBalancer' smart constructor.
+data DisableAvailabilityZonesForLoadBalancer = DisableAvailabilityZonesForLoadBalancer'
+    { _dazflbLoadBalancerName  :: !Text
+    , _dazflbAvailabilityZones :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DisableAvailabilityZonesForLoadBalancer' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DisableAvailabilityZonesForLoadBalancer' with the minimum fields required to make a request.
 --
--- * 'dazflbAvailabilityZones' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dazflbLoadBalancerName' @::@ 'Text'
+-- * 'dazflbLoadBalancerName'
 --
-disableAvailabilityZonesForLoadBalancer :: Text -- ^ 'dazflbLoadBalancerName'
-                                        -> DisableAvailabilityZonesForLoadBalancer
-disableAvailabilityZonesForLoadBalancer p1 = DisableAvailabilityZonesForLoadBalancer
-    { _dazflbLoadBalancerName  = p1
+-- * 'dazflbAvailabilityZones'
+disableAvailabilityZonesForLoadBalancer
+    :: Text -- ^ 'dazflbLoadBalancerName'
+    -> DisableAvailabilityZonesForLoadBalancer
+disableAvailabilityZonesForLoadBalancer pLoadBalancerName_ =
+    DisableAvailabilityZonesForLoadBalancer'
+    { _dazflbLoadBalancerName = pLoadBalancerName_
     , _dazflbAvailabilityZones = mempty
     }
 
+-- | The name of the load balancer.
+dazflbLoadBalancerName :: Lens' DisableAvailabilityZonesForLoadBalancer Text
+dazflbLoadBalancerName = lens _dazflbLoadBalancerName (\ s a -> s{_dazflbLoadBalancerName = a});
+
 -- | The Availability Zones.
 dazflbAvailabilityZones :: Lens' DisableAvailabilityZonesForLoadBalancer [Text]
-dazflbAvailabilityZones =
-    lens _dazflbAvailabilityZones (\s a -> s { _dazflbAvailabilityZones = a })
-        . _List
+dazflbAvailabilityZones = lens _dazflbAvailabilityZones (\ s a -> s{_dazflbAvailabilityZones = a}) . _Coerce;
 
--- | The name of the load balancer.
-dazflbLoadBalancerName :: Lens' DisableAvailabilityZonesForLoadBalancer Text
-dazflbLoadBalancerName =
-    lens _dazflbLoadBalancerName (\s a -> s { _dazflbLoadBalancerName = a })
+instance AWSRequest
+         DisableAvailabilityZonesForLoadBalancer where
+        type Sv DisableAvailabilityZonesForLoadBalancer = ELB
+        type Rs DisableAvailabilityZonesForLoadBalancer =
+             DisableAvailabilityZonesForLoadBalancerResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DisableAvailabilityZonesForLoadBalancerResult"
+              (\ s h x ->
+                 DisableAvailabilityZonesForLoadBalancerResponse' <$>
+                   (x .@? "AvailabilityZones" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-newtype DisableAvailabilityZonesForLoadBalancerResponse = DisableAvailabilityZonesForLoadBalancerResponse
-    { _dazflbrAvailabilityZones :: List "member" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
+instance ToHeaders
+         DisableAvailabilityZonesForLoadBalancer where
+        toHeaders = const mempty
 
-instance GHC.Exts.IsList DisableAvailabilityZonesForLoadBalancerResponse where
-    type Item DisableAvailabilityZonesForLoadBalancerResponse = Text
+instance ToPath
+         DisableAvailabilityZonesForLoadBalancer where
+        toPath = const "/"
 
-    fromList = DisableAvailabilityZonesForLoadBalancerResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dazflbrAvailabilityZones
+instance ToQuery
+         DisableAvailabilityZonesForLoadBalancer where
+        toQuery DisableAvailabilityZonesForLoadBalancer'{..}
+          = mconcat
+              ["Action" =:
+                 ("DisableAvailabilityZonesForLoadBalancer" ::
+                    ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _dazflbLoadBalancerName,
+               "AvailabilityZones" =:
+                 toQueryList "member" _dazflbAvailabilityZones]
 
--- | 'DisableAvailabilityZonesForLoadBalancerResponse' constructor.
+-- | /See:/ 'disableAvailabilityZonesForLoadBalancerResponse' smart constructor.
+data DisableAvailabilityZonesForLoadBalancerResponse = DisableAvailabilityZonesForLoadBalancerResponse'
+    { _dazflbrsAvailabilityZones :: !(Maybe [Text])
+    , _dazflbrsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisableAvailabilityZonesForLoadBalancerResponse' 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:
 --
--- * 'dazflbrAvailabilityZones' @::@ ['Text']
+-- * 'dazflbrsAvailabilityZones'
 --
-disableAvailabilityZonesForLoadBalancerResponse :: DisableAvailabilityZonesForLoadBalancerResponse
-disableAvailabilityZonesForLoadBalancerResponse = DisableAvailabilityZonesForLoadBalancerResponse
-    { _dazflbrAvailabilityZones = mempty
+-- * 'dazflbrsStatus'
+disableAvailabilityZonesForLoadBalancerResponse
+    :: Int -- ^ 'dazflbrsStatus'
+    -> DisableAvailabilityZonesForLoadBalancerResponse
+disableAvailabilityZonesForLoadBalancerResponse pStatus_ =
+    DisableAvailabilityZonesForLoadBalancerResponse'
+    { _dazflbrsAvailabilityZones = Nothing
+    , _dazflbrsStatus = pStatus_
     }
 
 -- | The remaining Availability Zones for the load balancer.
-dazflbrAvailabilityZones :: Lens' DisableAvailabilityZonesForLoadBalancerResponse [Text]
-dazflbrAvailabilityZones =
-    lens _dazflbrAvailabilityZones
-        (\s a -> s { _dazflbrAvailabilityZones = a })
-            . _List
-
-instance ToPath DisableAvailabilityZonesForLoadBalancer where
-    toPath = const "/"
-
-instance ToQuery DisableAvailabilityZonesForLoadBalancer where
-    toQuery DisableAvailabilityZonesForLoadBalancer{..} = mconcat
-        [ "AvailabilityZones" =? _dazflbAvailabilityZones
-        , "LoadBalancerName"  =? _dazflbLoadBalancerName
-        ]
-
-instance ToHeaders DisableAvailabilityZonesForLoadBalancer
-
-instance AWSRequest DisableAvailabilityZonesForLoadBalancer where
-    type Sv DisableAvailabilityZonesForLoadBalancer = ELB
-    type Rs DisableAvailabilityZonesForLoadBalancer = DisableAvailabilityZonesForLoadBalancerResponse
-
-    request  = post "DisableAvailabilityZonesForLoadBalancer"
-    response = xmlResponse
+dazflbrsAvailabilityZones :: Lens' DisableAvailabilityZonesForLoadBalancerResponse [Text]
+dazflbrsAvailabilityZones = lens _dazflbrsAvailabilityZones (\ s a -> s{_dazflbrsAvailabilityZones = a}) . _Default . _Coerce;
 
-instance FromXML DisableAvailabilityZonesForLoadBalancerResponse where
-    parseXML = withElement "DisableAvailabilityZonesForLoadBalancerResult" $ \x -> DisableAvailabilityZonesForLoadBalancerResponse
-        <$> x .@? "AvailabilityZones" .!@ mempty
+-- | The response status code.
+dazflbrsStatus :: Lens' DisableAvailabilityZonesForLoadBalancerResponse Int
+dazflbrsStatus = lens _dazflbrsStatus (\ s a -> s{_dazflbrsStatus = a});
diff --git a/gen/Network/AWS/ELB/EnableAvailabilityZonesForLoadBalancer.hs b/gen/Network/AWS/ELB/EnableAvailabilityZonesForLoadBalancer.hs
--- a/gen/Network/AWS/ELB/EnableAvailabilityZonesForLoadBalancer.hs
+++ b/gen/Network/AWS/ELB/EnableAvailabilityZonesForLoadBalancer.hs
@@ -1,136 +1,149 @@
-{-# 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.ELB.EnableAvailabilityZonesForLoadBalancer
--- 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.
-
--- | Adds the specified Availability Zones to the set of Availability Zones for
--- the specified load balancer.
+-- Adds the specified Availability Zones to the set of Availability Zones
+-- for the specified load balancer.
 --
 -- The load balancer evenly distributes requests across all its registered
 -- Availability Zones that contain instances.
 --
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_AddLBAvailabilityZone.html Add Availability Zone> in the /Elastic LoadBalancing Developer Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_AddLBAvailabilityZone.html Add Availability Zone>
+-- in the /Elastic Load Balancing Developer Guide/.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_EnableAvailabilityZonesForLoadBalancer.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_EnableAvailabilityZonesForLoadBalancer.html AWS API Reference> for EnableAvailabilityZonesForLoadBalancer.
 module Network.AWS.ELB.EnableAvailabilityZonesForLoadBalancer
     (
-    -- * Request
-      EnableAvailabilityZonesForLoadBalancer
-    -- ** Request constructor
-    , enableAvailabilityZonesForLoadBalancer
-    -- ** Request lenses
-    , eazflbAvailabilityZones
+    -- * Creating a Request
+      enableAvailabilityZonesForLoadBalancer
+    , EnableAvailabilityZonesForLoadBalancer
+    -- * Request Lenses
     , eazflbLoadBalancerName
+    , eazflbAvailabilityZones
 
-    -- * Response
-    , EnableAvailabilityZonesForLoadBalancerResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , enableAvailabilityZonesForLoadBalancerResponse
-    -- ** Response lenses
-    , eazflbrAvailabilityZones
+    , EnableAvailabilityZonesForLoadBalancerResponse
+    -- * Response Lenses
+    , eazflbrsAvailabilityZones
+    , eazflbrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data EnableAvailabilityZonesForLoadBalancer = EnableAvailabilityZonesForLoadBalancer
-    { _eazflbAvailabilityZones :: List "member" Text
-    , _eazflbLoadBalancerName  :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'enableAvailabilityZonesForLoadBalancer' smart constructor.
+data EnableAvailabilityZonesForLoadBalancer = EnableAvailabilityZonesForLoadBalancer'
+    { _eazflbLoadBalancerName  :: !Text
+    , _eazflbAvailabilityZones :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'EnableAvailabilityZonesForLoadBalancer' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'EnableAvailabilityZonesForLoadBalancer' with the minimum fields required to make a request.
 --
--- * 'eazflbAvailabilityZones' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'eazflbLoadBalancerName' @::@ 'Text'
+-- * 'eazflbLoadBalancerName'
 --
-enableAvailabilityZonesForLoadBalancer :: Text -- ^ 'eazflbLoadBalancerName'
-                                       -> EnableAvailabilityZonesForLoadBalancer
-enableAvailabilityZonesForLoadBalancer p1 = EnableAvailabilityZonesForLoadBalancer
-    { _eazflbLoadBalancerName  = p1
+-- * 'eazflbAvailabilityZones'
+enableAvailabilityZonesForLoadBalancer
+    :: Text -- ^ 'eazflbLoadBalancerName'
+    -> EnableAvailabilityZonesForLoadBalancer
+enableAvailabilityZonesForLoadBalancer pLoadBalancerName_ =
+    EnableAvailabilityZonesForLoadBalancer'
+    { _eazflbLoadBalancerName = pLoadBalancerName_
     , _eazflbAvailabilityZones = mempty
     }
 
--- | The Availability Zones. These must be in the same region as the load balancer.
-eazflbAvailabilityZones :: Lens' EnableAvailabilityZonesForLoadBalancer [Text]
-eazflbAvailabilityZones =
-    lens _eazflbAvailabilityZones (\s a -> s { _eazflbAvailabilityZones = a })
-        . _List
-
 -- | The name of the load balancer.
 eazflbLoadBalancerName :: Lens' EnableAvailabilityZonesForLoadBalancer Text
-eazflbLoadBalancerName =
-    lens _eazflbLoadBalancerName (\s a -> s { _eazflbLoadBalancerName = a })
+eazflbLoadBalancerName = lens _eazflbLoadBalancerName (\ s a -> s{_eazflbLoadBalancerName = a});
 
-newtype EnableAvailabilityZonesForLoadBalancerResponse = EnableAvailabilityZonesForLoadBalancerResponse
-    { _eazflbrAvailabilityZones :: List "member" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
+-- | The Availability Zones. These must be in the same region as the load
+-- balancer.
+eazflbAvailabilityZones :: Lens' EnableAvailabilityZonesForLoadBalancer [Text]
+eazflbAvailabilityZones = lens _eazflbAvailabilityZones (\ s a -> s{_eazflbAvailabilityZones = a}) . _Coerce;
 
-instance GHC.Exts.IsList EnableAvailabilityZonesForLoadBalancerResponse where
-    type Item EnableAvailabilityZonesForLoadBalancerResponse = Text
+instance AWSRequest
+         EnableAvailabilityZonesForLoadBalancer where
+        type Sv EnableAvailabilityZonesForLoadBalancer = ELB
+        type Rs EnableAvailabilityZonesForLoadBalancer =
+             EnableAvailabilityZonesForLoadBalancerResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "EnableAvailabilityZonesForLoadBalancerResult"
+              (\ s h x ->
+                 EnableAvailabilityZonesForLoadBalancerResponse' <$>
+                   (x .@? "AvailabilityZones" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-    fromList = EnableAvailabilityZonesForLoadBalancerResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _eazflbrAvailabilityZones
+instance ToHeaders
+         EnableAvailabilityZonesForLoadBalancer where
+        toHeaders = const mempty
 
--- | 'EnableAvailabilityZonesForLoadBalancerResponse' constructor.
+instance ToPath
+         EnableAvailabilityZonesForLoadBalancer where
+        toPath = const "/"
+
+instance ToQuery
+         EnableAvailabilityZonesForLoadBalancer where
+        toQuery EnableAvailabilityZonesForLoadBalancer'{..}
+          = mconcat
+              ["Action" =:
+                 ("EnableAvailabilityZonesForLoadBalancer" ::
+                    ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _eazflbLoadBalancerName,
+               "AvailabilityZones" =:
+                 toQueryList "member" _eazflbAvailabilityZones]
+
+-- | /See:/ 'enableAvailabilityZonesForLoadBalancerResponse' smart constructor.
+data EnableAvailabilityZonesForLoadBalancerResponse = EnableAvailabilityZonesForLoadBalancerResponse'
+    { _eazflbrsAvailabilityZones :: !(Maybe [Text])
+    , _eazflbrsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EnableAvailabilityZonesForLoadBalancerResponse' 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:
 --
--- * 'eazflbrAvailabilityZones' @::@ ['Text']
+-- * 'eazflbrsAvailabilityZones'
 --
-enableAvailabilityZonesForLoadBalancerResponse :: EnableAvailabilityZonesForLoadBalancerResponse
-enableAvailabilityZonesForLoadBalancerResponse = EnableAvailabilityZonesForLoadBalancerResponse
-    { _eazflbrAvailabilityZones = mempty
+-- * 'eazflbrsStatus'
+enableAvailabilityZonesForLoadBalancerResponse
+    :: Int -- ^ 'eazflbrsStatus'
+    -> EnableAvailabilityZonesForLoadBalancerResponse
+enableAvailabilityZonesForLoadBalancerResponse pStatus_ =
+    EnableAvailabilityZonesForLoadBalancerResponse'
+    { _eazflbrsAvailabilityZones = Nothing
+    , _eazflbrsStatus = pStatus_
     }
 
 -- | The updated list of Availability Zones for the load balancer.
-eazflbrAvailabilityZones :: Lens' EnableAvailabilityZonesForLoadBalancerResponse [Text]
-eazflbrAvailabilityZones =
-    lens _eazflbrAvailabilityZones
-        (\s a -> s { _eazflbrAvailabilityZones = a })
-            . _List
-
-instance ToPath EnableAvailabilityZonesForLoadBalancer where
-    toPath = const "/"
-
-instance ToQuery EnableAvailabilityZonesForLoadBalancer where
-    toQuery EnableAvailabilityZonesForLoadBalancer{..} = mconcat
-        [ "AvailabilityZones" =? _eazflbAvailabilityZones
-        , "LoadBalancerName"  =? _eazflbLoadBalancerName
-        ]
-
-instance ToHeaders EnableAvailabilityZonesForLoadBalancer
-
-instance AWSRequest EnableAvailabilityZonesForLoadBalancer where
-    type Sv EnableAvailabilityZonesForLoadBalancer = ELB
-    type Rs EnableAvailabilityZonesForLoadBalancer = EnableAvailabilityZonesForLoadBalancerResponse
-
-    request  = post "EnableAvailabilityZonesForLoadBalancer"
-    response = xmlResponse
+eazflbrsAvailabilityZones :: Lens' EnableAvailabilityZonesForLoadBalancerResponse [Text]
+eazflbrsAvailabilityZones = lens _eazflbrsAvailabilityZones (\ s a -> s{_eazflbrsAvailabilityZones = a}) . _Default . _Coerce;
 
-instance FromXML EnableAvailabilityZonesForLoadBalancerResponse where
-    parseXML = withElement "EnableAvailabilityZonesForLoadBalancerResult" $ \x -> EnableAvailabilityZonesForLoadBalancerResponse
-        <$> x .@? "AvailabilityZones" .!@ mempty
+-- | The response status code.
+eazflbrsStatus :: Lens' EnableAvailabilityZonesForLoadBalancerResponse Int
+eazflbrsStatus = lens _eazflbrsStatus (\ s a -> s{_eazflbrsStatus = a});
diff --git a/gen/Network/AWS/ELB/ModifyLoadBalancerAttributes.hs b/gen/Network/AWS/ELB/ModifyLoadBalancerAttributes.hs
--- a/gen/Network/AWS/ELB/ModifyLoadBalancerAttributes.hs
+++ b/gen/Network/AWS/ELB/ModifyLoadBalancerAttributes.hs
@@ -1,142 +1,160 @@
-{-# 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.ELB.ModifyLoadBalancerAttributes
--- 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.
-
--- | Modifies the attributes of the specified load balancer.
+-- Modifies the attributes of the specified load balancer.
 --
--- You can modify the load balancer attributes, such as 'AccessLogs', 'ConnectionDraining', and 'CrossZoneLoadBalancing' by either enabling or disabling them. Or, you
--- can modify the load balancer attribute 'ConnectionSettings' by specifying an
--- idle connection timeout value for your load balancer.
+-- You can modify the load balancer attributes, such as 'AccessLogs',
+-- 'ConnectionDraining', and 'CrossZoneLoadBalancing' by either enabling or
+-- disabling them. Or, you can modify the load balancer attribute
+-- 'ConnectionSettings' by specifying an idle connection timeout value for
+-- your load balancer.
 --
--- For more information, see the following in the /Elastic Load BalancingDeveloper Guide/:
+-- For more information, see the following in the /Elastic Load Balancing
+-- Developer Guide/:
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#request-routing Cross-Zone Load Balancing> <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#conn-drain Connection Draining> <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/access-log-collection.html Access Logs> <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#idle-timeout Idle ConnectionTimeout>
+-- -   <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#request-routing Cross-Zone Load Balancing>
+-- -   <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#conn-drain Connection Draining>
+-- -   <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/access-log-collection.html Access Logs>
+-- -   <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#idle-timeout Idle Connection Timeout>
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_ModifyLoadBalancerAttributes.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_ModifyLoadBalancerAttributes.html AWS API Reference> for ModifyLoadBalancerAttributes.
 module Network.AWS.ELB.ModifyLoadBalancerAttributes
     (
-    -- * Request
-      ModifyLoadBalancerAttributes
-    -- ** Request constructor
-    , modifyLoadBalancerAttributes
-    -- ** Request lenses
-    , mlbaLoadBalancerAttributes
+    -- * Creating a Request
+      modifyLoadBalancerAttributes
+    , ModifyLoadBalancerAttributes
+    -- * Request Lenses
     , mlbaLoadBalancerName
+    , mlbaLoadBalancerAttributes
 
-    -- * Response
-    , ModifyLoadBalancerAttributesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , modifyLoadBalancerAttributesResponse
-    -- ** Response lenses
-    , mlbarLoadBalancerAttributes
-    , mlbarLoadBalancerName
+    , ModifyLoadBalancerAttributesResponse
+    -- * Response Lenses
+    , mlbarsLoadBalancerAttributes
+    , mlbarsLoadBalancerName
+    , mlbarsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data ModifyLoadBalancerAttributes = ModifyLoadBalancerAttributes
-    { _mlbaLoadBalancerAttributes :: LoadBalancerAttributes
-    , _mlbaLoadBalancerName       :: Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'modifyLoadBalancerAttributes' smart constructor.
+data ModifyLoadBalancerAttributes = ModifyLoadBalancerAttributes'
+    { _mlbaLoadBalancerName       :: !Text
+    , _mlbaLoadBalancerAttributes :: !LoadBalancerAttributes
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ModifyLoadBalancerAttributes' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'ModifyLoadBalancerAttributes' with the minimum fields required to make a request.
 --
--- * 'mlbaLoadBalancerAttributes' @::@ 'LoadBalancerAttributes'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mlbaLoadBalancerName' @::@ 'Text'
+-- * 'mlbaLoadBalancerName'
 --
-modifyLoadBalancerAttributes :: Text -- ^ 'mlbaLoadBalancerName'
-                             -> LoadBalancerAttributes -- ^ 'mlbaLoadBalancerAttributes'
-                             -> ModifyLoadBalancerAttributes
-modifyLoadBalancerAttributes p1 p2 = ModifyLoadBalancerAttributes
-    { _mlbaLoadBalancerName       = p1
-    , _mlbaLoadBalancerAttributes = p2
+-- * 'mlbaLoadBalancerAttributes'
+modifyLoadBalancerAttributes
+    :: Text -- ^ 'mlbaLoadBalancerName'
+    -> LoadBalancerAttributes -- ^ 'mlbaLoadBalancerAttributes'
+    -> ModifyLoadBalancerAttributes
+modifyLoadBalancerAttributes pLoadBalancerName_ pLoadBalancerAttributes_ =
+    ModifyLoadBalancerAttributes'
+    { _mlbaLoadBalancerName = pLoadBalancerName_
+    , _mlbaLoadBalancerAttributes = pLoadBalancerAttributes_
     }
 
+-- | The name of the load balancer.
+mlbaLoadBalancerName :: Lens' ModifyLoadBalancerAttributes Text
+mlbaLoadBalancerName = lens _mlbaLoadBalancerName (\ s a -> s{_mlbaLoadBalancerName = a});
+
 -- | The attributes of the load balancer.
 mlbaLoadBalancerAttributes :: Lens' ModifyLoadBalancerAttributes LoadBalancerAttributes
-mlbaLoadBalancerAttributes =
-    lens _mlbaLoadBalancerAttributes
-        (\s a -> s { _mlbaLoadBalancerAttributes = a })
+mlbaLoadBalancerAttributes = lens _mlbaLoadBalancerAttributes (\ s a -> s{_mlbaLoadBalancerAttributes = a});
 
--- | The name of the load balancer.
-mlbaLoadBalancerName :: Lens' ModifyLoadBalancerAttributes Text
-mlbaLoadBalancerName =
-    lens _mlbaLoadBalancerName (\s a -> s { _mlbaLoadBalancerName = a })
+instance AWSRequest ModifyLoadBalancerAttributes
+         where
+        type Sv ModifyLoadBalancerAttributes = ELB
+        type Rs ModifyLoadBalancerAttributes =
+             ModifyLoadBalancerAttributesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "ModifyLoadBalancerAttributesResult"
+              (\ s h x ->
+                 ModifyLoadBalancerAttributesResponse' <$>
+                   (x .@? "LoadBalancerAttributes") <*>
+                     (x .@? "LoadBalancerName")
+                     <*> (pure (fromEnum s)))
 
-data ModifyLoadBalancerAttributesResponse = ModifyLoadBalancerAttributesResponse
-    { _mlbarLoadBalancerAttributes :: Maybe LoadBalancerAttributes
-    , _mlbarLoadBalancerName       :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance ToHeaders ModifyLoadBalancerAttributes where
+        toHeaders = const mempty
 
--- | 'ModifyLoadBalancerAttributesResponse' constructor.
+instance ToPath ModifyLoadBalancerAttributes where
+        toPath = const "/"
+
+instance ToQuery ModifyLoadBalancerAttributes where
+        toQuery ModifyLoadBalancerAttributes'{..}
+          = mconcat
+              ["Action" =:
+                 ("ModifyLoadBalancerAttributes" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _mlbaLoadBalancerName,
+               "LoadBalancerAttributes" =:
+                 _mlbaLoadBalancerAttributes]
+
+-- | /See:/ 'modifyLoadBalancerAttributesResponse' smart constructor.
+data ModifyLoadBalancerAttributesResponse = ModifyLoadBalancerAttributesResponse'
+    { _mlbarsLoadBalancerAttributes :: !(Maybe LoadBalancerAttributes)
+    , _mlbarsLoadBalancerName       :: !(Maybe Text)
+    , _mlbarsStatus                 :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyLoadBalancerAttributesResponse' 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:
 --
--- * 'mlbarLoadBalancerAttributes' @::@ 'Maybe' 'LoadBalancerAttributes'
+-- * 'mlbarsLoadBalancerAttributes'
 --
--- * 'mlbarLoadBalancerName' @::@ 'Maybe' 'Text'
+-- * 'mlbarsLoadBalancerName'
 --
-modifyLoadBalancerAttributesResponse :: ModifyLoadBalancerAttributesResponse
-modifyLoadBalancerAttributesResponse = ModifyLoadBalancerAttributesResponse
-    { _mlbarLoadBalancerName       = Nothing
-    , _mlbarLoadBalancerAttributes = Nothing
+-- * 'mlbarsStatus'
+modifyLoadBalancerAttributesResponse
+    :: Int -- ^ 'mlbarsStatus'
+    -> ModifyLoadBalancerAttributesResponse
+modifyLoadBalancerAttributesResponse pStatus_ =
+    ModifyLoadBalancerAttributesResponse'
+    { _mlbarsLoadBalancerAttributes = Nothing
+    , _mlbarsLoadBalancerName = Nothing
+    , _mlbarsStatus = pStatus_
     }
 
-mlbarLoadBalancerAttributes :: Lens' ModifyLoadBalancerAttributesResponse (Maybe LoadBalancerAttributes)
-mlbarLoadBalancerAttributes =
-    lens _mlbarLoadBalancerAttributes
-        (\s a -> s { _mlbarLoadBalancerAttributes = a })
+-- | Undocumented member.
+mlbarsLoadBalancerAttributes :: Lens' ModifyLoadBalancerAttributesResponse (Maybe LoadBalancerAttributes)
+mlbarsLoadBalancerAttributes = lens _mlbarsLoadBalancerAttributes (\ s a -> s{_mlbarsLoadBalancerAttributes = a});
 
 -- | The name of the load balancer.
-mlbarLoadBalancerName :: Lens' ModifyLoadBalancerAttributesResponse (Maybe Text)
-mlbarLoadBalancerName =
-    lens _mlbarLoadBalancerName (\s a -> s { _mlbarLoadBalancerName = a })
-
-instance ToPath ModifyLoadBalancerAttributes where
-    toPath = const "/"
-
-instance ToQuery ModifyLoadBalancerAttributes where
-    toQuery ModifyLoadBalancerAttributes{..} = mconcat
-        [ "LoadBalancerAttributes" =? _mlbaLoadBalancerAttributes
-        , "LoadBalancerName"       =? _mlbaLoadBalancerName
-        ]
-
-instance ToHeaders ModifyLoadBalancerAttributes
-
-instance AWSRequest ModifyLoadBalancerAttributes where
-    type Sv ModifyLoadBalancerAttributes = ELB
-    type Rs ModifyLoadBalancerAttributes = ModifyLoadBalancerAttributesResponse
-
-    request  = post "ModifyLoadBalancerAttributes"
-    response = xmlResponse
+mlbarsLoadBalancerName :: Lens' ModifyLoadBalancerAttributesResponse (Maybe Text)
+mlbarsLoadBalancerName = lens _mlbarsLoadBalancerName (\ s a -> s{_mlbarsLoadBalancerName = a});
 
-instance FromXML ModifyLoadBalancerAttributesResponse where
-    parseXML = withElement "ModifyLoadBalancerAttributesResult" $ \x -> ModifyLoadBalancerAttributesResponse
-        <$> x .@? "LoadBalancerAttributes"
-        <*> x .@? "LoadBalancerName"
+-- | The response status code.
+mlbarsStatus :: Lens' ModifyLoadBalancerAttributesResponse Int
+mlbarsStatus = lens _mlbarsStatus (\ s a -> s{_mlbarsStatus = a});
diff --git a/gen/Network/AWS/ELB/RegisterInstancesWithLoadBalancer.hs b/gen/Network/AWS/ELB/RegisterInstancesWithLoadBalancer.hs
--- a/gen/Network/AWS/ELB/RegisterInstancesWithLoadBalancer.hs
+++ b/gen/Network/AWS/ELB/RegisterInstancesWithLoadBalancer.hs
@@ -1,150 +1,168 @@
-{-# 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.ELB.RegisterInstancesWithLoadBalancer
--- 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.
-
--- | Adds the specified instances to the specified load balancer.
+-- Adds the specified instances to the specified load balancer.
 --
 -- The instance must be a running instance in the same network as the load
--- balancer (EC2-Classic or the same VPC). If you have EC2-Classic instances and
--- a load balancer in a VPC with ClassicLink enabled, you can link the
--- EC2-Classic instances to that VPC and then register the linked EC2-Classic
--- instances with the load balancer in the VPC.
+-- balancer (EC2-Classic or the same VPC). If you have EC2-Classic
+-- instances and a load balancer in a VPC with ClassicLink enabled, you can
+-- link the EC2-Classic instances to that VPC and then register the linked
+-- EC2-Classic instances with the load balancer in the VPC.
 --
--- Note that 'RegisterInstanceWithLoadBalancer' completes when the request has
--- been registered. Instance registration happens shortly afterwards. To check
--- the state of the registered instances, use 'DescribeLoadBalancers' or 'DescribeInstanceHealth'.
+-- Note that 'RegisterInstanceWithLoadBalancer' completes when the request
+-- has been registered. Instance registration happens shortly afterwards.
+-- To check the state of the registered instances, use
+-- DescribeLoadBalancers or DescribeInstanceHealth.
 --
--- After the instance is registered, it starts receiving traffic and requests
--- from the load balancer. Any instance that is not in one of the Availability
--- Zones registered for the load balancer is moved to the 'OutOfService' state. If
--- an Availability Zone is added to the load balancer later, any instances
--- registered with the load balancer move to the 'InService' state.
+-- After the instance is registered, it starts receiving traffic and
+-- requests from the load balancer. Any instance that is not in one of the
+-- Availability Zones registered for the load balancer is moved to the
+-- 'OutOfService' state. If an Availability Zone is added to the load
+-- balancer later, any instances registered with the load balancer move to
+-- the 'InService' state.
 --
--- If you stop an instance registered with a load balancer and then start it,
--- the IP addresses associated with the instance changes. Elastic Load Balancing
--- cannot recognize the new IP address, which prevents it from routing traffic
--- to the instances. We recommend that you use the following sequence: stop the
--- instance, deregister the instance, start the instance, and then register the
--- instance. To deregister instances from a load balancer, use 'DeregisterInstancesFromLoadBalancer'.
+-- If you stop an instance registered with a load balancer and then start
+-- it, the IP addresses associated with the instance changes. Elastic Load
+-- Balancing cannot recognize the new IP address, which prevents it from
+-- routing traffic to the instances. We recommend that you use the
+-- following sequence: stop the instance, deregister the instance, start
+-- the instance, and then register the instance. To deregister instances
+-- from a load balancer, use DeregisterInstancesFromLoadBalancer.
 --
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_DeReg_Reg_Instances.html Deregister and Register EC2 Instances> in the /Elastic Load Balancing Developer Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_DeReg_Reg_Instances.html Deregister and Register EC2 Instances>
+-- in the /Elastic Load Balancing Developer Guide/.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_RegisterInstancesWithLoadBalancer.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_RegisterInstancesWithLoadBalancer.html AWS API Reference> for RegisterInstancesWithLoadBalancer.
 module Network.AWS.ELB.RegisterInstancesWithLoadBalancer
     (
-    -- * Request
-      RegisterInstancesWithLoadBalancer
-    -- ** Request constructor
-    , registerInstancesWithLoadBalancer
-    -- ** Request lenses
-    , riwlbInstances
+    -- * Creating a Request
+      registerInstancesWithLoadBalancer
+    , RegisterInstancesWithLoadBalancer
+    -- * Request Lenses
     , riwlbLoadBalancerName
+    , riwlbInstances
 
-    -- * Response
-    , RegisterInstancesWithLoadBalancerResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , registerInstancesWithLoadBalancerResponse
-    -- ** Response lenses
-    , riwlbrInstances
+    , RegisterInstancesWithLoadBalancerResponse
+    -- * Response Lenses
+    , riwlbrsInstances
+    , riwlbrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data RegisterInstancesWithLoadBalancer = RegisterInstancesWithLoadBalancer
-    { _riwlbInstances        :: List "member" Instance
-    , _riwlbLoadBalancerName :: Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'registerInstancesWithLoadBalancer' smart constructor.
+data RegisterInstancesWithLoadBalancer = RegisterInstancesWithLoadBalancer'
+    { _riwlbLoadBalancerName :: !Text
+    , _riwlbInstances        :: ![Instance]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'RegisterInstancesWithLoadBalancer' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'RegisterInstancesWithLoadBalancer' with the minimum fields required to make a request.
 --
--- * 'riwlbInstances' @::@ ['Instance']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'riwlbLoadBalancerName' @::@ 'Text'
+-- * 'riwlbLoadBalancerName'
 --
-registerInstancesWithLoadBalancer :: Text -- ^ 'riwlbLoadBalancerName'
-                                  -> RegisterInstancesWithLoadBalancer
-registerInstancesWithLoadBalancer p1 = RegisterInstancesWithLoadBalancer
-    { _riwlbLoadBalancerName = p1
-    , _riwlbInstances        = mempty
+-- * 'riwlbInstances'
+registerInstancesWithLoadBalancer
+    :: Text -- ^ 'riwlbLoadBalancerName'
+    -> RegisterInstancesWithLoadBalancer
+registerInstancesWithLoadBalancer pLoadBalancerName_ =
+    RegisterInstancesWithLoadBalancer'
+    { _riwlbLoadBalancerName = pLoadBalancerName_
+    , _riwlbInstances = mempty
     }
 
+-- | The name of the load balancer.
+riwlbLoadBalancerName :: Lens' RegisterInstancesWithLoadBalancer Text
+riwlbLoadBalancerName = lens _riwlbLoadBalancerName (\ s a -> s{_riwlbLoadBalancerName = a});
+
 -- | The IDs of the instances.
 riwlbInstances :: Lens' RegisterInstancesWithLoadBalancer [Instance]
-riwlbInstances = lens _riwlbInstances (\s a -> s { _riwlbInstances = a }) . _List
+riwlbInstances = lens _riwlbInstances (\ s a -> s{_riwlbInstances = a}) . _Coerce;
 
--- | The name of the load balancer.
-riwlbLoadBalancerName :: Lens' RegisterInstancesWithLoadBalancer Text
-riwlbLoadBalancerName =
-    lens _riwlbLoadBalancerName (\s a -> s { _riwlbLoadBalancerName = a })
+instance AWSRequest RegisterInstancesWithLoadBalancer
+         where
+        type Sv RegisterInstancesWithLoadBalancer = ELB
+        type Rs RegisterInstancesWithLoadBalancer =
+             RegisterInstancesWithLoadBalancerResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "RegisterInstancesWithLoadBalancerResult"
+              (\ s h x ->
+                 RegisterInstancesWithLoadBalancerResponse' <$>
+                   (x .@? "Instances" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-newtype RegisterInstancesWithLoadBalancerResponse = RegisterInstancesWithLoadBalancerResponse
-    { _riwlbrInstances :: List "member" Instance
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance ToHeaders RegisterInstancesWithLoadBalancer
+         where
+        toHeaders = const mempty
 
-instance GHC.Exts.IsList RegisterInstancesWithLoadBalancerResponse where
-    type Item RegisterInstancesWithLoadBalancerResponse = Instance
+instance ToPath RegisterInstancesWithLoadBalancer
+         where
+        toPath = const "/"
 
-    fromList = RegisterInstancesWithLoadBalancerResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _riwlbrInstances
+instance ToQuery RegisterInstancesWithLoadBalancer
+         where
+        toQuery RegisterInstancesWithLoadBalancer'{..}
+          = mconcat
+              ["Action" =:
+                 ("RegisterInstancesWithLoadBalancer" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _riwlbLoadBalancerName,
+               "Instances" =: toQueryList "member" _riwlbInstances]
 
--- | 'RegisterInstancesWithLoadBalancerResponse' constructor.
+-- | /See:/ 'registerInstancesWithLoadBalancerResponse' smart constructor.
+data RegisterInstancesWithLoadBalancerResponse = RegisterInstancesWithLoadBalancerResponse'
+    { _riwlbrsInstances :: !(Maybe [Instance])
+    , _riwlbrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegisterInstancesWithLoadBalancerResponse' 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:
 --
--- * 'riwlbrInstances' @::@ ['Instance']
+-- * 'riwlbrsInstances'
 --
-registerInstancesWithLoadBalancerResponse :: RegisterInstancesWithLoadBalancerResponse
-registerInstancesWithLoadBalancerResponse = RegisterInstancesWithLoadBalancerResponse
-    { _riwlbrInstances = mempty
+-- * 'riwlbrsStatus'
+registerInstancesWithLoadBalancerResponse
+    :: Int -- ^ 'riwlbrsStatus'
+    -> RegisterInstancesWithLoadBalancerResponse
+registerInstancesWithLoadBalancerResponse pStatus_ =
+    RegisterInstancesWithLoadBalancerResponse'
+    { _riwlbrsInstances = Nothing
+    , _riwlbrsStatus = pStatus_
     }
 
 -- | The updated list of instances for the load balancer.
-riwlbrInstances :: Lens' RegisterInstancesWithLoadBalancerResponse [Instance]
-riwlbrInstances = lens _riwlbrInstances (\s a -> s { _riwlbrInstances = a }) . _List
-
-instance ToPath RegisterInstancesWithLoadBalancer where
-    toPath = const "/"
-
-instance ToQuery RegisterInstancesWithLoadBalancer where
-    toQuery RegisterInstancesWithLoadBalancer{..} = mconcat
-        [ "Instances"        =? _riwlbInstances
-        , "LoadBalancerName" =? _riwlbLoadBalancerName
-        ]
-
-instance ToHeaders RegisterInstancesWithLoadBalancer
-
-instance AWSRequest RegisterInstancesWithLoadBalancer where
-    type Sv RegisterInstancesWithLoadBalancer = ELB
-    type Rs RegisterInstancesWithLoadBalancer = RegisterInstancesWithLoadBalancerResponse
-
-    request  = post "RegisterInstancesWithLoadBalancer"
-    response = xmlResponse
+riwlbrsInstances :: Lens' RegisterInstancesWithLoadBalancerResponse [Instance]
+riwlbrsInstances = lens _riwlbrsInstances (\ s a -> s{_riwlbrsInstances = a}) . _Default . _Coerce;
 
-instance FromXML RegisterInstancesWithLoadBalancerResponse where
-    parseXML = withElement "RegisterInstancesWithLoadBalancerResult" $ \x -> RegisterInstancesWithLoadBalancerResponse
-        <$> x .@? "Instances" .!@ mempty
+-- | The response status code.
+riwlbrsStatus :: Lens' RegisterInstancesWithLoadBalancerResponse Int
+riwlbrsStatus = lens _riwlbrsStatus (\ s a -> s{_riwlbrsStatus = a});
diff --git a/gen/Network/AWS/ELB/RemoveTags.hs b/gen/Network/AWS/ELB/RemoveTags.hs
--- a/gen/Network/AWS/ELB/RemoveTags.hs
+++ b/gen/Network/AWS/ELB/RemoveTags.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.ELB.RemoveTags
--- 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.
-
--- | Removes one or more tags from the specified load balancer.
+-- Removes one or more tags from the specified load balancer.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_RemoveTags.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_RemoveTags.html AWS API Reference> for RemoveTags.
 module Network.AWS.ELB.RemoveTags
     (
-    -- * Request
-      RemoveTags
-    -- ** Request constructor
-    , removeTags
-    -- ** Request lenses
+    -- * Creating a Request
+      removeTags
+    , RemoveTags
+    -- * Request Lenses
     , rtLoadBalancerNames
     , rtTags
 
-    -- * Response
-    , RemoveTagsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , removeTagsResponse
+    , RemoveTagsResponse
+    -- * Response Lenses
+    , rtrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data RemoveTags = RemoveTags
-    { _rtLoadBalancerNames :: List "member" Text
-    , _rtTags              :: List1 "member" TagKeyOnly
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'removeTags' smart constructor.
+data RemoveTags = RemoveTags'
+    { _rtLoadBalancerNames :: ![Text]
+    , _rtTags              :: !(List1 TagKeyOnly)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'RemoveTags' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'RemoveTags' with the minimum fields required to make a request.
 --
--- * 'rtLoadBalancerNames' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rtTags' @::@ 'NonEmpty' 'TagKeyOnly'
+-- * 'rtLoadBalancerNames'
 --
-removeTags :: NonEmpty TagKeyOnly -- ^ 'rtTags'
-           -> RemoveTags
-removeTags p1 = RemoveTags
-    { _rtTags              = withIso _List1 (const id) p1
-    , _rtLoadBalancerNames = mempty
+-- * 'rtTags'
+removeTags
+    :: NonEmpty TagKeyOnly -- ^ 'rtTags'
+    -> RemoveTags
+removeTags pTags_ =
+    RemoveTags'
+    { _rtLoadBalancerNames = mempty
+    , _rtTags = _List1 # pTags_
     }
 
--- | The name of the load balancer. You can specify a maximum of one load balancer
--- name.
+-- | The name of the load balancer. You can specify a maximum of one load
+-- balancer name.
 rtLoadBalancerNames :: Lens' RemoveTags [Text]
-rtLoadBalancerNames =
-    lens _rtLoadBalancerNames (\s a -> s { _rtLoadBalancerNames = a })
-        . _List
+rtLoadBalancerNames = lens _rtLoadBalancerNames (\ s a -> s{_rtLoadBalancerNames = a}) . _Coerce;
 
 -- | The list of tag keys to remove.
 rtTags :: Lens' RemoveTags (NonEmpty TagKeyOnly)
-rtTags = lens _rtTags (\s a -> s { _rtTags = a }) . _List1
+rtTags = lens _rtTags (\ s a -> s{_rtTags = a}) . _List1;
 
-data RemoveTagsResponse = RemoveTagsResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest RemoveTags where
+        type Sv RemoveTags = ELB
+        type Rs RemoveTags = RemoveTagsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "RemoveTagsResult"
+              (\ s h x ->
+                 RemoveTagsResponse' <$> (pure (fromEnum s)))
 
--- | 'RemoveTagsResponse' constructor.
-removeTagsResponse :: RemoveTagsResponse
-removeTagsResponse = RemoveTagsResponse
+instance ToHeaders RemoveTags where
+        toHeaders = const mempty
 
 instance ToPath RemoveTags where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery RemoveTags where
-    toQuery RemoveTags{..} = mconcat
-        [ "LoadBalancerNames" =? _rtLoadBalancerNames
-        , "Tags"              =? _rtTags
-        ]
+        toQuery RemoveTags'{..}
+          = mconcat
+              ["Action" =: ("RemoveTags" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerNames" =:
+                 toQueryList "member" _rtLoadBalancerNames,
+               "Tags" =: toQueryList "member" _rtTags]
 
-instance ToHeaders RemoveTags
+-- | /See:/ 'removeTagsResponse' smart constructor.
+newtype RemoveTagsResponse = RemoveTagsResponse'
+    { _rtrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest RemoveTags where
-    type Sv RemoveTags = ELB
-    type Rs RemoveTags = RemoveTagsResponse
+-- | Creates a value of 'RemoveTagsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtrsStatus'
+removeTagsResponse
+    :: Int -- ^ 'rtrsStatus'
+    -> RemoveTagsResponse
+removeTagsResponse pStatus_ =
+    RemoveTagsResponse'
+    { _rtrsStatus = pStatus_
+    }
 
-    request  = post "RemoveTags"
-    response = nullResponse RemoveTagsResponse
+-- | The response status code.
+rtrsStatus :: Lens' RemoveTagsResponse Int
+rtrsStatus = lens _rtrsStatus (\ s a -> s{_rtrsStatus = a});
diff --git a/gen/Network/AWS/ELB/SetLoadBalancerListenerSSLCertificate.hs b/gen/Network/AWS/ELB/SetLoadBalancerListenerSSLCertificate.hs
--- a/gen/Network/AWS/ELB/SetLoadBalancerListenerSSLCertificate.hs
+++ b/gen/Network/AWS/ELB/SetLoadBalancerListenerSSLCertificate.hs
@@ -1,122 +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.ELB.SetLoadBalancerListenerSSLCertificate
--- 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.
-
--- | Sets the certificate that terminates the specified listener's SSL
--- connections. The specified certificate replaces any prior certificate that
--- was used on the same load balancer and port.
+-- Sets the certificate that terminates the specified listener\'s SSL
+-- connections. The specified certificate replaces any prior certificate
+-- that was used on the same load balancer and port.
 --
--- For more information about updating your SSL certificate, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_UpdatingLoadBalancerSSL.html Updating anSSL Certificate for a Load Balancer> in the /Elastic Load Balancing DeveloperGuide/.
+-- For more information about updating your SSL certificate, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_UpdatingLoadBalancerSSL.html Updating an SSL Certificate for a Load Balancer>
+-- in the /Elastic Load Balancing Developer Guide/.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_SetLoadBalancerListenerSSLCertificate.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_SetLoadBalancerListenerSSLCertificate.html AWS API Reference> for SetLoadBalancerListenerSSLCertificate.
 module Network.AWS.ELB.SetLoadBalancerListenerSSLCertificate
     (
-    -- * Request
-      SetLoadBalancerListenerSSLCertificate
-    -- ** Request constructor
-    , setLoadBalancerListenerSSLCertificate
-    -- ** Request lenses
-    , slblsslcLoadBalancerName
-    , slblsslcLoadBalancerPort
-    , slblsslcSSLCertificateId
+    -- * Creating a Request
+      setLoadBalancerListenerSSLCertificate
+    , SetLoadBalancerListenerSSLCertificate
+    -- * Request Lenses
+    , slblscLoadBalancerName
+    , slblscLoadBalancerPort
+    , slblscSSLCertificateId
 
-    -- * Response
-    , SetLoadBalancerListenerSSLCertificateResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setLoadBalancerListenerSSLCertificateResponse
+    , SetLoadBalancerListenerSSLCertificateResponse
+    -- * Response Lenses
+    , slblscrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data SetLoadBalancerListenerSSLCertificate = SetLoadBalancerListenerSSLCertificate
-    { _slblsslcLoadBalancerName :: Text
-    , _slblsslcLoadBalancerPort :: Int
-    , _slblsslcSSLCertificateId :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'setLoadBalancerListenerSSLCertificate' smart constructor.
+data SetLoadBalancerListenerSSLCertificate = SetLoadBalancerListenerSSLCertificate'
+    { _slblscLoadBalancerName :: !Text
+    , _slblscLoadBalancerPort :: !Int
+    , _slblscSSLCertificateId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'SetLoadBalancerListenerSSLCertificate' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'SetLoadBalancerListenerSSLCertificate' with the minimum fields required to make a request.
 --
--- * 'slblsslcLoadBalancerName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'slblsslcLoadBalancerPort' @::@ 'Int'
+-- * 'slblscLoadBalancerName'
 --
--- * 'slblsslcSSLCertificateId' @::@ 'Text'
+-- * 'slblscLoadBalancerPort'
 --
-setLoadBalancerListenerSSLCertificate :: Text -- ^ 'slblsslcLoadBalancerName'
-                                      -> Int -- ^ 'slblsslcLoadBalancerPort'
-                                      -> Text -- ^ 'slblsslcSSLCertificateId'
-                                      -> SetLoadBalancerListenerSSLCertificate
-setLoadBalancerListenerSSLCertificate p1 p2 p3 = SetLoadBalancerListenerSSLCertificate
-    { _slblsslcLoadBalancerName = p1
-    , _slblsslcLoadBalancerPort = p2
-    , _slblsslcSSLCertificateId = p3
+-- * 'slblscSSLCertificateId'
+setLoadBalancerListenerSSLCertificate
+    :: Text -- ^ 'slblscLoadBalancerName'
+    -> Int -- ^ 'slblscLoadBalancerPort'
+    -> Text -- ^ 'slblscSSLCertificateId'
+    -> SetLoadBalancerListenerSSLCertificate
+setLoadBalancerListenerSSLCertificate pLoadBalancerName_ pLoadBalancerPort_ pSSLCertificateId_ =
+    SetLoadBalancerListenerSSLCertificate'
+    { _slblscLoadBalancerName = pLoadBalancerName_
+    , _slblscLoadBalancerPort = pLoadBalancerPort_
+    , _slblscSSLCertificateId = pSSLCertificateId_
     }
 
 -- | The name of the load balancer.
-slblsslcLoadBalancerName :: Lens' SetLoadBalancerListenerSSLCertificate Text
-slblsslcLoadBalancerName =
-    lens _slblsslcLoadBalancerName
-        (\s a -> s { _slblsslcLoadBalancerName = a })
+slblscLoadBalancerName :: Lens' SetLoadBalancerListenerSSLCertificate Text
+slblscLoadBalancerName = lens _slblscLoadBalancerName (\ s a -> s{_slblscLoadBalancerName = a});
 
 -- | The port that uses the specified SSL certificate.
-slblsslcLoadBalancerPort :: Lens' SetLoadBalancerListenerSSLCertificate Int
-slblsslcLoadBalancerPort =
-    lens _slblsslcLoadBalancerPort
-        (\s a -> s { _slblsslcLoadBalancerPort = a })
+slblscLoadBalancerPort :: Lens' SetLoadBalancerListenerSSLCertificate Int
+slblscLoadBalancerPort = lens _slblscLoadBalancerPort (\ s a -> s{_slblscLoadBalancerPort = a});
 
 -- | The Amazon Resource Name (ARN) of the SSL certificate.
-slblsslcSSLCertificateId :: Lens' SetLoadBalancerListenerSSLCertificate Text
-slblsslcSSLCertificateId =
-    lens _slblsslcSSLCertificateId
-        (\s a -> s { _slblsslcSSLCertificateId = a })
+slblscSSLCertificateId :: Lens' SetLoadBalancerListenerSSLCertificate Text
+slblscSSLCertificateId = lens _slblscSSLCertificateId (\ s a -> s{_slblscSSLCertificateId = a});
 
-data SetLoadBalancerListenerSSLCertificateResponse = SetLoadBalancerListenerSSLCertificateResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest
+         SetLoadBalancerListenerSSLCertificate where
+        type Sv SetLoadBalancerListenerSSLCertificate = ELB
+        type Rs SetLoadBalancerListenerSSLCertificate =
+             SetLoadBalancerListenerSSLCertificateResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "SetLoadBalancerListenerSSLCertificateResult"
+              (\ s h x ->
+                 SetLoadBalancerListenerSSLCertificateResponse' <$>
+                   (pure (fromEnum s)))
 
--- | 'SetLoadBalancerListenerSSLCertificateResponse' constructor.
-setLoadBalancerListenerSSLCertificateResponse :: SetLoadBalancerListenerSSLCertificateResponse
-setLoadBalancerListenerSSLCertificateResponse = SetLoadBalancerListenerSSLCertificateResponse
+instance ToHeaders
+         SetLoadBalancerListenerSSLCertificate where
+        toHeaders = const mempty
 
-instance ToPath SetLoadBalancerListenerSSLCertificate where
-    toPath = const "/"
+instance ToPath SetLoadBalancerListenerSSLCertificate
+         where
+        toPath = const "/"
 
-instance ToQuery SetLoadBalancerListenerSSLCertificate where
-    toQuery SetLoadBalancerListenerSSLCertificate{..} = mconcat
-        [ "LoadBalancerName" =? _slblsslcLoadBalancerName
-        , "LoadBalancerPort" =? _slblsslcLoadBalancerPort
-        , "SSLCertificateId" =? _slblsslcSSLCertificateId
-        ]
+instance ToQuery
+         SetLoadBalancerListenerSSLCertificate where
+        toQuery SetLoadBalancerListenerSSLCertificate'{..}
+          = mconcat
+              ["Action" =:
+                 ("SetLoadBalancerListenerSSLCertificate" ::
+                    ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _slblscLoadBalancerName,
+               "LoadBalancerPort" =: _slblscLoadBalancerPort,
+               "SSLCertificateId" =: _slblscSSLCertificateId]
 
-instance ToHeaders SetLoadBalancerListenerSSLCertificate
+-- | /See:/ 'setLoadBalancerListenerSSLCertificateResponse' smart constructor.
+newtype SetLoadBalancerListenerSSLCertificateResponse = SetLoadBalancerListenerSSLCertificateResponse'
+    { _slblscrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest SetLoadBalancerListenerSSLCertificate where
-    type Sv SetLoadBalancerListenerSSLCertificate = ELB
-    type Rs SetLoadBalancerListenerSSLCertificate = SetLoadBalancerListenerSSLCertificateResponse
+-- | Creates a value of 'SetLoadBalancerListenerSSLCertificateResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slblscrsStatus'
+setLoadBalancerListenerSSLCertificateResponse
+    :: Int -- ^ 'slblscrsStatus'
+    -> SetLoadBalancerListenerSSLCertificateResponse
+setLoadBalancerListenerSSLCertificateResponse pStatus_ =
+    SetLoadBalancerListenerSSLCertificateResponse'
+    { _slblscrsStatus = pStatus_
+    }
 
-    request  = post "SetLoadBalancerListenerSSLCertificate"
-    response = nullResponse SetLoadBalancerListenerSSLCertificateResponse
+-- | The response status code.
+slblscrsStatus :: Lens' SetLoadBalancerListenerSSLCertificateResponse Int
+slblscrsStatus = lens _slblscrsStatus (\ s a -> s{_slblscrsStatus = a});
diff --git a/gen/Network/AWS/ELB/SetLoadBalancerPoliciesForBackendServer.hs b/gen/Network/AWS/ELB/SetLoadBalancerPoliciesForBackendServer.hs
--- a/gen/Network/AWS/ELB/SetLoadBalancerPoliciesForBackendServer.hs
+++ b/gen/Network/AWS/ELB/SetLoadBalancerPoliciesForBackendServer.hs
@@ -1,126 +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.ELB.SetLoadBalancerPoliciesForBackendServer
--- 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.
-
--- | Replaces the set of policies associated with the specified port on which the
--- back-end server is listening with a new set of policies. At this time, only
--- the back-end server authentication policy type can be applied to the back-end
--- ports; this policy type is composed of multiple public key policies.
+-- Replaces the set of policies associated with the specified port on which
+-- the back-end server is listening with a new set of policies. At this
+-- time, only the back-end server authentication policy type can be applied
+-- to the back-end ports; this policy type is composed of multiple public
+-- key policies.
 --
--- Each time you use 'SetLoadBalancerPoliciesForBackendServer' to enable the
--- policies, use the 'PolicyNames' parameter to list the policies that you want to
--- enable.
+-- Each time you use 'SetLoadBalancerPoliciesForBackendServer' to enable
+-- the policies, use the 'PolicyNames' parameter to list the policies that
+-- you want to enable.
 --
--- You can use 'DescribeLoadBalancers' or 'DescribeLoadBalancerPolicies' to verify
--- that the policy is associated with the back-end server.
+-- You can use DescribeLoadBalancers or DescribeLoadBalancerPolicies to
+-- verify that the policy is associated with the back-end server.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_SetLoadBalancerPoliciesForBackendServer.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_SetLoadBalancerPoliciesForBackendServer.html AWS API Reference> for SetLoadBalancerPoliciesForBackendServer.
 module Network.AWS.ELB.SetLoadBalancerPoliciesForBackendServer
     (
-    -- * Request
-      SetLoadBalancerPoliciesForBackendServer
-    -- ** Request constructor
-    , setLoadBalancerPoliciesForBackendServer
-    -- ** Request lenses
-    , slbpfbsInstancePort
+    -- * Creating a Request
+      setLoadBalancerPoliciesForBackendServer
+    , SetLoadBalancerPoliciesForBackendServer
+    -- * Request Lenses
     , slbpfbsLoadBalancerName
+    , slbpfbsInstancePort
     , slbpfbsPolicyNames
 
-    -- * Response
-    , SetLoadBalancerPoliciesForBackendServerResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setLoadBalancerPoliciesForBackendServerResponse
+    , SetLoadBalancerPoliciesForBackendServerResponse
+    -- * Response Lenses
+    , slbpfbsrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data SetLoadBalancerPoliciesForBackendServer = SetLoadBalancerPoliciesForBackendServer
-    { _slbpfbsInstancePort     :: Int
-    , _slbpfbsLoadBalancerName :: Text
-    , _slbpfbsPolicyNames      :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'setLoadBalancerPoliciesForBackendServer' smart constructor.
+data SetLoadBalancerPoliciesForBackendServer = SetLoadBalancerPoliciesForBackendServer'
+    { _slbpfbsLoadBalancerName :: !Text
+    , _slbpfbsInstancePort     :: !Int
+    , _slbpfbsPolicyNames      :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'SetLoadBalancerPoliciesForBackendServer' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'SetLoadBalancerPoliciesForBackendServer' with the minimum fields required to make a request.
 --
--- * 'slbpfbsInstancePort' @::@ 'Int'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'slbpfbsLoadBalancerName' @::@ 'Text'
+-- * 'slbpfbsLoadBalancerName'
 --
--- * 'slbpfbsPolicyNames' @::@ ['Text']
+-- * 'slbpfbsInstancePort'
 --
-setLoadBalancerPoliciesForBackendServer :: Text -- ^ 'slbpfbsLoadBalancerName'
-                                        -> Int -- ^ 'slbpfbsInstancePort'
-                                        -> SetLoadBalancerPoliciesForBackendServer
-setLoadBalancerPoliciesForBackendServer p1 p2 = SetLoadBalancerPoliciesForBackendServer
-    { _slbpfbsLoadBalancerName = p1
-    , _slbpfbsInstancePort     = p2
-    , _slbpfbsPolicyNames      = mempty
+-- * 'slbpfbsPolicyNames'
+setLoadBalancerPoliciesForBackendServer
+    :: Text -- ^ 'slbpfbsLoadBalancerName'
+    -> Int -- ^ 'slbpfbsInstancePort'
+    -> SetLoadBalancerPoliciesForBackendServer
+setLoadBalancerPoliciesForBackendServer pLoadBalancerName_ pInstancePort_ =
+    SetLoadBalancerPoliciesForBackendServer'
+    { _slbpfbsLoadBalancerName = pLoadBalancerName_
+    , _slbpfbsInstancePort = pInstancePort_
+    , _slbpfbsPolicyNames = mempty
     }
 
--- | The port number associated with the back-end server.
-slbpfbsInstancePort :: Lens' SetLoadBalancerPoliciesForBackendServer Int
-slbpfbsInstancePort =
-    lens _slbpfbsInstancePort (\s a -> s { _slbpfbsInstancePort = a })
-
 -- | The name of the load balancer.
 slbpfbsLoadBalancerName :: Lens' SetLoadBalancerPoliciesForBackendServer Text
-slbpfbsLoadBalancerName =
-    lens _slbpfbsLoadBalancerName (\s a -> s { _slbpfbsLoadBalancerName = a })
+slbpfbsLoadBalancerName = lens _slbpfbsLoadBalancerName (\ s a -> s{_slbpfbsLoadBalancerName = a});
 
--- | The names of the policies. If the list is empty, then all current polices are
--- removed from the back-end server.
+-- | The port number associated with the back-end server.
+slbpfbsInstancePort :: Lens' SetLoadBalancerPoliciesForBackendServer Int
+slbpfbsInstancePort = lens _slbpfbsInstancePort (\ s a -> s{_slbpfbsInstancePort = a});
+
+-- | The names of the policies. If the list is empty, then all current
+-- polices are removed from the back-end server.
 slbpfbsPolicyNames :: Lens' SetLoadBalancerPoliciesForBackendServer [Text]
-slbpfbsPolicyNames =
-    lens _slbpfbsPolicyNames (\s a -> s { _slbpfbsPolicyNames = a })
-        . _List
+slbpfbsPolicyNames = lens _slbpfbsPolicyNames (\ s a -> s{_slbpfbsPolicyNames = a}) . _Coerce;
 
-data SetLoadBalancerPoliciesForBackendServerResponse = SetLoadBalancerPoliciesForBackendServerResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest
+         SetLoadBalancerPoliciesForBackendServer where
+        type Sv SetLoadBalancerPoliciesForBackendServer = ELB
+        type Rs SetLoadBalancerPoliciesForBackendServer =
+             SetLoadBalancerPoliciesForBackendServerResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "SetLoadBalancerPoliciesForBackendServerResult"
+              (\ s h x ->
+                 SetLoadBalancerPoliciesForBackendServerResponse' <$>
+                   (pure (fromEnum s)))
 
--- | 'SetLoadBalancerPoliciesForBackendServerResponse' constructor.
-setLoadBalancerPoliciesForBackendServerResponse :: SetLoadBalancerPoliciesForBackendServerResponse
-setLoadBalancerPoliciesForBackendServerResponse = SetLoadBalancerPoliciesForBackendServerResponse
+instance ToHeaders
+         SetLoadBalancerPoliciesForBackendServer where
+        toHeaders = const mempty
 
-instance ToPath SetLoadBalancerPoliciesForBackendServer where
-    toPath = const "/"
+instance ToPath
+         SetLoadBalancerPoliciesForBackendServer where
+        toPath = const "/"
 
-instance ToQuery SetLoadBalancerPoliciesForBackendServer where
-    toQuery SetLoadBalancerPoliciesForBackendServer{..} = mconcat
-        [ "InstancePort"     =? _slbpfbsInstancePort
-        , "LoadBalancerName" =? _slbpfbsLoadBalancerName
-        , "PolicyNames"      =? _slbpfbsPolicyNames
-        ]
+instance ToQuery
+         SetLoadBalancerPoliciesForBackendServer where
+        toQuery SetLoadBalancerPoliciesForBackendServer'{..}
+          = mconcat
+              ["Action" =:
+                 ("SetLoadBalancerPoliciesForBackendServer" ::
+                    ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _slbpfbsLoadBalancerName,
+               "InstancePort" =: _slbpfbsInstancePort,
+               "PolicyNames" =:
+                 toQueryList "member" _slbpfbsPolicyNames]
 
-instance ToHeaders SetLoadBalancerPoliciesForBackendServer
+-- | /See:/ 'setLoadBalancerPoliciesForBackendServerResponse' smart constructor.
+newtype SetLoadBalancerPoliciesForBackendServerResponse = SetLoadBalancerPoliciesForBackendServerResponse'
+    { _slbpfbsrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest SetLoadBalancerPoliciesForBackendServer where
-    type Sv SetLoadBalancerPoliciesForBackendServer = ELB
-    type Rs SetLoadBalancerPoliciesForBackendServer = SetLoadBalancerPoliciesForBackendServerResponse
+-- | Creates a value of 'SetLoadBalancerPoliciesForBackendServerResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slbpfbsrsStatus'
+setLoadBalancerPoliciesForBackendServerResponse
+    :: Int -- ^ 'slbpfbsrsStatus'
+    -> SetLoadBalancerPoliciesForBackendServerResponse
+setLoadBalancerPoliciesForBackendServerResponse pStatus_ =
+    SetLoadBalancerPoliciesForBackendServerResponse'
+    { _slbpfbsrsStatus = pStatus_
+    }
 
-    request  = post "SetLoadBalancerPoliciesForBackendServer"
-    response = nullResponse SetLoadBalancerPoliciesForBackendServerResponse
+-- | The response status code.
+slbpfbsrsStatus :: Lens' SetLoadBalancerPoliciesForBackendServerResponse Int
+slbpfbsrsStatus = lens _slbpfbsrsStatus (\ s a -> s{_slbpfbsrsStatus = a});
diff --git a/gen/Network/AWS/ELB/SetLoadBalancerPoliciesOfListener.hs b/gen/Network/AWS/ELB/SetLoadBalancerPoliciesOfListener.hs
--- a/gen/Network/AWS/ELB/SetLoadBalancerPoliciesOfListener.hs
+++ b/gen/Network/AWS/ELB/SetLoadBalancerPoliciesOfListener.hs
@@ -1,117 +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.ELB.SetLoadBalancerPoliciesOfListener
--- 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.
-
--- | Associates, updates, or disables a policy with a listener for the specified
--- load balancer. You can associate multiple policies with a listener.
+-- Associates, updates, or disables a policy with a listener for the
+-- specified load balancer. You can associate multiple policies with a
+-- listener.
 --
--- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_SetLoadBalancerPoliciesOfListener.html>
+-- /See:/ <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_SetLoadBalancerPoliciesOfListener.html AWS API Reference> for SetLoadBalancerPoliciesOfListener.
 module Network.AWS.ELB.SetLoadBalancerPoliciesOfListener
     (
-    -- * Request
-      SetLoadBalancerPoliciesOfListener
-    -- ** Request constructor
-    , setLoadBalancerPoliciesOfListener
-    -- ** Request lenses
+    -- * Creating a Request
+      setLoadBalancerPoliciesOfListener
+    , SetLoadBalancerPoliciesOfListener
+    -- * Request Lenses
     , slbpolLoadBalancerName
     , slbpolLoadBalancerPort
     , slbpolPolicyNames
 
-    -- * Response
-    , SetLoadBalancerPoliciesOfListenerResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setLoadBalancerPoliciesOfListenerResponse
+    , SetLoadBalancerPoliciesOfListenerResponse
+    -- * Response Lenses
+    , slbpolrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ELB.Types
-import qualified GHC.Exts
+import           Network.AWS.ELB.Types
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data SetLoadBalancerPoliciesOfListener = SetLoadBalancerPoliciesOfListener
-    { _slbpolLoadBalancerName :: Text
-    , _slbpolLoadBalancerPort :: Int
-    , _slbpolPolicyNames      :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'setLoadBalancerPoliciesOfListener' smart constructor.
+data SetLoadBalancerPoliciesOfListener = SetLoadBalancerPoliciesOfListener'
+    { _slbpolLoadBalancerName :: !Text
+    , _slbpolLoadBalancerPort :: !Int
+    , _slbpolPolicyNames      :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'SetLoadBalancerPoliciesOfListener' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'SetLoadBalancerPoliciesOfListener' with the minimum fields required to make a request.
 --
--- * 'slbpolLoadBalancerName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'slbpolLoadBalancerPort' @::@ 'Int'
+-- * 'slbpolLoadBalancerName'
 --
--- * 'slbpolPolicyNames' @::@ ['Text']
+-- * 'slbpolLoadBalancerPort'
 --
-setLoadBalancerPoliciesOfListener :: Text -- ^ 'slbpolLoadBalancerName'
-                                  -> Int -- ^ 'slbpolLoadBalancerPort'
-                                  -> SetLoadBalancerPoliciesOfListener
-setLoadBalancerPoliciesOfListener p1 p2 = SetLoadBalancerPoliciesOfListener
-    { _slbpolLoadBalancerName = p1
-    , _slbpolLoadBalancerPort = p2
-    , _slbpolPolicyNames      = mempty
+-- * 'slbpolPolicyNames'
+setLoadBalancerPoliciesOfListener
+    :: Text -- ^ 'slbpolLoadBalancerName'
+    -> Int -- ^ 'slbpolLoadBalancerPort'
+    -> SetLoadBalancerPoliciesOfListener
+setLoadBalancerPoliciesOfListener pLoadBalancerName_ pLoadBalancerPort_ =
+    SetLoadBalancerPoliciesOfListener'
+    { _slbpolLoadBalancerName = pLoadBalancerName_
+    , _slbpolLoadBalancerPort = pLoadBalancerPort_
+    , _slbpolPolicyNames = mempty
     }
 
 -- | The name of the load balancer.
 slbpolLoadBalancerName :: Lens' SetLoadBalancerPoliciesOfListener Text
-slbpolLoadBalancerName =
-    lens _slbpolLoadBalancerName (\s a -> s { _slbpolLoadBalancerName = a })
+slbpolLoadBalancerName = lens _slbpolLoadBalancerName (\ s a -> s{_slbpolLoadBalancerName = a});
 
 -- | The external port of the load balancer for the policy.
 slbpolLoadBalancerPort :: Lens' SetLoadBalancerPoliciesOfListener Int
-slbpolLoadBalancerPort =
-    lens _slbpolLoadBalancerPort (\s a -> s { _slbpolLoadBalancerPort = a })
+slbpolLoadBalancerPort = lens _slbpolLoadBalancerPort (\ s a -> s{_slbpolLoadBalancerPort = a});
 
 -- | The names of the policies. If the list is empty, the current policy is
 -- removed from the listener.
 slbpolPolicyNames :: Lens' SetLoadBalancerPoliciesOfListener [Text]
-slbpolPolicyNames =
-    lens _slbpolPolicyNames (\s a -> s { _slbpolPolicyNames = a })
-        . _List
+slbpolPolicyNames = lens _slbpolPolicyNames (\ s a -> s{_slbpolPolicyNames = a}) . _Coerce;
 
-data SetLoadBalancerPoliciesOfListenerResponse = SetLoadBalancerPoliciesOfListenerResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest SetLoadBalancerPoliciesOfListener
+         where
+        type Sv SetLoadBalancerPoliciesOfListener = ELB
+        type Rs SetLoadBalancerPoliciesOfListener =
+             SetLoadBalancerPoliciesOfListenerResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "SetLoadBalancerPoliciesOfListenerResult"
+              (\ s h x ->
+                 SetLoadBalancerPoliciesOfListenerResponse' <$>
+                   (pure (fromEnum s)))
 
--- | 'SetLoadBalancerPoliciesOfListenerResponse' constructor.
-setLoadBalancerPoliciesOfListenerResponse :: SetLoadBalancerPoliciesOfListenerResponse
-setLoadBalancerPoliciesOfListenerResponse = SetLoadBalancerPoliciesOfListenerResponse
+instance ToHeaders SetLoadBalancerPoliciesOfListener
+         where
+        toHeaders = const mempty
 
-instance ToPath SetLoadBalancerPoliciesOfListener where
-    toPath = const "/"
+instance ToPath SetLoadBalancerPoliciesOfListener
+         where
+        toPath = const "/"
 
-instance ToQuery SetLoadBalancerPoliciesOfListener where
-    toQuery SetLoadBalancerPoliciesOfListener{..} = mconcat
-        [ "LoadBalancerName" =? _slbpolLoadBalancerName
-        , "LoadBalancerPort" =? _slbpolLoadBalancerPort
-        , "PolicyNames"      =? _slbpolPolicyNames
-        ]
+instance ToQuery SetLoadBalancerPoliciesOfListener
+         where
+        toQuery SetLoadBalancerPoliciesOfListener'{..}
+          = mconcat
+              ["Action" =:
+                 ("SetLoadBalancerPoliciesOfListener" :: ByteString),
+               "Version" =: ("2012-06-01" :: ByteString),
+               "LoadBalancerName" =: _slbpolLoadBalancerName,
+               "LoadBalancerPort" =: _slbpolLoadBalancerPort,
+               "PolicyNames" =:
+                 toQueryList "member" _slbpolPolicyNames]
 
-instance ToHeaders SetLoadBalancerPoliciesOfListener
+-- | /See:/ 'setLoadBalancerPoliciesOfListenerResponse' smart constructor.
+newtype SetLoadBalancerPoliciesOfListenerResponse = SetLoadBalancerPoliciesOfListenerResponse'
+    { _slbpolrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest SetLoadBalancerPoliciesOfListener where
-    type Sv SetLoadBalancerPoliciesOfListener = ELB
-    type Rs SetLoadBalancerPoliciesOfListener = SetLoadBalancerPoliciesOfListenerResponse
+-- | Creates a value of 'SetLoadBalancerPoliciesOfListenerResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slbpolrsStatus'
+setLoadBalancerPoliciesOfListenerResponse
+    :: Int -- ^ 'slbpolrsStatus'
+    -> SetLoadBalancerPoliciesOfListenerResponse
+setLoadBalancerPoliciesOfListenerResponse pStatus_ =
+    SetLoadBalancerPoliciesOfListenerResponse'
+    { _slbpolrsStatus = pStatus_
+    }
 
-    request  = post "SetLoadBalancerPoliciesOfListener"
-    response = nullResponse SetLoadBalancerPoliciesOfListenerResponse
+-- | The response status code.
+slbpolrsStatus :: Lens' SetLoadBalancerPoliciesOfListenerResponse Int
+slbpolrsStatus = lens _slbpolrsStatus (\ s a -> s{_slbpolrsStatus = a});
diff --git a/gen/Network/AWS/ELB/Types.hs b/gen/Network/AWS/ELB/Types.hs
--- a/gen/Network/AWS/ELB/Types.hs
+++ b/gen/Network/AWS/ELB/Types.hs
@@ -1,1676 +1,358 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-{-# LANGUAGE ViewPatterns                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.ELB.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/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
-module Network.AWS.ELB.Types
-    (
-    -- * Service
-      ELB
-    -- ** Error
-    , RESTError
-    -- ** XML
-    , ns
-
-    -- * SourceSecurityGroup
-    , SourceSecurityGroup
-    , sourceSecurityGroup
-    , ssgGroupName
-    , ssgOwnerAlias
-
-    -- * TagDescription
-    , TagDescription
-    , tagDescription
-    , tdLoadBalancerName
-    , tdTags
-
-    -- * Tag
-    , Tag
-    , tag
-    , tagKey
-    , tagValue
-
-    -- * PolicyAttributeTypeDescription
-    , PolicyAttributeTypeDescription
-    , policyAttributeTypeDescription
-    , patdAttributeName
-    , patdAttributeType
-    , patdCardinality
-    , patdDefaultValue
-    , patdDescription
-
-    -- * HealthCheck
-    , HealthCheck
-    , healthCheck
-    , hcHealthyThreshold
-    , hcInterval
-    , hcTarget
-    , hcTimeout
-    , hcUnhealthyThreshold
-
-    -- * CrossZoneLoadBalancing
-    , CrossZoneLoadBalancing
-    , crossZoneLoadBalancing
-    , czlbEnabled
-
-    -- * LoadBalancerAttributes
-    , LoadBalancerAttributes
-    , loadBalancerAttributes
-    , lbaAccessLog
-    , lbaAdditionalAttributes
-    , lbaConnectionDraining
-    , lbaConnectionSettings
-    , lbaCrossZoneLoadBalancing
-
-    -- * AccessLog
-    , AccessLog
-    , accessLog
-    , alEmitInterval
-    , alEnabled
-    , alS3BucketName
-    , alS3BucketPrefix
-
-    -- * ListenerDescription
-    , ListenerDescription
-    , listenerDescription
-    , ldListener
-    , ldPolicyNames
-
-    -- * LBCookieStickinessPolicy
-    , LBCookieStickinessPolicy
-    , lbcookieStickinessPolicy
-    , lbcspCookieExpirationPeriod
-    , lbcspPolicyName
-
-    -- * PolicyDescription
-    , PolicyDescription
-    , policyDescription
-    , pdPolicyAttributeDescriptions
-    , pdPolicyName
-    , pdPolicyTypeName
-
-    -- * AppCookieStickinessPolicy
-    , AppCookieStickinessPolicy
-    , appCookieStickinessPolicy
-    , acspCookieName
-    , acspPolicyName
-
-    -- * PolicyAttribute
-    , PolicyAttribute
-    , policyAttribute
-    , paAttributeName
-    , paAttributeValue
-
-    -- * LoadBalancerDescription
-    , LoadBalancerDescription
-    , loadBalancerDescription
-    , lbdAvailabilityZones
-    , lbdBackendServerDescriptions
-    , lbdCanonicalHostedZoneName
-    , lbdCanonicalHostedZoneNameID
-    , lbdCreatedTime
-    , lbdDNSName
-    , lbdHealthCheck
-    , lbdInstances
-    , lbdListenerDescriptions
-    , lbdLoadBalancerName
-    , lbdPolicies
-    , lbdScheme
-    , lbdSecurityGroups
-    , lbdSourceSecurityGroup
-    , lbdSubnets
-    , lbdVPCId
-
-    -- * BackendServerDescription
-    , BackendServerDescription
-    , backendServerDescription
-    , bsdInstancePort
-    , bsdPolicyNames
-
-    -- * PolicyAttributeDescription
-    , PolicyAttributeDescription
-    , policyAttributeDescription
-    , padAttributeName
-    , padAttributeValue
-
-    -- * AdditionalAttribute
-    , AdditionalAttribute
-    , additionalAttribute
-    , aaKey
-    , aaValue
-
-    -- * ConnectionSettings
-    , ConnectionSettings
-    , connectionSettings
-    , csIdleTimeout
-
-    -- * PolicyTypeDescription
-    , PolicyTypeDescription
-    , policyTypeDescription
-    , ptdDescription
-    , ptdPolicyAttributeTypeDescriptions
-    , ptdPolicyTypeName
-
-    -- * Policies
-    , Policies
-    , policies
-    , pAppCookieStickinessPolicies
-    , pLBCookieStickinessPolicies
-    , pOtherPolicies
-
-    -- * Listener
-    , Listener
-    , listener
-    , lInstancePort
-    , lInstanceProtocol
-    , lLoadBalancerPort
-    , lProtocol
-    , lSSLCertificateId
-
-    -- * ConnectionDraining
-    , ConnectionDraining
-    , connectionDraining
-    , cdEnabled
-    , cdTimeout
-
-    -- * InstanceState
-    , InstanceState
-    , instanceState
-    , isDescription
-    , isInstanceId
-    , isReasonCode
-    , isState
-
-    -- * TagKeyOnly
-    , TagKeyOnly
-    , tagKeyOnly
-    , tkoKey
-
-    -- * Instance
-    , Instance
-    , instance'
-    , iInstanceId
-    ) where
-
-import Network.AWS.Prelude
-import Network.AWS.Signing
-import qualified GHC.Exts
-
--- | Version @2012-06-01@ of the Amazon Elastic Load Balancing service.
-data ELB
-
-instance AWSService ELB where
-    type Sg ELB = V4
-    type Er ELB = RESTError
-
-    service = service'
-      where
-        service' :: Service ELB
-        service' = Service
-            { _svcAbbrev       = "ELB"
-            , _svcPrefix       = "elasticloadbalancing"
-            , _svcVersion      = "2012-06-01"
-            , _svcTargetPrefix = Nothing
-            , _svcJSONVersion  = Nothing
-            , _svcHandle       = handle
-            , _svcRetry        = retry
-            }
-
-        handle :: Status
-               -> Maybe (LazyByteString -> ServiceError RESTError)
-        handle = restError statusSuccess service'
-
-        retry :: Retry ELB
-        retry = Exponential
-            { _retryBase     = 0.05
-            , _retryGrowth   = 2
-            , _retryAttempts = 5
-            , _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://elasticloadbalancing.amazonaws.com/doc/2012-06-01/"
-{-# INLINE ns #-}
-
-data SourceSecurityGroup = SourceSecurityGroup
-    { _ssgGroupName  :: Maybe Text
-    , _ssgOwnerAlias :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'SourceSecurityGroup' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ssgGroupName' @::@ 'Maybe' 'Text'
---
--- * 'ssgOwnerAlias' @::@ 'Maybe' 'Text'
---
-sourceSecurityGroup :: SourceSecurityGroup
-sourceSecurityGroup = SourceSecurityGroup
-    { _ssgOwnerAlias = Nothing
-    , _ssgGroupName  = Nothing
-    }
-
--- | The name of the security group.
-ssgGroupName :: Lens' SourceSecurityGroup (Maybe Text)
-ssgGroupName = lens _ssgGroupName (\s a -> s { _ssgGroupName = a })
-
--- | The owner of the security group.
-ssgOwnerAlias :: Lens' SourceSecurityGroup (Maybe Text)
-ssgOwnerAlias = lens _ssgOwnerAlias (\s a -> s { _ssgOwnerAlias = a })
-
-instance FromXML SourceSecurityGroup where
-    parseXML x = SourceSecurityGroup
-        <$> x .@? "GroupName"
-        <*> x .@? "OwnerAlias"
-
-instance ToQuery SourceSecurityGroup where
-    toQuery SourceSecurityGroup{..} = mconcat
-        [ "GroupName"  =? _ssgGroupName
-        , "OwnerAlias" =? _ssgOwnerAlias
-        ]
-
-data TagDescription = TagDescription
-    { _tdLoadBalancerName :: Maybe Text
-    , _tdTags             :: List1 "member" Tag
-    } deriving (Eq, Read, Show)
-
--- | 'TagDescription' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tdLoadBalancerName' @::@ 'Maybe' 'Text'
---
--- * 'tdTags' @::@ 'NonEmpty' 'Tag'
---
-tagDescription :: NonEmpty Tag -- ^ 'tdTags'
-               -> TagDescription
-tagDescription p1 = TagDescription
-    { _tdTags             = withIso _List1 (const id) p1
-    , _tdLoadBalancerName = Nothing
-    }
-
--- | The name of the load balancer.
-tdLoadBalancerName :: Lens' TagDescription (Maybe Text)
-tdLoadBalancerName =
-    lens _tdLoadBalancerName (\s a -> s { _tdLoadBalancerName = a })
-
--- | The tags.
-tdTags :: Lens' TagDescription (NonEmpty Tag)
-tdTags = lens _tdTags (\s a -> s { _tdTags = a }) . _List1
-
-instance FromXML TagDescription where
-    parseXML x = TagDescription
-        <$> x .@? "LoadBalancerName"
-        <*> x .@  "Tags"
-
-instance ToQuery TagDescription where
-    toQuery TagDescription{..} = mconcat
-        [ "LoadBalancerName" =? _tdLoadBalancerName
-        , "Tags"             =? _tdTags
-        ]
-
-data Tag = Tag
-    { _tagKey   :: Text
-    , _tagValue :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Tag' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tagKey' @::@ 'Text'
---
--- * 'tagValue' @::@ 'Maybe' 'Text'
---
-tag :: Text -- ^ 'tagKey'
-    -> Tag
-tag p1 = Tag
-    { _tagKey   = p1
-    , _tagValue = Nothing
-    }
-
--- | The key of the tag.
-tagKey :: Lens' Tag Text
-tagKey = lens _tagKey (\s a -> s { _tagKey = a })
-
--- | The value of the tag.
-tagValue :: Lens' Tag (Maybe Text)
-tagValue = lens _tagValue (\s a -> s { _tagValue = a })
-
-instance FromXML Tag where
-    parseXML x = Tag
-        <$> x .@  "Key"
-        <*> x .@? "Value"
-
-instance ToQuery Tag where
-    toQuery Tag{..} = mconcat
-        [ "Key"   =? _tagKey
-        , "Value" =? _tagValue
-        ]
-
-data PolicyAttributeTypeDescription = PolicyAttributeTypeDescription
-    { _patdAttributeName :: Maybe Text
-    , _patdAttributeType :: Maybe Text
-    , _patdCardinality   :: Maybe Text
-    , _patdDefaultValue  :: Maybe Text
-    , _patdDescription   :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'PolicyAttributeTypeDescription' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'patdAttributeName' @::@ 'Maybe' 'Text'
---
--- * 'patdAttributeType' @::@ 'Maybe' 'Text'
---
--- * 'patdCardinality' @::@ 'Maybe' 'Text'
---
--- * 'patdDefaultValue' @::@ 'Maybe' 'Text'
---
--- * 'patdDescription' @::@ 'Maybe' 'Text'
---
-policyAttributeTypeDescription :: PolicyAttributeTypeDescription
-policyAttributeTypeDescription = PolicyAttributeTypeDescription
-    { _patdAttributeName = Nothing
-    , _patdAttributeType = Nothing
-    , _patdDescription   = Nothing
-    , _patdDefaultValue  = Nothing
-    , _patdCardinality   = Nothing
-    }
-
--- | The name of the attribute.
-patdAttributeName :: Lens' PolicyAttributeTypeDescription (Maybe Text)
-patdAttributeName =
-    lens _patdAttributeName (\s a -> s { _patdAttributeName = a })
-
--- | The type of the attribute. For example, 'Boolean' or 'Integer'.
-patdAttributeType :: Lens' PolicyAttributeTypeDescription (Maybe Text)
-patdAttributeType =
-    lens _patdAttributeType (\s a -> s { _patdAttributeType = a })
-
--- | The cardinality of the attribute.
---
--- Valid values:
---
--- ONE(1) : Single value required ZERO_OR_ONE(0..1) : Up to one value can be
--- supplied ZERO_OR_MORE(0..*) : Optional. Multiple values are allowed ONE_OR_MORE(1..*0) : Required. Multiple values are allowed
---
-patdCardinality :: Lens' PolicyAttributeTypeDescription (Maybe Text)
-patdCardinality = lens _patdCardinality (\s a -> s { _patdCardinality = a })
-
--- | The default value of the attribute, if applicable.
-patdDefaultValue :: Lens' PolicyAttributeTypeDescription (Maybe Text)
-patdDefaultValue = lens _patdDefaultValue (\s a -> s { _patdDefaultValue = a })
-
--- | A description of the attribute.
-patdDescription :: Lens' PolicyAttributeTypeDescription (Maybe Text)
-patdDescription = lens _patdDescription (\s a -> s { _patdDescription = a })
-
-instance FromXML PolicyAttributeTypeDescription where
-    parseXML x = PolicyAttributeTypeDescription
-        <$> x .@? "AttributeName"
-        <*> x .@? "AttributeType"
-        <*> x .@? "Cardinality"
-        <*> x .@? "DefaultValue"
-        <*> x .@? "Description"
-
-instance ToQuery PolicyAttributeTypeDescription where
-    toQuery PolicyAttributeTypeDescription{..} = mconcat
-        [ "AttributeName" =? _patdAttributeName
-        , "AttributeType" =? _patdAttributeType
-        , "Cardinality"   =? _patdCardinality
-        , "DefaultValue"  =? _patdDefaultValue
-        , "Description"   =? _patdDescription
-        ]
-
-data HealthCheck = HealthCheck
-    { _hcHealthyThreshold   :: Nat
-    , _hcInterval           :: Nat
-    , _hcTarget             :: Text
-    , _hcTimeout            :: Nat
-    , _hcUnhealthyThreshold :: Nat
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'HealthCheck' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'hcHealthyThreshold' @::@ 'Natural'
---
--- * 'hcInterval' @::@ 'Natural'
---
--- * 'hcTarget' @::@ 'Text'
---
--- * 'hcTimeout' @::@ 'Natural'
---
--- * 'hcUnhealthyThreshold' @::@ 'Natural'
---
-healthCheck :: Text -- ^ 'hcTarget'
-            -> Natural -- ^ 'hcInterval'
-            -> Natural -- ^ 'hcTimeout'
-            -> Natural -- ^ 'hcUnhealthyThreshold'
-            -> Natural -- ^ 'hcHealthyThreshold'
-            -> HealthCheck
-healthCheck p1 p2 p3 p4 p5 = HealthCheck
-    { _hcTarget             = p1
-    , _hcInterval           = withIso _Nat (const id) p2
-    , _hcTimeout            = withIso _Nat (const id) p3
-    , _hcUnhealthyThreshold = withIso _Nat (const id) p4
-    , _hcHealthyThreshold   = withIso _Nat (const id) p5
-    }
-
--- | The number of consecutive health checks successes required before moving the
--- instance to the 'Healthy' state.
-hcHealthyThreshold :: Lens' HealthCheck Natural
-hcHealthyThreshold =
-    lens _hcHealthyThreshold (\s a -> s { _hcHealthyThreshold = a })
-        . _Nat
-
--- | The approximate interval, in seconds, between health checks of an individual
--- instance.
-hcInterval :: Lens' HealthCheck Natural
-hcInterval = lens _hcInterval (\s a -> s { _hcInterval = a }) . _Nat
-
--- | The instance being checked. The protocol is either TCP, HTTP, HTTPS, or SSL.
--- The range of valid ports is one (1) through 65535.
---
--- TCP is the default, specified as a TCP: port pair, for example "TCP:5000".
--- In this case, a health check simply attempts to open a TCP connection to the
--- instance on the specified port. Failure to connect within the configured
--- timeout is considered unhealthy.
---
--- SSL is also specified as SSL: port pair, for example, SSL:5000.
---
--- For HTTP/HTTPS, you must include a ping path in the string. HTTP is
--- specified as a HTTP:port;/;PathToPing; grouping, for example
--- "HTTP:80/weather/us/wa/seattle". In this case, a HTTP GET request is issued
--- to the instance on the given port and path. Any answer other than "200 OK"
--- within the timeout period is considered unhealthy.
---
--- The total length of the HTTP ping target must be 1024 16-bit Unicode
--- characters or less.
-hcTarget :: Lens' HealthCheck Text
-hcTarget = lens _hcTarget (\s a -> s { _hcTarget = a })
-
--- | The amount of time, in seconds, during which no response means a failed
--- health check.
---
--- This value must be less than the 'Interval' value.
-hcTimeout :: Lens' HealthCheck Natural
-hcTimeout = lens _hcTimeout (\s a -> s { _hcTimeout = a }) . _Nat
-
--- | The number of consecutive health check failures required before moving the
--- instance to the 'Unhealthy' state.
-hcUnhealthyThreshold :: Lens' HealthCheck Natural
-hcUnhealthyThreshold =
-    lens _hcUnhealthyThreshold (\s a -> s { _hcUnhealthyThreshold = a })
-        . _Nat
-
-instance FromXML HealthCheck where
-    parseXML x = HealthCheck
-        <$> x .@  "HealthyThreshold"
-        <*> x .@  "Interval"
-        <*> x .@  "Target"
-        <*> x .@  "Timeout"
-        <*> x .@  "UnhealthyThreshold"
-
-instance ToQuery HealthCheck where
-    toQuery HealthCheck{..} = mconcat
-        [ "HealthyThreshold"   =? _hcHealthyThreshold
-        , "Interval"           =? _hcInterval
-        , "Target"             =? _hcTarget
-        , "Timeout"            =? _hcTimeout
-        , "UnhealthyThreshold" =? _hcUnhealthyThreshold
-        ]
-
-newtype CrossZoneLoadBalancing = CrossZoneLoadBalancing
-    { _czlbEnabled :: Bool
-    } deriving (Eq, Ord, Read, Show, Enum)
-
--- | 'CrossZoneLoadBalancing' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'czlbEnabled' @::@ 'Bool'
---
-crossZoneLoadBalancing :: Bool -- ^ 'czlbEnabled'
-                       -> CrossZoneLoadBalancing
-crossZoneLoadBalancing p1 = CrossZoneLoadBalancing
-    { _czlbEnabled = p1
-    }
-
--- | Specifies whether cross-zone load balancing is enabled for the load balancer.
-czlbEnabled :: Lens' CrossZoneLoadBalancing Bool
-czlbEnabled = lens _czlbEnabled (\s a -> s { _czlbEnabled = a })
-
-instance FromXML CrossZoneLoadBalancing where
-    parseXML x = CrossZoneLoadBalancing
-        <$> x .@  "Enabled"
-
-instance ToQuery CrossZoneLoadBalancing where
-    toQuery CrossZoneLoadBalancing{..} = mconcat
-        [ "Enabled" =? _czlbEnabled
-        ]
-
-data LoadBalancerAttributes = LoadBalancerAttributes
-    { _lbaAccessLog              :: Maybe AccessLog
-    , _lbaAdditionalAttributes   :: List "member" AdditionalAttribute
-    , _lbaConnectionDraining     :: Maybe ConnectionDraining
-    , _lbaConnectionSettings     :: Maybe ConnectionSettings
-    , _lbaCrossZoneLoadBalancing :: Maybe CrossZoneLoadBalancing
-    } deriving (Eq, Read, Show)
-
--- | 'LoadBalancerAttributes' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lbaAccessLog' @::@ 'Maybe' 'AccessLog'
---
--- * 'lbaAdditionalAttributes' @::@ ['AdditionalAttribute']
---
--- * 'lbaConnectionDraining' @::@ 'Maybe' 'ConnectionDraining'
---
--- * 'lbaConnectionSettings' @::@ 'Maybe' 'ConnectionSettings'
---
--- * 'lbaCrossZoneLoadBalancing' @::@ 'Maybe' 'CrossZoneLoadBalancing'
---
-loadBalancerAttributes :: LoadBalancerAttributes
-loadBalancerAttributes = LoadBalancerAttributes
-    { _lbaCrossZoneLoadBalancing = Nothing
-    , _lbaAccessLog              = Nothing
-    , _lbaConnectionDraining     = Nothing
-    , _lbaConnectionSettings     = Nothing
-    , _lbaAdditionalAttributes   = mempty
-    }
-
--- | If enabled, the load balancer captures detailed information of all requests
--- and delivers the information to the Amazon S3 bucket that you specify.
---
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-access-logs.html Enable Access Logs> in the /Elastic Load BalancingDeveloper Guide/.
-lbaAccessLog :: Lens' LoadBalancerAttributes (Maybe AccessLog)
-lbaAccessLog = lens _lbaAccessLog (\s a -> s { _lbaAccessLog = a })
-
--- | This parameter is reserved.
-lbaAdditionalAttributes :: Lens' LoadBalancerAttributes [AdditionalAttribute]
-lbaAdditionalAttributes =
-    lens _lbaAdditionalAttributes (\s a -> s { _lbaAdditionalAttributes = a })
-        . _List
-
--- | If enabled, the load balancer allows existing requests to complete before the
--- load balancer shifts traffic away from a deregistered or unhealthy back-end
--- instance.
---
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/config-conn-drain.html Enable Connection Draining> in the /Elastic LoadBalancing Developer Guide/.
-lbaConnectionDraining :: Lens' LoadBalancerAttributes (Maybe ConnectionDraining)
-lbaConnectionDraining =
-    lens _lbaConnectionDraining (\s a -> s { _lbaConnectionDraining = a })
-
--- | If enabled, the load balancer allows the connections to remain idle (no data
--- is sent over the connection) for the specified duration.
---
--- By default, Elastic Load Balancing maintains a 60-second idle connection
--- timeout for both front-end and back-end connections of your load balancer.
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/config-idle-timeout.html Configure Idle Connection Timeout> in the /ElasticLoad Balancing Developer Guide/.
-lbaConnectionSettings :: Lens' LoadBalancerAttributes (Maybe ConnectionSettings)
-lbaConnectionSettings =
-    lens _lbaConnectionSettings (\s a -> s { _lbaConnectionSettings = a })
-
--- | If enabled, the load balancer routes the request traffic evenly across all
--- back-end instances regardless of the Availability Zones.
---
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-disable-crosszone-lb.html Enable Cross-Zone Load Balancing> in the /ElasticLoad Balancing Developer Guide/.
-lbaCrossZoneLoadBalancing :: Lens' LoadBalancerAttributes (Maybe CrossZoneLoadBalancing)
-lbaCrossZoneLoadBalancing =
-    lens _lbaCrossZoneLoadBalancing
-        (\s a -> s { _lbaCrossZoneLoadBalancing = a })
-
-instance FromXML LoadBalancerAttributes where
-    parseXML x = LoadBalancerAttributes
-        <$> x .@? "AccessLog"
-        <*> x .@? "AdditionalAttributes" .!@ mempty
-        <*> x .@? "ConnectionDraining"
-        <*> x .@? "ConnectionSettings"
-        <*> x .@? "CrossZoneLoadBalancing"
-
-instance ToQuery LoadBalancerAttributes where
-    toQuery LoadBalancerAttributes{..} = mconcat
-        [ "AccessLog"              =? _lbaAccessLog
-        , "AdditionalAttributes"   =? _lbaAdditionalAttributes
-        , "ConnectionDraining"     =? _lbaConnectionDraining
-        , "ConnectionSettings"     =? _lbaConnectionSettings
-        , "CrossZoneLoadBalancing" =? _lbaCrossZoneLoadBalancing
-        ]
-
-data AccessLog = AccessLog
-    { _alEmitInterval   :: Maybe Int
-    , _alEnabled        :: Bool
-    , _alS3BucketName   :: Maybe Text
-    , _alS3BucketPrefix :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'AccessLog' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'alEmitInterval' @::@ 'Maybe' 'Int'
---
--- * 'alEnabled' @::@ 'Bool'
---
--- * 'alS3BucketName' @::@ 'Maybe' 'Text'
---
--- * 'alS3BucketPrefix' @::@ 'Maybe' 'Text'
---
-accessLog :: Bool -- ^ 'alEnabled'
-          -> AccessLog
-accessLog p1 = AccessLog
-    { _alEnabled        = p1
-    , _alS3BucketName   = Nothing
-    , _alEmitInterval   = Nothing
-    , _alS3BucketPrefix = Nothing
-    }
-
--- | The interval for publishing the access logs. You can specify an interval of
--- either 5 minutes or 60 minutes.
---
--- Default: 60 minutes
-alEmitInterval :: Lens' AccessLog (Maybe Int)
-alEmitInterval = lens _alEmitInterval (\s a -> s { _alEmitInterval = a })
-
--- | Specifies whether access log is enabled for the load balancer.
-alEnabled :: Lens' AccessLog Bool
-alEnabled = lens _alEnabled (\s a -> s { _alEnabled = a })
-
--- | The name of the Amazon S3 bucket where the access logs are stored.
-alS3BucketName :: Lens' AccessLog (Maybe Text)
-alS3BucketName = lens _alS3BucketName (\s a -> s { _alS3BucketName = a })
-
--- | The logical hierarchy you created for your Amazon S3 bucket, for example 'my-bucket-prefix/prod'. If the prefix is not provided, the log is placed at the root level of the
--- bucket.
-alS3BucketPrefix :: Lens' AccessLog (Maybe Text)
-alS3BucketPrefix = lens _alS3BucketPrefix (\s a -> s { _alS3BucketPrefix = a })
-
-instance FromXML AccessLog where
-    parseXML x = AccessLog
-        <$> x .@? "EmitInterval"
-        <*> x .@  "Enabled"
-        <*> x .@? "S3BucketName"
-        <*> x .@? "S3BucketPrefix"
-
-instance ToQuery AccessLog where
-    toQuery AccessLog{..} = mconcat
-        [ "EmitInterval"   =? _alEmitInterval
-        , "Enabled"        =? _alEnabled
-        , "S3BucketName"   =? _alS3BucketName
-        , "S3BucketPrefix" =? _alS3BucketPrefix
-        ]
-
-data ListenerDescription = ListenerDescription
-    { _ldListener    :: Maybe Listener
-    , _ldPolicyNames :: List "member" Text
-    } deriving (Eq, Read, Show)
-
--- | 'ListenerDescription' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ldListener' @::@ 'Maybe' 'Listener'
---
--- * 'ldPolicyNames' @::@ ['Text']
---
-listenerDescription :: ListenerDescription
-listenerDescription = ListenerDescription
-    { _ldListener    = Nothing
-    , _ldPolicyNames = mempty
-    }
-
-ldListener :: Lens' ListenerDescription (Maybe Listener)
-ldListener = lens _ldListener (\s a -> s { _ldListener = a })
-
--- | The policies. If there are no policies enabled, the list is empty.
-ldPolicyNames :: Lens' ListenerDescription [Text]
-ldPolicyNames = lens _ldPolicyNames (\s a -> s { _ldPolicyNames = a }) . _List
-
-instance FromXML ListenerDescription where
-    parseXML x = ListenerDescription
-        <$> x .@? "Listener"
-        <*> x .@? "PolicyNames" .!@ mempty
-
-instance ToQuery ListenerDescription where
-    toQuery ListenerDescription{..} = mconcat
-        [ "Listener"    =? _ldListener
-        , "PolicyNames" =? _ldPolicyNames
-        ]
-
-data LBCookieStickinessPolicy = LBCookieStickinessPolicy
-    { _lbcspCookieExpirationPeriod :: Maybe Integer
-    , _lbcspPolicyName             :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'LBCookieStickinessPolicy' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lbcspCookieExpirationPeriod' @::@ 'Maybe' 'Integer'
---
--- * 'lbcspPolicyName' @::@ 'Maybe' 'Text'
---
-lbcookieStickinessPolicy :: LBCookieStickinessPolicy
-lbcookieStickinessPolicy = LBCookieStickinessPolicy
-    { _lbcspPolicyName             = Nothing
-    , _lbcspCookieExpirationPeriod = Nothing
-    }
-
--- | The time period, in seconds, after which the cookie should be considered
--- stale. If this parameter is not specified, the stickiness session lasts for
--- the duration of the browser session.
-lbcspCookieExpirationPeriod :: Lens' LBCookieStickinessPolicy (Maybe Integer)
-lbcspCookieExpirationPeriod =
-    lens _lbcspCookieExpirationPeriod
-        (\s a -> s { _lbcspCookieExpirationPeriod = a })
-
--- | The name for the policy being created. The name must be unique within the set
--- of policies for this load balancer.
-lbcspPolicyName :: Lens' LBCookieStickinessPolicy (Maybe Text)
-lbcspPolicyName = lens _lbcspPolicyName (\s a -> s { _lbcspPolicyName = a })
-
-instance FromXML LBCookieStickinessPolicy where
-    parseXML x = LBCookieStickinessPolicy
-        <$> x .@? "CookieExpirationPeriod"
-        <*> x .@? "PolicyName"
-
-instance ToQuery LBCookieStickinessPolicy where
-    toQuery LBCookieStickinessPolicy{..} = mconcat
-        [ "CookieExpirationPeriod" =? _lbcspCookieExpirationPeriod
-        , "PolicyName"             =? _lbcspPolicyName
-        ]
-
-data PolicyDescription = PolicyDescription
-    { _pdPolicyAttributeDescriptions :: List "member" PolicyAttributeDescription
-    , _pdPolicyName                  :: Maybe Text
-    , _pdPolicyTypeName              :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'PolicyDescription' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'pdPolicyAttributeDescriptions' @::@ ['PolicyAttributeDescription']
---
--- * 'pdPolicyName' @::@ 'Maybe' 'Text'
---
--- * 'pdPolicyTypeName' @::@ 'Maybe' 'Text'
---
-policyDescription :: PolicyDescription
-policyDescription = PolicyDescription
-    { _pdPolicyName                  = Nothing
-    , _pdPolicyTypeName              = Nothing
-    , _pdPolicyAttributeDescriptions = mempty
-    }
-
--- | The policy attributes.
-pdPolicyAttributeDescriptions :: Lens' PolicyDescription [PolicyAttributeDescription]
-pdPolicyAttributeDescriptions =
-    lens _pdPolicyAttributeDescriptions
-        (\s a -> s { _pdPolicyAttributeDescriptions = a })
-            . _List
-
--- | The name of the policy.
-pdPolicyName :: Lens' PolicyDescription (Maybe Text)
-pdPolicyName = lens _pdPolicyName (\s a -> s { _pdPolicyName = a })
-
--- | The name of the policy type.
-pdPolicyTypeName :: Lens' PolicyDescription (Maybe Text)
-pdPolicyTypeName = lens _pdPolicyTypeName (\s a -> s { _pdPolicyTypeName = a })
-
-instance FromXML PolicyDescription where
-    parseXML x = PolicyDescription
-        <$> x .@? "PolicyAttributeDescriptions" .!@ mempty
-        <*> x .@? "PolicyName"
-        <*> x .@? "PolicyTypeName"
-
-instance ToQuery PolicyDescription where
-    toQuery PolicyDescription{..} = mconcat
-        [ "PolicyAttributeDescriptions" =? _pdPolicyAttributeDescriptions
-        , "PolicyName"                  =? _pdPolicyName
-        , "PolicyTypeName"              =? _pdPolicyTypeName
-        ]
-
-data AppCookieStickinessPolicy = AppCookieStickinessPolicy
-    { _acspCookieName :: Maybe Text
-    , _acspPolicyName :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'AppCookieStickinessPolicy' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'acspCookieName' @::@ 'Maybe' 'Text'
---
--- * 'acspPolicyName' @::@ 'Maybe' 'Text'
---
-appCookieStickinessPolicy :: AppCookieStickinessPolicy
-appCookieStickinessPolicy = AppCookieStickinessPolicy
-    { _acspPolicyName = Nothing
-    , _acspCookieName = Nothing
-    }
-
--- | The name of the application cookie used for stickiness.
-acspCookieName :: Lens' AppCookieStickinessPolicy (Maybe Text)
-acspCookieName = lens _acspCookieName (\s a -> s { _acspCookieName = a })
-
--- | The mnemonic name for the policy being created. The name must be unique
--- within a set of policies for this load balancer.
-acspPolicyName :: Lens' AppCookieStickinessPolicy (Maybe Text)
-acspPolicyName = lens _acspPolicyName (\s a -> s { _acspPolicyName = a })
-
-instance FromXML AppCookieStickinessPolicy where
-    parseXML x = AppCookieStickinessPolicy
-        <$> x .@? "CookieName"
-        <*> x .@? "PolicyName"
-
-instance ToQuery AppCookieStickinessPolicy where
-    toQuery AppCookieStickinessPolicy{..} = mconcat
-        [ "CookieName" =? _acspCookieName
-        , "PolicyName" =? _acspPolicyName
-        ]
-
-data PolicyAttribute = PolicyAttribute
-    { _paAttributeName  :: Maybe Text
-    , _paAttributeValue :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'PolicyAttribute' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'paAttributeName' @::@ 'Maybe' 'Text'
---
--- * 'paAttributeValue' @::@ 'Maybe' 'Text'
---
-policyAttribute :: PolicyAttribute
-policyAttribute = PolicyAttribute
-    { _paAttributeName  = Nothing
-    , _paAttributeValue = Nothing
-    }
-
--- | The name of the attribute.
-paAttributeName :: Lens' PolicyAttribute (Maybe Text)
-paAttributeName = lens _paAttributeName (\s a -> s { _paAttributeName = a })
-
--- | The value of the attribute.
-paAttributeValue :: Lens' PolicyAttribute (Maybe Text)
-paAttributeValue = lens _paAttributeValue (\s a -> s { _paAttributeValue = a })
-
-instance FromXML PolicyAttribute where
-    parseXML x = PolicyAttribute
-        <$> x .@? "AttributeName"
-        <*> x .@? "AttributeValue"
-
-instance ToQuery PolicyAttribute where
-    toQuery PolicyAttribute{..} = mconcat
-        [ "AttributeName"  =? _paAttributeName
-        , "AttributeValue" =? _paAttributeValue
-        ]
-
-data LoadBalancerDescription = LoadBalancerDescription
-    { _lbdAvailabilityZones         :: List "member" Text
-    , _lbdBackendServerDescriptions :: List "member" BackendServerDescription
-    , _lbdCanonicalHostedZoneName   :: Maybe Text
-    , _lbdCanonicalHostedZoneNameID :: Maybe Text
-    , _lbdCreatedTime               :: Maybe ISO8601
-    , _lbdDNSName                   :: Maybe Text
-    , _lbdHealthCheck               :: Maybe HealthCheck
-    , _lbdInstances                 :: List "member" Instance
-    , _lbdListenerDescriptions      :: List "member" ListenerDescription
-    , _lbdLoadBalancerName          :: Maybe Text
-    , _lbdPolicies                  :: Maybe Policies
-    , _lbdScheme                    :: Maybe Text
-    , _lbdSecurityGroups            :: List "member" Text
-    , _lbdSourceSecurityGroup       :: Maybe SourceSecurityGroup
-    , _lbdSubnets                   :: List "member" Text
-    , _lbdVPCId                     :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'LoadBalancerDescription' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lbdAvailabilityZones' @::@ ['Text']
---
--- * 'lbdBackendServerDescriptions' @::@ ['BackendServerDescription']
---
--- * 'lbdCanonicalHostedZoneName' @::@ 'Maybe' 'Text'
---
--- * 'lbdCanonicalHostedZoneNameID' @::@ 'Maybe' 'Text'
---
--- * 'lbdCreatedTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'lbdDNSName' @::@ 'Maybe' 'Text'
---
--- * 'lbdHealthCheck' @::@ 'Maybe' 'HealthCheck'
---
--- * 'lbdInstances' @::@ ['Instance']
---
--- * 'lbdListenerDescriptions' @::@ ['ListenerDescription']
---
--- * 'lbdLoadBalancerName' @::@ 'Maybe' 'Text'
---
--- * 'lbdPolicies' @::@ 'Maybe' 'Policies'
---
--- * 'lbdScheme' @::@ 'Maybe' 'Text'
---
--- * 'lbdSecurityGroups' @::@ ['Text']
---
--- * 'lbdSourceSecurityGroup' @::@ 'Maybe' 'SourceSecurityGroup'
---
--- * 'lbdSubnets' @::@ ['Text']
---
--- * 'lbdVPCId' @::@ 'Maybe' 'Text'
---
-loadBalancerDescription :: LoadBalancerDescription
-loadBalancerDescription = LoadBalancerDescription
-    { _lbdLoadBalancerName          = Nothing
-    , _lbdDNSName                   = Nothing
-    , _lbdCanonicalHostedZoneName   = Nothing
-    , _lbdCanonicalHostedZoneNameID = Nothing
-    , _lbdListenerDescriptions      = mempty
-    , _lbdPolicies                  = Nothing
-    , _lbdBackendServerDescriptions = mempty
-    , _lbdAvailabilityZones         = mempty
-    , _lbdSubnets                   = mempty
-    , _lbdVPCId                     = Nothing
-    , _lbdInstances                 = mempty
-    , _lbdHealthCheck               = Nothing
-    , _lbdSourceSecurityGroup       = Nothing
-    , _lbdSecurityGroups            = mempty
-    , _lbdCreatedTime               = Nothing
-    , _lbdScheme                    = Nothing
-    }
-
--- | The Availability Zones for the load balancer.
-lbdAvailabilityZones :: Lens' LoadBalancerDescription [Text]
-lbdAvailabilityZones =
-    lens _lbdAvailabilityZones (\s a -> s { _lbdAvailabilityZones = a })
-        . _List
-
--- | Information about the back-end servers.
-lbdBackendServerDescriptions :: Lens' LoadBalancerDescription [BackendServerDescription]
-lbdBackendServerDescriptions =
-    lens _lbdBackendServerDescriptions
-        (\s a -> s { _lbdBackendServerDescriptions = a })
-            . _List
-
--- | The Amazon Route 53 hosted zone associated with the load balancer.
---
--- For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/using-domain-names-with-elb.html Using Domain Names With Elastic Load Balancing> in
--- the /Elastic Load Balancing Developer Guide/.
-lbdCanonicalHostedZoneName :: Lens' LoadBalancerDescription (Maybe Text)
-lbdCanonicalHostedZoneName =
-    lens _lbdCanonicalHostedZoneName
-        (\s a -> s { _lbdCanonicalHostedZoneName = a })
-
--- | The ID of the Amazon Route 53 hosted zone name associated with the load
--- balancer.
-lbdCanonicalHostedZoneNameID :: Lens' LoadBalancerDescription (Maybe Text)
-lbdCanonicalHostedZoneNameID =
-    lens _lbdCanonicalHostedZoneNameID
-        (\s a -> s { _lbdCanonicalHostedZoneNameID = a })
-
--- | The date and time the load balancer was created.
-lbdCreatedTime :: Lens' LoadBalancerDescription (Maybe UTCTime)
-lbdCreatedTime = lens _lbdCreatedTime (\s a -> s { _lbdCreatedTime = a }) . mapping _Time
-
--- | The external DNS name of the load balancer.
-lbdDNSName :: Lens' LoadBalancerDescription (Maybe Text)
-lbdDNSName = lens _lbdDNSName (\s a -> s { _lbdDNSName = a })
-
--- | Information about the health checks conducted on the load balancer.
-lbdHealthCheck :: Lens' LoadBalancerDescription (Maybe HealthCheck)
-lbdHealthCheck = lens _lbdHealthCheck (\s a -> s { _lbdHealthCheck = a })
-
--- | The IDs of the instances for the load balancer.
-lbdInstances :: Lens' LoadBalancerDescription [Instance]
-lbdInstances = lens _lbdInstances (\s a -> s { _lbdInstances = a }) . _List
-
--- | The listeners for the load balancer.
-lbdListenerDescriptions :: Lens' LoadBalancerDescription [ListenerDescription]
-lbdListenerDescriptions =
-    lens _lbdListenerDescriptions (\s a -> s { _lbdListenerDescriptions = a })
-        . _List
-
--- | The name of the load balancer.
-lbdLoadBalancerName :: Lens' LoadBalancerDescription (Maybe Text)
-lbdLoadBalancerName =
-    lens _lbdLoadBalancerName (\s a -> s { _lbdLoadBalancerName = a })
-
--- | The policies defined for the load balancer.
-lbdPolicies :: Lens' LoadBalancerDescription (Maybe Policies)
-lbdPolicies = lens _lbdPolicies (\s a -> s { _lbdPolicies = a })
-
--- | The type of load balancer. Valid only for load balancers in a VPC.
---
--- If 'Scheme' is 'internet-facing', the load balancer has a public DNS name that
--- resolves to a public IP address.
---
--- If 'Scheme' is 'internal', the load balancer has a public DNS name that resolves
--- to a private IP address.
-lbdScheme :: Lens' LoadBalancerDescription (Maybe Text)
-lbdScheme = lens _lbdScheme (\s a -> s { _lbdScheme = a })
-
--- | The security groups for the load balancer. Valid only for load balancers in a
--- VPC.
-lbdSecurityGroups :: Lens' LoadBalancerDescription [Text]
-lbdSecurityGroups =
-    lens _lbdSecurityGroups (\s a -> s { _lbdSecurityGroups = a })
-        . _List
-
--- | The security group that you can use as part of your inbound rules for your
--- load balancer's back-end application instances. To only allow traffic from
--- load balancers, add a security group rule to your back end instance that
--- specifies this source security group as the inbound source.
-lbdSourceSecurityGroup :: Lens' LoadBalancerDescription (Maybe SourceSecurityGroup)
-lbdSourceSecurityGroup =
-    lens _lbdSourceSecurityGroup (\s a -> s { _lbdSourceSecurityGroup = a })
-
--- | The IDs of the subnets for the load balancer.
-lbdSubnets :: Lens' LoadBalancerDescription [Text]
-lbdSubnets = lens _lbdSubnets (\s a -> s { _lbdSubnets = a }) . _List
-
--- | The ID of the VPC for the load balancer.
-lbdVPCId :: Lens' LoadBalancerDescription (Maybe Text)
-lbdVPCId = lens _lbdVPCId (\s a -> s { _lbdVPCId = a })
-
-instance FromXML LoadBalancerDescription where
-    parseXML x = LoadBalancerDescription
-        <$> x .@? "AvailabilityZones" .!@ mempty
-        <*> x .@? "BackendServerDescriptions" .!@ mempty
-        <*> x .@? "CanonicalHostedZoneName"
-        <*> x .@? "CanonicalHostedZoneNameID"
-        <*> x .@? "CreatedTime"
-        <*> x .@? "DNSName"
-        <*> x .@? "HealthCheck"
-        <*> x .@? "Instances" .!@ mempty
-        <*> x .@? "ListenerDescriptions" .!@ mempty
-        <*> x .@? "LoadBalancerName"
-        <*> x .@? "Policies"
-        <*> x .@? "Scheme"
-        <*> x .@? "SecurityGroups" .!@ mempty
-        <*> x .@? "SourceSecurityGroup"
-        <*> x .@? "Subnets" .!@ mempty
-        <*> x .@? "VPCId"
-
-instance ToQuery LoadBalancerDescription where
-    toQuery LoadBalancerDescription{..} = mconcat
-        [ "AvailabilityZones"         =? _lbdAvailabilityZones
-        , "BackendServerDescriptions" =? _lbdBackendServerDescriptions
-        , "CanonicalHostedZoneName"   =? _lbdCanonicalHostedZoneName
-        , "CanonicalHostedZoneNameID" =? _lbdCanonicalHostedZoneNameID
-        , "CreatedTime"               =? _lbdCreatedTime
-        , "DNSName"                   =? _lbdDNSName
-        , "HealthCheck"               =? _lbdHealthCheck
-        , "Instances"                 =? _lbdInstances
-        , "ListenerDescriptions"      =? _lbdListenerDescriptions
-        , "LoadBalancerName"          =? _lbdLoadBalancerName
-        , "Policies"                  =? _lbdPolicies
-        , "Scheme"                    =? _lbdScheme
-        , "SecurityGroups"            =? _lbdSecurityGroups
-        , "SourceSecurityGroup"       =? _lbdSourceSecurityGroup
-        , "Subnets"                   =? _lbdSubnets
-        , "VPCId"                     =? _lbdVPCId
-        ]
-
-data BackendServerDescription = BackendServerDescription
-    { _bsdInstancePort :: Maybe Nat
-    , _bsdPolicyNames  :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'BackendServerDescription' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'bsdInstancePort' @::@ 'Maybe' 'Natural'
---
--- * 'bsdPolicyNames' @::@ ['Text']
---
-backendServerDescription :: BackendServerDescription
-backendServerDescription = BackendServerDescription
-    { _bsdInstancePort = Nothing
-    , _bsdPolicyNames  = mempty
-    }
-
--- | The port on which the back-end server is listening.
-bsdInstancePort :: Lens' BackendServerDescription (Maybe Natural)
-bsdInstancePort = lens _bsdInstancePort (\s a -> s { _bsdInstancePort = a }) . mapping _Nat
-
--- | The names of the policies enabled for the back-end server.
-bsdPolicyNames :: Lens' BackendServerDescription [Text]
-bsdPolicyNames = lens _bsdPolicyNames (\s a -> s { _bsdPolicyNames = a }) . _List
-
-instance FromXML BackendServerDescription where
-    parseXML x = BackendServerDescription
-        <$> x .@? "InstancePort"
-        <*> x .@? "PolicyNames" .!@ mempty
-
-instance ToQuery BackendServerDescription where
-    toQuery BackendServerDescription{..} = mconcat
-        [ "InstancePort" =? _bsdInstancePort
-        , "PolicyNames"  =? _bsdPolicyNames
-        ]
-
-data PolicyAttributeDescription = PolicyAttributeDescription
-    { _padAttributeName  :: Maybe Text
-    , _padAttributeValue :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'PolicyAttributeDescription' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'padAttributeName' @::@ 'Maybe' 'Text'
---
--- * 'padAttributeValue' @::@ 'Maybe' 'Text'
---
-policyAttributeDescription :: PolicyAttributeDescription
-policyAttributeDescription = PolicyAttributeDescription
-    { _padAttributeName  = Nothing
-    , _padAttributeValue = Nothing
-    }
-
--- | The name of the attribute.
-padAttributeName :: Lens' PolicyAttributeDescription (Maybe Text)
-padAttributeName = lens _padAttributeName (\s a -> s { _padAttributeName = a })
-
--- | The value of the attribute.
-padAttributeValue :: Lens' PolicyAttributeDescription (Maybe Text)
-padAttributeValue =
-    lens _padAttributeValue (\s a -> s { _padAttributeValue = a })
-
-instance FromXML PolicyAttributeDescription where
-    parseXML x = PolicyAttributeDescription
-        <$> x .@? "AttributeName"
-        <*> x .@? "AttributeValue"
-
-instance ToQuery PolicyAttributeDescription where
-    toQuery PolicyAttributeDescription{..} = mconcat
-        [ "AttributeName"  =? _padAttributeName
-        , "AttributeValue" =? _padAttributeValue
-        ]
-
-data AdditionalAttribute = AdditionalAttribute
-    { _aaKey   :: Maybe Text
-    , _aaValue :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'AdditionalAttribute' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'aaKey' @::@ 'Maybe' 'Text'
---
--- * 'aaValue' @::@ 'Maybe' 'Text'
---
-additionalAttribute :: AdditionalAttribute
-additionalAttribute = AdditionalAttribute
-    { _aaKey   = Nothing
-    , _aaValue = Nothing
-    }
-
--- | This parameter is reserved.
-aaKey :: Lens' AdditionalAttribute (Maybe Text)
-aaKey = lens _aaKey (\s a -> s { _aaKey = a })
-
--- | This parameter is reserved.
-aaValue :: Lens' AdditionalAttribute (Maybe Text)
-aaValue = lens _aaValue (\s a -> s { _aaValue = a })
-
-instance FromXML AdditionalAttribute where
-    parseXML x = AdditionalAttribute
-        <$> x .@? "Key"
-        <*> x .@? "Value"
-
-instance ToQuery AdditionalAttribute where
-    toQuery AdditionalAttribute{..} = mconcat
-        [ "Key"   =? _aaKey
-        , "Value" =? _aaValue
-        ]
-
-newtype ConnectionSettings = ConnectionSettings
-    { _csIdleTimeout :: Nat
-    } deriving (Eq, Ord, Read, Show, Enum, Num, Integral, Real)
-
--- | 'ConnectionSettings' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'csIdleTimeout' @::@ 'Natural'
---
-connectionSettings :: Natural -- ^ 'csIdleTimeout'
-                   -> ConnectionSettings
-connectionSettings p1 = ConnectionSettings
-    { _csIdleTimeout = withIso _Nat (const id) p1
-    }
-
--- | The time, in seconds, that the connection is allowed to be idle (no data has
--- been sent over the connection) before it is closed by the load balancer.
-csIdleTimeout :: Lens' ConnectionSettings Natural
-csIdleTimeout = lens _csIdleTimeout (\s a -> s { _csIdleTimeout = a }) . _Nat
-
-instance FromXML ConnectionSettings where
-    parseXML x = ConnectionSettings
-        <$> x .@  "IdleTimeout"
-
-instance ToQuery ConnectionSettings where
-    toQuery ConnectionSettings{..} = mconcat
-        [ "IdleTimeout" =? _csIdleTimeout
-        ]
-
-data PolicyTypeDescription = PolicyTypeDescription
-    { _ptdDescription                     :: Maybe Text
-    , _ptdPolicyAttributeTypeDescriptions :: List "member" PolicyAttributeTypeDescription
-    , _ptdPolicyTypeName                  :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'PolicyTypeDescription' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ptdDescription' @::@ 'Maybe' 'Text'
---
--- * 'ptdPolicyAttributeTypeDescriptions' @::@ ['PolicyAttributeTypeDescription']
---
--- * 'ptdPolicyTypeName' @::@ 'Maybe' 'Text'
---
-policyTypeDescription :: PolicyTypeDescription
-policyTypeDescription = PolicyTypeDescription
-    { _ptdPolicyTypeName                  = Nothing
-    , _ptdDescription                     = Nothing
-    , _ptdPolicyAttributeTypeDescriptions = mempty
-    }
-
--- | A description of the policy type.
-ptdDescription :: Lens' PolicyTypeDescription (Maybe Text)
-ptdDescription = lens _ptdDescription (\s a -> s { _ptdDescription = a })
-
--- | The description of the policy attributes associated with the policies defined
--- by Elastic Load Balancing.
-ptdPolicyAttributeTypeDescriptions :: Lens' PolicyTypeDescription [PolicyAttributeTypeDescription]
-ptdPolicyAttributeTypeDescriptions =
-    lens _ptdPolicyAttributeTypeDescriptions
-        (\s a -> s { _ptdPolicyAttributeTypeDescriptions = a })
-            . _List
-
--- | The name of the policy type.
-ptdPolicyTypeName :: Lens' PolicyTypeDescription (Maybe Text)
-ptdPolicyTypeName =
-    lens _ptdPolicyTypeName (\s a -> s { _ptdPolicyTypeName = a })
-
-instance FromXML PolicyTypeDescription where
-    parseXML x = PolicyTypeDescription
-        <$> x .@? "Description"
-        <*> x .@? "PolicyAttributeTypeDescriptions" .!@ mempty
-        <*> x .@? "PolicyTypeName"
-
-instance ToQuery PolicyTypeDescription where
-    toQuery PolicyTypeDescription{..} = mconcat
-        [ "Description"                     =? _ptdDescription
-        , "PolicyAttributeTypeDescriptions" =? _ptdPolicyAttributeTypeDescriptions
-        , "PolicyTypeName"                  =? _ptdPolicyTypeName
-        ]
-
-data Policies = Policies
-    { _pAppCookieStickinessPolicies :: List "member" AppCookieStickinessPolicy
-    , _pLBCookieStickinessPolicies  :: List "member" LBCookieStickinessPolicy
-    , _pOtherPolicies               :: List "member" Text
-    } deriving (Eq, Read, Show)
-
--- | 'Policies' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'pAppCookieStickinessPolicies' @::@ ['AppCookieStickinessPolicy']
---
--- * 'pLBCookieStickinessPolicies' @::@ ['LBCookieStickinessPolicy']
---
--- * 'pOtherPolicies' @::@ ['Text']
---
-policies :: Policies
-policies = Policies
-    { _pAppCookieStickinessPolicies = mempty
-    , _pLBCookieStickinessPolicies  = mempty
-    , _pOtherPolicies               = mempty
-    }
-
--- | The stickiness policies created using 'CreateAppCookieStickinessPolicy'.
-pAppCookieStickinessPolicies :: Lens' Policies [AppCookieStickinessPolicy]
-pAppCookieStickinessPolicies =
-    lens _pAppCookieStickinessPolicies
-        (\s a -> s { _pAppCookieStickinessPolicies = a })
-            . _List
-
--- | The stickiness policies created using 'CreateLBCookieStickinessPolicy'.
-pLBCookieStickinessPolicies :: Lens' Policies [LBCookieStickinessPolicy]
-pLBCookieStickinessPolicies =
-    lens _pLBCookieStickinessPolicies
-        (\s a -> s { _pLBCookieStickinessPolicies = a })
-            . _List
-
--- | The policies other than the stickiness policies.
-pOtherPolicies :: Lens' Policies [Text]
-pOtherPolicies = lens _pOtherPolicies (\s a -> s { _pOtherPolicies = a }) . _List
-
-instance FromXML Policies where
-    parseXML x = Policies
-        <$> x .@? "AppCookieStickinessPolicies" .!@ mempty
-        <*> x .@? "LBCookieStickinessPolicies" .!@ mempty
-        <*> x .@? "OtherPolicies" .!@ mempty
-
-instance ToQuery Policies where
-    toQuery Policies{..} = mconcat
-        [ "AppCookieStickinessPolicies" =? _pAppCookieStickinessPolicies
-        , "LBCookieStickinessPolicies"  =? _pLBCookieStickinessPolicies
-        , "OtherPolicies"               =? _pOtherPolicies
-        ]
-
-data Listener = Listener
-    { _lInstancePort     :: Nat
-    , _lInstanceProtocol :: Maybe Text
-    , _lLoadBalancerPort :: Int
-    , _lProtocol         :: Text
-    , _lSSLCertificateId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Listener' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lInstancePort' @::@ 'Natural'
---
--- * 'lInstanceProtocol' @::@ 'Maybe' 'Text'
---
--- * 'lLoadBalancerPort' @::@ 'Int'
---
--- * 'lProtocol' @::@ 'Text'
---
--- * 'lSSLCertificateId' @::@ 'Maybe' 'Text'
---
-listener :: Text -- ^ 'lProtocol'
-         -> Int -- ^ 'lLoadBalancerPort'
-         -> Natural -- ^ 'lInstancePort'
-         -> Listener
-listener p1 p2 p3 = Listener
-    { _lProtocol         = p1
-    , _lLoadBalancerPort = p2
-    , _lInstancePort     = withIso _Nat (const id) p3
-    , _lInstanceProtocol = Nothing
-    , _lSSLCertificateId = Nothing
-    }
-
--- | The port on which the instance server is listening - 25, 80, 443, 465, 587,
--- or 1024-65535.
-lInstancePort :: Lens' Listener Natural
-lInstancePort = lens _lInstancePort (\s a -> s { _lInstancePort = a }) . _Nat
-
--- | The protocol to use for routing traffic to back-end instances: HTTP, HTTPS,
--- TCP, or SSL.
---
--- If the front-end protocol is HTTP, HTTPS, TCP, or SSL, 'InstanceProtocol' must
--- be at the same protocol.
---
--- If there is another listener with the same 'InstancePort' whose 'InstanceProtocol' is secure, (HTTPS or SSL), the listener's 'InstanceProtocol' must also be
--- secure.
---
--- If there is another listener with the same 'InstancePort' whose 'InstanceProtocol' is HTTP or TCP, the listener's 'InstanceProtocol' must be HTTP or TCP.
-lInstanceProtocol :: Lens' Listener (Maybe Text)
-lInstanceProtocol =
-    lens _lInstanceProtocol (\s a -> s { _lInstanceProtocol = a })
-
--- | The port on which the load balancer is listening: 25, 80, 443, 465, 587, or
--- 1024-65535.
-lLoadBalancerPort :: Lens' Listener Int
-lLoadBalancerPort =
-    lens _lLoadBalancerPort (\s a -> s { _lLoadBalancerPort = a })
-
--- | The load balancer transport protocol to use for routing: HTTP, HTTPS, TCP, or
--- SSL.
-lProtocol :: Lens' Listener Text
-lProtocol = lens _lProtocol (\s a -> s { _lProtocol = a })
-
--- | The Amazon Resource Name (ARN) of the server certificate.
-lSSLCertificateId :: Lens' Listener (Maybe Text)
-lSSLCertificateId =
-    lens _lSSLCertificateId (\s a -> s { _lSSLCertificateId = a })
-
-instance FromXML Listener where
-    parseXML x = Listener
-        <$> x .@  "InstancePort"
-        <*> x .@? "InstanceProtocol"
-        <*> x .@  "LoadBalancerPort"
-        <*> x .@  "Protocol"
-        <*> x .@? "SSLCertificateId"
-
-instance ToQuery Listener where
-    toQuery Listener{..} = mconcat
-        [ "InstancePort"     =? _lInstancePort
-        , "InstanceProtocol" =? _lInstanceProtocol
-        , "LoadBalancerPort" =? _lLoadBalancerPort
-        , "Protocol"         =? _lProtocol
-        , "SSLCertificateId" =? _lSSLCertificateId
-        ]
-
-data ConnectionDraining = ConnectionDraining
-    { _cdEnabled :: Bool
-    , _cdTimeout :: Maybe Int
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ConnectionDraining' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cdEnabled' @::@ 'Bool'
---
--- * 'cdTimeout' @::@ 'Maybe' 'Int'
---
-connectionDraining :: Bool -- ^ 'cdEnabled'
-                   -> ConnectionDraining
-connectionDraining p1 = ConnectionDraining
-    { _cdEnabled = p1
-    , _cdTimeout = Nothing
-    }
-
--- | Specifies whether connection draining is enabled for the load balancer.
-cdEnabled :: Lens' ConnectionDraining Bool
-cdEnabled = lens _cdEnabled (\s a -> s { _cdEnabled = a })
-
--- | The maximum time, in seconds, to keep the existing connections open before
--- deregistering the instances.
-cdTimeout :: Lens' ConnectionDraining (Maybe Int)
-cdTimeout = lens _cdTimeout (\s a -> s { _cdTimeout = a })
-
-instance FromXML ConnectionDraining where
-    parseXML x = ConnectionDraining
-        <$> x .@  "Enabled"
-        <*> x .@? "Timeout"
-
-instance ToQuery ConnectionDraining where
-    toQuery ConnectionDraining{..} = mconcat
-        [ "Enabled" =? _cdEnabled
-        , "Timeout" =? _cdTimeout
-        ]
-
-data InstanceState = InstanceState
-    { _isDescription :: Maybe Text
-    , _isInstanceId  :: Maybe Text
-    , _isReasonCode  :: Maybe Text
-    , _isState       :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'InstanceState' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'isDescription' @::@ 'Maybe' 'Text'
---
--- * 'isInstanceId' @::@ 'Maybe' 'Text'
---
--- * 'isReasonCode' @::@ 'Maybe' 'Text'
---
--- * 'isState' @::@ 'Maybe' 'Text'
---
-instanceState :: InstanceState
-instanceState = InstanceState
-    { _isInstanceId  = Nothing
-    , _isState       = Nothing
-    , _isReasonCode  = Nothing
-    , _isDescription = Nothing
-    }
-
--- | A description of the instance state. This string can contain one or more of
--- the following messages.
---
--- 'N/A'
---
--- 'A transient error occurred. Please try again later.'
---
--- 'Instance has failed at least the UnhealthyThreshold number of healthchecks consecutively.'
---
--- 'Instance has not passed the configured HealthyThreshold number of healthchecks consecutively.'
---
--- 'Instance registration is still in progress.'
---
--- 'Instance is in the EC2 Availability Zone for which LoadBalancer is notconfigured to route traffic to.'
---
--- 'Instance is not currently registered with the LoadBalancer.'
---
--- 'Instance deregistration currently in progress.'
---
--- 'Disable Availability Zone is currently in progress.'
---
--- 'Instance is in pending state.'
---
--- 'Instance is in stopped state.'
---
--- 'Instance is in terminated state.'
---
---
-isDescription :: Lens' InstanceState (Maybe Text)
-isDescription = lens _isDescription (\s a -> s { _isDescription = a })
-
--- | The ID of the instance.
-isInstanceId :: Lens' InstanceState (Maybe Text)
-isInstanceId = lens _isInstanceId (\s a -> s { _isInstanceId = a })
-
--- | Information about the cause of 'OutOfService' instances. Specifically, whether
--- the cause is Elastic Load Balancing or the instance.
---
--- Valid values: 'ELB' | 'Instance' | 'N/A'
-isReasonCode :: Lens' InstanceState (Maybe Text)
-isReasonCode = lens _isReasonCode (\s a -> s { _isReasonCode = a })
-
--- | The current state of the instance.
---
--- Valid values: 'InService' | 'OutOfService' | 'Unknown'
-isState :: Lens' InstanceState (Maybe Text)
-isState = lens _isState (\s a -> s { _isState = a })
-
-instance FromXML InstanceState where
-    parseXML x = InstanceState
-        <$> x .@? "Description"
-        <*> x .@? "InstanceId"
-        <*> x .@? "ReasonCode"
-        <*> x .@? "State"
-
-instance ToQuery InstanceState where
-    toQuery InstanceState{..} = mconcat
-        [ "Description" =? _isDescription
-        , "InstanceId"  =? _isInstanceId
-        , "ReasonCode"  =? _isReasonCode
-        , "State"       =? _isState
-        ]
-
-newtype TagKeyOnly = TagKeyOnly
-    { _tkoKey :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'TagKeyOnly' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tkoKey' @::@ 'Maybe' 'Text'
---
-tagKeyOnly :: TagKeyOnly
-tagKeyOnly = TagKeyOnly
-    { _tkoKey = Nothing
-    }
-
--- | The name of the key.
-tkoKey :: Lens' TagKeyOnly (Maybe Text)
-tkoKey = lens _tkoKey (\s a -> s { _tkoKey = a })
-
-instance FromXML TagKeyOnly where
-    parseXML x = TagKeyOnly
-        <$> x .@? "Key"
-
-instance ToQuery TagKeyOnly where
-    toQuery TagKeyOnly{..} = mconcat
-        [ "Key" =? _tkoKey
-        ]
-
-newtype Instance = Instance
-    { _iInstanceId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'Instance' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'iInstanceId' @::@ 'Maybe' 'Text'
---
-instance' :: Instance
-instance' = Instance
-    { _iInstanceId = Nothing
-    }
-
--- | The ID of the instance.
-iInstanceId :: Lens' Instance (Maybe Text)
-iInstanceId = lens _iInstanceId (\s a -> s { _iInstanceId = a })
-
-instance FromXML Instance where
-    parseXML x = Instance
-        <$> x .@? "InstanceId"
-
-instance ToQuery Instance where
-    toQuery Instance{..} = mconcat
-        [ "InstanceId" =? _iInstanceId
-        ]
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.ELB.Types
+-- 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.ELB.Types
+    (
+    -- * Service
+      ELB
+
+    -- * Errors
+    , _PolicyNotFoundException
+    , _AccessPointNotFoundException
+    , _DuplicatePolicyNameException
+    , _InvalidConfigurationRequestException
+    , _SubnetNotFoundException
+    , _LoadBalancerAttributeNotFoundException
+    , _InvalidSubnetException
+    , _DuplicateTagKeysException
+    , _DuplicateListenerException
+    , _TooManyTagsException
+    , _PolicyTypeNotFoundException
+    , _DuplicateAccessPointNameException
+    , _InvalidSecurityGroupException
+    , _ListenerNotFoundException
+    , _InvalidEndPointException
+    , _TooManyAccessPointsException
+    , _InvalidSchemeException
+    , _TooManyPoliciesException
+    , _CertificateNotFoundException
+
+    -- * AccessLog
+    , AccessLog
+    , accessLog
+    , alEmitInterval
+    , alS3BucketPrefix
+    , alS3BucketName
+    , alEnabled
+
+    -- * AdditionalAttribute
+    , AdditionalAttribute
+    , additionalAttribute
+    , aaValue
+    , aaKey
+
+    -- * AppCookieStickinessPolicy
+    , AppCookieStickinessPolicy
+    , appCookieStickinessPolicy
+    , acspPolicyName
+    , acspCookieName
+
+    -- * BackendServerDescription
+    , BackendServerDescription
+    , backendServerDescription
+    , bsdPolicyNames
+    , bsdInstancePort
+
+    -- * ConnectionDraining
+    , ConnectionDraining
+    , connectionDraining
+    , cdTimeout
+    , cdEnabled
+
+    -- * ConnectionSettings
+    , ConnectionSettings
+    , connectionSettings
+    , csIdleTimeout
+
+    -- * CrossZoneLoadBalancing
+    , CrossZoneLoadBalancing
+    , crossZoneLoadBalancing
+    , czlbEnabled
+
+    -- * HealthCheck
+    , HealthCheck
+    , healthCheck
+    , hcTarget
+    , hcInterval
+    , hcTimeout
+    , hcUnhealthyThreshold
+    , hcHealthyThreshold
+
+    -- * Instance
+    , Instance
+    , instance'
+    , iInstanceId
+
+    -- * InstanceState
+    , InstanceState
+    , instanceState
+    , isInstanceId
+    , isState
+    , isReasonCode
+    , isDescription
+
+    -- * LBCookieStickinessPolicy
+    , LBCookieStickinessPolicy
+    , lBCookieStickinessPolicy
+    , lbcspPolicyName
+    , lbcspCookieExpirationPeriod
+
+    -- * Listener
+    , Listener
+    , listener
+    , lInstanceProtocol
+    , lSSLCertificateId
+    , lProtocol
+    , lLoadBalancerPort
+    , lInstancePort
+
+    -- * ListenerDescription
+    , ListenerDescription
+    , listenerDescription
+    , ldPolicyNames
+    , ldListener
+
+    -- * LoadBalancerAttributes
+    , LoadBalancerAttributes
+    , loadBalancerAttributes
+    , lbaCrossZoneLoadBalancing
+    , lbaAccessLog
+    , lbaAdditionalAttributes
+    , lbaConnectionSettings
+    , lbaConnectionDraining
+
+    -- * LoadBalancerDescription
+    , LoadBalancerDescription
+    , loadBalancerDescription
+    , lbdSourceSecurityGroup
+    , lbdHealthCheck
+    , lbdCanonicalHostedZoneName
+    , lbdSecurityGroups
+    , lbdLoadBalancerName
+    , lbdCreatedTime
+    , lbdVPCId
+    , lbdSubnets
+    , lbdAvailabilityZones
+    , lbdBackendServerDescriptions
+    , lbdCanonicalHostedZoneNameId
+    , lbdInstances
+    , lbdScheme
+    , lbdListenerDescriptions
+    , lbdDNSName
+    , lbdPolicies
+
+    -- * Policies
+    , Policies
+    , policies
+    , pOtherPolicies
+    , pLBCookieStickinessPolicies
+    , pAppCookieStickinessPolicies
+
+    -- * PolicyAttribute
+    , PolicyAttribute
+    , policyAttribute
+    , paAttributeValue
+    , paAttributeName
+
+    -- * PolicyAttributeDescription
+    , PolicyAttributeDescription
+    , policyAttributeDescription
+    , padAttributeValue
+    , padAttributeName
+
+    -- * PolicyAttributeTypeDescription
+    , PolicyAttributeTypeDescription
+    , policyAttributeTypeDescription
+    , patdAttributeType
+    , patdCardinality
+    , patdDefaultValue
+    , patdAttributeName
+    , patdDescription
+
+    -- * PolicyDescription
+    , PolicyDescription
+    , policyDescription
+    , pdPolicyName
+    , pdPolicyAttributeDescriptions
+    , pdPolicyTypeName
+
+    -- * PolicyTypeDescription
+    , PolicyTypeDescription
+    , policyTypeDescription
+    , ptdPolicyTypeName
+    , ptdDescription
+    , ptdPolicyAttributeTypeDescriptions
+
+    -- * SourceSecurityGroup
+    , SourceSecurityGroup
+    , sourceSecurityGroup
+    , ssgOwnerAlias
+    , ssgGroupName
+
+    -- * Tag
+    , Tag
+    , tag
+    , tagValue
+    , tagKey
+
+    -- * TagDescription
+    , TagDescription
+    , tagDescription
+    , tdLoadBalancerName
+    , tdTags
+
+    -- * TagKeyOnly
+    , TagKeyOnly
+    , tagKeyOnly
+    , tkoKey
+    ) where
+
+import           Network.AWS.ELB.Types.Product
+import           Network.AWS.ELB.Types.Sum
+import           Network.AWS.Prelude
+import           Network.AWS.Sign.V4
+
+-- | Version @2012-06-01@ of the Amazon Elastic Load Balancing SDK.
+data ELB
+
+instance AWSService ELB where
+    type Sg ELB = V4
+    service = const svc
+      where
+        svc =
+            Service
+            { _svcAbbrev = "ELB"
+            , _svcPrefix = "elasticloadbalancing"
+            , _svcVersion = "2012-06-01"
+            , _svcEndpoint = defaultEndpoint svc
+            , _svcTimeout = Just 70
+            , _svcStatus = statusSuccess
+            , _svcError = parseXMLError
+            , _svcRetry = retry
+            }
+        retry =
+            Exponential
+            { _retryBase = 5.0e-2
+            , _retryGrowth = 2
+            , _retryAttempts = 5
+            , _retryCheck = check
+            }
+        check e
+          | has (hasCode "ThrottlingException" . hasStatus 400) e =
+              Just "throttling_exception"
+          | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
+          | has (hasStatus 503) e = Just "service_unavailable"
+          | has (hasStatus 500) e = Just "general_server_error"
+          | has (hasStatus 509) e = Just "limit_exceeded"
+          | otherwise = Nothing
+
+-- | One or more of the specified policies do not exist.
+_PolicyNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_PolicyNotFoundException =
+    _ServiceError . hasStatus 400 . hasCode "PolicyNotFound"
+
+-- | The specified load balancer does not exist.
+_AccessPointNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_AccessPointNotFoundException =
+    _ServiceError . hasStatus 400 . hasCode "LoadBalancerNotFound"
+
+-- | A policy with the specified name already exists for this load balancer.
+_DuplicatePolicyNameException :: AsError a => Getting (First ServiceError) a ServiceError
+_DuplicatePolicyNameException =
+    _ServiceError . hasStatus 400 . hasCode "DuplicatePolicyName"
+
+-- | The requested configuration change is not valid.
+_InvalidConfigurationRequestException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidConfigurationRequestException =
+    _ServiceError . hasStatus 409 . hasCode "InvalidConfigurationRequest"
+
+-- | One or more of the specified subnets do not exist.
+_SubnetNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_SubnetNotFoundException =
+    _ServiceError . hasStatus 400 . hasCode "SubnetNotFound"
+
+-- | The specified load balancer attribute does not exist.
+_LoadBalancerAttributeNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_LoadBalancerAttributeNotFoundException =
+    _ServiceError . hasStatus 400 . hasCode "LoadBalancerAttributeNotFound"
+
+-- | The specified VPC has no associated Internet gateway.
+_InvalidSubnetException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidSubnetException =
+    _ServiceError . hasStatus 400 . hasCode "InvalidSubnet"
+
+-- | A tag key was specified more than once.
+_DuplicateTagKeysException :: AsError a => Getting (First ServiceError) a ServiceError
+_DuplicateTagKeysException =
+    _ServiceError . hasStatus 400 . hasCode "DuplicateTagKeys"
+
+-- | A listener already exists for the specified 'LoadBalancerName' and
+-- 'LoadBalancerPort', but with a different 'InstancePort', 'Protocol', or
+-- 'SSLCertificateId'.
+_DuplicateListenerException :: AsError a => Getting (First ServiceError) a ServiceError
+_DuplicateListenerException =
+    _ServiceError . hasStatus 400 . hasCode "DuplicateListener"
+
+-- | The quota for the number of tags that can be assigned to a load balancer
+-- has been reached.
+_TooManyTagsException :: AsError a => Getting (First ServiceError) a ServiceError
+_TooManyTagsException = _ServiceError . hasStatus 400 . hasCode "TooManyTags"
+
+-- | One or more of the specified policy types do not exist.
+_PolicyTypeNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_PolicyTypeNotFoundException =
+    _ServiceError . hasStatus 400 . hasCode "PolicyTypeNotFound"
+
+-- | The specified load balancer name already exists for this account.
+_DuplicateAccessPointNameException :: AsError a => Getting (First ServiceError) a ServiceError
+_DuplicateAccessPointNameException =
+    _ServiceError . hasStatus 400 . hasCode "DuplicateLoadBalancerName"
+
+-- | One or more of the specified security groups do not exist.
+_InvalidSecurityGroupException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidSecurityGroupException =
+    _ServiceError . hasStatus 400 . hasCode "InvalidSecurityGroup"
+
+-- | The load balancer does not have a listener configured at the specified
+-- port.
+_ListenerNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_ListenerNotFoundException =
+    _ServiceError . hasStatus 400 . hasCode "ListenerNotFound"
+
+-- | The specified endpoint is not valid.
+_InvalidEndPointException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidEndPointException =
+    _ServiceError . hasStatus 400 . hasCode "InvalidInstance"
+
+-- | The quota for the number of load balancers has been reached.
+_TooManyAccessPointsException :: AsError a => Getting (First ServiceError) a ServiceError
+_TooManyAccessPointsException =
+    _ServiceError . hasStatus 400 . hasCode "TooManyLoadBalancers"
+
+-- | The specified value for the schema is not valid. You can only specify a
+-- scheme for load balancers in a VPC.
+_InvalidSchemeException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidSchemeException =
+    _ServiceError . hasStatus 400 . hasCode "InvalidScheme"
+
+-- | The quota for the number of policies for this load balancer has been
+-- reached.
+_TooManyPoliciesException :: AsError a => Getting (First ServiceError) a ServiceError
+_TooManyPoliciesException =
+    _ServiceError . hasStatus 400 . hasCode "TooManyPolicies"
+
+-- | The specified SSL ID does not refer to a valid SSL certificate in AWS
+-- Identity and Access Management (IAM).
+_CertificateNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_CertificateNotFoundException =
+    _ServiceError . hasStatus 400 . hasCode "CertificateNotFound"
diff --git a/gen/Network/AWS/ELB/Types/Product.hs b/gen/Network/AWS/ELB/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/ELB/Types/Product.hs
@@ -0,0 +1,1425 @@
+{-# 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.ELB.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.ELB.Types.Product where
+
+import           Network.AWS.ELB.Types.Sum
+import           Network.AWS.Prelude
+
+-- | Information about the 'AccessLog' attribute.
+--
+-- /See:/ 'accessLog' smart constructor.
+data AccessLog = AccessLog'
+    { _alEmitInterval   :: !(Maybe Int)
+    , _alS3BucketPrefix :: !(Maybe Text)
+    , _alS3BucketName   :: !(Maybe Text)
+    , _alEnabled        :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccessLog' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alEmitInterval'
+--
+-- * 'alS3BucketPrefix'
+--
+-- * 'alS3BucketName'
+--
+-- * 'alEnabled'
+accessLog
+    :: Bool -- ^ 'alEnabled'
+    -> AccessLog
+accessLog pEnabled_ =
+    AccessLog'
+    { _alEmitInterval = Nothing
+    , _alS3BucketPrefix = Nothing
+    , _alS3BucketName = Nothing
+    , _alEnabled = pEnabled_
+    }
+
+-- | The interval for publishing the access logs. You can specify an interval
+-- of either 5 minutes or 60 minutes.
+--
+-- Default: 60 minutes
+alEmitInterval :: Lens' AccessLog (Maybe Int)
+alEmitInterval = lens _alEmitInterval (\ s a -> s{_alEmitInterval = a});
+
+-- | The logical hierarchy you created for your Amazon S3 bucket, for example
+-- 'my-bucket-prefix\/prod'. If the prefix is not provided, the log is
+-- placed at the root level of the bucket.
+alS3BucketPrefix :: Lens' AccessLog (Maybe Text)
+alS3BucketPrefix = lens _alS3BucketPrefix (\ s a -> s{_alS3BucketPrefix = a});
+
+-- | The name of the Amazon S3 bucket where the access logs are stored.
+alS3BucketName :: Lens' AccessLog (Maybe Text)
+alS3BucketName = lens _alS3BucketName (\ s a -> s{_alS3BucketName = a});
+
+-- | Specifies whether access log is enabled for the load balancer.
+alEnabled :: Lens' AccessLog Bool
+alEnabled = lens _alEnabled (\ s a -> s{_alEnabled = a});
+
+instance FromXML AccessLog where
+        parseXML x
+          = AccessLog' <$>
+              (x .@? "EmitInterval") <*> (x .@? "S3BucketPrefix")
+                <*> (x .@? "S3BucketName")
+                <*> (x .@ "Enabled")
+
+instance ToQuery AccessLog where
+        toQuery AccessLog'{..}
+          = mconcat
+              ["EmitInterval" =: _alEmitInterval,
+               "S3BucketPrefix" =: _alS3BucketPrefix,
+               "S3BucketName" =: _alS3BucketName,
+               "Enabled" =: _alEnabled]
+
+-- | This data type is reserved.
+--
+-- /See:/ 'additionalAttribute' smart constructor.
+data AdditionalAttribute = AdditionalAttribute'
+    { _aaValue :: !(Maybe Text)
+    , _aaKey   :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdditionalAttribute' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaValue'
+--
+-- * 'aaKey'
+additionalAttribute
+    :: AdditionalAttribute
+additionalAttribute =
+    AdditionalAttribute'
+    { _aaValue = Nothing
+    , _aaKey = Nothing
+    }
+
+-- | This parameter is reserved.
+aaValue :: Lens' AdditionalAttribute (Maybe Text)
+aaValue = lens _aaValue (\ s a -> s{_aaValue = a});
+
+-- | This parameter is reserved.
+aaKey :: Lens' AdditionalAttribute (Maybe Text)
+aaKey = lens _aaKey (\ s a -> s{_aaKey = a});
+
+instance FromXML AdditionalAttribute where
+        parseXML x
+          = AdditionalAttribute' <$>
+              (x .@? "Value") <*> (x .@? "Key")
+
+instance ToQuery AdditionalAttribute where
+        toQuery AdditionalAttribute'{..}
+          = mconcat ["Value" =: _aaValue, "Key" =: _aaKey]
+
+-- | Information about a policy for application-controlled session
+-- stickiness.
+--
+-- /See:/ 'appCookieStickinessPolicy' smart constructor.
+data AppCookieStickinessPolicy = AppCookieStickinessPolicy'
+    { _acspPolicyName :: !(Maybe Text)
+    , _acspCookieName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AppCookieStickinessPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acspPolicyName'
+--
+-- * 'acspCookieName'
+appCookieStickinessPolicy
+    :: AppCookieStickinessPolicy
+appCookieStickinessPolicy =
+    AppCookieStickinessPolicy'
+    { _acspPolicyName = Nothing
+    , _acspCookieName = Nothing
+    }
+
+-- | The mnemonic name for the policy being created. The name must be unique
+-- within a set of policies for this load balancer.
+acspPolicyName :: Lens' AppCookieStickinessPolicy (Maybe Text)
+acspPolicyName = lens _acspPolicyName (\ s a -> s{_acspPolicyName = a});
+
+-- | The name of the application cookie used for stickiness.
+acspCookieName :: Lens' AppCookieStickinessPolicy (Maybe Text)
+acspCookieName = lens _acspCookieName (\ s a -> s{_acspCookieName = a});
+
+instance FromXML AppCookieStickinessPolicy where
+        parseXML x
+          = AppCookieStickinessPolicy' <$>
+              (x .@? "PolicyName") <*> (x .@? "CookieName")
+
+-- | Information about the configuration of a back-end server.
+--
+-- /See:/ 'backendServerDescription' smart constructor.
+data BackendServerDescription = BackendServerDescription'
+    { _bsdPolicyNames  :: !(Maybe [Text])
+    , _bsdInstancePort :: !(Maybe Nat)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServerDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsdPolicyNames'
+--
+-- * 'bsdInstancePort'
+backendServerDescription
+    :: BackendServerDescription
+backendServerDescription =
+    BackendServerDescription'
+    { _bsdPolicyNames = Nothing
+    , _bsdInstancePort = Nothing
+    }
+
+-- | The names of the policies enabled for the back-end server.
+bsdPolicyNames :: Lens' BackendServerDescription [Text]
+bsdPolicyNames = lens _bsdPolicyNames (\ s a -> s{_bsdPolicyNames = a}) . _Default . _Coerce;
+
+-- | The port on which the back-end server is listening.
+bsdInstancePort :: Lens' BackendServerDescription (Maybe Natural)
+bsdInstancePort = lens _bsdInstancePort (\ s a -> s{_bsdInstancePort = a}) . mapping _Nat;
+
+instance FromXML BackendServerDescription where
+        parseXML x
+          = BackendServerDescription' <$>
+              (x .@? "PolicyNames" .!@ mempty >>=
+                 may (parseXMLList "member"))
+                <*> (x .@? "InstancePort")
+
+-- | Information about the 'ConnectionDraining' attribute.
+--
+-- /See:/ 'connectionDraining' smart constructor.
+data ConnectionDraining = ConnectionDraining'
+    { _cdTimeout :: !(Maybe Int)
+    , _cdEnabled :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConnectionDraining' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdTimeout'
+--
+-- * 'cdEnabled'
+connectionDraining
+    :: Bool -- ^ 'cdEnabled'
+    -> ConnectionDraining
+connectionDraining pEnabled_ =
+    ConnectionDraining'
+    { _cdTimeout = Nothing
+    , _cdEnabled = pEnabled_
+    }
+
+-- | The maximum time, in seconds, to keep the existing connections open
+-- before deregistering the instances.
+cdTimeout :: Lens' ConnectionDraining (Maybe Int)
+cdTimeout = lens _cdTimeout (\ s a -> s{_cdTimeout = a});
+
+-- | Specifies whether connection draining is enabled for the load balancer.
+cdEnabled :: Lens' ConnectionDraining Bool
+cdEnabled = lens _cdEnabled (\ s a -> s{_cdEnabled = a});
+
+instance FromXML ConnectionDraining where
+        parseXML x
+          = ConnectionDraining' <$>
+              (x .@? "Timeout") <*> (x .@ "Enabled")
+
+instance ToQuery ConnectionDraining where
+        toQuery ConnectionDraining'{..}
+          = mconcat
+              ["Timeout" =: _cdTimeout, "Enabled" =: _cdEnabled]
+
+-- | Information about the 'ConnectionSettings' attribute.
+--
+-- /See:/ 'connectionSettings' smart constructor.
+newtype ConnectionSettings = ConnectionSettings'
+    { _csIdleTimeout :: Nat
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConnectionSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csIdleTimeout'
+connectionSettings
+    :: Natural -- ^ 'csIdleTimeout'
+    -> ConnectionSettings
+connectionSettings pIdleTimeout_ =
+    ConnectionSettings'
+    { _csIdleTimeout = _Nat # pIdleTimeout_
+    }
+
+-- | The time, in seconds, that the connection is allowed to be idle (no data
+-- has been sent over the connection) before it is closed by the load
+-- balancer.
+csIdleTimeout :: Lens' ConnectionSettings Natural
+csIdleTimeout = lens _csIdleTimeout (\ s a -> s{_csIdleTimeout = a}) . _Nat;
+
+instance FromXML ConnectionSettings where
+        parseXML x
+          = ConnectionSettings' <$> (x .@ "IdleTimeout")
+
+instance ToQuery ConnectionSettings where
+        toQuery ConnectionSettings'{..}
+          = mconcat ["IdleTimeout" =: _csIdleTimeout]
+
+-- | Information about the 'CrossZoneLoadBalancing' attribute.
+--
+-- /See:/ 'crossZoneLoadBalancing' smart constructor.
+newtype CrossZoneLoadBalancing = CrossZoneLoadBalancing'
+    { _czlbEnabled :: Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CrossZoneLoadBalancing' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'czlbEnabled'
+crossZoneLoadBalancing
+    :: Bool -- ^ 'czlbEnabled'
+    -> CrossZoneLoadBalancing
+crossZoneLoadBalancing pEnabled_ =
+    CrossZoneLoadBalancing'
+    { _czlbEnabled = pEnabled_
+    }
+
+-- | Specifies whether cross-zone load balancing is enabled for the load
+-- balancer.
+czlbEnabled :: Lens' CrossZoneLoadBalancing Bool
+czlbEnabled = lens _czlbEnabled (\ s a -> s{_czlbEnabled = a});
+
+instance FromXML CrossZoneLoadBalancing where
+        parseXML x
+          = CrossZoneLoadBalancing' <$> (x .@ "Enabled")
+
+instance ToQuery CrossZoneLoadBalancing where
+        toQuery CrossZoneLoadBalancing'{..}
+          = mconcat ["Enabled" =: _czlbEnabled]
+
+-- | Information about a health check.
+--
+-- /See:/ 'healthCheck' smart constructor.
+data HealthCheck = HealthCheck'
+    { _hcTarget             :: !Text
+    , _hcInterval           :: !Nat
+    , _hcTimeout            :: !Nat
+    , _hcUnhealthyThreshold :: !Nat
+    , _hcHealthyThreshold   :: !Nat
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HealthCheck' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hcTarget'
+--
+-- * 'hcInterval'
+--
+-- * 'hcTimeout'
+--
+-- * 'hcUnhealthyThreshold'
+--
+-- * 'hcHealthyThreshold'
+healthCheck
+    :: Text -- ^ 'hcTarget'
+    -> Natural -- ^ 'hcInterval'
+    -> Natural -- ^ 'hcTimeout'
+    -> Natural -- ^ 'hcUnhealthyThreshold'
+    -> Natural -- ^ 'hcHealthyThreshold'
+    -> HealthCheck
+healthCheck pTarget_ pInterval_ pTimeout_ pUnhealthyThreshold_ pHealthyThreshold_ =
+    HealthCheck'
+    { _hcTarget = pTarget_
+    , _hcInterval = _Nat # pInterval_
+    , _hcTimeout = _Nat # pTimeout_
+    , _hcUnhealthyThreshold = _Nat # pUnhealthyThreshold_
+    , _hcHealthyThreshold = _Nat # pHealthyThreshold_
+    }
+
+-- | The instance being checked. The protocol is either TCP, HTTP, HTTPS, or
+-- SSL. The range of valid ports is one (1) through 65535.
+--
+-- TCP is the default, specified as a TCP: port pair, for example
+-- \"TCP:5000\". In this case, a health check simply attempts to open a TCP
+-- connection to the instance on the specified port. Failure to connect
+-- within the configured timeout is considered unhealthy.
+--
+-- SSL is also specified as SSL: port pair, for example, SSL:5000.
+--
+-- For HTTP\/HTTPS, you must include a ping path in the string. HTTP is
+-- specified as a HTTP:port;\/;PathToPing; grouping, for example
+-- \"HTTP:80\/weather\/us\/wa\/seattle\". In this case, a HTTP GET request
+-- is issued to the instance on the given port and path. Any answer other
+-- than \"200 OK\" within the timeout period is considered unhealthy.
+--
+-- The total length of the HTTP ping target must be 1024 16-bit Unicode
+-- characters or less.
+hcTarget :: Lens' HealthCheck Text
+hcTarget = lens _hcTarget (\ s a -> s{_hcTarget = a});
+
+-- | The approximate interval, in seconds, between health checks of an
+-- individual instance.
+hcInterval :: Lens' HealthCheck Natural
+hcInterval = lens _hcInterval (\ s a -> s{_hcInterval = a}) . _Nat;
+
+-- | The amount of time, in seconds, during which no response means a failed
+-- health check.
+--
+-- This value must be less than the 'Interval' value.
+hcTimeout :: Lens' HealthCheck Natural
+hcTimeout = lens _hcTimeout (\ s a -> s{_hcTimeout = a}) . _Nat;
+
+-- | The number of consecutive health check failures required before moving
+-- the instance to the 'Unhealthy' state.
+hcUnhealthyThreshold :: Lens' HealthCheck Natural
+hcUnhealthyThreshold = lens _hcUnhealthyThreshold (\ s a -> s{_hcUnhealthyThreshold = a}) . _Nat;
+
+-- | The number of consecutive health checks successes required before moving
+-- the instance to the 'Healthy' state.
+hcHealthyThreshold :: Lens' HealthCheck Natural
+hcHealthyThreshold = lens _hcHealthyThreshold (\ s a -> s{_hcHealthyThreshold = a}) . _Nat;
+
+instance FromXML HealthCheck where
+        parseXML x
+          = HealthCheck' <$>
+              (x .@ "Target") <*> (x .@ "Interval") <*>
+                (x .@ "Timeout")
+                <*> (x .@ "UnhealthyThreshold")
+                <*> (x .@ "HealthyThreshold")
+
+instance ToQuery HealthCheck where
+        toQuery HealthCheck'{..}
+          = mconcat
+              ["Target" =: _hcTarget, "Interval" =: _hcInterval,
+               "Timeout" =: _hcTimeout,
+               "UnhealthyThreshold" =: _hcUnhealthyThreshold,
+               "HealthyThreshold" =: _hcHealthyThreshold]
+
+-- | The ID of a back-end instance.
+--
+-- /See:/ 'instance'' smart constructor.
+newtype Instance = Instance'
+    { _iInstanceId :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Instance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iInstanceId'
+instance'
+    :: Instance
+instance' =
+    Instance'
+    { _iInstanceId = Nothing
+    }
+
+-- | The ID of the instance.
+iInstanceId :: Lens' Instance (Maybe Text)
+iInstanceId = lens _iInstanceId (\ s a -> s{_iInstanceId = a});
+
+instance FromXML Instance where
+        parseXML x = Instance' <$> (x .@? "InstanceId")
+
+instance ToQuery Instance where
+        toQuery Instance'{..}
+          = mconcat ["InstanceId" =: _iInstanceId]
+
+-- | Information about the state of a back-end instance.
+--
+-- /See:/ 'instanceState' smart constructor.
+data InstanceState = InstanceState'
+    { _isInstanceId  :: !(Maybe Text)
+    , _isState       :: !(Maybe Text)
+    , _isReasonCode  :: !(Maybe Text)
+    , _isDescription :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceState' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'isInstanceId'
+--
+-- * 'isState'
+--
+-- * 'isReasonCode'
+--
+-- * 'isDescription'
+instanceState
+    :: InstanceState
+instanceState =
+    InstanceState'
+    { _isInstanceId = Nothing
+    , _isState = Nothing
+    , _isReasonCode = Nothing
+    , _isDescription = Nothing
+    }
+
+-- | The ID of the instance.
+isInstanceId :: Lens' InstanceState (Maybe Text)
+isInstanceId = lens _isInstanceId (\ s a -> s{_isInstanceId = a});
+
+-- | The current state of the instance.
+--
+-- Valid values: 'InService' | 'OutOfService' | 'Unknown'
+isState :: Lens' InstanceState (Maybe Text)
+isState = lens _isState (\ s a -> s{_isState = a});
+
+-- | Information about the cause of 'OutOfService' instances. Specifically,
+-- whether the cause is Elastic Load Balancing or the instance.
+--
+-- Valid values: 'ELB' | 'Instance' | 'N\/A'
+isReasonCode :: Lens' InstanceState (Maybe Text)
+isReasonCode = lens _isReasonCode (\ s a -> s{_isReasonCode = a});
+
+-- | A description of the instance state. This string can contain one or more
+-- of the following messages.
+--
+-- -   'N\/A'
+--
+-- -   'A transient error occurred. Please try again later.'
+--
+-- -   'Instance has failed at least the UnhealthyThreshold number of health checks consecutively.'
+--
+-- -   'Instance has not passed the configured HealthyThreshold number of health checks consecutively.'
+--
+-- -   'Instance registration is still in progress.'
+--
+-- -   'Instance is in the EC2 Availability Zone for which LoadBalancer is not configured to route traffic to.'
+--
+-- -   'Instance is not currently registered with the LoadBalancer.'
+--
+-- -   'Instance deregistration currently in progress.'
+--
+-- -   'Disable Availability Zone is currently in progress.'
+--
+-- -   'Instance is in pending state.'
+--
+-- -   'Instance is in stopped state.'
+--
+-- -   'Instance is in terminated state.'
+--
+isDescription :: Lens' InstanceState (Maybe Text)
+isDescription = lens _isDescription (\ s a -> s{_isDescription = a});
+
+instance FromXML InstanceState where
+        parseXML x
+          = InstanceState' <$>
+              (x .@? "InstanceId") <*> (x .@? "State") <*>
+                (x .@? "ReasonCode")
+                <*> (x .@? "Description")
+
+-- | Information about a policy for duration-based session stickiness.
+--
+-- /See:/ 'lBCookieStickinessPolicy' smart constructor.
+data LBCookieStickinessPolicy = LBCookieStickinessPolicy'
+    { _lbcspPolicyName             :: !(Maybe Text)
+    , _lbcspCookieExpirationPeriod :: !(Maybe Integer)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LBCookieStickinessPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lbcspPolicyName'
+--
+-- * 'lbcspCookieExpirationPeriod'
+lBCookieStickinessPolicy
+    :: LBCookieStickinessPolicy
+lBCookieStickinessPolicy =
+    LBCookieStickinessPolicy'
+    { _lbcspPolicyName = Nothing
+    , _lbcspCookieExpirationPeriod = Nothing
+    }
+
+-- | The name for the policy being created. The name must be unique within
+-- the set of policies for this load balancer.
+lbcspPolicyName :: Lens' LBCookieStickinessPolicy (Maybe Text)
+lbcspPolicyName = lens _lbcspPolicyName (\ s a -> s{_lbcspPolicyName = a});
+
+-- | The time period, in seconds, after which the cookie should be considered
+-- stale. If this parameter is not specified, the stickiness session lasts
+-- for the duration of the browser session.
+lbcspCookieExpirationPeriod :: Lens' LBCookieStickinessPolicy (Maybe Integer)
+lbcspCookieExpirationPeriod = lens _lbcspCookieExpirationPeriod (\ s a -> s{_lbcspCookieExpirationPeriod = a});
+
+instance FromXML LBCookieStickinessPolicy where
+        parseXML x
+          = LBCookieStickinessPolicy' <$>
+              (x .@? "PolicyName") <*>
+                (x .@? "CookieExpirationPeriod")
+
+-- | Information about a listener.
+--
+-- For information about the protocols and the ports supported by Elastic
+-- Load Balancing, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-listener-config.html Listener Configurations for Elastic Load Balancing>
+-- in the /Elastic Load Balancing Developer Guide/.
+--
+-- /See:/ 'listener' smart constructor.
+data Listener = Listener'
+    { _lInstanceProtocol :: !(Maybe Text)
+    , _lSSLCertificateId :: !(Maybe Text)
+    , _lProtocol         :: !Text
+    , _lLoadBalancerPort :: !Int
+    , _lInstancePort     :: !Nat
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Listener' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lInstanceProtocol'
+--
+-- * 'lSSLCertificateId'
+--
+-- * 'lProtocol'
+--
+-- * 'lLoadBalancerPort'
+--
+-- * 'lInstancePort'
+listener
+    :: Text -- ^ 'lProtocol'
+    -> Int -- ^ 'lLoadBalancerPort'
+    -> Natural -- ^ 'lInstancePort'
+    -> Listener
+listener pProtocol_ pLoadBalancerPort_ pInstancePort_ =
+    Listener'
+    { _lInstanceProtocol = Nothing
+    , _lSSLCertificateId = Nothing
+    , _lProtocol = pProtocol_
+    , _lLoadBalancerPort = pLoadBalancerPort_
+    , _lInstancePort = _Nat # pInstancePort_
+    }
+
+-- | The protocol to use for routing traffic to back-end instances: HTTP,
+-- HTTPS, TCP, or SSL.
+--
+-- If the front-end protocol is HTTP, HTTPS, TCP, or SSL,
+-- 'InstanceProtocol' must be at the same protocol.
+--
+-- If there is another listener with the same 'InstancePort' whose
+-- 'InstanceProtocol' is secure, (HTTPS or SSL), the listener\'s
+-- 'InstanceProtocol' must also be secure.
+--
+-- If there is another listener with the same 'InstancePort' whose
+-- 'InstanceProtocol' is HTTP or TCP, the listener\'s 'InstanceProtocol'
+-- must be HTTP or TCP.
+lInstanceProtocol :: Lens' Listener (Maybe Text)
+lInstanceProtocol = lens _lInstanceProtocol (\ s a -> s{_lInstanceProtocol = a});
+
+-- | The Amazon Resource Name (ARN) of the server certificate.
+lSSLCertificateId :: Lens' Listener (Maybe Text)
+lSSLCertificateId = lens _lSSLCertificateId (\ s a -> s{_lSSLCertificateId = a});
+
+-- | The load balancer transport protocol to use for routing: HTTP, HTTPS,
+-- TCP, or SSL.
+lProtocol :: Lens' Listener Text
+lProtocol = lens _lProtocol (\ s a -> s{_lProtocol = a});
+
+-- | The port on which the load balancer is listening. The supported ports
+-- are: 25, 80, 443, 465, 587, and 1024-65535.
+lLoadBalancerPort :: Lens' Listener Int
+lLoadBalancerPort = lens _lLoadBalancerPort (\ s a -> s{_lLoadBalancerPort = a});
+
+-- | The port on which the instance is listening.
+lInstancePort :: Lens' Listener Natural
+lInstancePort = lens _lInstancePort (\ s a -> s{_lInstancePort = a}) . _Nat;
+
+instance FromXML Listener where
+        parseXML x
+          = Listener' <$>
+              (x .@? "InstanceProtocol") <*>
+                (x .@? "SSLCertificateId")
+                <*> (x .@ "Protocol")
+                <*> (x .@ "LoadBalancerPort")
+                <*> (x .@ "InstancePort")
+
+instance ToQuery Listener where
+        toQuery Listener'{..}
+          = mconcat
+              ["InstanceProtocol" =: _lInstanceProtocol,
+               "SSLCertificateId" =: _lSSLCertificateId,
+               "Protocol" =: _lProtocol,
+               "LoadBalancerPort" =: _lLoadBalancerPort,
+               "InstancePort" =: _lInstancePort]
+
+-- | The policies enabled for a listener.
+--
+-- /See:/ 'listenerDescription' smart constructor.
+data ListenerDescription = ListenerDescription'
+    { _ldPolicyNames :: !(Maybe [Text])
+    , _ldListener    :: !(Maybe Listener)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListenerDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ldPolicyNames'
+--
+-- * 'ldListener'
+listenerDescription
+    :: ListenerDescription
+listenerDescription =
+    ListenerDescription'
+    { _ldPolicyNames = Nothing
+    , _ldListener = Nothing
+    }
+
+-- | The policies. If there are no policies enabled, the list is empty.
+ldPolicyNames :: Lens' ListenerDescription [Text]
+ldPolicyNames = lens _ldPolicyNames (\ s a -> s{_ldPolicyNames = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+ldListener :: Lens' ListenerDescription (Maybe Listener)
+ldListener = lens _ldListener (\ s a -> s{_ldListener = a});
+
+instance FromXML ListenerDescription where
+        parseXML x
+          = ListenerDescription' <$>
+              (x .@? "PolicyNames" .!@ mempty >>=
+                 may (parseXMLList "member"))
+                <*> (x .@? "Listener")
+
+-- | The attributes for a load balancer.
+--
+-- /See:/ 'loadBalancerAttributes' smart constructor.
+data LoadBalancerAttributes = LoadBalancerAttributes'
+    { _lbaCrossZoneLoadBalancing :: !(Maybe CrossZoneLoadBalancing)
+    , _lbaAccessLog              :: !(Maybe AccessLog)
+    , _lbaAdditionalAttributes   :: !(Maybe [AdditionalAttribute])
+    , _lbaConnectionSettings     :: !(Maybe ConnectionSettings)
+    , _lbaConnectionDraining     :: !(Maybe ConnectionDraining)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LoadBalancerAttributes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lbaCrossZoneLoadBalancing'
+--
+-- * 'lbaAccessLog'
+--
+-- * 'lbaAdditionalAttributes'
+--
+-- * 'lbaConnectionSettings'
+--
+-- * 'lbaConnectionDraining'
+loadBalancerAttributes
+    :: LoadBalancerAttributes
+loadBalancerAttributes =
+    LoadBalancerAttributes'
+    { _lbaCrossZoneLoadBalancing = Nothing
+    , _lbaAccessLog = Nothing
+    , _lbaAdditionalAttributes = Nothing
+    , _lbaConnectionSettings = Nothing
+    , _lbaConnectionDraining = Nothing
+    }
+
+-- | If enabled, the load balancer routes the request traffic evenly across
+-- all back-end instances regardless of the Availability Zones.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-disable-crosszone-lb.html Enable Cross-Zone Load Balancing>
+-- in the /Elastic Load Balancing Developer Guide/.
+lbaCrossZoneLoadBalancing :: Lens' LoadBalancerAttributes (Maybe CrossZoneLoadBalancing)
+lbaCrossZoneLoadBalancing = lens _lbaCrossZoneLoadBalancing (\ s a -> s{_lbaCrossZoneLoadBalancing = a});
+
+-- | If enabled, the load balancer captures detailed information of all
+-- requests and delivers the information to the Amazon S3 bucket that you
+-- specify.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-access-logs.html Enable Access Logs>
+-- in the /Elastic Load Balancing Developer Guide/.
+lbaAccessLog :: Lens' LoadBalancerAttributes (Maybe AccessLog)
+lbaAccessLog = lens _lbaAccessLog (\ s a -> s{_lbaAccessLog = a});
+
+-- | This parameter is reserved.
+lbaAdditionalAttributes :: Lens' LoadBalancerAttributes [AdditionalAttribute]
+lbaAdditionalAttributes = lens _lbaAdditionalAttributes (\ s a -> s{_lbaAdditionalAttributes = a}) . _Default . _Coerce;
+
+-- | If enabled, the load balancer allows the connections to remain idle (no
+-- data is sent over the connection) for the specified duration.
+--
+-- By default, Elastic Load Balancing maintains a 60-second idle connection
+-- timeout for both front-end and back-end connections of your load
+-- balancer. For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/config-idle-timeout.html Configure Idle Connection Timeout>
+-- in the /Elastic Load Balancing Developer Guide/.
+lbaConnectionSettings :: Lens' LoadBalancerAttributes (Maybe ConnectionSettings)
+lbaConnectionSettings = lens _lbaConnectionSettings (\ s a -> s{_lbaConnectionSettings = a});
+
+-- | If enabled, the load balancer allows existing requests to complete
+-- before the load balancer shifts traffic away from a deregistered or
+-- unhealthy back-end instance.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/config-conn-drain.html Enable Connection Draining>
+-- in the /Elastic Load Balancing Developer Guide/.
+lbaConnectionDraining :: Lens' LoadBalancerAttributes (Maybe ConnectionDraining)
+lbaConnectionDraining = lens _lbaConnectionDraining (\ s a -> s{_lbaConnectionDraining = a});
+
+instance FromXML LoadBalancerAttributes where
+        parseXML x
+          = LoadBalancerAttributes' <$>
+              (x .@? "CrossZoneLoadBalancing") <*>
+                (x .@? "AccessLog")
+                <*>
+                (x .@? "AdditionalAttributes" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "ConnectionSettings")
+                <*> (x .@? "ConnectionDraining")
+
+instance ToQuery LoadBalancerAttributes where
+        toQuery LoadBalancerAttributes'{..}
+          = mconcat
+              ["CrossZoneLoadBalancing" =:
+                 _lbaCrossZoneLoadBalancing,
+               "AccessLog" =: _lbaAccessLog,
+               "AdditionalAttributes" =:
+                 toQuery
+                   (toQueryList "member" <$> _lbaAdditionalAttributes),
+               "ConnectionSettings" =: _lbaConnectionSettings,
+               "ConnectionDraining" =: _lbaConnectionDraining]
+
+-- | Information about a load balancer.
+--
+-- /See:/ 'loadBalancerDescription' smart constructor.
+data LoadBalancerDescription = LoadBalancerDescription'
+    { _lbdSourceSecurityGroup       :: !(Maybe SourceSecurityGroup)
+    , _lbdHealthCheck               :: !(Maybe HealthCheck)
+    , _lbdCanonicalHostedZoneName   :: !(Maybe Text)
+    , _lbdSecurityGroups            :: !(Maybe [Text])
+    , _lbdLoadBalancerName          :: !(Maybe Text)
+    , _lbdCreatedTime               :: !(Maybe ISO8601)
+    , _lbdVPCId                     :: !(Maybe Text)
+    , _lbdSubnets                   :: !(Maybe [Text])
+    , _lbdAvailabilityZones         :: !(Maybe [Text])
+    , _lbdBackendServerDescriptions :: !(Maybe [BackendServerDescription])
+    , _lbdCanonicalHostedZoneNameId :: !(Maybe Text)
+    , _lbdInstances                 :: !(Maybe [Instance])
+    , _lbdScheme                    :: !(Maybe Text)
+    , _lbdListenerDescriptions      :: !(Maybe [ListenerDescription])
+    , _lbdDNSName                   :: !(Maybe Text)
+    , _lbdPolicies                  :: !(Maybe Policies)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LoadBalancerDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lbdSourceSecurityGroup'
+--
+-- * 'lbdHealthCheck'
+--
+-- * 'lbdCanonicalHostedZoneName'
+--
+-- * 'lbdSecurityGroups'
+--
+-- * 'lbdLoadBalancerName'
+--
+-- * 'lbdCreatedTime'
+--
+-- * 'lbdVPCId'
+--
+-- * 'lbdSubnets'
+--
+-- * 'lbdAvailabilityZones'
+--
+-- * 'lbdBackendServerDescriptions'
+--
+-- * 'lbdCanonicalHostedZoneNameId'
+--
+-- * 'lbdInstances'
+--
+-- * 'lbdScheme'
+--
+-- * 'lbdListenerDescriptions'
+--
+-- * 'lbdDNSName'
+--
+-- * 'lbdPolicies'
+loadBalancerDescription
+    :: LoadBalancerDescription
+loadBalancerDescription =
+    LoadBalancerDescription'
+    { _lbdSourceSecurityGroup = Nothing
+    , _lbdHealthCheck = Nothing
+    , _lbdCanonicalHostedZoneName = Nothing
+    , _lbdSecurityGroups = Nothing
+    , _lbdLoadBalancerName = Nothing
+    , _lbdCreatedTime = Nothing
+    , _lbdVPCId = Nothing
+    , _lbdSubnets = Nothing
+    , _lbdAvailabilityZones = Nothing
+    , _lbdBackendServerDescriptions = Nothing
+    , _lbdCanonicalHostedZoneNameId = Nothing
+    , _lbdInstances = Nothing
+    , _lbdScheme = Nothing
+    , _lbdListenerDescriptions = Nothing
+    , _lbdDNSName = Nothing
+    , _lbdPolicies = Nothing
+    }
+
+-- | The security group that you can use as part of your inbound rules for
+-- your load balancer\'s back-end application instances. To only allow
+-- traffic from load balancers, add a security group rule to your back end
+-- instance that specifies this source security group as the inbound
+-- source.
+lbdSourceSecurityGroup :: Lens' LoadBalancerDescription (Maybe SourceSecurityGroup)
+lbdSourceSecurityGroup = lens _lbdSourceSecurityGroup (\ s a -> s{_lbdSourceSecurityGroup = a});
+
+-- | Information about the health checks conducted on the load balancer.
+lbdHealthCheck :: Lens' LoadBalancerDescription (Maybe HealthCheck)
+lbdHealthCheck = lens _lbdHealthCheck (\ s a -> s{_lbdHealthCheck = a});
+
+-- | The Amazon Route 53 hosted zone associated with the load balancer.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/using-domain-names-with-elb.html Using Domain Names With Elastic Load Balancing>
+-- in the /Elastic Load Balancing Developer Guide/.
+lbdCanonicalHostedZoneName :: Lens' LoadBalancerDescription (Maybe Text)
+lbdCanonicalHostedZoneName = lens _lbdCanonicalHostedZoneName (\ s a -> s{_lbdCanonicalHostedZoneName = a});
+
+-- | The security groups for the load balancer. Valid only for load balancers
+-- in a VPC.
+lbdSecurityGroups :: Lens' LoadBalancerDescription [Text]
+lbdSecurityGroups = lens _lbdSecurityGroups (\ s a -> s{_lbdSecurityGroups = a}) . _Default . _Coerce;
+
+-- | The name of the load balancer.
+lbdLoadBalancerName :: Lens' LoadBalancerDescription (Maybe Text)
+lbdLoadBalancerName = lens _lbdLoadBalancerName (\ s a -> s{_lbdLoadBalancerName = a});
+
+-- | The date and time the load balancer was created.
+lbdCreatedTime :: Lens' LoadBalancerDescription (Maybe UTCTime)
+lbdCreatedTime = lens _lbdCreatedTime (\ s a -> s{_lbdCreatedTime = a}) . mapping _Time;
+
+-- | The ID of the VPC for the load balancer.
+lbdVPCId :: Lens' LoadBalancerDescription (Maybe Text)
+lbdVPCId = lens _lbdVPCId (\ s a -> s{_lbdVPCId = a});
+
+-- | The IDs of the subnets for the load balancer.
+lbdSubnets :: Lens' LoadBalancerDescription [Text]
+lbdSubnets = lens _lbdSubnets (\ s a -> s{_lbdSubnets = a}) . _Default . _Coerce;
+
+-- | The Availability Zones for the load balancer.
+lbdAvailabilityZones :: Lens' LoadBalancerDescription [Text]
+lbdAvailabilityZones = lens _lbdAvailabilityZones (\ s a -> s{_lbdAvailabilityZones = a}) . _Default . _Coerce;
+
+-- | Information about the back-end servers.
+lbdBackendServerDescriptions :: Lens' LoadBalancerDescription [BackendServerDescription]
+lbdBackendServerDescriptions = lens _lbdBackendServerDescriptions (\ s a -> s{_lbdBackendServerDescriptions = a}) . _Default . _Coerce;
+
+-- | The ID of the Amazon Route 53 hosted zone name associated with the load
+-- balancer.
+lbdCanonicalHostedZoneNameId :: Lens' LoadBalancerDescription (Maybe Text)
+lbdCanonicalHostedZoneNameId = lens _lbdCanonicalHostedZoneNameId (\ s a -> s{_lbdCanonicalHostedZoneNameId = a});
+
+-- | The IDs of the instances for the load balancer.
+lbdInstances :: Lens' LoadBalancerDescription [Instance]
+lbdInstances = lens _lbdInstances (\ s a -> s{_lbdInstances = a}) . _Default . _Coerce;
+
+-- | The type of load balancer. Valid only for load balancers in a VPC.
+--
+-- If 'Scheme' is 'internet-facing', the load balancer has a public DNS
+-- name that resolves to a public IP address.
+--
+-- If 'Scheme' is 'internal', the load balancer has a public DNS name that
+-- resolves to a private IP address.
+lbdScheme :: Lens' LoadBalancerDescription (Maybe Text)
+lbdScheme = lens _lbdScheme (\ s a -> s{_lbdScheme = a});
+
+-- | The listeners for the load balancer.
+lbdListenerDescriptions :: Lens' LoadBalancerDescription [ListenerDescription]
+lbdListenerDescriptions = lens _lbdListenerDescriptions (\ s a -> s{_lbdListenerDescriptions = a}) . _Default . _Coerce;
+
+-- | The external DNS name of the load balancer.
+lbdDNSName :: Lens' LoadBalancerDescription (Maybe Text)
+lbdDNSName = lens _lbdDNSName (\ s a -> s{_lbdDNSName = a});
+
+-- | The policies defined for the load balancer.
+lbdPolicies :: Lens' LoadBalancerDescription (Maybe Policies)
+lbdPolicies = lens _lbdPolicies (\ s a -> s{_lbdPolicies = a});
+
+instance FromXML LoadBalancerDescription where
+        parseXML x
+          = LoadBalancerDescription' <$>
+              (x .@? "SourceSecurityGroup") <*>
+                (x .@? "HealthCheck")
+                <*> (x .@? "CanonicalHostedZoneName")
+                <*>
+                (x .@? "SecurityGroups" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "LoadBalancerName")
+                <*> (x .@? "CreatedTime")
+                <*> (x .@? "VPCId")
+                <*>
+                (x .@? "Subnets" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*>
+                (x .@? "AvailabilityZones" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*>
+                (x .@? "BackendServerDescriptions" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "CanonicalHostedZoneNameID")
+                <*>
+                (x .@? "Instances" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "Scheme")
+                <*>
+                (x .@? "ListenerDescriptions" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "DNSName")
+                <*> (x .@? "Policies")
+
+-- | The policies for a load balancer.
+--
+-- /See:/ 'policies' smart constructor.
+data Policies = Policies'
+    { _pOtherPolicies               :: !(Maybe [Text])
+    , _pLBCookieStickinessPolicies  :: !(Maybe [LBCookieStickinessPolicy])
+    , _pAppCookieStickinessPolicies :: !(Maybe [AppCookieStickinessPolicy])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Policies' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pOtherPolicies'
+--
+-- * 'pLBCookieStickinessPolicies'
+--
+-- * 'pAppCookieStickinessPolicies'
+policies
+    :: Policies
+policies =
+    Policies'
+    { _pOtherPolicies = Nothing
+    , _pLBCookieStickinessPolicies = Nothing
+    , _pAppCookieStickinessPolicies = Nothing
+    }
+
+-- | The policies other than the stickiness policies.
+pOtherPolicies :: Lens' Policies [Text]
+pOtherPolicies = lens _pOtherPolicies (\ s a -> s{_pOtherPolicies = a}) . _Default . _Coerce;
+
+-- | The stickiness policies created using CreateLBCookieStickinessPolicy.
+pLBCookieStickinessPolicies :: Lens' Policies [LBCookieStickinessPolicy]
+pLBCookieStickinessPolicies = lens _pLBCookieStickinessPolicies (\ s a -> s{_pLBCookieStickinessPolicies = a}) . _Default . _Coerce;
+
+-- | The stickiness policies created using CreateAppCookieStickinessPolicy.
+pAppCookieStickinessPolicies :: Lens' Policies [AppCookieStickinessPolicy]
+pAppCookieStickinessPolicies = lens _pAppCookieStickinessPolicies (\ s a -> s{_pAppCookieStickinessPolicies = a}) . _Default . _Coerce;
+
+instance FromXML Policies where
+        parseXML x
+          = Policies' <$>
+              (x .@? "OtherPolicies" .!@ mempty >>=
+                 may (parseXMLList "member"))
+                <*>
+                (x .@? "LBCookieStickinessPolicies" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*>
+                (x .@? "AppCookieStickinessPolicies" .!@ mempty >>=
+                   may (parseXMLList "member"))
+
+-- | Information about a policy attribute.
+--
+-- /See:/ 'policyAttribute' smart constructor.
+data PolicyAttribute = PolicyAttribute'
+    { _paAttributeValue :: !(Maybe Text)
+    , _paAttributeName  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PolicyAttribute' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'paAttributeValue'
+--
+-- * 'paAttributeName'
+policyAttribute
+    :: PolicyAttribute
+policyAttribute =
+    PolicyAttribute'
+    { _paAttributeValue = Nothing
+    , _paAttributeName = Nothing
+    }
+
+-- | The value of the attribute.
+paAttributeValue :: Lens' PolicyAttribute (Maybe Text)
+paAttributeValue = lens _paAttributeValue (\ s a -> s{_paAttributeValue = a});
+
+-- | The name of the attribute.
+paAttributeName :: Lens' PolicyAttribute (Maybe Text)
+paAttributeName = lens _paAttributeName (\ s a -> s{_paAttributeName = a});
+
+instance ToQuery PolicyAttribute where
+        toQuery PolicyAttribute'{..}
+          = mconcat
+              ["AttributeValue" =: _paAttributeValue,
+               "AttributeName" =: _paAttributeName]
+
+-- | Information about a policy attribute.
+--
+-- /See:/ 'policyAttributeDescription' smart constructor.
+data PolicyAttributeDescription = PolicyAttributeDescription'
+    { _padAttributeValue :: !(Maybe Text)
+    , _padAttributeName  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PolicyAttributeDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'padAttributeValue'
+--
+-- * 'padAttributeName'
+policyAttributeDescription
+    :: PolicyAttributeDescription
+policyAttributeDescription =
+    PolicyAttributeDescription'
+    { _padAttributeValue = Nothing
+    , _padAttributeName = Nothing
+    }
+
+-- | The value of the attribute.
+padAttributeValue :: Lens' PolicyAttributeDescription (Maybe Text)
+padAttributeValue = lens _padAttributeValue (\ s a -> s{_padAttributeValue = a});
+
+-- | The name of the attribute.
+padAttributeName :: Lens' PolicyAttributeDescription (Maybe Text)
+padAttributeName = lens _padAttributeName (\ s a -> s{_padAttributeName = a});
+
+instance FromXML PolicyAttributeDescription where
+        parseXML x
+          = PolicyAttributeDescription' <$>
+              (x .@? "AttributeValue") <*> (x .@? "AttributeName")
+
+-- | Information about a policy attribute type.
+--
+-- /See:/ 'policyAttributeTypeDescription' smart constructor.
+data PolicyAttributeTypeDescription = PolicyAttributeTypeDescription'
+    { _patdAttributeType :: !(Maybe Text)
+    , _patdCardinality   :: !(Maybe Text)
+    , _patdDefaultValue  :: !(Maybe Text)
+    , _patdAttributeName :: !(Maybe Text)
+    , _patdDescription   :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PolicyAttributeTypeDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'patdAttributeType'
+--
+-- * 'patdCardinality'
+--
+-- * 'patdDefaultValue'
+--
+-- * 'patdAttributeName'
+--
+-- * 'patdDescription'
+policyAttributeTypeDescription
+    :: PolicyAttributeTypeDescription
+policyAttributeTypeDescription =
+    PolicyAttributeTypeDescription'
+    { _patdAttributeType = Nothing
+    , _patdCardinality = Nothing
+    , _patdDefaultValue = Nothing
+    , _patdAttributeName = Nothing
+    , _patdDescription = Nothing
+    }
+
+-- | The type of the attribute. For example, 'Boolean' or 'Integer'.
+patdAttributeType :: Lens' PolicyAttributeTypeDescription (Maybe Text)
+patdAttributeType = lens _patdAttributeType (\ s a -> s{_patdAttributeType = a});
+
+-- | The cardinality of the attribute.
+--
+-- Valid values:
+--
+-- -   ONE(1) : Single value required
+-- -   ZERO_OR_ONE(0..1) : Up to one value can be supplied
+-- -   ZERO_OR_MORE(0..*) : Optional. Multiple values are allowed
+-- -   ONE_OR_MORE(1..*0) : Required. Multiple values are allowed
+patdCardinality :: Lens' PolicyAttributeTypeDescription (Maybe Text)
+patdCardinality = lens _patdCardinality (\ s a -> s{_patdCardinality = a});
+
+-- | The default value of the attribute, if applicable.
+patdDefaultValue :: Lens' PolicyAttributeTypeDescription (Maybe Text)
+patdDefaultValue = lens _patdDefaultValue (\ s a -> s{_patdDefaultValue = a});
+
+-- | The name of the attribute.
+patdAttributeName :: Lens' PolicyAttributeTypeDescription (Maybe Text)
+patdAttributeName = lens _patdAttributeName (\ s a -> s{_patdAttributeName = a});
+
+-- | A description of the attribute.
+patdDescription :: Lens' PolicyAttributeTypeDescription (Maybe Text)
+patdDescription = lens _patdDescription (\ s a -> s{_patdDescription = a});
+
+instance FromXML PolicyAttributeTypeDescription where
+        parseXML x
+          = PolicyAttributeTypeDescription' <$>
+              (x .@? "AttributeType") <*> (x .@? "Cardinality") <*>
+                (x .@? "DefaultValue")
+                <*> (x .@? "AttributeName")
+                <*> (x .@? "Description")
+
+-- | Information about a policy.
+--
+-- /See:/ 'policyDescription' smart constructor.
+data PolicyDescription = PolicyDescription'
+    { _pdPolicyName                  :: !(Maybe Text)
+    , _pdPolicyAttributeDescriptions :: !(Maybe [PolicyAttributeDescription])
+    , _pdPolicyTypeName              :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PolicyDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pdPolicyName'
+--
+-- * 'pdPolicyAttributeDescriptions'
+--
+-- * 'pdPolicyTypeName'
+policyDescription
+    :: PolicyDescription
+policyDescription =
+    PolicyDescription'
+    { _pdPolicyName = Nothing
+    , _pdPolicyAttributeDescriptions = Nothing
+    , _pdPolicyTypeName = Nothing
+    }
+
+-- | The name of the policy.
+pdPolicyName :: Lens' PolicyDescription (Maybe Text)
+pdPolicyName = lens _pdPolicyName (\ s a -> s{_pdPolicyName = a});
+
+-- | The policy attributes.
+pdPolicyAttributeDescriptions :: Lens' PolicyDescription [PolicyAttributeDescription]
+pdPolicyAttributeDescriptions = lens _pdPolicyAttributeDescriptions (\ s a -> s{_pdPolicyAttributeDescriptions = a}) . _Default . _Coerce;
+
+-- | The name of the policy type.
+pdPolicyTypeName :: Lens' PolicyDescription (Maybe Text)
+pdPolicyTypeName = lens _pdPolicyTypeName (\ s a -> s{_pdPolicyTypeName = a});
+
+instance FromXML PolicyDescription where
+        parseXML x
+          = PolicyDescription' <$>
+              (x .@? "PolicyName") <*>
+                (x .@? "PolicyAttributeDescriptions" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "PolicyTypeName")
+
+-- | Information about a policy type.
+--
+-- /See:/ 'policyTypeDescription' smart constructor.
+data PolicyTypeDescription = PolicyTypeDescription'
+    { _ptdPolicyTypeName                  :: !(Maybe Text)
+    , _ptdDescription                     :: !(Maybe Text)
+    , _ptdPolicyAttributeTypeDescriptions :: !(Maybe [PolicyAttributeTypeDescription])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PolicyTypeDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ptdPolicyTypeName'
+--
+-- * 'ptdDescription'
+--
+-- * 'ptdPolicyAttributeTypeDescriptions'
+policyTypeDescription
+    :: PolicyTypeDescription
+policyTypeDescription =
+    PolicyTypeDescription'
+    { _ptdPolicyTypeName = Nothing
+    , _ptdDescription = Nothing
+    , _ptdPolicyAttributeTypeDescriptions = Nothing
+    }
+
+-- | The name of the policy type.
+ptdPolicyTypeName :: Lens' PolicyTypeDescription (Maybe Text)
+ptdPolicyTypeName = lens _ptdPolicyTypeName (\ s a -> s{_ptdPolicyTypeName = a});
+
+-- | A description of the policy type.
+ptdDescription :: Lens' PolicyTypeDescription (Maybe Text)
+ptdDescription = lens _ptdDescription (\ s a -> s{_ptdDescription = a});
+
+-- | The description of the policy attributes associated with the policies
+-- defined by Elastic Load Balancing.
+ptdPolicyAttributeTypeDescriptions :: Lens' PolicyTypeDescription [PolicyAttributeTypeDescription]
+ptdPolicyAttributeTypeDescriptions = lens _ptdPolicyAttributeTypeDescriptions (\ s a -> s{_ptdPolicyAttributeTypeDescriptions = a}) . _Default . _Coerce;
+
+instance FromXML PolicyTypeDescription where
+        parseXML x
+          = PolicyTypeDescription' <$>
+              (x .@? "PolicyTypeName") <*> (x .@? "Description")
+                <*>
+                (x .@? "PolicyAttributeTypeDescriptions" .!@ mempty
+                   >>= may (parseXMLList "member"))
+
+-- | Information about a source security group.
+--
+-- /See:/ 'sourceSecurityGroup' smart constructor.
+data SourceSecurityGroup = SourceSecurityGroup'
+    { _ssgOwnerAlias :: !(Maybe Text)
+    , _ssgGroupName  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SourceSecurityGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssgOwnerAlias'
+--
+-- * 'ssgGroupName'
+sourceSecurityGroup
+    :: SourceSecurityGroup
+sourceSecurityGroup =
+    SourceSecurityGroup'
+    { _ssgOwnerAlias = Nothing
+    , _ssgGroupName = Nothing
+    }
+
+-- | The owner of the security group.
+ssgOwnerAlias :: Lens' SourceSecurityGroup (Maybe Text)
+ssgOwnerAlias = lens _ssgOwnerAlias (\ s a -> s{_ssgOwnerAlias = a});
+
+-- | The name of the security group.
+ssgGroupName :: Lens' SourceSecurityGroup (Maybe Text)
+ssgGroupName = lens _ssgGroupName (\ s a -> s{_ssgGroupName = a});
+
+instance FromXML SourceSecurityGroup where
+        parseXML x
+          = SourceSecurityGroup' <$>
+              (x .@? "OwnerAlias") <*> (x .@? "GroupName")
+
+-- | Information about a tag.
+--
+-- /See:/ 'tag' smart constructor.
+data Tag = Tag'
+    { _tagValue :: !(Maybe Text)
+    , _tagKey   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Tag' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tagValue'
+--
+-- * 'tagKey'
+tag
+    :: Text -- ^ 'tagKey'
+    -> Tag
+tag pKey_ =
+    Tag'
+    { _tagValue = Nothing
+    , _tagKey = pKey_
+    }
+
+-- | The value of the tag.
+tagValue :: Lens' Tag (Maybe Text)
+tagValue = lens _tagValue (\ s a -> s{_tagValue = a});
+
+-- | The key of the tag.
+tagKey :: Lens' Tag Text
+tagKey = lens _tagKey (\ s a -> s{_tagKey = a});
+
+instance FromXML Tag where
+        parseXML x
+          = Tag' <$> (x .@? "Value") <*> (x .@ "Key")
+
+instance ToQuery Tag where
+        toQuery Tag'{..}
+          = mconcat ["Value" =: _tagValue, "Key" =: _tagKey]
+
+-- | The tags associated with a load balancer.
+--
+-- /See:/ 'tagDescription' smart constructor.
+data TagDescription = TagDescription'
+    { _tdLoadBalancerName :: !(Maybe Text)
+    , _tdTags             :: !(Maybe (List1 Tag))
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TagDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tdLoadBalancerName'
+--
+-- * 'tdTags'
+tagDescription
+    :: TagDescription
+tagDescription =
+    TagDescription'
+    { _tdLoadBalancerName = Nothing
+    , _tdTags = Nothing
+    }
+
+-- | The name of the load balancer.
+tdLoadBalancerName :: Lens' TagDescription (Maybe Text)
+tdLoadBalancerName = lens _tdLoadBalancerName (\ s a -> s{_tdLoadBalancerName = a});
+
+-- | The tags.
+tdTags :: Lens' TagDescription (Maybe (NonEmpty Tag))
+tdTags = lens _tdTags (\ s a -> s{_tdTags = a}) . mapping _List1;
+
+instance FromXML TagDescription where
+        parseXML x
+          = TagDescription' <$>
+              (x .@? "LoadBalancerName") <*>
+                (x .@? "Tags" .!@ mempty >>=
+                   may (parseXMLList1 "member"))
+
+-- | The key of a tag.
+--
+-- /See:/ 'tagKeyOnly' smart constructor.
+newtype TagKeyOnly = TagKeyOnly'
+    { _tkoKey :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TagKeyOnly' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tkoKey'
+tagKeyOnly
+    :: TagKeyOnly
+tagKeyOnly =
+    TagKeyOnly'
+    { _tkoKey = Nothing
+    }
+
+-- | The name of the key.
+tkoKey :: Lens' TagKeyOnly (Maybe Text)
+tkoKey = lens _tkoKey (\ s a -> s{_tkoKey = a});
+
+instance ToQuery TagKeyOnly where
+        toQuery TagKeyOnly'{..} = mconcat ["Key" =: _tkoKey]
diff --git a/gen/Network/AWS/ELB/Types/Sum.hs b/gen/Network/AWS/ELB/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/ELB/Types/Sum.hs
@@ -0,0 +1,20 @@
+{-# 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.ELB.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.ELB.Types.Sum where
+
+import           Network.AWS.Prelude
diff --git a/gen/Network/AWS/ELB/Waiters.hs b/gen/Network/AWS/ELB/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/ELB/Waiters.hs
@@ -0,0 +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.ELB.Waiters
+-- 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.ELB.Waiters where
+
+import           Network.AWS.ELB.Types
+import           Network.AWS.Prelude
+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.ELB
+import Test.AWS.ELB.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "ELB"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/ELB.hs b/test/Test/AWS/ELB.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/ELB.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Module      : Test.AWS.ELB
+-- 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.ELB
+    ( tests
+    , fixtures
+    ) where
+
+import           Network.AWS.ELB
+import           Test.AWS.Gen.ELB
+import           Test.Tasty
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/ELB/Internal.hs b/test/Test/AWS/ELB/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/ELB/Internal.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.ELB.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.ELB.Internal where
+
+import Test.AWS.Prelude
diff --git a/test/Test/AWS/Gen/ELB.hs b/test/Test/AWS/Gen/ELB.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/ELB.hs
@@ -0,0 +1,515 @@
+{-# 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.ELB
+-- 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.ELB where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.ELB
+import Test.AWS.ELB.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"
+--         [ testDescribeLoadBalancerPolicyTypes $
+--             describeLoadBalancerPolicyTypes
+--
+--         , testDescribeTags $
+--             describeTags
+--
+--         , testDescribeLoadBalancers $
+--             describeLoadBalancers
+--
+--         , testApplySecurityGroupsToLoadBalancer $
+--             applySecurityGroupsToLoadBalancer
+--
+--         , testRemoveTags $
+--             removeTags
+--
+--         , testCreateLBCookieStickinessPolicy $
+--             createLBCookieStickinessPolicy
+--
+--         , testDeleteLoadBalancer $
+--             deleteLoadBalancer
+--
+--         , testCreateLoadBalancerPolicy $
+--             createLoadBalancerPolicy
+--
+--         , testDeregisterInstancesFromLoadBalancer $
+--             deregisterInstancesFromLoadBalancer
+--
+--         , testDescribeLoadBalancerPolicies $
+--             describeLoadBalancerPolicies
+--
+--         , testDisableAvailabilityZonesForLoadBalancer $
+--             disableAvailabilityZonesForLoadBalancer
+--
+--         , testSetLoadBalancerPoliciesForBackendServer $
+--             setLoadBalancerPoliciesForBackendServer
+--
+--         , testEnableAvailabilityZonesForLoadBalancer $
+--             enableAvailabilityZonesForLoadBalancer
+--
+--         , testSetLoadBalancerListenerSSLCertificate $
+--             setLoadBalancerListenerSSLCertificate
+--
+--         , testConfigureHealthCheck $
+--             configureHealthCheck
+--
+--         , testAttachLoadBalancerToSubnets $
+--             attachLoadBalancerToSubnets
+--
+--         , testModifyLoadBalancerAttributes $
+--             modifyLoadBalancerAttributes
+--
+--         , testCreateAppCookieStickinessPolicy $
+--             createAppCookieStickinessPolicy
+--
+--         , testAddTags $
+--             addTags
+--
+--         , testDescribeLoadBalancerAttributes $
+--             describeLoadBalancerAttributes
+--
+--         , testDescribeInstanceHealth $
+--             describeInstanceHealth
+--
+--         , testDetachLoadBalancerFromSubnets $
+--             detachLoadBalancerFromSubnets
+--
+--         , testRegisterInstancesWithLoadBalancer $
+--             registerInstancesWithLoadBalancer
+--
+--         , testDeleteLoadBalancerPolicy $
+--             deleteLoadBalancerPolicy
+--
+--         , testCreateLoadBalancerListeners $
+--             createLoadBalancerListeners
+--
+--         , testDeleteLoadBalancerListeners $
+--             deleteLoadBalancerListeners
+--
+--         , testCreateLoadBalancer $
+--             createLoadBalancer
+--
+--         , testSetLoadBalancerPoliciesOfListener $
+--             setLoadBalancerPoliciesOfListener
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testDescribeLoadBalancerPolicyTypesResponse $
+--             describeLoadBalancerPolicyTypesResponse
+--
+--         , testDescribeTagsResponse $
+--             describeTagsResponse
+--
+--         , testDescribeLoadBalancersResponse $
+--             describeLoadBalancersResponse
+--
+--         , testApplySecurityGroupsToLoadBalancerResponse $
+--             applySecurityGroupsToLoadBalancerResponse
+--
+--         , testRemoveTagsResponse $
+--             removeTagsResponse
+--
+--         , testCreateLBCookieStickinessPolicyResponse $
+--             createLBCookieStickinessPolicyResponse
+--
+--         , testDeleteLoadBalancerResponse $
+--             deleteLoadBalancerResponse
+--
+--         , testCreateLoadBalancerPolicyResponse $
+--             createLoadBalancerPolicyResponse
+--
+--         , testDeregisterInstancesFromLoadBalancerResponse $
+--             deregisterInstancesFromLoadBalancerResponse
+--
+--         , testDescribeLoadBalancerPoliciesResponse $
+--             describeLoadBalancerPoliciesResponse
+--
+--         , testDisableAvailabilityZonesForLoadBalancerResponse $
+--             disableAvailabilityZonesForLoadBalancerResponse
+--
+--         , testSetLoadBalancerPoliciesForBackendServerResponse $
+--             setLoadBalancerPoliciesForBackendServerResponse
+--
+--         , testEnableAvailabilityZonesForLoadBalancerResponse $
+--             enableAvailabilityZonesForLoadBalancerResponse
+--
+--         , testSetLoadBalancerListenerSSLCertificateResponse $
+--             setLoadBalancerListenerSSLCertificateResponse
+--
+--         , testConfigureHealthCheckResponse $
+--             configureHealthCheckResponse
+--
+--         , testAttachLoadBalancerToSubnetsResponse $
+--             attachLoadBalancerToSubnetsResponse
+--
+--         , testModifyLoadBalancerAttributesResponse $
+--             modifyLoadBalancerAttributesResponse
+--
+--         , testCreateAppCookieStickinessPolicyResponse $
+--             createAppCookieStickinessPolicyResponse
+--
+--         , testAddTagsResponse $
+--             addTagsResponse
+--
+--         , testDescribeLoadBalancerAttributesResponse $
+--             describeLoadBalancerAttributesResponse
+--
+--         , testDescribeInstanceHealthResponse $
+--             describeInstanceHealthResponse
+--
+--         , testDetachLoadBalancerFromSubnetsResponse $
+--             detachLoadBalancerFromSubnetsResponse
+--
+--         , testRegisterInstancesWithLoadBalancerResponse $
+--             registerInstancesWithLoadBalancerResponse
+--
+--         , testDeleteLoadBalancerPolicyResponse $
+--             deleteLoadBalancerPolicyResponse
+--
+--         , testCreateLoadBalancerListenersResponse $
+--             createLoadBalancerListenersResponse
+--
+--         , testDeleteLoadBalancerListenersResponse $
+--             deleteLoadBalancerListenersResponse
+--
+--         , testCreateLoadBalancerResponse $
+--             createLoadBalancerResponse
+--
+--         , testSetLoadBalancerPoliciesOfListenerResponse $
+--             setLoadBalancerPoliciesOfListenerResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testDescribeLoadBalancerPolicyTypes :: DescribeLoadBalancerPolicyTypes -> TestTree
+testDescribeLoadBalancerPolicyTypes = req
+    "DescribeLoadBalancerPolicyTypes"
+    "fixture/DescribeLoadBalancerPolicyTypes"
+
+testDescribeTags :: DescribeTags -> TestTree
+testDescribeTags = req
+    "DescribeTags"
+    "fixture/DescribeTags"
+
+testDescribeLoadBalancers :: DescribeLoadBalancers -> TestTree
+testDescribeLoadBalancers = req
+    "DescribeLoadBalancers"
+    "fixture/DescribeLoadBalancers"
+
+testApplySecurityGroupsToLoadBalancer :: ApplySecurityGroupsToLoadBalancer -> TestTree
+testApplySecurityGroupsToLoadBalancer = req
+    "ApplySecurityGroupsToLoadBalancer"
+    "fixture/ApplySecurityGroupsToLoadBalancer"
+
+testRemoveTags :: RemoveTags -> TestTree
+testRemoveTags = req
+    "RemoveTags"
+    "fixture/RemoveTags"
+
+testCreateLBCookieStickinessPolicy :: CreateLBCookieStickinessPolicy -> TestTree
+testCreateLBCookieStickinessPolicy = req
+    "CreateLBCookieStickinessPolicy"
+    "fixture/CreateLBCookieStickinessPolicy"
+
+testDeleteLoadBalancer :: DeleteLoadBalancer -> TestTree
+testDeleteLoadBalancer = req
+    "DeleteLoadBalancer"
+    "fixture/DeleteLoadBalancer"
+
+testCreateLoadBalancerPolicy :: CreateLoadBalancerPolicy -> TestTree
+testCreateLoadBalancerPolicy = req
+    "CreateLoadBalancerPolicy"
+    "fixture/CreateLoadBalancerPolicy"
+
+testDeregisterInstancesFromLoadBalancer :: DeregisterInstancesFromLoadBalancer -> TestTree
+testDeregisterInstancesFromLoadBalancer = req
+    "DeregisterInstancesFromLoadBalancer"
+    "fixture/DeregisterInstancesFromLoadBalancer"
+
+testDescribeLoadBalancerPolicies :: DescribeLoadBalancerPolicies -> TestTree
+testDescribeLoadBalancerPolicies = req
+    "DescribeLoadBalancerPolicies"
+    "fixture/DescribeLoadBalancerPolicies"
+
+testDisableAvailabilityZonesForLoadBalancer :: DisableAvailabilityZonesForLoadBalancer -> TestTree
+testDisableAvailabilityZonesForLoadBalancer = req
+    "DisableAvailabilityZonesForLoadBalancer"
+    "fixture/DisableAvailabilityZonesForLoadBalancer"
+
+testSetLoadBalancerPoliciesForBackendServer :: SetLoadBalancerPoliciesForBackendServer -> TestTree
+testSetLoadBalancerPoliciesForBackendServer = req
+    "SetLoadBalancerPoliciesForBackendServer"
+    "fixture/SetLoadBalancerPoliciesForBackendServer"
+
+testEnableAvailabilityZonesForLoadBalancer :: EnableAvailabilityZonesForLoadBalancer -> TestTree
+testEnableAvailabilityZonesForLoadBalancer = req
+    "EnableAvailabilityZonesForLoadBalancer"
+    "fixture/EnableAvailabilityZonesForLoadBalancer"
+
+testSetLoadBalancerListenerSSLCertificate :: SetLoadBalancerListenerSSLCertificate -> TestTree
+testSetLoadBalancerListenerSSLCertificate = req
+    "SetLoadBalancerListenerSSLCertificate"
+    "fixture/SetLoadBalancerListenerSSLCertificate"
+
+testConfigureHealthCheck :: ConfigureHealthCheck -> TestTree
+testConfigureHealthCheck = req
+    "ConfigureHealthCheck"
+    "fixture/ConfigureHealthCheck"
+
+testAttachLoadBalancerToSubnets :: AttachLoadBalancerToSubnets -> TestTree
+testAttachLoadBalancerToSubnets = req
+    "AttachLoadBalancerToSubnets"
+    "fixture/AttachLoadBalancerToSubnets"
+
+testModifyLoadBalancerAttributes :: ModifyLoadBalancerAttributes -> TestTree
+testModifyLoadBalancerAttributes = req
+    "ModifyLoadBalancerAttributes"
+    "fixture/ModifyLoadBalancerAttributes"
+
+testCreateAppCookieStickinessPolicy :: CreateAppCookieStickinessPolicy -> TestTree
+testCreateAppCookieStickinessPolicy = req
+    "CreateAppCookieStickinessPolicy"
+    "fixture/CreateAppCookieStickinessPolicy"
+
+testAddTags :: AddTags -> TestTree
+testAddTags = req
+    "AddTags"
+    "fixture/AddTags"
+
+testDescribeLoadBalancerAttributes :: DescribeLoadBalancerAttributes -> TestTree
+testDescribeLoadBalancerAttributes = req
+    "DescribeLoadBalancerAttributes"
+    "fixture/DescribeLoadBalancerAttributes"
+
+testDescribeInstanceHealth :: DescribeInstanceHealth -> TestTree
+testDescribeInstanceHealth = req
+    "DescribeInstanceHealth"
+    "fixture/DescribeInstanceHealth"
+
+testDetachLoadBalancerFromSubnets :: DetachLoadBalancerFromSubnets -> TestTree
+testDetachLoadBalancerFromSubnets = req
+    "DetachLoadBalancerFromSubnets"
+    "fixture/DetachLoadBalancerFromSubnets"
+
+testRegisterInstancesWithLoadBalancer :: RegisterInstancesWithLoadBalancer -> TestTree
+testRegisterInstancesWithLoadBalancer = req
+    "RegisterInstancesWithLoadBalancer"
+    "fixture/RegisterInstancesWithLoadBalancer"
+
+testDeleteLoadBalancerPolicy :: DeleteLoadBalancerPolicy -> TestTree
+testDeleteLoadBalancerPolicy = req
+    "DeleteLoadBalancerPolicy"
+    "fixture/DeleteLoadBalancerPolicy"
+
+testCreateLoadBalancerListeners :: CreateLoadBalancerListeners -> TestTree
+testCreateLoadBalancerListeners = req
+    "CreateLoadBalancerListeners"
+    "fixture/CreateLoadBalancerListeners"
+
+testDeleteLoadBalancerListeners :: DeleteLoadBalancerListeners -> TestTree
+testDeleteLoadBalancerListeners = req
+    "DeleteLoadBalancerListeners"
+    "fixture/DeleteLoadBalancerListeners"
+
+testCreateLoadBalancer :: CreateLoadBalancer -> TestTree
+testCreateLoadBalancer = req
+    "CreateLoadBalancer"
+    "fixture/CreateLoadBalancer"
+
+testSetLoadBalancerPoliciesOfListener :: SetLoadBalancerPoliciesOfListener -> TestTree
+testSetLoadBalancerPoliciesOfListener = req
+    "SetLoadBalancerPoliciesOfListener"
+    "fixture/SetLoadBalancerPoliciesOfListener"
+
+-- Responses
+
+testDescribeLoadBalancerPolicyTypesResponse :: DescribeLoadBalancerPolicyTypesResponse -> TestTree
+testDescribeLoadBalancerPolicyTypesResponse = res
+    "DescribeLoadBalancerPolicyTypesResponse"
+    "fixture/DescribeLoadBalancerPolicyTypesResponse"
+    (Proxy :: Proxy DescribeLoadBalancerPolicyTypes)
+
+testDescribeTagsResponse :: DescribeTagsResponse -> TestTree
+testDescribeTagsResponse = res
+    "DescribeTagsResponse"
+    "fixture/DescribeTagsResponse"
+    (Proxy :: Proxy DescribeTags)
+
+testDescribeLoadBalancersResponse :: DescribeLoadBalancersResponse -> TestTree
+testDescribeLoadBalancersResponse = res
+    "DescribeLoadBalancersResponse"
+    "fixture/DescribeLoadBalancersResponse"
+    (Proxy :: Proxy DescribeLoadBalancers)
+
+testApplySecurityGroupsToLoadBalancerResponse :: ApplySecurityGroupsToLoadBalancerResponse -> TestTree
+testApplySecurityGroupsToLoadBalancerResponse = res
+    "ApplySecurityGroupsToLoadBalancerResponse"
+    "fixture/ApplySecurityGroupsToLoadBalancerResponse"
+    (Proxy :: Proxy ApplySecurityGroupsToLoadBalancer)
+
+testRemoveTagsResponse :: RemoveTagsResponse -> TestTree
+testRemoveTagsResponse = res
+    "RemoveTagsResponse"
+    "fixture/RemoveTagsResponse"
+    (Proxy :: Proxy RemoveTags)
+
+testCreateLBCookieStickinessPolicyResponse :: CreateLBCookieStickinessPolicyResponse -> TestTree
+testCreateLBCookieStickinessPolicyResponse = res
+    "CreateLBCookieStickinessPolicyResponse"
+    "fixture/CreateLBCookieStickinessPolicyResponse"
+    (Proxy :: Proxy CreateLBCookieStickinessPolicy)
+
+testDeleteLoadBalancerResponse :: DeleteLoadBalancerResponse -> TestTree
+testDeleteLoadBalancerResponse = res
+    "DeleteLoadBalancerResponse"
+    "fixture/DeleteLoadBalancerResponse"
+    (Proxy :: Proxy DeleteLoadBalancer)
+
+testCreateLoadBalancerPolicyResponse :: CreateLoadBalancerPolicyResponse -> TestTree
+testCreateLoadBalancerPolicyResponse = res
+    "CreateLoadBalancerPolicyResponse"
+    "fixture/CreateLoadBalancerPolicyResponse"
+    (Proxy :: Proxy CreateLoadBalancerPolicy)
+
+testDeregisterInstancesFromLoadBalancerResponse :: DeregisterInstancesFromLoadBalancerResponse -> TestTree
+testDeregisterInstancesFromLoadBalancerResponse = res
+    "DeregisterInstancesFromLoadBalancerResponse"
+    "fixture/DeregisterInstancesFromLoadBalancerResponse"
+    (Proxy :: Proxy DeregisterInstancesFromLoadBalancer)
+
+testDescribeLoadBalancerPoliciesResponse :: DescribeLoadBalancerPoliciesResponse -> TestTree
+testDescribeLoadBalancerPoliciesResponse = res
+    "DescribeLoadBalancerPoliciesResponse"
+    "fixture/DescribeLoadBalancerPoliciesResponse"
+    (Proxy :: Proxy DescribeLoadBalancerPolicies)
+
+testDisableAvailabilityZonesForLoadBalancerResponse :: DisableAvailabilityZonesForLoadBalancerResponse -> TestTree
+testDisableAvailabilityZonesForLoadBalancerResponse = res
+    "DisableAvailabilityZonesForLoadBalancerResponse"
+    "fixture/DisableAvailabilityZonesForLoadBalancerResponse"
+    (Proxy :: Proxy DisableAvailabilityZonesForLoadBalancer)
+
+testSetLoadBalancerPoliciesForBackendServerResponse :: SetLoadBalancerPoliciesForBackendServerResponse -> TestTree
+testSetLoadBalancerPoliciesForBackendServerResponse = res
+    "SetLoadBalancerPoliciesForBackendServerResponse"
+    "fixture/SetLoadBalancerPoliciesForBackendServerResponse"
+    (Proxy :: Proxy SetLoadBalancerPoliciesForBackendServer)
+
+testEnableAvailabilityZonesForLoadBalancerResponse :: EnableAvailabilityZonesForLoadBalancerResponse -> TestTree
+testEnableAvailabilityZonesForLoadBalancerResponse = res
+    "EnableAvailabilityZonesForLoadBalancerResponse"
+    "fixture/EnableAvailabilityZonesForLoadBalancerResponse"
+    (Proxy :: Proxy EnableAvailabilityZonesForLoadBalancer)
+
+testSetLoadBalancerListenerSSLCertificateResponse :: SetLoadBalancerListenerSSLCertificateResponse -> TestTree
+testSetLoadBalancerListenerSSLCertificateResponse = res
+    "SetLoadBalancerListenerSSLCertificateResponse"
+    "fixture/SetLoadBalancerListenerSSLCertificateResponse"
+    (Proxy :: Proxy SetLoadBalancerListenerSSLCertificate)
+
+testConfigureHealthCheckResponse :: ConfigureHealthCheckResponse -> TestTree
+testConfigureHealthCheckResponse = res
+    "ConfigureHealthCheckResponse"
+    "fixture/ConfigureHealthCheckResponse"
+    (Proxy :: Proxy ConfigureHealthCheck)
+
+testAttachLoadBalancerToSubnetsResponse :: AttachLoadBalancerToSubnetsResponse -> TestTree
+testAttachLoadBalancerToSubnetsResponse = res
+    "AttachLoadBalancerToSubnetsResponse"
+    "fixture/AttachLoadBalancerToSubnetsResponse"
+    (Proxy :: Proxy AttachLoadBalancerToSubnets)
+
+testModifyLoadBalancerAttributesResponse :: ModifyLoadBalancerAttributesResponse -> TestTree
+testModifyLoadBalancerAttributesResponse = res
+    "ModifyLoadBalancerAttributesResponse"
+    "fixture/ModifyLoadBalancerAttributesResponse"
+    (Proxy :: Proxy ModifyLoadBalancerAttributes)
+
+testCreateAppCookieStickinessPolicyResponse :: CreateAppCookieStickinessPolicyResponse -> TestTree
+testCreateAppCookieStickinessPolicyResponse = res
+    "CreateAppCookieStickinessPolicyResponse"
+    "fixture/CreateAppCookieStickinessPolicyResponse"
+    (Proxy :: Proxy CreateAppCookieStickinessPolicy)
+
+testAddTagsResponse :: AddTagsResponse -> TestTree
+testAddTagsResponse = res
+    "AddTagsResponse"
+    "fixture/AddTagsResponse"
+    (Proxy :: Proxy AddTags)
+
+testDescribeLoadBalancerAttributesResponse :: DescribeLoadBalancerAttributesResponse -> TestTree
+testDescribeLoadBalancerAttributesResponse = res
+    "DescribeLoadBalancerAttributesResponse"
+    "fixture/DescribeLoadBalancerAttributesResponse"
+    (Proxy :: Proxy DescribeLoadBalancerAttributes)
+
+testDescribeInstanceHealthResponse :: DescribeInstanceHealthResponse -> TestTree
+testDescribeInstanceHealthResponse = res
+    "DescribeInstanceHealthResponse"
+    "fixture/DescribeInstanceHealthResponse"
+    (Proxy :: Proxy DescribeInstanceHealth)
+
+testDetachLoadBalancerFromSubnetsResponse :: DetachLoadBalancerFromSubnetsResponse -> TestTree
+testDetachLoadBalancerFromSubnetsResponse = res
+    "DetachLoadBalancerFromSubnetsResponse"
+    "fixture/DetachLoadBalancerFromSubnetsResponse"
+    (Proxy :: Proxy DetachLoadBalancerFromSubnets)
+
+testRegisterInstancesWithLoadBalancerResponse :: RegisterInstancesWithLoadBalancerResponse -> TestTree
+testRegisterInstancesWithLoadBalancerResponse = res
+    "RegisterInstancesWithLoadBalancerResponse"
+    "fixture/RegisterInstancesWithLoadBalancerResponse"
+    (Proxy :: Proxy RegisterInstancesWithLoadBalancer)
+
+testDeleteLoadBalancerPolicyResponse :: DeleteLoadBalancerPolicyResponse -> TestTree
+testDeleteLoadBalancerPolicyResponse = res
+    "DeleteLoadBalancerPolicyResponse"
+    "fixture/DeleteLoadBalancerPolicyResponse"
+    (Proxy :: Proxy DeleteLoadBalancerPolicy)
+
+testCreateLoadBalancerListenersResponse :: CreateLoadBalancerListenersResponse -> TestTree
+testCreateLoadBalancerListenersResponse = res
+    "CreateLoadBalancerListenersResponse"
+    "fixture/CreateLoadBalancerListenersResponse"
+    (Proxy :: Proxy CreateLoadBalancerListeners)
+
+testDeleteLoadBalancerListenersResponse :: DeleteLoadBalancerListenersResponse -> TestTree
+testDeleteLoadBalancerListenersResponse = res
+    "DeleteLoadBalancerListenersResponse"
+    "fixture/DeleteLoadBalancerListenersResponse"
+    (Proxy :: Proxy DeleteLoadBalancerListeners)
+
+testCreateLoadBalancerResponse :: CreateLoadBalancerResponse -> TestTree
+testCreateLoadBalancerResponse = res
+    "CreateLoadBalancerResponse"
+    "fixture/CreateLoadBalancerResponse"
+    (Proxy :: Proxy CreateLoadBalancer)
+
+testSetLoadBalancerPoliciesOfListenerResponse :: SetLoadBalancerPoliciesOfListenerResponse -> TestTree
+testSetLoadBalancerPoliciesOfListenerResponse = res
+    "SetLoadBalancerPoliciesOfListenerResponse"
+    "fixture/SetLoadBalancerPoliciesOfListenerResponse"
+    (Proxy :: Proxy SetLoadBalancerPoliciesOfListener)
