diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,25 +1,36 @@
 # Amazon Auto Scaling 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
 
-Auto Scaling allows you to scale your Amazon EC2 capacity up or down
-automatically according to conditions you define. With Auto Scaling, you can
-ensure that the number of Amazon EC2 instances you’re using increases
-seamlessly during demand spikes to maintain performance, and decreases
-automatically during demand lulls to minimize costs. Auto Scaling is
-particularly well suited for applications that experience hourly, daily, or
-weekly variability in usage. Auto Scaling is enabled by Amazon CloudWatch and
-available at no additional charge beyond Amazon CloudWatch fees.
+Auto Scaling
 
+Auto Scaling is designed to automatically launch or terminate EC2
+instances based on user-defined policies, schedules, and health checks.
+Use this service in conjunction with the Amazon CloudWatch and Elastic
+Load Balancing services.
+
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-autoscaling)
 and the [AWS API Reference](http://docs.aws.amazon.com/AutoScaling/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-autoscaling.cabal b/amazonka-autoscaling.cabal
--- a/amazonka-autoscaling.cabal
+++ b/amazonka-autoscaling.cabal
@@ -1,32 +1,38 @@
 name:                  amazonka-autoscaling
-version:               0.3.6
+version:               1.0.0
 synopsis:              Amazon Auto Scaling 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:
-    Auto Scaling allows you to scale your Amazon EC2 capacity up or down
-    automatically according to conditions you define. With Auto Scaling, you can
-    ensure that the number of Amazon EC2 instances you’re using increases
-    seamlessly during demand spikes to maintain performance, and decreases
-    automatically during demand lulls to minimize costs. Auto Scaling is
-    particularly well suited for applications that experience hourly, daily, or
-    weekly variability in usage. Auto Scaling is enabled by Amazon CloudWatch and
-    available at no additional charge beyond Amazon CloudWatch fees.
+    Auto Scaling
 
+    Auto Scaling is designed to automatically launch or terminate EC2
+    instances based on user-defined policies, schedules, and health checks.
+    Use this service in conjunction with the Amazon CloudWatch and Elastic
+    Load Balancing services.
     .
-    /See:/ <http://docs.aws.amazon.com/AutoScaling/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.AutoScaling" and the <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/Welcome.html AWS API Reference>
+    to get started.
 
 source-repository head
     type:     git
@@ -41,6 +47,7 @@
     exposed-modules:
           Network.AWS.AutoScaling
         , Network.AWS.AutoScaling.AttachInstances
+        , Network.AWS.AutoScaling.AttachLoadBalancers
         , Network.AWS.AutoScaling.CompleteLifecycleAction
         , Network.AWS.AutoScaling.CreateAutoScalingGroup
         , Network.AWS.AutoScaling.CreateLaunchConfiguration
@@ -60,6 +67,7 @@
         , Network.AWS.AutoScaling.DescribeLaunchConfigurations
         , Network.AWS.AutoScaling.DescribeLifecycleHookTypes
         , Network.AWS.AutoScaling.DescribeLifecycleHooks
+        , Network.AWS.AutoScaling.DescribeLoadBalancers
         , Network.AWS.AutoScaling.DescribeMetricCollectionTypes
         , Network.AWS.AutoScaling.DescribeNotificationConfigurations
         , Network.AWS.AutoScaling.DescribePolicies
@@ -69,6 +77,7 @@
         , Network.AWS.AutoScaling.DescribeTags
         , Network.AWS.AutoScaling.DescribeTerminationPolicyTypes
         , Network.AWS.AutoScaling.DetachInstances
+        , Network.AWS.AutoScaling.DetachLoadBalancers
         , Network.AWS.AutoScaling.DisableMetricsCollection
         , Network.AWS.AutoScaling.EnableMetricsCollection
         , Network.AWS.AutoScaling.EnterStandby
@@ -86,9 +95,40 @@
         , Network.AWS.AutoScaling.TerminateInstanceInAutoScalingGroup
         , Network.AWS.AutoScaling.Types
         , Network.AWS.AutoScaling.UpdateAutoScalingGroup
+        , Network.AWS.AutoScaling.Waiters
 
     other-modules:
+          Network.AWS.AutoScaling.Types.Product
+        , Network.AWS.AutoScaling.Types.Sum
 
     build-depends:
-          amazonka-core == 0.3.6.*
+          amazonka-core == 1.0.0.*
         , base          >= 4.7     && < 5
+
+test-suite amazonka-autoscaling-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.AutoScaling
+        , Test.AWS.Gen.AutoScaling
+        , Test.AWS.AutoScaling.Internal
+
+    build-depends:
+          amazonka-core == 1.0.0
+        , amazonka-test == 1.0.0
+        , amazonka-autoscaling == 1.0.0
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
diff --git a/gen/Network/AWS/AutoScaling.hs b/gen/Network/AWS/AutoScaling.hs
--- a/gen/Network/AWS/AutoScaling.hs
+++ b/gen/Network/AWS/AutoScaling.hs
@@ -1,115 +1,520 @@
+{-# 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.AutoScaling
--- 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.
-
--- | Auto Scaling allows you to scale your Amazon EC2 capacity up or down
--- automatically according to conditions you define. With Auto Scaling, you can
--- ensure that the number of Amazon EC2 instances you’re using increases
--- seamlessly during demand spikes to maintain performance, and decreases
--- automatically during demand lulls to minimize costs. Auto Scaling is
--- particularly well suited for applications that experience hourly, daily, or
--- weekly variability in usage. Auto Scaling is enabled by Amazon CloudWatch and
--- available at no additional charge beyond Amazon CloudWatch fees.
+-- Auto Scaling
+--
+-- Auto Scaling is designed to automatically launch or terminate EC2
+-- instances based on user-defined policies, schedules, and health checks.
+-- Use this service in conjunction with the Amazon CloudWatch and Elastic
+-- Load Balancing services.
+--
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.AutoScaling
-    ( module Network.AWS.AutoScaling.AttachInstances
-    , module Network.AWS.AutoScaling.CompleteLifecycleAction
-    , module Network.AWS.AutoScaling.CreateAutoScalingGroup
-    , module Network.AWS.AutoScaling.CreateLaunchConfiguration
-    , module Network.AWS.AutoScaling.CreateOrUpdateTags
-    , module Network.AWS.AutoScaling.DeleteAutoScalingGroup
-    , module Network.AWS.AutoScaling.DeleteLaunchConfiguration
-    , module Network.AWS.AutoScaling.DeleteLifecycleHook
-    , module Network.AWS.AutoScaling.DeleteNotificationConfiguration
-    , module Network.AWS.AutoScaling.DeletePolicy
-    , module Network.AWS.AutoScaling.DeleteScheduledAction
-    , module Network.AWS.AutoScaling.DeleteTags
-    , module Network.AWS.AutoScaling.DescribeAccountLimits
-    , module Network.AWS.AutoScaling.DescribeAdjustmentTypes
-    , module Network.AWS.AutoScaling.DescribeAutoScalingGroups
-    , module Network.AWS.AutoScaling.DescribeAutoScalingInstances
-    , module Network.AWS.AutoScaling.DescribeAutoScalingNotificationTypes
-    , module Network.AWS.AutoScaling.DescribeLaunchConfigurations
-    , module Network.AWS.AutoScaling.DescribeLifecycleHookTypes
-    , module Network.AWS.AutoScaling.DescribeLifecycleHooks
+    (
+    -- * Service
+      AutoScaling
+
+    -- * Errors
+    -- $errors
+
+    -- ** LimitExceededFault
+    , _LimitExceededFault
+
+    -- ** AlreadyExistsFault
+    , _AlreadyExistsFault
+
+    -- ** ResourceInUseFault
+    , _ResourceInUseFault
+
+    -- ** InvalidNextToken
+    , _InvalidNextToken
+
+    -- ** ScalingActivityInProgressFault
+    , _ScalingActivityInProgressFault
+
+    -- ** ResourceContentionFault
+    , _ResourceContentionFault
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** DescribeMetricCollectionTypes
     , module Network.AWS.AutoScaling.DescribeMetricCollectionTypes
-    , module Network.AWS.AutoScaling.DescribeNotificationConfigurations
-    , module Network.AWS.AutoScaling.DescribePolicies
-    , module Network.AWS.AutoScaling.DescribeScalingActivities
-    , module Network.AWS.AutoScaling.DescribeScalingProcessTypes
-    , module Network.AWS.AutoScaling.DescribeScheduledActions
+
+    -- ** PutScalingPolicy
+    , module Network.AWS.AutoScaling.PutScalingPolicy
+
+    -- ** DeleteNotificationConfiguration
+    , module Network.AWS.AutoScaling.DeleteNotificationConfiguration
+
+    -- ** DescribeTags (Paginated)
     , module Network.AWS.AutoScaling.DescribeTags
+
+    -- ** DeleteLaunchConfiguration
+    , module Network.AWS.AutoScaling.DeleteLaunchConfiguration
+
+    -- ** DescribeLoadBalancers
+    , module Network.AWS.AutoScaling.DescribeLoadBalancers
+
+    -- ** PutNotificationConfiguration
+    , module Network.AWS.AutoScaling.PutNotificationConfiguration
+
+    -- ** SetInstanceHealth
+    , module Network.AWS.AutoScaling.SetInstanceHealth
+
+    -- ** EnterStandby
+    , module Network.AWS.AutoScaling.EnterStandby
+
+    -- ** SuspendProcesses
+    , module Network.AWS.AutoScaling.SuspendProcesses
+
+    -- ** ExitStandby
+    , module Network.AWS.AutoScaling.ExitStandby
+
+    -- ** DescribeTerminationPolicyTypes
     , module Network.AWS.AutoScaling.DescribeTerminationPolicyTypes
+
+    -- ** DescribeAutoScalingInstances (Paginated)
+    , module Network.AWS.AutoScaling.DescribeAutoScalingInstances
+
+    -- ** DetachInstances
     , module Network.AWS.AutoScaling.DetachInstances
+
+    -- ** DisableMetricsCollection
     , module Network.AWS.AutoScaling.DisableMetricsCollection
+
+    -- ** RecordLifecycleActionHeartbeat
+    , module Network.AWS.AutoScaling.RecordLifecycleActionHeartbeat
+
+    -- ** DeleteTags
+    , module Network.AWS.AutoScaling.DeleteTags
+
+    -- ** DescribeScalingProcessTypes
+    , module Network.AWS.AutoScaling.DescribeScalingProcessTypes
+
+    -- ** EnableMetricsCollection
     , module Network.AWS.AutoScaling.EnableMetricsCollection
-    , module Network.AWS.AutoScaling.EnterStandby
-    , module Network.AWS.AutoScaling.ExecutePolicy
-    , module Network.AWS.AutoScaling.ExitStandby
+
+    -- ** DescribeLifecycleHooks
+    , module Network.AWS.AutoScaling.DescribeLifecycleHooks
+
+    -- ** DescribeAutoScalingGroups (Paginated)
+    , module Network.AWS.AutoScaling.DescribeAutoScalingGroups
+
+    -- ** SetDesiredCapacity
+    , module Network.AWS.AutoScaling.SetDesiredCapacity
+
+    -- ** DetachLoadBalancers
+    , module Network.AWS.AutoScaling.DetachLoadBalancers
+
+    -- ** DeleteScheduledAction
+    , module Network.AWS.AutoScaling.DeleteScheduledAction
+
+    -- ** CreateOrUpdateTags
+    , module Network.AWS.AutoScaling.CreateOrUpdateTags
+
+    -- ** DeletePolicy
+    , module Network.AWS.AutoScaling.DeletePolicy
+
+    -- ** DescribeAutoScalingNotificationTypes
+    , module Network.AWS.AutoScaling.DescribeAutoScalingNotificationTypes
+
+    -- ** CompleteLifecycleAction
+    , module Network.AWS.AutoScaling.CompleteLifecycleAction
+
+    -- ** AttachInstances
+    , module Network.AWS.AutoScaling.AttachInstances
+
+    -- ** DescribeScheduledActions (Paginated)
+    , module Network.AWS.AutoScaling.DescribeScheduledActions
+
+    -- ** DeleteAutoScalingGroup
+    , module Network.AWS.AutoScaling.DeleteAutoScalingGroup
+
+    -- ** PutLifecycleHook
     , module Network.AWS.AutoScaling.PutLifecycleHook
-    , module Network.AWS.AutoScaling.PutNotificationConfiguration
-    , module Network.AWS.AutoScaling.PutScalingPolicy
-    , module Network.AWS.AutoScaling.PutScheduledUpdateGroupAction
-    , module Network.AWS.AutoScaling.RecordLifecycleActionHeartbeat
+
+    -- ** UpdateAutoScalingGroup
+    , module Network.AWS.AutoScaling.UpdateAutoScalingGroup
+
+    -- ** DeleteLifecycleHook
+    , module Network.AWS.AutoScaling.DeleteLifecycleHook
+
+    -- ** ResumeProcesses
     , module Network.AWS.AutoScaling.ResumeProcesses
-    , module Network.AWS.AutoScaling.SetDesiredCapacity
-    , module Network.AWS.AutoScaling.SetInstanceHealth
-    , module Network.AWS.AutoScaling.SuspendProcesses
+
+    -- ** ExecutePolicy
+    , module Network.AWS.AutoScaling.ExecutePolicy
+
+    -- ** TerminateInstanceInAutoScalingGroup
     , module Network.AWS.AutoScaling.TerminateInstanceInAutoScalingGroup
-    , module Network.AWS.AutoScaling.Types
-    , module Network.AWS.AutoScaling.UpdateAutoScalingGroup
+
+    -- ** DescribeAccountLimits
+    , module Network.AWS.AutoScaling.DescribeAccountLimits
+
+    -- ** AttachLoadBalancers
+    , module Network.AWS.AutoScaling.AttachLoadBalancers
+
+    -- ** PutScheduledUpdateGroupAction
+    , module Network.AWS.AutoScaling.PutScheduledUpdateGroupAction
+
+    -- ** DescribePolicies (Paginated)
+    , module Network.AWS.AutoScaling.DescribePolicies
+
+    -- ** DescribeNotificationConfigurations (Paginated)
+    , module Network.AWS.AutoScaling.DescribeNotificationConfigurations
+
+    -- ** DescribeLaunchConfigurations (Paginated)
+    , module Network.AWS.AutoScaling.DescribeLaunchConfigurations
+
+    -- ** DescribeLifecycleHookTypes
+    , module Network.AWS.AutoScaling.DescribeLifecycleHookTypes
+
+    -- ** DescribeScalingActivities (Paginated)
+    , module Network.AWS.AutoScaling.DescribeScalingActivities
+
+    -- ** CreateAutoScalingGroup
+    , module Network.AWS.AutoScaling.CreateAutoScalingGroup
+
+    -- ** CreateLaunchConfiguration
+    , module Network.AWS.AutoScaling.CreateLaunchConfiguration
+
+    -- ** DescribeAdjustmentTypes
+    , module Network.AWS.AutoScaling.DescribeAdjustmentTypes
+
+    -- * Types
+
+    -- ** LifecycleState
+    , LifecycleState (..)
+
+    -- ** ScalingActivityStatusCode
+    , ScalingActivityStatusCode (..)
+
+    -- ** Activity
+    , Activity
+    , activity
+    , aProgress
+    , aStatusMessage
+    , aDetails
+    , aEndTime
+    , aDescription
+    , aActivityId
+    , aAutoScalingGroupName
+    , aCause
+    , aStartTime
+    , aStatusCode
+
+    -- ** AdjustmentType
+    , AdjustmentType
+    , adjustmentType
+    , atAdjustmentType
+
+    -- ** Alarm
+    , Alarm
+    , alarm
+    , aAlarmName
+    , aAlarmARN
+
+    -- ** AutoScalingGroup
+    , AutoScalingGroup
+    , autoScalingGroup
+    , asgStatus
+    , asgTerminationPolicies
+    , asgHealthCheckGracePeriod
+    , asgVPCZoneIdentifier
+    , asgEnabledMetrics
+    , asgInstances
+    , asgAutoScalingGroupARN
+    , asgSuspendedProcesses
+    , asgPlacementGroup
+    , asgLoadBalancerNames
+    , asgTags
+    , asgAutoScalingGroupName
+    , asgLaunchConfigurationName
+    , asgMinSize
+    , asgMaxSize
+    , asgDesiredCapacity
+    , asgDefaultCooldown
+    , asgAvailabilityZones
+    , asgHealthCheckType
+    , asgCreatedTime
+
+    -- ** AutoScalingInstanceDetails
+    , AutoScalingInstanceDetails
+    , autoScalingInstanceDetails
+    , asidInstanceId
+    , asidAutoScalingGroupName
+    , asidAvailabilityZone
+    , asidLifecycleState
+    , asidHealthStatus
+    , asidLaunchConfigurationName
+
+    -- ** BlockDeviceMapping
+    , BlockDeviceMapping
+    , blockDeviceMapping
+    , bdmVirtualName
+    , bdmNoDevice
+    , bdmEBS
+    , bdmDeviceName
+
+    -- ** EBS
+    , EBS
+    , ebs
+    , ebsDeleteOnTermination
+    , ebsVolumeSize
+    , ebsIOPS
+    , ebsVolumeType
+    , ebsSnapshotId
+
+    -- ** EnabledMetric
+    , EnabledMetric
+    , enabledMetric
+    , emGranularity
+    , emMetric
+
+    -- ** Filter
+    , Filter
+    , filter'
+    , fValues
+    , fName
+
+    -- ** Instance
+    , Instance
+    , instance'
+    , iInstanceId
+    , iAvailabilityZone
+    , iLifecycleState
+    , iHealthStatus
+    , iLaunchConfigurationName
+
+    -- ** InstanceMonitoring
+    , InstanceMonitoring
+    , instanceMonitoring
+    , imEnabled
+
+    -- ** LaunchConfiguration
+    , LaunchConfiguration
+    , launchConfiguration
+    , lcSecurityGroups
+    , lcAssociatePublicIPAddress
+    , lcInstanceMonitoring
+    , lcSpotPrice
+    , lcKeyName
+    , lcClassicLinkVPCSecurityGroups
+    , lcRAMDiskId
+    , lcKernelId
+    , lcEBSOptimized
+    , lcUserData
+    , lcClassicLinkVPCId
+    , lcIAMInstanceProfile
+    , lcLaunchConfigurationARN
+    , lcPlacementTenancy
+    , lcBlockDeviceMappings
+    , lcLaunchConfigurationName
+    , lcImageId
+    , lcInstanceType
+    , lcCreatedTime
+
+    -- ** LifecycleHook
+    , LifecycleHook
+    , lifecycleHook
+    , lhDefaultResult
+    , lhLifecycleHookName
+    , lhHeartbeatTimeout
+    , lhAutoScalingGroupName
+    , lhNotificationMetadata
+    , lhGlobalTimeout
+    , lhRoleARN
+    , lhLifecycleTransition
+    , lhNotificationTargetARN
+
+    -- ** LoadBalancerState
+    , LoadBalancerState
+    , loadBalancerState
+    , lbsState
+    , lbsLoadBalancerName
+
+    -- ** MetricCollectionType
+    , MetricCollectionType
+    , metricCollectionType
+    , mctMetric
+
+    -- ** MetricGranularityType
+    , MetricGranularityType
+    , metricGranularityType
+    , mgtGranularity
+
+    -- ** NotificationConfiguration
+    , NotificationConfiguration
+    , notificationConfiguration
+    , ncTopicARN
+    , ncAutoScalingGroupName
+    , ncNotificationType
+
+    -- ** ProcessType
+    , ProcessType
+    , processType
+    , ptProcessName
+
+    -- ** ScalingPolicy
+    , ScalingPolicy
+    , scalingPolicy
+    , sEstimatedInstanceWarmup
+    , sMinAdjustmentStep
+    , sPolicyName
+    , sPolicyType
+    , sStepAdjustments
+    , sAdjustmentType
+    , sScalingAdjustment
+    , sAutoScalingGroupName
+    , sCooldown
+    , sPolicyARN
+    , sAlarms
+    , sMetricAggregationType
+    , sMinAdjustmentMagnitude
+
+    -- ** ScalingProcessQuery
+    , ScalingProcessQuery
+    , scalingProcessQuery
+    , spqScalingProcesses
+    , spqAutoScalingGroupName
+
+    -- ** ScheduledUpdateGroupAction
+    , ScheduledUpdateGroupAction
+    , scheduledUpdateGroupAction
+    , sugaScheduledActionARN
+    , sugaTime
+    , sugaStartTime
+    , sugaScheduledActionName
+    , sugaMaxSize
+    , sugaDesiredCapacity
+    , sugaRecurrence
+    , sugaMinSize
+    , sugaEndTime
+    , sugaAutoScalingGroupName
+
+    -- ** StepAdjustment
+    , StepAdjustment
+    , stepAdjustment
+    , saMetricIntervalLowerBound
+    , saMetricIntervalUpperBound
+    , saScalingAdjustment
+
+    -- ** SuspendedProcess
+    , SuspendedProcess
+    , suspendedProcess
+    , spProcessName
+    , spSuspensionReason
+
+    -- ** Tag
+    , Tag
+    , tag
+    , tagKey
+    , tagResourceId
+    , tagResourceType
+    , tagPropagateAtLaunch
+    , tagValue
+
+    -- ** TagDescription
+    , TagDescription
+    , tagDescription
+    , tdResourceId
+    , tdResourceType
+    , tdKey
+    , tdPropagateAtLaunch
+    , tdValue
     ) where
 
-import Network.AWS.AutoScaling.AttachInstances
-import Network.AWS.AutoScaling.CompleteLifecycleAction
-import Network.AWS.AutoScaling.CreateAutoScalingGroup
-import Network.AWS.AutoScaling.CreateLaunchConfiguration
-import Network.AWS.AutoScaling.CreateOrUpdateTags
-import Network.AWS.AutoScaling.DeleteAutoScalingGroup
-import Network.AWS.AutoScaling.DeleteLaunchConfiguration
-import Network.AWS.AutoScaling.DeleteLifecycleHook
-import Network.AWS.AutoScaling.DeleteNotificationConfiguration
-import Network.AWS.AutoScaling.DeletePolicy
-import Network.AWS.AutoScaling.DeleteScheduledAction
-import Network.AWS.AutoScaling.DeleteTags
-import Network.AWS.AutoScaling.DescribeAccountLimits
-import Network.AWS.AutoScaling.DescribeAdjustmentTypes
-import Network.AWS.AutoScaling.DescribeAutoScalingGroups
-import Network.AWS.AutoScaling.DescribeAutoScalingInstances
-import Network.AWS.AutoScaling.DescribeAutoScalingNotificationTypes
-import Network.AWS.AutoScaling.DescribeLaunchConfigurations
-import Network.AWS.AutoScaling.DescribeLifecycleHookTypes
-import Network.AWS.AutoScaling.DescribeLifecycleHooks
-import Network.AWS.AutoScaling.DescribeMetricCollectionTypes
-import Network.AWS.AutoScaling.DescribeNotificationConfigurations
-import Network.AWS.AutoScaling.DescribePolicies
-import Network.AWS.AutoScaling.DescribeScalingActivities
-import Network.AWS.AutoScaling.DescribeScalingProcessTypes
-import Network.AWS.AutoScaling.DescribeScheduledActions
-import Network.AWS.AutoScaling.DescribeTags
-import Network.AWS.AutoScaling.DescribeTerminationPolicyTypes
-import Network.AWS.AutoScaling.DetachInstances
-import Network.AWS.AutoScaling.DisableMetricsCollection
-import Network.AWS.AutoScaling.EnableMetricsCollection
-import Network.AWS.AutoScaling.EnterStandby
-import Network.AWS.AutoScaling.ExecutePolicy
-import Network.AWS.AutoScaling.ExitStandby
-import Network.AWS.AutoScaling.PutLifecycleHook
-import Network.AWS.AutoScaling.PutNotificationConfiguration
-import Network.AWS.AutoScaling.PutScalingPolicy
-import Network.AWS.AutoScaling.PutScheduledUpdateGroupAction
-import Network.AWS.AutoScaling.RecordLifecycleActionHeartbeat
-import Network.AWS.AutoScaling.ResumeProcesses
-import Network.AWS.AutoScaling.SetDesiredCapacity
-import Network.AWS.AutoScaling.SetInstanceHealth
-import Network.AWS.AutoScaling.SuspendProcesses
-import Network.AWS.AutoScaling.TerminateInstanceInAutoScalingGroup
-import Network.AWS.AutoScaling.Types
-import Network.AWS.AutoScaling.UpdateAutoScalingGroup
+import           Network.AWS.AutoScaling.AttachInstances
+import           Network.AWS.AutoScaling.AttachLoadBalancers
+import           Network.AWS.AutoScaling.CompleteLifecycleAction
+import           Network.AWS.AutoScaling.CreateAutoScalingGroup
+import           Network.AWS.AutoScaling.CreateLaunchConfiguration
+import           Network.AWS.AutoScaling.CreateOrUpdateTags
+import           Network.AWS.AutoScaling.DeleteAutoScalingGroup
+import           Network.AWS.AutoScaling.DeleteLaunchConfiguration
+import           Network.AWS.AutoScaling.DeleteLifecycleHook
+import           Network.AWS.AutoScaling.DeleteNotificationConfiguration
+import           Network.AWS.AutoScaling.DeletePolicy
+import           Network.AWS.AutoScaling.DeleteScheduledAction
+import           Network.AWS.AutoScaling.DeleteTags
+import           Network.AWS.AutoScaling.DescribeAccountLimits
+import           Network.AWS.AutoScaling.DescribeAdjustmentTypes
+import           Network.AWS.AutoScaling.DescribeAutoScalingGroups
+import           Network.AWS.AutoScaling.DescribeAutoScalingInstances
+import           Network.AWS.AutoScaling.DescribeAutoScalingNotificationTypes
+import           Network.AWS.AutoScaling.DescribeLaunchConfigurations
+import           Network.AWS.AutoScaling.DescribeLifecycleHooks
+import           Network.AWS.AutoScaling.DescribeLifecycleHookTypes
+import           Network.AWS.AutoScaling.DescribeLoadBalancers
+import           Network.AWS.AutoScaling.DescribeMetricCollectionTypes
+import           Network.AWS.AutoScaling.DescribeNotificationConfigurations
+import           Network.AWS.AutoScaling.DescribePolicies
+import           Network.AWS.AutoScaling.DescribeScalingActivities
+import           Network.AWS.AutoScaling.DescribeScalingProcessTypes
+import           Network.AWS.AutoScaling.DescribeScheduledActions
+import           Network.AWS.AutoScaling.DescribeTags
+import           Network.AWS.AutoScaling.DescribeTerminationPolicyTypes
+import           Network.AWS.AutoScaling.DetachInstances
+import           Network.AWS.AutoScaling.DetachLoadBalancers
+import           Network.AWS.AutoScaling.DisableMetricsCollection
+import           Network.AWS.AutoScaling.EnableMetricsCollection
+import           Network.AWS.AutoScaling.EnterStandby
+import           Network.AWS.AutoScaling.ExecutePolicy
+import           Network.AWS.AutoScaling.ExitStandby
+import           Network.AWS.AutoScaling.PutLifecycleHook
+import           Network.AWS.AutoScaling.PutNotificationConfiguration
+import           Network.AWS.AutoScaling.PutScalingPolicy
+import           Network.AWS.AutoScaling.PutScheduledUpdateGroupAction
+import           Network.AWS.AutoScaling.RecordLifecycleActionHeartbeat
+import           Network.AWS.AutoScaling.ResumeProcesses
+import           Network.AWS.AutoScaling.SetDesiredCapacity
+import           Network.AWS.AutoScaling.SetInstanceHealth
+import           Network.AWS.AutoScaling.SuspendProcesses
+import           Network.AWS.AutoScaling.TerminateInstanceInAutoScalingGroup
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.UpdateAutoScalingGroup
+import           Network.AWS.AutoScaling.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 'AutoScaling'.
+-}
+
+{- $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/AutoScaling/AttachInstances.hs b/gen/Network/AWS/AutoScaling/AttachInstances.hs
--- a/gen/Network/AWS/AutoScaling/AttachInstances.hs
+++ b/gen/Network/AWS/AutoScaling/AttachInstances.hs
@@ -1,103 +1,108 @@
-{-# 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.AutoScaling.AttachInstances
--- 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.
-
--- | Attaches one or more EC2 instances to the specified Auto Scaling group.
+-- Attaches one or more EC2 instances to the specified Auto Scaling group.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/attach-instance-asg.html Attach Amazon EC2 Instances to Your Existing AutoScaling Group> in the /Auto Scaling Developer Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/attach-instance-asg.html Attach EC2 Instances to Your Auto Scaling Group>
+-- in the /Auto Scaling Developer Guide/.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_AttachInstances.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_AttachInstances.html AWS API Reference> for AttachInstances.
 module Network.AWS.AutoScaling.AttachInstances
     (
-    -- * Request
-      AttachInstances
-    -- ** Request constructor
-    , attachInstances
-    -- ** Request lenses
-    , aiAutoScalingGroupName
+    -- * Creating a Request
+      attachInstances
+    , AttachInstances
+    -- * Request Lenses
     , aiInstanceIds
+    , aiAutoScalingGroupName
 
-    -- * Response
-    , AttachInstancesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , attachInstancesResponse
+    , AttachInstancesResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data AttachInstances = AttachInstances
-    { _aiAutoScalingGroupName :: Text
-    , _aiInstanceIds          :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'attachInstances' smart constructor.
+data AttachInstances = AttachInstances'
+    { _aiInstanceIds          :: !(Maybe [Text])
+    , _aiAutoScalingGroupName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'AttachInstances' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'AttachInstances' with the minimum fields required to make a request.
 --
--- * 'aiAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'aiInstanceIds' @::@ ['Text']
+-- * 'aiInstanceIds'
 --
-attachInstances :: Text -- ^ 'aiAutoScalingGroupName'
-                -> AttachInstances
-attachInstances p1 = AttachInstances
-    { _aiAutoScalingGroupName = p1
-    , _aiInstanceIds          = mempty
+-- * 'aiAutoScalingGroupName'
+attachInstances
+    :: Text -- ^ 'aiAutoScalingGroupName'
+    -> AttachInstances
+attachInstances pAutoScalingGroupName_ =
+    AttachInstances'
+    { _aiInstanceIds = Nothing
+    , _aiAutoScalingGroupName = pAutoScalingGroupName_
     }
 
+-- | One or more EC2 instance IDs.
+aiInstanceIds :: Lens' AttachInstances [Text]
+aiInstanceIds = lens _aiInstanceIds (\ s a -> s{_aiInstanceIds = a}) . _Default . _Coerce;
+
 -- | The name of the group.
 aiAutoScalingGroupName :: Lens' AttachInstances Text
-aiAutoScalingGroupName =
-    lens _aiAutoScalingGroupName (\s a -> s { _aiAutoScalingGroupName = a })
-
--- | One or more EC2 instance IDs. You must specify at least one ID.
-aiInstanceIds :: Lens' AttachInstances [Text]
-aiInstanceIds = lens _aiInstanceIds (\s a -> s { _aiInstanceIds = a }) . _List
+aiAutoScalingGroupName = lens _aiAutoScalingGroupName (\ s a -> s{_aiAutoScalingGroupName = a});
 
-data AttachInstancesResponse = AttachInstancesResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest AttachInstances where
+        type Sv AttachInstances = AutoScaling
+        type Rs AttachInstances = AttachInstancesResponse
+        request = postQuery
+        response = receiveNull AttachInstancesResponse'
 
--- | 'AttachInstancesResponse' constructor.
-attachInstancesResponse :: AttachInstancesResponse
-attachInstancesResponse = AttachInstancesResponse
+instance ToHeaders AttachInstances where
+        toHeaders = const mempty
 
 instance ToPath AttachInstances where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery AttachInstances where
-    toQuery AttachInstances{..} = mconcat
-        [ "AutoScalingGroupName" =? _aiAutoScalingGroupName
-        , "InstanceIds"          =? _aiInstanceIds
-        ]
-
-instance ToHeaders AttachInstances
+        toQuery AttachInstances'{..}
+          = mconcat
+              ["Action" =: ("AttachInstances" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "InstanceIds" =:
+                 toQuery (toQueryList "member" <$> _aiInstanceIds),
+               "AutoScalingGroupName" =: _aiAutoScalingGroupName]
 
-instance AWSRequest AttachInstances where
-    type Sv AttachInstances = AutoScaling
-    type Rs AttachInstances = AttachInstancesResponse
+-- | /See:/ 'attachInstancesResponse' smart constructor.
+data AttachInstancesResponse =
+    AttachInstancesResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "AttachInstances"
-    response = nullResponse AttachInstancesResponse
+-- | Creates a value of 'AttachInstancesResponse' with the minimum fields required to make a request.
+--
+attachInstancesResponse
+    :: AttachInstancesResponse
+attachInstancesResponse = AttachInstancesResponse'
diff --git a/gen/Network/AWS/AutoScaling/AttachLoadBalancers.hs b/gen/Network/AWS/AutoScaling/AttachLoadBalancers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AutoScaling/AttachLoadBalancers.hs
@@ -0,0 +1,129 @@
+{-# 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.AutoScaling.AttachLoadBalancers
+-- 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)
+--
+-- Attaches one or more load balancers to the specified Auto Scaling group.
+--
+-- To describe the load balancers for an Auto Scaling group, use
+-- DescribeLoadBalancers. To detach the load balancer from the Auto Scaling
+-- group, use DetachLoadBalancers.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/attach-load-balancer-asg.html Attach a Load Balancer to Your Auto Scaling Group>
+-- in the /Auto Scaling Developer Guide/.
+--
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_AttachLoadBalancers.html AWS API Reference> for AttachLoadBalancers.
+module Network.AWS.AutoScaling.AttachLoadBalancers
+    (
+    -- * Creating a Request
+      attachLoadBalancers
+    , AttachLoadBalancers
+    -- * Request Lenses
+    , albAutoScalingGroupName
+    , albLoadBalancerNames
+
+    -- * Destructuring the Response
+    , attachLoadBalancersResponse
+    , AttachLoadBalancersResponse
+    -- * Response Lenses
+    , albrsStatus
+    ) where
+
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'attachLoadBalancers' smart constructor.
+data AttachLoadBalancers = AttachLoadBalancers'
+    { _albAutoScalingGroupName :: !(Maybe Text)
+    , _albLoadBalancerNames    :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AttachLoadBalancers' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'albAutoScalingGroupName'
+--
+-- * 'albLoadBalancerNames'
+attachLoadBalancers
+    :: AttachLoadBalancers
+attachLoadBalancers =
+    AttachLoadBalancers'
+    { _albAutoScalingGroupName = Nothing
+    , _albLoadBalancerNames = Nothing
+    }
+
+-- | The name of the group.
+albAutoScalingGroupName :: Lens' AttachLoadBalancers (Maybe Text)
+albAutoScalingGroupName = lens _albAutoScalingGroupName (\ s a -> s{_albAutoScalingGroupName = a});
+
+-- | One or more load balancer names.
+albLoadBalancerNames :: Lens' AttachLoadBalancers [Text]
+albLoadBalancerNames = lens _albLoadBalancerNames (\ s a -> s{_albLoadBalancerNames = a}) . _Default . _Coerce;
+
+instance AWSRequest AttachLoadBalancers where
+        type Sv AttachLoadBalancers = AutoScaling
+        type Rs AttachLoadBalancers =
+             AttachLoadBalancersResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "AttachLoadBalancersResult"
+              (\ s h x ->
+                 AttachLoadBalancersResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders AttachLoadBalancers where
+        toHeaders = const mempty
+
+instance ToPath AttachLoadBalancers where
+        toPath = const "/"
+
+instance ToQuery AttachLoadBalancers where
+        toQuery AttachLoadBalancers'{..}
+          = mconcat
+              ["Action" =: ("AttachLoadBalancers" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "AutoScalingGroupName" =: _albAutoScalingGroupName,
+               "LoadBalancerNames" =:
+                 toQuery
+                   (toQueryList "member" <$> _albLoadBalancerNames)]
+
+-- | /See:/ 'attachLoadBalancersResponse' smart constructor.
+newtype AttachLoadBalancersResponse = AttachLoadBalancersResponse'
+    { _albrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AttachLoadBalancersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'albrsStatus'
+attachLoadBalancersResponse
+    :: Int -- ^ 'albrsStatus'
+    -> AttachLoadBalancersResponse
+attachLoadBalancersResponse pStatus_ =
+    AttachLoadBalancersResponse'
+    { _albrsStatus = pStatus_
+    }
+
+-- | The response status code.
+albrsStatus :: Lens' AttachLoadBalancersResponse Int
+albrsStatus = lens _albrsStatus (\ s a -> s{_albrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/CompleteLifecycleAction.hs b/gen/Network/AWS/AutoScaling/CompleteLifecycleAction.hs
--- a/gen/Network/AWS/AutoScaling/CompleteLifecycleAction.hs
+++ b/gen/Network/AWS/AutoScaling/CompleteLifecycleAction.hs
@@ -1,140 +1,169 @@
-{-# 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.AutoScaling.CompleteLifecycleAction
--- 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.
-
--- | Completes the lifecycle action for the associated token initiated under the
--- given lifecycle hook with the specified result.
+-- Completes the lifecycle action for the associated token initiated under
+-- the given lifecycle hook with the specified result.
 --
--- This operation is a part of the basic sequence for adding a lifecycle hook
--- to an Auto Scaling group:
+-- This operation is a part of the basic sequence for adding a lifecycle
+-- hook to an Auto Scaling group:
 --
--- Create a notification target. A target can be either an Amazon SQS queue or
--- an Amazon SNS topic. Create an IAM role. This role allows Auto Scaling to
--- publish lifecycle notifications to the designated SQS queue or SNS topic. Create the lifecycle hook. You can create a hook that acts when instances launch or when instances terminate.
--- If necessary, record the lifecycle action heartbeat to keep the instance in
--- a pending state.  Complete the lifecycle action.  For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingPendingState.html Auto Scaling Pending State> and <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingTerminatingState.html Auto Scaling Terminating State> in the /Auto Scaling Developer Guide/.
+-- 1.  Create a notification target. A target can be either an Amazon SQS
+--     queue or an Amazon SNS topic.
+-- 2.  Create an IAM role. This role allows Auto Scaling to publish
+--     lifecycle notifications to the designated SQS queue or SNS topic.
+-- 3.  Create the lifecycle hook. You can create a hook that acts when
+--     instances launch or when instances terminate.
+-- 4.  If necessary, record the lifecycle action heartbeat to keep the
+--     instance in a pending state.
+-- 5.  __Complete the lifecycle action__.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CompleteLifecycleAction.html>
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingPendingState.html Auto Scaling Pending State>
+-- and
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingTerminatingState.html Auto Scaling Terminating State>
+-- in the /Auto Scaling Developer Guide/.
+--
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CompleteLifecycleAction.html AWS API Reference> for CompleteLifecycleAction.
 module Network.AWS.AutoScaling.CompleteLifecycleAction
     (
-    -- * Request
-      CompleteLifecycleAction
-    -- ** Request constructor
-    , completeLifecycleAction
-    -- ** Request lenses
+    -- * Creating a Request
+      completeLifecycleAction
+    , CompleteLifecycleAction
+    -- * Request Lenses
+    , claLifecycleHookName
     , claAutoScalingGroupName
-    , claLifecycleActionResult
     , claLifecycleActionToken
-    , claLifecycleHookName
+    , claLifecycleActionResult
 
-    -- * Response
-    , CompleteLifecycleActionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , completeLifecycleActionResponse
+    , CompleteLifecycleActionResponse
+    -- * Response Lenses
+    , clarsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CompleteLifecycleAction = CompleteLifecycleAction
-    { _claAutoScalingGroupName  :: Text
-    , _claLifecycleActionResult :: Text
-    , _claLifecycleActionToken  :: Text
-    , _claLifecycleHookName     :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'completeLifecycleAction' smart constructor.
+data CompleteLifecycleAction = CompleteLifecycleAction'
+    { _claLifecycleHookName     :: !Text
+    , _claAutoScalingGroupName  :: !Text
+    , _claLifecycleActionToken  :: !Text
+    , _claLifecycleActionResult :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CompleteLifecycleAction' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CompleteLifecycleAction' with the minimum fields required to make a request.
 --
--- * 'claAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'claLifecycleActionResult' @::@ 'Text'
+-- * 'claLifecycleHookName'
 --
--- * 'claLifecycleActionToken' @::@ 'Text'
+-- * 'claAutoScalingGroupName'
 --
--- * 'claLifecycleHookName' @::@ 'Text'
+-- * 'claLifecycleActionToken'
 --
-completeLifecycleAction :: Text -- ^ 'claLifecycleHookName'
-                        -> Text -- ^ 'claAutoScalingGroupName'
-                        -> Text -- ^ 'claLifecycleActionToken'
-                        -> Text -- ^ 'claLifecycleActionResult'
-                        -> CompleteLifecycleAction
-completeLifecycleAction p1 p2 p3 p4 = CompleteLifecycleAction
-    { _claLifecycleHookName     = p1
-    , _claAutoScalingGroupName  = p2
-    , _claLifecycleActionToken  = p3
-    , _claLifecycleActionResult = p4
+-- * 'claLifecycleActionResult'
+completeLifecycleAction
+    :: Text -- ^ 'claLifecycleHookName'
+    -> Text -- ^ 'claAutoScalingGroupName'
+    -> Text -- ^ 'claLifecycleActionToken'
+    -> Text -- ^ 'claLifecycleActionResult'
+    -> CompleteLifecycleAction
+completeLifecycleAction pLifecycleHookName_ pAutoScalingGroupName_ pLifecycleActionToken_ pLifecycleActionResult_ =
+    CompleteLifecycleAction'
+    { _claLifecycleHookName = pLifecycleHookName_
+    , _claAutoScalingGroupName = pAutoScalingGroupName_
+    , _claLifecycleActionToken = pLifecycleActionToken_
+    , _claLifecycleActionResult = pLifecycleActionResult_
     }
 
+-- | The name of the lifecycle hook.
+claLifecycleHookName :: Lens' CompleteLifecycleAction Text
+claLifecycleHookName = lens _claLifecycleHookName (\ s a -> s{_claLifecycleHookName = a});
+
 -- | The name of the group for the lifecycle hook.
 claAutoScalingGroupName :: Lens' CompleteLifecycleAction Text
-claAutoScalingGroupName =
-    lens _claAutoScalingGroupName (\s a -> s { _claAutoScalingGroupName = a })
-
--- | The action for the group to take. This parameter can be either 'CONTINUE' or 'ABANDON'.
-claLifecycleActionResult :: Lens' CompleteLifecycleAction Text
-claLifecycleActionResult =
-    lens _claLifecycleActionResult
-        (\s a -> s { _claLifecycleActionResult = a })
+claAutoScalingGroupName = lens _claAutoScalingGroupName (\ s a -> s{_claAutoScalingGroupName = a});
 
--- | A universally unique identifier (UUID) that identifies a specific lifecycle
--- action associated with an instance. Auto Scaling sends this token to the
--- notification target you specified when you created the lifecycle hook.
+-- | A universally unique identifier (UUID) that identifies a specific
+-- lifecycle action associated with an instance. Auto Scaling sends this
+-- token to the notification target you specified when you created the
+-- lifecycle hook.
 claLifecycleActionToken :: Lens' CompleteLifecycleAction Text
-claLifecycleActionToken =
-    lens _claLifecycleActionToken (\s a -> s { _claLifecycleActionToken = a })
+claLifecycleActionToken = lens _claLifecycleActionToken (\ s a -> s{_claLifecycleActionToken = a});
 
--- | The name of the lifecycle hook.
-claLifecycleHookName :: Lens' CompleteLifecycleAction Text
-claLifecycleHookName =
-    lens _claLifecycleHookName (\s a -> s { _claLifecycleHookName = a })
+-- | The action for the group to take. This parameter can be either
+-- 'CONTINUE' or 'ABANDON'.
+claLifecycleActionResult :: Lens' CompleteLifecycleAction Text
+claLifecycleActionResult = lens _claLifecycleActionResult (\ s a -> s{_claLifecycleActionResult = a});
 
-data CompleteLifecycleActionResponse = CompleteLifecycleActionResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest CompleteLifecycleAction where
+        type Sv CompleteLifecycleAction = AutoScaling
+        type Rs CompleteLifecycleAction =
+             CompleteLifecycleActionResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CompleteLifecycleActionResult"
+              (\ s h x ->
+                 CompleteLifecycleActionResponse' <$>
+                   (pure (fromEnum s)))
 
--- | 'CompleteLifecycleActionResponse' constructor.
-completeLifecycleActionResponse :: CompleteLifecycleActionResponse
-completeLifecycleActionResponse = CompleteLifecycleActionResponse
+instance ToHeaders CompleteLifecycleAction where
+        toHeaders = const mempty
 
 instance ToPath CompleteLifecycleAction where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CompleteLifecycleAction where
-    toQuery CompleteLifecycleAction{..} = mconcat
-        [ "AutoScalingGroupName"  =? _claAutoScalingGroupName
-        , "LifecycleActionResult" =? _claLifecycleActionResult
-        , "LifecycleActionToken"  =? _claLifecycleActionToken
-        , "LifecycleHookName"     =? _claLifecycleHookName
-        ]
+        toQuery CompleteLifecycleAction'{..}
+          = mconcat
+              ["Action" =:
+                 ("CompleteLifecycleAction" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "LifecycleHookName" =: _claLifecycleHookName,
+               "AutoScalingGroupName" =: _claAutoScalingGroupName,
+               "LifecycleActionToken" =: _claLifecycleActionToken,
+               "LifecycleActionResult" =: _claLifecycleActionResult]
 
-instance ToHeaders CompleteLifecycleAction
+-- | /See:/ 'completeLifecycleActionResponse' smart constructor.
+newtype CompleteLifecycleActionResponse = CompleteLifecycleActionResponse'
+    { _clarsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CompleteLifecycleAction where
-    type Sv CompleteLifecycleAction = AutoScaling
-    type Rs CompleteLifecycleAction = CompleteLifecycleActionResponse
+-- | Creates a value of 'CompleteLifecycleActionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'clarsStatus'
+completeLifecycleActionResponse
+    :: Int -- ^ 'clarsStatus'
+    -> CompleteLifecycleActionResponse
+completeLifecycleActionResponse pStatus_ =
+    CompleteLifecycleActionResponse'
+    { _clarsStatus = pStatus_
+    }
 
-    request  = post "CompleteLifecycleAction"
-    response = nullResponse CompleteLifecycleActionResponse
+-- | The response status code.
+clarsStatus :: Lens' CompleteLifecycleActionResponse Int
+clarsStatus = lens _clarsStatus (\ s a -> s{_clarsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/CreateAutoScalingGroup.hs b/gen/Network/AWS/AutoScaling/CreateAutoScalingGroup.hs
--- a/gen/Network/AWS/AutoScaling/CreateAutoScalingGroup.hs
+++ b/gen/Network/AWS/AutoScaling/CreateAutoScalingGroup.hs
@@ -1,302 +1,323 @@
-{-# 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.AutoScaling.CreateAutoScalingGroup
--- 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 an Auto Scaling group with the specified name and attributes.
+-- Creates an Auto Scaling group with the specified name and attributes.
 --
--- If you exceed your maximum limit of Auto Scaling groups, which by default is
--- 20 per region, the call fails. For information about viewing and updating
--- these limits, see 'DescribeAccountLimits'.
+-- If you exceed your maximum limit of Auto Scaling groups, which by
+-- default is 20 per region, the call fails. For information about viewing
+-- and updating this limit, see DescribeAccountLimits.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateAutoScalingGroup.html>
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingGroup.html Auto Scaling Groups>
+-- in the /Auto Scaling Developer Guide/.
+--
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateAutoScalingGroup.html AWS API Reference> for CreateAutoScalingGroup.
 module Network.AWS.AutoScaling.CreateAutoScalingGroup
     (
-    -- * Request
-      CreateAutoScalingGroup
-    -- ** Request constructor
-    , createAutoScalingGroup
-    -- ** Request lenses
-    , casgAutoScalingGroupName
-    , casgAvailabilityZones
+    -- * Creating a Request
+      createAutoScalingGroup
+    , CreateAutoScalingGroup
+    -- * Request Lenses
+    , casgInstanceId
+    , casgTerminationPolicies
+    , casgHealthCheckGracePeriod
+    , casgVPCZoneIdentifier
     , casgDefaultCooldown
     , casgDesiredCapacity
-    , casgHealthCheckGracePeriod
+    , casgAvailabilityZones
     , casgHealthCheckType
-    , casgInstanceId
     , casgLaunchConfigurationName
-    , casgLoadBalancerNames
-    , casgMaxSize
-    , casgMinSize
     , casgPlacementGroup
+    , casgLoadBalancerNames
     , casgTags
-    , casgTerminationPolicies
-    , casgVPCZoneIdentifier
+    , casgAutoScalingGroupName
+    , casgMinSize
+    , casgMaxSize
 
-    -- * Response
-    , CreateAutoScalingGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createAutoScalingGroupResponse
+    , CreateAutoScalingGroupResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CreateAutoScalingGroup = CreateAutoScalingGroup
-    { _casgAutoScalingGroupName    :: Text
-    , _casgAvailabilityZones       :: List1 "member" Text
-    , _casgDefaultCooldown         :: Maybe Int
-    , _casgDesiredCapacity         :: Maybe Int
-    , _casgHealthCheckGracePeriod  :: Maybe Int
-    , _casgHealthCheckType         :: Maybe Text
-    , _casgInstanceId              :: Maybe Text
-    , _casgLaunchConfigurationName :: Maybe Text
-    , _casgLoadBalancerNames       :: List "member" Text
-    , _casgMaxSize                 :: Int
-    , _casgMinSize                 :: Int
-    , _casgPlacementGroup          :: Maybe Text
-    , _casgTags                    :: List "member" Tag
-    , _casgTerminationPolicies     :: List "member" Text
-    , _casgVPCZoneIdentifier       :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'createAutoScalingGroup' smart constructor.
+data CreateAutoScalingGroup = CreateAutoScalingGroup'
+    { _casgInstanceId              :: !(Maybe Text)
+    , _casgTerminationPolicies     :: !(Maybe [Text])
+    , _casgHealthCheckGracePeriod  :: !(Maybe Int)
+    , _casgVPCZoneIdentifier       :: !(Maybe Text)
+    , _casgDefaultCooldown         :: !(Maybe Int)
+    , _casgDesiredCapacity         :: !(Maybe Int)
+    , _casgAvailabilityZones       :: !(Maybe (List1 Text))
+    , _casgHealthCheckType         :: !(Maybe Text)
+    , _casgLaunchConfigurationName :: !(Maybe Text)
+    , _casgPlacementGroup          :: !(Maybe Text)
+    , _casgLoadBalancerNames       :: !(Maybe [Text])
+    , _casgTags                    :: !(Maybe [Tag])
+    , _casgAutoScalingGroupName    :: !Text
+    , _casgMinSize                 :: !Int
+    , _casgMaxSize                 :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateAutoScalingGroup' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CreateAutoScalingGroup' with the minimum fields required to make a request.
 --
--- * 'casgAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'casgAvailabilityZones' @::@ 'NonEmpty' 'Text'
+-- * 'casgInstanceId'
 --
--- * 'casgDefaultCooldown' @::@ 'Maybe' 'Int'
+-- * 'casgTerminationPolicies'
 --
--- * 'casgDesiredCapacity' @::@ 'Maybe' 'Int'
+-- * 'casgHealthCheckGracePeriod'
 --
--- * 'casgHealthCheckGracePeriod' @::@ 'Maybe' 'Int'
+-- * 'casgVPCZoneIdentifier'
 --
--- * 'casgHealthCheckType' @::@ 'Maybe' 'Text'
+-- * 'casgDefaultCooldown'
 --
--- * 'casgInstanceId' @::@ 'Maybe' 'Text'
+-- * 'casgDesiredCapacity'
 --
--- * 'casgLaunchConfigurationName' @::@ 'Maybe' 'Text'
+-- * 'casgAvailabilityZones'
 --
--- * 'casgLoadBalancerNames' @::@ ['Text']
+-- * 'casgHealthCheckType'
 --
--- * 'casgMaxSize' @::@ 'Int'
+-- * 'casgLaunchConfigurationName'
 --
--- * 'casgMinSize' @::@ 'Int'
+-- * 'casgPlacementGroup'
 --
--- * 'casgPlacementGroup' @::@ 'Maybe' 'Text'
+-- * 'casgLoadBalancerNames'
 --
--- * 'casgTags' @::@ ['Tag']
+-- * 'casgTags'
 --
--- * 'casgTerminationPolicies' @::@ ['Text']
+-- * 'casgAutoScalingGroupName'
 --
--- * 'casgVPCZoneIdentifier' @::@ 'Maybe' 'Text'
+-- * 'casgMinSize'
 --
-createAutoScalingGroup :: Text -- ^ 'casgAutoScalingGroupName'
-                       -> Int -- ^ 'casgMinSize'
-                       -> Int -- ^ 'casgMaxSize'
-                       -> NonEmpty Text -- ^ 'casgAvailabilityZones'
-                       -> CreateAutoScalingGroup
-createAutoScalingGroup p1 p2 p3 p4 = CreateAutoScalingGroup
-    { _casgAutoScalingGroupName    = p1
-    , _casgMinSize                 = p2
-    , _casgMaxSize                 = p3
-    , _casgAvailabilityZones       = withIso _List1 (const id) p4
+-- * 'casgMaxSize'
+createAutoScalingGroup
+    :: Text -- ^ 'casgAutoScalingGroupName'
+    -> Int -- ^ 'casgMinSize'
+    -> Int -- ^ 'casgMaxSize'
+    -> CreateAutoScalingGroup
+createAutoScalingGroup pAutoScalingGroupName_ pMinSize_ pMaxSize_ =
+    CreateAutoScalingGroup'
+    { _casgInstanceId = Nothing
+    , _casgTerminationPolicies = Nothing
+    , _casgHealthCheckGracePeriod = Nothing
+    , _casgVPCZoneIdentifier = Nothing
+    , _casgDefaultCooldown = Nothing
+    , _casgDesiredCapacity = Nothing
+    , _casgAvailabilityZones = Nothing
+    , _casgHealthCheckType = Nothing
     , _casgLaunchConfigurationName = Nothing
-    , _casgInstanceId              = Nothing
-    , _casgDesiredCapacity         = Nothing
-    , _casgDefaultCooldown         = Nothing
-    , _casgLoadBalancerNames       = mempty
-    , _casgHealthCheckType         = Nothing
-    , _casgHealthCheckGracePeriod  = Nothing
-    , _casgPlacementGroup          = Nothing
-    , _casgVPCZoneIdentifier       = Nothing
-    , _casgTerminationPolicies     = mempty
-    , _casgTags                    = mempty
+    , _casgPlacementGroup = Nothing
+    , _casgLoadBalancerNames = Nothing
+    , _casgTags = Nothing
+    , _casgAutoScalingGroupName = pAutoScalingGroupName_
+    , _casgMinSize = pMinSize_
+    , _casgMaxSize = pMaxSize_
     }
 
--- | The name of the group. This name must be unique within the scope of your AWS
--- account.
-casgAutoScalingGroupName :: Lens' CreateAutoScalingGroup Text
-casgAutoScalingGroupName =
-    lens _casgAutoScalingGroupName
-        (\s a -> s { _casgAutoScalingGroupName = a })
-
--- | One or more Availability Zones for the group. This parameter is optional if
--- you specify subnets using the 'VPCZoneIdentifier' parameter.
-casgAvailabilityZones :: Lens' CreateAutoScalingGroup (NonEmpty Text)
-casgAvailabilityZones =
-    lens _casgAvailabilityZones (\s a -> s { _casgAvailabilityZones = a })
-        . _List1
-
--- | The amount of time, in seconds, after a scaling activity completes before
--- another scaling activity can start.
+-- | The ID of the EC2 instance used to create a launch configuration for the
+-- group. Alternatively, use the 'LaunchConfigurationName' parameter to
+-- specify a launch configuration instead of an EC2 instance.
 --
--- If 'DefaultCooldown' is not specified, the default value is 300. For more
--- information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/Cooldown.html Understanding Auto Scaling Cooldowns> in the /Auto ScalingDeveloper Guide/.
-casgDefaultCooldown :: Lens' CreateAutoScalingGroup (Maybe Int)
-casgDefaultCooldown =
-    lens _casgDefaultCooldown (\s a -> s { _casgDefaultCooldown = a })
+-- When you specify an ID of an instance, Auto Scaling creates a new launch
+-- configuration and associates it with the group. This launch
+-- configuration derives its attributes from the specified instance, with
+-- the exception of the block device mapping.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/create-asg-from-instance.html Create an Auto Scaling Group from an EC2 Instance>
+-- in the /Auto Scaling Developer Guide/.
+casgInstanceId :: Lens' CreateAutoScalingGroup (Maybe Text)
+casgInstanceId = lens _casgInstanceId (\ s a -> s{_casgInstanceId = a});
 
--- | The number of EC2 instances that should be running in the group. This value
--- must be greater than or equal to the minimum size of the group and less than
--- or equal to the maximum size of the group.
-casgDesiredCapacity :: Lens' CreateAutoScalingGroup (Maybe Int)
-casgDesiredCapacity =
-    lens _casgDesiredCapacity (\s a -> s { _casgDesiredCapacity = a })
+-- | One or more termination policies used to select the instance to
+-- terminate. These policies are executed in the order that they are
+-- listed.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/us-termination-policy.html Choosing a Termination Policy for Your Auto Scaling Group>
+-- in the /Auto Scaling Developer Guide/.
+casgTerminationPolicies :: Lens' CreateAutoScalingGroup [Text]
+casgTerminationPolicies = lens _casgTerminationPolicies (\ s a -> s{_casgTerminationPolicies = a}) . _Default . _Coerce;
 
--- | The amount of time, in seconds, after an EC2 instance comes into service that
--- Auto Scaling starts checking its health. During this time, any health check
--- failures for the instance are ignored.
+-- | The amount of time, in seconds, after an EC2 instance comes into service
+-- that Auto Scaling starts checking its health. During this time, any
+-- health check failures for the instance are ignored.
 --
 -- This parameter is required if you are adding an 'ELB' health check.
--- Frequently, new instances need to warm up, briefly, before they can pass a
--- health check. To provide ample warm-up time, set the health check grace
--- period of the group to match the expected startup period of your application.
+-- Frequently, new instances need to warm up, briefly, before they can pass
+-- a health check. To provide ample warm-up time, set the health check
+-- grace period of the group to match the expected startup period of your
+-- application.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-add-elb-healthcheck.html Add an Elastic Load Balancing Health Check to YourAuto Scaling Group> in the /Auto Scaling Developer Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-add-elb-healthcheck.html Add an Elastic Load Balancing Health Check to Your Auto Scaling Group>
+-- in the /Auto Scaling Developer Guide/.
 casgHealthCheckGracePeriod :: Lens' CreateAutoScalingGroup (Maybe Int)
-casgHealthCheckGracePeriod =
-    lens _casgHealthCheckGracePeriod
-        (\s a -> s { _casgHealthCheckGracePeriod = a })
+casgHealthCheckGracePeriod = lens _casgHealthCheckGracePeriod (\ s a -> s{_casgHealthCheckGracePeriod = a});
 
--- | The service to use for the health checks. The valid values are 'EC2' and 'ELB'.
+-- | A comma-separated list of subnet identifiers for your virtual private
+-- cloud (VPC).
 --
--- By default, health checks use Amazon EC2 instance status checks to determine
--- the health of an instance. For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/healthcheck.html Health Checks>.
-casgHealthCheckType :: Lens' CreateAutoScalingGroup (Maybe Text)
-casgHealthCheckType =
-    lens _casgHealthCheckType (\s a -> s { _casgHealthCheckType = a })
+-- If you specify subnets and Availability Zones with this call, ensure
+-- that the subnets\' Availability Zones match the Availability Zones
+-- specified.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/autoscalingsubnets.html Auto Scaling and Amazon Virtual Private Cloud>
+-- in the /Auto Scaling Developer Guide/.
+casgVPCZoneIdentifier :: Lens' CreateAutoScalingGroup (Maybe Text)
+casgVPCZoneIdentifier = lens _casgVPCZoneIdentifier (\ s a -> s{_casgVPCZoneIdentifier = a});
 
--- | The ID of the EC2 instance used to create a launch configuration for the
--- group. Alternatively, use the 'LaunchConfigurationName' parameter to specify a
--- launch configuration instead of an EC2 instance.
+-- | The amount of time, in seconds, after a scaling activity completes
+-- before another scaling activity can start.
 --
--- When you specify an ID of an instance, Auto Scaling creates a new launch
--- configuration and associates it with the group. This launch configuration
--- derives its attributes from the specified instance, with the exception of the
--- block device mapping.
+-- If this parameter is not specified, the default value is 300. For more
+-- information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/Cooldown.html Understanding Auto Scaling Cooldowns>
+-- in the /Auto Scaling Developer Guide/.
+casgDefaultCooldown :: Lens' CreateAutoScalingGroup (Maybe Int)
+casgDefaultCooldown = lens _casgDefaultCooldown (\ s a -> s{_casgDefaultCooldown = a});
+
+-- | The number of EC2 instances that should be running in the group. This
+-- number must be greater than or equal to the minimum size of the group
+-- and less than or equal to the maximum size of the group.
+casgDesiredCapacity :: Lens' CreateAutoScalingGroup (Maybe Int)
+casgDesiredCapacity = lens _casgDesiredCapacity (\ s a -> s{_casgDesiredCapacity = a});
+
+-- | One or more Availability Zones for the group. This parameter is optional
+-- if you specify subnets using the 'VPCZoneIdentifier' parameter.
+casgAvailabilityZones :: Lens' CreateAutoScalingGroup (Maybe (NonEmpty Text))
+casgAvailabilityZones = lens _casgAvailabilityZones (\ s a -> s{_casgAvailabilityZones = a}) . mapping _List1;
+
+-- | The service to use for the health checks. The valid values are 'EC2' and
+-- 'ELB'.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/create-asg-from-instance.html Create an Auto Scaling Group Using an EC2 InstanceID> in the /Auto Scaling Developer Guide/.
-casgInstanceId :: Lens' CreateAutoScalingGroup (Maybe Text)
-casgInstanceId = lens _casgInstanceId (\s a -> s { _casgInstanceId = a })
+-- By default, health checks use Amazon EC2 instance status checks to
+-- determine the health of an instance. For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/healthcheck.html Health Checks>.
+casgHealthCheckType :: Lens' CreateAutoScalingGroup (Maybe Text)
+casgHealthCheckType = lens _casgHealthCheckType (\ s a -> s{_casgHealthCheckType = a});
 
--- | The name of the launch configuration. Alternatively, use the 'InstanceId'
--- parameter to specify an EC2 instance instead of a launch configuration.
+-- | The name of the launch configuration. Alternatively, use the
+-- 'InstanceId' parameter to specify an EC2 instance instead of a launch
+-- configuration.
 casgLaunchConfigurationName :: Lens' CreateAutoScalingGroup (Maybe Text)
-casgLaunchConfigurationName =
-    lens _casgLaunchConfigurationName
-        (\s a -> s { _casgLaunchConfigurationName = a })
+casgLaunchConfigurationName = lens _casgLaunchConfigurationName (\ s a -> s{_casgLaunchConfigurationName = a});
 
+-- | The name of the placement group into which you\'ll launch your
+-- instances, if any. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html Placement Groups>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+casgPlacementGroup :: Lens' CreateAutoScalingGroup (Maybe Text)
+casgPlacementGroup = lens _casgPlacementGroup (\ s a -> s{_casgPlacementGroup = a});
+
 -- | One or more load balancers.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/US_SetUpASLBApp.html Load Balance Your Auto Scaling Group> in the /AutoScaling Developer Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/US_SetUpASLBApp.html Load Balance Your Auto Scaling Group>
+-- in the /Auto Scaling Developer Guide/.
 casgLoadBalancerNames :: Lens' CreateAutoScalingGroup [Text]
-casgLoadBalancerNames =
-    lens _casgLoadBalancerNames (\s a -> s { _casgLoadBalancerNames = a })
-        . _List
-
--- | The maximum size of the group.
-casgMaxSize :: Lens' CreateAutoScalingGroup Int
-casgMaxSize = lens _casgMaxSize (\s a -> s { _casgMaxSize = a })
-
--- | The minimum size of the group.
-casgMinSize :: Lens' CreateAutoScalingGroup Int
-casgMinSize = lens _casgMinSize (\s a -> s { _casgMinSize = a })
-
--- | The name of the placement group into which you'll launch your instances, if
--- any. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html Placement Groups>.
-casgPlacementGroup :: Lens' CreateAutoScalingGroup (Maybe Text)
-casgPlacementGroup =
-    lens _casgPlacementGroup (\s a -> s { _casgPlacementGroup = a })
+casgLoadBalancerNames = lens _casgLoadBalancerNames (\ s a -> s{_casgLoadBalancerNames = a}) . _Default . _Coerce;
 
--- | The tag to be created or updated. Each tag should be defined by its resource
--- type, resource ID, key, value, and a propagate flag. Valid values: key=/value/,
--- value=/value/, propagate=/true/ or /false/. Value and propagate are optional
--- parameters.
+-- | The tag to be created or updated. Each tag should be defined by its
+-- resource type, resource ID, key, value, and a propagate flag. Valid
+-- values: key=/value/, value=/value/, propagate=/true/ or /false/. Value
+-- and propagate are optional parameters.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/ASTagging.html Add, Modify, or Remove Auto Scaling Group Tags> in
--- the /Auto Scaling Developer Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/ASTagging.html Tagging Auto Scaling Groups and Instances>
+-- in the /Auto Scaling Developer Guide/.
 casgTags :: Lens' CreateAutoScalingGroup [Tag]
-casgTags = lens _casgTags (\s a -> s { _casgTags = a }) . _List
+casgTags = lens _casgTags (\ s a -> s{_casgTags = a}) . _Default . _Coerce;
 
--- | One or more termination policies used to select the instance to terminate.
--- These policies are executed in the order that they are listed.
---
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/us-termination-policy.html Choosing a Termination Policy for Your AutoScaling Group> in the /Auto Scaling Developer Guide/.
-casgTerminationPolicies :: Lens' CreateAutoScalingGroup [Text]
-casgTerminationPolicies =
-    lens _casgTerminationPolicies (\s a -> s { _casgTerminationPolicies = a })
-        . _List
+-- | The name of the group. This name must be unique within the scope of your
+-- AWS account.
+casgAutoScalingGroupName :: Lens' CreateAutoScalingGroup Text
+casgAutoScalingGroupName = lens _casgAutoScalingGroupName (\ s a -> s{_casgAutoScalingGroupName = a});
 
--- | A comma-separated list of subnet identifiers for your virtual private cloud
--- (VPC).
---
--- If you specify subnets and Availability Zones with this call, ensure that
--- the subnets' Availability Zones match the Availability Zones specified.
---
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/autoscalingsubnets.html Auto Scaling and Amazon VPC> in the /Auto ScalingDeveloper Guide/.
-casgVPCZoneIdentifier :: Lens' CreateAutoScalingGroup (Maybe Text)
-casgVPCZoneIdentifier =
-    lens _casgVPCZoneIdentifier (\s a -> s { _casgVPCZoneIdentifier = a })
+-- | The minimum size of the group.
+casgMinSize :: Lens' CreateAutoScalingGroup Int
+casgMinSize = lens _casgMinSize (\ s a -> s{_casgMinSize = a});
 
-data CreateAutoScalingGroupResponse = CreateAutoScalingGroupResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The maximum size of the group.
+casgMaxSize :: Lens' CreateAutoScalingGroup Int
+casgMaxSize = lens _casgMaxSize (\ s a -> s{_casgMaxSize = a});
 
--- | 'CreateAutoScalingGroupResponse' constructor.
-createAutoScalingGroupResponse :: CreateAutoScalingGroupResponse
-createAutoScalingGroupResponse = CreateAutoScalingGroupResponse
+instance AWSRequest CreateAutoScalingGroup where
+        type Sv CreateAutoScalingGroup = AutoScaling
+        type Rs CreateAutoScalingGroup =
+             CreateAutoScalingGroupResponse
+        request = postQuery
+        response
+          = receiveNull CreateAutoScalingGroupResponse'
 
+instance ToHeaders CreateAutoScalingGroup where
+        toHeaders = const mempty
+
 instance ToPath CreateAutoScalingGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateAutoScalingGroup where
-    toQuery CreateAutoScalingGroup{..} = mconcat
-        [ "AutoScalingGroupName"    =? _casgAutoScalingGroupName
-        , "AvailabilityZones"       =? _casgAvailabilityZones
-        , "DefaultCooldown"         =? _casgDefaultCooldown
-        , "DesiredCapacity"         =? _casgDesiredCapacity
-        , "HealthCheckGracePeriod"  =? _casgHealthCheckGracePeriod
-        , "HealthCheckType"         =? _casgHealthCheckType
-        , "InstanceId"              =? _casgInstanceId
-        , "LaunchConfigurationName" =? _casgLaunchConfigurationName
-        , "LoadBalancerNames"       =? _casgLoadBalancerNames
-        , "MaxSize"                 =? _casgMaxSize
-        , "MinSize"                 =? _casgMinSize
-        , "PlacementGroup"          =? _casgPlacementGroup
-        , "Tags"                    =? _casgTags
-        , "TerminationPolicies"     =? _casgTerminationPolicies
-        , "VPCZoneIdentifier"       =? _casgVPCZoneIdentifier
-        ]
-
-instance ToHeaders CreateAutoScalingGroup
+        toQuery CreateAutoScalingGroup'{..}
+          = mconcat
+              ["Action" =:
+                 ("CreateAutoScalingGroup" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "InstanceId" =: _casgInstanceId,
+               "TerminationPolicies" =:
+                 toQuery
+                   (toQueryList "member" <$> _casgTerminationPolicies),
+               "HealthCheckGracePeriod" =:
+                 _casgHealthCheckGracePeriod,
+               "VPCZoneIdentifier" =: _casgVPCZoneIdentifier,
+               "DefaultCooldown" =: _casgDefaultCooldown,
+               "DesiredCapacity" =: _casgDesiredCapacity,
+               "AvailabilityZones" =:
+                 toQuery
+                   (toQueryList "member" <$> _casgAvailabilityZones),
+               "HealthCheckType" =: _casgHealthCheckType,
+               "LaunchConfigurationName" =:
+                 _casgLaunchConfigurationName,
+               "PlacementGroup" =: _casgPlacementGroup,
+               "LoadBalancerNames" =:
+                 toQuery
+                   (toQueryList "member" <$> _casgLoadBalancerNames),
+               "Tags" =:
+                 toQuery (toQueryList "member" <$> _casgTags),
+               "AutoScalingGroupName" =: _casgAutoScalingGroupName,
+               "MinSize" =: _casgMinSize, "MaxSize" =: _casgMaxSize]
 
-instance AWSRequest CreateAutoScalingGroup where
-    type Sv CreateAutoScalingGroup = AutoScaling
-    type Rs CreateAutoScalingGroup = CreateAutoScalingGroupResponse
+-- | /See:/ 'createAutoScalingGroupResponse' smart constructor.
+data CreateAutoScalingGroupResponse =
+    CreateAutoScalingGroupResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "CreateAutoScalingGroup"
-    response = nullResponse CreateAutoScalingGroupResponse
+-- | Creates a value of 'CreateAutoScalingGroupResponse' with the minimum fields required to make a request.
+--
+createAutoScalingGroupResponse
+    :: CreateAutoScalingGroupResponse
+createAutoScalingGroupResponse = CreateAutoScalingGroupResponse'
diff --git a/gen/Network/AWS/AutoScaling/CreateLaunchConfiguration.hs b/gen/Network/AWS/AutoScaling/CreateLaunchConfiguration.hs
--- a/gen/Network/AWS/AutoScaling/CreateLaunchConfiguration.hs
+++ b/gen/Network/AWS/AutoScaling/CreateLaunchConfiguration.hs
@@ -1,345 +1,386 @@
-{-# 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.AutoScaling.CreateLaunchConfiguration
--- 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 launch configuration.
+-- Creates a launch configuration.
 --
--- If you exceed your maximum limit of launch configurations, which by default
--- is 100 per region, the call fails. For information about viewing and updating
--- these limits, see 'DescribeAccountLimits'.
+-- If you exceed your maximum limit of launch configurations, which by
+-- default is 100 per region, the call fails. For information about viewing
+-- and updating this limit, see DescribeAccountLimits.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateLaunchConfiguration.html>
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/LaunchConfiguration.html Launch Configurations>
+-- in the /Auto Scaling Developer Guide/.
+--
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateLaunchConfiguration.html AWS API Reference> for CreateLaunchConfiguration.
 module Network.AWS.AutoScaling.CreateLaunchConfiguration
     (
-    -- * Request
-      CreateLaunchConfiguration
-    -- ** Request constructor
-    , createLaunchConfiguration
-    -- ** Request lenses
-    , clcAssociatePublicIpAddress
-    , clcBlockDeviceMappings
-    , clcClassicLinkVPCId
-    , clcClassicLinkVPCSecurityGroups
-    , clcEbsOptimized
-    , clcIamInstanceProfile
-    , clcImageId
+    -- * Creating a Request
+      createLaunchConfiguration
+    , CreateLaunchConfiguration
+    -- * Request Lenses
     , clcInstanceId
-    , clcInstanceMonitoring
-    , clcInstanceType
-    , clcKernelId
-    , clcKeyName
-    , clcLaunchConfigurationName
-    , clcPlacementTenancy
-    , clcRamdiskId
     , clcSecurityGroups
+    , clcAssociatePublicIPAddress
+    , clcInstanceMonitoring
     , clcSpotPrice
+    , clcKeyName
+    , clcClassicLinkVPCSecurityGroups
+    , clcRAMDiskId
+    , clcKernelId
+    , clcInstanceType
+    , clcEBSOptimized
     , clcUserData
+    , clcClassicLinkVPCId
+    , clcIAMInstanceProfile
+    , clcImageId
+    , clcPlacementTenancy
+    , clcBlockDeviceMappings
+    , clcLaunchConfigurationName
 
-    -- * Response
-    , CreateLaunchConfigurationResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createLaunchConfigurationResponse
+    , CreateLaunchConfigurationResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CreateLaunchConfiguration = CreateLaunchConfiguration
-    { _clcAssociatePublicIpAddress     :: Maybe Bool
-    , _clcBlockDeviceMappings          :: List "member" BlockDeviceMapping
-    , _clcClassicLinkVPCId             :: Maybe Text
-    , _clcClassicLinkVPCSecurityGroups :: List "member" Text
-    , _clcEbsOptimized                 :: Maybe Bool
-    , _clcIamInstanceProfile           :: Maybe Text
-    , _clcImageId                      :: Maybe Text
-    , _clcInstanceId                   :: Maybe Text
-    , _clcInstanceMonitoring           :: Maybe InstanceMonitoring
-    , _clcInstanceType                 :: Maybe Text
-    , _clcKernelId                     :: Maybe Text
-    , _clcKeyName                      :: Maybe Text
-    , _clcLaunchConfigurationName      :: Text
-    , _clcPlacementTenancy             :: Maybe Text
-    , _clcRamdiskId                    :: Maybe Text
-    , _clcSecurityGroups               :: List "member" Text
-    , _clcSpotPrice                    :: Maybe Text
-    , _clcUserData                     :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'createLaunchConfiguration' smart constructor.
+data CreateLaunchConfiguration = CreateLaunchConfiguration'
+    { _clcInstanceId                   :: !(Maybe Text)
+    , _clcSecurityGroups               :: !(Maybe [Text])
+    , _clcAssociatePublicIPAddress     :: !(Maybe Bool)
+    , _clcInstanceMonitoring           :: !(Maybe InstanceMonitoring)
+    , _clcSpotPrice                    :: !(Maybe Text)
+    , _clcKeyName                      :: !(Maybe Text)
+    , _clcClassicLinkVPCSecurityGroups :: !(Maybe [Text])
+    , _clcRAMDiskId                    :: !(Maybe Text)
+    , _clcKernelId                     :: !(Maybe Text)
+    , _clcInstanceType                 :: !(Maybe Text)
+    , _clcEBSOptimized                 :: !(Maybe Bool)
+    , _clcUserData                     :: !(Maybe Text)
+    , _clcClassicLinkVPCId             :: !(Maybe Text)
+    , _clcIAMInstanceProfile           :: !(Maybe Text)
+    , _clcImageId                      :: !(Maybe Text)
+    , _clcPlacementTenancy             :: !(Maybe Text)
+    , _clcBlockDeviceMappings          :: !(Maybe [BlockDeviceMapping])
+    , _clcLaunchConfigurationName      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateLaunchConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CreateLaunchConfiguration' with the minimum fields required to make a request.
 --
--- * 'clcAssociatePublicIpAddress' @::@ 'Maybe' 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'clcBlockDeviceMappings' @::@ ['BlockDeviceMapping']
+-- * 'clcInstanceId'
 --
--- * 'clcClassicLinkVPCId' @::@ 'Maybe' 'Text'
+-- * 'clcSecurityGroups'
 --
--- * 'clcClassicLinkVPCSecurityGroups' @::@ ['Text']
+-- * 'clcAssociatePublicIPAddress'
 --
--- * 'clcEbsOptimized' @::@ 'Maybe' 'Bool'
+-- * 'clcInstanceMonitoring'
 --
--- * 'clcIamInstanceProfile' @::@ 'Maybe' 'Text'
+-- * 'clcSpotPrice'
 --
--- * 'clcImageId' @::@ 'Maybe' 'Text'
+-- * 'clcKeyName'
 --
--- * 'clcInstanceId' @::@ 'Maybe' 'Text'
+-- * 'clcClassicLinkVPCSecurityGroups'
 --
--- * 'clcInstanceMonitoring' @::@ 'Maybe' 'InstanceMonitoring'
+-- * 'clcRAMDiskId'
 --
--- * 'clcInstanceType' @::@ 'Maybe' 'Text'
+-- * 'clcKernelId'
 --
--- * 'clcKernelId' @::@ 'Maybe' 'Text'
+-- * 'clcInstanceType'
 --
--- * 'clcKeyName' @::@ 'Maybe' 'Text'
+-- * 'clcEBSOptimized'
 --
--- * 'clcLaunchConfigurationName' @::@ 'Text'
+-- * 'clcUserData'
 --
--- * 'clcPlacementTenancy' @::@ 'Maybe' 'Text'
+-- * 'clcClassicLinkVPCId'
 --
--- * 'clcRamdiskId' @::@ 'Maybe' 'Text'
+-- * 'clcIAMInstanceProfile'
 --
--- * 'clcSecurityGroups' @::@ ['Text']
+-- * 'clcImageId'
 --
--- * 'clcSpotPrice' @::@ 'Maybe' 'Text'
+-- * 'clcPlacementTenancy'
 --
--- * 'clcUserData' @::@ 'Maybe' 'Text'
+-- * 'clcBlockDeviceMappings'
 --
-createLaunchConfiguration :: Text -- ^ 'clcLaunchConfigurationName'
-                          -> CreateLaunchConfiguration
-createLaunchConfiguration p1 = CreateLaunchConfiguration
-    { _clcLaunchConfigurationName      = p1
-    , _clcImageId                      = Nothing
-    , _clcKeyName                      = Nothing
-    , _clcSecurityGroups               = mempty
-    , _clcClassicLinkVPCId             = Nothing
-    , _clcClassicLinkVPCSecurityGroups = mempty
-    , _clcUserData                     = Nothing
-    , _clcInstanceId                   = Nothing
-    , _clcInstanceType                 = Nothing
-    , _clcKernelId                     = Nothing
-    , _clcRamdiskId                    = Nothing
-    , _clcBlockDeviceMappings          = mempty
-    , _clcInstanceMonitoring           = Nothing
-    , _clcSpotPrice                    = Nothing
-    , _clcIamInstanceProfile           = Nothing
-    , _clcEbsOptimized                 = Nothing
-    , _clcAssociatePublicIpAddress     = Nothing
-    , _clcPlacementTenancy             = Nothing
+-- * 'clcLaunchConfigurationName'
+createLaunchConfiguration
+    :: Text -- ^ 'clcLaunchConfigurationName'
+    -> CreateLaunchConfiguration
+createLaunchConfiguration pLaunchConfigurationName_ =
+    CreateLaunchConfiguration'
+    { _clcInstanceId = Nothing
+    , _clcSecurityGroups = Nothing
+    , _clcAssociatePublicIPAddress = Nothing
+    , _clcInstanceMonitoring = Nothing
+    , _clcSpotPrice = Nothing
+    , _clcKeyName = Nothing
+    , _clcClassicLinkVPCSecurityGroups = Nothing
+    , _clcRAMDiskId = Nothing
+    , _clcKernelId = Nothing
+    , _clcInstanceType = Nothing
+    , _clcEBSOptimized = Nothing
+    , _clcUserData = Nothing
+    , _clcClassicLinkVPCId = Nothing
+    , _clcIAMInstanceProfile = Nothing
+    , _clcImageId = Nothing
+    , _clcPlacementTenancy = Nothing
+    , _clcBlockDeviceMappings = Nothing
+    , _clcLaunchConfigurationName = pLaunchConfigurationName_
     }
 
--- | Used for groups that launch instances into a virtual private cloud (VPC).
--- Specifies whether to assign a public IP address to each instance. For more
--- information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/autoscalingsubnets.html Auto Scaling and Amazon VPC> in the /Auto Scaling DeveloperGuide/.
+-- | The ID of the EC2 instance to use to create the launch configuration.
 --
--- If you specify a value for this parameter, be sure to specify at least one
--- subnet using the /VPCZoneIdentifier/ parameter when you create your group.
+-- The new launch configuration derives attributes from the instance, with
+-- the exception of the block device mapping.
 --
--- Default: If the instance is launched into a default subnet, the default is 'true'. If the instance is launched into a nondefault subnet, the default is 'false'.
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide//as-supported-platforms.html Supported Platforms> in the /Amazon Elastic ComputeCloud User Guide/.
-clcAssociatePublicIpAddress :: Lens' CreateLaunchConfiguration (Maybe Bool)
-clcAssociatePublicIpAddress =
-    lens _clcAssociatePublicIpAddress
-        (\s a -> s { _clcAssociatePublicIpAddress = a })
-
--- | One or more mappings that specify how block devices are exposed to the
--- instance. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html Block Device Mapping> in the /AmazonElastic Compute Cloud User Guide/.
-clcBlockDeviceMappings :: Lens' CreateLaunchConfiguration [BlockDeviceMapping]
-clcBlockDeviceMappings =
-    lens _clcBlockDeviceMappings (\s a -> s { _clcBlockDeviceMappings = a })
-        . _List
-
--- | The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to.
--- This parameter can only be used if you are launching EC2-Classic instances.
--- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink> in the /Amazon Elastic Compute CloudUser Guide/.
-clcClassicLinkVPCId :: Lens' CreateLaunchConfiguration (Maybe Text)
-clcClassicLinkVPCId =
-    lens _clcClassicLinkVPCId (\s a -> s { _clcClassicLinkVPCId = a })
-
--- | The IDs of one or more security groups for the VPC specified in 'ClassicLinkVPCId'. This parameter is required if 'ClassicLinkVPCId' is specified, and cannot be
--- used otherwise. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink> in the /Amazon ElasticCompute Cloud User Guide/.
-clcClassicLinkVPCSecurityGroups :: Lens' CreateLaunchConfiguration [Text]
-clcClassicLinkVPCSecurityGroups =
-    lens _clcClassicLinkVPCSecurityGroups
-        (\s a -> s { _clcClassicLinkVPCSecurityGroups = a })
-            . _List
-
--- | Indicates whether the instance is optimized for Amazon EBS I/O. By default,
--- the instance is not optimized for EBS I/O. The optimization provides
--- dedicated throughput to Amazon EBS and an optimized configuration stack to
--- provide optimal I/O performance. This optimization is not available with all
--- instance types. Additional usage charges apply. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html Amazon EBS-Optimized Instances> in the /Amazon Elastic Compute Cloud User Guide/.
-clcEbsOptimized :: Lens' CreateLaunchConfiguration (Maybe Bool)
-clcEbsOptimized = lens _clcEbsOptimized (\s a -> s { _clcEbsOptimized = a })
-
--- | The name or the Amazon Resource Name (ARN) of the instance profile associated
--- with the IAM role for the instance.
+-- To create a launch configuration with a block device mapping or override
+-- any other instance attributes, specify them as part of the same request.
 --
--- Amazon EC2 instances launched with an IAM role will automatically have AWS
--- security credentials available. You can use IAM roles with Auto Scaling to
--- automatically enable applications running on your Amazon EC2 instances to
--- securely access other AWS resources. For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/us-iam-role.html Launch AutoScaling Instances with an IAM Role> in the /Auto Scaling Developer Guide/.
-clcIamInstanceProfile :: Lens' CreateLaunchConfiguration (Maybe Text)
-clcIamInstanceProfile =
-    lens _clcIamInstanceProfile (\s a -> s { _clcIamInstanceProfile = a })
-
--- | The ID of the Amazon Machine Image (AMI) to use to launch your EC2 instances.
--- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html Finding an AMI> in the /Amazon Elastic Compute CloudUser Guide/.
-clcImageId :: Lens' CreateLaunchConfiguration (Maybe Text)
-clcImageId = lens _clcImageId (\s a -> s { _clcImageId = a })
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/create-lc-with-instanceID.html Create a Launch Configuration Using an EC2 Instance>
+-- in the /Auto Scaling Developer Guide/.
+clcInstanceId :: Lens' CreateLaunchConfiguration (Maybe Text)
+clcInstanceId = lens _clcInstanceId (\ s a -> s{_clcInstanceId = a});
 
--- | The ID of the EC2 instance to use to create the launch configuration.
---
--- The new launch configuration derives attributes from the instance, with the
--- exception of the block device mapping.
+-- | One or more security groups with which to associate the instances.
 --
--- To create a launch configuration with a block device mapping or override any
--- other instance attributes, specify them as part of the same request.
+-- If your instances are launched in EC2-Classic, you can either specify
+-- security group names or the security group IDs. For more information
+-- about security groups for EC2-Classic, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html Amazon EC2 Security Groups>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/create-lc-with-instanceID.html Create a Launch Configuration Using an EC2 Instance>
+-- If your instances are launched into a VPC, specify security group IDs.
+-- For more information, see
+-- <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html Security Groups for Your VPC>
+-- in the /Amazon Virtual Private Cloud User Guide/.
+clcSecurityGroups :: Lens' CreateLaunchConfiguration [Text]
+clcSecurityGroups = lens _clcSecurityGroups (\ s a -> s{_clcSecurityGroups = a}) . _Default . _Coerce;
+
+-- | Used for groups that launch instances into a virtual private cloud
+-- (VPC). Specifies whether to assign a public IP address to each instance.
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/autoscalingsubnets.html Auto Scaling and Amazon Virtual Private Cloud>
 -- in the /Auto Scaling Developer Guide/.
-clcInstanceId :: Lens' CreateLaunchConfiguration (Maybe Text)
-clcInstanceId = lens _clcInstanceId (\s a -> s { _clcInstanceId = a })
+--
+-- If you specify a value for this parameter, be sure to specify at least
+-- one subnet using the /VPCZoneIdentifier/ parameter when you create your
+-- group.
+--
+-- Default: If the instance is launched into a default subnet, the default
+-- is 'true'. If the instance is launched into a nondefault subnet, the
+-- default is 'false'. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html Supported Platforms>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+clcAssociatePublicIPAddress :: Lens' CreateLaunchConfiguration (Maybe Bool)
+clcAssociatePublicIPAddress = lens _clcAssociatePublicIPAddress (\ s a -> s{_clcAssociatePublicIPAddress = a});
 
--- | Enables detailed monitoring if it is disabled. Detailed monitoring is enabled
--- by default.
+-- | Enables detailed monitoring if it is disabled. Detailed monitoring is
+-- enabled by default.
 --
--- When detailed monitoring is enabled, Amazon Cloudwatch generates metrics
--- every minute and your account is charged a fee. When you disable detailed
--- monitoring, by specifying 'False', Cloudwatch generates metrics every 5
--- minutes. For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-instance-monitoring.html Monitor Your Auto Scaling Instances> in the /Auto Scaling Developer Guide/.
+-- When detailed monitoring is enabled, Amazon CloudWatch generates metrics
+-- every minute and your account is charged a fee. When you disable
+-- detailed monitoring, by specifying 'False', CloudWatch generates metrics
+-- every 5 minutes. For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-instance-monitoring.html Monitor Your Auto Scaling Instances>
+-- in the /Auto Scaling Developer Guide/.
 clcInstanceMonitoring :: Lens' CreateLaunchConfiguration (Maybe InstanceMonitoring)
-clcInstanceMonitoring =
-    lens _clcInstanceMonitoring (\s a -> s { _clcInstanceMonitoring = a })
+clcInstanceMonitoring = lens _clcInstanceMonitoring (\ s a -> s{_clcInstanceMonitoring = a});
 
--- | The instance type of the Amazon EC2 instance. For information about
--- available Amazon EC2 instance types, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes  Available Instance Types> in the /Amazon Elastic Cloud Compute User Guide./
-clcInstanceType :: Lens' CreateLaunchConfiguration (Maybe Text)
-clcInstanceType = lens _clcInstanceType (\s a -> s { _clcInstanceType = a })
+-- | The maximum hourly price to be paid for any Spot Instance launched to
+-- fulfill the request. Spot Instances are launched when the price you
+-- specify exceeds the current Spot market price. For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/US-SpotInstances.html Launch Spot Instances in Your Auto Scaling Group>
+-- in the /Auto Scaling Developer Guide/.
+clcSpotPrice :: Lens' CreateLaunchConfiguration (Maybe Text)
+clcSpotPrice = lens _clcSpotPrice (\ s a -> s{_clcSpotPrice = a});
 
--- | The ID of the kernel associated with the Amazon EC2 AMI.
+-- | The name of the key pair. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html Amazon EC2 Key Pairs>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+clcKeyName :: Lens' CreateLaunchConfiguration (Maybe Text)
+clcKeyName = lens _clcKeyName (\ s a -> s{_clcKeyName = a});
+
+-- | The IDs of one or more security groups for the VPC specified in
+-- 'ClassicLinkVPCId'. This parameter is required if 'ClassicLinkVPCId' is
+-- specified, and is not supported otherwise. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+clcClassicLinkVPCSecurityGroups :: Lens' CreateLaunchConfiguration [Text]
+clcClassicLinkVPCSecurityGroups = lens _clcClassicLinkVPCSecurityGroups (\ s a -> s{_clcClassicLinkVPCSecurityGroups = a}) . _Default . _Coerce;
+
+-- | The ID of the RAM disk associated with the AMI.
+clcRAMDiskId :: Lens' CreateLaunchConfiguration (Maybe Text)
+clcRAMDiskId = lens _clcRAMDiskId (\ s a -> s{_clcRAMDiskId = a});
+
+-- | The ID of the kernel associated with the AMI.
 clcKernelId :: Lens' CreateLaunchConfiguration (Maybe Text)
-clcKernelId = lens _clcKernelId (\s a -> s { _clcKernelId = a })
+clcKernelId = lens _clcKernelId (\ s a -> s{_clcKernelId = a});
 
--- | The name of the key pair. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html Amazon EC2 Key Pairs> in
--- the /Amazon Elastic Compute Cloud User Guide/.
-clcKeyName :: Lens' CreateLaunchConfiguration (Maybe Text)
-clcKeyName = lens _clcKeyName (\s a -> s { _clcKeyName = a })
+-- | The instance type of the EC2 instance. For information about available
+-- instance types, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes Available Instance Types>
+-- in the /Amazon Elastic Cloud Compute User Guide./
+clcInstanceType :: Lens' CreateLaunchConfiguration (Maybe Text)
+clcInstanceType = lens _clcInstanceType (\ s a -> s{_clcInstanceType = a});
 
--- | The name of the launch configuration. This name must be unique within the
--- scope of your AWS account.
-clcLaunchConfigurationName :: Lens' CreateLaunchConfiguration Text
-clcLaunchConfigurationName =
-    lens _clcLaunchConfigurationName
-        (\s a -> s { _clcLaunchConfigurationName = a })
+-- | Indicates whether the instance is optimized for Amazon EBS I\/O. By
+-- default, the instance is not optimized for EBS I\/O. The optimization
+-- provides dedicated throughput to Amazon EBS and an optimized
+-- configuration stack to provide optimal I\/O performance. This
+-- optimization is not available with all instance types. Additional usage
+-- charges apply. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html Amazon EBS-Optimized Instances>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+clcEBSOptimized :: Lens' CreateLaunchConfiguration (Maybe Bool)
+clcEBSOptimized = lens _clcEBSOptimized (\ s a -> s{_clcEBSOptimized = a});
 
--- | The tenancy of the instance. An instance with a tenancy of 'dedicated' runs on
--- single-tenant hardware and can only be launched in a VPC.
---
--- You must set the value of this parameter to 'dedicated' if want to launch
--- Dedicated Instances in a shared tenancy VPC (VPC with instance placement
--- tenancy attribute set to 'default').
---
--- If you specify a value for this parameter, be sure to specify at least one
--- VPC subnet using the /VPCZoneIdentifier/ parameter when you create your group.
+-- | The user data to make available to the launched EC2 instances. For more
+-- information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html Instance Metadata and User Data>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/autoscalingsubnets.html Auto Scaling and Amazon VPC> in the /Auto ScalingDeveloper Guide/.
+-- At this time, launch configurations don\'t support compressed (zipped)
+-- user data files.
+clcUserData :: Lens' CreateLaunchConfiguration (Maybe Text)
+clcUserData = lens _clcUserData (\ s a -> s{_clcUserData = a});
+
+-- | The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances
+-- to. This parameter is supported only if you are launching EC2-Classic
+-- instances. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+clcClassicLinkVPCId :: Lens' CreateLaunchConfiguration (Maybe Text)
+clcClassicLinkVPCId = lens _clcClassicLinkVPCId (\ s a -> s{_clcClassicLinkVPCId = a});
+
+-- | The name or the Amazon Resource Name (ARN) of the instance profile
+-- associated with the IAM role for the instance.
 --
--- Valid values: 'default' | 'dedicated'
-clcPlacementTenancy :: Lens' CreateLaunchConfiguration (Maybe Text)
-clcPlacementTenancy =
-    lens _clcPlacementTenancy (\s a -> s { _clcPlacementTenancy = a })
+-- EC2 instances launched with an IAM role will automatically have AWS
+-- security credentials available. You can use IAM roles with Auto Scaling
+-- to automatically enable applications running on your EC2 instances to
+-- securely access other AWS resources. For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/us-iam-role.html Launch Auto Scaling Instances with an IAM Role>
+-- in the /Auto Scaling Developer Guide/.
+clcIAMInstanceProfile :: Lens' CreateLaunchConfiguration (Maybe Text)
+clcIAMInstanceProfile = lens _clcIAMInstanceProfile (\ s a -> s{_clcIAMInstanceProfile = a});
 
--- | The ID of the RAM disk associated with the Amazon EC2 AMI.
-clcRamdiskId :: Lens' CreateLaunchConfiguration (Maybe Text)
-clcRamdiskId = lens _clcRamdiskId (\s a -> s { _clcRamdiskId = a })
+-- | The ID of the Amazon Machine Image (AMI) to use to launch your EC2
+-- instances. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html Finding an AMI>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+clcImageId :: Lens' CreateLaunchConfiguration (Maybe Text)
+clcImageId = lens _clcImageId (\ s a -> s{_clcImageId = a});
 
--- | One or more security groups with which to associate the instances.
+-- | The tenancy of the instance. An instance with a tenancy of 'dedicated'
+-- runs on single-tenant hardware and can only be launched into a VPC.
 --
--- If your instances are launched in EC2-Classic, you can either specify
--- security group names or the security group IDs. For more information about
--- security groups for EC2-Classic, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html Amazon EC2 Security Groups> in the /AmazonElastic Compute Cloud User Guide/.
+-- You must set the value of this parameter to 'dedicated' if want to
+-- launch Dedicated Instances into a shared tenancy VPC (VPC with instance
+-- placement tenancy attribute set to 'default').
 --
--- If your instances are launched in a VPC, specify security group IDs. For
--- more information, see <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html Security Groups for Your VPC> in the /Amazon VirtualPrivate Cloud User Guide/.
-clcSecurityGroups :: Lens' CreateLaunchConfiguration [Text]
-clcSecurityGroups =
-    lens _clcSecurityGroups (\s a -> s { _clcSecurityGroups = a })
-        . _List
+-- If you specify a value for this parameter, be sure to specify at least
+-- one subnet using the /VPCZoneIdentifier/ parameter when you create your
+-- group.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/autoscalingsubnets.html Auto Scaling and Amazon Virtual Private Cloud>
+-- in the /Auto Scaling Developer Guide/.
+--
+-- Valid values: 'default' | 'dedicated'
+clcPlacementTenancy :: Lens' CreateLaunchConfiguration (Maybe Text)
+clcPlacementTenancy = lens _clcPlacementTenancy (\ s a -> s{_clcPlacementTenancy = a});
 
--- | The maximum hourly price to be paid for any Spot Instance launched to fulfill
--- the request. Spot Instances are launched when the price you specify exceeds
--- the current Spot market price. For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/US-SpotInstances.html Launch SpotInstances in Your Auto Scaling Group> in the /Auto Scaling Developer Guide/.
-clcSpotPrice :: Lens' CreateLaunchConfiguration (Maybe Text)
-clcSpotPrice = lens _clcSpotPrice (\s a -> s { _clcSpotPrice = a })
+-- | One or more mappings that specify how block devices are exposed to the
+-- instance. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html Block Device Mapping>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+clcBlockDeviceMappings :: Lens' CreateLaunchConfiguration [BlockDeviceMapping]
+clcBlockDeviceMappings = lens _clcBlockDeviceMappings (\ s a -> s{_clcBlockDeviceMappings = a}) . _Default . _Coerce;
 
--- | The user data to make available to the launched EC2 instances. For more
--- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html Instance Metadata and User Data> in the /Amazon ElasticCompute Cloud User Guide/.
---
--- At this time, launch configurations don't support compressed (zipped) user
--- data files.
-clcUserData :: Lens' CreateLaunchConfiguration (Maybe Text)
-clcUserData = lens _clcUserData (\s a -> s { _clcUserData = a })
+-- | The name of the launch configuration. This name must be unique within
+-- the scope of your AWS account.
+clcLaunchConfigurationName :: Lens' CreateLaunchConfiguration Text
+clcLaunchConfigurationName = lens _clcLaunchConfigurationName (\ s a -> s{_clcLaunchConfigurationName = a});
 
-data CreateLaunchConfigurationResponse = CreateLaunchConfigurationResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest CreateLaunchConfiguration where
+        type Sv CreateLaunchConfiguration = AutoScaling
+        type Rs CreateLaunchConfiguration =
+             CreateLaunchConfigurationResponse
+        request = postQuery
+        response
+          = receiveNull CreateLaunchConfigurationResponse'
 
--- | 'CreateLaunchConfigurationResponse' constructor.
-createLaunchConfigurationResponse :: CreateLaunchConfigurationResponse
-createLaunchConfigurationResponse = CreateLaunchConfigurationResponse
+instance ToHeaders CreateLaunchConfiguration where
+        toHeaders = const mempty
 
 instance ToPath CreateLaunchConfiguration where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateLaunchConfiguration where
-    toQuery CreateLaunchConfiguration{..} = mconcat
-        [ "AssociatePublicIpAddress"     =? _clcAssociatePublicIpAddress
-        , "BlockDeviceMappings"          =? _clcBlockDeviceMappings
-        , "ClassicLinkVPCId"             =? _clcClassicLinkVPCId
-        , "ClassicLinkVPCSecurityGroups" =? _clcClassicLinkVPCSecurityGroups
-        , "EbsOptimized"                 =? _clcEbsOptimized
-        , "IamInstanceProfile"           =? _clcIamInstanceProfile
-        , "ImageId"                      =? _clcImageId
-        , "InstanceId"                   =? _clcInstanceId
-        , "InstanceMonitoring"           =? _clcInstanceMonitoring
-        , "InstanceType"                 =? _clcInstanceType
-        , "KernelId"                     =? _clcKernelId
-        , "KeyName"                      =? _clcKeyName
-        , "LaunchConfigurationName"      =? _clcLaunchConfigurationName
-        , "PlacementTenancy"             =? _clcPlacementTenancy
-        , "RamdiskId"                    =? _clcRamdiskId
-        , "SecurityGroups"               =? _clcSecurityGroups
-        , "SpotPrice"                    =? _clcSpotPrice
-        , "UserData"                     =? _clcUserData
-        ]
-
-instance ToHeaders CreateLaunchConfiguration
+        toQuery CreateLaunchConfiguration'{..}
+          = mconcat
+              ["Action" =:
+                 ("CreateLaunchConfiguration" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "InstanceId" =: _clcInstanceId,
+               "SecurityGroups" =:
+                 toQuery
+                   (toQueryList "member" <$> _clcSecurityGroups),
+               "AssociatePublicIpAddress" =:
+                 _clcAssociatePublicIPAddress,
+               "InstanceMonitoring" =: _clcInstanceMonitoring,
+               "SpotPrice" =: _clcSpotPrice,
+               "KeyName" =: _clcKeyName,
+               "ClassicLinkVPCSecurityGroups" =:
+                 toQuery
+                   (toQueryList "member" <$>
+                      _clcClassicLinkVPCSecurityGroups),
+               "RamdiskId" =: _clcRAMDiskId,
+               "KernelId" =: _clcKernelId,
+               "InstanceType" =: _clcInstanceType,
+               "EbsOptimized" =: _clcEBSOptimized,
+               "UserData" =: _clcUserData,
+               "ClassicLinkVPCId" =: _clcClassicLinkVPCId,
+               "IamInstanceProfile" =: _clcIAMInstanceProfile,
+               "ImageId" =: _clcImageId,
+               "PlacementTenancy" =: _clcPlacementTenancy,
+               "BlockDeviceMappings" =:
+                 toQuery
+                   (toQueryList "member" <$> _clcBlockDeviceMappings),
+               "LaunchConfigurationName" =:
+                 _clcLaunchConfigurationName]
 
-instance AWSRequest CreateLaunchConfiguration where
-    type Sv CreateLaunchConfiguration = AutoScaling
-    type Rs CreateLaunchConfiguration = CreateLaunchConfigurationResponse
+-- | /See:/ 'createLaunchConfigurationResponse' smart constructor.
+data CreateLaunchConfigurationResponse =
+    CreateLaunchConfigurationResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "CreateLaunchConfiguration"
-    response = nullResponse CreateLaunchConfigurationResponse
+-- | Creates a value of 'CreateLaunchConfigurationResponse' with the minimum fields required to make a request.
+--
+createLaunchConfigurationResponse
+    :: CreateLaunchConfigurationResponse
+createLaunchConfigurationResponse = CreateLaunchConfigurationResponse'
diff --git a/gen/Network/AWS/AutoScaling/CreateOrUpdateTags.hs b/gen/Network/AWS/AutoScaling/CreateOrUpdateTags.hs
--- a/gen/Network/AWS/AutoScaling/CreateOrUpdateTags.hs
+++ b/gen/Network/AWS/AutoScaling/CreateOrUpdateTags.hs
@@ -1,115 +1,108 @@
-{-# 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.AutoScaling.CreateOrUpdateTags
--- 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 or updates tags for the specified Auto Scaling group.
+-- Creates or updates tags for the specified Auto Scaling group.
 --
--- A tag's definition is composed of a resource ID, resource type, key and
--- value, and the propagate flag. Value and the propagate flag are optional
--- parameters. See the Request Parameters for more information.  For more
--- information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/ASTagging.html Add, Modify, or Remove Auto Scaling Group Tags> in the /AutoScaling Developer Guide/.
+-- A tag is defined by its resource ID, resource type, key, value, and
+-- propagate flag. The value and the propagate flag are optional
+-- parameters. The only supported resource type is 'auto-scaling-group',
+-- and the resource ID must be the name of the group. The
+-- 'PropagateAtLaunch' flag determines whether the tag is added to
+-- instances launched in the group. Valid values are 'true' or 'false'.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateOrUpdateTags.html>
+-- When you specify a tag with a key that already exists, the operation
+-- overwrites the previous tag definition, and you do not get an error
+-- message.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/ASTagging.html Tagging Auto Scaling Groups and Instances>
+-- in the /Auto Scaling Developer Guide/.
+--
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateOrUpdateTags.html AWS API Reference> for CreateOrUpdateTags.
 module Network.AWS.AutoScaling.CreateOrUpdateTags
     (
-    -- * Request
-      CreateOrUpdateTags
-    -- ** Request constructor
-    , createOrUpdateTags
-    -- ** Request lenses
+    -- * Creating a Request
+      createOrUpdateTags
+    , CreateOrUpdateTags
+    -- * Request Lenses
     , coutTags
 
-    -- * Response
-    , CreateOrUpdateTagsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createOrUpdateTagsResponse
+    , CreateOrUpdateTagsResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
-
-newtype CreateOrUpdateTags = CreateOrUpdateTags
-    { _coutTags :: List "member" Tag
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList CreateOrUpdateTags where
-    type Item CreateOrUpdateTags = Tag
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-    fromList = CreateOrUpdateTags . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _coutTags
+-- | /See:/ 'createOrUpdateTags' smart constructor.
+newtype CreateOrUpdateTags = CreateOrUpdateTags'
+    { _coutTags :: [Tag]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateOrUpdateTags' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CreateOrUpdateTags' with the minimum fields required to make a request.
 --
--- * 'coutTags' @::@ ['Tag']
+-- Use one of the following lenses to modify other fields as desired:
 --
-createOrUpdateTags :: CreateOrUpdateTags
-createOrUpdateTags = CreateOrUpdateTags
+-- * 'coutTags'
+createOrUpdateTags
+    :: CreateOrUpdateTags
+createOrUpdateTags =
+    CreateOrUpdateTags'
     { _coutTags = mempty
     }
 
--- | The tag to be created or updated. Each tag should be defined by its resource
--- type, resource ID, key, value, and a propagate flag. The resource type and
--- resource ID identify the type and name of resource for which the tag is
--- created. Currently, 'auto-scaling-group' is the only supported resource type.
--- The valid value for the resource ID is /groupname/.
---
--- The 'PropagateAtLaunch' flag defines whether the new tag will be applied to
--- instances launched by the group. Valid values are 'true' or 'false'. However,
--- instances that are already running will not get the new or updated tag.
--- Likewise, when you modify a tag, the updated version will be applied only to
--- new instances launched by the group after the change. Running instances that
--- had the previous version of the tag will continue to have the older tag.
---
--- When you create a tag and a tag of the same name already exists, the
--- operation overwrites the previous tag definition, but you will not get an
--- error message.
+-- | One or more tags.
 coutTags :: Lens' CreateOrUpdateTags [Tag]
-coutTags = lens _coutTags (\s a -> s { _coutTags = a }) . _List
+coutTags = lens _coutTags (\ s a -> s{_coutTags = a}) . _Coerce;
 
-data CreateOrUpdateTagsResponse = CreateOrUpdateTagsResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest CreateOrUpdateTags where
+        type Sv CreateOrUpdateTags = AutoScaling
+        type Rs CreateOrUpdateTags =
+             CreateOrUpdateTagsResponse
+        request = postQuery
+        response = receiveNull CreateOrUpdateTagsResponse'
 
--- | 'CreateOrUpdateTagsResponse' constructor.
-createOrUpdateTagsResponse :: CreateOrUpdateTagsResponse
-createOrUpdateTagsResponse = CreateOrUpdateTagsResponse
+instance ToHeaders CreateOrUpdateTags where
+        toHeaders = const mempty
 
 instance ToPath CreateOrUpdateTags where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateOrUpdateTags where
-    toQuery CreateOrUpdateTags{..} = mconcat
-        [ "Tags" =? _coutTags
-        ]
-
-instance ToHeaders CreateOrUpdateTags
+        toQuery CreateOrUpdateTags'{..}
+          = mconcat
+              ["Action" =: ("CreateOrUpdateTags" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "Tags" =: toQueryList "member" _coutTags]
 
-instance AWSRequest CreateOrUpdateTags where
-    type Sv CreateOrUpdateTags = AutoScaling
-    type Rs CreateOrUpdateTags = CreateOrUpdateTagsResponse
+-- | /See:/ 'createOrUpdateTagsResponse' smart constructor.
+data CreateOrUpdateTagsResponse =
+    CreateOrUpdateTagsResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "CreateOrUpdateTags"
-    response = nullResponse CreateOrUpdateTagsResponse
+-- | Creates a value of 'CreateOrUpdateTagsResponse' with the minimum fields required to make a request.
+--
+createOrUpdateTagsResponse
+    :: CreateOrUpdateTagsResponse
+createOrUpdateTagsResponse = CreateOrUpdateTagsResponse'
diff --git a/gen/Network/AWS/AutoScaling/DeleteAutoScalingGroup.hs b/gen/Network/AWS/AutoScaling/DeleteAutoScalingGroup.hs
--- a/gen/Network/AWS/AutoScaling/DeleteAutoScalingGroup.hs
+++ b/gen/Network/AWS/AutoScaling/DeleteAutoScalingGroup.hs
@@ -1,108 +1,115 @@
-{-# 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.AutoScaling.DeleteAutoScalingGroup
--- 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 Auto Scaling group.
+-- Deletes the specified Auto Scaling group.
 --
 -- The group must have no instances and no scaling activities in progress.
 --
--- To remove all instances before calling 'DeleteAutoScalingGroup', you can call 'UpdateAutoScalingGroup' to set the minimum and maximum size of the AutoScalingGroup to zero.
+-- To remove all instances before calling 'DeleteAutoScalingGroup', call
+-- UpdateAutoScalingGroup to set the minimum and maximum size of the Auto
+-- Scaling group to zero.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DeleteAutoScalingGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DeleteAutoScalingGroup.html AWS API Reference> for DeleteAutoScalingGroup.
 module Network.AWS.AutoScaling.DeleteAutoScalingGroup
     (
-    -- * Request
-      DeleteAutoScalingGroup
-    -- ** Request constructor
-    , deleteAutoScalingGroup
-    -- ** Request lenses
-    , dasgAutoScalingGroupName
+    -- * Creating a Request
+      deleteAutoScalingGroup
+    , DeleteAutoScalingGroup
+    -- * Request Lenses
     , dasgForceDelete
+    , dasgAutoScalingGroupName
 
-    -- * Response
-    , DeleteAutoScalingGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteAutoScalingGroupResponse
+    , DeleteAutoScalingGroupResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DeleteAutoScalingGroup = DeleteAutoScalingGroup
-    { _dasgAutoScalingGroupName :: Text
-    , _dasgForceDelete          :: Maybe Bool
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'deleteAutoScalingGroup' smart constructor.
+data DeleteAutoScalingGroup = DeleteAutoScalingGroup'
+    { _dasgForceDelete          :: !(Maybe Bool)
+    , _dasgAutoScalingGroupName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteAutoScalingGroup' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteAutoScalingGroup' with the minimum fields required to make a request.
 --
--- * 'dasgAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dasgForceDelete' @::@ 'Maybe' 'Bool'
+-- * 'dasgForceDelete'
 --
-deleteAutoScalingGroup :: Text -- ^ 'dasgAutoScalingGroupName'
-                       -> DeleteAutoScalingGroup
-deleteAutoScalingGroup p1 = DeleteAutoScalingGroup
-    { _dasgAutoScalingGroupName = p1
-    , _dasgForceDelete          = Nothing
+-- * 'dasgAutoScalingGroupName'
+deleteAutoScalingGroup
+    :: Text -- ^ 'dasgAutoScalingGroupName'
+    -> DeleteAutoScalingGroup
+deleteAutoScalingGroup pAutoScalingGroupName_ =
+    DeleteAutoScalingGroup'
+    { _dasgForceDelete = Nothing
+    , _dasgAutoScalingGroupName = pAutoScalingGroupName_
     }
 
+-- | Specifies that the group will be deleted along with all instances
+-- associated with the group, without waiting for all instances to be
+-- terminated. This parameter also deletes any lifecycle actions associated
+-- with the group.
+dasgForceDelete :: Lens' DeleteAutoScalingGroup (Maybe Bool)
+dasgForceDelete = lens _dasgForceDelete (\ s a -> s{_dasgForceDelete = a});
+
 -- | The name of the group to delete.
 dasgAutoScalingGroupName :: Lens' DeleteAutoScalingGroup Text
-dasgAutoScalingGroupName =
-    lens _dasgAutoScalingGroupName
-        (\s a -> s { _dasgAutoScalingGroupName = a })
-
--- | Specifies that the group will be deleted along with all instances associated
--- with the group, without waiting for all instances to be terminated. This
--- parameter also deletes any lifecycle actions associated with the group.
-dasgForceDelete :: Lens' DeleteAutoScalingGroup (Maybe Bool)
-dasgForceDelete = lens _dasgForceDelete (\s a -> s { _dasgForceDelete = a })
+dasgAutoScalingGroupName = lens _dasgAutoScalingGroupName (\ s a -> s{_dasgAutoScalingGroupName = a});
 
-data DeleteAutoScalingGroupResponse = DeleteAutoScalingGroupResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteAutoScalingGroup where
+        type Sv DeleteAutoScalingGroup = AutoScaling
+        type Rs DeleteAutoScalingGroup =
+             DeleteAutoScalingGroupResponse
+        request = postQuery
+        response
+          = receiveNull DeleteAutoScalingGroupResponse'
 
--- | 'DeleteAutoScalingGroupResponse' constructor.
-deleteAutoScalingGroupResponse :: DeleteAutoScalingGroupResponse
-deleteAutoScalingGroupResponse = DeleteAutoScalingGroupResponse
+instance ToHeaders DeleteAutoScalingGroup where
+        toHeaders = const mempty
 
 instance ToPath DeleteAutoScalingGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteAutoScalingGroup where
-    toQuery DeleteAutoScalingGroup{..} = mconcat
-        [ "AutoScalingGroupName" =? _dasgAutoScalingGroupName
-        , "ForceDelete"          =? _dasgForceDelete
-        ]
-
-instance ToHeaders DeleteAutoScalingGroup
+        toQuery DeleteAutoScalingGroup'{..}
+          = mconcat
+              ["Action" =:
+                 ("DeleteAutoScalingGroup" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "ForceDelete" =: _dasgForceDelete,
+               "AutoScalingGroupName" =: _dasgAutoScalingGroupName]
 
-instance AWSRequest DeleteAutoScalingGroup where
-    type Sv DeleteAutoScalingGroup = AutoScaling
-    type Rs DeleteAutoScalingGroup = DeleteAutoScalingGroupResponse
+-- | /See:/ 'deleteAutoScalingGroupResponse' smart constructor.
+data DeleteAutoScalingGroupResponse =
+    DeleteAutoScalingGroupResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteAutoScalingGroup"
-    response = nullResponse DeleteAutoScalingGroupResponse
+-- | Creates a value of 'DeleteAutoScalingGroupResponse' with the minimum fields required to make a request.
+--
+deleteAutoScalingGroupResponse
+    :: DeleteAutoScalingGroupResponse
+deleteAutoScalingGroupResponse = DeleteAutoScalingGroupResponse'
diff --git a/gen/Network/AWS/AutoScaling/DeleteLaunchConfiguration.hs b/gen/Network/AWS/AutoScaling/DeleteLaunchConfiguration.hs
--- a/gen/Network/AWS/AutoScaling/DeleteLaunchConfiguration.hs
+++ b/gen/Network/AWS/AutoScaling/DeleteLaunchConfiguration.hs
@@ -1,95 +1,101 @@
-{-# 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.AutoScaling.DeleteLaunchConfiguration
--- 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 launch configuration.
+-- Deletes the specified launch configuration.
 --
--- The launch configuration must not be attached to an Auto Scaling group. When
--- this call completes, the launch configuration is no longer available for use.
+-- The launch configuration must not be attached to an Auto Scaling group.
+-- When this call completes, the launch configuration is no longer
+-- available for use.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DeleteLaunchConfiguration.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DeleteLaunchConfiguration.html AWS API Reference> for DeleteLaunchConfiguration.
 module Network.AWS.AutoScaling.DeleteLaunchConfiguration
     (
-    -- * Request
-      DeleteLaunchConfiguration
-    -- ** Request constructor
-    , deleteLaunchConfiguration
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteLaunchConfiguration
+    , DeleteLaunchConfiguration
+    -- * Request Lenses
     , dlcLaunchConfigurationName
 
-    -- * Response
-    , DeleteLaunchConfigurationResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteLaunchConfigurationResponse
+    , DeleteLaunchConfigurationResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DeleteLaunchConfiguration = DeleteLaunchConfiguration
+-- | /See:/ 'deleteLaunchConfiguration' smart constructor.
+newtype DeleteLaunchConfiguration = DeleteLaunchConfiguration'
     { _dlcLaunchConfigurationName :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteLaunchConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteLaunchConfiguration' with the minimum fields required to make a request.
 --
--- * 'dlcLaunchConfigurationName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteLaunchConfiguration :: Text -- ^ 'dlcLaunchConfigurationName'
-                          -> DeleteLaunchConfiguration
-deleteLaunchConfiguration p1 = DeleteLaunchConfiguration
-    { _dlcLaunchConfigurationName = p1
+-- * 'dlcLaunchConfigurationName'
+deleteLaunchConfiguration
+    :: Text -- ^ 'dlcLaunchConfigurationName'
+    -> DeleteLaunchConfiguration
+deleteLaunchConfiguration pLaunchConfigurationName_ =
+    DeleteLaunchConfiguration'
+    { _dlcLaunchConfigurationName = pLaunchConfigurationName_
     }
 
 -- | The name of the launch configuration.
 dlcLaunchConfigurationName :: Lens' DeleteLaunchConfiguration Text
-dlcLaunchConfigurationName =
-    lens _dlcLaunchConfigurationName
-        (\s a -> s { _dlcLaunchConfigurationName = a })
+dlcLaunchConfigurationName = lens _dlcLaunchConfigurationName (\ s a -> s{_dlcLaunchConfigurationName = a});
 
-data DeleteLaunchConfigurationResponse = DeleteLaunchConfigurationResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteLaunchConfiguration where
+        type Sv DeleteLaunchConfiguration = AutoScaling
+        type Rs DeleteLaunchConfiguration =
+             DeleteLaunchConfigurationResponse
+        request = postQuery
+        response
+          = receiveNull DeleteLaunchConfigurationResponse'
 
--- | 'DeleteLaunchConfigurationResponse' constructor.
-deleteLaunchConfigurationResponse :: DeleteLaunchConfigurationResponse
-deleteLaunchConfigurationResponse = DeleteLaunchConfigurationResponse
+instance ToHeaders DeleteLaunchConfiguration where
+        toHeaders = const mempty
 
 instance ToPath DeleteLaunchConfiguration where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteLaunchConfiguration where
-    toQuery DeleteLaunchConfiguration{..} = mconcat
-        [ "LaunchConfigurationName" =? _dlcLaunchConfigurationName
-        ]
-
-instance ToHeaders DeleteLaunchConfiguration
+        toQuery DeleteLaunchConfiguration'{..}
+          = mconcat
+              ["Action" =:
+                 ("DeleteLaunchConfiguration" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "LaunchConfigurationName" =:
+                 _dlcLaunchConfigurationName]
 
-instance AWSRequest DeleteLaunchConfiguration where
-    type Sv DeleteLaunchConfiguration = AutoScaling
-    type Rs DeleteLaunchConfiguration = DeleteLaunchConfigurationResponse
+-- | /See:/ 'deleteLaunchConfigurationResponse' smart constructor.
+data DeleteLaunchConfigurationResponse =
+    DeleteLaunchConfigurationResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteLaunchConfiguration"
-    response = nullResponse DeleteLaunchConfigurationResponse
+-- | Creates a value of 'DeleteLaunchConfigurationResponse' with the minimum fields required to make a request.
+--
+deleteLaunchConfigurationResponse
+    :: DeleteLaunchConfigurationResponse
+deleteLaunchConfigurationResponse = DeleteLaunchConfigurationResponse'
diff --git a/gen/Network/AWS/AutoScaling/DeleteLifecycleHook.hs b/gen/Network/AWS/AutoScaling/DeleteLifecycleHook.hs
--- a/gen/Network/AWS/AutoScaling/DeleteLifecycleHook.hs
+++ b/gen/Network/AWS/AutoScaling/DeleteLifecycleHook.hs
@@ -1,106 +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.AutoScaling.DeleteLifecycleHook
--- 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 lifecycle hook.
+-- Deletes the specified lifecycle hook.
 --
--- If there are any outstanding lifecycle actions, they are completed first ('ABANDON' for launching instances, 'CONTINUE' for terminating instances).
+-- If there are any outstanding lifecycle actions, they are completed first
+-- ('ABANDON' for launching instances, 'CONTINUE' for terminating
+-- instances).
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DeleteLifecycleHook.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DeleteLifecycleHook.html AWS API Reference> for DeleteLifecycleHook.
 module Network.AWS.AutoScaling.DeleteLifecycleHook
     (
-    -- * Request
-      DeleteLifecycleHook
-    -- ** Request constructor
-    , deleteLifecycleHook
-    -- ** Request lenses
-    , dlh1AutoScalingGroupName
-    , dlh1LifecycleHookName
+    -- * Creating a Request
+      deleteLifecycleHook
+    , DeleteLifecycleHook
+    -- * Request Lenses
+    , delLifecycleHookName
+    , delAutoScalingGroupName
 
-    -- * Response
-    , DeleteLifecycleHookResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteLifecycleHookResponse
+    , DeleteLifecycleHookResponse
+    -- * Response Lenses
+    , drsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DeleteLifecycleHook = DeleteLifecycleHook
-    { _dlh1AutoScalingGroupName :: Text
-    , _dlh1LifecycleHookName    :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'deleteLifecycleHook' smart constructor.
+data DeleteLifecycleHook = DeleteLifecycleHook'
+    { _delLifecycleHookName    :: !Text
+    , _delAutoScalingGroupName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteLifecycleHook' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteLifecycleHook' with the minimum fields required to make a request.
 --
--- * 'dlh1AutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dlh1LifecycleHookName' @::@ 'Text'
+-- * 'delLifecycleHookName'
 --
-deleteLifecycleHook :: Text -- ^ 'dlh1LifecycleHookName'
-                    -> Text -- ^ 'dlh1AutoScalingGroupName'
-                    -> DeleteLifecycleHook
-deleteLifecycleHook p1 p2 = DeleteLifecycleHook
-    { _dlh1LifecycleHookName    = p1
-    , _dlh1AutoScalingGroupName = p2
+-- * 'delAutoScalingGroupName'
+deleteLifecycleHook
+    :: Text -- ^ 'delLifecycleHookName'
+    -> Text -- ^ 'delAutoScalingGroupName'
+    -> DeleteLifecycleHook
+deleteLifecycleHook pLifecycleHookName_ pAutoScalingGroupName_ =
+    DeleteLifecycleHook'
+    { _delLifecycleHookName = pLifecycleHookName_
+    , _delAutoScalingGroupName = pAutoScalingGroupName_
     }
 
--- | The name of the Auto Scaling group for the lifecycle hook.
-dlh1AutoScalingGroupName :: Lens' DeleteLifecycleHook Text
-dlh1AutoScalingGroupName =
-    lens _dlh1AutoScalingGroupName
-        (\s a -> s { _dlh1AutoScalingGroupName = a })
-
 -- | The name of the lifecycle hook.
-dlh1LifecycleHookName :: Lens' DeleteLifecycleHook Text
-dlh1LifecycleHookName =
-    lens _dlh1LifecycleHookName (\s a -> s { _dlh1LifecycleHookName = a })
+delLifecycleHookName :: Lens' DeleteLifecycleHook Text
+delLifecycleHookName = lens _delLifecycleHookName (\ s a -> s{_delLifecycleHookName = a});
 
-data DeleteLifecycleHookResponse = DeleteLifecycleHookResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The name of the Auto Scaling group for the lifecycle hook.
+delAutoScalingGroupName :: Lens' DeleteLifecycleHook Text
+delAutoScalingGroupName = lens _delAutoScalingGroupName (\ s a -> s{_delAutoScalingGroupName = a});
 
--- | 'DeleteLifecycleHookResponse' constructor.
-deleteLifecycleHookResponse :: DeleteLifecycleHookResponse
-deleteLifecycleHookResponse = DeleteLifecycleHookResponse
+instance AWSRequest DeleteLifecycleHook where
+        type Sv DeleteLifecycleHook = AutoScaling
+        type Rs DeleteLifecycleHook =
+             DeleteLifecycleHookResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DeleteLifecycleHookResult"
+              (\ s h x ->
+                 DeleteLifecycleHookResponse' <$> (pure (fromEnum s)))
 
+instance ToHeaders DeleteLifecycleHook where
+        toHeaders = const mempty
+
 instance ToPath DeleteLifecycleHook where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteLifecycleHook where
-    toQuery DeleteLifecycleHook{..} = mconcat
-        [ "AutoScalingGroupName" =? _dlh1AutoScalingGroupName
-        , "LifecycleHookName"    =? _dlh1LifecycleHookName
-        ]
+        toQuery DeleteLifecycleHook'{..}
+          = mconcat
+              ["Action" =: ("DeleteLifecycleHook" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "LifecycleHookName" =: _delLifecycleHookName,
+               "AutoScalingGroupName" =: _delAutoScalingGroupName]
 
-instance ToHeaders DeleteLifecycleHook
+-- | /See:/ 'deleteLifecycleHookResponse' smart constructor.
+newtype DeleteLifecycleHookResponse = DeleteLifecycleHookResponse'
+    { _drsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteLifecycleHook where
-    type Sv DeleteLifecycleHook = AutoScaling
-    type Rs DeleteLifecycleHook = DeleteLifecycleHookResponse
+-- | Creates a value of 'DeleteLifecycleHookResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drsStatus'
+deleteLifecycleHookResponse
+    :: Int -- ^ 'drsStatus'
+    -> DeleteLifecycleHookResponse
+deleteLifecycleHookResponse pStatus_ =
+    DeleteLifecycleHookResponse'
+    { _drsStatus = pStatus_
+    }
 
-    request  = post "DeleteLifecycleHook"
-    response = nullResponse DeleteLifecycleHookResponse
+-- | The response status code.
+drsStatus :: Lens' DeleteLifecycleHookResponse Int
+drsStatus = lens _drsStatus (\ s a -> s{_drsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DeleteNotificationConfiguration.hs b/gen/Network/AWS/AutoScaling/DeleteNotificationConfiguration.hs
--- a/gen/Network/AWS/AutoScaling/DeleteNotificationConfiguration.hs
+++ b/gen/Network/AWS/AutoScaling/DeleteNotificationConfiguration.hs
@@ -1,103 +1,113 @@
-{-# 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.AutoScaling.DeleteNotificationConfiguration
--- 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 notification.
+-- Deletes the specified notification.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DeleteNotificationConfiguration.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DeleteNotificationConfiguration.html AWS API Reference> for DeleteNotificationConfiguration.
 module Network.AWS.AutoScaling.DeleteNotificationConfiguration
     (
-    -- * Request
-      DeleteNotificationConfiguration
-    -- ** Request constructor
-    , deleteNotificationConfiguration
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteNotificationConfiguration
+    , DeleteNotificationConfiguration
+    -- * Request Lenses
     , dncAutoScalingGroupName
     , dncTopicARN
 
-    -- * Response
-    , DeleteNotificationConfigurationResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteNotificationConfigurationResponse
+    , DeleteNotificationConfigurationResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DeleteNotificationConfiguration = DeleteNotificationConfiguration
-    { _dncAutoScalingGroupName :: Text
-    , _dncTopicARN             :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'deleteNotificationConfiguration' smart constructor.
+data DeleteNotificationConfiguration = DeleteNotificationConfiguration'
+    { _dncAutoScalingGroupName :: !Text
+    , _dncTopicARN             :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteNotificationConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteNotificationConfiguration' with the minimum fields required to make a request.
 --
--- * 'dncAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dncTopicARN' @::@ 'Text'
+-- * 'dncAutoScalingGroupName'
 --
-deleteNotificationConfiguration :: Text -- ^ 'dncAutoScalingGroupName'
-                                -> Text -- ^ 'dncTopicARN'
-                                -> DeleteNotificationConfiguration
-deleteNotificationConfiguration p1 p2 = DeleteNotificationConfiguration
-    { _dncAutoScalingGroupName = p1
-    , _dncTopicARN             = p2
+-- * 'dncTopicARN'
+deleteNotificationConfiguration
+    :: Text -- ^ 'dncAutoScalingGroupName'
+    -> Text -- ^ 'dncTopicARN'
+    -> DeleteNotificationConfiguration
+deleteNotificationConfiguration pAutoScalingGroupName_ pTopicARN_ =
+    DeleteNotificationConfiguration'
+    { _dncAutoScalingGroupName = pAutoScalingGroupName_
+    , _dncTopicARN = pTopicARN_
     }
 
 -- | The name of the Auto Scaling group.
 dncAutoScalingGroupName :: Lens' DeleteNotificationConfiguration Text
-dncAutoScalingGroupName =
-    lens _dncAutoScalingGroupName (\s a -> s { _dncAutoScalingGroupName = a })
+dncAutoScalingGroupName = lens _dncAutoScalingGroupName (\ s a -> s{_dncAutoScalingGroupName = a});
 
 -- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
 -- (SNS) topic.
 dncTopicARN :: Lens' DeleteNotificationConfiguration Text
-dncTopicARN = lens _dncTopicARN (\s a -> s { _dncTopicARN = a })
+dncTopicARN = lens _dncTopicARN (\ s a -> s{_dncTopicARN = a});
 
-data DeleteNotificationConfigurationResponse = DeleteNotificationConfigurationResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteNotificationConfiguration
+         where
+        type Sv DeleteNotificationConfiguration = AutoScaling
+        type Rs DeleteNotificationConfiguration =
+             DeleteNotificationConfigurationResponse
+        request = postQuery
+        response
+          = receiveNull
+              DeleteNotificationConfigurationResponse'
 
--- | 'DeleteNotificationConfigurationResponse' constructor.
-deleteNotificationConfigurationResponse :: DeleteNotificationConfigurationResponse
-deleteNotificationConfigurationResponse = DeleteNotificationConfigurationResponse
+instance ToHeaders DeleteNotificationConfiguration
+         where
+        toHeaders = const mempty
 
 instance ToPath DeleteNotificationConfiguration where
-    toPath = const "/"
-
-instance ToQuery DeleteNotificationConfiguration where
-    toQuery DeleteNotificationConfiguration{..} = mconcat
-        [ "AutoScalingGroupName" =? _dncAutoScalingGroupName
-        , "TopicARN"             =? _dncTopicARN
-        ]
+        toPath = const "/"
 
-instance ToHeaders DeleteNotificationConfiguration
+instance ToQuery DeleteNotificationConfiguration
+         where
+        toQuery DeleteNotificationConfiguration'{..}
+          = mconcat
+              ["Action" =:
+                 ("DeleteNotificationConfiguration" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "AutoScalingGroupName" =: _dncAutoScalingGroupName,
+               "TopicARN" =: _dncTopicARN]
 
-instance AWSRequest DeleteNotificationConfiguration where
-    type Sv DeleteNotificationConfiguration = AutoScaling
-    type Rs DeleteNotificationConfiguration = DeleteNotificationConfigurationResponse
+-- | /See:/ 'deleteNotificationConfigurationResponse' smart constructor.
+data DeleteNotificationConfigurationResponse =
+    DeleteNotificationConfigurationResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteNotificationConfiguration"
-    response = nullResponse DeleteNotificationConfigurationResponse
+-- | Creates a value of 'DeleteNotificationConfigurationResponse' with the minimum fields required to make a request.
+--
+deleteNotificationConfigurationResponse
+    :: DeleteNotificationConfigurationResponse
+deleteNotificationConfigurationResponse =
+    DeleteNotificationConfigurationResponse'
diff --git a/gen/Network/AWS/AutoScaling/DeletePolicy.hs b/gen/Network/AWS/AutoScaling/DeletePolicy.hs
--- a/gen/Network/AWS/AutoScaling/DeletePolicy.hs
+++ b/gen/Network/AWS/AutoScaling/DeletePolicy.hs
@@ -1,101 +1,105 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.AutoScaling.DeletePolicy
--- 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 Auto Scaling policy.
+-- Deletes the specified Auto Scaling policy.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DeletePolicy.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DeletePolicy.html AWS API Reference> for DeletePolicy.
 module Network.AWS.AutoScaling.DeletePolicy
     (
-    -- * Request
-      DeletePolicy
-    -- ** Request constructor
-    , deletePolicy
-    -- ** Request lenses
+    -- * Creating a Request
+      deletePolicy
+    , DeletePolicy
+    -- * Request Lenses
     , dpAutoScalingGroupName
     , dpPolicyName
 
-    -- * Response
-    , DeletePolicyResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deletePolicyResponse
+    , DeletePolicyResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
-
-data DeletePolicy = DeletePolicy
-    { _dpAutoScalingGroupName :: Maybe Text
-    , _dpPolicyName           :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DeletePolicy' constructor.
+-- |
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'deletePolicy' smart constructor.
+data DeletePolicy = DeletePolicy'
+    { _dpAutoScalingGroupName :: !(Maybe Text)
+    , _dpPolicyName           :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeletePolicy' with the minimum fields required to make a request.
 --
--- * 'dpAutoScalingGroupName' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dpPolicyName' @::@ 'Text'
+-- * 'dpAutoScalingGroupName'
 --
-deletePolicy :: Text -- ^ 'dpPolicyName'
-             -> DeletePolicy
-deletePolicy p1 = DeletePolicy
-    { _dpPolicyName           = p1
-    , _dpAutoScalingGroupName = Nothing
+-- * 'dpPolicyName'
+deletePolicy
+    :: Text -- ^ 'dpPolicyName'
+    -> DeletePolicy
+deletePolicy pPolicyName_ =
+    DeletePolicy'
+    { _dpAutoScalingGroupName = Nothing
+    , _dpPolicyName = pPolicyName_
     }
 
 -- | The name of the Auto Scaling group.
 dpAutoScalingGroupName :: Lens' DeletePolicy (Maybe Text)
-dpAutoScalingGroupName =
-    lens _dpAutoScalingGroupName (\s a -> s { _dpAutoScalingGroupName = a })
+dpAutoScalingGroupName = lens _dpAutoScalingGroupName (\ s a -> s{_dpAutoScalingGroupName = a});
 
 -- | The name or Amazon Resource Name (ARN) of the policy.
 dpPolicyName :: Lens' DeletePolicy Text
-dpPolicyName = lens _dpPolicyName (\s a -> s { _dpPolicyName = a })
+dpPolicyName = lens _dpPolicyName (\ s a -> s{_dpPolicyName = a});
 
-data DeletePolicyResponse = DeletePolicyResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeletePolicy where
+        type Sv DeletePolicy = AutoScaling
+        type Rs DeletePolicy = DeletePolicyResponse
+        request = postQuery
+        response = receiveNull DeletePolicyResponse'
 
--- | 'DeletePolicyResponse' constructor.
-deletePolicyResponse :: DeletePolicyResponse
-deletePolicyResponse = DeletePolicyResponse
+instance ToHeaders DeletePolicy where
+        toHeaders = const mempty
 
 instance ToPath DeletePolicy where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeletePolicy where
-    toQuery DeletePolicy{..} = mconcat
-        [ "AutoScalingGroupName" =? _dpAutoScalingGroupName
-        , "PolicyName"           =? _dpPolicyName
-        ]
-
-instance ToHeaders DeletePolicy
+        toQuery DeletePolicy'{..}
+          = mconcat
+              ["Action" =: ("DeletePolicy" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "AutoScalingGroupName" =: _dpAutoScalingGroupName,
+               "PolicyName" =: _dpPolicyName]
 
-instance AWSRequest DeletePolicy where
-    type Sv DeletePolicy = AutoScaling
-    type Rs DeletePolicy = DeletePolicyResponse
+-- | /See:/ 'deletePolicyResponse' smart constructor.
+data DeletePolicyResponse =
+    DeletePolicyResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeletePolicy"
-    response = nullResponse DeletePolicyResponse
+-- | Creates a value of 'DeletePolicyResponse' with the minimum fields required to make a request.
+--
+deletePolicyResponse
+    :: DeletePolicyResponse
+deletePolicyResponse = DeletePolicyResponse'
diff --git a/gen/Network/AWS/AutoScaling/DeleteScheduledAction.hs b/gen/Network/AWS/AutoScaling/DeleteScheduledAction.hs
--- a/gen/Network/AWS/AutoScaling/DeleteScheduledAction.hs
+++ b/gen/Network/AWS/AutoScaling/DeleteScheduledAction.hs
@@ -1,102 +1,104 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.AutoScaling.DeleteScheduledAction
--- 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 scheduled action.
+-- Deletes the specified scheduled action.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DeleteScheduledAction.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DeleteScheduledAction.html AWS API Reference> for DeleteScheduledAction.
 module Network.AWS.AutoScaling.DeleteScheduledAction
     (
-    -- * Request
-      DeleteScheduledAction
-    -- ** Request constructor
-    , deleteScheduledAction
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteScheduledAction
+    , DeleteScheduledAction
+    -- * Request Lenses
     , dsaAutoScalingGroupName
     , dsaScheduledActionName
 
-    -- * Response
-    , DeleteScheduledActionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteScheduledActionResponse
+    , DeleteScheduledActionResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DeleteScheduledAction = DeleteScheduledAction
-    { _dsaAutoScalingGroupName :: Maybe Text
-    , _dsaScheduledActionName  :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'deleteScheduledAction' smart constructor.
+data DeleteScheduledAction = DeleteScheduledAction'
+    { _dsaAutoScalingGroupName :: !(Maybe Text)
+    , _dsaScheduledActionName  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteScheduledAction' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteScheduledAction' with the minimum fields required to make a request.
 --
--- * 'dsaAutoScalingGroupName' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dsaScheduledActionName' @::@ 'Text'
+-- * 'dsaAutoScalingGroupName'
 --
-deleteScheduledAction :: Text -- ^ 'dsaScheduledActionName'
-                      -> DeleteScheduledAction
-deleteScheduledAction p1 = DeleteScheduledAction
-    { _dsaScheduledActionName  = p1
-    , _dsaAutoScalingGroupName = Nothing
+-- * 'dsaScheduledActionName'
+deleteScheduledAction
+    :: Text -- ^ 'dsaScheduledActionName'
+    -> DeleteScheduledAction
+deleteScheduledAction pScheduledActionName_ =
+    DeleteScheduledAction'
+    { _dsaAutoScalingGroupName = Nothing
+    , _dsaScheduledActionName = pScheduledActionName_
     }
 
 -- | The name of the Auto Scaling group.
 dsaAutoScalingGroupName :: Lens' DeleteScheduledAction (Maybe Text)
-dsaAutoScalingGroupName =
-    lens _dsaAutoScalingGroupName (\s a -> s { _dsaAutoScalingGroupName = a })
+dsaAutoScalingGroupName = lens _dsaAutoScalingGroupName (\ s a -> s{_dsaAutoScalingGroupName = a});
 
 -- | The name of the action to delete.
 dsaScheduledActionName :: Lens' DeleteScheduledAction Text
-dsaScheduledActionName =
-    lens _dsaScheduledActionName (\s a -> s { _dsaScheduledActionName = a })
+dsaScheduledActionName = lens _dsaScheduledActionName (\ s a -> s{_dsaScheduledActionName = a});
 
-data DeleteScheduledActionResponse = DeleteScheduledActionResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteScheduledAction where
+        type Sv DeleteScheduledAction = AutoScaling
+        type Rs DeleteScheduledAction =
+             DeleteScheduledActionResponse
+        request = postQuery
+        response = receiveNull DeleteScheduledActionResponse'
 
--- | 'DeleteScheduledActionResponse' constructor.
-deleteScheduledActionResponse :: DeleteScheduledActionResponse
-deleteScheduledActionResponse = DeleteScheduledActionResponse
+instance ToHeaders DeleteScheduledAction where
+        toHeaders = const mempty
 
 instance ToPath DeleteScheduledAction where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteScheduledAction where
-    toQuery DeleteScheduledAction{..} = mconcat
-        [ "AutoScalingGroupName" =? _dsaAutoScalingGroupName
-        , "ScheduledActionName"  =? _dsaScheduledActionName
-        ]
-
-instance ToHeaders DeleteScheduledAction
+        toQuery DeleteScheduledAction'{..}
+          = mconcat
+              ["Action" =: ("DeleteScheduledAction" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "AutoScalingGroupName" =: _dsaAutoScalingGroupName,
+               "ScheduledActionName" =: _dsaScheduledActionName]
 
-instance AWSRequest DeleteScheduledAction where
-    type Sv DeleteScheduledAction = AutoScaling
-    type Rs DeleteScheduledAction = DeleteScheduledActionResponse
+-- | /See:/ 'deleteScheduledActionResponse' smart constructor.
+data DeleteScheduledActionResponse =
+    DeleteScheduledActionResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteScheduledAction"
-    response = nullResponse DeleteScheduledActionResponse
+-- | Creates a value of 'DeleteScheduledActionResponse' with the minimum fields required to make a request.
+--
+deleteScheduledActionResponse
+    :: DeleteScheduledActionResponse
+deleteScheduledActionResponse = DeleteScheduledActionResponse'
diff --git a/gen/Network/AWS/AutoScaling/DeleteTags.hs b/gen/Network/AWS/AutoScaling/DeleteTags.hs
--- a/gen/Network/AWS/AutoScaling/DeleteTags.hs
+++ b/gen/Network/AWS/AutoScaling/DeleteTags.hs
@@ -1,97 +1,95 @@
-{-# 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.AutoScaling.DeleteTags
--- 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 tags.
+-- Deletes the specified tags.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DeleteTags.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DeleteTags.html AWS API Reference> for DeleteTags.
 module Network.AWS.AutoScaling.DeleteTags
     (
-    -- * Request
-      DeleteTags
-    -- ** Request constructor
-    , deleteTags
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteTags
+    , DeleteTags
+    -- * Request Lenses
     , dtTags
 
-    -- * Response
-    , DeleteTagsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteTagsResponse
+    , DeleteTagsResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
-
-newtype DeleteTags = DeleteTags
-    { _dtTags :: List "member" Tag
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DeleteTags where
-    type Item DeleteTags = Tag
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-    fromList = DeleteTags . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dtTags
+-- | /See:/ 'deleteTags' smart constructor.
+newtype DeleteTags = DeleteTags'
+    { _dtTags :: [Tag]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteTags' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteTags' with the minimum fields required to make a request.
 --
--- * 'dtTags' @::@ ['Tag']
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteTags :: DeleteTags
-deleteTags = DeleteTags
+-- * 'dtTags'
+deleteTags
+    :: DeleteTags
+deleteTags =
+    DeleteTags'
     { _dtTags = mempty
     }
 
--- | Each tag should be defined by its resource type, resource ID, key, value, and
--- a propagate flag. Valid values are: Resource type = /auto-scaling-group/,
--- Resource ID = /AutoScalingGroupName/, key=/value/, value=/value/, propagate=/true/ or /false/.
+-- | Each tag should be defined by its resource type, resource ID, key,
+-- value, and a propagate flag. Valid values are: Resource type =
+-- /auto-scaling-group/, Resource ID = /AutoScalingGroupName/, key=/value/,
+-- value=/value/, propagate=/true/ or /false/.
 dtTags :: Lens' DeleteTags [Tag]
-dtTags = lens _dtTags (\s a -> s { _dtTags = a }) . _List
+dtTags = lens _dtTags (\ s a -> s{_dtTags = a}) . _Coerce;
 
-data DeleteTagsResponse = DeleteTagsResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteTags where
+        type Sv DeleteTags = AutoScaling
+        type Rs DeleteTags = DeleteTagsResponse
+        request = postQuery
+        response = receiveNull DeleteTagsResponse'
 
--- | 'DeleteTagsResponse' constructor.
-deleteTagsResponse :: DeleteTagsResponse
-deleteTagsResponse = DeleteTagsResponse
+instance ToHeaders DeleteTags where
+        toHeaders = const mempty
 
 instance ToPath DeleteTags where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteTags where
-    toQuery DeleteTags{..} = mconcat
-        [ "Tags" =? _dtTags
-        ]
-
-instance ToHeaders DeleteTags
+        toQuery DeleteTags'{..}
+          = mconcat
+              ["Action" =: ("DeleteTags" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "Tags" =: toQueryList "member" _dtTags]
 
-instance AWSRequest DeleteTags where
-    type Sv DeleteTags = AutoScaling
-    type Rs DeleteTags = DeleteTagsResponse
+-- | /See:/ 'deleteTagsResponse' smart constructor.
+data DeleteTagsResponse =
+    DeleteTagsResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteTags"
-    response = nullResponse DeleteTagsResponse
+-- | Creates a value of 'DeleteTagsResponse' with the minimum fields required to make a request.
+--
+deleteTagsResponse
+    :: DeleteTagsResponse
+deleteTagsResponse = DeleteTagsResponse'
diff --git a/gen/Network/AWS/AutoScaling/DescribeAccountLimits.hs b/gen/Network/AWS/AutoScaling/DescribeAccountLimits.hs
--- a/gen/Network/AWS/AutoScaling/DescribeAccountLimits.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeAccountLimits.hs
@@ -1,109 +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.AutoScaling.DescribeAccountLimits
--- 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 current Auto Scaling resource limits for your AWS account.
+-- Describes the current Auto Scaling resource limits for your AWS account.
 --
--- For information about requesting an increase in these limits, see <http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html AWSService Limits>.
+-- For information about requesting an increase in these limits, see
+-- <http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html AWS Service Limits>
+-- in the /Amazon Web Services General Reference/.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeAccountLimits.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeAccountLimits.html AWS API Reference> for DescribeAccountLimits.
 module Network.AWS.AutoScaling.DescribeAccountLimits
     (
-    -- * Request
-      DescribeAccountLimits
-    -- ** Request constructor
-    , describeAccountLimits
+    -- * Creating a Request
+      describeAccountLimits
+    , DescribeAccountLimits
 
-    -- * Response
-    , DescribeAccountLimitsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeAccountLimitsResponse
-    -- ** Response lenses
-    , dalrMaxNumberOfAutoScalingGroups
-    , dalrMaxNumberOfLaunchConfigurations
+    , DescribeAccountLimitsResponse
+    -- * Response Lenses
+    , dalrsMaxNumberOfLaunchConfigurations
+    , dalrsMaxNumberOfAutoScalingGroups
+    , dalrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
-
-data DescribeAccountLimits = DescribeAccountLimits
-    deriving (Eq, Ord, Read, Show, Generic)
-
--- | 'DescribeAccountLimits' constructor.
-describeAccountLimits :: DescribeAccountLimits
-describeAccountLimits = DescribeAccountLimits
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeAccountLimitsResponse = DescribeAccountLimitsResponse
-    { _dalrMaxNumberOfAutoScalingGroups    :: Maybe Int
-    , _dalrMaxNumberOfLaunchConfigurations :: Maybe Int
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeAccountLimits' smart constructor.
+data DescribeAccountLimits =
+    DescribeAccountLimits'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeAccountLimitsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dalrMaxNumberOfAutoScalingGroups' @::@ 'Maybe' 'Int'
---
--- * 'dalrMaxNumberOfLaunchConfigurations' @::@ 'Maybe' 'Int'
+-- | Creates a value of 'DescribeAccountLimits' with the minimum fields required to make a request.
 --
-describeAccountLimitsResponse :: DescribeAccountLimitsResponse
-describeAccountLimitsResponse = DescribeAccountLimitsResponse
-    { _dalrMaxNumberOfAutoScalingGroups    = Nothing
-    , _dalrMaxNumberOfLaunchConfigurations = Nothing
-    }
+describeAccountLimits
+    :: DescribeAccountLimits
+describeAccountLimits = DescribeAccountLimits'
 
--- | The maximum number of groups allowed for your AWS account. The default limit
--- is 20 per region.
-dalrMaxNumberOfAutoScalingGroups :: Lens' DescribeAccountLimitsResponse (Maybe Int)
-dalrMaxNumberOfAutoScalingGroups =
-    lens _dalrMaxNumberOfAutoScalingGroups
-        (\s a -> s { _dalrMaxNumberOfAutoScalingGroups = a })
+instance AWSRequest DescribeAccountLimits where
+        type Sv DescribeAccountLimits = AutoScaling
+        type Rs DescribeAccountLimits =
+             DescribeAccountLimitsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeAccountLimitsResult"
+              (\ s h x ->
+                 DescribeAccountLimitsResponse' <$>
+                   (x .@? "MaxNumberOfLaunchConfigurations") <*>
+                     (x .@? "MaxNumberOfAutoScalingGroups")
+                     <*> (pure (fromEnum s)))
 
--- | The maximum number of launch configurations allowed for your AWS account. The
--- default limit is 100 per region.
-dalrMaxNumberOfLaunchConfigurations :: Lens' DescribeAccountLimitsResponse (Maybe Int)
-dalrMaxNumberOfLaunchConfigurations =
-    lens _dalrMaxNumberOfLaunchConfigurations
-        (\s a -> s { _dalrMaxNumberOfLaunchConfigurations = a })
+instance ToHeaders DescribeAccountLimits where
+        toHeaders = const mempty
 
 instance ToPath DescribeAccountLimits where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeAccountLimits where
-    toQuery = const mempty
+        toQuery
+          = const
+              (mconcat
+                 ["Action" =: ("DescribeAccountLimits" :: ByteString),
+                  "Version" =: ("2011-01-01" :: ByteString)])
 
-instance ToHeaders DescribeAccountLimits
+-- | /See:/ 'describeAccountLimitsResponse' smart constructor.
+data DescribeAccountLimitsResponse = DescribeAccountLimitsResponse'
+    { _dalrsMaxNumberOfLaunchConfigurations :: !(Maybe Int)
+    , _dalrsMaxNumberOfAutoScalingGroups    :: !(Maybe Int)
+    , _dalrsStatus                          :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeAccountLimits where
-    type Sv DescribeAccountLimits = AutoScaling
-    type Rs DescribeAccountLimits = DescribeAccountLimitsResponse
+-- | Creates a value of 'DescribeAccountLimitsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dalrsMaxNumberOfLaunchConfigurations'
+--
+-- * 'dalrsMaxNumberOfAutoScalingGroups'
+--
+-- * 'dalrsStatus'
+describeAccountLimitsResponse
+    :: Int -- ^ 'dalrsStatus'
+    -> DescribeAccountLimitsResponse
+describeAccountLimitsResponse pStatus_ =
+    DescribeAccountLimitsResponse'
+    { _dalrsMaxNumberOfLaunchConfigurations = Nothing
+    , _dalrsMaxNumberOfAutoScalingGroups = Nothing
+    , _dalrsStatus = pStatus_
+    }
 
-    request  = post "DescribeAccountLimits"
-    response = xmlResponse
+-- | The maximum number of launch configurations allowed for your AWS
+-- account. The default limit is 100 per region.
+dalrsMaxNumberOfLaunchConfigurations :: Lens' DescribeAccountLimitsResponse (Maybe Int)
+dalrsMaxNumberOfLaunchConfigurations = lens _dalrsMaxNumberOfLaunchConfigurations (\ s a -> s{_dalrsMaxNumberOfLaunchConfigurations = a});
 
-instance FromXML DescribeAccountLimitsResponse where
-    parseXML = withElement "DescribeAccountLimitsResult" $ \x -> DescribeAccountLimitsResponse
-        <$> x .@? "MaxNumberOfAutoScalingGroups"
-        <*> x .@? "MaxNumberOfLaunchConfigurations"
+-- | The maximum number of groups allowed for your AWS account. The default
+-- limit is 20 per region.
+dalrsMaxNumberOfAutoScalingGroups :: Lens' DescribeAccountLimitsResponse (Maybe Int)
+dalrsMaxNumberOfAutoScalingGroups = lens _dalrsMaxNumberOfAutoScalingGroups (\ s a -> s{_dalrsMaxNumberOfAutoScalingGroups = a});
+
+-- | The response status code.
+dalrsStatus :: Lens' DescribeAccountLimitsResponse Int
+dalrsStatus = lens _dalrsStatus (\ s a -> s{_dalrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DescribeAdjustmentTypes.hs b/gen/Network/AWS/AutoScaling/DescribeAdjustmentTypes.hs
--- a/gen/Network/AWS/AutoScaling/DescribeAdjustmentTypes.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeAdjustmentTypes.hs
@@ -1,99 +1,110 @@
-{-# 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.AutoScaling.DescribeAdjustmentTypes
--- 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.
-
--- | Lists the policy adjustment types for use with 'PutScalingPolicy'.
+-- Describes the policy adjustment types for use with PutScalingPolicy.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeAdjustmentTypes.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeAdjustmentTypes.html AWS API Reference> for DescribeAdjustmentTypes.
 module Network.AWS.AutoScaling.DescribeAdjustmentTypes
     (
-    -- * Request
-      DescribeAdjustmentTypes
-    -- ** Request constructor
-    , describeAdjustmentTypes
+    -- * Creating a Request
+      describeAdjustmentTypes
+    , DescribeAdjustmentTypes
 
-    -- * Response
-    , DescribeAdjustmentTypesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeAdjustmentTypesResponse
-    -- ** Response lenses
-    , datrAdjustmentTypes
+    , DescribeAdjustmentTypesResponse
+    -- * Response Lenses
+    , datrsAdjustmentTypes
+    , datrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeAdjustmentTypes = DescribeAdjustmentTypes
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | /See:/ 'describeAdjustmentTypes' smart constructor.
+data DescribeAdjustmentTypes =
+    DescribeAdjustmentTypes'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeAdjustmentTypes' constructor.
-describeAdjustmentTypes :: DescribeAdjustmentTypes
-describeAdjustmentTypes = DescribeAdjustmentTypes
+-- | Creates a value of 'DescribeAdjustmentTypes' with the minimum fields required to make a request.
+--
+describeAdjustmentTypes
+    :: DescribeAdjustmentTypes
+describeAdjustmentTypes = DescribeAdjustmentTypes'
 
-newtype DescribeAdjustmentTypesResponse = DescribeAdjustmentTypesResponse
-    { _datrAdjustmentTypes :: List "member" AdjustmentType
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest DescribeAdjustmentTypes where
+        type Sv DescribeAdjustmentTypes = AutoScaling
+        type Rs DescribeAdjustmentTypes =
+             DescribeAdjustmentTypesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeAdjustmentTypesResult"
+              (\ s h x ->
+                 DescribeAdjustmentTypesResponse' <$>
+                   (x .@? "AdjustmentTypes" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-instance GHC.Exts.IsList DescribeAdjustmentTypesResponse where
-    type Item DescribeAdjustmentTypesResponse = AdjustmentType
+instance ToHeaders DescribeAdjustmentTypes where
+        toHeaders = const mempty
 
-    fromList = DescribeAdjustmentTypesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _datrAdjustmentTypes
+instance ToPath DescribeAdjustmentTypes where
+        toPath = const "/"
 
--- | 'DescribeAdjustmentTypesResponse' constructor.
+instance ToQuery DescribeAdjustmentTypes where
+        toQuery
+          = const
+              (mconcat
+                 ["Action" =:
+                    ("DescribeAdjustmentTypes" :: ByteString),
+                  "Version" =: ("2011-01-01" :: ByteString)])
+
+-- | /See:/ 'describeAdjustmentTypesResponse' smart constructor.
+data DescribeAdjustmentTypesResponse = DescribeAdjustmentTypesResponse'
+    { _datrsAdjustmentTypes :: !(Maybe [AdjustmentType])
+    , _datrsStatus          :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeAdjustmentTypesResponse' 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:
 --
--- * 'datrAdjustmentTypes' @::@ ['AdjustmentType']
+-- * 'datrsAdjustmentTypes'
 --
-describeAdjustmentTypesResponse :: DescribeAdjustmentTypesResponse
-describeAdjustmentTypesResponse = DescribeAdjustmentTypesResponse
-    { _datrAdjustmentTypes = mempty
+-- * 'datrsStatus'
+describeAdjustmentTypesResponse
+    :: Int -- ^ 'datrsStatus'
+    -> DescribeAdjustmentTypesResponse
+describeAdjustmentTypesResponse pStatus_ =
+    DescribeAdjustmentTypesResponse'
+    { _datrsAdjustmentTypes = Nothing
+    , _datrsStatus = pStatus_
     }
 
 -- | The policy adjustment types.
-datrAdjustmentTypes :: Lens' DescribeAdjustmentTypesResponse [AdjustmentType]
-datrAdjustmentTypes =
-    lens _datrAdjustmentTypes (\s a -> s { _datrAdjustmentTypes = a })
-        . _List
-
-instance ToPath DescribeAdjustmentTypes where
-    toPath = const "/"
-
-instance ToQuery DescribeAdjustmentTypes where
-    toQuery = const mempty
-
-instance ToHeaders DescribeAdjustmentTypes
-
-instance AWSRequest DescribeAdjustmentTypes where
-    type Sv DescribeAdjustmentTypes = AutoScaling
-    type Rs DescribeAdjustmentTypes = DescribeAdjustmentTypesResponse
-
-    request  = post "DescribeAdjustmentTypes"
-    response = xmlResponse
+datrsAdjustmentTypes :: Lens' DescribeAdjustmentTypesResponse [AdjustmentType]
+datrsAdjustmentTypes = lens _datrsAdjustmentTypes (\ s a -> s{_datrsAdjustmentTypes = a}) . _Default . _Coerce;
 
-instance FromXML DescribeAdjustmentTypesResponse where
-    parseXML = withElement "DescribeAdjustmentTypesResult" $ \x -> DescribeAdjustmentTypesResponse
-        <$> x .@? "AdjustmentTypes" .!@ mempty
+-- | The response status code.
+datrsStatus :: Lens' DescribeAdjustmentTypesResponse Int
+datrsStatus = lens _datrsStatus (\ s a -> s{_datrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DescribeAutoScalingGroups.hs b/gen/Network/AWS/AutoScaling/DescribeAutoScalingGroups.hs
--- a/gen/Network/AWS/AutoScaling/DescribeAutoScalingGroups.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeAutoScalingGroups.hs
@@ -1,156 +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.AutoScaling.DescribeAutoScalingGroups
--- 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 one or more Auto Scaling groups. If a list of names is not
+-- Describes one or more Auto Scaling groups. If a list of names is not
 -- provided, the call describes all Auto Scaling groups.
 --
--- You can specify a maximum number of items to be returned with a single call.
--- If there are more items to return, the call returns a token. To get the next
--- set of items, repeat the call with the returned token in the 'NextToken'
--- parameter.
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeAutoScalingGroups.html AWS API Reference> for DescribeAutoScalingGroups.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeAutoScalingGroups.html>
+-- This operation returns paginated results.
 module Network.AWS.AutoScaling.DescribeAutoScalingGroups
     (
-    -- * Request
-      DescribeAutoScalingGroups
-    -- ** Request constructor
-    , describeAutoScalingGroups
-    -- ** Request lenses
+    -- * Creating a Request
+      describeAutoScalingGroups
+    , DescribeAutoScalingGroups
+    -- * Request Lenses
     , dasgAutoScalingGroupNames
-    , dasgMaxRecords
     , dasgNextToken
+    , dasgMaxRecords
 
-    -- * Response
-    , DescribeAutoScalingGroupsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeAutoScalingGroupsResponse
-    -- ** Response lenses
-    , dasgrAutoScalingGroups
-    , dasgrNextToken
+    , DescribeAutoScalingGroupsResponse
+    -- * Response Lenses
+    , dasgrsNextToken
+    , dasgrsStatus
+    , dasgrsAutoScalingGroups
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeAutoScalingGroups = DescribeAutoScalingGroups
-    { _dasgAutoScalingGroupNames :: List "member" Text
-    , _dasgMaxRecords            :: Maybe Int
-    , _dasgNextToken             :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeAutoScalingGroups' smart constructor.
+data DescribeAutoScalingGroups = DescribeAutoScalingGroups'
+    { _dasgAutoScalingGroupNames :: !(Maybe [Text])
+    , _dasgNextToken             :: !(Maybe Text)
+    , _dasgMaxRecords            :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeAutoScalingGroups' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeAutoScalingGroups' with the minimum fields required to make a request.
 --
--- * 'dasgAutoScalingGroupNames' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dasgMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'dasgAutoScalingGroupNames'
 --
--- * 'dasgNextToken' @::@ 'Maybe' 'Text'
+-- * 'dasgNextToken'
 --
-describeAutoScalingGroups :: DescribeAutoScalingGroups
-describeAutoScalingGroups = DescribeAutoScalingGroups
-    { _dasgAutoScalingGroupNames = mempty
-    , _dasgNextToken             = Nothing
-    , _dasgMaxRecords            = Nothing
+-- * 'dasgMaxRecords'
+describeAutoScalingGroups
+    :: DescribeAutoScalingGroups
+describeAutoScalingGroups =
+    DescribeAutoScalingGroups'
+    { _dasgAutoScalingGroupNames = Nothing
+    , _dasgNextToken = Nothing
+    , _dasgMaxRecords = Nothing
     }
 
 -- | The group names.
 dasgAutoScalingGroupNames :: Lens' DescribeAutoScalingGroups [Text]
-dasgAutoScalingGroupNames =
-    lens _dasgAutoScalingGroupNames
-        (\s a -> s { _dasgAutoScalingGroupNames = a })
-            . _List
+dasgAutoScalingGroupNames = lens _dasgAutoScalingGroupNames (\ s a -> s{_dasgAutoScalingGroupNames = a}) . _Default . _Coerce;
 
+-- | The token for the next set of items to return. (You received this token
+-- from a previous call.)
+dasgNextToken :: Lens' DescribeAutoScalingGroups (Maybe Text)
+dasgNextToken = lens _dasgNextToken (\ s a -> s{_dasgNextToken = a});
+
 -- | The maximum number of items to return with this call.
 dasgMaxRecords :: Lens' DescribeAutoScalingGroups (Maybe Int)
-dasgMaxRecords = lens _dasgMaxRecords (\s a -> s { _dasgMaxRecords = a })
+dasgMaxRecords = lens _dasgMaxRecords (\ s a -> s{_dasgMaxRecords = a});
 
--- | The token for the next set of items to return. (You received this token from
--- a previous call.)
-dasgNextToken :: Lens' DescribeAutoScalingGroups (Maybe Text)
-dasgNextToken = lens _dasgNextToken (\s a -> s { _dasgNextToken = a })
+instance AWSPager DescribeAutoScalingGroups where
+        page rq rs
+          | stop (rs ^. dasgrsNextToken) = Nothing
+          | stop (rs ^. dasgrsAutoScalingGroups) = Nothing
+          | otherwise =
+            Just $ rq & dasgNextToken .~ rs ^. dasgrsNextToken
 
-data DescribeAutoScalingGroupsResponse = DescribeAutoScalingGroupsResponse
-    { _dasgrAutoScalingGroups :: List "member" AutoScalingGroup
-    , _dasgrNextToken         :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance AWSRequest DescribeAutoScalingGroups where
+        type Sv DescribeAutoScalingGroups = AutoScaling
+        type Rs DescribeAutoScalingGroups =
+             DescribeAutoScalingGroupsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeAutoScalingGroupsResult"
+              (\ s h x ->
+                 DescribeAutoScalingGroupsResponse' <$>
+                   (x .@? "NextToken") <*> (pure (fromEnum s)) <*>
+                     (x .@? "AutoScalingGroups" .!@ mempty >>=
+                        parseXMLList "member"))
 
--- | 'DescribeAutoScalingGroupsResponse' constructor.
+instance ToHeaders DescribeAutoScalingGroups where
+        toHeaders = const mempty
+
+instance ToPath DescribeAutoScalingGroups where
+        toPath = const "/"
+
+instance ToQuery DescribeAutoScalingGroups where
+        toQuery DescribeAutoScalingGroups'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeAutoScalingGroups" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "AutoScalingGroupNames" =:
+                 toQuery
+                   (toQueryList "member" <$>
+                      _dasgAutoScalingGroupNames),
+               "NextToken" =: _dasgNextToken,
+               "MaxRecords" =: _dasgMaxRecords]
+
+-- | /See:/ 'describeAutoScalingGroupsResponse' smart constructor.
+data DescribeAutoScalingGroupsResponse = DescribeAutoScalingGroupsResponse'
+    { _dasgrsNextToken         :: !(Maybe Text)
+    , _dasgrsStatus            :: !Int
+    , _dasgrsAutoScalingGroups :: ![AutoScalingGroup]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeAutoScalingGroupsResponse' 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:
 --
--- * 'dasgrAutoScalingGroups' @::@ ['AutoScalingGroup']
+-- * 'dasgrsNextToken'
 --
--- * 'dasgrNextToken' @::@ 'Maybe' 'Text'
+-- * 'dasgrsStatus'
 --
-describeAutoScalingGroupsResponse :: DescribeAutoScalingGroupsResponse
-describeAutoScalingGroupsResponse = DescribeAutoScalingGroupsResponse
-    { _dasgrAutoScalingGroups = mempty
-    , _dasgrNextToken         = Nothing
+-- * 'dasgrsAutoScalingGroups'
+describeAutoScalingGroupsResponse
+    :: Int -- ^ 'dasgrsStatus'
+    -> DescribeAutoScalingGroupsResponse
+describeAutoScalingGroupsResponse pStatus_ =
+    DescribeAutoScalingGroupsResponse'
+    { _dasgrsNextToken = Nothing
+    , _dasgrsStatus = pStatus_
+    , _dasgrsAutoScalingGroups = mempty
     }
 
--- | The groups.
-dasgrAutoScalingGroups :: Lens' DescribeAutoScalingGroupsResponse [AutoScalingGroup]
-dasgrAutoScalingGroups =
-    lens _dasgrAutoScalingGroups (\s a -> s { _dasgrAutoScalingGroups = a })
-        . _List
-
 -- | The token to use when requesting the next set of items. If there are no
 -- additional items to return, the string is empty.
-dasgrNextToken :: Lens' DescribeAutoScalingGroupsResponse (Maybe Text)
-dasgrNextToken = lens _dasgrNextToken (\s a -> s { _dasgrNextToken = a })
-
-instance ToPath DescribeAutoScalingGroups where
-    toPath = const "/"
-
-instance ToQuery DescribeAutoScalingGroups where
-    toQuery DescribeAutoScalingGroups{..} = mconcat
-        [ "AutoScalingGroupNames" =? _dasgAutoScalingGroupNames
-        , "MaxRecords"            =? _dasgMaxRecords
-        , "NextToken"             =? _dasgNextToken
-        ]
-
-instance ToHeaders DescribeAutoScalingGroups
-
-instance AWSRequest DescribeAutoScalingGroups where
-    type Sv DescribeAutoScalingGroups = AutoScaling
-    type Rs DescribeAutoScalingGroups = DescribeAutoScalingGroupsResponse
-
-    request  = post "DescribeAutoScalingGroups"
-    response = xmlResponse
+dasgrsNextToken :: Lens' DescribeAutoScalingGroupsResponse (Maybe Text)
+dasgrsNextToken = lens _dasgrsNextToken (\ s a -> s{_dasgrsNextToken = a});
 
-instance FromXML DescribeAutoScalingGroupsResponse where
-    parseXML = withElement "DescribeAutoScalingGroupsResult" $ \x -> DescribeAutoScalingGroupsResponse
-        <$> x .@? "AutoScalingGroups" .!@ mempty
-        <*> x .@? "NextToken"
+-- | The response status code.
+dasgrsStatus :: Lens' DescribeAutoScalingGroupsResponse Int
+dasgrsStatus = lens _dasgrsStatus (\ s a -> s{_dasgrsStatus = a});
 
-instance AWSPager DescribeAutoScalingGroups where
-    page rq rs
-        | stop (rs ^. dasgrNextToken) = Nothing
-        | otherwise = (\x -> rq & dasgNextToken ?~ x)
-            <$> (rs ^. dasgrNextToken)
+-- | The groups.
+dasgrsAutoScalingGroups :: Lens' DescribeAutoScalingGroupsResponse [AutoScalingGroup]
+dasgrsAutoScalingGroups = lens _dasgrsAutoScalingGroups (\ s a -> s{_dasgrsAutoScalingGroups = a}) . _Coerce;
diff --git a/gen/Network/AWS/AutoScaling/DescribeAutoScalingInstances.hs b/gen/Network/AWS/AutoScaling/DescribeAutoScalingInstances.hs
--- a/gen/Network/AWS/AutoScaling/DescribeAutoScalingInstances.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeAutoScalingInstances.hs
@@ -1,156 +1,170 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.AutoScaling.DescribeAutoScalingInstances
--- 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 one or more Auto Scaling instances. If a list is not provided, the
--- call describes all instances.
+-- Describes one or more Auto Scaling instances. If a list is not provided,
+-- the call describes all instances.
 --
--- You can describe up to a maximum of 50 instances with a single call. By
--- default, a call returns up to 20 instances. If there are more items to
--- return, the call returns a token. To get the next set of items, repeat the
--- call with the returned token in the 'NextToken' parameter.
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeAutoScalingInstances.html AWS API Reference> for DescribeAutoScalingInstances.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeAutoScalingInstances.html>
+-- This operation returns paginated results.
 module Network.AWS.AutoScaling.DescribeAutoScalingInstances
     (
-    -- * Request
-      DescribeAutoScalingInstances
-    -- ** Request constructor
-    , describeAutoScalingInstances
-    -- ** Request lenses
+    -- * Creating a Request
+      describeAutoScalingInstances
+    , DescribeAutoScalingInstances
+    -- * Request Lenses
+    , dasiNextToken
     , dasiInstanceIds
     , dasiMaxRecords
-    , dasiNextToken
 
-    -- * Response
-    , DescribeAutoScalingInstancesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeAutoScalingInstancesResponse
-    -- ** Response lenses
-    , dasirAutoScalingInstances
-    , dasirNextToken
+    , DescribeAutoScalingInstancesResponse
+    -- * Response Lenses
+    , dasirsNextToken
+    , dasirsAutoScalingInstances
+    , dasirsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeAutoScalingInstances = DescribeAutoScalingInstances
-    { _dasiInstanceIds :: List "member" Text
-    , _dasiMaxRecords  :: Maybe Int
-    , _dasiNextToken   :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeAutoScalingInstances' smart constructor.
+data DescribeAutoScalingInstances = DescribeAutoScalingInstances'
+    { _dasiNextToken   :: !(Maybe Text)
+    , _dasiInstanceIds :: !(Maybe [Text])
+    , _dasiMaxRecords  :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeAutoScalingInstances' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeAutoScalingInstances' with the minimum fields required to make a request.
 --
--- * 'dasiInstanceIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dasiMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'dasiNextToken'
 --
--- * 'dasiNextToken' @::@ 'Maybe' 'Text'
+-- * 'dasiInstanceIds'
 --
-describeAutoScalingInstances :: DescribeAutoScalingInstances
-describeAutoScalingInstances = DescribeAutoScalingInstances
-    { _dasiInstanceIds = mempty
-    , _dasiMaxRecords  = Nothing
-    , _dasiNextToken   = Nothing
+-- * 'dasiMaxRecords'
+describeAutoScalingInstances
+    :: DescribeAutoScalingInstances
+describeAutoScalingInstances =
+    DescribeAutoScalingInstances'
+    { _dasiNextToken = Nothing
+    , _dasiInstanceIds = Nothing
+    , _dasiMaxRecords = Nothing
     }
 
--- | One or more Auto Scaling instances to describe, up to 50 instances. If you
--- omit this parameter, all Auto Scaling instances are described. If you specify
--- an ID that does not exist, it is ignored with no error.
+-- | The token for the next set of items to return. (You received this token
+-- from a previous call.)
+dasiNextToken :: Lens' DescribeAutoScalingInstances (Maybe Text)
+dasiNextToken = lens _dasiNextToken (\ s a -> s{_dasiNextToken = a});
+
+-- | One or more Auto Scaling instances to describe, up to 50 instances. If
+-- you omit this parameter, all Auto Scaling instances are described. If
+-- you specify an ID that does not exist, it is ignored with no error.
 dasiInstanceIds :: Lens' DescribeAutoScalingInstances [Text]
-dasiInstanceIds = lens _dasiInstanceIds (\s a -> s { _dasiInstanceIds = a }) . _List
+dasiInstanceIds = lens _dasiInstanceIds (\ s a -> s{_dasiInstanceIds = a}) . _Default . _Coerce;
 
 -- | The maximum number of items to return with this call.
 dasiMaxRecords :: Lens' DescribeAutoScalingInstances (Maybe Int)
-dasiMaxRecords = lens _dasiMaxRecords (\s a -> s { _dasiMaxRecords = a })
+dasiMaxRecords = lens _dasiMaxRecords (\ s a -> s{_dasiMaxRecords = a});
 
--- | The token for the next set of items to return. (You received this token from
--- a previous call.)
-dasiNextToken :: Lens' DescribeAutoScalingInstances (Maybe Text)
-dasiNextToken = lens _dasiNextToken (\s a -> s { _dasiNextToken = a })
+instance AWSPager DescribeAutoScalingInstances where
+        page rq rs
+          | stop (rs ^. dasirsNextToken) = Nothing
+          | stop (rs ^. dasirsAutoScalingInstances) = Nothing
+          | otherwise =
+            Just $ rq & dasiNextToken .~ rs ^. dasirsNextToken
 
-data DescribeAutoScalingInstancesResponse = DescribeAutoScalingInstancesResponse
-    { _dasirAutoScalingInstances :: List "member" AutoScalingInstanceDetails
-    , _dasirNextToken            :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance AWSRequest DescribeAutoScalingInstances
+         where
+        type Sv DescribeAutoScalingInstances = AutoScaling
+        type Rs DescribeAutoScalingInstances =
+             DescribeAutoScalingInstancesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeAutoScalingInstancesResult"
+              (\ s h x ->
+                 DescribeAutoScalingInstancesResponse' <$>
+                   (x .@? "NextToken") <*>
+                     (x .@? "AutoScalingInstances" .!@ mempty >>=
+                        may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
--- | 'DescribeAutoScalingInstancesResponse' constructor.
+instance ToHeaders DescribeAutoScalingInstances where
+        toHeaders = const mempty
+
+instance ToPath DescribeAutoScalingInstances where
+        toPath = const "/"
+
+instance ToQuery DescribeAutoScalingInstances where
+        toQuery DescribeAutoScalingInstances'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeAutoScalingInstances" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "NextToken" =: _dasiNextToken,
+               "InstanceIds" =:
+                 toQuery (toQueryList "member" <$> _dasiInstanceIds),
+               "MaxRecords" =: _dasiMaxRecords]
+
+-- | /See:/ 'describeAutoScalingInstancesResponse' smart constructor.
+data DescribeAutoScalingInstancesResponse = DescribeAutoScalingInstancesResponse'
+    { _dasirsNextToken            :: !(Maybe Text)
+    , _dasirsAutoScalingInstances :: !(Maybe [AutoScalingInstanceDetails])
+    , _dasirsStatus               :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeAutoScalingInstancesResponse' 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:
 --
--- * 'dasirAutoScalingInstances' @::@ ['AutoScalingInstanceDetails']
+-- * 'dasirsNextToken'
 --
--- * 'dasirNextToken' @::@ 'Maybe' 'Text'
+-- * 'dasirsAutoScalingInstances'
 --
-describeAutoScalingInstancesResponse :: DescribeAutoScalingInstancesResponse
-describeAutoScalingInstancesResponse = DescribeAutoScalingInstancesResponse
-    { _dasirAutoScalingInstances = mempty
-    , _dasirNextToken            = Nothing
+-- * 'dasirsStatus'
+describeAutoScalingInstancesResponse
+    :: Int -- ^ 'dasirsStatus'
+    -> DescribeAutoScalingInstancesResponse
+describeAutoScalingInstancesResponse pStatus_ =
+    DescribeAutoScalingInstancesResponse'
+    { _dasirsNextToken = Nothing
+    , _dasirsAutoScalingInstances = Nothing
+    , _dasirsStatus = pStatus_
     }
 
--- | The instances.
-dasirAutoScalingInstances :: Lens' DescribeAutoScalingInstancesResponse [AutoScalingInstanceDetails]
-dasirAutoScalingInstances =
-    lens _dasirAutoScalingInstances
-        (\s a -> s { _dasirAutoScalingInstances = a })
-            . _List
-
 -- | The token to use when requesting the next set of items. If there are no
 -- additional items to return, the string is empty.
-dasirNextToken :: Lens' DescribeAutoScalingInstancesResponse (Maybe Text)
-dasirNextToken = lens _dasirNextToken (\s a -> s { _dasirNextToken = a })
-
-instance ToPath DescribeAutoScalingInstances where
-    toPath = const "/"
-
-instance ToQuery DescribeAutoScalingInstances where
-    toQuery DescribeAutoScalingInstances{..} = mconcat
-        [ "InstanceIds" =? _dasiInstanceIds
-        , "MaxRecords"  =? _dasiMaxRecords
-        , "NextToken"   =? _dasiNextToken
-        ]
-
-instance ToHeaders DescribeAutoScalingInstances
-
-instance AWSRequest DescribeAutoScalingInstances where
-    type Sv DescribeAutoScalingInstances = AutoScaling
-    type Rs DescribeAutoScalingInstances = DescribeAutoScalingInstancesResponse
-
-    request  = post "DescribeAutoScalingInstances"
-    response = xmlResponse
+dasirsNextToken :: Lens' DescribeAutoScalingInstancesResponse (Maybe Text)
+dasirsNextToken = lens _dasirsNextToken (\ s a -> s{_dasirsNextToken = a});
 
-instance FromXML DescribeAutoScalingInstancesResponse where
-    parseXML = withElement "DescribeAutoScalingInstancesResult" $ \x -> DescribeAutoScalingInstancesResponse
-        <$> x .@? "AutoScalingInstances" .!@ mempty
-        <*> x .@? "NextToken"
+-- | The instances.
+dasirsAutoScalingInstances :: Lens' DescribeAutoScalingInstancesResponse [AutoScalingInstanceDetails]
+dasirsAutoScalingInstances = lens _dasirsAutoScalingInstances (\ s a -> s{_dasirsAutoScalingInstances = a}) . _Default . _Coerce;
 
-instance AWSPager DescribeAutoScalingInstances where
-    page rq rs
-        | stop (rs ^. dasirNextToken) = Nothing
-        | otherwise = (\x -> rq & dasiNextToken ?~ x)
-            <$> (rs ^. dasirNextToken)
+-- | The response status code.
+dasirsStatus :: Lens' DescribeAutoScalingInstancesResponse Int
+dasirsStatus = lens _dasirsStatus (\ s a -> s{_dasirsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DescribeAutoScalingNotificationTypes.hs b/gen/Network/AWS/AutoScaling/DescribeAutoScalingNotificationTypes.hs
--- a/gen/Network/AWS/AutoScaling/DescribeAutoScalingNotificationTypes.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeAutoScalingNotificationTypes.hs
@@ -1,112 +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.AutoScaling.DescribeAutoScalingNotificationTypes
--- 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.
-
--- | Lists the notification types that are supported by Auto Scaling.
+-- Describes the notification types that are supported by Auto Scaling.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeAutoScalingNotificationTypes.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeAutoScalingNotificationTypes.html AWS API Reference> for DescribeAutoScalingNotificationTypes.
 module Network.AWS.AutoScaling.DescribeAutoScalingNotificationTypes
     (
-    -- * Request
-      DescribeAutoScalingNotificationTypes
-    -- ** Request constructor
-    , describeAutoScalingNotificationTypes
+    -- * Creating a Request
+      describeAutoScalingNotificationTypes
+    , DescribeAutoScalingNotificationTypes
 
-    -- * Response
-    , DescribeAutoScalingNotificationTypesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeAutoScalingNotificationTypesResponse
-    -- ** Response lenses
-    , dasntrAutoScalingNotificationTypes
+    , DescribeAutoScalingNotificationTypesResponse
+    -- * Response Lenses
+    , dasntrsAutoScalingNotificationTypes
+    , dasntrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeAutoScalingNotificationTypes = DescribeAutoScalingNotificationTypes
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | /See:/ 'describeAutoScalingNotificationTypes' smart constructor.
+data DescribeAutoScalingNotificationTypes =
+    DescribeAutoScalingNotificationTypes'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeAutoScalingNotificationTypes' constructor.
-describeAutoScalingNotificationTypes :: DescribeAutoScalingNotificationTypes
-describeAutoScalingNotificationTypes = DescribeAutoScalingNotificationTypes
+-- | Creates a value of 'DescribeAutoScalingNotificationTypes' with the minimum fields required to make a request.
+--
+describeAutoScalingNotificationTypes
+    :: DescribeAutoScalingNotificationTypes
+describeAutoScalingNotificationTypes = DescribeAutoScalingNotificationTypes'
 
-newtype DescribeAutoScalingNotificationTypesResponse = DescribeAutoScalingNotificationTypesResponse
-    { _dasntrAutoScalingNotificationTypes :: List "member" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
+instance AWSRequest
+         DescribeAutoScalingNotificationTypes where
+        type Sv DescribeAutoScalingNotificationTypes =
+             AutoScaling
+        type Rs DescribeAutoScalingNotificationTypes =
+             DescribeAutoScalingNotificationTypesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeAutoScalingNotificationTypesResult"
+              (\ s h x ->
+                 DescribeAutoScalingNotificationTypesResponse' <$>
+                   (x .@? "AutoScalingNotificationTypes" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-instance GHC.Exts.IsList DescribeAutoScalingNotificationTypesResponse where
-    type Item DescribeAutoScalingNotificationTypesResponse = Text
+instance ToHeaders
+         DescribeAutoScalingNotificationTypes where
+        toHeaders = const mempty
 
-    fromList = DescribeAutoScalingNotificationTypesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dasntrAutoScalingNotificationTypes
+instance ToPath DescribeAutoScalingNotificationTypes
+         where
+        toPath = const "/"
 
--- | 'DescribeAutoScalingNotificationTypesResponse' constructor.
+instance ToQuery DescribeAutoScalingNotificationTypes
+         where
+        toQuery
+          = const
+              (mconcat
+                 ["Action" =:
+                    ("DescribeAutoScalingNotificationTypes" ::
+                       ByteString),
+                  "Version" =: ("2011-01-01" :: ByteString)])
+
+-- | /See:/ 'describeAutoScalingNotificationTypesResponse' smart constructor.
+data DescribeAutoScalingNotificationTypesResponse = DescribeAutoScalingNotificationTypesResponse'
+    { _dasntrsAutoScalingNotificationTypes :: !(Maybe [Text])
+    , _dasntrsStatus                       :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeAutoScalingNotificationTypesResponse' 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:
 --
--- * 'dasntrAutoScalingNotificationTypes' @::@ ['Text']
+-- * 'dasntrsAutoScalingNotificationTypes'
 --
-describeAutoScalingNotificationTypesResponse :: DescribeAutoScalingNotificationTypesResponse
-describeAutoScalingNotificationTypesResponse = DescribeAutoScalingNotificationTypesResponse
-    { _dasntrAutoScalingNotificationTypes = mempty
+-- * 'dasntrsStatus'
+describeAutoScalingNotificationTypesResponse
+    :: Int -- ^ 'dasntrsStatus'
+    -> DescribeAutoScalingNotificationTypesResponse
+describeAutoScalingNotificationTypesResponse pStatus_ =
+    DescribeAutoScalingNotificationTypesResponse'
+    { _dasntrsAutoScalingNotificationTypes = Nothing
+    , _dasntrsStatus = pStatus_
     }
 
 -- | One or more of the following notification types:
 --
--- 'autoscaling:EC2_INSTANCE_LAUNCH'
---
--- 'autoscaling:EC2_INSTANCE_LAUNCH_ERROR'
+-- -   'autoscaling:EC2_INSTANCE_LAUNCH'
 --
--- 'autoscaling:EC2_INSTANCE_TERMINATE'
+-- -   'autoscaling:EC2_INSTANCE_LAUNCH_ERROR'
 --
--- 'autoscaling:EC2_INSTANCE_TERMINATE_ERROR'
+-- -   'autoscaling:EC2_INSTANCE_TERMINATE'
 --
--- 'autoscaling:TEST_NOTIFICATION'
+-- -   'autoscaling:EC2_INSTANCE_TERMINATE_ERROR'
 --
+-- -   'autoscaling:TEST_NOTIFICATION'
 --
-dasntrAutoScalingNotificationTypes :: Lens' DescribeAutoScalingNotificationTypesResponse [Text]
-dasntrAutoScalingNotificationTypes =
-    lens _dasntrAutoScalingNotificationTypes
-        (\s a -> s { _dasntrAutoScalingNotificationTypes = a })
-            . _List
-
-instance ToPath DescribeAutoScalingNotificationTypes where
-    toPath = const "/"
-
-instance ToQuery DescribeAutoScalingNotificationTypes where
-    toQuery = const mempty
-
-instance ToHeaders DescribeAutoScalingNotificationTypes
-
-instance AWSRequest DescribeAutoScalingNotificationTypes where
-    type Sv DescribeAutoScalingNotificationTypes = AutoScaling
-    type Rs DescribeAutoScalingNotificationTypes = DescribeAutoScalingNotificationTypesResponse
-
-    request  = post "DescribeAutoScalingNotificationTypes"
-    response = xmlResponse
+dasntrsAutoScalingNotificationTypes :: Lens' DescribeAutoScalingNotificationTypesResponse [Text]
+dasntrsAutoScalingNotificationTypes = lens _dasntrsAutoScalingNotificationTypes (\ s a -> s{_dasntrsAutoScalingNotificationTypes = a}) . _Default . _Coerce;
 
-instance FromXML DescribeAutoScalingNotificationTypesResponse where
-    parseXML = withElement "DescribeAutoScalingNotificationTypesResult" $ \x -> DescribeAutoScalingNotificationTypesResponse
-        <$> x .@? "AutoScalingNotificationTypes" .!@ mempty
+-- | The response status code.
+dasntrsStatus :: Lens' DescribeAutoScalingNotificationTypesResponse Int
+dasntrsStatus = lens _dasntrsStatus (\ s a -> s{_dasntrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DescribeLaunchConfigurations.hs b/gen/Network/AWS/AutoScaling/DescribeLaunchConfigurations.hs
--- a/gen/Network/AWS/AutoScaling/DescribeLaunchConfigurations.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeLaunchConfigurations.hs
@@ -1,157 +1,170 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.AutoScaling.DescribeLaunchConfigurations
--- 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 one or more launch configurations. If you omit the list of names,
--- then the call describes all launch configurations.
+-- Describes one or more launch configurations. If you omit the list of
+-- names, then the call describes all launch configurations.
 --
--- You can specify a maximum number of items to be returned with a single call.
--- If there are more items to return, the call returns a token. To get the next
--- set of items, repeat the call with the returned token in the 'NextToken'
--- parameter.
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeLaunchConfigurations.html AWS API Reference> for DescribeLaunchConfigurations.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeLaunchConfigurations.html>
+-- This operation returns paginated results.
 module Network.AWS.AutoScaling.DescribeLaunchConfigurations
     (
-    -- * Request
-      DescribeLaunchConfigurations
-    -- ** Request constructor
-    , describeLaunchConfigurations
-    -- ** Request lenses
+    -- * Creating a Request
+      describeLaunchConfigurations
+    , DescribeLaunchConfigurations
+    -- * Request Lenses
     , dlcLaunchConfigurationNames
-    , dlcMaxRecords
     , dlcNextToken
+    , dlcMaxRecords
 
-    -- * Response
-    , DescribeLaunchConfigurationsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeLaunchConfigurationsResponse
-    -- ** Response lenses
-    , dlcrLaunchConfigurations
-    , dlcrNextToken
+    , DescribeLaunchConfigurationsResponse
+    -- * Response Lenses
+    , dlcrsNextToken
+    , dlcrsStatus
+    , dlcrsLaunchConfigurations
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeLaunchConfigurations = DescribeLaunchConfigurations
-    { _dlcLaunchConfigurationNames :: List "member" Text
-    , _dlcMaxRecords               :: Maybe Int
-    , _dlcNextToken                :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeLaunchConfigurations' smart constructor.
+data DescribeLaunchConfigurations = DescribeLaunchConfigurations'
+    { _dlcLaunchConfigurationNames :: !(Maybe [Text])
+    , _dlcNextToken                :: !(Maybe Text)
+    , _dlcMaxRecords               :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeLaunchConfigurations' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeLaunchConfigurations' with the minimum fields required to make a request.
 --
--- * 'dlcLaunchConfigurationNames' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dlcMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'dlcLaunchConfigurationNames'
 --
--- * 'dlcNextToken' @::@ 'Maybe' 'Text'
+-- * 'dlcNextToken'
 --
-describeLaunchConfigurations :: DescribeLaunchConfigurations
-describeLaunchConfigurations = DescribeLaunchConfigurations
-    { _dlcLaunchConfigurationNames = mempty
-    , _dlcNextToken                = Nothing
-    , _dlcMaxRecords               = Nothing
+-- * 'dlcMaxRecords'
+describeLaunchConfigurations
+    :: DescribeLaunchConfigurations
+describeLaunchConfigurations =
+    DescribeLaunchConfigurations'
+    { _dlcLaunchConfigurationNames = Nothing
+    , _dlcNextToken = Nothing
+    , _dlcMaxRecords = Nothing
     }
 
 -- | The launch configuration names.
 dlcLaunchConfigurationNames :: Lens' DescribeLaunchConfigurations [Text]
-dlcLaunchConfigurationNames =
-    lens _dlcLaunchConfigurationNames
-        (\s a -> s { _dlcLaunchConfigurationNames = a })
-            . _List
-
--- | The maximum number of items to return with this call. The default is 100.
-dlcMaxRecords :: Lens' DescribeLaunchConfigurations (Maybe Int)
-dlcMaxRecords = lens _dlcMaxRecords (\s a -> s { _dlcMaxRecords = a })
+dlcLaunchConfigurationNames = lens _dlcLaunchConfigurationNames (\ s a -> s{_dlcLaunchConfigurationNames = a}) . _Default . _Coerce;
 
--- | The token for the next set of items to return. (You received this token from
--- a previous call.)
+-- | The token for the next set of items to return. (You received this token
+-- from a previous call.)
 dlcNextToken :: Lens' DescribeLaunchConfigurations (Maybe Text)
-dlcNextToken = lens _dlcNextToken (\s a -> s { _dlcNextToken = a })
+dlcNextToken = lens _dlcNextToken (\ s a -> s{_dlcNextToken = a});
 
-data DescribeLaunchConfigurationsResponse = DescribeLaunchConfigurationsResponse
-    { _dlcrLaunchConfigurations :: List "member" LaunchConfiguration
-    , _dlcrNextToken            :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | The maximum number of items to return with this call. The default is
+-- 100.
+dlcMaxRecords :: Lens' DescribeLaunchConfigurations (Maybe Int)
+dlcMaxRecords = lens _dlcMaxRecords (\ s a -> s{_dlcMaxRecords = a});
 
--- | 'DescribeLaunchConfigurationsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dlcrLaunchConfigurations' @::@ ['LaunchConfiguration']
---
--- * 'dlcrNextToken' @::@ 'Maybe' 'Text'
---
-describeLaunchConfigurationsResponse :: DescribeLaunchConfigurationsResponse
-describeLaunchConfigurationsResponse = DescribeLaunchConfigurationsResponse
-    { _dlcrLaunchConfigurations = mempty
-    , _dlcrNextToken            = Nothing
-    }
+instance AWSPager DescribeLaunchConfigurations where
+        page rq rs
+          | stop (rs ^. dlcrsNextToken) = Nothing
+          | stop (rs ^. dlcrsLaunchConfigurations) = Nothing
+          | otherwise =
+            Just $ rq & dlcNextToken .~ rs ^. dlcrsNextToken
 
--- | The launch configurations.
-dlcrLaunchConfigurations :: Lens' DescribeLaunchConfigurationsResponse [LaunchConfiguration]
-dlcrLaunchConfigurations =
-    lens _dlcrLaunchConfigurations
-        (\s a -> s { _dlcrLaunchConfigurations = a })
-            . _List
+instance AWSRequest DescribeLaunchConfigurations
+         where
+        type Sv DescribeLaunchConfigurations = AutoScaling
+        type Rs DescribeLaunchConfigurations =
+             DescribeLaunchConfigurationsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeLaunchConfigurationsResult"
+              (\ s h x ->
+                 DescribeLaunchConfigurationsResponse' <$>
+                   (x .@? "NextToken") <*> (pure (fromEnum s)) <*>
+                     (x .@? "LaunchConfigurations" .!@ mempty >>=
+                        parseXMLList "member"))
 
--- | The token to use when requesting the next set of items. If there are no
--- additional items to return, the string is empty.
-dlcrNextToken :: Lens' DescribeLaunchConfigurationsResponse (Maybe Text)
-dlcrNextToken = lens _dlcrNextToken (\s a -> s { _dlcrNextToken = a })
+instance ToHeaders DescribeLaunchConfigurations where
+        toHeaders = const mempty
 
 instance ToPath DescribeLaunchConfigurations where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeLaunchConfigurations where
-    toQuery DescribeLaunchConfigurations{..} = mconcat
-        [ "LaunchConfigurationNames" =? _dlcLaunchConfigurationNames
-        , "MaxRecords"               =? _dlcMaxRecords
-        , "NextToken"                =? _dlcNextToken
-        ]
+        toQuery DescribeLaunchConfigurations'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeLaunchConfigurations" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "LaunchConfigurationNames" =:
+                 toQuery
+                   (toQueryList "member" <$>
+                      _dlcLaunchConfigurationNames),
+               "NextToken" =: _dlcNextToken,
+               "MaxRecords" =: _dlcMaxRecords]
 
-instance ToHeaders DescribeLaunchConfigurations
+-- | /See:/ 'describeLaunchConfigurationsResponse' smart constructor.
+data DescribeLaunchConfigurationsResponse = DescribeLaunchConfigurationsResponse'
+    { _dlcrsNextToken            :: !(Maybe Text)
+    , _dlcrsStatus               :: !Int
+    , _dlcrsLaunchConfigurations :: ![LaunchConfiguration]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeLaunchConfigurations where
-    type Sv DescribeLaunchConfigurations = AutoScaling
-    type Rs DescribeLaunchConfigurations = DescribeLaunchConfigurationsResponse
+-- | Creates a value of 'DescribeLaunchConfigurationsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlcrsNextToken'
+--
+-- * 'dlcrsStatus'
+--
+-- * 'dlcrsLaunchConfigurations'
+describeLaunchConfigurationsResponse
+    :: Int -- ^ 'dlcrsStatus'
+    -> DescribeLaunchConfigurationsResponse
+describeLaunchConfigurationsResponse pStatus_ =
+    DescribeLaunchConfigurationsResponse'
+    { _dlcrsNextToken = Nothing
+    , _dlcrsStatus = pStatus_
+    , _dlcrsLaunchConfigurations = mempty
+    }
 
-    request  = post "DescribeLaunchConfigurations"
-    response = xmlResponse
+-- | The token to use when requesting the next set of items. If there are no
+-- additional items to return, the string is empty.
+dlcrsNextToken :: Lens' DescribeLaunchConfigurationsResponse (Maybe Text)
+dlcrsNextToken = lens _dlcrsNextToken (\ s a -> s{_dlcrsNextToken = a});
 
-instance FromXML DescribeLaunchConfigurationsResponse where
-    parseXML = withElement "DescribeLaunchConfigurationsResult" $ \x -> DescribeLaunchConfigurationsResponse
-        <$> x .@? "LaunchConfigurations" .!@ mempty
-        <*> x .@? "NextToken"
+-- | The response status code.
+dlcrsStatus :: Lens' DescribeLaunchConfigurationsResponse Int
+dlcrsStatus = lens _dlcrsStatus (\ s a -> s{_dlcrsStatus = a});
 
-instance AWSPager DescribeLaunchConfigurations where
-    page rq rs
-        | stop (rs ^. dlcrNextToken) = Nothing
-        | otherwise = (\x -> rq & dlcNextToken ?~ x)
-            <$> (rs ^. dlcrNextToken)
+-- | The launch configurations.
+dlcrsLaunchConfigurations :: Lens' DescribeLaunchConfigurationsResponse [LaunchConfiguration]
+dlcrsLaunchConfigurations = lens _dlcrsLaunchConfigurations (\ s a -> s{_dlcrsLaunchConfigurations = a}) . _Coerce;
diff --git a/gen/Network/AWS/AutoScaling/DescribeLifecycleHookTypes.hs b/gen/Network/AWS/AutoScaling/DescribeLifecycleHookTypes.hs
--- a/gen/Network/AWS/AutoScaling/DescribeLifecycleHookTypes.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeLifecycleHookTypes.hs
@@ -1,105 +1,116 @@
-{-# 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.AutoScaling.DescribeLifecycleHookTypes
--- 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 available types of lifecycle hooks.
+-- Describes the available types of lifecycle hooks.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeLifecycleHookTypes.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeLifecycleHookTypes.html AWS API Reference> for DescribeLifecycleHookTypes.
 module Network.AWS.AutoScaling.DescribeLifecycleHookTypes
     (
-    -- * Request
-      DescribeLifecycleHookTypes
-    -- ** Request constructor
-    , describeLifecycleHookTypes
+    -- * Creating a Request
+      describeLifecycleHookTypes
+    , DescribeLifecycleHookTypes
 
-    -- * Response
-    , DescribeLifecycleHookTypesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeLifecycleHookTypesResponse
-    -- ** Response lenses
-    , dlhtrLifecycleHookTypes
+    , DescribeLifecycleHookTypesResponse
+    -- * Response Lenses
+    , dlhtrsLifecycleHookTypes
+    , dlhtrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeLifecycleHookTypes = DescribeLifecycleHookTypes
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | /See:/ 'describeLifecycleHookTypes' smart constructor.
+data DescribeLifecycleHookTypes =
+    DescribeLifecycleHookTypes'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeLifecycleHookTypes' constructor.
-describeLifecycleHookTypes :: DescribeLifecycleHookTypes
-describeLifecycleHookTypes = DescribeLifecycleHookTypes
+-- | Creates a value of 'DescribeLifecycleHookTypes' with the minimum fields required to make a request.
+--
+describeLifecycleHookTypes
+    :: DescribeLifecycleHookTypes
+describeLifecycleHookTypes = DescribeLifecycleHookTypes'
 
-newtype DescribeLifecycleHookTypesResponse = DescribeLifecycleHookTypesResponse
-    { _dlhtrLifecycleHookTypes :: List "member" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
+instance AWSRequest DescribeLifecycleHookTypes where
+        type Sv DescribeLifecycleHookTypes = AutoScaling
+        type Rs DescribeLifecycleHookTypes =
+             DescribeLifecycleHookTypesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeLifecycleHookTypesResult"
+              (\ s h x ->
+                 DescribeLifecycleHookTypesResponse' <$>
+                   (x .@? "LifecycleHookTypes" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-instance GHC.Exts.IsList DescribeLifecycleHookTypesResponse where
-    type Item DescribeLifecycleHookTypesResponse = Text
+instance ToHeaders DescribeLifecycleHookTypes where
+        toHeaders = const mempty
 
-    fromList = DescribeLifecycleHookTypesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dlhtrLifecycleHookTypes
+instance ToPath DescribeLifecycleHookTypes where
+        toPath = const "/"
 
--- | 'DescribeLifecycleHookTypesResponse' constructor.
+instance ToQuery DescribeLifecycleHookTypes where
+        toQuery
+          = const
+              (mconcat
+                 ["Action" =:
+                    ("DescribeLifecycleHookTypes" :: ByteString),
+                  "Version" =: ("2011-01-01" :: ByteString)])
+
+-- | /See:/ 'describeLifecycleHookTypesResponse' smart constructor.
+data DescribeLifecycleHookTypesResponse = DescribeLifecycleHookTypesResponse'
+    { _dlhtrsLifecycleHookTypes :: !(Maybe [Text])
+    , _dlhtrsStatus             :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeLifecycleHookTypesResponse' 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:
 --
--- * 'dlhtrLifecycleHookTypes' @::@ ['Text']
+-- * 'dlhtrsLifecycleHookTypes'
 --
-describeLifecycleHookTypesResponse :: DescribeLifecycleHookTypesResponse
-describeLifecycleHookTypesResponse = DescribeLifecycleHookTypesResponse
-    { _dlhtrLifecycleHookTypes = mempty
+-- * 'dlhtrsStatus'
+describeLifecycleHookTypesResponse
+    :: Int -- ^ 'dlhtrsStatus'
+    -> DescribeLifecycleHookTypesResponse
+describeLifecycleHookTypesResponse pStatus_ =
+    DescribeLifecycleHookTypesResponse'
+    { _dlhtrsLifecycleHookTypes = Nothing
+    , _dlhtrsStatus = pStatus_
     }
 
 -- | One or more of the following notification types:
 --
--- 'autoscaling:EC2_INSTANCE_LAUNCHING'
---
--- 'autoscaling:EC2_INSTANCE_TERMINATING'
+-- -   'autoscaling:EC2_INSTANCE_LAUNCHING'
 --
+-- -   'autoscaling:EC2_INSTANCE_TERMINATING'
 --
-dlhtrLifecycleHookTypes :: Lens' DescribeLifecycleHookTypesResponse [Text]
-dlhtrLifecycleHookTypes =
-    lens _dlhtrLifecycleHookTypes (\s a -> s { _dlhtrLifecycleHookTypes = a })
-        . _List
-
-instance ToPath DescribeLifecycleHookTypes where
-    toPath = const "/"
-
-instance ToQuery DescribeLifecycleHookTypes where
-    toQuery = const mempty
-
-instance ToHeaders DescribeLifecycleHookTypes
-
-instance AWSRequest DescribeLifecycleHookTypes where
-    type Sv DescribeLifecycleHookTypes = AutoScaling
-    type Rs DescribeLifecycleHookTypes = DescribeLifecycleHookTypesResponse
-
-    request  = post "DescribeLifecycleHookTypes"
-    response = xmlResponse
+dlhtrsLifecycleHookTypes :: Lens' DescribeLifecycleHookTypesResponse [Text]
+dlhtrsLifecycleHookTypes = lens _dlhtrsLifecycleHookTypes (\ s a -> s{_dlhtrsLifecycleHookTypes = a}) . _Default . _Coerce;
 
-instance FromXML DescribeLifecycleHookTypesResponse where
-    parseXML = withElement "DescribeLifecycleHookTypesResult" $ \x -> DescribeLifecycleHookTypesResponse
-        <$> x .@? "LifecycleHookTypes" .!@ mempty
+-- | The response status code.
+dlhtrsStatus :: Lens' DescribeLifecycleHookTypesResponse Int
+dlhtrsStatus = lens _dlhtrsStatus (\ s a -> s{_dlhtrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DescribeLifecycleHooks.hs b/gen/Network/AWS/AutoScaling/DescribeLifecycleHooks.hs
--- a/gen/Network/AWS/AutoScaling/DescribeLifecycleHooks.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeLifecycleHooks.hs
@@ -1,129 +1,135 @@
-{-# 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.AutoScaling.DescribeLifecycleHooks
--- 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 lifecycle hooks for the specified Auto Scaling group.
+-- Describes the lifecycle hooks for the specified Auto Scaling group.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeLifecycleHooks.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeLifecycleHooks.html AWS API Reference> for DescribeLifecycleHooks.
 module Network.AWS.AutoScaling.DescribeLifecycleHooks
     (
-    -- * Request
-      DescribeLifecycleHooks
-    -- ** Request constructor
-    , describeLifecycleHooks
-    -- ** Request lenses
-    , dlhAutoScalingGroupName
+    -- * Creating a Request
+      describeLifecycleHooks
+    , DescribeLifecycleHooks
+    -- * Request Lenses
     , dlhLifecycleHookNames
+    , dlhAutoScalingGroupName
 
-    -- * Response
-    , DescribeLifecycleHooksResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeLifecycleHooksResponse
-    -- ** Response lenses
-    , dlhrLifecycleHooks
+    , DescribeLifecycleHooksResponse
+    -- * Response Lenses
+    , dlhrsLifecycleHooks
+    , dlhrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeLifecycleHooks = DescribeLifecycleHooks
-    { _dlhAutoScalingGroupName :: Text
-    , _dlhLifecycleHookNames   :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeLifecycleHooks' smart constructor.
+data DescribeLifecycleHooks = DescribeLifecycleHooks'
+    { _dlhLifecycleHookNames   :: !(Maybe [Text])
+    , _dlhAutoScalingGroupName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeLifecycleHooks' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeLifecycleHooks' with the minimum fields required to make a request.
 --
--- * 'dlhAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dlhLifecycleHookNames' @::@ ['Text']
+-- * 'dlhLifecycleHookNames'
 --
-describeLifecycleHooks :: Text -- ^ 'dlhAutoScalingGroupName'
-                       -> DescribeLifecycleHooks
-describeLifecycleHooks p1 = DescribeLifecycleHooks
-    { _dlhAutoScalingGroupName = p1
-    , _dlhLifecycleHookNames   = mempty
+-- * 'dlhAutoScalingGroupName'
+describeLifecycleHooks
+    :: Text -- ^ 'dlhAutoScalingGroupName'
+    -> DescribeLifecycleHooks
+describeLifecycleHooks pAutoScalingGroupName_ =
+    DescribeLifecycleHooks'
+    { _dlhLifecycleHookNames = Nothing
+    , _dlhAutoScalingGroupName = pAutoScalingGroupName_
     }
 
+-- | The names of one or more lifecycle hooks.
+dlhLifecycleHookNames :: Lens' DescribeLifecycleHooks [Text]
+dlhLifecycleHookNames = lens _dlhLifecycleHookNames (\ s a -> s{_dlhLifecycleHookNames = a}) . _Default . _Coerce;
+
 -- | The name of the group.
 dlhAutoScalingGroupName :: Lens' DescribeLifecycleHooks Text
-dlhAutoScalingGroupName =
-    lens _dlhAutoScalingGroupName (\s a -> s { _dlhAutoScalingGroupName = a })
+dlhAutoScalingGroupName = lens _dlhAutoScalingGroupName (\ s a -> s{_dlhAutoScalingGroupName = a});
 
--- | The names of one or more lifecycle hooks.
-dlhLifecycleHookNames :: Lens' DescribeLifecycleHooks [Text]
-dlhLifecycleHookNames =
-    lens _dlhLifecycleHookNames (\s a -> s { _dlhLifecycleHookNames = a })
-        . _List
+instance AWSRequest DescribeLifecycleHooks where
+        type Sv DescribeLifecycleHooks = AutoScaling
+        type Rs DescribeLifecycleHooks =
+             DescribeLifecycleHooksResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeLifecycleHooksResult"
+              (\ s h x ->
+                 DescribeLifecycleHooksResponse' <$>
+                   (x .@? "LifecycleHooks" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-newtype DescribeLifecycleHooksResponse = DescribeLifecycleHooksResponse
-    { _dlhrLifecycleHooks :: List "member" LifecycleHook
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance ToHeaders DescribeLifecycleHooks where
+        toHeaders = const mempty
 
-instance GHC.Exts.IsList DescribeLifecycleHooksResponse where
-    type Item DescribeLifecycleHooksResponse = LifecycleHook
+instance ToPath DescribeLifecycleHooks where
+        toPath = const "/"
 
-    fromList = DescribeLifecycleHooksResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dlhrLifecycleHooks
+instance ToQuery DescribeLifecycleHooks where
+        toQuery DescribeLifecycleHooks'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeLifecycleHooks" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "LifecycleHookNames" =:
+                 toQuery
+                   (toQueryList "member" <$> _dlhLifecycleHookNames),
+               "AutoScalingGroupName" =: _dlhAutoScalingGroupName]
 
--- | 'DescribeLifecycleHooksResponse' constructor.
+-- | /See:/ 'describeLifecycleHooksResponse' smart constructor.
+data DescribeLifecycleHooksResponse = DescribeLifecycleHooksResponse'
+    { _dlhrsLifecycleHooks :: !(Maybe [LifecycleHook])
+    , _dlhrsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeLifecycleHooksResponse' 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:
 --
--- * 'dlhrLifecycleHooks' @::@ ['LifecycleHook']
+-- * 'dlhrsLifecycleHooks'
 --
-describeLifecycleHooksResponse :: DescribeLifecycleHooksResponse
-describeLifecycleHooksResponse = DescribeLifecycleHooksResponse
-    { _dlhrLifecycleHooks = mempty
+-- * 'dlhrsStatus'
+describeLifecycleHooksResponse
+    :: Int -- ^ 'dlhrsStatus'
+    -> DescribeLifecycleHooksResponse
+describeLifecycleHooksResponse pStatus_ =
+    DescribeLifecycleHooksResponse'
+    { _dlhrsLifecycleHooks = Nothing
+    , _dlhrsStatus = pStatus_
     }
 
 -- | The lifecycle hooks for the specified group.
-dlhrLifecycleHooks :: Lens' DescribeLifecycleHooksResponse [LifecycleHook]
-dlhrLifecycleHooks =
-    lens _dlhrLifecycleHooks (\s a -> s { _dlhrLifecycleHooks = a })
-        . _List
-
-instance ToPath DescribeLifecycleHooks where
-    toPath = const "/"
-
-instance ToQuery DescribeLifecycleHooks where
-    toQuery DescribeLifecycleHooks{..} = mconcat
-        [ "AutoScalingGroupName" =? _dlhAutoScalingGroupName
-        , "LifecycleHookNames"   =? _dlhLifecycleHookNames
-        ]
-
-instance ToHeaders DescribeLifecycleHooks
-
-instance AWSRequest DescribeLifecycleHooks where
-    type Sv DescribeLifecycleHooks = AutoScaling
-    type Rs DescribeLifecycleHooks = DescribeLifecycleHooksResponse
-
-    request  = post "DescribeLifecycleHooks"
-    response = xmlResponse
+dlhrsLifecycleHooks :: Lens' DescribeLifecycleHooksResponse [LifecycleHook]
+dlhrsLifecycleHooks = lens _dlhrsLifecycleHooks (\ s a -> s{_dlhrsLifecycleHooks = a}) . _Default . _Coerce;
 
-instance FromXML DescribeLifecycleHooksResponse where
-    parseXML = withElement "DescribeLifecycleHooksResult" $ \x -> DescribeLifecycleHooksResponse
-        <$> x .@? "LifecycleHooks" .!@ mempty
+-- | The response status code.
+dlhrsStatus :: Lens' DescribeLifecycleHooksResponse Int
+dlhrsStatus = lens _dlhrsStatus (\ s a -> s{_dlhrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DescribeLoadBalancers.hs b/gen/Network/AWS/AutoScaling/DescribeLoadBalancers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AutoScaling/DescribeLoadBalancers.hs
@@ -0,0 +1,154 @@
+{-# 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.AutoScaling.DescribeLoadBalancers
+-- 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)
+--
+-- Describes the load balancers for the specified Auto Scaling group.
+--
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeLoadBalancers.html AWS API Reference> for DescribeLoadBalancers.
+module Network.AWS.AutoScaling.DescribeLoadBalancers
+    (
+    -- * Creating a Request
+      describeLoadBalancers
+    , DescribeLoadBalancers
+    -- * Request Lenses
+    , dlbNextToken
+    , dlbMaxRecords
+    , dlbAutoScalingGroupName
+
+    -- * Destructuring the Response
+    , describeLoadBalancersResponse
+    , DescribeLoadBalancersResponse
+    -- * Response Lenses
+    , dlbrsLoadBalancers
+    , dlbrsNextToken
+    , dlbrsStatus
+    ) where
+
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeLoadBalancers' smart constructor.
+data DescribeLoadBalancers = DescribeLoadBalancers'
+    { _dlbNextToken            :: !(Maybe Text)
+    , _dlbMaxRecords           :: !(Maybe Int)
+    , _dlbAutoScalingGroupName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeLoadBalancers' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlbNextToken'
+--
+-- * 'dlbMaxRecords'
+--
+-- * 'dlbAutoScalingGroupName'
+describeLoadBalancers
+    :: Text -- ^ 'dlbAutoScalingGroupName'
+    -> DescribeLoadBalancers
+describeLoadBalancers pAutoScalingGroupName_ =
+    DescribeLoadBalancers'
+    { _dlbNextToken = Nothing
+    , _dlbMaxRecords = Nothing
+    , _dlbAutoScalingGroupName = pAutoScalingGroupName_
+    }
+
+-- | The token for the next set of items to return. (You received this token
+-- from a previous call.)
+dlbNextToken :: Lens' DescribeLoadBalancers (Maybe Text)
+dlbNextToken = lens _dlbNextToken (\ s a -> s{_dlbNextToken = a});
+
+-- | The maximum number of items to return with this call.
+dlbMaxRecords :: Lens' DescribeLoadBalancers (Maybe Int)
+dlbMaxRecords = lens _dlbMaxRecords (\ s a -> s{_dlbMaxRecords = a});
+
+-- | The name of the group.
+dlbAutoScalingGroupName :: Lens' DescribeLoadBalancers Text
+dlbAutoScalingGroupName = lens _dlbAutoScalingGroupName (\ s a -> s{_dlbAutoScalingGroupName = a});
+
+instance AWSRequest DescribeLoadBalancers where
+        type Sv DescribeLoadBalancers = AutoScaling
+        type Rs DescribeLoadBalancers =
+             DescribeLoadBalancersResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeLoadBalancersResult"
+              (\ s h x ->
+                 DescribeLoadBalancersResponse' <$>
+                   (x .@? "LoadBalancers" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (x .@? "NextToken")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeLoadBalancers where
+        toHeaders = const mempty
+
+instance ToPath DescribeLoadBalancers where
+        toPath = const "/"
+
+instance ToQuery DescribeLoadBalancers where
+        toQuery DescribeLoadBalancers'{..}
+          = mconcat
+              ["Action" =: ("DescribeLoadBalancers" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "NextToken" =: _dlbNextToken,
+               "MaxRecords" =: _dlbMaxRecords,
+               "AutoScalingGroupName" =: _dlbAutoScalingGroupName]
+
+-- | /See:/ 'describeLoadBalancersResponse' smart constructor.
+data DescribeLoadBalancersResponse = DescribeLoadBalancersResponse'
+    { _dlbrsLoadBalancers :: !(Maybe [LoadBalancerState])
+    , _dlbrsNextToken     :: !(Maybe Text)
+    , _dlbrsStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | 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:
+--
+-- * 'dlbrsLoadBalancers'
+--
+-- * 'dlbrsNextToken'
+--
+-- * 'dlbrsStatus'
+describeLoadBalancersResponse
+    :: Int -- ^ 'dlbrsStatus'
+    -> DescribeLoadBalancersResponse
+describeLoadBalancersResponse pStatus_ =
+    DescribeLoadBalancersResponse'
+    { _dlbrsLoadBalancers = Nothing
+    , _dlbrsNextToken = Nothing
+    , _dlbrsStatus = pStatus_
+    }
+
+-- | The load balancers.
+dlbrsLoadBalancers :: Lens' DescribeLoadBalancersResponse [LoadBalancerState]
+dlbrsLoadBalancers = lens _dlbrsLoadBalancers (\ s a -> s{_dlbrsLoadBalancers = a}) . _Default . _Coerce;
+
+-- | The token to use when requesting the next set of items. If there are no
+-- additional items to return, the string is empty.
+dlbrsNextToken :: Lens' DescribeLoadBalancersResponse (Maybe Text)
+dlbrsNextToken = lens _dlbrsNextToken (\ s a -> s{_dlbrsNextToken = a});
+
+-- | The response status code.
+dlbrsStatus :: Lens' DescribeLoadBalancersResponse Int
+dlbrsStatus = lens _dlbrsStatus (\ s a -> s{_dlbrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DescribeMetricCollectionTypes.hs b/gen/Network/AWS/AutoScaling/DescribeMetricCollectionTypes.hs
--- a/gen/Network/AWS/AutoScaling/DescribeMetricCollectionTypes.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeMetricCollectionTypes.hs
@@ -1,130 +1,129 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.AutoScaling.DescribeMetricCollectionTypes
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns a list of metrics and a corresponding list of granularities for each
--- metric.
---
--- The 'GroupStandbyInstances' metric is not returned by default. You must
--- explicitly request it when calling 'EnableMetricsCollection'.
---
+-- Describes the available CloudWatch metrics for Auto Scaling.
 --
+-- Note that the 'GroupStandbyInstances' metric is not returned by default.
+-- You must explicitly request this metric when calling
+-- EnableMetricsCollection.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeMetricCollectionTypes.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeMetricCollectionTypes.html AWS API Reference> for DescribeMetricCollectionTypes.
 module Network.AWS.AutoScaling.DescribeMetricCollectionTypes
     (
-    -- * Request
-      DescribeMetricCollectionTypes
-    -- ** Request constructor
-    , describeMetricCollectionTypes
+    -- * Creating a Request
+      describeMetricCollectionTypes
+    , DescribeMetricCollectionTypes
 
-    -- * Response
-    , DescribeMetricCollectionTypesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeMetricCollectionTypesResponse
-    -- ** Response lenses
-    , dmctrGranularities
-    , dmctrMetrics
+    , DescribeMetricCollectionTypesResponse
+    -- * Response Lenses
+    , dmctrsMetrics
+    , dmctrsGranularities
+    , dmctrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
-
-data DescribeMetricCollectionTypes = DescribeMetricCollectionTypes
-    deriving (Eq, Ord, Read, Show, Generic)
-
--- | 'DescribeMetricCollectionTypes' constructor.
-describeMetricCollectionTypes :: DescribeMetricCollectionTypes
-describeMetricCollectionTypes = DescribeMetricCollectionTypes
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeMetricCollectionTypesResponse = DescribeMetricCollectionTypesResponse
-    { _dmctrGranularities :: List "member" MetricGranularityType
-    , _dmctrMetrics       :: List "member" MetricCollectionType
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'describeMetricCollectionTypes' smart constructor.
+data DescribeMetricCollectionTypes =
+    DescribeMetricCollectionTypes'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeMetricCollectionTypesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dmctrGranularities' @::@ ['MetricGranularityType']
---
--- * 'dmctrMetrics' @::@ ['MetricCollectionType']
+-- | Creates a value of 'DescribeMetricCollectionTypes' with the minimum fields required to make a request.
 --
-describeMetricCollectionTypesResponse :: DescribeMetricCollectionTypesResponse
-describeMetricCollectionTypesResponse = DescribeMetricCollectionTypesResponse
-    { _dmctrMetrics       = mempty
-    , _dmctrGranularities = mempty
-    }
+describeMetricCollectionTypes
+    :: DescribeMetricCollectionTypes
+describeMetricCollectionTypes = DescribeMetricCollectionTypes'
 
--- | The granularities for the listed metrics.
-dmctrGranularities :: Lens' DescribeMetricCollectionTypesResponse [MetricGranularityType]
-dmctrGranularities =
-    lens _dmctrGranularities (\s a -> s { _dmctrGranularities = a })
-        . _List
+instance AWSRequest DescribeMetricCollectionTypes
+         where
+        type Sv DescribeMetricCollectionTypes = AutoScaling
+        type Rs DescribeMetricCollectionTypes =
+             DescribeMetricCollectionTypesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeMetricCollectionTypesResult"
+              (\ s h x ->
+                 DescribeMetricCollectionTypesResponse' <$>
+                   (x .@? "Metrics" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*>
+                     (x .@? "Granularities" .!@ mempty >>=
+                        may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
--- | One or more of the following metrics:
---
--- GroupMinSize
---
--- GroupMaxSize
---
--- GroupDesiredCapacity
---
--- GroupInServiceInstances
---
--- GroupPendingInstances
---
--- GroupStandbyInstances
---
--- GroupTerminatingInstances
---
--- GroupTotalInstances
---
--- The 'GroupStandbyInstances' metric is not returned by default. You must
--- explicitly request it when calling 'EnableMetricsCollection'.
---
---
-dmctrMetrics :: Lens' DescribeMetricCollectionTypesResponse [MetricCollectionType]
-dmctrMetrics = lens _dmctrMetrics (\s a -> s { _dmctrMetrics = a }) . _List
+instance ToHeaders DescribeMetricCollectionTypes
+         where
+        toHeaders = const mempty
 
 instance ToPath DescribeMetricCollectionTypes where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeMetricCollectionTypes where
-    toQuery = const mempty
+        toQuery
+          = const
+              (mconcat
+                 ["Action" =:
+                    ("DescribeMetricCollectionTypes" :: ByteString),
+                  "Version" =: ("2011-01-01" :: ByteString)])
 
-instance ToHeaders DescribeMetricCollectionTypes
+-- | /See:/ 'describeMetricCollectionTypesResponse' smart constructor.
+data DescribeMetricCollectionTypesResponse = DescribeMetricCollectionTypesResponse'
+    { _dmctrsMetrics       :: !(Maybe [MetricCollectionType])
+    , _dmctrsGranularities :: !(Maybe [MetricGranularityType])
+    , _dmctrsStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeMetricCollectionTypes where
-    type Sv DescribeMetricCollectionTypes = AutoScaling
-    type Rs DescribeMetricCollectionTypes = DescribeMetricCollectionTypesResponse
+-- | Creates a value of 'DescribeMetricCollectionTypesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dmctrsMetrics'
+--
+-- * 'dmctrsGranularities'
+--
+-- * 'dmctrsStatus'
+describeMetricCollectionTypesResponse
+    :: Int -- ^ 'dmctrsStatus'
+    -> DescribeMetricCollectionTypesResponse
+describeMetricCollectionTypesResponse pStatus_ =
+    DescribeMetricCollectionTypesResponse'
+    { _dmctrsMetrics = Nothing
+    , _dmctrsGranularities = Nothing
+    , _dmctrsStatus = pStatus_
+    }
 
-    request  = post "DescribeMetricCollectionTypes"
-    response = xmlResponse
+-- | One or more metrics.
+dmctrsMetrics :: Lens' DescribeMetricCollectionTypesResponse [MetricCollectionType]
+dmctrsMetrics = lens _dmctrsMetrics (\ s a -> s{_dmctrsMetrics = a}) . _Default . _Coerce;
 
-instance FromXML DescribeMetricCollectionTypesResponse where
-    parseXML = withElement "DescribeMetricCollectionTypesResult" $ \x -> DescribeMetricCollectionTypesResponse
-        <$> x .@? "Granularities" .!@ mempty
-        <*> x .@? "Metrics" .!@ mempty
+-- | The granularities for the metrics.
+dmctrsGranularities :: Lens' DescribeMetricCollectionTypesResponse [MetricGranularityType]
+dmctrsGranularities = lens _dmctrsGranularities (\ s a -> s{_dmctrsGranularities = a}) . _Default . _Coerce;
+
+-- | The response status code.
+dmctrsStatus :: Lens' DescribeMetricCollectionTypesResponse Int
+dmctrsStatus = lens _dmctrsStatus (\ s a -> s{_dmctrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DescribeNotificationConfigurations.hs b/gen/Network/AWS/AutoScaling/DescribeNotificationConfigurations.hs
--- a/gen/Network/AWS/AutoScaling/DescribeNotificationConfigurations.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeNotificationConfigurations.hs
@@ -1,152 +1,174 @@
-{-# 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.AutoScaling.DescribeNotificationConfigurations
--- 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 notification actions associated with the specified Auto Scaling
--- group.
+-- Describes the notification actions associated with the specified Auto
+-- Scaling group.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeNotificationConfigurations.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeNotificationConfigurations.html AWS API Reference> for DescribeNotificationConfigurations.
+--
+-- This operation returns paginated results.
 module Network.AWS.AutoScaling.DescribeNotificationConfigurations
     (
-    -- * Request
-      DescribeNotificationConfigurations
-    -- ** Request constructor
-    , describeNotificationConfigurations
-    -- ** Request lenses
+    -- * Creating a Request
+      describeNotificationConfigurations
+    , DescribeNotificationConfigurations
+    -- * Request Lenses
     , dncAutoScalingGroupNames
-    , dncMaxRecords
     , dncNextToken
+    , dncMaxRecords
 
-    -- * Response
-    , DescribeNotificationConfigurationsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeNotificationConfigurationsResponse
-    -- ** Response lenses
-    , dncrNextToken
-    , dncrNotificationConfigurations
+    , DescribeNotificationConfigurationsResponse
+    -- * Response Lenses
+    , dncrsNextToken
+    , dncrsStatus
+    , dncrsNotificationConfigurations
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeNotificationConfigurations = DescribeNotificationConfigurations
-    { _dncAutoScalingGroupNames :: List "member" Text
-    , _dncMaxRecords            :: Maybe Int
-    , _dncNextToken             :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeNotificationConfigurations' smart constructor.
+data DescribeNotificationConfigurations = DescribeNotificationConfigurations'
+    { _dncAutoScalingGroupNames :: !(Maybe [Text])
+    , _dncNextToken             :: !(Maybe Text)
+    , _dncMaxRecords            :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeNotificationConfigurations' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeNotificationConfigurations' with the minimum fields required to make a request.
 --
--- * 'dncAutoScalingGroupNames' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dncMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'dncAutoScalingGroupNames'
 --
--- * 'dncNextToken' @::@ 'Maybe' 'Text'
+-- * 'dncNextToken'
 --
-describeNotificationConfigurations :: DescribeNotificationConfigurations
-describeNotificationConfigurations = DescribeNotificationConfigurations
-    { _dncAutoScalingGroupNames = mempty
-    , _dncNextToken             = Nothing
-    , _dncMaxRecords            = Nothing
+-- * 'dncMaxRecords'
+describeNotificationConfigurations
+    :: DescribeNotificationConfigurations
+describeNotificationConfigurations =
+    DescribeNotificationConfigurations'
+    { _dncAutoScalingGroupNames = Nothing
+    , _dncNextToken = Nothing
+    , _dncMaxRecords = Nothing
     }
 
 -- | The name of the group.
 dncAutoScalingGroupNames :: Lens' DescribeNotificationConfigurations [Text]
-dncAutoScalingGroupNames =
-    lens _dncAutoScalingGroupNames
-        (\s a -> s { _dncAutoScalingGroupNames = a })
-            . _List
+dncAutoScalingGroupNames = lens _dncAutoScalingGroupNames (\ s a -> s{_dncAutoScalingGroupNames = a}) . _Default . _Coerce;
 
+-- | The token for the next set of items to return. (You received this token
+-- from a previous call.)
+dncNextToken :: Lens' DescribeNotificationConfigurations (Maybe Text)
+dncNextToken = lens _dncNextToken (\ s a -> s{_dncNextToken = a});
+
 -- | The maximum number of items to return with this call.
 dncMaxRecords :: Lens' DescribeNotificationConfigurations (Maybe Int)
-dncMaxRecords = lens _dncMaxRecords (\s a -> s { _dncMaxRecords = a })
+dncMaxRecords = lens _dncMaxRecords (\ s a -> s{_dncMaxRecords = a});
 
--- | The token for the next set of items to return. (You received this token from
--- a previous call.)
-dncNextToken :: Lens' DescribeNotificationConfigurations (Maybe Text)
-dncNextToken = lens _dncNextToken (\s a -> s { _dncNextToken = a })
+instance AWSPager DescribeNotificationConfigurations
+         where
+        page rq rs
+          | stop (rs ^. dncrsNextToken) = Nothing
+          | stop (rs ^. dncrsNotificationConfigurations) =
+            Nothing
+          | otherwise =
+            Just $ rq & dncNextToken .~ rs ^. dncrsNextToken
 
-data DescribeNotificationConfigurationsResponse = DescribeNotificationConfigurationsResponse
-    { _dncrNextToken                  :: Maybe Text
-    , _dncrNotificationConfigurations :: List "member" NotificationConfiguration
-    } deriving (Eq, Read, Show)
+instance AWSRequest
+         DescribeNotificationConfigurations where
+        type Sv DescribeNotificationConfigurations =
+             AutoScaling
+        type Rs DescribeNotificationConfigurations =
+             DescribeNotificationConfigurationsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeNotificationConfigurationsResult"
+              (\ s h x ->
+                 DescribeNotificationConfigurationsResponse' <$>
+                   (x .@? "NextToken") <*> (pure (fromEnum s)) <*>
+                     (x .@? "NotificationConfigurations" .!@ mempty >>=
+                        parseXMLList "member"))
 
--- | 'DescribeNotificationConfigurationsResponse' constructor.
+instance ToHeaders DescribeNotificationConfigurations
+         where
+        toHeaders = const mempty
+
+instance ToPath DescribeNotificationConfigurations
+         where
+        toPath = const "/"
+
+instance ToQuery DescribeNotificationConfigurations
+         where
+        toQuery DescribeNotificationConfigurations'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeNotificationConfigurations" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "AutoScalingGroupNames" =:
+                 toQuery
+                   (toQueryList "member" <$> _dncAutoScalingGroupNames),
+               "NextToken" =: _dncNextToken,
+               "MaxRecords" =: _dncMaxRecords]
+
+-- | /See:/ 'describeNotificationConfigurationsResponse' smart constructor.
+data DescribeNotificationConfigurationsResponse = DescribeNotificationConfigurationsResponse'
+    { _dncrsNextToken                  :: !(Maybe Text)
+    , _dncrsStatus                     :: !Int
+    , _dncrsNotificationConfigurations :: ![NotificationConfiguration]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeNotificationConfigurationsResponse' 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:
 --
--- * 'dncrNextToken' @::@ 'Maybe' 'Text'
+-- * 'dncrsNextToken'
 --
--- * 'dncrNotificationConfigurations' @::@ ['NotificationConfiguration']
+-- * 'dncrsStatus'
 --
-describeNotificationConfigurationsResponse :: DescribeNotificationConfigurationsResponse
-describeNotificationConfigurationsResponse = DescribeNotificationConfigurationsResponse
-    { _dncrNotificationConfigurations = mempty
-    , _dncrNextToken                  = Nothing
+-- * 'dncrsNotificationConfigurations'
+describeNotificationConfigurationsResponse
+    :: Int -- ^ 'dncrsStatus'
+    -> DescribeNotificationConfigurationsResponse
+describeNotificationConfigurationsResponse pStatus_ =
+    DescribeNotificationConfigurationsResponse'
+    { _dncrsNextToken = Nothing
+    , _dncrsStatus = pStatus_
+    , _dncrsNotificationConfigurations = mempty
     }
 
 -- | The token to use when requesting the next set of items. If there are no
 -- additional items to return, the string is empty.
-dncrNextToken :: Lens' DescribeNotificationConfigurationsResponse (Maybe Text)
-dncrNextToken = lens _dncrNextToken (\s a -> s { _dncrNextToken = a })
-
--- | The notification configurations.
-dncrNotificationConfigurations :: Lens' DescribeNotificationConfigurationsResponse [NotificationConfiguration]
-dncrNotificationConfigurations =
-    lens _dncrNotificationConfigurations
-        (\s a -> s { _dncrNotificationConfigurations = a })
-            . _List
-
-instance ToPath DescribeNotificationConfigurations where
-    toPath = const "/"
-
-instance ToQuery DescribeNotificationConfigurations where
-    toQuery DescribeNotificationConfigurations{..} = mconcat
-        [ "AutoScalingGroupNames" =? _dncAutoScalingGroupNames
-        , "MaxRecords"            =? _dncMaxRecords
-        , "NextToken"             =? _dncNextToken
-        ]
-
-instance ToHeaders DescribeNotificationConfigurations
-
-instance AWSRequest DescribeNotificationConfigurations where
-    type Sv DescribeNotificationConfigurations = AutoScaling
-    type Rs DescribeNotificationConfigurations = DescribeNotificationConfigurationsResponse
-
-    request  = post "DescribeNotificationConfigurations"
-    response = xmlResponse
+dncrsNextToken :: Lens' DescribeNotificationConfigurationsResponse (Maybe Text)
+dncrsNextToken = lens _dncrsNextToken (\ s a -> s{_dncrsNextToken = a});
 
-instance FromXML DescribeNotificationConfigurationsResponse where
-    parseXML = withElement "DescribeNotificationConfigurationsResult" $ \x -> DescribeNotificationConfigurationsResponse
-        <$> x .@? "NextToken"
-        <*> x .@? "NotificationConfigurations" .!@ mempty
+-- | The response status code.
+dncrsStatus :: Lens' DescribeNotificationConfigurationsResponse Int
+dncrsStatus = lens _dncrsStatus (\ s a -> s{_dncrsStatus = a});
 
-instance AWSPager DescribeNotificationConfigurations where
-    page rq rs
-        | stop (rs ^. dncrNextToken) = Nothing
-        | otherwise = (\x -> rq & dncNextToken ?~ x)
-            <$> (rs ^. dncrNextToken)
+-- | The notification configurations.
+dncrsNotificationConfigurations :: Lens' DescribeNotificationConfigurationsResponse [NotificationConfiguration]
+dncrsNotificationConfigurations = lens _dncrsNotificationConfigurations (\ s a -> s{_dncrsNotificationConfigurations = a}) . _Coerce;
diff --git a/gen/Network/AWS/AutoScaling/DescribePolicies.hs b/gen/Network/AWS/AutoScaling/DescribePolicies.hs
--- a/gen/Network/AWS/AutoScaling/DescribePolicies.hs
+++ b/gen/Network/AWS/AutoScaling/DescribePolicies.hs
@@ -1,166 +1,188 @@
-{-# 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.AutoScaling.DescribePolicies
--- 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 policies for the specified Auto Scaling group.
+-- Describes the policies for the specified Auto Scaling group.
 --
--- You can specify a maximum number of items to be returned with a single call.
--- If there are more items to return, the call returns a token. To get the next
--- set of items, repeat the call with the returned token in the 'NextToken'
--- parameter.
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribePolicies.html AWS API Reference> for DescribePolicies.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribePolicies.html>
+-- This operation returns paginated results.
 module Network.AWS.AutoScaling.DescribePolicies
     (
-    -- * Request
-      DescribePolicies
-    -- ** Request constructor
-    , describePolicies
-    -- ** Request lenses
-    , dp1AutoScalingGroupName
-    , dp1MaxRecords
-    , dp1NextToken
-    , dp1PolicyNames
+    -- * Creating a Request
+      describePolicies
+    , DescribePolicies
+    -- * Request Lenses
+    , dpsPolicyNames
+    , dpsNextToken
+    , dpsMaxRecords
+    , dpsAutoScalingGroupName
+    , dpsPolicyTypes
 
-    -- * Response
-    , DescribePoliciesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describePoliciesResponse
-    -- ** Response lenses
-    , dprNextToken
-    , dprScalingPolicies
+    , DescribePoliciesResponse
+    -- * Response Lenses
+    , dprsNextToken
+    , dprsScalingPolicies
+    , dprsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribePolicies = DescribePolicies
-    { _dp1AutoScalingGroupName :: Maybe Text
-    , _dp1MaxRecords           :: Maybe Int
-    , _dp1NextToken            :: Maybe Text
-    , _dp1PolicyNames          :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describePolicies' smart constructor.
+data DescribePolicies = DescribePolicies'
+    { _dpsPolicyNames          :: !(Maybe [Text])
+    , _dpsNextToken            :: !(Maybe Text)
+    , _dpsMaxRecords           :: !(Maybe Int)
+    , _dpsAutoScalingGroupName :: !(Maybe Text)
+    , _dpsPolicyTypes          :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribePolicies' constructor.
+-- | Creates a value of 'DescribePolicies' 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:
 --
--- * 'dp1AutoScalingGroupName' @::@ 'Maybe' 'Text'
+-- * 'dpsPolicyNames'
 --
--- * 'dp1MaxRecords' @::@ 'Maybe' 'Int'
+-- * 'dpsNextToken'
 --
--- * 'dp1NextToken' @::@ 'Maybe' 'Text'
+-- * 'dpsMaxRecords'
 --
--- * 'dp1PolicyNames' @::@ ['Text']
+-- * 'dpsAutoScalingGroupName'
 --
-describePolicies :: DescribePolicies
-describePolicies = DescribePolicies
-    { _dp1AutoScalingGroupName = Nothing
-    , _dp1PolicyNames          = mempty
-    , _dp1NextToken            = Nothing
-    , _dp1MaxRecords           = Nothing
+-- * 'dpsPolicyTypes'
+describePolicies
+    :: DescribePolicies
+describePolicies =
+    DescribePolicies'
+    { _dpsPolicyNames = Nothing
+    , _dpsNextToken = Nothing
+    , _dpsMaxRecords = Nothing
+    , _dpsAutoScalingGroupName = Nothing
+    , _dpsPolicyTypes = Nothing
     }
 
--- | The name of the group.
-dp1AutoScalingGroupName :: Lens' DescribePolicies (Maybe Text)
-dp1AutoScalingGroupName =
-    lens _dp1AutoScalingGroupName (\s a -> s { _dp1AutoScalingGroupName = a })
+-- | One or more policy names or policy ARNs to be described. If you omit
+-- this list, all policy names are described. If an group name is provided,
+-- the results are limited to that group. This list is limited to 50 items.
+-- If you specify an unknown policy name, it is ignored with no error.
+dpsPolicyNames :: Lens' DescribePolicies [Text]
+dpsPolicyNames = lens _dpsPolicyNames (\ s a -> s{_dpsPolicyNames = a}) . _Default . _Coerce;
 
+-- | The token for the next set of items to return. (You received this token
+-- from a previous call.)
+dpsNextToken :: Lens' DescribePolicies (Maybe Text)
+dpsNextToken = lens _dpsNextToken (\ s a -> s{_dpsNextToken = a});
+
 -- | The maximum number of items to be returned with each call.
-dp1MaxRecords :: Lens' DescribePolicies (Maybe Int)
-dp1MaxRecords = lens _dp1MaxRecords (\s a -> s { _dp1MaxRecords = a })
+dpsMaxRecords :: Lens' DescribePolicies (Maybe Int)
+dpsMaxRecords = lens _dpsMaxRecords (\ s a -> s{_dpsMaxRecords = a});
 
--- | The token for the next set of items to return. (You received this token from
--- a previous call.)
-dp1NextToken :: Lens' DescribePolicies (Maybe Text)
-dp1NextToken = lens _dp1NextToken (\s a -> s { _dp1NextToken = a })
+-- | The name of the group.
+dpsAutoScalingGroupName :: Lens' DescribePolicies (Maybe Text)
+dpsAutoScalingGroupName = lens _dpsAutoScalingGroupName (\ s a -> s{_dpsAutoScalingGroupName = a});
 
--- | One or more policy names or policy ARNs to be described. If you omit this
--- list, all policy names are described. If an group name is provided, the
--- results are limited to that group. This list is limited to 50 items. If you
--- specify an unknown policy name, it is ignored with no error.
-dp1PolicyNames :: Lens' DescribePolicies [Text]
-dp1PolicyNames = lens _dp1PolicyNames (\s a -> s { _dp1PolicyNames = a }) . _List
+-- | One or more policy types. Valid values are 'SimpleScaling' and
+-- 'StepScaling'.
+dpsPolicyTypes :: Lens' DescribePolicies [Text]
+dpsPolicyTypes = lens _dpsPolicyTypes (\ s a -> s{_dpsPolicyTypes = a}) . _Default . _Coerce;
 
-data DescribePoliciesResponse = DescribePoliciesResponse
-    { _dprNextToken       :: Maybe Text
-    , _dprScalingPolicies :: List "member" ScalingPolicy
-    } deriving (Eq, Read, Show)
+instance AWSPager DescribePolicies where
+        page rq rs
+          | stop (rs ^. dprsNextToken) = Nothing
+          | stop (rs ^. dprsScalingPolicies) = Nothing
+          | otherwise =
+            Just $ rq & dpsNextToken .~ rs ^. dprsNextToken
 
--- | 'DescribePoliciesResponse' constructor.
+instance AWSRequest DescribePolicies where
+        type Sv DescribePolicies = AutoScaling
+        type Rs DescribePolicies = DescribePoliciesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribePoliciesResult"
+              (\ s h x ->
+                 DescribePoliciesResponse' <$>
+                   (x .@? "NextToken") <*>
+                     (x .@? "ScalingPolicies" .!@ mempty >>=
+                        may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribePolicies where
+        toHeaders = const mempty
+
+instance ToPath DescribePolicies where
+        toPath = const "/"
+
+instance ToQuery DescribePolicies where
+        toQuery DescribePolicies'{..}
+          = mconcat
+              ["Action" =: ("DescribePolicies" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "PolicyNames" =:
+                 toQuery (toQueryList "member" <$> _dpsPolicyNames),
+               "NextToken" =: _dpsNextToken,
+               "MaxRecords" =: _dpsMaxRecords,
+               "AutoScalingGroupName" =: _dpsAutoScalingGroupName,
+               "PolicyTypes" =:
+                 toQuery (toQueryList "member" <$> _dpsPolicyTypes)]
+
+-- | /See:/ 'describePoliciesResponse' smart constructor.
+data DescribePoliciesResponse = DescribePoliciesResponse'
+    { _dprsNextToken       :: !(Maybe Text)
+    , _dprsScalingPolicies :: !(Maybe [ScalingPolicy])
+    , _dprsStatus          :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribePoliciesResponse' 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:
 --
--- * 'dprNextToken' @::@ 'Maybe' 'Text'
+-- * 'dprsNextToken'
 --
--- * 'dprScalingPolicies' @::@ ['ScalingPolicy']
+-- * 'dprsScalingPolicies'
 --
-describePoliciesResponse :: DescribePoliciesResponse
-describePoliciesResponse = DescribePoliciesResponse
-    { _dprScalingPolicies = mempty
-    , _dprNextToken       = Nothing
+-- * 'dprsStatus'
+describePoliciesResponse
+    :: Int -- ^ 'dprsStatus'
+    -> DescribePoliciesResponse
+describePoliciesResponse pStatus_ =
+    DescribePoliciesResponse'
+    { _dprsNextToken = Nothing
+    , _dprsScalingPolicies = Nothing
+    , _dprsStatus = pStatus_
     }
 
 -- | The token to use when requesting the next set of items. If there are no
 -- additional items to return, the string is empty.
-dprNextToken :: Lens' DescribePoliciesResponse (Maybe Text)
-dprNextToken = lens _dprNextToken (\s a -> s { _dprNextToken = a })
+dprsNextToken :: Lens' DescribePoliciesResponse (Maybe Text)
+dprsNextToken = lens _dprsNextToken (\ s a -> s{_dprsNextToken = a});
 
 -- | The scaling policies.
-dprScalingPolicies :: Lens' DescribePoliciesResponse [ScalingPolicy]
-dprScalingPolicies =
-    lens _dprScalingPolicies (\s a -> s { _dprScalingPolicies = a })
-        . _List
-
-instance ToPath DescribePolicies where
-    toPath = const "/"
-
-instance ToQuery DescribePolicies where
-    toQuery DescribePolicies{..} = mconcat
-        [ "AutoScalingGroupName" =? _dp1AutoScalingGroupName
-        , "MaxRecords"           =? _dp1MaxRecords
-        , "NextToken"            =? _dp1NextToken
-        , "PolicyNames"          =? _dp1PolicyNames
-        ]
-
-instance ToHeaders DescribePolicies
-
-instance AWSRequest DescribePolicies where
-    type Sv DescribePolicies = AutoScaling
-    type Rs DescribePolicies = DescribePoliciesResponse
-
-    request  = post "DescribePolicies"
-    response = xmlResponse
-
-instance FromXML DescribePoliciesResponse where
-    parseXML = withElement "DescribePoliciesResult" $ \x -> DescribePoliciesResponse
-        <$> x .@? "NextToken"
-        <*> x .@? "ScalingPolicies" .!@ mempty
+dprsScalingPolicies :: Lens' DescribePoliciesResponse [ScalingPolicy]
+dprsScalingPolicies = lens _dprsScalingPolicies (\ s a -> s{_dprsScalingPolicies = a}) . _Default . _Coerce;
 
-instance AWSPager DescribePolicies where
-    page rq rs
-        | stop (rs ^. dprNextToken) = Nothing
-        | otherwise = (\x -> rq & dp1NextToken ?~ x)
-            <$> (rs ^. dprNextToken)
+-- | The response status code.
+dprsStatus :: Lens' DescribePoliciesResponse Int
+dprsStatus = lens _dprsStatus (\ s a -> s{_dprsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DescribeScalingActivities.hs b/gen/Network/AWS/AutoScaling/DescribeScalingActivities.hs
--- a/gen/Network/AWS/AutoScaling/DescribeScalingActivities.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeScalingActivities.hs
@@ -1,169 +1,181 @@
-{-# 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.AutoScaling.DescribeScalingActivities
--- 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 one or more scaling activities for the specified Auto Scaling
--- group. If you omit the 'ActivityIds', the call returns all activities from the
--- past six weeks. Activities are sorted by the start time. Activities still in
--- progress appear first on the list.
+-- Describes one or more scaling activities for the specified Auto Scaling
+-- group. If you omit the 'ActivityIds', the call returns all activities
+-- from the past six weeks. Activities are sorted by the start time.
+-- Activities still in progress appear first on the list.
 --
--- You can specify a maximum number of items to be returned with a single call.
--- If there are more items to return, the call returns a token. To get the next
--- set of items, repeat the call with the returned token in the 'NextToken'
--- parameter.
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeScalingActivities.html AWS API Reference> for DescribeScalingActivities.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeScalingActivities.html>
+-- This operation returns paginated results.
 module Network.AWS.AutoScaling.DescribeScalingActivities
     (
-    -- * Request
-      DescribeScalingActivities
-    -- ** Request constructor
-    , describeScalingActivities
-    -- ** Request lenses
-    , dsa2ActivityIds
-    , dsa2AutoScalingGroupName
-    , dsa2MaxRecords
-    , dsa2NextToken
+    -- * Creating a Request
+      describeScalingActivities
+    , DescribeScalingActivities
+    -- * Request Lenses
+    , desNextToken
+    , desMaxRecords
+    , desAutoScalingGroupName
+    , desActivityIds
 
-    -- * Response
-    , DescribeScalingActivitiesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeScalingActivitiesResponse
-    -- ** Response lenses
-    , dsar1Activities
-    , dsar1NextToken
+    , DescribeScalingActivitiesResponse
+    -- * Response Lenses
+    , dsasrsNextToken
+    , dsasrsStatus
+    , dsasrsActivities
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeScalingActivities = DescribeScalingActivities
-    { _dsa2ActivityIds          :: List "member" Text
-    , _dsa2AutoScalingGroupName :: Maybe Text
-    , _dsa2MaxRecords           :: Maybe Int
-    , _dsa2NextToken            :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeScalingActivities' smart constructor.
+data DescribeScalingActivities = DescribeScalingActivities'
+    { _desNextToken            :: !(Maybe Text)
+    , _desMaxRecords           :: !(Maybe Int)
+    , _desAutoScalingGroupName :: !(Maybe Text)
+    , _desActivityIds          :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeScalingActivities' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeScalingActivities' with the minimum fields required to make a request.
 --
--- * 'dsa2ActivityIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dsa2AutoScalingGroupName' @::@ 'Maybe' 'Text'
+-- * 'desNextToken'
 --
--- * 'dsa2MaxRecords' @::@ 'Maybe' 'Int'
+-- * 'desMaxRecords'
 --
--- * 'dsa2NextToken' @::@ 'Maybe' 'Text'
+-- * 'desAutoScalingGroupName'
 --
-describeScalingActivities :: DescribeScalingActivities
-describeScalingActivities = DescribeScalingActivities
-    { _dsa2ActivityIds          = mempty
-    , _dsa2AutoScalingGroupName = Nothing
-    , _dsa2MaxRecords           = Nothing
-    , _dsa2NextToken            = Nothing
+-- * 'desActivityIds'
+describeScalingActivities
+    :: DescribeScalingActivities
+describeScalingActivities =
+    DescribeScalingActivities'
+    { _desNextToken = Nothing
+    , _desMaxRecords = Nothing
+    , _desAutoScalingGroupName = Nothing
+    , _desActivityIds = Nothing
     }
 
--- | A list containing the activity IDs of the desired scaling activities. If
--- this list is omitted, all activities are described. If an 'AutoScalingGroupName'
--- is provided, the results are limited to that group. The list of requested
--- activities cannot contain more than 50 items. If unknown activities are
--- requested, they are ignored with no error.
-dsa2ActivityIds :: Lens' DescribeScalingActivities [Text]
-dsa2ActivityIds = lens _dsa2ActivityIds (\s a -> s { _dsa2ActivityIds = a }) . _List
-
--- | The name of the group.
-dsa2AutoScalingGroupName :: Lens' DescribeScalingActivities (Maybe Text)
-dsa2AutoScalingGroupName =
-    lens _dsa2AutoScalingGroupName
-        (\s a -> s { _dsa2AutoScalingGroupName = a })
+-- | The token for the next set of items to return. (You received this token
+-- from a previous call.)
+desNextToken :: Lens' DescribeScalingActivities (Maybe Text)
+desNextToken = lens _desNextToken (\ s a -> s{_desNextToken = a});
 
 -- | The maximum number of items to return with this call.
-dsa2MaxRecords :: Lens' DescribeScalingActivities (Maybe Int)
-dsa2MaxRecords = lens _dsa2MaxRecords (\s a -> s { _dsa2MaxRecords = a })
+desMaxRecords :: Lens' DescribeScalingActivities (Maybe Int)
+desMaxRecords = lens _desMaxRecords (\ s a -> s{_desMaxRecords = a});
 
--- | The token for the next set of items to return. (You received this token from
--- a previous call.)
-dsa2NextToken :: Lens' DescribeScalingActivities (Maybe Text)
-dsa2NextToken = lens _dsa2NextToken (\s a -> s { _dsa2NextToken = a })
+-- | The name of the group.
+desAutoScalingGroupName :: Lens' DescribeScalingActivities (Maybe Text)
+desAutoScalingGroupName = lens _desAutoScalingGroupName (\ s a -> s{_desAutoScalingGroupName = a});
 
-data DescribeScalingActivitiesResponse = DescribeScalingActivitiesResponse
-    { _dsar1Activities :: List "member" Activity
-    , _dsar1NextToken  :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | The activity IDs of the desired scaling activities. If this list is
+-- omitted, all activities are described. If the 'AutoScalingGroupName'
+-- parameter is provided, the results are limited to that group. The list
+-- of requested activities cannot contain more than 50 items. If unknown
+-- activities are requested, they are ignored with no error.
+desActivityIds :: Lens' DescribeScalingActivities [Text]
+desActivityIds = lens _desActivityIds (\ s a -> s{_desActivityIds = a}) . _Default . _Coerce;
 
--- | 'DescribeScalingActivitiesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dsar1Activities' @::@ ['Activity']
---
--- * 'dsar1NextToken' @::@ 'Maybe' 'Text'
---
-describeScalingActivitiesResponse :: DescribeScalingActivitiesResponse
-describeScalingActivitiesResponse = DescribeScalingActivitiesResponse
-    { _dsar1Activities = mempty
-    , _dsar1NextToken  = Nothing
-    }
+instance AWSPager DescribeScalingActivities where
+        page rq rs
+          | stop (rs ^. dsasrsNextToken) = Nothing
+          | stop (rs ^. dsasrsActivities) = Nothing
+          | otherwise =
+            Just $ rq & desNextToken .~ rs ^. dsasrsNextToken
 
--- | The scaling activities.
-dsar1Activities :: Lens' DescribeScalingActivitiesResponse [Activity]
-dsar1Activities = lens _dsar1Activities (\s a -> s { _dsar1Activities = a }) . _List
+instance AWSRequest DescribeScalingActivities where
+        type Sv DescribeScalingActivities = AutoScaling
+        type Rs DescribeScalingActivities =
+             DescribeScalingActivitiesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeScalingActivitiesResult"
+              (\ s h x ->
+                 DescribeScalingActivitiesResponse' <$>
+                   (x .@? "NextToken") <*> (pure (fromEnum s)) <*>
+                     (x .@? "Activities" .!@ mempty >>=
+                        parseXMLList "member"))
 
--- | The token to use when requesting the next set of items. If there are no
--- additional items to return, the string is empty.
-dsar1NextToken :: Lens' DescribeScalingActivitiesResponse (Maybe Text)
-dsar1NextToken = lens _dsar1NextToken (\s a -> s { _dsar1NextToken = a })
+instance ToHeaders DescribeScalingActivities where
+        toHeaders = const mempty
 
 instance ToPath DescribeScalingActivities where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeScalingActivities where
-    toQuery DescribeScalingActivities{..} = mconcat
-        [ "ActivityIds"          =? _dsa2ActivityIds
-        , "AutoScalingGroupName" =? _dsa2AutoScalingGroupName
-        , "MaxRecords"           =? _dsa2MaxRecords
-        , "NextToken"            =? _dsa2NextToken
-        ]
+        toQuery DescribeScalingActivities'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeScalingActivities" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "NextToken" =: _desNextToken,
+               "MaxRecords" =: _desMaxRecords,
+               "AutoScalingGroupName" =: _desAutoScalingGroupName,
+               "ActivityIds" =:
+                 toQuery (toQueryList "member" <$> _desActivityIds)]
 
-instance ToHeaders DescribeScalingActivities
+-- | /See:/ 'describeScalingActivitiesResponse' smart constructor.
+data DescribeScalingActivitiesResponse = DescribeScalingActivitiesResponse'
+    { _dsasrsNextToken  :: !(Maybe Text)
+    , _dsasrsStatus     :: !Int
+    , _dsasrsActivities :: ![Activity]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeScalingActivities where
-    type Sv DescribeScalingActivities = AutoScaling
-    type Rs DescribeScalingActivities = DescribeScalingActivitiesResponse
+-- | Creates a value of 'DescribeScalingActivitiesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsasrsNextToken'
+--
+-- * 'dsasrsStatus'
+--
+-- * 'dsasrsActivities'
+describeScalingActivitiesResponse
+    :: Int -- ^ 'dsasrsStatus'
+    -> DescribeScalingActivitiesResponse
+describeScalingActivitiesResponse pStatus_ =
+    DescribeScalingActivitiesResponse'
+    { _dsasrsNextToken = Nothing
+    , _dsasrsStatus = pStatus_
+    , _dsasrsActivities = mempty
+    }
 
-    request  = post "DescribeScalingActivities"
-    response = xmlResponse
+-- | The token to use when requesting the next set of items. If there are no
+-- additional items to return, the string is empty.
+dsasrsNextToken :: Lens' DescribeScalingActivitiesResponse (Maybe Text)
+dsasrsNextToken = lens _dsasrsNextToken (\ s a -> s{_dsasrsNextToken = a});
 
-instance FromXML DescribeScalingActivitiesResponse where
-    parseXML = withElement "DescribeScalingActivitiesResult" $ \x -> DescribeScalingActivitiesResponse
-        <$> x .@? "Activities" .!@ mempty
-        <*> x .@? "NextToken"
+-- | The response status code.
+dsasrsStatus :: Lens' DescribeScalingActivitiesResponse Int
+dsasrsStatus = lens _dsasrsStatus (\ s a -> s{_dsasrsStatus = a});
 
-instance AWSPager DescribeScalingActivities where
-    page rq rs
-        | stop (rs ^. dsar1NextToken) = Nothing
-        | otherwise = (\x -> rq & dsa2NextToken ?~ x)
-            <$> (rs ^. dsar1NextToken)
+-- | The scaling activities.
+dsasrsActivities :: Lens' DescribeScalingActivitiesResponse [Activity]
+dsasrsActivities = lens _dsasrsActivities (\ s a -> s{_dsasrsActivities = a}) . _Coerce;
diff --git a/gen/Network/AWS/AutoScaling/DescribeScalingProcessTypes.hs b/gen/Network/AWS/AutoScaling/DescribeScalingProcessTypes.hs
--- a/gen/Network/AWS/AutoScaling/DescribeScalingProcessTypes.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeScalingProcessTypes.hs
@@ -1,97 +1,112 @@
-{-# 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.AutoScaling.DescribeScalingProcessTypes
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Returns scaling process types for use in the 'ResumeProcesses' and 'SuspendProcesses' actions.
+-- Describes the scaling process types for use with ResumeProcesses and
+-- SuspendProcesses.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeScalingProcessTypes.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeScalingProcessTypes.html AWS API Reference> for DescribeScalingProcessTypes.
 module Network.AWS.AutoScaling.DescribeScalingProcessTypes
     (
-    -- * Request
-      DescribeScalingProcessTypes
-    -- ** Request constructor
-    , describeScalingProcessTypes
+    -- * Creating a Request
+      describeScalingProcessTypes
+    , DescribeScalingProcessTypes
 
-    -- * Response
-    , DescribeScalingProcessTypesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeScalingProcessTypesResponse
-    -- ** Response lenses
-    , dsptrProcesses
+    , DescribeScalingProcessTypesResponse
+    -- * Response Lenses
+    , dsptrsProcesses
+    , dsptrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeScalingProcessTypes = DescribeScalingProcessTypes
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | /See:/ 'describeScalingProcessTypes' smart constructor.
+data DescribeScalingProcessTypes =
+    DescribeScalingProcessTypes'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeScalingProcessTypes' constructor.
-describeScalingProcessTypes :: DescribeScalingProcessTypes
-describeScalingProcessTypes = DescribeScalingProcessTypes
+-- | Creates a value of 'DescribeScalingProcessTypes' with the minimum fields required to make a request.
+--
+describeScalingProcessTypes
+    :: DescribeScalingProcessTypes
+describeScalingProcessTypes = DescribeScalingProcessTypes'
 
-newtype DescribeScalingProcessTypesResponse = DescribeScalingProcessTypesResponse
-    { _dsptrProcesses :: List "member" ProcessType
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest DescribeScalingProcessTypes where
+        type Sv DescribeScalingProcessTypes = AutoScaling
+        type Rs DescribeScalingProcessTypes =
+             DescribeScalingProcessTypesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeScalingProcessTypesResult"
+              (\ s h x ->
+                 DescribeScalingProcessTypesResponse' <$>
+                   (x .@? "Processes" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-instance GHC.Exts.IsList DescribeScalingProcessTypesResponse where
-    type Item DescribeScalingProcessTypesResponse = ProcessType
+instance ToHeaders DescribeScalingProcessTypes where
+        toHeaders = const mempty
 
-    fromList = DescribeScalingProcessTypesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dsptrProcesses
+instance ToPath DescribeScalingProcessTypes where
+        toPath = const "/"
 
--- | 'DescribeScalingProcessTypesResponse' constructor.
+instance ToQuery DescribeScalingProcessTypes where
+        toQuery
+          = const
+              (mconcat
+                 ["Action" =:
+                    ("DescribeScalingProcessTypes" :: ByteString),
+                  "Version" =: ("2011-01-01" :: ByteString)])
+
+-- | /See:/ 'describeScalingProcessTypesResponse' smart constructor.
+data DescribeScalingProcessTypesResponse = DescribeScalingProcessTypesResponse'
+    { _dsptrsProcesses :: !(Maybe [ProcessType])
+    , _dsptrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeScalingProcessTypesResponse' 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:
 --
--- * 'dsptrProcesses' @::@ ['ProcessType']
+-- * 'dsptrsProcesses'
 --
-describeScalingProcessTypesResponse :: DescribeScalingProcessTypesResponse
-describeScalingProcessTypesResponse = DescribeScalingProcessTypesResponse
-    { _dsptrProcesses = mempty
+-- * 'dsptrsStatus'
+describeScalingProcessTypesResponse
+    :: Int -- ^ 'dsptrsStatus'
+    -> DescribeScalingProcessTypesResponse
+describeScalingProcessTypesResponse pStatus_ =
+    DescribeScalingProcessTypesResponse'
+    { _dsptrsProcesses = Nothing
+    , _dsptrsStatus = pStatus_
     }
 
 -- | The names of the process types.
-dsptrProcesses :: Lens' DescribeScalingProcessTypesResponse [ProcessType]
-dsptrProcesses = lens _dsptrProcesses (\s a -> s { _dsptrProcesses = a }) . _List
-
-instance ToPath DescribeScalingProcessTypes where
-    toPath = const "/"
-
-instance ToQuery DescribeScalingProcessTypes where
-    toQuery = const mempty
-
-instance ToHeaders DescribeScalingProcessTypes
-
-instance AWSRequest DescribeScalingProcessTypes where
-    type Sv DescribeScalingProcessTypes = AutoScaling
-    type Rs DescribeScalingProcessTypes = DescribeScalingProcessTypesResponse
-
-    request  = post "DescribeScalingProcessTypes"
-    response = xmlResponse
+dsptrsProcesses :: Lens' DescribeScalingProcessTypesResponse [ProcessType]
+dsptrsProcesses = lens _dsptrsProcesses (\ s a -> s{_dsptrsProcesses = a}) . _Default . _Coerce;
 
-instance FromXML DescribeScalingProcessTypesResponse where
-    parseXML = withElement "DescribeScalingProcessTypesResult" $ \x -> DescribeScalingProcessTypesResponse
-        <$> x .@? "Processes" .!@ mempty
+-- | The response status code.
+dsptrsStatus :: Lens' DescribeScalingProcessTypesResponse Int
+dsptrsStatus = lens _dsptrsStatus (\ s a -> s{_dsptrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DescribeScheduledActions.hs b/gen/Network/AWS/AutoScaling/DescribeScheduledActions.hs
--- a/gen/Network/AWS/AutoScaling/DescribeScheduledActions.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeScheduledActions.hs
@@ -1,192 +1,208 @@
-{-# 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.AutoScaling.DescribeScheduledActions
--- 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.
-
--- | Lists the actions scheduled for your Auto Scaling group that haven't been
--- executed. To list the actions that were already executed, use 'DescribeScalingActivities'.
+-- Describes the actions scheduled for your Auto Scaling group that
+-- haven\'t run. To describe the actions that have already run, use
+-- DescribeScalingActivities.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeScheduledActions.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeScheduledActions.html AWS API Reference> for DescribeScheduledActions.
+--
+-- This operation returns paginated results.
 module Network.AWS.AutoScaling.DescribeScheduledActions
     (
-    -- * Request
-      DescribeScheduledActions
-    -- ** Request constructor
-    , describeScheduledActions
-    -- ** Request lenses
-    , dsa1AutoScalingGroupName
-    , dsa1EndTime
-    , dsa1MaxRecords
-    , dsa1NextToken
-    , dsa1ScheduledActionNames
-    , dsa1StartTime
+    -- * Creating a Request
+      describeScheduledActions
+    , DescribeScheduledActions
+    -- * Request Lenses
+    , dsasStartTime
+    , dsasNextToken
+    , dsasMaxRecords
+    , dsasEndTime
+    , dsasAutoScalingGroupName
+    , dsasScheduledActionNames
 
-    -- * Response
-    , DescribeScheduledActionsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeScheduledActionsResponse
-    -- ** Response lenses
-    , dsarNextToken
-    , dsarScheduledUpdateGroupActions
+    , DescribeScheduledActionsResponse
+    -- * Response Lenses
+    , dsarsScheduledUpdateGroupActions
+    , dsarsNextToken
+    , dsarsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeScheduledActions = DescribeScheduledActions
-    { _dsa1AutoScalingGroupName :: Maybe Text
-    , _dsa1EndTime              :: Maybe ISO8601
-    , _dsa1MaxRecords           :: Maybe Int
-    , _dsa1NextToken            :: Maybe Text
-    , _dsa1ScheduledActionNames :: List "member" Text
-    , _dsa1StartTime            :: Maybe ISO8601
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeScheduledActions' smart constructor.
+data DescribeScheduledActions = DescribeScheduledActions'
+    { _dsasStartTime            :: !(Maybe ISO8601)
+    , _dsasNextToken            :: !(Maybe Text)
+    , _dsasMaxRecords           :: !(Maybe Int)
+    , _dsasEndTime              :: !(Maybe ISO8601)
+    , _dsasAutoScalingGroupName :: !(Maybe Text)
+    , _dsasScheduledActionNames :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeScheduledActions' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeScheduledActions' with the minimum fields required to make a request.
 --
--- * 'dsa1AutoScalingGroupName' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dsa1EndTime' @::@ 'Maybe' 'UTCTime'
+-- * 'dsasStartTime'
 --
--- * 'dsa1MaxRecords' @::@ 'Maybe' 'Int'
+-- * 'dsasNextToken'
 --
--- * 'dsa1NextToken' @::@ 'Maybe' 'Text'
+-- * 'dsasMaxRecords'
 --
--- * 'dsa1ScheduledActionNames' @::@ ['Text']
+-- * 'dsasEndTime'
 --
--- * 'dsa1StartTime' @::@ 'Maybe' 'UTCTime'
+-- * 'dsasAutoScalingGroupName'
 --
-describeScheduledActions :: DescribeScheduledActions
-describeScheduledActions = DescribeScheduledActions
-    { _dsa1AutoScalingGroupName = Nothing
-    , _dsa1ScheduledActionNames = mempty
-    , _dsa1StartTime            = Nothing
-    , _dsa1EndTime              = Nothing
-    , _dsa1NextToken            = Nothing
-    , _dsa1MaxRecords           = Nothing
+-- * 'dsasScheduledActionNames'
+describeScheduledActions
+    :: DescribeScheduledActions
+describeScheduledActions =
+    DescribeScheduledActions'
+    { _dsasStartTime = Nothing
+    , _dsasNextToken = Nothing
+    , _dsasMaxRecords = Nothing
+    , _dsasEndTime = Nothing
+    , _dsasAutoScalingGroupName = Nothing
+    , _dsasScheduledActionNames = Nothing
     }
 
--- | The name of the group.
-dsa1AutoScalingGroupName :: Lens' DescribeScheduledActions (Maybe Text)
-dsa1AutoScalingGroupName =
-    lens _dsa1AutoScalingGroupName
-        (\s a -> s { _dsa1AutoScalingGroupName = a })
+-- | The earliest scheduled start time to return. If scheduled action names
+-- are provided, this parameter is ignored.
+dsasStartTime :: Lens' DescribeScheduledActions (Maybe UTCTime)
+dsasStartTime = lens _dsasStartTime (\ s a -> s{_dsasStartTime = a}) . mapping _Time;
 
--- | The latest scheduled start time to return. If scheduled action names are
--- provided, this parameter is ignored.
-dsa1EndTime :: Lens' DescribeScheduledActions (Maybe UTCTime)
-dsa1EndTime = lens _dsa1EndTime (\s a -> s { _dsa1EndTime = a }) . mapping _Time
+-- | The token for the next set of items to return. (You received this token
+-- from a previous call.)
+dsasNextToken :: Lens' DescribeScheduledActions (Maybe Text)
+dsasNextToken = lens _dsasNextToken (\ s a -> s{_dsasNextToken = a});
 
 -- | The maximum number of items to return with this call.
-dsa1MaxRecords :: Lens' DescribeScheduledActions (Maybe Int)
-dsa1MaxRecords = lens _dsa1MaxRecords (\s a -> s { _dsa1MaxRecords = a })
+dsasMaxRecords :: Lens' DescribeScheduledActions (Maybe Int)
+dsasMaxRecords = lens _dsasMaxRecords (\ s a -> s{_dsasMaxRecords = a});
 
--- | The token for the next set of items to return. (You received this token from
--- a previous call.)
-dsa1NextToken :: Lens' DescribeScheduledActions (Maybe Text)
-dsa1NextToken = lens _dsa1NextToken (\s a -> s { _dsa1NextToken = a })
+-- | The latest scheduled start time to return. If scheduled action names are
+-- provided, this parameter is ignored.
+dsasEndTime :: Lens' DescribeScheduledActions (Maybe UTCTime)
+dsasEndTime = lens _dsasEndTime (\ s a -> s{_dsasEndTime = a}) . mapping _Time;
 
+-- | The name of the group.
+dsasAutoScalingGroupName :: Lens' DescribeScheduledActions (Maybe Text)
+dsasAutoScalingGroupName = lens _dsasAutoScalingGroupName (\ s a -> s{_dsasAutoScalingGroupName = a});
+
 -- | Describes one or more scheduled actions. If you omit this list, the call
--- describes all scheduled actions. If you specify an unknown scheduled action
--- it is ignored with no error.
+-- describes all scheduled actions. If you specify an unknown scheduled
+-- action it is ignored with no error.
 --
 -- You can describe up to a maximum of 50 instances with a single call. If
--- there are more items to return, the call returns a token. To get the next set
--- of items, repeat the call with the returned token in the 'NextToken' parameter.
-dsa1ScheduledActionNames :: Lens' DescribeScheduledActions [Text]
-dsa1ScheduledActionNames =
-    lens _dsa1ScheduledActionNames
-        (\s a -> s { _dsa1ScheduledActionNames = a })
-            . _List
-
--- | The earliest scheduled start time to return. If scheduled action names are
--- provided, this parameter is ignored.
-dsa1StartTime :: Lens' DescribeScheduledActions (Maybe UTCTime)
-dsa1StartTime = lens _dsa1StartTime (\s a -> s { _dsa1StartTime = a }) . mapping _Time
-
-data DescribeScheduledActionsResponse = DescribeScheduledActionsResponse
-    { _dsarNextToken                   :: Maybe Text
-    , _dsarScheduledUpdateGroupActions :: List "member" ScheduledUpdateGroupAction
-    } deriving (Eq, Read, Show)
+-- there are more items to return, the call returns a token. To get the
+-- next set of items, repeat the call with the returned token in the
+-- 'NextToken' parameter.
+dsasScheduledActionNames :: Lens' DescribeScheduledActions [Text]
+dsasScheduledActionNames = lens _dsasScheduledActionNames (\ s a -> s{_dsasScheduledActionNames = a}) . _Default . _Coerce;
 
--- | 'DescribeScheduledActionsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dsarNextToken' @::@ 'Maybe' 'Text'
---
--- * 'dsarScheduledUpdateGroupActions' @::@ ['ScheduledUpdateGroupAction']
---
-describeScheduledActionsResponse :: DescribeScheduledActionsResponse
-describeScheduledActionsResponse = DescribeScheduledActionsResponse
-    { _dsarScheduledUpdateGroupActions = mempty
-    , _dsarNextToken                   = Nothing
-    }
+instance AWSPager DescribeScheduledActions where
+        page rq rs
+          | stop (rs ^. dsarsNextToken) = Nothing
+          | stop (rs ^. dsarsScheduledUpdateGroupActions) =
+            Nothing
+          | otherwise =
+            Just $ rq & dsasNextToken .~ rs ^. dsarsNextToken
 
--- | The token to use when requesting the next set of items. If there are no
--- additional items to return, the string is empty.
-dsarNextToken :: Lens' DescribeScheduledActionsResponse (Maybe Text)
-dsarNextToken = lens _dsarNextToken (\s a -> s { _dsarNextToken = a })
+instance AWSRequest DescribeScheduledActions where
+        type Sv DescribeScheduledActions = AutoScaling
+        type Rs DescribeScheduledActions =
+             DescribeScheduledActionsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeScheduledActionsResult"
+              (\ s h x ->
+                 DescribeScheduledActionsResponse' <$>
+                   (x .@? "ScheduledUpdateGroupActions" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (x .@? "NextToken")
+                     <*> (pure (fromEnum s)))
 
--- | The scheduled actions.
-dsarScheduledUpdateGroupActions :: Lens' DescribeScheduledActionsResponse [ScheduledUpdateGroupAction]
-dsarScheduledUpdateGroupActions =
-    lens _dsarScheduledUpdateGroupActions
-        (\s a -> s { _dsarScheduledUpdateGroupActions = a })
-            . _List
+instance ToHeaders DescribeScheduledActions where
+        toHeaders = const mempty
 
 instance ToPath DescribeScheduledActions where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeScheduledActions where
-    toQuery DescribeScheduledActions{..} = mconcat
-        [ "AutoScalingGroupName" =? _dsa1AutoScalingGroupName
-        , "EndTime"              =? _dsa1EndTime
-        , "MaxRecords"           =? _dsa1MaxRecords
-        , "NextToken"            =? _dsa1NextToken
-        , "ScheduledActionNames" =? _dsa1ScheduledActionNames
-        , "StartTime"            =? _dsa1StartTime
-        ]
+        toQuery DescribeScheduledActions'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeScheduledActions" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "StartTime" =: _dsasStartTime,
+               "NextToken" =: _dsasNextToken,
+               "MaxRecords" =: _dsasMaxRecords,
+               "EndTime" =: _dsasEndTime,
+               "AutoScalingGroupName" =: _dsasAutoScalingGroupName,
+               "ScheduledActionNames" =:
+                 toQuery
+                   (toQueryList "member" <$> _dsasScheduledActionNames)]
 
-instance ToHeaders DescribeScheduledActions
+-- | /See:/ 'describeScheduledActionsResponse' smart constructor.
+data DescribeScheduledActionsResponse = DescribeScheduledActionsResponse'
+    { _dsarsScheduledUpdateGroupActions :: !(Maybe [ScheduledUpdateGroupAction])
+    , _dsarsNextToken                   :: !(Maybe Text)
+    , _dsarsStatus                      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeScheduledActions where
-    type Sv DescribeScheduledActions = AutoScaling
-    type Rs DescribeScheduledActions = DescribeScheduledActionsResponse
+-- | Creates a value of 'DescribeScheduledActionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsarsScheduledUpdateGroupActions'
+--
+-- * 'dsarsNextToken'
+--
+-- * 'dsarsStatus'
+describeScheduledActionsResponse
+    :: Int -- ^ 'dsarsStatus'
+    -> DescribeScheduledActionsResponse
+describeScheduledActionsResponse pStatus_ =
+    DescribeScheduledActionsResponse'
+    { _dsarsScheduledUpdateGroupActions = Nothing
+    , _dsarsNextToken = Nothing
+    , _dsarsStatus = pStatus_
+    }
 
-    request  = post "DescribeScheduledActions"
-    response = xmlResponse
+-- | The scheduled actions.
+dsarsScheduledUpdateGroupActions :: Lens' DescribeScheduledActionsResponse [ScheduledUpdateGroupAction]
+dsarsScheduledUpdateGroupActions = lens _dsarsScheduledUpdateGroupActions (\ s a -> s{_dsarsScheduledUpdateGroupActions = a}) . _Default . _Coerce;
 
-instance FromXML DescribeScheduledActionsResponse where
-    parseXML = withElement "DescribeScheduledActionsResult" $ \x -> DescribeScheduledActionsResponse
-        <$> x .@? "NextToken"
-        <*> x .@? "ScheduledUpdateGroupActions" .!@ mempty
+-- | The token to use when requesting the next set of items. If there are no
+-- additional items to return, the string is empty.
+dsarsNextToken :: Lens' DescribeScheduledActionsResponse (Maybe Text)
+dsarsNextToken = lens _dsarsNextToken (\ s a -> s{_dsarsNextToken = a});
 
-instance AWSPager DescribeScheduledActions where
-    page rq rs
-        | stop (rs ^. dsarNextToken) = Nothing
-        | otherwise = (\x -> rq & dsa1NextToken ?~ x)
-            <$> (rs ^. dsarNextToken)
+-- | The response status code.
+dsarsStatus :: Lens' DescribeScheduledActionsResponse Int
+dsarsStatus = lens _dsarsStatus (\ s a -> s{_dsarsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DescribeTags.hs b/gen/Network/AWS/AutoScaling/DescribeTags.hs
--- a/gen/Network/AWS/AutoScaling/DescribeTags.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeTags.hs
@@ -1,157 +1,172 @@
-{-# 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.AutoScaling.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 specified tags.
+-- Describes the specified tags.
 --
--- You can use filters to limit the results. For example, you can query for the
--- tags for a specific Auto Scaling group. You can specify multiple values for a
--- filter. A tag must match at least one of the specified values for it to be
--- included in the results.
+-- You can use filters to limit the results. For example, you can query for
+-- the tags for a specific Auto Scaling group. You can specify multiple
+-- values for a filter. A tag must match at least one of the specified
+-- values for it to be included in the results.
 --
--- You can also specify multiple filters. The result includes information for a
--- particular tag only if it matches all the filters. If there's no match, no
--- special message is returned.
+-- You can also specify multiple filters. The result includes information
+-- for a particular tag only if it matches all the filters. If there\'s no
+-- match, no special message is returned.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeTags.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeTags.html AWS API Reference> for DescribeTags.
+--
+-- This operation returns paginated results.
 module Network.AWS.AutoScaling.DescribeTags
     (
-    -- * Request
-      DescribeTags
-    -- ** Request constructor
-    , describeTags
-    -- ** Request lenses
+    -- * Creating a Request
+      describeTags
+    , DescribeTags
+    -- * Request Lenses
     , dtFilters
-    , dtMaxRecords
     , dtNextToken
+    , dtMaxRecords
 
-    -- * Response
-    , DescribeTagsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeTagsResponse
-    -- ** Response lenses
-    , dtrNextToken
-    , dtrTags
+    , DescribeTagsResponse
+    -- * Response Lenses
+    , dtrsNextToken
+    , dtrsTags
+    , dtrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeTags = DescribeTags
-    { _dtFilters    :: List "member" Filter
-    , _dtMaxRecords :: Maybe Int
-    , _dtNextToken  :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'describeTags' smart constructor.
+data DescribeTags = DescribeTags'
+    { _dtFilters    :: !(Maybe [Filter])
+    , _dtNextToken  :: !(Maybe Text)
+    , _dtMaxRecords :: !(Maybe Int)
+    } 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.
 --
--- * 'dtFilters' @::@ ['Filter']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dtMaxRecords' @::@ 'Maybe' 'Int'
+-- * 'dtFilters'
 --
--- * 'dtNextToken' @::@ 'Maybe' 'Text'
+-- * 'dtNextToken'
 --
-describeTags :: DescribeTags
-describeTags = DescribeTags
-    { _dtFilters    = mempty
-    , _dtNextToken  = Nothing
+-- * 'dtMaxRecords'
+describeTags
+    :: DescribeTags
+describeTags =
+    DescribeTags'
+    { _dtFilters = Nothing
+    , _dtNextToken = Nothing
     , _dtMaxRecords = Nothing
     }
 
--- | The value of the filter type used to identify the tags to be returned. For
--- example, you can filter so that tags are returned according to Auto Scaling
--- group, the key and value, or whether the new tag will be applied to instances
--- launched after the tag is created (PropagateAtLaunch).
+-- | A filter used to scope the tags to return.
 dtFilters :: Lens' DescribeTags [Filter]
-dtFilters = lens _dtFilters (\s a -> s { _dtFilters = a }) . _List
+dtFilters = lens _dtFilters (\ s a -> s{_dtFilters = a}) . _Default . _Coerce;
 
+-- | The token for the next set of items to return. (You received this token
+-- from a previous call.)
+dtNextToken :: Lens' DescribeTags (Maybe Text)
+dtNextToken = lens _dtNextToken (\ s a -> s{_dtNextToken = a});
+
 -- | The maximum number of items to return with this call.
 dtMaxRecords :: Lens' DescribeTags (Maybe Int)
-dtMaxRecords = lens _dtMaxRecords (\s a -> s { _dtMaxRecords = a })
+dtMaxRecords = lens _dtMaxRecords (\ s a -> s{_dtMaxRecords = a});
 
--- | The token for the next set of items to return. (You received this token from
--- a previous call.)
-dtNextToken :: Lens' DescribeTags (Maybe Text)
-dtNextToken = lens _dtNextToken (\s a -> s { _dtNextToken = a })
+instance AWSPager DescribeTags where
+        page rq rs
+          | stop (rs ^. dtrsNextToken) = Nothing
+          | stop (rs ^. dtrsTags) = Nothing
+          | otherwise =
+            Just $ rq & dtNextToken .~ rs ^. dtrsNextToken
 
-data DescribeTagsResponse = DescribeTagsResponse
-    { _dtrNextToken :: Maybe Text
-    , _dtrTags      :: List "member" TagDescription
-    } deriving (Eq, Read, Show)
+instance AWSRequest DescribeTags where
+        type Sv DescribeTags = AutoScaling
+        type Rs DescribeTags = DescribeTagsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DescribeTagsResult"
+              (\ s h x ->
+                 DescribeTagsResponse' <$>
+                   (x .@? "NextToken") <*>
+                     (x .@? "Tags" .!@ mempty >>=
+                        may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
--- | 'DescribeTagsResponse' constructor.
+instance ToHeaders DescribeTags where
+        toHeaders = const mempty
+
+instance ToPath DescribeTags where
+        toPath = const "/"
+
+instance ToQuery DescribeTags where
+        toQuery DescribeTags'{..}
+          = mconcat
+              ["Action" =: ("DescribeTags" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "Filters" =:
+                 toQuery (toQueryList "member" <$> _dtFilters),
+               "NextToken" =: _dtNextToken,
+               "MaxRecords" =: _dtMaxRecords]
+
+-- | /See:/ 'describeTagsResponse' smart constructor.
+data DescribeTagsResponse = DescribeTagsResponse'
+    { _dtrsNextToken :: !(Maybe Text)
+    , _dtrsTags      :: !(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:
 --
--- * 'dtrNextToken' @::@ 'Maybe' 'Text'
+-- * 'dtrsNextToken'
 --
--- * 'dtrTags' @::@ ['TagDescription']
+-- * 'dtrsTags'
 --
-describeTagsResponse :: DescribeTagsResponse
-describeTagsResponse = DescribeTagsResponse
-    { _dtrTags      = mempty
-    , _dtrNextToken = Nothing
+-- * 'dtrsStatus'
+describeTagsResponse
+    :: Int -- ^ 'dtrsStatus'
+    -> DescribeTagsResponse
+describeTagsResponse pStatus_ =
+    DescribeTagsResponse'
+    { _dtrsNextToken = Nothing
+    , _dtrsTags = Nothing
+    , _dtrsStatus = pStatus_
     }
 
 -- | The token to use when requesting the next set of items. If there are no
 -- additional items to return, the string is empty.
-dtrNextToken :: Lens' DescribeTagsResponse (Maybe Text)
-dtrNextToken = lens _dtrNextToken (\s a -> s { _dtrNextToken = a })
+dtrsNextToken :: Lens' DescribeTagsResponse (Maybe Text)
+dtrsNextToken = lens _dtrsNextToken (\ s a -> s{_dtrsNextToken = a});
 
 -- | The tags.
-dtrTags :: Lens' DescribeTagsResponse [TagDescription]
-dtrTags = lens _dtrTags (\s a -> s { _dtrTags = a }) . _List
-
-instance ToPath DescribeTags where
-    toPath = const "/"
-
-instance ToQuery DescribeTags where
-    toQuery DescribeTags{..} = mconcat
-        [ "Filters"    =? _dtFilters
-        , "MaxRecords" =? _dtMaxRecords
-        , "NextToken"  =? _dtNextToken
-        ]
-
-instance ToHeaders DescribeTags
-
-instance AWSRequest DescribeTags where
-    type Sv DescribeTags = AutoScaling
-    type Rs DescribeTags = DescribeTagsResponse
-
-    request  = post "DescribeTags"
-    response = xmlResponse
-
-instance FromXML DescribeTagsResponse where
-    parseXML = withElement "DescribeTagsResult" $ \x -> DescribeTagsResponse
-        <$> x .@? "NextToken"
-        <*> x .@? "Tags" .!@ mempty
+dtrsTags :: Lens' DescribeTagsResponse [TagDescription]
+dtrsTags = lens _dtrsTags (\ s a -> s{_dtrsTags = a}) . _Default . _Coerce;
 
-instance AWSPager DescribeTags where
-    page rq rs
-        | stop (rs ^. dtrNextToken) = Nothing
-        | otherwise = (\x -> rq & dtNextToken ?~ x)
-            <$> (rs ^. dtrNextToken)
+-- | The response status code.
+dtrsStatus :: Lens' DescribeTagsResponse Int
+dtrsStatus = lens _dtrsStatus (\ s a -> s{_dtrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DescribeTerminationPolicyTypes.hs b/gen/Network/AWS/AutoScaling/DescribeTerminationPolicyTypes.hs
--- a/gen/Network/AWS/AutoScaling/DescribeTerminationPolicyTypes.hs
+++ b/gen/Network/AWS/AutoScaling/DescribeTerminationPolicyTypes.hs
@@ -1,100 +1,115 @@
-{-# 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.AutoScaling.DescribeTerminationPolicyTypes
--- 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.
-
--- | Lists the termination policies supported by Auto Scaling.
+-- Describes the termination policies supported by Auto Scaling.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeTerminationPolicyTypes.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DescribeTerminationPolicyTypes.html AWS API Reference> for DescribeTerminationPolicyTypes.
 module Network.AWS.AutoScaling.DescribeTerminationPolicyTypes
     (
-    -- * Request
-      DescribeTerminationPolicyTypes
-    -- ** Request constructor
-    , describeTerminationPolicyTypes
+    -- * Creating a Request
+      describeTerminationPolicyTypes
+    , DescribeTerminationPolicyTypes
 
-    -- * Response
-    , DescribeTerminationPolicyTypesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeTerminationPolicyTypesResponse
-    -- ** Response lenses
-    , dtptrTerminationPolicyTypes
+    , DescribeTerminationPolicyTypesResponse
+    -- * Response Lenses
+    , dtptrsTerminationPolicyTypes
+    , dtptrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
-
-data DescribeTerminationPolicyTypes = DescribeTerminationPolicyTypes
-    deriving (Eq, Ord, Read, Show, Generic)
-
--- | 'DescribeTerminationPolicyTypes' constructor.
-describeTerminationPolicyTypes :: DescribeTerminationPolicyTypes
-describeTerminationPolicyTypes = DescribeTerminationPolicyTypes
-
-newtype DescribeTerminationPolicyTypesResponse = DescribeTerminationPolicyTypesResponse
-    { _dtptrTerminationPolicyTypes :: List "member" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeTerminationPolicyTypesResponse where
-    type Item DescribeTerminationPolicyTypesResponse = Text
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-    fromList = DescribeTerminationPolicyTypesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dtptrTerminationPolicyTypes
+-- | /See:/ 'describeTerminationPolicyTypes' smart constructor.
+data DescribeTerminationPolicyTypes =
+    DescribeTerminationPolicyTypes'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeTerminationPolicyTypesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dtptrTerminationPolicyTypes' @::@ ['Text']
+-- | Creates a value of 'DescribeTerminationPolicyTypes' with the minimum fields required to make a request.
 --
-describeTerminationPolicyTypesResponse :: DescribeTerminationPolicyTypesResponse
-describeTerminationPolicyTypesResponse = DescribeTerminationPolicyTypesResponse
-    { _dtptrTerminationPolicyTypes = mempty
-    }
+describeTerminationPolicyTypes
+    :: DescribeTerminationPolicyTypes
+describeTerminationPolicyTypes = DescribeTerminationPolicyTypes'
 
--- | The Termination policies supported by Auto Scaling. They are: 'OldestInstance', 'OldestLaunchConfiguration', 'NewestInstance', 'ClosestToNextInstanceHour', and 'Default'.
-dtptrTerminationPolicyTypes :: Lens' DescribeTerminationPolicyTypesResponse [Text]
-dtptrTerminationPolicyTypes =
-    lens _dtptrTerminationPolicyTypes
-        (\s a -> s { _dtptrTerminationPolicyTypes = a })
-            . _List
+instance AWSRequest DescribeTerminationPolicyTypes
+         where
+        type Sv DescribeTerminationPolicyTypes = AutoScaling
+        type Rs DescribeTerminationPolicyTypes =
+             DescribeTerminationPolicyTypesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "DescribeTerminationPolicyTypesResult"
+              (\ s h x ->
+                 DescribeTerminationPolicyTypesResponse' <$>
+                   (x .@? "TerminationPolicyTypes" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
+instance ToHeaders DescribeTerminationPolicyTypes
+         where
+        toHeaders = const mempty
+
 instance ToPath DescribeTerminationPolicyTypes where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeTerminationPolicyTypes where
-    toQuery = const mempty
+        toQuery
+          = const
+              (mconcat
+                 ["Action" =:
+                    ("DescribeTerminationPolicyTypes" :: ByteString),
+                  "Version" =: ("2011-01-01" :: ByteString)])
 
-instance ToHeaders DescribeTerminationPolicyTypes
+-- | /See:/ 'describeTerminationPolicyTypesResponse' smart constructor.
+data DescribeTerminationPolicyTypesResponse = DescribeTerminationPolicyTypesResponse'
+    { _dtptrsTerminationPolicyTypes :: !(Maybe [Text])
+    , _dtptrsStatus                 :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeTerminationPolicyTypes where
-    type Sv DescribeTerminationPolicyTypes = AutoScaling
-    type Rs DescribeTerminationPolicyTypes = DescribeTerminationPolicyTypesResponse
+-- | Creates a value of 'DescribeTerminationPolicyTypesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtptrsTerminationPolicyTypes'
+--
+-- * 'dtptrsStatus'
+describeTerminationPolicyTypesResponse
+    :: Int -- ^ 'dtptrsStatus'
+    -> DescribeTerminationPolicyTypesResponse
+describeTerminationPolicyTypesResponse pStatus_ =
+    DescribeTerminationPolicyTypesResponse'
+    { _dtptrsTerminationPolicyTypes = Nothing
+    , _dtptrsStatus = pStatus_
+    }
 
-    request  = post "DescribeTerminationPolicyTypes"
-    response = xmlResponse
+-- | The termination policies supported by Auto Scaling ('OldestInstance',
+-- 'OldestLaunchConfiguration', 'NewestInstance',
+-- 'ClosestToNextInstanceHour', and 'Default').
+dtptrsTerminationPolicyTypes :: Lens' DescribeTerminationPolicyTypesResponse [Text]
+dtptrsTerminationPolicyTypes = lens _dtptrsTerminationPolicyTypes (\ s a -> s{_dtptrsTerminationPolicyTypes = a}) . _Default . _Coerce;
 
-instance FromXML DescribeTerminationPolicyTypesResponse where
-    parseXML = withElement "DescribeTerminationPolicyTypesResult" $ \x -> DescribeTerminationPolicyTypesResponse
-        <$> x .@? "TerminationPolicyTypes" .!@ mempty
+-- | The response status code.
+dtptrsStatus :: Lens' DescribeTerminationPolicyTypesResponse Int
+dtptrsStatus = lens _dtptrsStatus (\ s a -> s{_dtptrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DetachInstances.hs b/gen/Network/AWS/AutoScaling/DetachInstances.hs
--- a/gen/Network/AWS/AutoScaling/DetachInstances.hs
+++ b/gen/Network/AWS/AutoScaling/DetachInstances.hs
@@ -1,144 +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.AutoScaling.DetachInstances
--- 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 instances from the specified Auto Scaling group. After
--- the instances are detached, you can manage them independently from the rest
--- of the Auto Scaling group.
+-- Removes one or more instances from the specified Auto Scaling group.
+-- After the instances are detached, you can manage them independently from
+-- the rest of the Auto Scaling group.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/detach-instance-asg.html Detach EC2 Instances from Your Auto Scaling Group>
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/detach-instance-asg.html Detach EC2 Instances from Your Auto Scaling Group>
 -- in the /Auto Scaling Developer Guide/.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DetachInstances.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DetachInstances.html AWS API Reference> for DetachInstances.
 module Network.AWS.AutoScaling.DetachInstances
     (
-    -- * Request
-      DetachInstances
-    -- ** Request constructor
-    , detachInstances
-    -- ** Request lenses
-    , diAutoScalingGroupName
+    -- * Creating a Request
+      detachInstances
+    , DetachInstances
+    -- * Request Lenses
     , diInstanceIds
+    , diAutoScalingGroupName
     , diShouldDecrementDesiredCapacity
 
-    -- * Response
-    , DetachInstancesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , detachInstancesResponse
-    -- ** Response lenses
-    , dirActivities
+    , DetachInstancesResponse
+    -- * Response Lenses
+    , dirsActivities
+    , dirsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DetachInstances = DetachInstances
-    { _diAutoScalingGroupName           :: Text
-    , _diInstanceIds                    :: List "member" Text
-    , _diShouldDecrementDesiredCapacity :: Bool
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'detachInstances' smart constructor.
+data DetachInstances = DetachInstances'
+    { _diInstanceIds                    :: !(Maybe [Text])
+    , _diAutoScalingGroupName           :: !Text
+    , _diShouldDecrementDesiredCapacity :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DetachInstances' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DetachInstances' with the minimum fields required to make a request.
 --
--- * 'diAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'diInstanceIds' @::@ ['Text']
+-- * 'diInstanceIds'
 --
--- * 'diShouldDecrementDesiredCapacity' @::@ 'Bool'
+-- * 'diAutoScalingGroupName'
 --
-detachInstances :: Text -- ^ 'diAutoScalingGroupName'
-                -> Bool -- ^ 'diShouldDecrementDesiredCapacity'
-                -> DetachInstances
-detachInstances p1 p2 = DetachInstances
-    { _diAutoScalingGroupName           = p1
-    , _diShouldDecrementDesiredCapacity = p2
-    , _diInstanceIds                    = mempty
+-- * 'diShouldDecrementDesiredCapacity'
+detachInstances
+    :: Text -- ^ 'diAutoScalingGroupName'
+    -> Bool -- ^ 'diShouldDecrementDesiredCapacity'
+    -> DetachInstances
+detachInstances pAutoScalingGroupName_ pShouldDecrementDesiredCapacity_ =
+    DetachInstances'
+    { _diInstanceIds = Nothing
+    , _diAutoScalingGroupName = pAutoScalingGroupName_
+    , _diShouldDecrementDesiredCapacity = pShouldDecrementDesiredCapacity_
     }
 
--- | The name of the group.
-diAutoScalingGroupName :: Lens' DetachInstances Text
-diAutoScalingGroupName =
-    lens _diAutoScalingGroupName (\s a -> s { _diAutoScalingGroupName = a })
-
 -- | One or more instance IDs.
 diInstanceIds :: Lens' DetachInstances [Text]
-diInstanceIds = lens _diInstanceIds (\s a -> s { _diInstanceIds = a }) . _List
-
--- | If 'True', the Auto Scaling group decrements the desired capacity value by the
--- number of instances detached.
-diShouldDecrementDesiredCapacity :: Lens' DetachInstances Bool
-diShouldDecrementDesiredCapacity =
-    lens _diShouldDecrementDesiredCapacity
-        (\s a -> s { _diShouldDecrementDesiredCapacity = a })
-
-newtype DetachInstancesResponse = DetachInstancesResponse
-    { _dirActivities :: List "member" Activity
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+diInstanceIds = lens _diInstanceIds (\ s a -> s{_diInstanceIds = a}) . _Default . _Coerce;
 
-instance GHC.Exts.IsList DetachInstancesResponse where
-    type Item DetachInstancesResponse = Activity
+-- | The name of the group.
+diAutoScalingGroupName :: Lens' DetachInstances Text
+diAutoScalingGroupName = lens _diAutoScalingGroupName (\ s a -> s{_diAutoScalingGroupName = a});
 
-    fromList = DetachInstancesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dirActivities
+-- | If 'True', the Auto Scaling group decrements the desired capacity value
+-- by the number of instances detached.
+diShouldDecrementDesiredCapacity :: Lens' DetachInstances Bool
+diShouldDecrementDesiredCapacity = lens _diShouldDecrementDesiredCapacity (\ s a -> s{_diShouldDecrementDesiredCapacity = a});
 
--- | 'DetachInstancesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dirActivities' @::@ ['Activity']
---
-detachInstancesResponse :: DetachInstancesResponse
-detachInstancesResponse = DetachInstancesResponse
-    { _dirActivities = mempty
-    }
+instance AWSRequest DetachInstances where
+        type Sv DetachInstances = AutoScaling
+        type Rs DetachInstances = DetachInstancesResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DetachInstancesResult"
+              (\ s h x ->
+                 DetachInstancesResponse' <$>
+                   (x .@? "Activities" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
--- | The activities related to detaching the instances from the Auto Scaling group.
-dirActivities :: Lens' DetachInstancesResponse [Activity]
-dirActivities = lens _dirActivities (\s a -> s { _dirActivities = a }) . _List
+instance ToHeaders DetachInstances where
+        toHeaders = const mempty
 
 instance ToPath DetachInstances where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DetachInstances where
-    toQuery DetachInstances{..} = mconcat
-        [ "AutoScalingGroupName"           =? _diAutoScalingGroupName
-        , "InstanceIds"                    =? _diInstanceIds
-        , "ShouldDecrementDesiredCapacity" =? _diShouldDecrementDesiredCapacity
-        ]
+        toQuery DetachInstances'{..}
+          = mconcat
+              ["Action" =: ("DetachInstances" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "InstanceIds" =:
+                 toQuery (toQueryList "member" <$> _diInstanceIds),
+               "AutoScalingGroupName" =: _diAutoScalingGroupName,
+               "ShouldDecrementDesiredCapacity" =:
+                 _diShouldDecrementDesiredCapacity]
 
-instance ToHeaders DetachInstances
+-- | /See:/ 'detachInstancesResponse' smart constructor.
+data DetachInstancesResponse = DetachInstancesResponse'
+    { _dirsActivities :: !(Maybe [Activity])
+    , _dirsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DetachInstances where
-    type Sv DetachInstances = AutoScaling
-    type Rs DetachInstances = DetachInstancesResponse
+-- | Creates a value of 'DetachInstancesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dirsActivities'
+--
+-- * 'dirsStatus'
+detachInstancesResponse
+    :: Int -- ^ 'dirsStatus'
+    -> DetachInstancesResponse
+detachInstancesResponse pStatus_ =
+    DetachInstancesResponse'
+    { _dirsActivities = Nothing
+    , _dirsStatus = pStatus_
+    }
 
-    request  = post "DetachInstances"
-    response = xmlResponse
+-- | The activities related to detaching the instances from the Auto Scaling
+-- group.
+dirsActivities :: Lens' DetachInstancesResponse [Activity]
+dirsActivities = lens _dirsActivities (\ s a -> s{_dirsActivities = a}) . _Default . _Coerce;
 
-instance FromXML DetachInstancesResponse where
-    parseXML = withElement "DetachInstancesResult" $ \x -> DetachInstancesResponse
-        <$> x .@? "Activities" .!@ mempty
+-- | The response status code.
+dirsStatus :: Lens' DetachInstancesResponse Int
+dirsStatus = lens _dirsStatus (\ s a -> s{_dirsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DetachLoadBalancers.hs b/gen/Network/AWS/AutoScaling/DetachLoadBalancers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AutoScaling/DetachLoadBalancers.hs
@@ -0,0 +1,127 @@
+{-# 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.AutoScaling.DetachLoadBalancers
+-- 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)
+--
+-- Removes one or more load balancers from the specified Auto Scaling
+-- group.
+--
+-- When you detach a load balancer, it enters the 'Removing' state while
+-- deregistering the instances in the group. When all instances are
+-- deregistered, then you can no longer describe the load balancer using
+-- DescribeLoadBalancers. Note that the instances remain running.
+--
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DetachLoadBalancers.html AWS API Reference> for DetachLoadBalancers.
+module Network.AWS.AutoScaling.DetachLoadBalancers
+    (
+    -- * Creating a Request
+      detachLoadBalancers
+    , DetachLoadBalancers
+    -- * Request Lenses
+    , dAutoScalingGroupName
+    , dLoadBalancerNames
+
+    -- * Destructuring the Response
+    , detachLoadBalancersResponse
+    , DetachLoadBalancersResponse
+    -- * Response Lenses
+    , dlbsrsStatus
+    ) where
+
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'detachLoadBalancers' smart constructor.
+data DetachLoadBalancers = DetachLoadBalancers'
+    { _dAutoScalingGroupName :: !(Maybe Text)
+    , _dLoadBalancerNames    :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DetachLoadBalancers' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dAutoScalingGroupName'
+--
+-- * 'dLoadBalancerNames'
+detachLoadBalancers
+    :: DetachLoadBalancers
+detachLoadBalancers =
+    DetachLoadBalancers'
+    { _dAutoScalingGroupName = Nothing
+    , _dLoadBalancerNames = Nothing
+    }
+
+-- | The name of the group.
+dAutoScalingGroupName :: Lens' DetachLoadBalancers (Maybe Text)
+dAutoScalingGroupName = lens _dAutoScalingGroupName (\ s a -> s{_dAutoScalingGroupName = a});
+
+-- | One or more load balancer names.
+dLoadBalancerNames :: Lens' DetachLoadBalancers [Text]
+dLoadBalancerNames = lens _dLoadBalancerNames (\ s a -> s{_dLoadBalancerNames = a}) . _Default . _Coerce;
+
+instance AWSRequest DetachLoadBalancers where
+        type Sv DetachLoadBalancers = AutoScaling
+        type Rs DetachLoadBalancers =
+             DetachLoadBalancersResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "DetachLoadBalancersResult"
+              (\ s h x ->
+                 DetachLoadBalancersResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders DetachLoadBalancers where
+        toHeaders = const mempty
+
+instance ToPath DetachLoadBalancers where
+        toPath = const "/"
+
+instance ToQuery DetachLoadBalancers where
+        toQuery DetachLoadBalancers'{..}
+          = mconcat
+              ["Action" =: ("DetachLoadBalancers" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "AutoScalingGroupName" =: _dAutoScalingGroupName,
+               "LoadBalancerNames" =:
+                 toQuery
+                   (toQueryList "member" <$> _dLoadBalancerNames)]
+
+-- | /See:/ 'detachLoadBalancersResponse' smart constructor.
+newtype DetachLoadBalancersResponse = DetachLoadBalancersResponse'
+    { _dlbsrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DetachLoadBalancersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlbsrsStatus'
+detachLoadBalancersResponse
+    :: Int -- ^ 'dlbsrsStatus'
+    -> DetachLoadBalancersResponse
+detachLoadBalancersResponse pStatus_ =
+    DetachLoadBalancersResponse'
+    { _dlbsrsStatus = pStatus_
+    }
+
+-- | The response status code.
+dlbsrsStatus :: Lens' DetachLoadBalancersResponse Int
+dlbsrsStatus = lens _dlbsrsStatus (\ s a -> s{_dlbsrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/DisableMetricsCollection.hs b/gen/Network/AWS/AutoScaling/DisableMetricsCollection.hs
--- a/gen/Network/AWS/AutoScaling/DisableMetricsCollection.hs
+++ b/gen/Network/AWS/AutoScaling/DisableMetricsCollection.hs
@@ -1,120 +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.AutoScaling.DisableMetricsCollection
--- 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.
-
--- | Disables monitoring of the specified metrics for the specified Auto Scaling
--- group.
+-- Disables monitoring of the specified metrics for the specified Auto
+-- Scaling group.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DisableMetricsCollection.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_DisableMetricsCollection.html AWS API Reference> for DisableMetricsCollection.
 module Network.AWS.AutoScaling.DisableMetricsCollection
     (
-    -- * Request
-      DisableMetricsCollection
-    -- ** Request constructor
-    , disableMetricsCollection
-    -- ** Request lenses
-    , dmcAutoScalingGroupName
+    -- * Creating a Request
+      disableMetricsCollection
+    , DisableMetricsCollection
+    -- * Request Lenses
     , dmcMetrics
+    , dmcAutoScalingGroupName
 
-    -- * Response
-    , DisableMetricsCollectionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , disableMetricsCollectionResponse
+    , DisableMetricsCollectionResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DisableMetricsCollection = DisableMetricsCollection
-    { _dmcAutoScalingGroupName :: Text
-    , _dmcMetrics              :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'disableMetricsCollection' smart constructor.
+data DisableMetricsCollection = DisableMetricsCollection'
+    { _dmcMetrics              :: !(Maybe [Text])
+    , _dmcAutoScalingGroupName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DisableMetricsCollection' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DisableMetricsCollection' with the minimum fields required to make a request.
 --
--- * 'dmcAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dmcMetrics' @::@ ['Text']
+-- * 'dmcMetrics'
 --
-disableMetricsCollection :: Text -- ^ 'dmcAutoScalingGroupName'
-                         -> DisableMetricsCollection
-disableMetricsCollection p1 = DisableMetricsCollection
-    { _dmcAutoScalingGroupName = p1
-    , _dmcMetrics              = mempty
+-- * 'dmcAutoScalingGroupName'
+disableMetricsCollection
+    :: Text -- ^ 'dmcAutoScalingGroupName'
+    -> DisableMetricsCollection
+disableMetricsCollection pAutoScalingGroupName_ =
+    DisableMetricsCollection'
+    { _dmcMetrics = Nothing
+    , _dmcAutoScalingGroupName = pAutoScalingGroupName_
     }
 
--- | The name or Amazon Resource Name (ARN) of the group.
-dmcAutoScalingGroupName :: Lens' DisableMetricsCollection Text
-dmcAutoScalingGroupName =
-    lens _dmcAutoScalingGroupName (\s a -> s { _dmcAutoScalingGroupName = a })
-
--- | One or more of the following metrics:
+-- | One or more metrics. If you omit this parameter, all metrics are
+-- disabled.
 --
--- GroupMinSize
+-- -   'GroupMinSize'
 --
--- GroupMaxSize
+-- -   'GroupMaxSize'
 --
--- GroupDesiredCapacity
+-- -   'GroupDesiredCapacity'
 --
--- GroupInServiceInstances
+-- -   'GroupInServiceInstances'
 --
--- GroupPendingInstances
+-- -   'GroupPendingInstances'
 --
--- GroupStandbyInstances
+-- -   'GroupStandbyInstances'
 --
--- GroupTerminatingInstances
+-- -   'GroupTerminatingInstances'
 --
--- GroupTotalInstances
+-- -   'GroupTotalInstances'
 --
--- If you omit this parameter, all metrics are disabled.
 dmcMetrics :: Lens' DisableMetricsCollection [Text]
-dmcMetrics = lens _dmcMetrics (\s a -> s { _dmcMetrics = a }) . _List
+dmcMetrics = lens _dmcMetrics (\ s a -> s{_dmcMetrics = a}) . _Default . _Coerce;
 
-data DisableMetricsCollectionResponse = DisableMetricsCollectionResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The name or Amazon Resource Name (ARN) of the group.
+dmcAutoScalingGroupName :: Lens' DisableMetricsCollection Text
+dmcAutoScalingGroupName = lens _dmcAutoScalingGroupName (\ s a -> s{_dmcAutoScalingGroupName = a});
 
--- | 'DisableMetricsCollectionResponse' constructor.
-disableMetricsCollectionResponse :: DisableMetricsCollectionResponse
-disableMetricsCollectionResponse = DisableMetricsCollectionResponse
+instance AWSRequest DisableMetricsCollection where
+        type Sv DisableMetricsCollection = AutoScaling
+        type Rs DisableMetricsCollection =
+             DisableMetricsCollectionResponse
+        request = postQuery
+        response
+          = receiveNull DisableMetricsCollectionResponse'
 
+instance ToHeaders DisableMetricsCollection where
+        toHeaders = const mempty
+
 instance ToPath DisableMetricsCollection where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DisableMetricsCollection where
-    toQuery DisableMetricsCollection{..} = mconcat
-        [ "AutoScalingGroupName" =? _dmcAutoScalingGroupName
-        , "Metrics"              =? _dmcMetrics
-        ]
-
-instance ToHeaders DisableMetricsCollection
+        toQuery DisableMetricsCollection'{..}
+          = mconcat
+              ["Action" =:
+                 ("DisableMetricsCollection" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "Metrics" =:
+                 toQuery (toQueryList "member" <$> _dmcMetrics),
+               "AutoScalingGroupName" =: _dmcAutoScalingGroupName]
 
-instance AWSRequest DisableMetricsCollection where
-    type Sv DisableMetricsCollection = AutoScaling
-    type Rs DisableMetricsCollection = DisableMetricsCollectionResponse
+-- | /See:/ 'disableMetricsCollectionResponse' smart constructor.
+data DisableMetricsCollectionResponse =
+    DisableMetricsCollectionResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DisableMetricsCollection"
-    response = nullResponse DisableMetricsCollectionResponse
+-- | Creates a value of 'DisableMetricsCollectionResponse' with the minimum fields required to make a request.
+--
+disableMetricsCollectionResponse
+    :: DisableMetricsCollectionResponse
+disableMetricsCollectionResponse = DisableMetricsCollectionResponse'
diff --git a/gen/Network/AWS/AutoScaling/EnableMetricsCollection.hs b/gen/Network/AWS/AutoScaling/EnableMetricsCollection.hs
--- a/gen/Network/AWS/AutoScaling/EnableMetricsCollection.hs
+++ b/gen/Network/AWS/AutoScaling/EnableMetricsCollection.hs
@@ -1,140 +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.AutoScaling.EnableMetricsCollection
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Enables monitoring of the specified metrics for the specified Auto Scaling
--- group.
+-- Enables monitoring of the specified metrics for the specified Auto
+-- Scaling group.
 --
--- You can only enable metrics collection if 'InstanceMonitoring' in the launch
--- configuration for the group is set to 'True'.
+-- You can only enable metrics collection if 'InstanceMonitoring' in the
+-- launch configuration for the group is set to 'True'.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_EnableMetricsCollection.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_EnableMetricsCollection.html AWS API Reference> for EnableMetricsCollection.
 module Network.AWS.AutoScaling.EnableMetricsCollection
     (
-    -- * Request
-      EnableMetricsCollection
-    -- ** Request constructor
-    , enableMetricsCollection
-    -- ** Request lenses
+    -- * Creating a Request
+      enableMetricsCollection
+    , EnableMetricsCollection
+    -- * Request Lenses
+    , emcMetrics
     , emcAutoScalingGroupName
     , emcGranularity
-    , emcMetrics
 
-    -- * Response
-    , EnableMetricsCollectionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , enableMetricsCollectionResponse
+    , EnableMetricsCollectionResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data EnableMetricsCollection = EnableMetricsCollection
-    { _emcAutoScalingGroupName :: Text
-    , _emcGranularity          :: Text
-    , _emcMetrics              :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'enableMetricsCollection' smart constructor.
+data EnableMetricsCollection = EnableMetricsCollection'
+    { _emcMetrics              :: !(Maybe [Text])
+    , _emcAutoScalingGroupName :: !Text
+    , _emcGranularity          :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'EnableMetricsCollection' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'EnableMetricsCollection' with the minimum fields required to make a request.
 --
--- * 'emcAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'emcGranularity' @::@ 'Text'
+-- * 'emcMetrics'
 --
--- * 'emcMetrics' @::@ ['Text']
+-- * 'emcAutoScalingGroupName'
 --
-enableMetricsCollection :: Text -- ^ 'emcAutoScalingGroupName'
-                        -> Text -- ^ 'emcGranularity'
-                        -> EnableMetricsCollection
-enableMetricsCollection p1 p2 = EnableMetricsCollection
-    { _emcAutoScalingGroupName = p1
-    , _emcGranularity          = p2
-    , _emcMetrics              = mempty
+-- * 'emcGranularity'
+enableMetricsCollection
+    :: Text -- ^ 'emcAutoScalingGroupName'
+    -> Text -- ^ 'emcGranularity'
+    -> EnableMetricsCollection
+enableMetricsCollection pAutoScalingGroupName_ pGranularity_ =
+    EnableMetricsCollection'
+    { _emcMetrics = Nothing
+    , _emcAutoScalingGroupName = pAutoScalingGroupName_
+    , _emcGranularity = pGranularity_
     }
 
--- | The name or ARN of the Auto Scaling group.
-emcAutoScalingGroupName :: Lens' EnableMetricsCollection Text
-emcAutoScalingGroupName =
-    lens _emcAutoScalingGroupName (\s a -> s { _emcAutoScalingGroupName = a })
-
--- | The granularity to associate with the metrics to collect. Currently, the only
--- valid value is "1Minute".
-emcGranularity :: Lens' EnableMetricsCollection Text
-emcGranularity = lens _emcGranularity (\s a -> s { _emcGranularity = a })
-
--- | One or more of the following metrics:
---
--- GroupMinSize
---
--- GroupMaxSize
---
--- GroupDesiredCapacity
+-- | One or more metrics. If you omit this parameter, all metrics are
+-- enabled.
 --
--- GroupInServiceInstances
+-- -   'GroupMinSize'
 --
--- GroupPendingInstances
+-- -   'GroupMaxSize'
 --
--- GroupStandbyInstances
+-- -   'GroupDesiredCapacity'
 --
--- GroupTerminatingInstances
+-- -   'GroupInServiceInstances'
 --
--- GroupTotalInstances
+-- -   'GroupPendingInstances'
 --
--- If you omit this parameter, all metrics are enabled.
+-- -   'GroupStandbyInstances'
 --
--- The 'GroupStandbyInstances' metric is not returned by default. You must
--- explicitly request it when calling 'EnableMetricsCollection'.
+-- -   'GroupTerminatingInstances'
 --
+-- -   'GroupTotalInstances'
 --
+-- Note that the 'GroupStandbyInstances' metric is not enabled by default.
+-- You must explicitly request this metric.
 emcMetrics :: Lens' EnableMetricsCollection [Text]
-emcMetrics = lens _emcMetrics (\s a -> s { _emcMetrics = a }) . _List
+emcMetrics = lens _emcMetrics (\ s a -> s{_emcMetrics = a}) . _Default . _Coerce;
 
-data EnableMetricsCollectionResponse = EnableMetricsCollectionResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The name or ARN of the Auto Scaling group.
+emcAutoScalingGroupName :: Lens' EnableMetricsCollection Text
+emcAutoScalingGroupName = lens _emcAutoScalingGroupName (\ s a -> s{_emcAutoScalingGroupName = a});
 
--- | 'EnableMetricsCollectionResponse' constructor.
-enableMetricsCollectionResponse :: EnableMetricsCollectionResponse
-enableMetricsCollectionResponse = EnableMetricsCollectionResponse
+-- | The granularity to associate with the metrics to collect. The only valid
+-- value is '1Minute'.
+emcGranularity :: Lens' EnableMetricsCollection Text
+emcGranularity = lens _emcGranularity (\ s a -> s{_emcGranularity = a});
 
+instance AWSRequest EnableMetricsCollection where
+        type Sv EnableMetricsCollection = AutoScaling
+        type Rs EnableMetricsCollection =
+             EnableMetricsCollectionResponse
+        request = postQuery
+        response
+          = receiveNull EnableMetricsCollectionResponse'
+
+instance ToHeaders EnableMetricsCollection where
+        toHeaders = const mempty
+
 instance ToPath EnableMetricsCollection where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery EnableMetricsCollection where
-    toQuery EnableMetricsCollection{..} = mconcat
-        [ "AutoScalingGroupName" =? _emcAutoScalingGroupName
-        , "Granularity"          =? _emcGranularity
-        , "Metrics"              =? _emcMetrics
-        ]
-
-instance ToHeaders EnableMetricsCollection
+        toQuery EnableMetricsCollection'{..}
+          = mconcat
+              ["Action" =:
+                 ("EnableMetricsCollection" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "Metrics" =:
+                 toQuery (toQueryList "member" <$> _emcMetrics),
+               "AutoScalingGroupName" =: _emcAutoScalingGroupName,
+               "Granularity" =: _emcGranularity]
 
-instance AWSRequest EnableMetricsCollection where
-    type Sv EnableMetricsCollection = AutoScaling
-    type Rs EnableMetricsCollection = EnableMetricsCollectionResponse
+-- | /See:/ 'enableMetricsCollectionResponse' smart constructor.
+data EnableMetricsCollectionResponse =
+    EnableMetricsCollectionResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "EnableMetricsCollection"
-    response = nullResponse EnableMetricsCollectionResponse
+-- | Creates a value of 'EnableMetricsCollectionResponse' with the minimum fields required to make a request.
+--
+enableMetricsCollectionResponse
+    :: EnableMetricsCollectionResponse
+enableMetricsCollectionResponse = EnableMetricsCollectionResponse'
diff --git a/gen/Network/AWS/AutoScaling/EnterStandby.hs b/gen/Network/AWS/AutoScaling/EnterStandby.hs
--- a/gen/Network/AWS/AutoScaling/EnterStandby.hs
+++ b/gen/Network/AWS/AutoScaling/EnterStandby.hs
@@ -1,144 +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.AutoScaling.EnterStandby
--- 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.
-
--- | Moves the specified instances into 'Standby' mode.
+-- Moves the specified instances into 'Standby' mode.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingInServiceState.html Auto Scaling InService State> in the /Auto ScalingDeveloper Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingInServiceState.html Auto Scaling InService State>
+-- in the /Auto Scaling Developer Guide/.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_EnterStandby.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_EnterStandby.html AWS API Reference> for EnterStandby.
 module Network.AWS.AutoScaling.EnterStandby
     (
-    -- * Request
-      EnterStandby
-    -- ** Request constructor
-    , enterStandby
-    -- ** Request lenses
-    , esAutoScalingGroupName
+    -- * Creating a Request
+      enterStandby
+    , EnterStandby
+    -- * Request Lenses
     , esInstanceIds
+    , esAutoScalingGroupName
     , esShouldDecrementDesiredCapacity
 
-    -- * Response
-    , EnterStandbyResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , enterStandbyResponse
-    -- ** Response lenses
-    , esr1Activities
+    , EnterStandbyResponse
+    -- * Response Lenses
+    , esrsActivities
+    , esrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data EnterStandby = EnterStandby
-    { _esAutoScalingGroupName           :: Text
-    , _esInstanceIds                    :: List "member" Text
-    , _esShouldDecrementDesiredCapacity :: Bool
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'enterStandby' smart constructor.
+data EnterStandby = EnterStandby'
+    { _esInstanceIds                    :: !(Maybe [Text])
+    , _esAutoScalingGroupName           :: !Text
+    , _esShouldDecrementDesiredCapacity :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'EnterStandby' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'EnterStandby' with the minimum fields required to make a request.
 --
--- * 'esAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'esInstanceIds' @::@ ['Text']
+-- * 'esInstanceIds'
 --
--- * 'esShouldDecrementDesiredCapacity' @::@ 'Bool'
+-- * 'esAutoScalingGroupName'
 --
-enterStandby :: Text -- ^ 'esAutoScalingGroupName'
-             -> Bool -- ^ 'esShouldDecrementDesiredCapacity'
-             -> EnterStandby
-enterStandby p1 p2 = EnterStandby
-    { _esAutoScalingGroupName           = p1
-    , _esShouldDecrementDesiredCapacity = p2
-    , _esInstanceIds                    = mempty
+-- * 'esShouldDecrementDesiredCapacity'
+enterStandby
+    :: Text -- ^ 'esAutoScalingGroupName'
+    -> Bool -- ^ 'esShouldDecrementDesiredCapacity'
+    -> EnterStandby
+enterStandby pAutoScalingGroupName_ pShouldDecrementDesiredCapacity_ =
+    EnterStandby'
+    { _esInstanceIds = Nothing
+    , _esAutoScalingGroupName = pAutoScalingGroupName_
+    , _esShouldDecrementDesiredCapacity = pShouldDecrementDesiredCapacity_
     }
 
+-- | One or more instances to move into 'Standby' mode. You must specify at
+-- least one instance ID.
+esInstanceIds :: Lens' EnterStandby [Text]
+esInstanceIds = lens _esInstanceIds (\ s a -> s{_esInstanceIds = a}) . _Default . _Coerce;
+
 -- | The name of the Auto Scaling group.
 esAutoScalingGroupName :: Lens' EnterStandby Text
-esAutoScalingGroupName =
-    lens _esAutoScalingGroupName (\s a -> s { _esAutoScalingGroupName = a })
-
--- | One or more instances to move into 'Standby' mode. You must specify at least
--- one instance ID.
-esInstanceIds :: Lens' EnterStandby [Text]
-esInstanceIds = lens _esInstanceIds (\s a -> s { _esInstanceIds = a }) . _List
+esAutoScalingGroupName = lens _esAutoScalingGroupName (\ s a -> s{_esAutoScalingGroupName = a});
 
--- | Specifies whether the instances moved to 'Standby' mode count as part of the
--- Auto Scaling group's desired capacity. If set, the desired capacity for the
--- Auto Scaling group decrements by the number of instances moved to 'Standby'
--- mode.
+-- | Specifies whether the instances moved to 'Standby' mode count as part of
+-- the Auto Scaling group\'s desired capacity. If set, the desired capacity
+-- for the Auto Scaling group decrements by the number of instances moved
+-- to 'Standby' mode.
 esShouldDecrementDesiredCapacity :: Lens' EnterStandby Bool
-esShouldDecrementDesiredCapacity =
-    lens _esShouldDecrementDesiredCapacity
-        (\s a -> s { _esShouldDecrementDesiredCapacity = a })
+esShouldDecrementDesiredCapacity = lens _esShouldDecrementDesiredCapacity (\ s a -> s{_esShouldDecrementDesiredCapacity = a});
 
-newtype EnterStandbyResponse = EnterStandbyResponse
-    { _esr1Activities :: List "member" Activity
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest EnterStandby where
+        type Sv EnterStandby = AutoScaling
+        type Rs EnterStandby = EnterStandbyResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "EnterStandbyResult"
+              (\ s h x ->
+                 EnterStandbyResponse' <$>
+                   (x .@? "Activities" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-instance GHC.Exts.IsList EnterStandbyResponse where
-    type Item EnterStandbyResponse = Activity
+instance ToHeaders EnterStandby where
+        toHeaders = const mempty
 
-    fromList = EnterStandbyResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _esr1Activities
+instance ToPath EnterStandby where
+        toPath = const "/"
 
--- | 'EnterStandbyResponse' constructor.
+instance ToQuery EnterStandby where
+        toQuery EnterStandby'{..}
+          = mconcat
+              ["Action" =: ("EnterStandby" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "InstanceIds" =:
+                 toQuery (toQueryList "member" <$> _esInstanceIds),
+               "AutoScalingGroupName" =: _esAutoScalingGroupName,
+               "ShouldDecrementDesiredCapacity" =:
+                 _esShouldDecrementDesiredCapacity]
+
+-- | /See:/ 'enterStandbyResponse' smart constructor.
+data EnterStandbyResponse = EnterStandbyResponse'
+    { _esrsActivities :: !(Maybe [Activity])
+    , _esrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EnterStandbyResponse' 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:
 --
--- * 'esr1Activities' @::@ ['Activity']
+-- * 'esrsActivities'
 --
-enterStandbyResponse :: EnterStandbyResponse
-enterStandbyResponse = EnterStandbyResponse
-    { _esr1Activities = mempty
+-- * 'esrsStatus'
+enterStandbyResponse
+    :: Int -- ^ 'esrsStatus'
+    -> EnterStandbyResponse
+enterStandbyResponse pStatus_ =
+    EnterStandbyResponse'
+    { _esrsActivities = Nothing
+    , _esrsStatus = pStatus_
     }
 
 -- | The activities related to moving instances into 'Standby' mode.
-esr1Activities :: Lens' EnterStandbyResponse [Activity]
-esr1Activities = lens _esr1Activities (\s a -> s { _esr1Activities = a }) . _List
-
-instance ToPath EnterStandby where
-    toPath = const "/"
-
-instance ToQuery EnterStandby where
-    toQuery EnterStandby{..} = mconcat
-        [ "AutoScalingGroupName"           =? _esAutoScalingGroupName
-        , "InstanceIds"                    =? _esInstanceIds
-        , "ShouldDecrementDesiredCapacity" =? _esShouldDecrementDesiredCapacity
-        ]
-
-instance ToHeaders EnterStandby
-
-instance AWSRequest EnterStandby where
-    type Sv EnterStandby = AutoScaling
-    type Rs EnterStandby = EnterStandbyResponse
-
-    request  = post "EnterStandby"
-    response = xmlResponse
+esrsActivities :: Lens' EnterStandbyResponse [Activity]
+esrsActivities = lens _esrsActivities (\ s a -> s{_esrsActivities = a}) . _Default . _Coerce;
 
-instance FromXML EnterStandbyResponse where
-    parseXML = withElement "EnterStandbyResult" $ \x -> EnterStandbyResponse
-        <$> x .@? "Activities" .!@ mempty
+-- | The response status code.
+esrsStatus :: Lens' EnterStandbyResponse Int
+esrsStatus = lens _esrsStatus (\ s a -> s{_esrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/ExecutePolicy.hs b/gen/Network/AWS/AutoScaling/ExecutePolicy.hs
--- a/gen/Network/AWS/AutoScaling/ExecutePolicy.hs
+++ b/gen/Network/AWS/AutoScaling/ExecutePolicy.hs
@@ -1,119 +1,154 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.AutoScaling.ExecutePolicy
--- 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.
-
--- | Executes the specified policy.
+-- Executes the specified policy.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_ExecutePolicy.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_ExecutePolicy.html AWS API Reference> for ExecutePolicy.
 module Network.AWS.AutoScaling.ExecutePolicy
     (
-    -- * Request
-      ExecutePolicy
-    -- ** Request constructor
-    , executePolicy
-    -- ** Request lenses
-    , epAutoScalingGroupName
+    -- * Creating a Request
+      executePolicy
+    , ExecutePolicy
+    -- * Request Lenses
     , epHonorCooldown
+    , epMetricValue
+    , epAutoScalingGroupName
+    , epBreachThreshold
     , epPolicyName
 
-    -- * Response
-    , ExecutePolicyResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , executePolicyResponse
+    , ExecutePolicyResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data ExecutePolicy = ExecutePolicy
-    { _epAutoScalingGroupName :: Maybe Text
-    , _epHonorCooldown        :: Maybe Bool
-    , _epPolicyName           :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'executePolicy' smart constructor.
+data ExecutePolicy = ExecutePolicy'
+    { _epHonorCooldown        :: !(Maybe Bool)
+    , _epMetricValue          :: !(Maybe Double)
+    , _epAutoScalingGroupName :: !(Maybe Text)
+    , _epBreachThreshold      :: !(Maybe Double)
+    , _epPolicyName           :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ExecutePolicy' constructor.
+-- | Creates a value of 'ExecutePolicy' 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:
 --
--- * 'epAutoScalingGroupName' @::@ 'Maybe' 'Text'
+-- * 'epHonorCooldown'
 --
--- * 'epHonorCooldown' @::@ 'Maybe' 'Bool'
+-- * 'epMetricValue'
 --
--- * 'epPolicyName' @::@ 'Text'
+-- * 'epAutoScalingGroupName'
 --
-executePolicy :: Text -- ^ 'epPolicyName'
-              -> ExecutePolicy
-executePolicy p1 = ExecutePolicy
-    { _epPolicyName           = p1
+-- * 'epBreachThreshold'
+--
+-- * 'epPolicyName'
+executePolicy
+    :: Text -- ^ 'epPolicyName'
+    -> ExecutePolicy
+executePolicy pPolicyName_ =
+    ExecutePolicy'
+    { _epHonorCooldown = Nothing
+    , _epMetricValue = Nothing
     , _epAutoScalingGroupName = Nothing
-    , _epHonorCooldown        = Nothing
+    , _epBreachThreshold = Nothing
+    , _epPolicyName = pPolicyName_
     }
 
+-- | If this parameter is true, Auto Scaling waits for the cooldown period to
+-- complete before executing the policy. Otherwise, Auto Scaling executes
+-- the policy without waiting for the cooldown period to complete.
+--
+-- This parameter is not supported if the policy type is 'StepScaling'.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/Cooldown.html Understanding Auto Scaling Cooldowns>
+-- in the /Auto Scaling Developer Guide/.
+epHonorCooldown :: Lens' ExecutePolicy (Maybe Bool)
+epHonorCooldown = lens _epHonorCooldown (\ s a -> s{_epHonorCooldown = a});
+
+-- | The metric value to compare to 'BreachThreshold'. This enables you to
+-- execute a policy of type 'StepScaling' and determine which step
+-- adjustment to use. For example, if the breach threshold is 50 and you
+-- want to use a step adjustment with a lower bound of 0 and an upper bound
+-- of 10, you can set the metric value to 59.
+--
+-- If you specify a metric value that doesn\'t correspond to a step
+-- adjustment for the policy, the call returns an error.
+--
+-- This parameter is required if the policy type is 'StepScaling' and not
+-- supported otherwise.
+epMetricValue :: Lens' ExecutePolicy (Maybe Double)
+epMetricValue = lens _epMetricValue (\ s a -> s{_epMetricValue = a});
+
 -- | The name or Amazon Resource Name (ARN) of the Auto Scaling group.
 epAutoScalingGroupName :: Lens' ExecutePolicy (Maybe Text)
-epAutoScalingGroupName =
-    lens _epAutoScalingGroupName (\s a -> s { _epAutoScalingGroupName = a })
+epAutoScalingGroupName = lens _epAutoScalingGroupName (\ s a -> s{_epAutoScalingGroupName = a});
 
--- | Set to 'True' if you want Auto Scaling to wait for the cooldown period
--- associated with the Auto Scaling group to complete before executing the
--- policy.
---
--- Set to 'False' if you want Auto Scaling to circumvent the cooldown period
--- associated with the Auto Scaling group and execute the policy before the
--- cooldown period ends.
+-- | The breach threshold for the alarm.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/Cooldown.html Understanding Auto Scaling Cooldowns> in the /AutoScaling Developer Guide/.
-epHonorCooldown :: Lens' ExecutePolicy (Maybe Bool)
-epHonorCooldown = lens _epHonorCooldown (\s a -> s { _epHonorCooldown = a })
+-- This parameter is required if the policy type is 'StepScaling' and not
+-- supported otherwise.
+epBreachThreshold :: Lens' ExecutePolicy (Maybe Double)
+epBreachThreshold = lens _epBreachThreshold (\ s a -> s{_epBreachThreshold = a});
 
 -- | The name or ARN of the policy.
 epPolicyName :: Lens' ExecutePolicy Text
-epPolicyName = lens _epPolicyName (\s a -> s { _epPolicyName = a })
+epPolicyName = lens _epPolicyName (\ s a -> s{_epPolicyName = a});
 
-data ExecutePolicyResponse = ExecutePolicyResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest ExecutePolicy where
+        type Sv ExecutePolicy = AutoScaling
+        type Rs ExecutePolicy = ExecutePolicyResponse
+        request = postQuery
+        response = receiveNull ExecutePolicyResponse'
 
--- | 'ExecutePolicyResponse' constructor.
-executePolicyResponse :: ExecutePolicyResponse
-executePolicyResponse = ExecutePolicyResponse
+instance ToHeaders ExecutePolicy where
+        toHeaders = const mempty
 
 instance ToPath ExecutePolicy where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ExecutePolicy where
-    toQuery ExecutePolicy{..} = mconcat
-        [ "AutoScalingGroupName" =? _epAutoScalingGroupName
-        , "HonorCooldown"        =? _epHonorCooldown
-        , "PolicyName"           =? _epPolicyName
-        ]
-
-instance ToHeaders ExecutePolicy
+        toQuery ExecutePolicy'{..}
+          = mconcat
+              ["Action" =: ("ExecutePolicy" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "HonorCooldown" =: _epHonorCooldown,
+               "MetricValue" =: _epMetricValue,
+               "AutoScalingGroupName" =: _epAutoScalingGroupName,
+               "BreachThreshold" =: _epBreachThreshold,
+               "PolicyName" =: _epPolicyName]
 
-instance AWSRequest ExecutePolicy where
-    type Sv ExecutePolicy = AutoScaling
-    type Rs ExecutePolicy = ExecutePolicyResponse
+-- | /See:/ 'executePolicyResponse' smart constructor.
+data ExecutePolicyResponse =
+    ExecutePolicyResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "ExecutePolicy"
-    response = nullResponse ExecutePolicyResponse
+-- | Creates a value of 'ExecutePolicyResponse' with the minimum fields required to make a request.
+--
+executePolicyResponse
+    :: ExecutePolicyResponse
+executePolicyResponse = ExecutePolicyResponse'
diff --git a/gen/Network/AWS/AutoScaling/ExitStandby.hs b/gen/Network/AWS/AutoScaling/ExitStandby.hs
--- a/gen/Network/AWS/AutoScaling/ExitStandby.hs
+++ b/gen/Network/AWS/AutoScaling/ExitStandby.hs
@@ -1,127 +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.AutoScaling.ExitStandby
--- 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.
-
--- | Moves the specified instances out of 'Standby' mode.
+-- Moves the specified instances out of 'Standby' mode.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingInServiceState.html Auto Scaling InService State> in the /Auto ScalingDeveloper Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingInServiceState.html Auto Scaling InService State>
+-- in the /Auto Scaling Developer Guide/.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_ExitStandby.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_ExitStandby.html AWS API Reference> for ExitStandby.
 module Network.AWS.AutoScaling.ExitStandby
     (
-    -- * Request
-      ExitStandby
-    -- ** Request constructor
-    , exitStandby
-    -- ** Request lenses
-    , es1AutoScalingGroupName
-    , es1InstanceIds
+    -- * Creating a Request
+      exitStandby
+    , ExitStandby
+    -- * Request Lenses
+    , eInstanceIds
+    , eAutoScalingGroupName
 
-    -- * Response
-    , ExitStandbyResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , exitStandbyResponse
-    -- ** Response lenses
-    , esrActivities
+    , ExitStandbyResponse
+    -- * Response Lenses
+    , ersActivities
+    , ersStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data ExitStandby = ExitStandby
-    { _es1AutoScalingGroupName :: Text
-    , _es1InstanceIds          :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'exitStandby' smart constructor.
+data ExitStandby = ExitStandby'
+    { _eInstanceIds          :: !(Maybe [Text])
+    , _eAutoScalingGroupName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ExitStandby' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'ExitStandby' with the minimum fields required to make a request.
 --
--- * 'es1AutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'es1InstanceIds' @::@ ['Text']
+-- * 'eInstanceIds'
 --
-exitStandby :: Text -- ^ 'es1AutoScalingGroupName'
-            -> ExitStandby
-exitStandby p1 = ExitStandby
-    { _es1AutoScalingGroupName = p1
-    , _es1InstanceIds          = mempty
+-- * 'eAutoScalingGroupName'
+exitStandby
+    :: Text -- ^ 'eAutoScalingGroupName'
+    -> ExitStandby
+exitStandby pAutoScalingGroupName_ =
+    ExitStandby'
+    { _eInstanceIds = Nothing
+    , _eAutoScalingGroupName = pAutoScalingGroupName_
     }
 
+-- | One or more instance IDs. You must specify at least one instance ID.
+eInstanceIds :: Lens' ExitStandby [Text]
+eInstanceIds = lens _eInstanceIds (\ s a -> s{_eInstanceIds = a}) . _Default . _Coerce;
+
 -- | The name of the Auto Scaling group.
-es1AutoScalingGroupName :: Lens' ExitStandby Text
-es1AutoScalingGroupName =
-    lens _es1AutoScalingGroupName (\s a -> s { _es1AutoScalingGroupName = a })
+eAutoScalingGroupName :: Lens' ExitStandby Text
+eAutoScalingGroupName = lens _eAutoScalingGroupName (\ s a -> s{_eAutoScalingGroupName = a});
 
--- | One or more instance IDs. You must specify at least one instance ID.
-es1InstanceIds :: Lens' ExitStandby [Text]
-es1InstanceIds = lens _es1InstanceIds (\s a -> s { _es1InstanceIds = a }) . _List
+instance AWSRequest ExitStandby where
+        type Sv ExitStandby = AutoScaling
+        type Rs ExitStandby = ExitStandbyResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "ExitStandbyResult"
+              (\ s h x ->
+                 ExitStandbyResponse' <$>
+                   (x .@? "Activities" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
-newtype ExitStandbyResponse = ExitStandbyResponse
-    { _esrActivities :: List "member" Activity
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance ToHeaders ExitStandby where
+        toHeaders = const mempty
 
-instance GHC.Exts.IsList ExitStandbyResponse where
-    type Item ExitStandbyResponse = Activity
+instance ToPath ExitStandby where
+        toPath = const "/"
 
-    fromList = ExitStandbyResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _esrActivities
+instance ToQuery ExitStandby where
+        toQuery ExitStandby'{..}
+          = mconcat
+              ["Action" =: ("ExitStandby" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "InstanceIds" =:
+                 toQuery (toQueryList "member" <$> _eInstanceIds),
+               "AutoScalingGroupName" =: _eAutoScalingGroupName]
 
--- | 'ExitStandbyResponse' constructor.
+-- | /See:/ 'exitStandbyResponse' smart constructor.
+data ExitStandbyResponse = ExitStandbyResponse'
+    { _ersActivities :: !(Maybe [Activity])
+    , _ersStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExitStandbyResponse' 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:
 --
--- * 'esrActivities' @::@ ['Activity']
+-- * 'ersActivities'
 --
-exitStandbyResponse :: ExitStandbyResponse
-exitStandbyResponse = ExitStandbyResponse
-    { _esrActivities = mempty
+-- * 'ersStatus'
+exitStandbyResponse
+    :: Int -- ^ 'ersStatus'
+    -> ExitStandbyResponse
+exitStandbyResponse pStatus_ =
+    ExitStandbyResponse'
+    { _ersActivities = Nothing
+    , _ersStatus = pStatus_
     }
 
 -- | The activities related to moving instances out of 'Standby' mode.
-esrActivities :: Lens' ExitStandbyResponse [Activity]
-esrActivities = lens _esrActivities (\s a -> s { _esrActivities = a }) . _List
-
-instance ToPath ExitStandby where
-    toPath = const "/"
-
-instance ToQuery ExitStandby where
-    toQuery ExitStandby{..} = mconcat
-        [ "AutoScalingGroupName" =? _es1AutoScalingGroupName
-        , "InstanceIds"          =? _es1InstanceIds
-        ]
-
-instance ToHeaders ExitStandby
-
-instance AWSRequest ExitStandby where
-    type Sv ExitStandby = AutoScaling
-    type Rs ExitStandby = ExitStandbyResponse
-
-    request  = post "ExitStandby"
-    response = xmlResponse
+ersActivities :: Lens' ExitStandbyResponse [Activity]
+ersActivities = lens _ersActivities (\ s a -> s{_ersActivities = a}) . _Default . _Coerce;
 
-instance FromXML ExitStandbyResponse where
-    parseXML = withElement "ExitStandbyResult" $ \x -> ExitStandbyResponse
-        <$> x .@? "Activities" .!@ mempty
+-- | The response status code.
+ersStatus :: Lens' ExitStandbyResponse Int
+ersStatus = lens _ersStatus (\ s a -> s{_ersStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/PutLifecycleHook.hs b/gen/Network/AWS/AutoScaling/PutLifecycleHook.hs
--- a/gen/Network/AWS/AutoScaling/PutLifecycleHook.hs
+++ b/gen/Network/AWS/AutoScaling/PutLifecycleHook.hs
@@ -1,220 +1,251 @@
-{-# 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.AutoScaling.PutLifecycleHook
--- 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 or updates a lifecycle hook for the specified Auto Scaling Group.
+-- Creates or updates a lifecycle hook for the specified Auto Scaling
+-- Group.
 --
--- A lifecycle hook tells Auto Scaling that you want to perform an action on an
--- instance that is not actively in service; for example, either when the
--- instance launches or before the instance terminates.
+-- A lifecycle hook tells Auto Scaling that you want to perform an action
+-- on an instance that is not actively in service; for example, either when
+-- the instance launches or before the instance terminates.
 --
--- This operation is a part of the basic sequence for adding a lifecycle hook
--- to an Auto Scaling group:
+-- This operation is a part of the basic sequence for adding a lifecycle
+-- hook to an Auto Scaling group:
 --
--- Create a notification target. A target can be either an Amazon SQS queue or
--- an Amazon SNS topic. Create an IAM role. This role allows Auto Scaling to
--- publish lifecycle notifications to the designated SQS queue or SNS topic. Create the lifecycle hook. You can create a hook that acts when instances launch or when instances terminate.
--- If necessary, record the lifecycle action heartbeat to keep the instance in
--- a pending state. Complete the lifecycle action.  For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingPendingState.html Auto Scaling Pending State> and <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingTerminatingState.html Auto Scaling Terminating State> in the /Auto Scaling Developer Guide/.
+-- 1.  Create a notification target. A target can be either an Amazon SQS
+--     queue or an Amazon SNS topic.
+-- 2.  Create an IAM role. This role allows Auto Scaling to publish
+--     lifecycle notifications to the designated SQS queue or SNS topic.
+-- 3.  __Create the lifecycle hook. You can create a hook that acts when
+--     instances launch or when instances terminate.__
+-- 4.  If necessary, record the lifecycle action heartbeat to keep the
+--     instance in a pending state.
+-- 5.  Complete the lifecycle action.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_PutLifecycleHook.html>
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingPendingState.html Auto Scaling Pending State>
+-- and
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingTerminatingState.html Auto Scaling Terminating State>
+-- in the /Auto Scaling Developer Guide/.
+--
+-- If you exceed your maximum limit of lifecycle hooks, which by default is
+-- 50 per region, the call fails. For information about updating this
+-- limit, see
+-- <http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html AWS Service Limits>
+-- in the /Amazon Web Services General Reference/.
+--
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_PutLifecycleHook.html AWS API Reference> for PutLifecycleHook.
 module Network.AWS.AutoScaling.PutLifecycleHook
     (
-    -- * Request
-      PutLifecycleHook
-    -- ** Request constructor
-    , putLifecycleHook
-    -- ** Request lenses
-    , plhAutoScalingGroupName
+    -- * Creating a Request
+      putLifecycleHook
+    , PutLifecycleHook
+    -- * Request Lenses
     , plhDefaultResult
     , plhHeartbeatTimeout
-    , plhLifecycleHookName
-    , plhLifecycleTransition
     , plhNotificationMetadata
-    , plhNotificationTargetARN
     , plhRoleARN
+    , plhLifecycleTransition
+    , plhNotificationTargetARN
+    , plhLifecycleHookName
+    , plhAutoScalingGroupName
 
-    -- * Response
-    , PutLifecycleHookResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , putLifecycleHookResponse
+    , PutLifecycleHookResponse
+    -- * Response Lenses
+    , plhrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data PutLifecycleHook = PutLifecycleHook
-    { _plhAutoScalingGroupName  :: Text
-    , _plhDefaultResult         :: Maybe Text
-    , _plhHeartbeatTimeout      :: Maybe Int
-    , _plhLifecycleHookName     :: Text
-    , _plhLifecycleTransition   :: Maybe Text
-    , _plhNotificationMetadata  :: Maybe Text
-    , _plhNotificationTargetARN :: Maybe Text
-    , _plhRoleARN               :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'putLifecycleHook' smart constructor.
+data PutLifecycleHook = PutLifecycleHook'
+    { _plhDefaultResult         :: !(Maybe Text)
+    , _plhHeartbeatTimeout      :: !(Maybe Int)
+    , _plhNotificationMetadata  :: !(Maybe Text)
+    , _plhRoleARN               :: !(Maybe Text)
+    , _plhLifecycleTransition   :: !(Maybe Text)
+    , _plhNotificationTargetARN :: !(Maybe Text)
+    , _plhLifecycleHookName     :: !Text
+    , _plhAutoScalingGroupName  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'PutLifecycleHook' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'PutLifecycleHook' with the minimum fields required to make a request.
 --
--- * 'plhAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'plhDefaultResult' @::@ 'Maybe' 'Text'
+-- * 'plhDefaultResult'
 --
--- * 'plhHeartbeatTimeout' @::@ 'Maybe' 'Int'
+-- * 'plhHeartbeatTimeout'
 --
--- * 'plhLifecycleHookName' @::@ 'Text'
+-- * 'plhNotificationMetadata'
 --
--- * 'plhLifecycleTransition' @::@ 'Maybe' 'Text'
+-- * 'plhRoleARN'
 --
--- * 'plhNotificationMetadata' @::@ 'Maybe' 'Text'
+-- * 'plhLifecycleTransition'
 --
--- * 'plhNotificationTargetARN' @::@ 'Maybe' 'Text'
+-- * 'plhNotificationTargetARN'
 --
--- * 'plhRoleARN' @::@ 'Maybe' 'Text'
+-- * 'plhLifecycleHookName'
 --
-putLifecycleHook :: Text -- ^ 'plhLifecycleHookName'
-                 -> Text -- ^ 'plhAutoScalingGroupName'
-                 -> PutLifecycleHook
-putLifecycleHook p1 p2 = PutLifecycleHook
-    { _plhLifecycleHookName     = p1
-    , _plhAutoScalingGroupName  = p2
-    , _plhLifecycleTransition   = Nothing
-    , _plhRoleARN               = Nothing
+-- * 'plhAutoScalingGroupName'
+putLifecycleHook
+    :: Text -- ^ 'plhLifecycleHookName'
+    -> Text -- ^ 'plhAutoScalingGroupName'
+    -> PutLifecycleHook
+putLifecycleHook pLifecycleHookName_ pAutoScalingGroupName_ =
+    PutLifecycleHook'
+    { _plhDefaultResult = Nothing
+    , _plhHeartbeatTimeout = Nothing
+    , _plhNotificationMetadata = Nothing
+    , _plhRoleARN = Nothing
+    , _plhLifecycleTransition = Nothing
     , _plhNotificationTargetARN = Nothing
-    , _plhNotificationMetadata  = Nothing
-    , _plhHeartbeatTimeout      = Nothing
-    , _plhDefaultResult         = Nothing
+    , _plhLifecycleHookName = pLifecycleHookName_
+    , _plhAutoScalingGroupName = pAutoScalingGroupName_
     }
 
--- | The name of the Auto Scaling group to which you want to assign the lifecycle
--- hook.
-plhAutoScalingGroupName :: Lens' PutLifecycleHook Text
-plhAutoScalingGroupName =
-    lens _plhAutoScalingGroupName (\s a -> s { _plhAutoScalingGroupName = a })
-
--- | Defines the action the Auto Scaling group should take when the lifecycle hook
--- timeout elapses or if an unexpected failure occurs. The value for this
--- parameter can be either 'CONTINUE' or 'ABANDON'. The default value for this
--- parameter is 'ABANDON'.
+-- | Defines the action the Auto Scaling group should take when the lifecycle
+-- hook timeout elapses or if an unexpected failure occurs. The value for
+-- this parameter can be either 'CONTINUE' or 'ABANDON'. The default value
+-- for this parameter is 'ABANDON'.
 plhDefaultResult :: Lens' PutLifecycleHook (Maybe Text)
-plhDefaultResult = lens _plhDefaultResult (\s a -> s { _plhDefaultResult = a })
+plhDefaultResult = lens _plhDefaultResult (\ s a -> s{_plhDefaultResult = a});
 
--- | Defines the amount of time, in seconds, that can elapse before the lifecycle
--- hook times out. When the lifecycle hook times out, Auto Scaling performs the
--- action defined in the 'DefaultResult' parameter. You can prevent the lifecycle
--- hook from timing out by calling 'RecordLifecycleActionHeartbeat'. The default
--- value for this parameter is 3600 seconds (1 hour).
+-- | Defines the amount of time, in seconds, that can elapse before the
+-- lifecycle hook times out. When the lifecycle hook times out, Auto
+-- Scaling performs the action defined in the 'DefaultResult' parameter.
+-- You can prevent the lifecycle hook from timing out by calling
+-- RecordLifecycleActionHeartbeat. The default value for this parameter is
+-- 3600 seconds (1 hour).
 plhHeartbeatTimeout :: Lens' PutLifecycleHook (Maybe Int)
-plhHeartbeatTimeout =
-    lens _plhHeartbeatTimeout (\s a -> s { _plhHeartbeatTimeout = a })
+plhHeartbeatTimeout = lens _plhHeartbeatTimeout (\ s a -> s{_plhHeartbeatTimeout = a});
 
--- | The name of the lifecycle hook.
-plhLifecycleHookName :: Lens' PutLifecycleHook Text
-plhLifecycleHookName =
-    lens _plhLifecycleHookName (\s a -> s { _plhLifecycleHookName = a })
+-- | Contains additional information that you want to include any time Auto
+-- Scaling sends a message to the notification target.
+plhNotificationMetadata :: Lens' PutLifecycleHook (Maybe Text)
+plhNotificationMetadata = lens _plhNotificationMetadata (\ s a -> s{_plhNotificationMetadata = a});
 
--- | The Amazon EC2 instance state to which you want to attach the lifecycle hook.
--- See 'DescribeLifecycleHookTypes' for a list of available lifecycle hook types.
+-- | The ARN of the IAM role that allows the Auto Scaling group to publish to
+-- the specified notification target.
 --
 -- This parameter is required for new lifecycle hooks, but optional when
 -- updating existing hooks.
---
+plhRoleARN :: Lens' PutLifecycleHook (Maybe Text)
+plhRoleARN = lens _plhRoleARN (\ s a -> s{_plhRoleARN = a});
+
+-- | The instance state to which you want to attach the lifecycle hook. For a
+-- list of lifecycle hook types, see DescribeLifecycleHookTypes.
 --
+-- This parameter is required for new lifecycle hooks, but optional when
+-- updating existing hooks.
 plhLifecycleTransition :: Lens' PutLifecycleHook (Maybe Text)
-plhLifecycleTransition =
-    lens _plhLifecycleTransition (\s a -> s { _plhLifecycleTransition = a })
-
--- | Contains additional information that you want to include any time Auto
--- Scaling sends a message to the notification target.
-plhNotificationMetadata :: Lens' PutLifecycleHook (Maybe Text)
-plhNotificationMetadata =
-    lens _plhNotificationMetadata (\s a -> s { _plhNotificationMetadata = a })
+plhLifecycleTransition = lens _plhLifecycleTransition (\ s a -> s{_plhLifecycleTransition = a});
 
--- | The ARN of the notification target that Auto Scaling will use to notify you
--- when an instance is in the transition state for the lifecycle hook. This ARN
--- target can be either an SQS queue or an SNS topic.
+-- | The ARN of the notification target that Auto Scaling will use to notify
+-- you when an instance is in the transition state for the lifecycle hook.
+-- This ARN target can be either an SQS queue or an SNS topic.
 --
 -- This parameter is required for new lifecycle hooks, but optional when
 -- updating existing hooks.
 --
 -- The notification message sent to the target will include:
 --
--- LifecycleActionToken. The Lifecycle action token.  AccountId. The user
--- account ID.  AutoScalingGroupName. The name of the Auto Scaling group.  LifecycleHookName
--- . The lifecycle hook name.  EC2InstanceId. The EC2 instance ID.  LifecycleTransition
--- . The lifecycle transition.  NotificationMetadata. The notification metadata.
--- This operation uses the JSON format when sending notifications to an Amazon
--- SQS queue, and an email key/value pair format when sending notifications to
--- an Amazon SNS topic.
+-- -   __LifecycleActionToken__. The Lifecycle action token.
+-- -   __AccountId__. The user account ID.
+-- -   __AutoScalingGroupName__. The name of the Auto Scaling group.
+-- -   __LifecycleHookName__. The lifecycle hook name.
+-- -   __EC2InstanceId__. The EC2 instance ID.
+-- -   __LifecycleTransition__. The lifecycle transition.
+-- -   __NotificationMetadata__. The notification metadata.
 --
+-- This operation uses the JSON format when sending notifications to an
+-- Amazon SQS queue, and an email key\/value pair format when sending
+-- notifications to an Amazon SNS topic.
+--
 -- When you call this operation, a test message is sent to the notification
--- target. This test message contains an additional key/value pair: 'Event:autoscaling:TEST_NOTIFICATION'.
+-- target. This test message contains an additional key\/value pair:
+-- 'Event:autoscaling:TEST_NOTIFICATION'.
 plhNotificationTargetARN :: Lens' PutLifecycleHook (Maybe Text)
-plhNotificationTargetARN =
-    lens _plhNotificationTargetARN
-        (\s a -> s { _plhNotificationTargetARN = a })
+plhNotificationTargetARN = lens _plhNotificationTargetARN (\ s a -> s{_plhNotificationTargetARN = a});
 
--- | The ARN of the IAM role that allows the Auto Scaling group to publish to the
--- specified notification target.
---
--- This parameter is required for new lifecycle hooks, but optional when
--- updating existing hooks.
---
---
-plhRoleARN :: Lens' PutLifecycleHook (Maybe Text)
-plhRoleARN = lens _plhRoleARN (\s a -> s { _plhRoleARN = a })
+-- | The name of the lifecycle hook.
+plhLifecycleHookName :: Lens' PutLifecycleHook Text
+plhLifecycleHookName = lens _plhLifecycleHookName (\ s a -> s{_plhLifecycleHookName = a});
 
-data PutLifecycleHookResponse = PutLifecycleHookResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The name of the Auto Scaling group to which you want to assign the
+-- lifecycle hook.
+plhAutoScalingGroupName :: Lens' PutLifecycleHook Text
+plhAutoScalingGroupName = lens _plhAutoScalingGroupName (\ s a -> s{_plhAutoScalingGroupName = a});
 
--- | 'PutLifecycleHookResponse' constructor.
-putLifecycleHookResponse :: PutLifecycleHookResponse
-putLifecycleHookResponse = PutLifecycleHookResponse
+instance AWSRequest PutLifecycleHook where
+        type Sv PutLifecycleHook = AutoScaling
+        type Rs PutLifecycleHook = PutLifecycleHookResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "PutLifecycleHookResult"
+              (\ s h x ->
+                 PutLifecycleHookResponse' <$> (pure (fromEnum s)))
 
+instance ToHeaders PutLifecycleHook where
+        toHeaders = const mempty
+
 instance ToPath PutLifecycleHook where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery PutLifecycleHook where
-    toQuery PutLifecycleHook{..} = mconcat
-        [ "AutoScalingGroupName"  =? _plhAutoScalingGroupName
-        , "DefaultResult"         =? _plhDefaultResult
-        , "HeartbeatTimeout"      =? _plhHeartbeatTimeout
-        , "LifecycleHookName"     =? _plhLifecycleHookName
-        , "LifecycleTransition"   =? _plhLifecycleTransition
-        , "NotificationMetadata"  =? _plhNotificationMetadata
-        , "NotificationTargetARN" =? _plhNotificationTargetARN
-        , "RoleARN"               =? _plhRoleARN
-        ]
+        toQuery PutLifecycleHook'{..}
+          = mconcat
+              ["Action" =: ("PutLifecycleHook" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "DefaultResult" =: _plhDefaultResult,
+               "HeartbeatTimeout" =: _plhHeartbeatTimeout,
+               "NotificationMetadata" =: _plhNotificationMetadata,
+               "RoleARN" =: _plhRoleARN,
+               "LifecycleTransition" =: _plhLifecycleTransition,
+               "NotificationTargetARN" =: _plhNotificationTargetARN,
+               "LifecycleHookName" =: _plhLifecycleHookName,
+               "AutoScalingGroupName" =: _plhAutoScalingGroupName]
 
-instance ToHeaders PutLifecycleHook
+-- | /See:/ 'putLifecycleHookResponse' smart constructor.
+newtype PutLifecycleHookResponse = PutLifecycleHookResponse'
+    { _plhrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest PutLifecycleHook where
-    type Sv PutLifecycleHook = AutoScaling
-    type Rs PutLifecycleHook = PutLifecycleHookResponse
+-- | Creates a value of 'PutLifecycleHookResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plhrsStatus'
+putLifecycleHookResponse
+    :: Int -- ^ 'plhrsStatus'
+    -> PutLifecycleHookResponse
+putLifecycleHookResponse pStatus_ =
+    PutLifecycleHookResponse'
+    { _plhrsStatus = pStatus_
+    }
 
-    request  = post "PutLifecycleHook"
-    response = nullResponse PutLifecycleHookResponse
+-- | The response status code.
+plhrsStatus :: Lens' PutLifecycleHookResponse Int
+plhrsStatus = lens _plhrsStatus (\ s a -> s{_plhrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/PutNotificationConfiguration.hs b/gen/Network/AWS/AutoScaling/PutNotificationConfiguration.hs
--- a/gen/Network/AWS/AutoScaling/PutNotificationConfiguration.hs
+++ b/gen/Network/AWS/AutoScaling/PutNotificationConfiguration.hs
@@ -1,122 +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.AutoScaling.PutNotificationConfiguration
--- 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.
-
--- | Configures an Auto Scaling group to send notifications when specified events
--- take place. Subscribers to this topic can have messages for events delivered
--- to an endpoint such as a web server or email address.
+-- Configures an Auto Scaling group to send notifications when specified
+-- events take place. Subscribers to this topic can have messages for
+-- events delivered to an endpoint such as a web server or email address.
 --
--- For more information see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/ASGettingNotifications.html Getting Notifications When Your Auto Scaling GroupChanges> in the /Auto Scaling Developer Guide/.
+-- For more information see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/ASGettingNotifications.html Getting Notifications When Your Auto Scaling Group Changes>
+-- in the /Auto Scaling Developer Guide/.
 --
 -- This configuration overwrites an existing configuration.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_PutNotificationConfiguration.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_PutNotificationConfiguration.html AWS API Reference> for PutNotificationConfiguration.
 module Network.AWS.AutoScaling.PutNotificationConfiguration
     (
-    -- * Request
-      PutNotificationConfiguration
-    -- ** Request constructor
-    , putNotificationConfiguration
-    -- ** Request lenses
+    -- * Creating a Request
+      putNotificationConfiguration
+    , PutNotificationConfiguration
+    -- * Request Lenses
     , pncAutoScalingGroupName
-    , pncNotificationTypes
     , pncTopicARN
+    , pncNotificationTypes
 
-    -- * Response
-    , PutNotificationConfigurationResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , putNotificationConfigurationResponse
+    , PutNotificationConfigurationResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data PutNotificationConfiguration = PutNotificationConfiguration
-    { _pncAutoScalingGroupName :: Text
-    , _pncNotificationTypes    :: List "member" Text
-    , _pncTopicARN             :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'putNotificationConfiguration' smart constructor.
+data PutNotificationConfiguration = PutNotificationConfiguration'
+    { _pncAutoScalingGroupName :: !Text
+    , _pncTopicARN             :: !Text
+    , _pncNotificationTypes    :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'PutNotificationConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'PutNotificationConfiguration' with the minimum fields required to make a request.
 --
--- * 'pncAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'pncNotificationTypes' @::@ ['Text']
+-- * 'pncAutoScalingGroupName'
 --
--- * 'pncTopicARN' @::@ 'Text'
+-- * 'pncTopicARN'
 --
-putNotificationConfiguration :: Text -- ^ 'pncAutoScalingGroupName'
-                             -> Text -- ^ 'pncTopicARN'
-                             -> PutNotificationConfiguration
-putNotificationConfiguration p1 p2 = PutNotificationConfiguration
-    { _pncAutoScalingGroupName = p1
-    , _pncTopicARN             = p2
-    , _pncNotificationTypes    = mempty
+-- * 'pncNotificationTypes'
+putNotificationConfiguration
+    :: Text -- ^ 'pncAutoScalingGroupName'
+    -> Text -- ^ 'pncTopicARN'
+    -> PutNotificationConfiguration
+putNotificationConfiguration pAutoScalingGroupName_ pTopicARN_ =
+    PutNotificationConfiguration'
+    { _pncAutoScalingGroupName = pAutoScalingGroupName_
+    , _pncTopicARN = pTopicARN_
+    , _pncNotificationTypes = mempty
     }
 
 -- | The name of the Auto Scaling group.
 pncAutoScalingGroupName :: Lens' PutNotificationConfiguration Text
-pncAutoScalingGroupName =
-    lens _pncAutoScalingGroupName (\s a -> s { _pncAutoScalingGroupName = a })
-
--- | The type of event that will cause the notification to be sent. For details
--- about notification types supported by Auto Scaling, see 'DescribeAutoScalingNotificationTypes'.
-pncNotificationTypes :: Lens' PutNotificationConfiguration [Text]
-pncNotificationTypes =
-    lens _pncNotificationTypes (\s a -> s { _pncNotificationTypes = a })
-        . _List
+pncAutoScalingGroupName = lens _pncAutoScalingGroupName (\ s a -> s{_pncAutoScalingGroupName = a});
 
 -- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
 -- (SNS) topic.
 pncTopicARN :: Lens' PutNotificationConfiguration Text
-pncTopicARN = lens _pncTopicARN (\s a -> s { _pncTopicARN = a })
+pncTopicARN = lens _pncTopicARN (\ s a -> s{_pncTopicARN = a});
 
-data PutNotificationConfigurationResponse = PutNotificationConfigurationResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The type of event that will cause the notification to be sent. For
+-- details about notification types supported by Auto Scaling, see
+-- DescribeAutoScalingNotificationTypes.
+pncNotificationTypes :: Lens' PutNotificationConfiguration [Text]
+pncNotificationTypes = lens _pncNotificationTypes (\ s a -> s{_pncNotificationTypes = a}) . _Coerce;
 
--- | 'PutNotificationConfigurationResponse' constructor.
-putNotificationConfigurationResponse :: PutNotificationConfigurationResponse
-putNotificationConfigurationResponse = PutNotificationConfigurationResponse
+instance AWSRequest PutNotificationConfiguration
+         where
+        type Sv PutNotificationConfiguration = AutoScaling
+        type Rs PutNotificationConfiguration =
+             PutNotificationConfigurationResponse
+        request = postQuery
+        response
+          = receiveNull PutNotificationConfigurationResponse'
 
+instance ToHeaders PutNotificationConfiguration where
+        toHeaders = const mempty
+
 instance ToPath PutNotificationConfiguration where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery PutNotificationConfiguration where
-    toQuery PutNotificationConfiguration{..} = mconcat
-        [ "AutoScalingGroupName" =? _pncAutoScalingGroupName
-        , "NotificationTypes"    =? _pncNotificationTypes
-        , "TopicARN"             =? _pncTopicARN
-        ]
-
-instance ToHeaders PutNotificationConfiguration
+        toQuery PutNotificationConfiguration'{..}
+          = mconcat
+              ["Action" =:
+                 ("PutNotificationConfiguration" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "AutoScalingGroupName" =: _pncAutoScalingGroupName,
+               "TopicARN" =: _pncTopicARN,
+               "NotificationTypes" =:
+                 toQueryList "member" _pncNotificationTypes]
 
-instance AWSRequest PutNotificationConfiguration where
-    type Sv PutNotificationConfiguration = AutoScaling
-    type Rs PutNotificationConfiguration = PutNotificationConfigurationResponse
+-- | /See:/ 'putNotificationConfigurationResponse' smart constructor.
+data PutNotificationConfigurationResponse =
+    PutNotificationConfigurationResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "PutNotificationConfiguration"
-    response = nullResponse PutNotificationConfigurationResponse
+-- | Creates a value of 'PutNotificationConfigurationResponse' with the minimum fields required to make a request.
+--
+putNotificationConfigurationResponse
+    :: PutNotificationConfigurationResponse
+putNotificationConfigurationResponse = PutNotificationConfigurationResponse'
diff --git a/gen/Network/AWS/AutoScaling/PutScalingPolicy.hs b/gen/Network/AWS/AutoScaling/PutScalingPolicy.hs
--- a/gen/Network/AWS/AutoScaling/PutScalingPolicy.hs
+++ b/gen/Network/AWS/AutoScaling/PutScalingPolicy.hs
@@ -1,184 +1,270 @@
-{-# 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.AutoScaling.PutScalingPolicy
--- 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 or updates a policy for an Auto Scaling group. To update an existing
--- policy, use the existing policy name and set the parameters you want to
--- change. Any existing parameter not changed in an update to an existing policy
--- is not changed in this update request.
+-- Creates or updates a policy for an Auto Scaling group. To update an
+-- existing policy, use the existing policy name and set the parameters you
+-- want to change. Any existing parameter not changed in an update to an
+-- existing policy is not changed in this update request.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_PutScalingPolicy.html>
+-- If you exceed your maximum limit of step adjustments, which by default
+-- is 20 per region, the call fails. For information about updating this
+-- limit, see
+-- <http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html AWS Service Limits>
+-- in the /Amazon Web Services General Reference/.
+--
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_PutScalingPolicy.html AWS API Reference> for PutScalingPolicy.
 module Network.AWS.AutoScaling.PutScalingPolicy
     (
-    -- * Request
-      PutScalingPolicy
-    -- ** Request constructor
-    , putScalingPolicy
-    -- ** Request lenses
-    , pspAdjustmentType
-    , pspAutoScalingGroupName
-    , pspCooldown
+    -- * Creating a Request
+      putScalingPolicy
+    , PutScalingPolicy
+    -- * Request Lenses
+    , pspEstimatedInstanceWarmup
     , pspMinAdjustmentStep
-    , pspPolicyName
+    , pspPolicyType
+    , pspStepAdjustments
     , pspScalingAdjustment
+    , pspCooldown
+    , pspMetricAggregationType
+    , pspMinAdjustmentMagnitude
+    , pspAutoScalingGroupName
+    , pspPolicyName
+    , pspAdjustmentType
 
-    -- * Response
-    , PutScalingPolicyResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , putScalingPolicyResponse
-    -- ** Response lenses
-    , psprPolicyARN
+    , PutScalingPolicyResponse
+    -- * Response Lenses
+    , psprsPolicyARN
+    , psprsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data PutScalingPolicy = PutScalingPolicy
-    { _pspAdjustmentType       :: Text
-    , _pspAutoScalingGroupName :: Text
-    , _pspCooldown             :: Maybe Int
-    , _pspMinAdjustmentStep    :: Maybe Int
-    , _pspPolicyName           :: Text
-    , _pspScalingAdjustment    :: Int
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'putScalingPolicy' smart constructor.
+data PutScalingPolicy = PutScalingPolicy'
+    { _pspEstimatedInstanceWarmup :: !(Maybe Int)
+    , _pspMinAdjustmentStep       :: !(Maybe Int)
+    , _pspPolicyType              :: !(Maybe Text)
+    , _pspStepAdjustments         :: !(Maybe [StepAdjustment])
+    , _pspScalingAdjustment       :: !(Maybe Int)
+    , _pspCooldown                :: !(Maybe Int)
+    , _pspMetricAggregationType   :: !(Maybe Text)
+    , _pspMinAdjustmentMagnitude  :: !(Maybe Int)
+    , _pspAutoScalingGroupName    :: !Text
+    , _pspPolicyName              :: !Text
+    , _pspAdjustmentType          :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'PutScalingPolicy' constructor.
+-- | Creates a value of 'PutScalingPolicy' 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:
 --
--- * 'pspAdjustmentType' @::@ 'Text'
+-- * 'pspEstimatedInstanceWarmup'
 --
--- * 'pspAutoScalingGroupName' @::@ 'Text'
+-- * 'pspMinAdjustmentStep'
 --
--- * 'pspCooldown' @::@ 'Maybe' 'Int'
+-- * 'pspPolicyType'
 --
--- * 'pspMinAdjustmentStep' @::@ 'Maybe' 'Int'
+-- * 'pspStepAdjustments'
 --
--- * 'pspPolicyName' @::@ 'Text'
+-- * 'pspScalingAdjustment'
 --
--- * 'pspScalingAdjustment' @::@ 'Int'
+-- * 'pspCooldown'
 --
-putScalingPolicy :: Text -- ^ 'pspAutoScalingGroupName'
-                 -> Text -- ^ 'pspPolicyName'
-                 -> Int -- ^ 'pspScalingAdjustment'
-                 -> Text -- ^ 'pspAdjustmentType'
-                 -> PutScalingPolicy
-putScalingPolicy p1 p2 p3 p4 = PutScalingPolicy
-    { _pspAutoScalingGroupName = p1
-    , _pspPolicyName           = p2
-    , _pspScalingAdjustment    = p3
-    , _pspAdjustmentType       = p4
-    , _pspCooldown             = Nothing
-    , _pspMinAdjustmentStep    = Nothing
+-- * 'pspMetricAggregationType'
+--
+-- * 'pspMinAdjustmentMagnitude'
+--
+-- * 'pspAutoScalingGroupName'
+--
+-- * 'pspPolicyName'
+--
+-- * 'pspAdjustmentType'
+putScalingPolicy
+    :: Text -- ^ 'pspAutoScalingGroupName'
+    -> Text -- ^ 'pspPolicyName'
+    -> Text -- ^ 'pspAdjustmentType'
+    -> PutScalingPolicy
+putScalingPolicy pAutoScalingGroupName_ pPolicyName_ pAdjustmentType_ =
+    PutScalingPolicy'
+    { _pspEstimatedInstanceWarmup = Nothing
+    , _pspMinAdjustmentStep = Nothing
+    , _pspPolicyType = Nothing
+    , _pspStepAdjustments = Nothing
+    , _pspScalingAdjustment = Nothing
+    , _pspCooldown = Nothing
+    , _pspMetricAggregationType = Nothing
+    , _pspMinAdjustmentMagnitude = Nothing
+    , _pspAutoScalingGroupName = pAutoScalingGroupName_
+    , _pspPolicyName = pPolicyName_
+    , _pspAdjustmentType = pAdjustmentType_
     }
 
--- | Specifies whether the 'ScalingAdjustment' is an absolute number or a percentage
--- of the current capacity. Valid values are 'ChangeInCapacity', 'ExactCapacity',
--- and 'PercentChangeInCapacity'.
+-- | The estimated time, in seconds, until a newly launched instance can
+-- contribute to the CloudWatch metrics. The default is to use the value
+-- specified for the default cooldown period for the group.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-scale-based-on-demand.html Dynamic Scaling> in the /Auto Scaling Developer Guide/
--- .
-pspAdjustmentType :: Lens' PutScalingPolicy Text
-pspAdjustmentType =
-    lens _pspAdjustmentType (\s a -> s { _pspAdjustmentType = a })
+-- This parameter is not supported if the policy type is 'SimpleScaling'.
+pspEstimatedInstanceWarmup :: Lens' PutScalingPolicy (Maybe Int)
+pspEstimatedInstanceWarmup = lens _pspEstimatedInstanceWarmup (\ s a -> s{_pspEstimatedInstanceWarmup = a});
 
--- | The name or ARN of the group.
-pspAutoScalingGroupName :: Lens' PutScalingPolicy Text
-pspAutoScalingGroupName =
-    lens _pspAutoScalingGroupName (\s a -> s { _pspAutoScalingGroupName = a })
+-- | Available for backward compatibility. Use 'MinAdjustmentMagnitude'
+-- instead.
+pspMinAdjustmentStep :: Lens' PutScalingPolicy (Maybe Int)
+pspMinAdjustmentStep = lens _pspMinAdjustmentStep (\ s a -> s{_pspMinAdjustmentStep = a});
 
--- | The amount of time, in seconds, after a scaling activity completes and before
--- the next scaling activity can start.
+-- | The policy type. Valid values are 'SimpleScaling' and 'StepScaling'. If
+-- the policy type is null, the value is treated as 'SimpleScaling'.
+pspPolicyType :: Lens' PutScalingPolicy (Maybe Text)
+pspPolicyType = lens _pspPolicyType (\ s a -> s{_pspPolicyType = a});
+
+-- | A set of adjustments that enable you to scale based on the size of the
+-- alarm breach.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/Cooldown.html Understanding Auto Scaling Cooldowns> in the /AutoScaling Developer Guide/.
+-- This parameter is required if the policy type is 'StepScaling' and not
+-- supported otherwise.
+pspStepAdjustments :: Lens' PutScalingPolicy [StepAdjustment]
+pspStepAdjustments = lens _pspStepAdjustments (\ s a -> s{_pspStepAdjustments = a}) . _Default . _Coerce;
+
+-- | The amount by which to scale, based on the specified adjustment type. A
+-- positive value adds to the current capacity while a negative number
+-- removes from the current capacity.
+--
+-- This parameter is required if the policy type is 'SimpleScaling' and not
+-- supported otherwise.
+pspScalingAdjustment :: Lens' PutScalingPolicy (Maybe Int)
+pspScalingAdjustment = lens _pspScalingAdjustment (\ s a -> s{_pspScalingAdjustment = a});
+
+-- | The amount of time, in seconds, after a scaling activity completes and
+-- before the next scaling activity can start. If this parameter is not
+-- specified, the default cooldown period for the group applies.
+--
+-- This parameter is not supported unless the policy type is
+-- 'SimpleScaling'.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/Cooldown.html Understanding Auto Scaling Cooldowns>
+-- in the /Auto Scaling Developer Guide/.
 pspCooldown :: Lens' PutScalingPolicy (Maybe Int)
-pspCooldown = lens _pspCooldown (\s a -> s { _pspCooldown = a })
+pspCooldown = lens _pspCooldown (\ s a -> s{_pspCooldown = a});
 
--- | Used with 'AdjustmentType' with the value 'PercentChangeInCapacity', the scaling
--- policy changes the 'DesiredCapacity' of the Auto Scaling group by at least the
--- number of instances specified in the value.
+-- | The aggregation type for the CloudWatch metrics. Valid values are
+-- 'Minimum', 'Maximum', and 'Average'. If the aggregation type is null,
+-- the value is treated as 'Average'.
 --
--- You will get a 'ValidationError' if you use 'MinAdjustmentStep' on a policy with
--- an 'AdjustmentType' other than 'PercentChangeInCapacity'.
-pspMinAdjustmentStep :: Lens' PutScalingPolicy (Maybe Int)
-pspMinAdjustmentStep =
-    lens _pspMinAdjustmentStep (\s a -> s { _pspMinAdjustmentStep = a })
+-- This parameter is not supported if the policy type is 'SimpleScaling'.
+pspMetricAggregationType :: Lens' PutScalingPolicy (Maybe Text)
+pspMetricAggregationType = lens _pspMetricAggregationType (\ s a -> s{_pspMetricAggregationType = a});
 
--- | The name of the policy.
-pspPolicyName :: Lens' PutScalingPolicy Text
-pspPolicyName = lens _pspPolicyName (\s a -> s { _pspPolicyName = a })
+-- | The minimum number of instances to scale. If the value of
+-- 'AdjustmentType' is 'PercentChangeInCapacity', the scaling policy
+-- changes the 'DesiredCapacity' of the Auto Scaling group by at least this
+-- many instances. Otherwise, the error is 'ValidationError'.
+pspMinAdjustmentMagnitude :: Lens' PutScalingPolicy (Maybe Int)
+pspMinAdjustmentMagnitude = lens _pspMinAdjustmentMagnitude (\ s a -> s{_pspMinAdjustmentMagnitude = a});
 
--- | The number of instances by which to scale. 'AdjustmentType' determines the
--- interpretation of this number (e.g., as an absolute number or as a percentage
--- of the existing Auto Scaling group size). A positive increment adds to the
--- current capacity and a negative value removes from the current capacity.
-pspScalingAdjustment :: Lens' PutScalingPolicy Int
-pspScalingAdjustment =
-    lens _pspScalingAdjustment (\s a -> s { _pspScalingAdjustment = a })
+-- | The name or ARN of the group.
+pspAutoScalingGroupName :: Lens' PutScalingPolicy Text
+pspAutoScalingGroupName = lens _pspAutoScalingGroupName (\ s a -> s{_pspAutoScalingGroupName = a});
 
-newtype PutScalingPolicyResponse = PutScalingPolicyResponse
-    { _psprPolicyARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- | The name of the policy.
+pspPolicyName :: Lens' PutScalingPolicy Text
+pspPolicyName = lens _pspPolicyName (\ s a -> s{_pspPolicyName = a});
 
--- | 'PutScalingPolicyResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'psprPolicyARN' @::@ 'Maybe' 'Text'
+-- | The adjustment type. Valid values are 'ChangeInCapacity',
+-- 'ExactCapacity', and 'PercentChangeInCapacity'.
 --
-putScalingPolicyResponse :: PutScalingPolicyResponse
-putScalingPolicyResponse = PutScalingPolicyResponse
-    { _psprPolicyARN = Nothing
-    }
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-scale-based-on-demand.html Dynamic Scaling>
+-- in the /Auto Scaling Developer Guide/.
+pspAdjustmentType :: Lens' PutScalingPolicy Text
+pspAdjustmentType = lens _pspAdjustmentType (\ s a -> s{_pspAdjustmentType = a});
 
--- | The Amazon Resource Name (ARN) of the policy.
-psprPolicyARN :: Lens' PutScalingPolicyResponse (Maybe Text)
-psprPolicyARN = lens _psprPolicyARN (\s a -> s { _psprPolicyARN = a })
+instance AWSRequest PutScalingPolicy where
+        type Sv PutScalingPolicy = AutoScaling
+        type Rs PutScalingPolicy = PutScalingPolicyResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "PutScalingPolicyResult"
+              (\ s h x ->
+                 PutScalingPolicyResponse' <$>
+                   (x .@? "PolicyARN") <*> (pure (fromEnum s)))
 
+instance ToHeaders PutScalingPolicy where
+        toHeaders = const mempty
+
 instance ToPath PutScalingPolicy where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery PutScalingPolicy where
-    toQuery PutScalingPolicy{..} = mconcat
-        [ "AdjustmentType"       =? _pspAdjustmentType
-        , "AutoScalingGroupName" =? _pspAutoScalingGroupName
-        , "Cooldown"             =? _pspCooldown
-        , "MinAdjustmentStep"    =? _pspMinAdjustmentStep
-        , "PolicyName"           =? _pspPolicyName
-        , "ScalingAdjustment"    =? _pspScalingAdjustment
-        ]
+        toQuery PutScalingPolicy'{..}
+          = mconcat
+              ["Action" =: ("PutScalingPolicy" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "EstimatedInstanceWarmup" =:
+                 _pspEstimatedInstanceWarmup,
+               "MinAdjustmentStep" =: _pspMinAdjustmentStep,
+               "PolicyType" =: _pspPolicyType,
+               "StepAdjustments" =:
+                 toQuery
+                   (toQueryList "member" <$> _pspStepAdjustments),
+               "ScalingAdjustment" =: _pspScalingAdjustment,
+               "Cooldown" =: _pspCooldown,
+               "MetricAggregationType" =: _pspMetricAggregationType,
+               "MinAdjustmentMagnitude" =:
+                 _pspMinAdjustmentMagnitude,
+               "AutoScalingGroupName" =: _pspAutoScalingGroupName,
+               "PolicyName" =: _pspPolicyName,
+               "AdjustmentType" =: _pspAdjustmentType]
 
-instance ToHeaders PutScalingPolicy
+-- | /See:/ 'putScalingPolicyResponse' smart constructor.
+data PutScalingPolicyResponse = PutScalingPolicyResponse'
+    { _psprsPolicyARN :: !(Maybe Text)
+    , _psprsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest PutScalingPolicy where
-    type Sv PutScalingPolicy = AutoScaling
-    type Rs PutScalingPolicy = PutScalingPolicyResponse
+-- | Creates a value of 'PutScalingPolicyResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psprsPolicyARN'
+--
+-- * 'psprsStatus'
+putScalingPolicyResponse
+    :: Int -- ^ 'psprsStatus'
+    -> PutScalingPolicyResponse
+putScalingPolicyResponse pStatus_ =
+    PutScalingPolicyResponse'
+    { _psprsPolicyARN = Nothing
+    , _psprsStatus = pStatus_
+    }
 
-    request  = post "PutScalingPolicy"
-    response = xmlResponse
+-- | The Amazon Resource Name (ARN) of the policy.
+psprsPolicyARN :: Lens' PutScalingPolicyResponse (Maybe Text)
+psprsPolicyARN = lens _psprsPolicyARN (\ s a -> s{_psprsPolicyARN = a});
 
-instance FromXML PutScalingPolicyResponse where
-    parseXML = withElement "PutScalingPolicyResult" $ \x -> PutScalingPolicyResponse
-        <$> x .@? "PolicyARN"
+-- | The response status code.
+psprsStatus :: Lens' PutScalingPolicyResponse Int
+psprsStatus = lens _psprsStatus (\ s a -> s{_psprsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/PutScheduledUpdateGroupAction.hs b/gen/Network/AWS/AutoScaling/PutScheduledUpdateGroupAction.hs
--- a/gen/Network/AWS/AutoScaling/PutScheduledUpdateGroupAction.hs
+++ b/gen/Network/AWS/AutoScaling/PutScheduledUpdateGroupAction.hs
@@ -1,201 +1,200 @@
-{-# 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.AutoScaling.PutScheduledUpdateGroupAction
--- 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 or updates a scheduled scaling action for an Auto Scaling group.
+-- Creates or updates a scheduled scaling action for an Auto Scaling group.
 -- When updating a scheduled scaling action, if you leave a parameter
--- unspecified, the corresponding value remains unchanged in the affected Auto
--- Scaling group.
---
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/schedule_time.html Scheduled Scaling> in the /Auto Scaling DeveloperGuide/.
---
--- Auto Scaling supports the date and time expressed in "YYYY-MM-DDThh:mm:ssZ"
--- format in UTC/GMT only.
---
+-- unspecified, the corresponding value remains unchanged in the affected
+-- Auto Scaling group.
 --
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/schedule_time.html Scheduled Scaling>
+-- in the /Auto Scaling Developer Guide/.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_PutScheduledUpdateGroupAction.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_PutScheduledUpdateGroupAction.html AWS API Reference> for PutScheduledUpdateGroupAction.
 module Network.AWS.AutoScaling.PutScheduledUpdateGroupAction
     (
-    -- * Request
-      PutScheduledUpdateGroupAction
-    -- ** Request constructor
-    , putScheduledUpdateGroupAction
-    -- ** Request lenses
-    , psugaAutoScalingGroupName
-    , psugaDesiredCapacity
-    , psugaEndTime
+    -- * Creating a Request
+      putScheduledUpdateGroupAction
+    , PutScheduledUpdateGroupAction
+    -- * Request Lenses
+    , psugaTime
+    , psugaStartTime
     , psugaMaxSize
-    , psugaMinSize
+    , psugaDesiredCapacity
     , psugaRecurrence
+    , psugaMinSize
+    , psugaEndTime
+    , psugaAutoScalingGroupName
     , psugaScheduledActionName
-    , psugaStartTime
-    , psugaTime
 
-    -- * Response
-    , PutScheduledUpdateGroupActionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , putScheduledUpdateGroupActionResponse
+    , PutScheduledUpdateGroupActionResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data PutScheduledUpdateGroupAction = PutScheduledUpdateGroupAction
-    { _psugaAutoScalingGroupName :: Text
-    , _psugaDesiredCapacity      :: Maybe Int
-    , _psugaEndTime              :: Maybe ISO8601
-    , _psugaMaxSize              :: Maybe Int
-    , _psugaMinSize              :: Maybe Int
-    , _psugaRecurrence           :: Maybe Text
-    , _psugaScheduledActionName  :: Text
-    , _psugaStartTime            :: Maybe ISO8601
-    , _psugaTime                 :: Maybe ISO8601
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'putScheduledUpdateGroupAction' smart constructor.
+data PutScheduledUpdateGroupAction = PutScheduledUpdateGroupAction'
+    { _psugaTime                 :: !(Maybe ISO8601)
+    , _psugaStartTime            :: !(Maybe ISO8601)
+    , _psugaMaxSize              :: !(Maybe Int)
+    , _psugaDesiredCapacity      :: !(Maybe Int)
+    , _psugaRecurrence           :: !(Maybe Text)
+    , _psugaMinSize              :: !(Maybe Int)
+    , _psugaEndTime              :: !(Maybe ISO8601)
+    , _psugaAutoScalingGroupName :: !Text
+    , _psugaScheduledActionName  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'PutScheduledUpdateGroupAction' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'PutScheduledUpdateGroupAction' with the minimum fields required to make a request.
 --
--- * 'psugaAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'psugaDesiredCapacity' @::@ 'Maybe' 'Int'
+-- * 'psugaTime'
 --
--- * 'psugaEndTime' @::@ 'Maybe' 'UTCTime'
+-- * 'psugaStartTime'
 --
--- * 'psugaMaxSize' @::@ 'Maybe' 'Int'
+-- * 'psugaMaxSize'
 --
--- * 'psugaMinSize' @::@ 'Maybe' 'Int'
+-- * 'psugaDesiredCapacity'
 --
--- * 'psugaRecurrence' @::@ 'Maybe' 'Text'
+-- * 'psugaRecurrence'
 --
--- * 'psugaScheduledActionName' @::@ 'Text'
+-- * 'psugaMinSize'
 --
--- * 'psugaStartTime' @::@ 'Maybe' 'UTCTime'
+-- * 'psugaEndTime'
 --
--- * 'psugaTime' @::@ 'Maybe' 'UTCTime'
+-- * 'psugaAutoScalingGroupName'
 --
-putScheduledUpdateGroupAction :: Text -- ^ 'psugaAutoScalingGroupName'
-                              -> Text -- ^ 'psugaScheduledActionName'
-                              -> PutScheduledUpdateGroupAction
-putScheduledUpdateGroupAction p1 p2 = PutScheduledUpdateGroupAction
-    { _psugaAutoScalingGroupName = p1
-    , _psugaScheduledActionName  = p2
-    , _psugaTime                 = Nothing
-    , _psugaStartTime            = Nothing
-    , _psugaEndTime              = Nothing
-    , _psugaRecurrence           = Nothing
-    , _psugaMinSize              = Nothing
-    , _psugaMaxSize              = Nothing
-    , _psugaDesiredCapacity      = Nothing
+-- * 'psugaScheduledActionName'
+putScheduledUpdateGroupAction
+    :: Text -- ^ 'psugaAutoScalingGroupName'
+    -> Text -- ^ 'psugaScheduledActionName'
+    -> PutScheduledUpdateGroupAction
+putScheduledUpdateGroupAction pAutoScalingGroupName_ pScheduledActionName_ =
+    PutScheduledUpdateGroupAction'
+    { _psugaTime = Nothing
+    , _psugaStartTime = Nothing
+    , _psugaMaxSize = Nothing
+    , _psugaDesiredCapacity = Nothing
+    , _psugaRecurrence = Nothing
+    , _psugaMinSize = Nothing
+    , _psugaEndTime = Nothing
+    , _psugaAutoScalingGroupName = pAutoScalingGroupName_
+    , _psugaScheduledActionName = pScheduledActionName_
     }
 
--- | The name or Amazon Resource Name (ARN) of the Auto Scaling group.
-psugaAutoScalingGroupName :: Lens' PutScheduledUpdateGroupAction Text
-psugaAutoScalingGroupName =
-    lens _psugaAutoScalingGroupName
-        (\s a -> s { _psugaAutoScalingGroupName = a })
-
--- | The number of Amazon EC2 instances that should be running in the group.
-psugaDesiredCapacity :: Lens' PutScheduledUpdateGroupAction (Maybe Int)
-psugaDesiredCapacity =
-    lens _psugaDesiredCapacity (\s a -> s { _psugaDesiredCapacity = a })
+-- | This parameter is deprecated; use 'StartTime' instead.
+--
+-- The time for this action to start. If both 'Time' and 'StartTime' are
+-- specified, their values must be identical.
+psugaTime :: Lens' PutScheduledUpdateGroupAction (Maybe UTCTime)
+psugaTime = lens _psugaTime (\ s a -> s{_psugaTime = a}) . mapping _Time;
 
--- | The time for this action to end.
-psugaEndTime :: Lens' PutScheduledUpdateGroupAction (Maybe UTCTime)
-psugaEndTime = lens _psugaEndTime (\s a -> s { _psugaEndTime = a }) . mapping _Time
+-- | The time for this action to start, in \"YYYY-MM-DDThh:mm:ssZ\" format in
+-- UTC\/GMT only (for example, '2014-06-01T00:00:00Z').
+--
+-- If you try to schedule your action in the past, Auto Scaling returns an
+-- error message.
+--
+-- When 'StartTime' and 'EndTime' are specified with 'Recurrence', they
+-- form the boundaries of when the recurring action starts and stops.
+psugaStartTime :: Lens' PutScheduledUpdateGroupAction (Maybe UTCTime)
+psugaStartTime = lens _psugaStartTime (\ s a -> s{_psugaStartTime = a}) . mapping _Time;
 
 -- | The maximum size for the Auto Scaling group.
 psugaMaxSize :: Lens' PutScheduledUpdateGroupAction (Maybe Int)
-psugaMaxSize = lens _psugaMaxSize (\s a -> s { _psugaMaxSize = a })
+psugaMaxSize = lens _psugaMaxSize (\ s a -> s{_psugaMaxSize = a});
 
--- | The minimum size for the new Auto Scaling group.
-psugaMinSize :: Lens' PutScheduledUpdateGroupAction (Maybe Int)
-psugaMinSize = lens _psugaMinSize (\s a -> s { _psugaMinSize = a })
+-- | The number of EC2 instances that should be running in the group.
+psugaDesiredCapacity :: Lens' PutScheduledUpdateGroupAction (Maybe Int)
+psugaDesiredCapacity = lens _psugaDesiredCapacity (\ s a -> s{_psugaDesiredCapacity = a});
 
--- | The time when recurring future actions will start. Start time is specified
--- by the user following the Unix cron syntax format. For information about cron
--- syntax, go to <http://en.wikipedia.org/wiki/Cron Wikipedia, The Free Encyclopedia>.
+-- | The time when recurring future actions will start. Start time is
+-- specified by the user following the Unix cron syntax format. For more
+-- information, see <http://en.wikipedia.org/wiki/Cron Cron> in Wikipedia.
 --
--- When 'StartTime' and 'EndTime' are specified with 'Recurrence', they form the
--- boundaries of when the recurring action will start and stop.
+-- When 'StartTime' and 'EndTime' are specified with 'Recurrence', they
+-- form the boundaries of when the recurring action will start and stop.
 psugaRecurrence :: Lens' PutScheduledUpdateGroupAction (Maybe Text)
-psugaRecurrence = lens _psugaRecurrence (\s a -> s { _psugaRecurrence = a })
+psugaRecurrence = lens _psugaRecurrence (\ s a -> s{_psugaRecurrence = a});
 
--- | The name of this scaling action.
-psugaScheduledActionName :: Lens' PutScheduledUpdateGroupAction Text
-psugaScheduledActionName =
-    lens _psugaScheduledActionName
-        (\s a -> s { _psugaScheduledActionName = a })
+-- | The minimum size for the Auto Scaling group.
+psugaMinSize :: Lens' PutScheduledUpdateGroupAction (Maybe Int)
+psugaMinSize = lens _psugaMinSize (\ s a -> s{_psugaMinSize = a});
 
--- | The time for this action to start, as in '--start-time 2010-06-01T00:00:00Z'.
---
--- If you try to schedule your action in the past, Auto Scaling returns an
--- error message.
---
--- When 'StartTime' and 'EndTime' are specified with 'Recurrence', they form the
--- boundaries of when the recurring action will start and stop.
-psugaStartTime :: Lens' PutScheduledUpdateGroupAction (Maybe UTCTime)
-psugaStartTime = lens _psugaStartTime (\s a -> s { _psugaStartTime = a }) . mapping _Time
+-- | The time for this action to end.
+psugaEndTime :: Lens' PutScheduledUpdateGroupAction (Maybe UTCTime)
+psugaEndTime = lens _psugaEndTime (\ s a -> s{_psugaEndTime = a}) . mapping _Time;
 
--- | 'Time' is deprecated.
---
--- The time for this action to start. 'Time' is an alias for 'StartTime' and can be
--- specified instead of 'StartTime', or vice versa. If both 'Time' and 'StartTime' are
--- specified, their values should be identical. Otherwise, 'PutScheduledUpdateGroupAction' will return an error.
-psugaTime :: Lens' PutScheduledUpdateGroupAction (Maybe UTCTime)
-psugaTime = lens _psugaTime (\s a -> s { _psugaTime = a }) . mapping _Time
+-- | The name or Amazon Resource Name (ARN) of the Auto Scaling group.
+psugaAutoScalingGroupName :: Lens' PutScheduledUpdateGroupAction Text
+psugaAutoScalingGroupName = lens _psugaAutoScalingGroupName (\ s a -> s{_psugaAutoScalingGroupName = a});
 
-data PutScheduledUpdateGroupActionResponse = PutScheduledUpdateGroupActionResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The name of this scaling action.
+psugaScheduledActionName :: Lens' PutScheduledUpdateGroupAction Text
+psugaScheduledActionName = lens _psugaScheduledActionName (\ s a -> s{_psugaScheduledActionName = a});
 
--- | 'PutScheduledUpdateGroupActionResponse' constructor.
-putScheduledUpdateGroupActionResponse :: PutScheduledUpdateGroupActionResponse
-putScheduledUpdateGroupActionResponse = PutScheduledUpdateGroupActionResponse
+instance AWSRequest PutScheduledUpdateGroupAction
+         where
+        type Sv PutScheduledUpdateGroupAction = AutoScaling
+        type Rs PutScheduledUpdateGroupAction =
+             PutScheduledUpdateGroupActionResponse
+        request = postQuery
+        response
+          = receiveNull PutScheduledUpdateGroupActionResponse'
 
+instance ToHeaders PutScheduledUpdateGroupAction
+         where
+        toHeaders = const mempty
+
 instance ToPath PutScheduledUpdateGroupAction where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery PutScheduledUpdateGroupAction where
-    toQuery PutScheduledUpdateGroupAction{..} = mconcat
-        [ "AutoScalingGroupName" =? _psugaAutoScalingGroupName
-        , "DesiredCapacity"      =? _psugaDesiredCapacity
-        , "EndTime"              =? _psugaEndTime
-        , "MaxSize"              =? _psugaMaxSize
-        , "MinSize"              =? _psugaMinSize
-        , "Recurrence"           =? _psugaRecurrence
-        , "ScheduledActionName"  =? _psugaScheduledActionName
-        , "StartTime"            =? _psugaStartTime
-        , "Time"                 =? _psugaTime
-        ]
-
-instance ToHeaders PutScheduledUpdateGroupAction
+        toQuery PutScheduledUpdateGroupAction'{..}
+          = mconcat
+              ["Action" =:
+                 ("PutScheduledUpdateGroupAction" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "Time" =: _psugaTime, "StartTime" =: _psugaStartTime,
+               "MaxSize" =: _psugaMaxSize,
+               "DesiredCapacity" =: _psugaDesiredCapacity,
+               "Recurrence" =: _psugaRecurrence,
+               "MinSize" =: _psugaMinSize,
+               "EndTime" =: _psugaEndTime,
+               "AutoScalingGroupName" =: _psugaAutoScalingGroupName,
+               "ScheduledActionName" =: _psugaScheduledActionName]
 
-instance AWSRequest PutScheduledUpdateGroupAction where
-    type Sv PutScheduledUpdateGroupAction = AutoScaling
-    type Rs PutScheduledUpdateGroupAction = PutScheduledUpdateGroupActionResponse
+-- | /See:/ 'putScheduledUpdateGroupActionResponse' smart constructor.
+data PutScheduledUpdateGroupActionResponse =
+    PutScheduledUpdateGroupActionResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "PutScheduledUpdateGroupAction"
-    response = nullResponse PutScheduledUpdateGroupActionResponse
+-- | Creates a value of 'PutScheduledUpdateGroupActionResponse' with the minimum fields required to make a request.
+--
+putScheduledUpdateGroupActionResponse
+    :: PutScheduledUpdateGroupActionResponse
+putScheduledUpdateGroupActionResponse = PutScheduledUpdateGroupActionResponse'
diff --git a/gen/Network/AWS/AutoScaling/RecordLifecycleActionHeartbeat.hs b/gen/Network/AWS/AutoScaling/RecordLifecycleActionHeartbeat.hs
--- a/gen/Network/AWS/AutoScaling/RecordLifecycleActionHeartbeat.hs
+++ b/gen/Network/AWS/AutoScaling/RecordLifecycleActionHeartbeat.hs
@@ -1,129 +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.AutoScaling.RecordLifecycleActionHeartbeat
--- 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.
-
--- | Records a heartbeat for the lifecycle action associated with a specific
--- token. This extends the timeout by the length of time defined by the 'HeartbeatTimeout' parameter of 'PutLifecycleHook'.
+-- Records a heartbeat for the lifecycle action associated with a specific
+-- token. This extends the timeout by the length of time defined by the
+-- 'HeartbeatTimeout' parameter of PutLifecycleHook.
 --
--- This operation is a part of the basic sequence for adding a lifecycle hook
--- to an Auto Scaling group:
+-- This operation is a part of the basic sequence for adding a lifecycle
+-- hook to an Auto Scaling group:
 --
--- Create a notification target. A target can be either an Amazon SQS queue or
--- an Amazon SNS topic. Create an IAM role. This role allows Auto Scaling to
--- publish lifecycle notifications to the designated SQS queue or SNS topic. Create the lifecycle hook. You can create a hook that acts when instances launch or when instances terminate.
--- If necessary, record the lifecycle action heartbeat to keep the instance in
--- a pending state. Complete the lifecycle action.  For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingPendingState.html Auto Scaling Pending State> and <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingTerminatingState.html Auto Scaling Terminating State> in the /Auto Scaling Developer Guide/.
+-- 1.  Create a notification target. A target can be either an Amazon SQS
+--     queue or an Amazon SNS topic.
+-- 2.  Create an IAM role. This role allows Auto Scaling to publish
+--     lifecycle notifications to the designated SQS queue or SNS topic.
+-- 3.  Create the lifecycle hook. You can create a hook that acts when
+--     instances launch or when instances terminate.
+-- 4.  __If necessary, record the lifecycle action heartbeat to keep the
+--     instance in a pending state.__
+-- 5.  Complete the lifecycle action.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_RecordLifecycleActionHeartbeat.html>
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingPendingState.html Auto Scaling Pending State>
+-- and
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingTerminatingState.html Auto Scaling Terminating State>
+-- in the /Auto Scaling Developer Guide/.
+--
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_RecordLifecycleActionHeartbeat.html AWS API Reference> for RecordLifecycleActionHeartbeat.
 module Network.AWS.AutoScaling.RecordLifecycleActionHeartbeat
     (
-    -- * Request
-      RecordLifecycleActionHeartbeat
-    -- ** Request constructor
-    , recordLifecycleActionHeartbeat
-    -- ** Request lenses
+    -- * Creating a Request
+      recordLifecycleActionHeartbeat
+    , RecordLifecycleActionHeartbeat
+    -- * Request Lenses
+    , rlahLifecycleHookName
     , rlahAutoScalingGroupName
     , rlahLifecycleActionToken
-    , rlahLifecycleHookName
 
-    -- * Response
-    , RecordLifecycleActionHeartbeatResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , recordLifecycleActionHeartbeatResponse
+    , RecordLifecycleActionHeartbeatResponse
+    -- * Response Lenses
+    , rlahrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data RecordLifecycleActionHeartbeat = RecordLifecycleActionHeartbeat
-    { _rlahAutoScalingGroupName :: Text
-    , _rlahLifecycleActionToken :: Text
-    , _rlahLifecycleHookName    :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'recordLifecycleActionHeartbeat' smart constructor.
+data RecordLifecycleActionHeartbeat = RecordLifecycleActionHeartbeat'
+    { _rlahLifecycleHookName    :: !Text
+    , _rlahAutoScalingGroupName :: !Text
+    , _rlahLifecycleActionToken :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'RecordLifecycleActionHeartbeat' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'RecordLifecycleActionHeartbeat' with the minimum fields required to make a request.
 --
--- * 'rlahAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rlahLifecycleActionToken' @::@ 'Text'
+-- * 'rlahLifecycleHookName'
 --
--- * 'rlahLifecycleHookName' @::@ 'Text'
+-- * 'rlahAutoScalingGroupName'
 --
-recordLifecycleActionHeartbeat :: Text -- ^ 'rlahLifecycleHookName'
-                               -> Text -- ^ 'rlahAutoScalingGroupName'
-                               -> Text -- ^ 'rlahLifecycleActionToken'
-                               -> RecordLifecycleActionHeartbeat
-recordLifecycleActionHeartbeat p1 p2 p3 = RecordLifecycleActionHeartbeat
-    { _rlahLifecycleHookName    = p1
-    , _rlahAutoScalingGroupName = p2
-    , _rlahLifecycleActionToken = p3
+-- * 'rlahLifecycleActionToken'
+recordLifecycleActionHeartbeat
+    :: Text -- ^ 'rlahLifecycleHookName'
+    -> Text -- ^ 'rlahAutoScalingGroupName'
+    -> Text -- ^ 'rlahLifecycleActionToken'
+    -> RecordLifecycleActionHeartbeat
+recordLifecycleActionHeartbeat pLifecycleHookName_ pAutoScalingGroupName_ pLifecycleActionToken_ =
+    RecordLifecycleActionHeartbeat'
+    { _rlahLifecycleHookName = pLifecycleHookName_
+    , _rlahAutoScalingGroupName = pAutoScalingGroupName_
+    , _rlahLifecycleActionToken = pLifecycleActionToken_
     }
 
+-- | The name of the lifecycle hook.
+rlahLifecycleHookName :: Lens' RecordLifecycleActionHeartbeat Text
+rlahLifecycleHookName = lens _rlahLifecycleHookName (\ s a -> s{_rlahLifecycleHookName = a});
+
 -- | The name of the Auto Scaling group for the hook.
 rlahAutoScalingGroupName :: Lens' RecordLifecycleActionHeartbeat Text
-rlahAutoScalingGroupName =
-    lens _rlahAutoScalingGroupName
-        (\s a -> s { _rlahAutoScalingGroupName = a })
+rlahAutoScalingGroupName = lens _rlahAutoScalingGroupName (\ s a -> s{_rlahAutoScalingGroupName = a});
 
--- | A token that uniquely identifies a specific lifecycle action associated with
--- an instance. Auto Scaling sends this token to the notification target you
--- specified when you created the lifecycle hook.
+-- | A token that uniquely identifies a specific lifecycle action associated
+-- with an instance. Auto Scaling sends this token to the notification
+-- target you specified when you created the lifecycle hook.
 rlahLifecycleActionToken :: Lens' RecordLifecycleActionHeartbeat Text
-rlahLifecycleActionToken =
-    lens _rlahLifecycleActionToken
-        (\s a -> s { _rlahLifecycleActionToken = a })
-
--- | The name of the lifecycle hook.
-rlahLifecycleHookName :: Lens' RecordLifecycleActionHeartbeat Text
-rlahLifecycleHookName =
-    lens _rlahLifecycleHookName (\s a -> s { _rlahLifecycleHookName = a })
+rlahLifecycleActionToken = lens _rlahLifecycleActionToken (\ s a -> s{_rlahLifecycleActionToken = a});
 
-data RecordLifecycleActionHeartbeatResponse = RecordLifecycleActionHeartbeatResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest RecordLifecycleActionHeartbeat
+         where
+        type Sv RecordLifecycleActionHeartbeat = AutoScaling
+        type Rs RecordLifecycleActionHeartbeat =
+             RecordLifecycleActionHeartbeatResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "RecordLifecycleActionHeartbeatResult"
+              (\ s h x ->
+                 RecordLifecycleActionHeartbeatResponse' <$>
+                   (pure (fromEnum s)))
 
--- | 'RecordLifecycleActionHeartbeatResponse' constructor.
-recordLifecycleActionHeartbeatResponse :: RecordLifecycleActionHeartbeatResponse
-recordLifecycleActionHeartbeatResponse = RecordLifecycleActionHeartbeatResponse
+instance ToHeaders RecordLifecycleActionHeartbeat
+         where
+        toHeaders = const mempty
 
 instance ToPath RecordLifecycleActionHeartbeat where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery RecordLifecycleActionHeartbeat where
-    toQuery RecordLifecycleActionHeartbeat{..} = mconcat
-        [ "AutoScalingGroupName" =? _rlahAutoScalingGroupName
-        , "LifecycleActionToken" =? _rlahLifecycleActionToken
-        , "LifecycleHookName"    =? _rlahLifecycleHookName
-        ]
+        toQuery RecordLifecycleActionHeartbeat'{..}
+          = mconcat
+              ["Action" =:
+                 ("RecordLifecycleActionHeartbeat" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "LifecycleHookName" =: _rlahLifecycleHookName,
+               "AutoScalingGroupName" =: _rlahAutoScalingGroupName,
+               "LifecycleActionToken" =: _rlahLifecycleActionToken]
 
-instance ToHeaders RecordLifecycleActionHeartbeat
+-- | /See:/ 'recordLifecycleActionHeartbeatResponse' smart constructor.
+newtype RecordLifecycleActionHeartbeatResponse = RecordLifecycleActionHeartbeatResponse'
+    { _rlahrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest RecordLifecycleActionHeartbeat where
-    type Sv RecordLifecycleActionHeartbeat = AutoScaling
-    type Rs RecordLifecycleActionHeartbeat = RecordLifecycleActionHeartbeatResponse
+-- | Creates a value of 'RecordLifecycleActionHeartbeatResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rlahrsStatus'
+recordLifecycleActionHeartbeatResponse
+    :: Int -- ^ 'rlahrsStatus'
+    -> RecordLifecycleActionHeartbeatResponse
+recordLifecycleActionHeartbeatResponse pStatus_ =
+    RecordLifecycleActionHeartbeatResponse'
+    { _rlahrsStatus = pStatus_
+    }
 
-    request  = post "RecordLifecycleActionHeartbeat"
-    response = nullResponse RecordLifecycleActionHeartbeatResponse
+-- | The response status code.
+rlahrsStatus :: Lens' RecordLifecycleActionHeartbeatResponse Int
+rlahrsStatus = lens _rlahrsStatus (\ s a -> s{_rlahrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/ResumeProcesses.hs b/gen/Network/AWS/AutoScaling/ResumeProcesses.hs
--- a/gen/Network/AWS/AutoScaling/ResumeProcesses.hs
+++ b/gen/Network/AWS/AutoScaling/ResumeProcesses.hs
@@ -1,109 +1,127 @@
-{-# 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.AutoScaling.ResumeProcesses
--- 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.
-
--- | Resumes the specified suspended Auto Scaling processes for the specified Auto
--- Scaling group. To resume specific processes, use the 'ScalingProcesses'
--- parameter. To resume all processes, omit the 'ScalingProcesses' parameter. For
--- more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/US_SuspendResume.html Suspend and Resume Auto Scaling Processes> in the /AutoScaling Developer Guide/.
+-- Resumes the specified suspended Auto Scaling processes for the specified
+-- Auto Scaling group. To resume specific processes, use the
+-- 'ScalingProcesses' parameter. To resume all processes, omit the
+-- 'ScalingProcesses' parameter. For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/US_SuspendResume.html Suspend and Resume Auto Scaling Processes>
+-- in the /Auto Scaling Developer Guide/.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_ResumeProcesses.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_ResumeProcesses.html AWS API Reference> for ResumeProcesses.
 module Network.AWS.AutoScaling.ResumeProcesses
     (
-    -- * Request
-      ResumeProcesses
-    -- ** Request constructor
-    , resumeProcesses
-    -- ** Request lenses
-    , rpAutoScalingGroupName
+    -- * Creating a Request
+      resumeProcesses
+    , ResumeProcesses
+    -- * Request Lenses
     , rpScalingProcesses
+    , rpAutoScalingGroupName
 
-    -- * Response
-    , ResumeProcessesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , resumeProcessesResponse
+    , ResumeProcessesResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data ResumeProcesses = ResumeProcesses
-    { _rpAutoScalingGroupName :: Text
-    , _rpScalingProcesses     :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'resumeProcesses' smart constructor.
+data ResumeProcesses = ResumeProcesses'
+    { _rpScalingProcesses     :: !(Maybe [Text])
+    , _rpAutoScalingGroupName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ResumeProcesses' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'ResumeProcesses' with the minimum fields required to make a request.
 --
--- * 'rpAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rpScalingProcesses' @::@ ['Text']
+-- * 'rpScalingProcesses'
 --
-resumeProcesses :: Text -- ^ 'rpAutoScalingGroupName'
-                -> ResumeProcesses
-resumeProcesses p1 = ResumeProcesses
-    { _rpAutoScalingGroupName = p1
-    , _rpScalingProcesses     = mempty
+-- * 'rpAutoScalingGroupName'
+resumeProcesses
+    :: Text -- ^ 'rpAutoScalingGroupName'
+    -> ResumeProcesses
+resumeProcesses pAutoScalingGroupName_ =
+    ResumeProcesses'
+    { _rpScalingProcesses = Nothing
+    , _rpAutoScalingGroupName = pAutoScalingGroupName_
     }
 
--- | The name or Amazon Resource Name (ARN) of the Auto Scaling group.
-rpAutoScalingGroupName :: Lens' ResumeProcesses Text
-rpAutoScalingGroupName =
-    lens _rpAutoScalingGroupName (\s a -> s { _rpAutoScalingGroupName = a })
-
 -- | One or more of the following processes:
 --
--- Launch Terminate HealthCheck ReplaceUnhealthy AZRebalance AlarmNotification
--- ScheduledActions AddToLoadBalancer
+-- -   'Launch'
+--
+-- -   'Terminate'
+--
+-- -   'HealthCheck'
+--
+-- -   'ReplaceUnhealthy'
+--
+-- -   'AZRebalance'
+--
+-- -   'AlarmNotification'
+--
+-- -   'ScheduledActions'
+--
+-- -   'AddToLoadBalancer'
+--
 rpScalingProcesses :: Lens' ResumeProcesses [Text]
-rpScalingProcesses =
-    lens _rpScalingProcesses (\s a -> s { _rpScalingProcesses = a })
-        . _List
+rpScalingProcesses = lens _rpScalingProcesses (\ s a -> s{_rpScalingProcesses = a}) . _Default . _Coerce;
 
-data ResumeProcessesResponse = ResumeProcessesResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The name or Amazon Resource Name (ARN) of the Auto Scaling group.
+rpAutoScalingGroupName :: Lens' ResumeProcesses Text
+rpAutoScalingGroupName = lens _rpAutoScalingGroupName (\ s a -> s{_rpAutoScalingGroupName = a});
 
--- | 'ResumeProcessesResponse' constructor.
-resumeProcessesResponse :: ResumeProcessesResponse
-resumeProcessesResponse = ResumeProcessesResponse
+instance AWSRequest ResumeProcesses where
+        type Sv ResumeProcesses = AutoScaling
+        type Rs ResumeProcesses = ResumeProcessesResponse
+        request = postQuery
+        response = receiveNull ResumeProcessesResponse'
 
+instance ToHeaders ResumeProcesses where
+        toHeaders = const mempty
+
 instance ToPath ResumeProcesses where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ResumeProcesses where
-    toQuery ResumeProcesses{..} = mconcat
-        [ "AutoScalingGroupName" =? _rpAutoScalingGroupName
-        , "ScalingProcesses"     =? _rpScalingProcesses
-        ]
-
-instance ToHeaders ResumeProcesses
+        toQuery ResumeProcesses'{..}
+          = mconcat
+              ["Action" =: ("ResumeProcesses" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "ScalingProcesses" =:
+                 toQuery
+                   (toQueryList "member" <$> _rpScalingProcesses),
+               "AutoScalingGroupName" =: _rpAutoScalingGroupName]
 
-instance AWSRequest ResumeProcesses where
-    type Sv ResumeProcesses = AutoScaling
-    type Rs ResumeProcesses = ResumeProcessesResponse
+-- | /See:/ 'resumeProcessesResponse' smart constructor.
+data ResumeProcessesResponse =
+    ResumeProcessesResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "ResumeProcesses"
-    response = nullResponse ResumeProcessesResponse
+-- | Creates a value of 'ResumeProcessesResponse' with the minimum fields required to make a request.
+--
+resumeProcessesResponse
+    :: ResumeProcessesResponse
+resumeProcessesResponse = ResumeProcessesResponse'
diff --git a/gen/Network/AWS/AutoScaling/SetDesiredCapacity.hs b/gen/Network/AWS/AutoScaling/SetDesiredCapacity.hs
--- a/gen/Network/AWS/AutoScaling/SetDesiredCapacity.hs
+++ b/gen/Network/AWS/AutoScaling/SetDesiredCapacity.hs
@@ -1,117 +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.AutoScaling.SetDesiredCapacity
--- 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 size of the specified 'AutoScalingGroup'.
+-- Sets the size of the specified Auto Scaling group.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_SetDesiredCapacity.html>
+-- For more information about desired capacity, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/WhatIsAutoScaling.html What Is Auto Scaling?>
+-- in the /Auto Scaling Developer Guide/.
+--
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_SetDesiredCapacity.html AWS API Reference> for SetDesiredCapacity.
 module Network.AWS.AutoScaling.SetDesiredCapacity
     (
-    -- * Request
-      SetDesiredCapacity
-    -- ** Request constructor
-    , setDesiredCapacity
-    -- ** Request lenses
+    -- * Creating a Request
+      setDesiredCapacity
+    , SetDesiredCapacity
+    -- * Request Lenses
+    , sdcHonorCooldown
     , sdcAutoScalingGroupName
     , sdcDesiredCapacity
-    , sdcHonorCooldown
 
-    -- * Response
-    , SetDesiredCapacityResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setDesiredCapacityResponse
+    , SetDesiredCapacityResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data SetDesiredCapacity = SetDesiredCapacity
-    { _sdcAutoScalingGroupName :: Text
-    , _sdcDesiredCapacity      :: Int
-    , _sdcHonorCooldown        :: Maybe Bool
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'setDesiredCapacity' smart constructor.
+data SetDesiredCapacity = SetDesiredCapacity'
+    { _sdcHonorCooldown        :: !(Maybe Bool)
+    , _sdcAutoScalingGroupName :: !Text
+    , _sdcDesiredCapacity      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'SetDesiredCapacity' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'SetDesiredCapacity' with the minimum fields required to make a request.
 --
--- * 'sdcAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sdcDesiredCapacity' @::@ 'Int'
+-- * 'sdcHonorCooldown'
 --
--- * 'sdcHonorCooldown' @::@ 'Maybe' 'Bool'
+-- * 'sdcAutoScalingGroupName'
 --
-setDesiredCapacity :: Text -- ^ 'sdcAutoScalingGroupName'
-                   -> Int -- ^ 'sdcDesiredCapacity'
-                   -> SetDesiredCapacity
-setDesiredCapacity p1 p2 = SetDesiredCapacity
-    { _sdcAutoScalingGroupName = p1
-    , _sdcDesiredCapacity      = p2
-    , _sdcHonorCooldown        = Nothing
+-- * 'sdcDesiredCapacity'
+setDesiredCapacity
+    :: Text -- ^ 'sdcAutoScalingGroupName'
+    -> Int -- ^ 'sdcDesiredCapacity'
+    -> SetDesiredCapacity
+setDesiredCapacity pAutoScalingGroupName_ pDesiredCapacity_ =
+    SetDesiredCapacity'
+    { _sdcHonorCooldown = Nothing
+    , _sdcAutoScalingGroupName = pAutoScalingGroupName_
+    , _sdcDesiredCapacity = pDesiredCapacity_
     }
 
+-- | By default, 'SetDesiredCapacity' overrides any cooldown period
+-- associated with the Auto Scaling group. Specify 'True' to make Auto
+-- Scaling to wait for the cool-down period associated with the Auto
+-- Scaling group to complete before initiating a scaling activity to set
+-- your Auto Scaling group to its new capacity.
+sdcHonorCooldown :: Lens' SetDesiredCapacity (Maybe Bool)
+sdcHonorCooldown = lens _sdcHonorCooldown (\ s a -> s{_sdcHonorCooldown = a});
+
 -- | The name of the Auto Scaling group.
 sdcAutoScalingGroupName :: Lens' SetDesiredCapacity Text
-sdcAutoScalingGroupName =
-    lens _sdcAutoScalingGroupName (\s a -> s { _sdcAutoScalingGroupName = a })
+sdcAutoScalingGroupName = lens _sdcAutoScalingGroupName (\ s a -> s{_sdcAutoScalingGroupName = a});
 
--- | The number of EC2 instances that should be running in the Auto Scaling group.
+-- | The number of EC2 instances that should be running in the Auto Scaling
+-- group.
 sdcDesiredCapacity :: Lens' SetDesiredCapacity Int
-sdcDesiredCapacity =
-    lens _sdcDesiredCapacity (\s a -> s { _sdcDesiredCapacity = a })
-
--- | By default, 'SetDesiredCapacity' overrides any cooldown period associated with
--- the Auto Scaling group. Specify 'True' to make Auto Scaling to wait for the
--- cool-down period associated with the Auto Scaling group to complete before
--- initiating a scaling activity to set your Auto Scaling group to its new
--- capacity.
-sdcHonorCooldown :: Lens' SetDesiredCapacity (Maybe Bool)
-sdcHonorCooldown = lens _sdcHonorCooldown (\s a -> s { _sdcHonorCooldown = a })
+sdcDesiredCapacity = lens _sdcDesiredCapacity (\ s a -> s{_sdcDesiredCapacity = a});
 
-data SetDesiredCapacityResponse = SetDesiredCapacityResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest SetDesiredCapacity where
+        type Sv SetDesiredCapacity = AutoScaling
+        type Rs SetDesiredCapacity =
+             SetDesiredCapacityResponse
+        request = postQuery
+        response = receiveNull SetDesiredCapacityResponse'
 
--- | 'SetDesiredCapacityResponse' constructor.
-setDesiredCapacityResponse :: SetDesiredCapacityResponse
-setDesiredCapacityResponse = SetDesiredCapacityResponse
+instance ToHeaders SetDesiredCapacity where
+        toHeaders = const mempty
 
 instance ToPath SetDesiredCapacity where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery SetDesiredCapacity where
-    toQuery SetDesiredCapacity{..} = mconcat
-        [ "AutoScalingGroupName" =? _sdcAutoScalingGroupName
-        , "DesiredCapacity"      =? _sdcDesiredCapacity
-        , "HonorCooldown"        =? _sdcHonorCooldown
-        ]
-
-instance ToHeaders SetDesiredCapacity
+        toQuery SetDesiredCapacity'{..}
+          = mconcat
+              ["Action" =: ("SetDesiredCapacity" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "HonorCooldown" =: _sdcHonorCooldown,
+               "AutoScalingGroupName" =: _sdcAutoScalingGroupName,
+               "DesiredCapacity" =: _sdcDesiredCapacity]
 
-instance AWSRequest SetDesiredCapacity where
-    type Sv SetDesiredCapacity = AutoScaling
-    type Rs SetDesiredCapacity = SetDesiredCapacityResponse
+-- | /See:/ 'setDesiredCapacityResponse' smart constructor.
+data SetDesiredCapacityResponse =
+    SetDesiredCapacityResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "SetDesiredCapacity"
-    response = nullResponse SetDesiredCapacityResponse
+-- | Creates a value of 'SetDesiredCapacityResponse' with the minimum fields required to make a request.
+--
+setDesiredCapacityResponse
+    :: SetDesiredCapacityResponse
+setDesiredCapacityResponse = SetDesiredCapacityResponse'
diff --git a/gen/Network/AWS/AutoScaling/SetInstanceHealth.hs b/gen/Network/AWS/AutoScaling/SetInstanceHealth.hs
--- a/gen/Network/AWS/AutoScaling/SetInstanceHealth.hs
+++ b/gen/Network/AWS/AutoScaling/SetInstanceHealth.hs
@@ -1,122 +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.AutoScaling.SetInstanceHealth
--- 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 health status of the specified instance.
+-- Sets the health status of the specified instance.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/healthcheck.html Health Checks> in the /Auto Scaling Developer Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/healthcheck.html Health Checks>
+-- in the /Auto Scaling Developer Guide/.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_SetInstanceHealth.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_SetInstanceHealth.html AWS API Reference> for SetInstanceHealth.
 module Network.AWS.AutoScaling.SetInstanceHealth
     (
-    -- * Request
-      SetInstanceHealth
-    -- ** Request constructor
-    , setInstanceHealth
-    -- ** Request lenses
-    , sihHealthStatus
-    , sihInstanceId
+    -- * Creating a Request
+      setInstanceHealth
+    , SetInstanceHealth
+    -- * Request Lenses
     , sihShouldRespectGracePeriod
+    , sihInstanceId
+    , sihHealthStatus
 
-    -- * Response
-    , SetInstanceHealthResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setInstanceHealthResponse
+    , SetInstanceHealthResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data SetInstanceHealth = SetInstanceHealth
-    { _sihHealthStatus             :: Text
-    , _sihInstanceId               :: Text
-    , _sihShouldRespectGracePeriod :: Maybe Bool
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'setInstanceHealth' smart constructor.
+data SetInstanceHealth = SetInstanceHealth'
+    { _sihShouldRespectGracePeriod :: !(Maybe Bool)
+    , _sihInstanceId               :: !Text
+    , _sihHealthStatus             :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'SetInstanceHealth' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'SetInstanceHealth' with the minimum fields required to make a request.
 --
--- * 'sihHealthStatus' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sihInstanceId' @::@ 'Text'
+-- * 'sihShouldRespectGracePeriod'
 --
--- * 'sihShouldRespectGracePeriod' @::@ 'Maybe' 'Bool'
+-- * 'sihInstanceId'
 --
-setInstanceHealth :: Text -- ^ 'sihInstanceId'
-                  -> Text -- ^ 'sihHealthStatus'
-                  -> SetInstanceHealth
-setInstanceHealth p1 p2 = SetInstanceHealth
-    { _sihInstanceId               = p1
-    , _sihHealthStatus             = p2
-    , _sihShouldRespectGracePeriod = Nothing
+-- * 'sihHealthStatus'
+setInstanceHealth
+    :: Text -- ^ 'sihInstanceId'
+    -> Text -- ^ 'sihHealthStatus'
+    -> SetInstanceHealth
+setInstanceHealth pInstanceId_ pHealthStatus_ =
+    SetInstanceHealth'
+    { _sihShouldRespectGracePeriod = Nothing
+    , _sihInstanceId = pInstanceId_
+    , _sihHealthStatus = pHealthStatus_
     }
 
--- | The health status of the instance. Set to 'Healthy' if you want the instance
--- to remain in service. Set to 'Unhealthy' if you want the instance to be out of
--- service. Auto Scaling will terminate and replace the unhealthy instance.
-sihHealthStatus :: Lens' SetInstanceHealth Text
-sihHealthStatus = lens _sihHealthStatus (\s a -> s { _sihHealthStatus = a })
+-- | If the Auto Scaling group of the specified instance has a
+-- 'HealthCheckGracePeriod' specified for the group, by default, this call
+-- will respect the grace period. Set this to 'False', if you do not want
+-- the call to respect the grace period associated with the group.
+--
+-- For more information, see the 'HealthCheckGracePeriod' parameter
+-- description for CreateAutoScalingGroup.
+sihShouldRespectGracePeriod :: Lens' SetInstanceHealth (Maybe Bool)
+sihShouldRespectGracePeriod = lens _sihShouldRespectGracePeriod (\ s a -> s{_sihShouldRespectGracePeriod = a});
 
 -- | The ID of the EC2 instance.
 sihInstanceId :: Lens' SetInstanceHealth Text
-sihInstanceId = lens _sihInstanceId (\s a -> s { _sihInstanceId = a })
+sihInstanceId = lens _sihInstanceId (\ s a -> s{_sihInstanceId = a});
 
--- | If the Auto Scaling group of the specified instance has a 'HealthCheckGracePeriod' specified for the group, by default, this call will respect the grace
--- period. Set this to 'False', if you do not want the call to respect the grace
--- period associated with the group.
---
--- For more information, see the 'HealthCheckGracePeriod' parameter description
--- for 'CreateAutoScalingGroup'.
-sihShouldRespectGracePeriod :: Lens' SetInstanceHealth (Maybe Bool)
-sihShouldRespectGracePeriod =
-    lens _sihShouldRespectGracePeriod
-        (\s a -> s { _sihShouldRespectGracePeriod = a })
+-- | The health status of the instance. Set to 'Healthy' if you want the
+-- instance to remain in service. Set to 'Unhealthy' if you want the
+-- instance to be out of service. Auto Scaling will terminate and replace
+-- the unhealthy instance.
+sihHealthStatus :: Lens' SetInstanceHealth Text
+sihHealthStatus = lens _sihHealthStatus (\ s a -> s{_sihHealthStatus = a});
 
-data SetInstanceHealthResponse = SetInstanceHealthResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest SetInstanceHealth where
+        type Sv SetInstanceHealth = AutoScaling
+        type Rs SetInstanceHealth = SetInstanceHealthResponse
+        request = postQuery
+        response = receiveNull SetInstanceHealthResponse'
 
--- | 'SetInstanceHealthResponse' constructor.
-setInstanceHealthResponse :: SetInstanceHealthResponse
-setInstanceHealthResponse = SetInstanceHealthResponse
+instance ToHeaders SetInstanceHealth where
+        toHeaders = const mempty
 
 instance ToPath SetInstanceHealth where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery SetInstanceHealth where
-    toQuery SetInstanceHealth{..} = mconcat
-        [ "HealthStatus"             =? _sihHealthStatus
-        , "InstanceId"               =? _sihInstanceId
-        , "ShouldRespectGracePeriod" =? _sihShouldRespectGracePeriod
-        ]
-
-instance ToHeaders SetInstanceHealth
+        toQuery SetInstanceHealth'{..}
+          = mconcat
+              ["Action" =: ("SetInstanceHealth" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "ShouldRespectGracePeriod" =:
+                 _sihShouldRespectGracePeriod,
+               "InstanceId" =: _sihInstanceId,
+               "HealthStatus" =: _sihHealthStatus]
 
-instance AWSRequest SetInstanceHealth where
-    type Sv SetInstanceHealth = AutoScaling
-    type Rs SetInstanceHealth = SetInstanceHealthResponse
+-- | /See:/ 'setInstanceHealthResponse' smart constructor.
+data SetInstanceHealthResponse =
+    SetInstanceHealthResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "SetInstanceHealth"
-    response = nullResponse SetInstanceHealthResponse
+-- | Creates a value of 'SetInstanceHealthResponse' with the minimum fields required to make a request.
+--
+setInstanceHealthResponse
+    :: SetInstanceHealthResponse
+setInstanceHealthResponse = SetInstanceHealthResponse'
diff --git a/gen/Network/AWS/AutoScaling/SuspendProcesses.hs b/gen/Network/AWS/AutoScaling/SuspendProcesses.hs
--- a/gen/Network/AWS/AutoScaling/SuspendProcesses.hs
+++ b/gen/Network/AWS/AutoScaling/SuspendProcesses.hs
@@ -1,115 +1,134 @@
-{-# 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.AutoScaling.SuspendProcesses
--- 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.
-
--- | Suspends the specified Auto Scaling processes for the specified Auto Scaling
--- group. To suspend specific processes, use the 'ScalingProcesses' parameter. To
--- suspend all processes, omit the 'ScalingProcesses' parameter.
+-- Suspends the specified Auto Scaling processes for the specified Auto
+-- Scaling group. To suspend specific processes, use the 'ScalingProcesses'
+-- parameter. To suspend all processes, omit the 'ScalingProcesses'
+-- parameter.
 --
--- Note that if you suspend either the 'Launch' or 'Terminate' process types, it
--- can prevent other process types from functioning properly.
+-- Note that if you suspend either the 'Launch' or 'Terminate' process
+-- types, it can prevent other process types from functioning properly.
 --
--- To resume processes that have been suspended, use 'ResumeProcesses'.
+-- To resume processes that have been suspended, use ResumeProcesses.
 --
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/US_SuspendResume.html Suspend and Resume Auto Scaling Processes> in the /Auto Scaling Developer Guide/.
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/US_SuspendResume.html Suspend and Resume Auto Scaling Processes>
+-- in the /Auto Scaling Developer Guide/.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_SuspendProcesses.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_SuspendProcesses.html AWS API Reference> for SuspendProcesses.
 module Network.AWS.AutoScaling.SuspendProcesses
     (
-    -- * Request
-      SuspendProcesses
-    -- ** Request constructor
-    , suspendProcesses
-    -- ** Request lenses
-    , spAutoScalingGroupName
+    -- * Creating a Request
+      suspendProcesses
+    , SuspendProcesses
+    -- * Request Lenses
     , spScalingProcesses
+    , spAutoScalingGroupName
 
-    -- * Response
-    , SuspendProcessesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , suspendProcessesResponse
+    , SuspendProcessesResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data SuspendProcesses = SuspendProcesses
-    { _spAutoScalingGroupName :: Text
-    , _spScalingProcesses     :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'suspendProcesses' smart constructor.
+data SuspendProcesses = SuspendProcesses'
+    { _spScalingProcesses     :: !(Maybe [Text])
+    , _spAutoScalingGroupName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'SuspendProcesses' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'SuspendProcesses' with the minimum fields required to make a request.
 --
--- * 'spAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'spScalingProcesses' @::@ ['Text']
+-- * 'spScalingProcesses'
 --
-suspendProcesses :: Text -- ^ 'spAutoScalingGroupName'
-                 -> SuspendProcesses
-suspendProcesses p1 = SuspendProcesses
-    { _spAutoScalingGroupName = p1
-    , _spScalingProcesses     = mempty
+-- * 'spAutoScalingGroupName'
+suspendProcesses
+    :: Text -- ^ 'spAutoScalingGroupName'
+    -> SuspendProcesses
+suspendProcesses pAutoScalingGroupName_ =
+    SuspendProcesses'
+    { _spScalingProcesses = Nothing
+    , _spAutoScalingGroupName = pAutoScalingGroupName_
     }
 
--- | The name or Amazon Resource Name (ARN) of the Auto Scaling group.
-spAutoScalingGroupName :: Lens' SuspendProcesses Text
-spAutoScalingGroupName =
-    lens _spAutoScalingGroupName (\s a -> s { _spAutoScalingGroupName = a })
-
 -- | One or more of the following processes:
 --
--- Launch Terminate HealthCheck ReplaceUnhealthy AZRebalance AlarmNotification
--- ScheduledActions AddToLoadBalancer
+-- -   'Launch'
+--
+-- -   'Terminate'
+--
+-- -   'HealthCheck'
+--
+-- -   'ReplaceUnhealthy'
+--
+-- -   'AZRebalance'
+--
+-- -   'AlarmNotification'
+--
+-- -   'ScheduledActions'
+--
+-- -   'AddToLoadBalancer'
+--
 spScalingProcesses :: Lens' SuspendProcesses [Text]
-spScalingProcesses =
-    lens _spScalingProcesses (\s a -> s { _spScalingProcesses = a })
-        . _List
+spScalingProcesses = lens _spScalingProcesses (\ s a -> s{_spScalingProcesses = a}) . _Default . _Coerce;
 
-data SuspendProcessesResponse = SuspendProcessesResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The name or Amazon Resource Name (ARN) of the Auto Scaling group.
+spAutoScalingGroupName :: Lens' SuspendProcesses Text
+spAutoScalingGroupName = lens _spAutoScalingGroupName (\ s a -> s{_spAutoScalingGroupName = a});
 
--- | 'SuspendProcessesResponse' constructor.
-suspendProcessesResponse :: SuspendProcessesResponse
-suspendProcessesResponse = SuspendProcessesResponse
+instance AWSRequest SuspendProcesses where
+        type Sv SuspendProcesses = AutoScaling
+        type Rs SuspendProcesses = SuspendProcessesResponse
+        request = postQuery
+        response = receiveNull SuspendProcessesResponse'
 
+instance ToHeaders SuspendProcesses where
+        toHeaders = const mempty
+
 instance ToPath SuspendProcesses where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery SuspendProcesses where
-    toQuery SuspendProcesses{..} = mconcat
-        [ "AutoScalingGroupName" =? _spAutoScalingGroupName
-        , "ScalingProcesses"     =? _spScalingProcesses
-        ]
-
-instance ToHeaders SuspendProcesses
+        toQuery SuspendProcesses'{..}
+          = mconcat
+              ["Action" =: ("SuspendProcesses" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "ScalingProcesses" =:
+                 toQuery
+                   (toQueryList "member" <$> _spScalingProcesses),
+               "AutoScalingGroupName" =: _spAutoScalingGroupName]
 
-instance AWSRequest SuspendProcesses where
-    type Sv SuspendProcesses = AutoScaling
-    type Rs SuspendProcesses = SuspendProcessesResponse
+-- | /See:/ 'suspendProcessesResponse' smart constructor.
+data SuspendProcessesResponse =
+    SuspendProcessesResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "SuspendProcesses"
-    response = nullResponse SuspendProcessesResponse
+-- | Creates a value of 'SuspendProcessesResponse' with the minimum fields required to make a request.
+--
+suspendProcessesResponse
+    :: SuspendProcessesResponse
+suspendProcessesResponse = SuspendProcessesResponse'
diff --git a/gen/Network/AWS/AutoScaling/TerminateInstanceInAutoScalingGroup.hs b/gen/Network/AWS/AutoScaling/TerminateInstanceInAutoScalingGroup.hs
--- a/gen/Network/AWS/AutoScaling/TerminateInstanceInAutoScalingGroup.hs
+++ b/gen/Network/AWS/AutoScaling/TerminateInstanceInAutoScalingGroup.hs
@@ -1,126 +1,145 @@
-{-# 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.AutoScaling.TerminateInstanceInAutoScalingGroup
--- 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.
-
--- | Terminates the specified instance and optionally adjusts the desired group
--- size.
+-- Terminates the specified instance and optionally adjusts the desired
+-- group size.
 --
 -- This call simply makes a termination request. The instances is not
 -- terminated immediately.
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_TerminateInstanceInAutoScalingGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_TerminateInstanceInAutoScalingGroup.html AWS API Reference> for TerminateInstanceInAutoScalingGroup.
 module Network.AWS.AutoScaling.TerminateInstanceInAutoScalingGroup
     (
-    -- * Request
-      TerminateInstanceInAutoScalingGroup
-    -- ** Request constructor
-    , terminateInstanceInAutoScalingGroup
-    -- ** Request lenses
+    -- * Creating a Request
+      terminateInstanceInAutoScalingGroup
+    , TerminateInstanceInAutoScalingGroup
+    -- * Request Lenses
     , tiiasgInstanceId
     , tiiasgShouldDecrementDesiredCapacity
 
-    -- * Response
-    , TerminateInstanceInAutoScalingGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , terminateInstanceInAutoScalingGroupResponse
-    -- ** Response lenses
-    , tiiasgrActivity
+    , TerminateInstanceInAutoScalingGroupResponse
+    -- * Response Lenses
+    , tiiasgrsActivity
+    , tiiasgrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data TerminateInstanceInAutoScalingGroup = TerminateInstanceInAutoScalingGroup
-    { _tiiasgInstanceId                     :: Text
-    , _tiiasgShouldDecrementDesiredCapacity :: Bool
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'terminateInstanceInAutoScalingGroup' smart constructor.
+data TerminateInstanceInAutoScalingGroup = TerminateInstanceInAutoScalingGroup'
+    { _tiiasgInstanceId                     :: !Text
+    , _tiiasgShouldDecrementDesiredCapacity :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'TerminateInstanceInAutoScalingGroup' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'TerminateInstanceInAutoScalingGroup' with the minimum fields required to make a request.
 --
--- * 'tiiasgInstanceId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'tiiasgShouldDecrementDesiredCapacity' @::@ 'Bool'
+-- * 'tiiasgInstanceId'
 --
-terminateInstanceInAutoScalingGroup :: Text -- ^ 'tiiasgInstanceId'
-                                    -> Bool -- ^ 'tiiasgShouldDecrementDesiredCapacity'
-                                    -> TerminateInstanceInAutoScalingGroup
-terminateInstanceInAutoScalingGroup p1 p2 = TerminateInstanceInAutoScalingGroup
-    { _tiiasgInstanceId                     = p1
-    , _tiiasgShouldDecrementDesiredCapacity = p2
+-- * 'tiiasgShouldDecrementDesiredCapacity'
+terminateInstanceInAutoScalingGroup
+    :: Text -- ^ 'tiiasgInstanceId'
+    -> Bool -- ^ 'tiiasgShouldDecrementDesiredCapacity'
+    -> TerminateInstanceInAutoScalingGroup
+terminateInstanceInAutoScalingGroup pInstanceId_ pShouldDecrementDesiredCapacity_ =
+    TerminateInstanceInAutoScalingGroup'
+    { _tiiasgInstanceId = pInstanceId_
+    , _tiiasgShouldDecrementDesiredCapacity = pShouldDecrementDesiredCapacity_
     }
 
 -- | The ID of the EC2 instance.
 tiiasgInstanceId :: Lens' TerminateInstanceInAutoScalingGroup Text
-tiiasgInstanceId = lens _tiiasgInstanceId (\s a -> s { _tiiasgInstanceId = a })
+tiiasgInstanceId = lens _tiiasgInstanceId (\ s a -> s{_tiiasgInstanceId = a});
 
--- | If 'true', terminating this instance also decrements the size of the Auto
--- Scaling group.
+-- | If 'true', terminating this instance also decrements the size of the
+-- Auto Scaling group.
 tiiasgShouldDecrementDesiredCapacity :: Lens' TerminateInstanceInAutoScalingGroup Bool
-tiiasgShouldDecrementDesiredCapacity =
-    lens _tiiasgShouldDecrementDesiredCapacity
-        (\s a -> s { _tiiasgShouldDecrementDesiredCapacity = a })
+tiiasgShouldDecrementDesiredCapacity = lens _tiiasgShouldDecrementDesiredCapacity (\ s a -> s{_tiiasgShouldDecrementDesiredCapacity = a});
 
-newtype TerminateInstanceInAutoScalingGroupResponse = TerminateInstanceInAutoScalingGroupResponse
-    { _tiiasgrActivity :: Maybe Activity
-    } deriving (Eq, Read, Show)
+instance AWSRequest
+         TerminateInstanceInAutoScalingGroup where
+        type Sv TerminateInstanceInAutoScalingGroup =
+             AutoScaling
+        type Rs TerminateInstanceInAutoScalingGroup =
+             TerminateInstanceInAutoScalingGroupResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper
+              "TerminateInstanceInAutoScalingGroupResult"
+              (\ s h x ->
+                 TerminateInstanceInAutoScalingGroupResponse' <$>
+                   (x .@? "Activity") <*> (pure (fromEnum s)))
 
--- | 'TerminateInstanceInAutoScalingGroupResponse' constructor.
+instance ToHeaders
+         TerminateInstanceInAutoScalingGroup where
+        toHeaders = const mempty
+
+instance ToPath TerminateInstanceInAutoScalingGroup
+         where
+        toPath = const "/"
+
+instance ToQuery TerminateInstanceInAutoScalingGroup
+         where
+        toQuery TerminateInstanceInAutoScalingGroup'{..}
+          = mconcat
+              ["Action" =:
+                 ("TerminateInstanceInAutoScalingGroup" ::
+                    ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "InstanceId" =: _tiiasgInstanceId,
+               "ShouldDecrementDesiredCapacity" =:
+                 _tiiasgShouldDecrementDesiredCapacity]
+
+-- | /See:/ 'terminateInstanceInAutoScalingGroupResponse' smart constructor.
+data TerminateInstanceInAutoScalingGroupResponse = TerminateInstanceInAutoScalingGroupResponse'
+    { _tiiasgrsActivity :: !(Maybe Activity)
+    , _tiiasgrsStatus   :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TerminateInstanceInAutoScalingGroupResponse' 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:
 --
--- * 'tiiasgrActivity' @::@ 'Maybe' 'Activity'
+-- * 'tiiasgrsActivity'
 --
-terminateInstanceInAutoScalingGroupResponse :: TerminateInstanceInAutoScalingGroupResponse
-terminateInstanceInAutoScalingGroupResponse = TerminateInstanceInAutoScalingGroupResponse
-    { _tiiasgrActivity = Nothing
+-- * 'tiiasgrsStatus'
+terminateInstanceInAutoScalingGroupResponse
+    :: Int -- ^ 'tiiasgrsStatus'
+    -> TerminateInstanceInAutoScalingGroupResponse
+terminateInstanceInAutoScalingGroupResponse pStatus_ =
+    TerminateInstanceInAutoScalingGroupResponse'
+    { _tiiasgrsActivity = Nothing
+    , _tiiasgrsStatus = pStatus_
     }
 
 -- | A scaling activity.
-tiiasgrActivity :: Lens' TerminateInstanceInAutoScalingGroupResponse (Maybe Activity)
-tiiasgrActivity = lens _tiiasgrActivity (\s a -> s { _tiiasgrActivity = a })
-
-instance ToPath TerminateInstanceInAutoScalingGroup where
-    toPath = const "/"
-
-instance ToQuery TerminateInstanceInAutoScalingGroup where
-    toQuery TerminateInstanceInAutoScalingGroup{..} = mconcat
-        [ "InstanceId"                     =? _tiiasgInstanceId
-        , "ShouldDecrementDesiredCapacity" =? _tiiasgShouldDecrementDesiredCapacity
-        ]
-
-instance ToHeaders TerminateInstanceInAutoScalingGroup
-
-instance AWSRequest TerminateInstanceInAutoScalingGroup where
-    type Sv TerminateInstanceInAutoScalingGroup = AutoScaling
-    type Rs TerminateInstanceInAutoScalingGroup = TerminateInstanceInAutoScalingGroupResponse
-
-    request  = post "TerminateInstanceInAutoScalingGroup"
-    response = xmlResponse
+tiiasgrsActivity :: Lens' TerminateInstanceInAutoScalingGroupResponse (Maybe Activity)
+tiiasgrsActivity = lens _tiiasgrsActivity (\ s a -> s{_tiiasgrsActivity = a});
 
-instance FromXML TerminateInstanceInAutoScalingGroupResponse where
-    parseXML = withElement "TerminateInstanceInAutoScalingGroupResult" $ \x -> TerminateInstanceInAutoScalingGroupResponse
-        <$> x .@? "Activity"
+-- | The response status code.
+tiiasgrsStatus :: Lens' TerminateInstanceInAutoScalingGroupResponse Int
+tiiasgrsStatus = lens _tiiasgrsStatus (\ s a -> s{_tiiasgrsStatus = a});
diff --git a/gen/Network/AWS/AutoScaling/Types.hs b/gen/Network/AWS/AutoScaling/Types.hs
--- a/gen/Network/AWS/AutoScaling/Types.hs
+++ b/gen/Network/AWS/AutoScaling/Types.hs
@@ -1,2265 +1,337 @@
-{-# 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.AutoScaling.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.AutoScaling.Types
-    (
-    -- * Service
-      AutoScaling
-    -- ** Error
-    , RESTError
-    -- ** XML
-    , ns
-
-    -- * TagDescription
-    , TagDescription
-    , tagDescription
-    , tdKey
-    , tdPropagateAtLaunch
-    , tdResourceId
-    , tdResourceType
-    , tdValue
-
-    -- * Tag
-    , Tag
-    , tag
-    , tagKey
-    , tagPropagateAtLaunch
-    , tagResourceId
-    , tagResourceType
-    , tagValue
-
-    -- * NotificationConfiguration
-    , NotificationConfiguration
-    , notificationConfiguration
-    , ncAutoScalingGroupName
-    , ncNotificationType
-    , ncTopicARN
-
-    -- * BlockDeviceMapping
-    , BlockDeviceMapping
-    , blockDeviceMapping
-    , bdmDeviceName
-    , bdmEbs
-    , bdmNoDevice
-    , bdmVirtualName
-
-    -- * LaunchConfiguration
-    , LaunchConfiguration
-    , launchConfiguration
-    , lcAssociatePublicIpAddress
-    , lcBlockDeviceMappings
-    , lcClassicLinkVPCId
-    , lcClassicLinkVPCSecurityGroups
-    , lcCreatedTime
-    , lcEbsOptimized
-    , lcIamInstanceProfile
-    , lcImageId
-    , lcInstanceMonitoring
-    , lcInstanceType
-    , lcKernelId
-    , lcKeyName
-    , lcLaunchConfigurationARN
-    , lcLaunchConfigurationName
-    , lcPlacementTenancy
-    , lcRamdiskId
-    , lcSecurityGroups
-    , lcSpotPrice
-    , lcUserData
-
-    -- * AutoScalingGroup
-    , AutoScalingGroup
-    , autoScalingGroup
-    , asgAutoScalingGroupARN
-    , asgAutoScalingGroupName
-    , asgAvailabilityZones
-    , asgCreatedTime
-    , asgDefaultCooldown
-    , asgDesiredCapacity
-    , asgEnabledMetrics
-    , asgHealthCheckGracePeriod
-    , asgHealthCheckType
-    , asgInstances
-    , asgLaunchConfigurationName
-    , asgLoadBalancerNames
-    , asgMaxSize
-    , asgMinSize
-    , asgPlacementGroup
-    , asgStatus
-    , asgSuspendedProcesses
-    , asgTags
-    , asgTerminationPolicies
-    , asgVPCZoneIdentifier
-
-    -- * ScalingPolicy
-    , ScalingPolicy
-    , scalingPolicy
-    , sp1AdjustmentType
-    , sp1Alarms
-    , sp1AutoScalingGroupName
-    , sp1Cooldown
-    , sp1MinAdjustmentStep
-    , sp1PolicyARN
-    , sp1PolicyName
-    , sp1ScalingAdjustment
-
-    -- * InstanceMonitoring
-    , InstanceMonitoring
-    , instanceMonitoring
-    , imEnabled
-
-    -- * ScheduledUpdateGroupAction
-    , ScheduledUpdateGroupAction
-    , scheduledUpdateGroupAction
-    , sugaAutoScalingGroupName
-    , sugaDesiredCapacity
-    , sugaEndTime
-    , sugaMaxSize
-    , sugaMinSize
-    , sugaRecurrence
-    , sugaScheduledActionARN
-    , sugaScheduledActionName
-    , sugaStartTime
-    , sugaTime
-
-    -- * ScalingProcessQuery
-    , ScalingProcessQuery
-    , scalingProcessQuery
-    , spqAutoScalingGroupName
-    , spqScalingProcesses
-
-    -- * Ebs
-    , Ebs
-    , ebs
-    , ebsDeleteOnTermination
-    , ebsIops
-    , ebsSnapshotId
-    , ebsVolumeSize
-    , ebsVolumeType
-
-    -- * AdjustmentType
-    , AdjustmentType
-    , adjustmentType
-    , atAdjustmentType
-
-    -- * MetricCollectionType
-    , MetricCollectionType
-    , metricCollectionType
-    , mctMetric
-
-    -- * LifecycleHook
-    , LifecycleHook
-    , lifecycleHook
-    , lhAutoScalingGroupName
-    , lhDefaultResult
-    , lhGlobalTimeout
-    , lhHeartbeatTimeout
-    , lhLifecycleHookName
-    , lhLifecycleTransition
-    , lhNotificationMetadata
-    , lhNotificationTargetARN
-    , lhRoleARN
-
-    -- * Activity
-    , Activity
-    , activity
-    , aActivityId
-    , aAutoScalingGroupName
-    , aCause
-    , aDescription
-    , aDetails
-    , aEndTime
-    , aProgress
-    , aStartTime
-    , aStatusCode
-    , aStatusMessage
-
-    -- * SuspendedProcess
-    , SuspendedProcess
-    , suspendedProcess
-    , spProcessName
-    , spSuspensionReason
-
-    -- * MetricGranularityType
-    , MetricGranularityType
-    , metricGranularityType
-    , mgtGranularity
-
-    -- * Filter
-    , Filter
-    , filter'
-    , fName
-    , fValues
-
-    -- * ProcessType
-    , ProcessType
-    , processType
-    , ptProcessName
-
-    -- * Alarm
-    , Alarm
-    , alarm
-    , aAlarmARN
-    , aAlarmName
-
-    -- * EnabledMetric
-    , EnabledMetric
-    , enabledMetric
-    , emGranularity
-    , emMetric
-
-    -- * Instance
-    , Instance
-    , instance'
-    , iAvailabilityZone
-    , iHealthStatus
-    , iInstanceId
-    , iLaunchConfigurationName
-    , iLifecycleState
-
-    -- * LifecycleState
-    , LifecycleState (..)
-
-    -- * AutoScalingInstanceDetails
-    , AutoScalingInstanceDetails
-    , autoScalingInstanceDetails
-    , asidAutoScalingGroupName
-    , asidAvailabilityZone
-    , asidHealthStatus
-    , asidInstanceId
-    , asidLaunchConfigurationName
-    , asidLifecycleState
-
-    -- * ScalingActivityStatusCode
-    , ScalingActivityStatusCode (..)
-    ) where
-
-import Network.AWS.Prelude
-import Network.AWS.Signing
-import qualified GHC.Exts
-
--- | Version @2011-01-01@ of the Amazon Auto Scaling service.
-data AutoScaling
-
-instance AWSService AutoScaling where
-    type Sg AutoScaling = V4
-    type Er AutoScaling = RESTError
-
-    service = service'
-      where
-        service' :: Service AutoScaling
-        service' = Service
-            { _svcAbbrev       = "AutoScaling"
-            , _svcPrefix       = "autoscaling"
-            , _svcVersion      = "2011-01-01"
-            , _svcTargetPrefix = Nothing
-            , _svcJSONVersion  = Nothing
-            , _svcHandle       = handle
-            , _svcRetry        = retry
-            }
-
-        handle :: Status
-               -> Maybe (LazyByteString -> ServiceError RESTError)
-        handle = restError statusSuccess service'
-
-        retry :: Retry AutoScaling
-        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://autoscaling.amazonaws.com/doc/2011-01-01/"
-{-# INLINE ns #-}
-
-data TagDescription = TagDescription
-    { _tdKey               :: Text
-    , _tdPropagateAtLaunch :: Bool
-    , _tdResourceId        :: Text
-    , _tdResourceType      :: Text
-    , _tdValue             :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'TagDescription' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tdKey' @::@ 'Text'
---
--- * 'tdPropagateAtLaunch' @::@ 'Bool'
---
--- * 'tdResourceId' @::@ 'Text'
---
--- * 'tdResourceType' @::@ 'Text'
---
--- * 'tdValue' @::@ 'Text'
---
-tagDescription :: Text -- ^ 'tdResourceId'
-               -> Text -- ^ 'tdResourceType'
-               -> Text -- ^ 'tdKey'
-               -> Text -- ^ 'tdValue'
-               -> Bool -- ^ 'tdPropagateAtLaunch'
-               -> TagDescription
-tagDescription p1 p2 p3 p4 p5 = TagDescription
-    { _tdResourceId        = p1
-    , _tdResourceType      = p2
-    , _tdKey               = p3
-    , _tdValue             = p4
-    , _tdPropagateAtLaunch = p5
-    }
-
--- | The tag key.
-tdKey :: Lens' TagDescription Text
-tdKey = lens _tdKey (\s a -> s { _tdKey = a })
-
--- | Specifies whether the tag is applied to instances launched after the tag is
--- created. The same behavior applies to updates: If you change a tag, it is
--- applied to all instances launched after you made the change.
-tdPropagateAtLaunch :: Lens' TagDescription Bool
-tdPropagateAtLaunch =
-    lens _tdPropagateAtLaunch (\s a -> s { _tdPropagateAtLaunch = a })
-
--- | The name of the group.
-tdResourceId :: Lens' TagDescription Text
-tdResourceId = lens _tdResourceId (\s a -> s { _tdResourceId = a })
-
--- | The kind of resource to which the tag is applied. Currently, Auto Scaling
--- supports the 'auto-scaling-group' resource type.
-tdResourceType :: Lens' TagDescription Text
-tdResourceType = lens _tdResourceType (\s a -> s { _tdResourceType = a })
-
--- | The tag value.
-tdValue :: Lens' TagDescription Text
-tdValue = lens _tdValue (\s a -> s { _tdValue = a })
-
-instance FromXML TagDescription where
-    parseXML x = TagDescription
-        <$> x .@  "Key"
-        <*> x .@  "PropagateAtLaunch"
-        <*> x .@  "ResourceId"
-        <*> x .@  "ResourceType"
-        <*> x .@  "Value"
-
-instance ToQuery TagDescription where
-    toQuery TagDescription{..} = mconcat
-        [ "Key"               =? _tdKey
-        , "PropagateAtLaunch" =? _tdPropagateAtLaunch
-        , "ResourceId"        =? _tdResourceId
-        , "ResourceType"      =? _tdResourceType
-        , "Value"             =? _tdValue
-        ]
-
-data Tag = Tag
-    { _tagKey               :: Text
-    , _tagPropagateAtLaunch :: Bool
-    , _tagResourceId        :: Text
-    , _tagResourceType      :: Text
-    , _tagValue             :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Tag' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tagKey' @::@ 'Text'
---
--- * 'tagPropagateAtLaunch' @::@ 'Bool'
---
--- * 'tagResourceId' @::@ 'Text'
---
--- * 'tagResourceType' @::@ 'Text'
---
--- * 'tagValue' @::@ 'Text'
---
-tag :: Text -- ^ 'tagResourceId'
-    -> Text -- ^ 'tagResourceType'
-    -> Text -- ^ 'tagKey'
-    -> Text -- ^ 'tagValue'
-    -> Bool -- ^ 'tagPropagateAtLaunch'
-    -> Tag
-tag p1 p2 p3 p4 p5 = Tag
-    { _tagResourceId        = p1
-    , _tagResourceType      = p2
-    , _tagKey               = p3
-    , _tagValue             = p4
-    , _tagPropagateAtLaunch = p5
-    }
-
--- | The tag key.
-tagKey :: Lens' Tag Text
-tagKey = lens _tagKey (\s a -> s { _tagKey = a })
-
--- | Specifies whether the tag is applied to instances launched after the tag is
--- created. The same behavior applies to updates: If you change a tag, it is
--- applied to all instances launched after you made the change.
-tagPropagateAtLaunch :: Lens' Tag Bool
-tagPropagateAtLaunch =
-    lens _tagPropagateAtLaunch (\s a -> s { _tagPropagateAtLaunch = a })
-
--- | The name of the group.
-tagResourceId :: Lens' Tag Text
-tagResourceId = lens _tagResourceId (\s a -> s { _tagResourceId = a })
-
--- | The kind of resource to which the tag is applied. Currently, Auto Scaling
--- supports the 'auto-scaling-group' resource type.
-tagResourceType :: Lens' Tag Text
-tagResourceType = lens _tagResourceType (\s a -> s { _tagResourceType = a })
-
--- | The tag value.
-tagValue :: Lens' Tag Text
-tagValue = lens _tagValue (\s a -> s { _tagValue = a })
-
-instance FromXML Tag where
-    parseXML x = Tag
-        <$> x .@  "Key"
-        <*> x .@  "PropagateAtLaunch"
-        <*> x .@  "ResourceId"
-        <*> x .@  "ResourceType"
-        <*> x .@  "Value"
-
-instance ToQuery Tag where
-    toQuery Tag{..} = mconcat
-        [ "Key"               =? _tagKey
-        , "PropagateAtLaunch" =? _tagPropagateAtLaunch
-        , "ResourceId"        =? _tagResourceId
-        , "ResourceType"      =? _tagResourceType
-        , "Value"             =? _tagValue
-        ]
-
-data NotificationConfiguration = NotificationConfiguration
-    { _ncAutoScalingGroupName :: Maybe Text
-    , _ncNotificationType     :: Maybe Text
-    , _ncTopicARN             :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'NotificationConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ncAutoScalingGroupName' @::@ 'Maybe' 'Text'
---
--- * 'ncNotificationType' @::@ 'Maybe' 'Text'
---
--- * 'ncTopicARN' @::@ 'Maybe' 'Text'
---
-notificationConfiguration :: NotificationConfiguration
-notificationConfiguration = NotificationConfiguration
-    { _ncAutoScalingGroupName = Nothing
-    , _ncTopicARN             = Nothing
-    , _ncNotificationType     = Nothing
-    }
-
--- | The name of the group.
-ncAutoScalingGroupName :: Lens' NotificationConfiguration (Maybe Text)
-ncAutoScalingGroupName =
-    lens _ncAutoScalingGroupName (\s a -> s { _ncAutoScalingGroupName = a })
-
--- | The types of events for an action to start.
-ncNotificationType :: Lens' NotificationConfiguration (Maybe Text)
-ncNotificationType =
-    lens _ncNotificationType (\s a -> s { _ncNotificationType = a })
-
--- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
--- (SNS) topic.
-ncTopicARN :: Lens' NotificationConfiguration (Maybe Text)
-ncTopicARN = lens _ncTopicARN (\s a -> s { _ncTopicARN = a })
-
-instance FromXML NotificationConfiguration where
-    parseXML x = NotificationConfiguration
-        <$> x .@? "AutoScalingGroupName"
-        <*> x .@? "NotificationType"
-        <*> x .@? "TopicARN"
-
-instance ToQuery NotificationConfiguration where
-    toQuery NotificationConfiguration{..} = mconcat
-        [ "AutoScalingGroupName" =? _ncAutoScalingGroupName
-        , "NotificationType"     =? _ncNotificationType
-        , "TopicARN"             =? _ncTopicARN
-        ]
-
-data BlockDeviceMapping = BlockDeviceMapping
-    { _bdmDeviceName  :: Text
-    , _bdmEbs         :: Maybe Ebs
-    , _bdmNoDevice    :: Maybe Bool
-    , _bdmVirtualName :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'BlockDeviceMapping' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'bdmDeviceName' @::@ 'Text'
---
--- * 'bdmEbs' @::@ 'Maybe' 'Ebs'
---
--- * 'bdmNoDevice' @::@ 'Maybe' 'Bool'
---
--- * 'bdmVirtualName' @::@ 'Maybe' 'Text'
---
-blockDeviceMapping :: Text -- ^ 'bdmDeviceName'
-                   -> BlockDeviceMapping
-blockDeviceMapping p1 = BlockDeviceMapping
-    { _bdmDeviceName  = p1
-    , _bdmVirtualName = Nothing
-    , _bdmEbs         = Nothing
-    , _bdmNoDevice    = Nothing
-    }
-
--- | The device name exposed to the EC2 instance (for example, '/dev/sdh' or 'xvdh').
-bdmDeviceName :: Lens' BlockDeviceMapping Text
-bdmDeviceName = lens _bdmDeviceName (\s a -> s { _bdmDeviceName = a })
-
--- | The information about the Amazon EBS volume.
-bdmEbs :: Lens' BlockDeviceMapping (Maybe Ebs)
-bdmEbs = lens _bdmEbs (\s a -> s { _bdmEbs = a })
-
--- | Suppresses a device mapping.
---
--- If 'NoDevice' is set to 'true' for the root device, the instance might fail the
--- EC2 health check. Auto Scaling launches a replacement instance if the
--- instance fails the health check.
-bdmNoDevice :: Lens' BlockDeviceMapping (Maybe Bool)
-bdmNoDevice = lens _bdmNoDevice (\s a -> s { _bdmNoDevice = a })
-
--- | The name of the virtual device, 'ephemeral0' to 'ephemeral3'.
-bdmVirtualName :: Lens' BlockDeviceMapping (Maybe Text)
-bdmVirtualName = lens _bdmVirtualName (\s a -> s { _bdmVirtualName = a })
-
-instance FromXML BlockDeviceMapping where
-    parseXML x = BlockDeviceMapping
-        <$> x .@  "DeviceName"
-        <*> x .@? "Ebs"
-        <*> x .@? "NoDevice"
-        <*> x .@? "VirtualName"
-
-instance ToQuery BlockDeviceMapping where
-    toQuery BlockDeviceMapping{..} = mconcat
-        [ "DeviceName"  =? _bdmDeviceName
-        , "Ebs"         =? _bdmEbs
-        , "NoDevice"    =? _bdmNoDevice
-        , "VirtualName" =? _bdmVirtualName
-        ]
-
-data LaunchConfiguration = LaunchConfiguration
-    { _lcAssociatePublicIpAddress     :: Maybe Bool
-    , _lcBlockDeviceMappings          :: List "member" BlockDeviceMapping
-    , _lcClassicLinkVPCId             :: Maybe Text
-    , _lcClassicLinkVPCSecurityGroups :: List "member" Text
-    , _lcCreatedTime                  :: ISO8601
-    , _lcEbsOptimized                 :: Maybe Bool
-    , _lcIamInstanceProfile           :: Maybe Text
-    , _lcImageId                      :: Text
-    , _lcInstanceMonitoring           :: Maybe InstanceMonitoring
-    , _lcInstanceType                 :: Text
-    , _lcKernelId                     :: Maybe Text
-    , _lcKeyName                      :: Maybe Text
-    , _lcLaunchConfigurationARN       :: Maybe Text
-    , _lcLaunchConfigurationName      :: Text
-    , _lcPlacementTenancy             :: Maybe Text
-    , _lcRamdiskId                    :: Maybe Text
-    , _lcSecurityGroups               :: List "member" Text
-    , _lcSpotPrice                    :: Maybe Text
-    , _lcUserData                     :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'LaunchConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lcAssociatePublicIpAddress' @::@ 'Maybe' 'Bool'
---
--- * 'lcBlockDeviceMappings' @::@ ['BlockDeviceMapping']
---
--- * 'lcClassicLinkVPCId' @::@ 'Maybe' 'Text'
---
--- * 'lcClassicLinkVPCSecurityGroups' @::@ ['Text']
---
--- * 'lcCreatedTime' @::@ 'UTCTime'
---
--- * 'lcEbsOptimized' @::@ 'Maybe' 'Bool'
---
--- * 'lcIamInstanceProfile' @::@ 'Maybe' 'Text'
---
--- * 'lcImageId' @::@ 'Text'
---
--- * 'lcInstanceMonitoring' @::@ 'Maybe' 'InstanceMonitoring'
---
--- * 'lcInstanceType' @::@ 'Text'
---
--- * 'lcKernelId' @::@ 'Maybe' 'Text'
---
--- * 'lcKeyName' @::@ 'Maybe' 'Text'
---
--- * 'lcLaunchConfigurationARN' @::@ 'Maybe' 'Text'
---
--- * 'lcLaunchConfigurationName' @::@ 'Text'
---
--- * 'lcPlacementTenancy' @::@ 'Maybe' 'Text'
---
--- * 'lcRamdiskId' @::@ 'Maybe' 'Text'
---
--- * 'lcSecurityGroups' @::@ ['Text']
---
--- * 'lcSpotPrice' @::@ 'Maybe' 'Text'
---
--- * 'lcUserData' @::@ 'Maybe' 'Text'
---
-launchConfiguration :: Text -- ^ 'lcLaunchConfigurationName'
-                    -> Text -- ^ 'lcImageId'
-                    -> Text -- ^ 'lcInstanceType'
-                    -> UTCTime -- ^ 'lcCreatedTime'
-                    -> LaunchConfiguration
-launchConfiguration p1 p2 p3 p4 = LaunchConfiguration
-    { _lcLaunchConfigurationName      = p1
-    , _lcImageId                      = p2
-    , _lcInstanceType                 = p3
-    , _lcCreatedTime                  = withIso _Time (const id) p4
-    , _lcLaunchConfigurationARN       = Nothing
-    , _lcKeyName                      = Nothing
-    , _lcSecurityGroups               = mempty
-    , _lcClassicLinkVPCId             = Nothing
-    , _lcClassicLinkVPCSecurityGroups = mempty
-    , _lcUserData                     = Nothing
-    , _lcKernelId                     = Nothing
-    , _lcRamdiskId                    = Nothing
-    , _lcBlockDeviceMappings          = mempty
-    , _lcInstanceMonitoring           = Nothing
-    , _lcSpotPrice                    = Nothing
-    , _lcIamInstanceProfile           = Nothing
-    , _lcEbsOptimized                 = Nothing
-    , _lcAssociatePublicIpAddress     = Nothing
-    , _lcPlacementTenancy             = Nothing
-    }
-
--- | Specifies whether the EC2 instances are associated with a public IP address ('true') or not ('false').
-lcAssociatePublicIpAddress :: Lens' LaunchConfiguration (Maybe Bool)
-lcAssociatePublicIpAddress =
-    lens _lcAssociatePublicIpAddress
-        (\s a -> s { _lcAssociatePublicIpAddress = a })
-
--- | A block device mapping that specifies how block devices are exposed to the
--- instance. Each mapping is made up of a 'virtualName' and a 'deviceName'.
-lcBlockDeviceMappings :: Lens' LaunchConfiguration [BlockDeviceMapping]
-lcBlockDeviceMappings =
-    lens _lcBlockDeviceMappings (\s a -> s { _lcBlockDeviceMappings = a })
-        . _List
-
--- | The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to.
--- This parameter can only be used if you are launching EC2-Classic instances.
--- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink> in the /Amazon Elastic Compute CloudUser Guide/.
-lcClassicLinkVPCId :: Lens' LaunchConfiguration (Maybe Text)
-lcClassicLinkVPCId =
-    lens _lcClassicLinkVPCId (\s a -> s { _lcClassicLinkVPCId = a })
-
--- | The IDs of one or more security groups for the VPC specified in 'ClassicLinkVPCId'. This parameter is required if 'ClassicLinkVPCId' is specified, and cannot be
--- used otherwise. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink> in the /Amazon ElasticCompute Cloud User Guide/.
-lcClassicLinkVPCSecurityGroups :: Lens' LaunchConfiguration [Text]
-lcClassicLinkVPCSecurityGroups =
-    lens _lcClassicLinkVPCSecurityGroups
-        (\s a -> s { _lcClassicLinkVPCSecurityGroups = a })
-            . _List
-
--- | The creation date and time for the launch configuration.
-lcCreatedTime :: Lens' LaunchConfiguration UTCTime
-lcCreatedTime = lens _lcCreatedTime (\s a -> s { _lcCreatedTime = a }) . _Time
-
--- | Controls whether the instance is optimized for EBS I/O ('true') or not ('false').
-lcEbsOptimized :: Lens' LaunchConfiguration (Maybe Bool)
-lcEbsOptimized = lens _lcEbsOptimized (\s a -> s { _lcEbsOptimized = a })
-
--- | The name or Amazon Resource Name (ARN) of the instance profile associated
--- with the IAM role for the instance.
-lcIamInstanceProfile :: Lens' LaunchConfiguration (Maybe Text)
-lcIamInstanceProfile =
-    lens _lcIamInstanceProfile (\s a -> s { _lcIamInstanceProfile = a })
-
--- | The ID of the Amazon Machine Image (AMI).
-lcImageId :: Lens' LaunchConfiguration Text
-lcImageId = lens _lcImageId (\s a -> s { _lcImageId = a })
-
--- | Controls whether instances in this group are launched with detailed
--- monitoring.
-lcInstanceMonitoring :: Lens' LaunchConfiguration (Maybe InstanceMonitoring)
-lcInstanceMonitoring =
-    lens _lcInstanceMonitoring (\s a -> s { _lcInstanceMonitoring = a })
-
--- | The instance type for the EC2 instances.
-lcInstanceType :: Lens' LaunchConfiguration Text
-lcInstanceType = lens _lcInstanceType (\s a -> s { _lcInstanceType = a })
-
--- | The ID of the kernel associated with the AMI.
-lcKernelId :: Lens' LaunchConfiguration (Maybe Text)
-lcKernelId = lens _lcKernelId (\s a -> s { _lcKernelId = a })
-
--- | The name of the key pair.
-lcKeyName :: Lens' LaunchConfiguration (Maybe Text)
-lcKeyName = lens _lcKeyName (\s a -> s { _lcKeyName = a })
-
--- | The Amazon Resource Name (ARN) of the launch configuration.
-lcLaunchConfigurationARN :: Lens' LaunchConfiguration (Maybe Text)
-lcLaunchConfigurationARN =
-    lens _lcLaunchConfigurationARN
-        (\s a -> s { _lcLaunchConfigurationARN = a })
-
--- | The name of the launch configuration.
-lcLaunchConfigurationName :: Lens' LaunchConfiguration Text
-lcLaunchConfigurationName =
-    lens _lcLaunchConfigurationName
-        (\s a -> s { _lcLaunchConfigurationName = a })
-
--- | The tenancy of the instance, either 'default' or 'dedicated'. An instance with 'dedicated' tenancy runs in an isolated, single-tenant hardware and can only be launched
--- in a VPC.
-lcPlacementTenancy :: Lens' LaunchConfiguration (Maybe Text)
-lcPlacementTenancy =
-    lens _lcPlacementTenancy (\s a -> s { _lcPlacementTenancy = a })
-
--- | The ID of the RAM disk associated with the AMI.
-lcRamdiskId :: Lens' LaunchConfiguration (Maybe Text)
-lcRamdiskId = lens _lcRamdiskId (\s a -> s { _lcRamdiskId = a })
-
--- | The security groups to associate with the EC2 instances.
-lcSecurityGroups :: Lens' LaunchConfiguration [Text]
-lcSecurityGroups = lens _lcSecurityGroups (\s a -> s { _lcSecurityGroups = a }) . _List
-
--- | The price to bid when launching Spot Instances.
-lcSpotPrice :: Lens' LaunchConfiguration (Maybe Text)
-lcSpotPrice = lens _lcSpotPrice (\s a -> s { _lcSpotPrice = a })
-
--- | The user data available to the EC2 instances.
-lcUserData :: Lens' LaunchConfiguration (Maybe Text)
-lcUserData = lens _lcUserData (\s a -> s { _lcUserData = a })
-
-instance FromXML LaunchConfiguration where
-    parseXML x = LaunchConfiguration
-        <$> x .@? "AssociatePublicIpAddress"
-        <*> x .@? "BlockDeviceMappings" .!@ mempty
-        <*> x .@? "ClassicLinkVPCId"
-        <*> x .@? "ClassicLinkVPCSecurityGroups" .!@ mempty
-        <*> x .@  "CreatedTime"
-        <*> x .@? "EbsOptimized"
-        <*> x .@? "IamInstanceProfile"
-        <*> x .@  "ImageId"
-        <*> x .@? "InstanceMonitoring"
-        <*> x .@  "InstanceType"
-        <*> x .@? "KernelId"
-        <*> x .@? "KeyName"
-        <*> x .@? "LaunchConfigurationARN"
-        <*> x .@  "LaunchConfigurationName"
-        <*> x .@? "PlacementTenancy"
-        <*> x .@? "RamdiskId"
-        <*> x .@? "SecurityGroups" .!@ mempty
-        <*> x .@? "SpotPrice"
-        <*> x .@? "UserData"
-
-instance ToQuery LaunchConfiguration where
-    toQuery LaunchConfiguration{..} = mconcat
-        [ "AssociatePublicIpAddress"     =? _lcAssociatePublicIpAddress
-        , "BlockDeviceMappings"          =? _lcBlockDeviceMappings
-        , "ClassicLinkVPCId"             =? _lcClassicLinkVPCId
-        , "ClassicLinkVPCSecurityGroups" =? _lcClassicLinkVPCSecurityGroups
-        , "CreatedTime"                  =? _lcCreatedTime
-        , "EbsOptimized"                 =? _lcEbsOptimized
-        , "IamInstanceProfile"           =? _lcIamInstanceProfile
-        , "ImageId"                      =? _lcImageId
-        , "InstanceMonitoring"           =? _lcInstanceMonitoring
-        , "InstanceType"                 =? _lcInstanceType
-        , "KernelId"                     =? _lcKernelId
-        , "KeyName"                      =? _lcKeyName
-        , "LaunchConfigurationARN"       =? _lcLaunchConfigurationARN
-        , "LaunchConfigurationName"      =? _lcLaunchConfigurationName
-        , "PlacementTenancy"             =? _lcPlacementTenancy
-        , "RamdiskId"                    =? _lcRamdiskId
-        , "SecurityGroups"               =? _lcSecurityGroups
-        , "SpotPrice"                    =? _lcSpotPrice
-        , "UserData"                     =? _lcUserData
-        ]
-
-data AutoScalingGroup = AutoScalingGroup
-    { _asgAutoScalingGroupARN     :: Maybe Text
-    , _asgAutoScalingGroupName    :: Text
-    , _asgAvailabilityZones       :: List1 "member" Text
-    , _asgCreatedTime             :: ISO8601
-    , _asgDefaultCooldown         :: Int
-    , _asgDesiredCapacity         :: Int
-    , _asgEnabledMetrics          :: List "member" EnabledMetric
-    , _asgHealthCheckGracePeriod  :: Maybe Int
-    , _asgHealthCheckType         :: Text
-    , _asgInstances               :: List "member" Instance
-    , _asgLaunchConfigurationName :: Text
-    , _asgLoadBalancerNames       :: List "member" Text
-    , _asgMaxSize                 :: Int
-    , _asgMinSize                 :: Int
-    , _asgPlacementGroup          :: Maybe Text
-    , _asgStatus                  :: Maybe Text
-    , _asgSuspendedProcesses      :: List "member" SuspendedProcess
-    , _asgTags                    :: List "member" TagDescription
-    , _asgTerminationPolicies     :: List "member" Text
-    , _asgVPCZoneIdentifier       :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'AutoScalingGroup' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'asgAutoScalingGroupARN' @::@ 'Maybe' 'Text'
---
--- * 'asgAutoScalingGroupName' @::@ 'Text'
---
--- * 'asgAvailabilityZones' @::@ 'NonEmpty' 'Text'
---
--- * 'asgCreatedTime' @::@ 'UTCTime'
---
--- * 'asgDefaultCooldown' @::@ 'Int'
---
--- * 'asgDesiredCapacity' @::@ 'Int'
---
--- * 'asgEnabledMetrics' @::@ ['EnabledMetric']
---
--- * 'asgHealthCheckGracePeriod' @::@ 'Maybe' 'Int'
---
--- * 'asgHealthCheckType' @::@ 'Text'
---
--- * 'asgInstances' @::@ ['Instance']
---
--- * 'asgLaunchConfigurationName' @::@ 'Text'
---
--- * 'asgLoadBalancerNames' @::@ ['Text']
---
--- * 'asgMaxSize' @::@ 'Int'
---
--- * 'asgMinSize' @::@ 'Int'
---
--- * 'asgPlacementGroup' @::@ 'Maybe' 'Text'
---
--- * 'asgStatus' @::@ 'Maybe' 'Text'
---
--- * 'asgSuspendedProcesses' @::@ ['SuspendedProcess']
---
--- * 'asgTags' @::@ ['TagDescription']
---
--- * 'asgTerminationPolicies' @::@ ['Text']
---
--- * 'asgVPCZoneIdentifier' @::@ 'Maybe' 'Text'
---
-autoScalingGroup :: Text -- ^ 'asgAutoScalingGroupName'
-                 -> Text -- ^ 'asgLaunchConfigurationName'
-                 -> Int -- ^ 'asgMinSize'
-                 -> Int -- ^ 'asgMaxSize'
-                 -> Int -- ^ 'asgDesiredCapacity'
-                 -> Int -- ^ 'asgDefaultCooldown'
-                 -> NonEmpty Text -- ^ 'asgAvailabilityZones'
-                 -> Text -- ^ 'asgHealthCheckType'
-                 -> UTCTime -- ^ 'asgCreatedTime'
-                 -> AutoScalingGroup
-autoScalingGroup p1 p2 p3 p4 p5 p6 p7 p8 p9 = AutoScalingGroup
-    { _asgAutoScalingGroupName    = p1
-    , _asgLaunchConfigurationName = p2
-    , _asgMinSize                 = p3
-    , _asgMaxSize                 = p4
-    , _asgDesiredCapacity         = p5
-    , _asgDefaultCooldown         = p6
-    , _asgAvailabilityZones       = withIso _List1 (const id) p7
-    , _asgHealthCheckType         = p8
-    , _asgCreatedTime             = withIso _Time (const id) p9
-    , _asgAutoScalingGroupARN     = Nothing
-    , _asgLoadBalancerNames       = mempty
-    , _asgHealthCheckGracePeriod  = Nothing
-    , _asgInstances               = mempty
-    , _asgSuspendedProcesses      = mempty
-    , _asgPlacementGroup          = Nothing
-    , _asgVPCZoneIdentifier       = Nothing
-    , _asgEnabledMetrics          = mempty
-    , _asgStatus                  = Nothing
-    , _asgTags                    = mempty
-    , _asgTerminationPolicies     = mempty
-    }
-
--- | The Amazon Resource Name (ARN) of the group.
-asgAutoScalingGroupARN :: Lens' AutoScalingGroup (Maybe Text)
-asgAutoScalingGroupARN =
-    lens _asgAutoScalingGroupARN (\s a -> s { _asgAutoScalingGroupARN = a })
-
--- | The name of the group.
-asgAutoScalingGroupName :: Lens' AutoScalingGroup Text
-asgAutoScalingGroupName =
-    lens _asgAutoScalingGroupName (\s a -> s { _asgAutoScalingGroupName = a })
-
--- | One or more Availability Zones for the group.
-asgAvailabilityZones :: Lens' AutoScalingGroup (NonEmpty Text)
-asgAvailabilityZones =
-    lens _asgAvailabilityZones (\s a -> s { _asgAvailabilityZones = a })
-        . _List1
-
--- | The date and time the group was created.
-asgCreatedTime :: Lens' AutoScalingGroup UTCTime
-asgCreatedTime = lens _asgCreatedTime (\s a -> s { _asgCreatedTime = a }) . _Time
-
--- | The number of seconds after a scaling activity completes before any further
--- scaling activities can start.
-asgDefaultCooldown :: Lens' AutoScalingGroup Int
-asgDefaultCooldown =
-    lens _asgDefaultCooldown (\s a -> s { _asgDefaultCooldown = a })
-
--- | The size of the group.
-asgDesiredCapacity :: Lens' AutoScalingGroup Int
-asgDesiredCapacity =
-    lens _asgDesiredCapacity (\s a -> s { _asgDesiredCapacity = a })
-
--- | The metrics enabled for this Auto Scaling group.
-asgEnabledMetrics :: Lens' AutoScalingGroup [EnabledMetric]
-asgEnabledMetrics =
-    lens _asgEnabledMetrics (\s a -> s { _asgEnabledMetrics = a })
-        . _List
-
--- | The amount of time that Auto Scaling waits before checking an instance's
--- health status. The grace period begins when an instance comes into service.
-asgHealthCheckGracePeriod :: Lens' AutoScalingGroup (Maybe Int)
-asgHealthCheckGracePeriod =
-    lens _asgHealthCheckGracePeriod
-        (\s a -> s { _asgHealthCheckGracePeriod = a })
-
--- | The service of interest for the health status check, which can be either 'EC2'
--- for Amazon EC2 or 'ELB' for Elastic Load Balancing.
-asgHealthCheckType :: Lens' AutoScalingGroup Text
-asgHealthCheckType =
-    lens _asgHealthCheckType (\s a -> s { _asgHealthCheckType = a })
-
--- | The EC2 instances associated with the group.
-asgInstances :: Lens' AutoScalingGroup [Instance]
-asgInstances = lens _asgInstances (\s a -> s { _asgInstances = a }) . _List
-
--- | The name of the associated launch configuration.
-asgLaunchConfigurationName :: Lens' AutoScalingGroup Text
-asgLaunchConfigurationName =
-    lens _asgLaunchConfigurationName
-        (\s a -> s { _asgLaunchConfigurationName = a })
-
--- | One or more load balancers associated with the group.
-asgLoadBalancerNames :: Lens' AutoScalingGroup [Text]
-asgLoadBalancerNames =
-    lens _asgLoadBalancerNames (\s a -> s { _asgLoadBalancerNames = a })
-        . _List
-
--- | The maximum size of the group.
-asgMaxSize :: Lens' AutoScalingGroup Int
-asgMaxSize = lens _asgMaxSize (\s a -> s { _asgMaxSize = a })
-
--- | The minimum size of the group.
-asgMinSize :: Lens' AutoScalingGroup Int
-asgMinSize = lens _asgMinSize (\s a -> s { _asgMinSize = a })
-
--- | The name of the placement group into which you'll launch your instances, if
--- any. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html Placement Groups>.
-asgPlacementGroup :: Lens' AutoScalingGroup (Maybe Text)
-asgPlacementGroup =
-    lens _asgPlacementGroup (\s a -> s { _asgPlacementGroup = a })
-
--- | The current state of the Auto Scaling group when a 'DeleteAutoScalingGroup'
--- action is in progress.
-asgStatus :: Lens' AutoScalingGroup (Maybe Text)
-asgStatus = lens _asgStatus (\s a -> s { _asgStatus = a })
-
--- | The suspended processes associated with the group.
-asgSuspendedProcesses :: Lens' AutoScalingGroup [SuspendedProcess]
-asgSuspendedProcesses =
-    lens _asgSuspendedProcesses (\s a -> s { _asgSuspendedProcesses = a })
-        . _List
-
--- | The tags for the Auto Scaling group.
-asgTags :: Lens' AutoScalingGroup [TagDescription]
-asgTags = lens _asgTags (\s a -> s { _asgTags = a }) . _List
-
--- | The termination policies for this Auto Scaling group.
-asgTerminationPolicies :: Lens' AutoScalingGroup [Text]
-asgTerminationPolicies =
-    lens _asgTerminationPolicies (\s a -> s { _asgTerminationPolicies = a })
-        . _List
-
--- | One or more subnet IDs, if applicable, separated by commas.
---
--- If you specify 'VPCZoneIdentifier' and 'AvailabilityZones', ensure that the
--- Availability Zones of the subnets match the values for 'AvailabilityZones'.
-asgVPCZoneIdentifier :: Lens' AutoScalingGroup (Maybe Text)
-asgVPCZoneIdentifier =
-    lens _asgVPCZoneIdentifier (\s a -> s { _asgVPCZoneIdentifier = a })
-
-instance FromXML AutoScalingGroup where
-    parseXML x = AutoScalingGroup
-        <$> x .@? "AutoScalingGroupARN"
-        <*> x .@  "AutoScalingGroupName"
-        <*> x .@  "AvailabilityZones"
-        <*> x .@  "CreatedTime"
-        <*> x .@  "DefaultCooldown"
-        <*> x .@  "DesiredCapacity"
-        <*> x .@? "EnabledMetrics" .!@ mempty
-        <*> x .@? "HealthCheckGracePeriod"
-        <*> x .@  "HealthCheckType"
-        <*> x .@? "Instances" .!@ mempty
-        <*> x .@  "LaunchConfigurationName"
-        <*> x .@? "LoadBalancerNames" .!@ mempty
-        <*> x .@  "MaxSize"
-        <*> x .@  "MinSize"
-        <*> x .@? "PlacementGroup"
-        <*> x .@? "Status"
-        <*> x .@? "SuspendedProcesses" .!@ mempty
-        <*> x .@? "Tags" .!@ mempty
-        <*> x .@? "TerminationPolicies" .!@ mempty
-        <*> x .@? "VPCZoneIdentifier"
-
-instance ToQuery AutoScalingGroup where
-    toQuery AutoScalingGroup{..} = mconcat
-        [ "AutoScalingGroupARN"     =? _asgAutoScalingGroupARN
-        , "AutoScalingGroupName"    =? _asgAutoScalingGroupName
-        , "AvailabilityZones"       =? _asgAvailabilityZones
-        , "CreatedTime"             =? _asgCreatedTime
-        , "DefaultCooldown"         =? _asgDefaultCooldown
-        , "DesiredCapacity"         =? _asgDesiredCapacity
-        , "EnabledMetrics"          =? _asgEnabledMetrics
-        , "HealthCheckGracePeriod"  =? _asgHealthCheckGracePeriod
-        , "HealthCheckType"         =? _asgHealthCheckType
-        , "Instances"               =? _asgInstances
-        , "LaunchConfigurationName" =? _asgLaunchConfigurationName
-        , "LoadBalancerNames"       =? _asgLoadBalancerNames
-        , "MaxSize"                 =? _asgMaxSize
-        , "MinSize"                 =? _asgMinSize
-        , "PlacementGroup"          =? _asgPlacementGroup
-        , "Status"                  =? _asgStatus
-        , "SuspendedProcesses"      =? _asgSuspendedProcesses
-        , "Tags"                    =? _asgTags
-        , "TerminationPolicies"     =? _asgTerminationPolicies
-        , "VPCZoneIdentifier"       =? _asgVPCZoneIdentifier
-        ]
-
-data ScalingPolicy = ScalingPolicy
-    { _sp1AdjustmentType       :: Maybe Text
-    , _sp1Alarms               :: List "member" Alarm
-    , _sp1AutoScalingGroupName :: Maybe Text
-    , _sp1Cooldown             :: Maybe Int
-    , _sp1MinAdjustmentStep    :: Maybe Int
-    , _sp1PolicyARN            :: Maybe Text
-    , _sp1PolicyName           :: Maybe Text
-    , _sp1ScalingAdjustment    :: Maybe Int
-    } deriving (Eq, Read, Show)
-
--- | 'ScalingPolicy' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'sp1AdjustmentType' @::@ 'Maybe' 'Text'
---
--- * 'sp1Alarms' @::@ ['Alarm']
---
--- * 'sp1AutoScalingGroupName' @::@ 'Maybe' 'Text'
---
--- * 'sp1Cooldown' @::@ 'Maybe' 'Int'
---
--- * 'sp1MinAdjustmentStep' @::@ 'Maybe' 'Int'
---
--- * 'sp1PolicyARN' @::@ 'Maybe' 'Text'
---
--- * 'sp1PolicyName' @::@ 'Maybe' 'Text'
---
--- * 'sp1ScalingAdjustment' @::@ 'Maybe' 'Int'
---
-scalingPolicy :: ScalingPolicy
-scalingPolicy = ScalingPolicy
-    { _sp1AutoScalingGroupName = Nothing
-    , _sp1PolicyName           = Nothing
-    , _sp1ScalingAdjustment    = Nothing
-    , _sp1AdjustmentType       = Nothing
-    , _sp1Cooldown             = Nothing
-    , _sp1PolicyARN            = Nothing
-    , _sp1Alarms               = mempty
-    , _sp1MinAdjustmentStep    = Nothing
-    }
-
--- | Specifies whether the 'ScalingAdjustment' is an absolute number or a percentage
--- of the current capacity. Valid values are 'ChangeInCapacity', 'ExactCapacity',
--- and 'PercentChangeInCapacity'.
-sp1AdjustmentType :: Lens' ScalingPolicy (Maybe Text)
-sp1AdjustmentType =
-    lens _sp1AdjustmentType (\s a -> s { _sp1AdjustmentType = a })
-
--- | The CloudWatch Alarms related to the policy.
-sp1Alarms :: Lens' ScalingPolicy [Alarm]
-sp1Alarms = lens _sp1Alarms (\s a -> s { _sp1Alarms = a }) . _List
-
--- | The name of the Auto Scaling group associated with this scaling policy.
-sp1AutoScalingGroupName :: Lens' ScalingPolicy (Maybe Text)
-sp1AutoScalingGroupName =
-    lens _sp1AutoScalingGroupName (\s a -> s { _sp1AutoScalingGroupName = a })
-
--- | The amount of time, in seconds, after a scaling activity completes before any
--- further trigger-related scaling activities can start.
-sp1Cooldown :: Lens' ScalingPolicy (Maybe Int)
-sp1Cooldown = lens _sp1Cooldown (\s a -> s { _sp1Cooldown = a })
-
--- | Changes the 'DesiredCapacity' of the Auto Scaling group by at least the
--- specified number of instances.
-sp1MinAdjustmentStep :: Lens' ScalingPolicy (Maybe Int)
-sp1MinAdjustmentStep =
-    lens _sp1MinAdjustmentStep (\s a -> s { _sp1MinAdjustmentStep = a })
-
--- | The Amazon Resource Name (ARN) of the policy.
-sp1PolicyARN :: Lens' ScalingPolicy (Maybe Text)
-sp1PolicyARN = lens _sp1PolicyARN (\s a -> s { _sp1PolicyARN = a })
-
--- | The name of the scaling policy.
-sp1PolicyName :: Lens' ScalingPolicy (Maybe Text)
-sp1PolicyName = lens _sp1PolicyName (\s a -> s { _sp1PolicyName = a })
-
--- | The number associated with the specified adjustment type. A positive value
--- adds to the current capacity and a negative value removes from the current
--- capacity.
-sp1ScalingAdjustment :: Lens' ScalingPolicy (Maybe Int)
-sp1ScalingAdjustment =
-    lens _sp1ScalingAdjustment (\s a -> s { _sp1ScalingAdjustment = a })
-
-instance FromXML ScalingPolicy where
-    parseXML x = ScalingPolicy
-        <$> x .@? "AdjustmentType"
-        <*> x .@? "Alarms" .!@ mempty
-        <*> x .@? "AutoScalingGroupName"
-        <*> x .@? "Cooldown"
-        <*> x .@? "MinAdjustmentStep"
-        <*> x .@? "PolicyARN"
-        <*> x .@? "PolicyName"
-        <*> x .@? "ScalingAdjustment"
-
-instance ToQuery ScalingPolicy where
-    toQuery ScalingPolicy{..} = mconcat
-        [ "AdjustmentType"       =? _sp1AdjustmentType
-        , "Alarms"               =? _sp1Alarms
-        , "AutoScalingGroupName" =? _sp1AutoScalingGroupName
-        , "Cooldown"             =? _sp1Cooldown
-        , "MinAdjustmentStep"    =? _sp1MinAdjustmentStep
-        , "PolicyARN"            =? _sp1PolicyARN
-        , "PolicyName"           =? _sp1PolicyName
-        , "ScalingAdjustment"    =? _sp1ScalingAdjustment
-        ]
-
-newtype InstanceMonitoring = InstanceMonitoring
-    { _imEnabled :: Maybe Bool
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'InstanceMonitoring' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'imEnabled' @::@ 'Maybe' 'Bool'
---
-instanceMonitoring :: InstanceMonitoring
-instanceMonitoring = InstanceMonitoring
-    { _imEnabled = Nothing
-    }
-
--- | If 'True', instance monitoring is enabled.
-imEnabled :: Lens' InstanceMonitoring (Maybe Bool)
-imEnabled = lens _imEnabled (\s a -> s { _imEnabled = a })
-
-instance FromXML InstanceMonitoring where
-    parseXML x = InstanceMonitoring
-        <$> x .@? "Enabled"
-
-instance ToQuery InstanceMonitoring where
-    toQuery InstanceMonitoring{..} = mconcat
-        [ "Enabled" =? _imEnabled
-        ]
-
-data ScheduledUpdateGroupAction = ScheduledUpdateGroupAction
-    { _sugaAutoScalingGroupName :: Maybe Text
-    , _sugaDesiredCapacity      :: Maybe Int
-    , _sugaEndTime              :: Maybe ISO8601
-    , _sugaMaxSize              :: Maybe Int
-    , _sugaMinSize              :: Maybe Int
-    , _sugaRecurrence           :: Maybe Text
-    , _sugaScheduledActionARN   :: Maybe Text
-    , _sugaScheduledActionName  :: Maybe Text
-    , _sugaStartTime            :: Maybe ISO8601
-    , _sugaTime                 :: Maybe ISO8601
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ScheduledUpdateGroupAction' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'sugaAutoScalingGroupName' @::@ 'Maybe' 'Text'
---
--- * 'sugaDesiredCapacity' @::@ 'Maybe' 'Int'
---
--- * 'sugaEndTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'sugaMaxSize' @::@ 'Maybe' 'Int'
---
--- * 'sugaMinSize' @::@ 'Maybe' 'Int'
---
--- * 'sugaRecurrence' @::@ 'Maybe' 'Text'
---
--- * 'sugaScheduledActionARN' @::@ 'Maybe' 'Text'
---
--- * 'sugaScheduledActionName' @::@ 'Maybe' 'Text'
---
--- * 'sugaStartTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'sugaTime' @::@ 'Maybe' 'UTCTime'
---
-scheduledUpdateGroupAction :: ScheduledUpdateGroupAction
-scheduledUpdateGroupAction = ScheduledUpdateGroupAction
-    { _sugaAutoScalingGroupName = Nothing
-    , _sugaScheduledActionName  = Nothing
-    , _sugaScheduledActionARN   = Nothing
-    , _sugaTime                 = Nothing
-    , _sugaStartTime            = Nothing
-    , _sugaEndTime              = Nothing
-    , _sugaRecurrence           = Nothing
-    , _sugaMinSize              = Nothing
-    , _sugaMaxSize              = Nothing
-    , _sugaDesiredCapacity      = Nothing
-    }
-
--- | The name of the group.
-sugaAutoScalingGroupName :: Lens' ScheduledUpdateGroupAction (Maybe Text)
-sugaAutoScalingGroupName =
-    lens _sugaAutoScalingGroupName
-        (\s a -> s { _sugaAutoScalingGroupName = a })
-
--- | The number of instances you prefer to maintain in the group.
-sugaDesiredCapacity :: Lens' ScheduledUpdateGroupAction (Maybe Int)
-sugaDesiredCapacity =
-    lens _sugaDesiredCapacity (\s a -> s { _sugaDesiredCapacity = a })
-
--- | The time that the action is scheduled to end. This value can be up to one
--- month in the future.
-sugaEndTime :: Lens' ScheduledUpdateGroupAction (Maybe UTCTime)
-sugaEndTime = lens _sugaEndTime (\s a -> s { _sugaEndTime = a }) . mapping _Time
-
--- | The maximum size of the group.
-sugaMaxSize :: Lens' ScheduledUpdateGroupAction (Maybe Int)
-sugaMaxSize = lens _sugaMaxSize (\s a -> s { _sugaMaxSize = a })
-
--- | The minimum size of the group.
-sugaMinSize :: Lens' ScheduledUpdateGroupAction (Maybe Int)
-sugaMinSize = lens _sugaMinSize (\s a -> s { _sugaMinSize = a })
-
--- | The regular schedule that an action occurs.
-sugaRecurrence :: Lens' ScheduledUpdateGroupAction (Maybe Text)
-sugaRecurrence = lens _sugaRecurrence (\s a -> s { _sugaRecurrence = a })
-
--- | The Amazon Resource Name (ARN) of the scheduled action.
-sugaScheduledActionARN :: Lens' ScheduledUpdateGroupAction (Maybe Text)
-sugaScheduledActionARN =
-    lens _sugaScheduledActionARN (\s a -> s { _sugaScheduledActionARN = a })
-
--- | The name of the scheduled action.
-sugaScheduledActionName :: Lens' ScheduledUpdateGroupAction (Maybe Text)
-sugaScheduledActionName =
-    lens _sugaScheduledActionName (\s a -> s { _sugaScheduledActionName = a })
-
--- | The time that the action is scheduled to begin. This value can be up to one
--- month in the future.
---
--- When 'StartTime' and 'EndTime' are specified with 'Recurrence', they form the
--- boundaries of when the recurring action will start and stop.
-sugaStartTime :: Lens' ScheduledUpdateGroupAction (Maybe UTCTime)
-sugaStartTime = lens _sugaStartTime (\s a -> s { _sugaStartTime = a }) . mapping _Time
-
--- | 'Time' is deprecated.
---
--- The time that the action is scheduled to begin. 'Time' is an alias for 'StartTime'.
-sugaTime :: Lens' ScheduledUpdateGroupAction (Maybe UTCTime)
-sugaTime = lens _sugaTime (\s a -> s { _sugaTime = a }) . mapping _Time
-
-instance FromXML ScheduledUpdateGroupAction where
-    parseXML x = ScheduledUpdateGroupAction
-        <$> x .@? "AutoScalingGroupName"
-        <*> x .@? "DesiredCapacity"
-        <*> x .@? "EndTime"
-        <*> x .@? "MaxSize"
-        <*> x .@? "MinSize"
-        <*> x .@? "Recurrence"
-        <*> x .@? "ScheduledActionARN"
-        <*> x .@? "ScheduledActionName"
-        <*> x .@? "StartTime"
-        <*> x .@? "Time"
-
-instance ToQuery ScheduledUpdateGroupAction where
-    toQuery ScheduledUpdateGroupAction{..} = mconcat
-        [ "AutoScalingGroupName" =? _sugaAutoScalingGroupName
-        , "DesiredCapacity"      =? _sugaDesiredCapacity
-        , "EndTime"              =? _sugaEndTime
-        , "MaxSize"              =? _sugaMaxSize
-        , "MinSize"              =? _sugaMinSize
-        , "Recurrence"           =? _sugaRecurrence
-        , "ScheduledActionARN"   =? _sugaScheduledActionARN
-        , "ScheduledActionName"  =? _sugaScheduledActionName
-        , "StartTime"            =? _sugaStartTime
-        , "Time"                 =? _sugaTime
-        ]
-
-data ScalingProcessQuery = ScalingProcessQuery
-    { _spqAutoScalingGroupName :: Text
-    , _spqScalingProcesses     :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ScalingProcessQuery' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'spqAutoScalingGroupName' @::@ 'Text'
---
--- * 'spqScalingProcesses' @::@ ['Text']
---
-scalingProcessQuery :: Text -- ^ 'spqAutoScalingGroupName'
-                    -> ScalingProcessQuery
-scalingProcessQuery p1 = ScalingProcessQuery
-    { _spqAutoScalingGroupName = p1
-    , _spqScalingProcesses     = mempty
-    }
-
--- | The name or Amazon Resource Name (ARN) of the Auto Scaling group.
-spqAutoScalingGroupName :: Lens' ScalingProcessQuery Text
-spqAutoScalingGroupName =
-    lens _spqAutoScalingGroupName (\s a -> s { _spqAutoScalingGroupName = a })
-
--- | One or more of the following processes:
---
--- Launch Terminate HealthCheck ReplaceUnhealthy AZRebalance AlarmNotification
--- ScheduledActions AddToLoadBalancer
-spqScalingProcesses :: Lens' ScalingProcessQuery [Text]
-spqScalingProcesses =
-    lens _spqScalingProcesses (\s a -> s { _spqScalingProcesses = a })
-        . _List
-
-instance FromXML ScalingProcessQuery where
-    parseXML x = ScalingProcessQuery
-        <$> x .@  "AutoScalingGroupName"
-        <*> x .@? "ScalingProcesses" .!@ mempty
-
-instance ToQuery ScalingProcessQuery where
-    toQuery ScalingProcessQuery{..} = mconcat
-        [ "AutoScalingGroupName" =? _spqAutoScalingGroupName
-        , "ScalingProcesses"     =? _spqScalingProcesses
-        ]
-
-data Ebs = Ebs
-    { _ebsDeleteOnTermination :: Maybe Bool
-    , _ebsIops                :: Maybe Nat
-    , _ebsSnapshotId          :: Maybe Text
-    , _ebsVolumeSize          :: Maybe Nat
-    , _ebsVolumeType          :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Ebs' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ebsDeleteOnTermination' @::@ 'Maybe' 'Bool'
---
--- * 'ebsIops' @::@ 'Maybe' 'Natural'
---
--- * 'ebsSnapshotId' @::@ 'Maybe' 'Text'
---
--- * 'ebsVolumeSize' @::@ 'Maybe' 'Natural'
---
--- * 'ebsVolumeType' @::@ 'Maybe' 'Text'
---
-ebs :: Ebs
-ebs = Ebs
-    { _ebsSnapshotId          = Nothing
-    , _ebsVolumeSize          = Nothing
-    , _ebsVolumeType          = Nothing
-    , _ebsDeleteOnTermination = Nothing
-    , _ebsIops                = Nothing
-    }
-
--- | Indicates whether to delete the volume on instance termination.
---
--- Default: 'true'
-ebsDeleteOnTermination :: Lens' Ebs (Maybe Bool)
-ebsDeleteOnTermination =
-    lens _ebsDeleteOnTermination (\s a -> s { _ebsDeleteOnTermination = a })
-
--- | For Provisioned IOPS (SSD) volumes only. The number of I/O operations per
--- second (IOPS) to provision for the volume.
---
--- Valid values: Range is 100 to 4000.
---
--- Default: None
-ebsIops :: Lens' Ebs (Maybe Natural)
-ebsIops = lens _ebsIops (\s a -> s { _ebsIops = a }) . mapping _Nat
-
--- | The ID of the snapshot.
-ebsSnapshotId :: Lens' Ebs (Maybe Text)
-ebsSnapshotId = lens _ebsSnapshotId (\s a -> s { _ebsSnapshotId = a })
-
--- | The volume size, in gigabytes.
---
--- Valid values: If the volume type is 'io1', the minimum size of the volume is
--- 10 GiB. If you specify 'SnapshotId' and 'VolumeSize', 'VolumeSize' must be equal to
--- or larger than the size of the snapshot.
---
--- Default: If you create a volume from a snapshot and you don't specify a
--- volume size, the default is the size of the snapshot.
---
--- Required: Required when the volume type is 'io1'.
-ebsVolumeSize :: Lens' Ebs (Maybe Natural)
-ebsVolumeSize = lens _ebsVolumeSize (\s a -> s { _ebsVolumeSize = a }) . mapping _Nat
-
--- | The volume type.
---
--- Valid values: 'standard | io1 | gp2'
---
--- Default: 'standard'
-ebsVolumeType :: Lens' Ebs (Maybe Text)
-ebsVolumeType = lens _ebsVolumeType (\s a -> s { _ebsVolumeType = a })
-
-instance FromXML Ebs where
-    parseXML x = Ebs
-        <$> x .@? "DeleteOnTermination"
-        <*> x .@? "Iops"
-        <*> x .@? "SnapshotId"
-        <*> x .@? "VolumeSize"
-        <*> x .@? "VolumeType"
-
-instance ToQuery Ebs where
-    toQuery Ebs{..} = mconcat
-        [ "DeleteOnTermination" =? _ebsDeleteOnTermination
-        , "Iops"                =? _ebsIops
-        , "SnapshotId"          =? _ebsSnapshotId
-        , "VolumeSize"          =? _ebsVolumeSize
-        , "VolumeType"          =? _ebsVolumeType
-        ]
-
-newtype AdjustmentType = AdjustmentType
-    { _atAdjustmentType :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'AdjustmentType' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'atAdjustmentType' @::@ 'Maybe' 'Text'
---
-adjustmentType :: AdjustmentType
-adjustmentType = AdjustmentType
-    { _atAdjustmentType = Nothing
-    }
-
--- | The policy adjustment type. The valid values are 'ChangeInCapacity', 'ExactCapacity', and 'PercentChangeInCapacity'.
---
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-scale-based-on-demand.html Dynamic Scaling> in the /Auto Scaling Developer Guide/
--- .
-atAdjustmentType :: Lens' AdjustmentType (Maybe Text)
-atAdjustmentType = lens _atAdjustmentType (\s a -> s { _atAdjustmentType = a })
-
-instance FromXML AdjustmentType where
-    parseXML x = AdjustmentType
-        <$> x .@? "AdjustmentType"
-
-instance ToQuery AdjustmentType where
-    toQuery AdjustmentType{..} = mconcat
-        [ "AdjustmentType" =? _atAdjustmentType
-        ]
-
-newtype MetricCollectionType = MetricCollectionType
-    { _mctMetric :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'MetricCollectionType' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'mctMetric' @::@ 'Maybe' 'Text'
---
-metricCollectionType :: MetricCollectionType
-metricCollectionType = MetricCollectionType
-    { _mctMetric = Nothing
-    }
-
--- | The metric.
-mctMetric :: Lens' MetricCollectionType (Maybe Text)
-mctMetric = lens _mctMetric (\s a -> s { _mctMetric = a })
-
-instance FromXML MetricCollectionType where
-    parseXML x = MetricCollectionType
-        <$> x .@? "Metric"
-
-instance ToQuery MetricCollectionType where
-    toQuery MetricCollectionType{..} = mconcat
-        [ "Metric" =? _mctMetric
-        ]
-
-data LifecycleHook = LifecycleHook
-    { _lhAutoScalingGroupName  :: Maybe Text
-    , _lhDefaultResult         :: Maybe Text
-    , _lhGlobalTimeout         :: Maybe Int
-    , _lhHeartbeatTimeout      :: Maybe Int
-    , _lhLifecycleHookName     :: Maybe Text
-    , _lhLifecycleTransition   :: Maybe Text
-    , _lhNotificationMetadata  :: Maybe Text
-    , _lhNotificationTargetARN :: Maybe Text
-    , _lhRoleARN               :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'LifecycleHook' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lhAutoScalingGroupName' @::@ 'Maybe' 'Text'
---
--- * 'lhDefaultResult' @::@ 'Maybe' 'Text'
---
--- * 'lhGlobalTimeout' @::@ 'Maybe' 'Int'
---
--- * 'lhHeartbeatTimeout' @::@ 'Maybe' 'Int'
---
--- * 'lhLifecycleHookName' @::@ 'Maybe' 'Text'
---
--- * 'lhLifecycleTransition' @::@ 'Maybe' 'Text'
---
--- * 'lhNotificationMetadata' @::@ 'Maybe' 'Text'
---
--- * 'lhNotificationTargetARN' @::@ 'Maybe' 'Text'
---
--- * 'lhRoleARN' @::@ 'Maybe' 'Text'
---
-lifecycleHook :: LifecycleHook
-lifecycleHook = LifecycleHook
-    { _lhLifecycleHookName     = Nothing
-    , _lhAutoScalingGroupName  = Nothing
-    , _lhLifecycleTransition   = Nothing
-    , _lhNotificationTargetARN = Nothing
-    , _lhRoleARN               = Nothing
-    , _lhNotificationMetadata  = Nothing
-    , _lhHeartbeatTimeout      = Nothing
-    , _lhGlobalTimeout         = Nothing
-    , _lhDefaultResult         = Nothing
-    }
-
--- | The name of the Auto Scaling group for the lifecycle hook.
-lhAutoScalingGroupName :: Lens' LifecycleHook (Maybe Text)
-lhAutoScalingGroupName =
-    lens _lhAutoScalingGroupName (\s a -> s { _lhAutoScalingGroupName = a })
-
--- | Defines the action the Auto Scaling group should take when the lifecycle hook
--- timeout elapses or if an unexpected failure occurs. The valid values are 'CONTINUE' and 'ABANDON'. The default value is 'CONTINUE'.
-lhDefaultResult :: Lens' LifecycleHook (Maybe Text)
-lhDefaultResult = lens _lhDefaultResult (\s a -> s { _lhDefaultResult = a })
-
--- | The maximum length of time an instance can remain in a 'Pending:Wait' or 'Terminating:Wait' state. Currently, this value is set at 48 hours.
-lhGlobalTimeout :: Lens' LifecycleHook (Maybe Int)
-lhGlobalTimeout = lens _lhGlobalTimeout (\s a -> s { _lhGlobalTimeout = a })
-
--- | The amount of time that can elapse before the lifecycle hook times out. When
--- the lifecycle hook times out, Auto Scaling performs the action defined in the 'DefaultResult' parameter. You can prevent the lifecycle hook from timing out
--- by calling 'RecordLifecycleActionHeartbeat'.
-lhHeartbeatTimeout :: Lens' LifecycleHook (Maybe Int)
-lhHeartbeatTimeout =
-    lens _lhHeartbeatTimeout (\s a -> s { _lhHeartbeatTimeout = a })
-
--- | The name of the lifecycle hook.
-lhLifecycleHookName :: Lens' LifecycleHook (Maybe Text)
-lhLifecycleHookName =
-    lens _lhLifecycleHookName (\s a -> s { _lhLifecycleHookName = a })
-
--- | The state of the EC2 instance to which you want to attach the lifecycle hook.
--- For a list of lifecycle hook types, see 'DescribeLifecycleHooks'.
-lhLifecycleTransition :: Lens' LifecycleHook (Maybe Text)
-lhLifecycleTransition =
-    lens _lhLifecycleTransition (\s a -> s { _lhLifecycleTransition = a })
-
--- | Additional information that you want to include any time Auto Scaling sends a
--- message to the notification target.
-lhNotificationMetadata :: Lens' LifecycleHook (Maybe Text)
-lhNotificationMetadata =
-    lens _lhNotificationMetadata (\s a -> s { _lhNotificationMetadata = a })
-
--- | The ARN of the notification target that Auto Scaling uses to notify you when
--- an instance is in the transition state for the lifecycle hook. This ARN
--- target can be either an SQS queue or an SNS topic. The notification message
--- sent to the target includes the following:
---
--- Lifecycle action token User account ID Name of the Auto Scaling group Lifecycle hook name
--- EC2 instance ID Lifecycle transition Notification metadata
-lhNotificationTargetARN :: Lens' LifecycleHook (Maybe Text)
-lhNotificationTargetARN =
-    lens _lhNotificationTargetARN (\s a -> s { _lhNotificationTargetARN = a })
-
--- | The ARN of the IAM role that allows the Auto Scaling group to publish to the
--- specified notification target.
-lhRoleARN :: Lens' LifecycleHook (Maybe Text)
-lhRoleARN = lens _lhRoleARN (\s a -> s { _lhRoleARN = a })
-
-instance FromXML LifecycleHook where
-    parseXML x = LifecycleHook
-        <$> x .@? "AutoScalingGroupName"
-        <*> x .@? "DefaultResult"
-        <*> x .@? "GlobalTimeout"
-        <*> x .@? "HeartbeatTimeout"
-        <*> x .@? "LifecycleHookName"
-        <*> x .@? "LifecycleTransition"
-        <*> x .@? "NotificationMetadata"
-        <*> x .@? "NotificationTargetARN"
-        <*> x .@? "RoleARN"
-
-instance ToQuery LifecycleHook where
-    toQuery LifecycleHook{..} = mconcat
-        [ "AutoScalingGroupName"  =? _lhAutoScalingGroupName
-        , "DefaultResult"         =? _lhDefaultResult
-        , "GlobalTimeout"         =? _lhGlobalTimeout
-        , "HeartbeatTimeout"      =? _lhHeartbeatTimeout
-        , "LifecycleHookName"     =? _lhLifecycleHookName
-        , "LifecycleTransition"   =? _lhLifecycleTransition
-        , "NotificationMetadata"  =? _lhNotificationMetadata
-        , "NotificationTargetARN" =? _lhNotificationTargetARN
-        , "RoleARN"               =? _lhRoleARN
-        ]
-
-data Activity = Activity
-    { _aActivityId           :: Text
-    , _aAutoScalingGroupName :: Text
-    , _aCause                :: Text
-    , _aDescription          :: Maybe Text
-    , _aDetails              :: Maybe Text
-    , _aEndTime              :: Maybe ISO8601
-    , _aProgress             :: Maybe Int
-    , _aStartTime            :: ISO8601
-    , _aStatusCode           :: ScalingActivityStatusCode
-    , _aStatusMessage        :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'Activity' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'aActivityId' @::@ 'Text'
---
--- * 'aAutoScalingGroupName' @::@ 'Text'
---
--- * 'aCause' @::@ 'Text'
---
--- * 'aDescription' @::@ 'Maybe' 'Text'
---
--- * 'aDetails' @::@ 'Maybe' 'Text'
---
--- * 'aEndTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'aProgress' @::@ 'Maybe' 'Int'
---
--- * 'aStartTime' @::@ 'UTCTime'
---
--- * 'aStatusCode' @::@ 'ScalingActivityStatusCode'
---
--- * 'aStatusMessage' @::@ 'Maybe' 'Text'
---
-activity :: Text -- ^ 'aActivityId'
-         -> Text -- ^ 'aAutoScalingGroupName'
-         -> Text -- ^ 'aCause'
-         -> UTCTime -- ^ 'aStartTime'
-         -> ScalingActivityStatusCode -- ^ 'aStatusCode'
-         -> Activity
-activity p1 p2 p3 p4 p5 = Activity
-    { _aActivityId           = p1
-    , _aAutoScalingGroupName = p2
-    , _aCause                = p3
-    , _aStartTime            = withIso _Time (const id) p4
-    , _aStatusCode           = p5
-    , _aDescription          = Nothing
-    , _aEndTime              = Nothing
-    , _aStatusMessage        = Nothing
-    , _aProgress             = Nothing
-    , _aDetails              = Nothing
-    }
-
--- | The ID of the activity.
-aActivityId :: Lens' Activity Text
-aActivityId = lens _aActivityId (\s a -> s { _aActivityId = a })
-
--- | The name of the Auto Scaling group.
-aAutoScalingGroupName :: Lens' Activity Text
-aAutoScalingGroupName =
-    lens _aAutoScalingGroupName (\s a -> s { _aAutoScalingGroupName = a })
-
--- | The reason the activity was begun.
-aCause :: Lens' Activity Text
-aCause = lens _aCause (\s a -> s { _aCause = a })
-
--- | A friendly, more verbose description of the scaling activity.
-aDescription :: Lens' Activity (Maybe Text)
-aDescription = lens _aDescription (\s a -> s { _aDescription = a })
-
--- | The details about the scaling activity.
-aDetails :: Lens' Activity (Maybe Text)
-aDetails = lens _aDetails (\s a -> s { _aDetails = a })
-
--- | The end time of this activity.
-aEndTime :: Lens' Activity (Maybe UTCTime)
-aEndTime = lens _aEndTime (\s a -> s { _aEndTime = a }) . mapping _Time
-
--- | A value between 0 and 100 that indicates the progress of the activity.
-aProgress :: Lens' Activity (Maybe Int)
-aProgress = lens _aProgress (\s a -> s { _aProgress = a })
-
--- | The start time of this activity.
-aStartTime :: Lens' Activity UTCTime
-aStartTime = lens _aStartTime (\s a -> s { _aStartTime = a }) . _Time
-
--- | The current status of the activity.
-aStatusCode :: Lens' Activity ScalingActivityStatusCode
-aStatusCode = lens _aStatusCode (\s a -> s { _aStatusCode = a })
-
--- | A friendly, more verbose description of the activity status.
-aStatusMessage :: Lens' Activity (Maybe Text)
-aStatusMessage = lens _aStatusMessage (\s a -> s { _aStatusMessage = a })
-
-instance FromXML Activity where
-    parseXML x = Activity
-        <$> x .@  "ActivityId"
-        <*> x .@  "AutoScalingGroupName"
-        <*> x .@  "Cause"
-        <*> x .@? "Description"
-        <*> x .@? "Details"
-        <*> x .@? "EndTime"
-        <*> x .@? "Progress"
-        <*> x .@  "StartTime"
-        <*> x .@  "StatusCode"
-        <*> x .@? "StatusMessage"
-
-instance ToQuery Activity where
-    toQuery Activity{..} = mconcat
-        [ "ActivityId"           =? _aActivityId
-        , "AutoScalingGroupName" =? _aAutoScalingGroupName
-        , "Cause"                =? _aCause
-        , "Description"          =? _aDescription
-        , "Details"              =? _aDetails
-        , "EndTime"              =? _aEndTime
-        , "Progress"             =? _aProgress
-        , "StartTime"            =? _aStartTime
-        , "StatusCode"           =? _aStatusCode
-        , "StatusMessage"        =? _aStatusMessage
-        ]
-
-data SuspendedProcess = SuspendedProcess
-    { _spProcessName      :: Maybe Text
-    , _spSuspensionReason :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'SuspendedProcess' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'spProcessName' @::@ 'Maybe' 'Text'
---
--- * 'spSuspensionReason' @::@ 'Maybe' 'Text'
---
-suspendedProcess :: SuspendedProcess
-suspendedProcess = SuspendedProcess
-    { _spProcessName      = Nothing
-    , _spSuspensionReason = Nothing
-    }
-
--- | The name of the suspended process.
-spProcessName :: Lens' SuspendedProcess (Maybe Text)
-spProcessName = lens _spProcessName (\s a -> s { _spProcessName = a })
-
--- | The reason that the process was suspended.
-spSuspensionReason :: Lens' SuspendedProcess (Maybe Text)
-spSuspensionReason =
-    lens _spSuspensionReason (\s a -> s { _spSuspensionReason = a })
-
-instance FromXML SuspendedProcess where
-    parseXML x = SuspendedProcess
-        <$> x .@? "ProcessName"
-        <*> x .@? "SuspensionReason"
-
-instance ToQuery SuspendedProcess where
-    toQuery SuspendedProcess{..} = mconcat
-        [ "ProcessName"      =? _spProcessName
-        , "SuspensionReason" =? _spSuspensionReason
-        ]
-
-newtype MetricGranularityType = MetricGranularityType
-    { _mgtGranularity :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'MetricGranularityType' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'mgtGranularity' @::@ 'Maybe' 'Text'
---
-metricGranularityType :: MetricGranularityType
-metricGranularityType = MetricGranularityType
-    { _mgtGranularity = Nothing
-    }
-
--- | The granularity.
-mgtGranularity :: Lens' MetricGranularityType (Maybe Text)
-mgtGranularity = lens _mgtGranularity (\s a -> s { _mgtGranularity = a })
-
-instance FromXML MetricGranularityType where
-    parseXML x = MetricGranularityType
-        <$> x .@? "Granularity"
-
-instance ToQuery MetricGranularityType where
-    toQuery MetricGranularityType{..} = mconcat
-        [ "Granularity" =? _mgtGranularity
-        ]
-
-data Filter = Filter
-    { _fName   :: Text
-    , _fValues :: List "member" Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Filter' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'fName' @::@ 'Text'
---
--- * 'fValues' @::@ ['Text']
---
-filter' :: Text -- ^ 'fName'
-        -> Filter
-filter' p1 = Filter
-    { _fName   = p1
-    , _fValues = mempty
-    }
-
--- | The name of the filter. The valid values are: '"auto-scaling-group"', '"key"', '"value"', and '"propagate-at-launch"'.
-fName :: Lens' Filter Text
-fName = lens _fName (\s a -> s { _fName = a })
-
--- | The value of the filter.
-fValues :: Lens' Filter [Text]
-fValues = lens _fValues (\s a -> s { _fValues = a }) . _List
-
-instance FromXML Filter where
-    parseXML x = Filter
-        <$> x .@  "Name"
-        <*> x .@? "Values" .!@ mempty
-
-instance ToQuery Filter where
-    toQuery Filter{..} = mconcat
-        [ "Name"   =? _fName
-        , "Values" =? _fValues
-        ]
-
-newtype ProcessType = ProcessType
-    { _ptProcessName :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
-
--- | 'ProcessType' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ptProcessName' @::@ 'Text'
---
-processType :: Text -- ^ 'ptProcessName'
-            -> ProcessType
-processType p1 = ProcessType
-    { _ptProcessName = p1
-    }
-
--- | The name of the process.
-ptProcessName :: Lens' ProcessType Text
-ptProcessName = lens _ptProcessName (\s a -> s { _ptProcessName = a })
-
-instance FromXML ProcessType where
-    parseXML x = ProcessType
-        <$> x .@  "ProcessName"
-
-instance ToQuery ProcessType where
-    toQuery ProcessType{..} = mconcat
-        [ "ProcessName" =? _ptProcessName
-        ]
-
-data Alarm = Alarm
-    { _aAlarmARN  :: Maybe Text
-    , _aAlarmName :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Alarm' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'aAlarmARN' @::@ 'Maybe' 'Text'
---
--- * 'aAlarmName' @::@ 'Maybe' 'Text'
---
-alarm :: Alarm
-alarm = Alarm
-    { _aAlarmName = Nothing
-    , _aAlarmARN  = Nothing
-    }
-
--- | The Amazon Resource Name (ARN) of the alarm.
-aAlarmARN :: Lens' Alarm (Maybe Text)
-aAlarmARN = lens _aAlarmARN (\s a -> s { _aAlarmARN = a })
-
--- | The name of the alarm.
-aAlarmName :: Lens' Alarm (Maybe Text)
-aAlarmName = lens _aAlarmName (\s a -> s { _aAlarmName = a })
-
-instance FromXML Alarm where
-    parseXML x = Alarm
-        <$> x .@? "AlarmARN"
-        <*> x .@? "AlarmName"
-
-instance ToQuery Alarm where
-    toQuery Alarm{..} = mconcat
-        [ "AlarmARN"  =? _aAlarmARN
-        , "AlarmName" =? _aAlarmName
-        ]
-
-data EnabledMetric = EnabledMetric
-    { _emGranularity :: Maybe Text
-    , _emMetric      :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'EnabledMetric' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'emGranularity' @::@ 'Maybe' 'Text'
---
--- * 'emMetric' @::@ 'Maybe' 'Text'
---
-enabledMetric :: EnabledMetric
-enabledMetric = EnabledMetric
-    { _emMetric      = Nothing
-    , _emGranularity = Nothing
-    }
-
--- | The granularity of the metric.
-emGranularity :: Lens' EnabledMetric (Maybe Text)
-emGranularity = lens _emGranularity (\s a -> s { _emGranularity = a })
-
--- | The name of the metric.
-emMetric :: Lens' EnabledMetric (Maybe Text)
-emMetric = lens _emMetric (\s a -> s { _emMetric = a })
-
-instance FromXML EnabledMetric where
-    parseXML x = EnabledMetric
-        <$> x .@? "Granularity"
-        <*> x .@? "Metric"
-
-instance ToQuery EnabledMetric where
-    toQuery EnabledMetric{..} = mconcat
-        [ "Granularity" =? _emGranularity
-        , "Metric"      =? _emMetric
-        ]
-
-data Instance = Instance
-    { _iAvailabilityZone        :: Text
-    , _iHealthStatus            :: Text
-    , _iInstanceId              :: Text
-    , _iLaunchConfigurationName :: Text
-    , _iLifecycleState          :: LifecycleState
-    } deriving (Eq, Read, Show)
-
--- | 'Instance' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'iAvailabilityZone' @::@ 'Text'
---
--- * 'iHealthStatus' @::@ 'Text'
---
--- * 'iInstanceId' @::@ 'Text'
---
--- * 'iLaunchConfigurationName' @::@ 'Text'
---
--- * 'iLifecycleState' @::@ 'LifecycleState'
---
-instance' :: Text -- ^ 'iInstanceId'
-          -> Text -- ^ 'iAvailabilityZone'
-          -> LifecycleState -- ^ 'iLifecycleState'
-          -> Text -- ^ 'iHealthStatus'
-          -> Text -- ^ 'iLaunchConfigurationName'
-          -> Instance
-instance' p1 p2 p3 p4 p5 = Instance
-    { _iInstanceId              = p1
-    , _iAvailabilityZone        = p2
-    , _iLifecycleState          = p3
-    , _iHealthStatus            = p4
-    , _iLaunchConfigurationName = p5
-    }
-
--- | The Availability Zone associated with this instance.
-iAvailabilityZone :: Lens' Instance Text
-iAvailabilityZone =
-    lens _iAvailabilityZone (\s a -> s { _iAvailabilityZone = a })
-
--- | The health status of the instance.
-iHealthStatus :: Lens' Instance Text
-iHealthStatus = lens _iHealthStatus (\s a -> s { _iHealthStatus = a })
-
--- | The ID of the instance.
-iInstanceId :: Lens' Instance Text
-iInstanceId = lens _iInstanceId (\s a -> s { _iInstanceId = a })
-
--- | The launch configuration associated with the instance.
-iLaunchConfigurationName :: Lens' Instance Text
-iLaunchConfigurationName =
-    lens _iLaunchConfigurationName
-        (\s a -> s { _iLaunchConfigurationName = a })
-
--- | A description of the current lifecycle state.
---
--- The 'Quarantined' lifecycle state is not used.
---
---
-iLifecycleState :: Lens' Instance LifecycleState
-iLifecycleState = lens _iLifecycleState (\s a -> s { _iLifecycleState = a })
-
-instance FromXML Instance where
-    parseXML x = Instance
-        <$> x .@  "AvailabilityZone"
-        <*> x .@  "HealthStatus"
-        <*> x .@  "InstanceId"
-        <*> x .@  "LaunchConfigurationName"
-        <*> x .@  "LifecycleState"
-
-instance ToQuery Instance where
-    toQuery Instance{..} = mconcat
-        [ "AvailabilityZone"        =? _iAvailabilityZone
-        , "HealthStatus"            =? _iHealthStatus
-        , "InstanceId"              =? _iInstanceId
-        , "LaunchConfigurationName" =? _iLaunchConfigurationName
-        , "LifecycleState"          =? _iLifecycleState
-        ]
-
-data LifecycleState
-    = Detached           -- ^ Detached
-    | Detaching          -- ^ Detaching
-    | EnteringStandby    -- ^ EnteringStandby
-    | InService          -- ^ InService
-    | Pending            -- ^ Pending
-    | PendingProceed     -- ^ Pending:Proceed
-    | PendingWait        -- ^ Pending:Wait
-    | Quarantined        -- ^ Quarantined
-    | Standby            -- ^ Standby
-    | Terminated         -- ^ Terminated
-    | Terminating        -- ^ Terminating
-    | TerminatingProceed -- ^ Terminating:Proceed
-    | TerminatingWait    -- ^ Terminating:Wait
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable LifecycleState
-
-instance FromText LifecycleState where
-    parser = takeLowerText >>= \case
-        "detached"            -> pure Detached
-        "detaching"           -> pure Detaching
-        "enteringstandby"     -> pure EnteringStandby
-        "inservice"           -> pure InService
-        "pending"             -> pure Pending
-        "pending:proceed"     -> pure PendingProceed
-        "pending:wait"        -> pure PendingWait
-        "quarantined"         -> pure Quarantined
-        "standby"             -> pure Standby
-        "terminated"          -> pure Terminated
-        "terminating"         -> pure Terminating
-        "terminating:proceed" -> pure TerminatingProceed
-        "terminating:wait"    -> pure TerminatingWait
-        e                     -> fail $
-            "Failure parsing LifecycleState from " ++ show e
-
-instance ToText LifecycleState where
-    toText = \case
-        Detached           -> "Detached"
-        Detaching          -> "Detaching"
-        EnteringStandby    -> "EnteringStandby"
-        InService          -> "InService"
-        Pending            -> "Pending"
-        PendingProceed     -> "Pending:Proceed"
-        PendingWait        -> "Pending:Wait"
-        Quarantined        -> "Quarantined"
-        Standby            -> "Standby"
-        Terminated         -> "Terminated"
-        Terminating        -> "Terminating"
-        TerminatingProceed -> "Terminating:Proceed"
-        TerminatingWait    -> "Terminating:Wait"
-
-instance ToByteString LifecycleState
-instance ToHeader     LifecycleState
-instance ToQuery      LifecycleState
-
-instance FromXML LifecycleState where
-    parseXML = parseXMLText "LifecycleState"
-
-data AutoScalingInstanceDetails = AutoScalingInstanceDetails
-    { _asidAutoScalingGroupName    :: Text
-    , _asidAvailabilityZone        :: Text
-    , _asidHealthStatus            :: Text
-    , _asidInstanceId              :: Text
-    , _asidLaunchConfigurationName :: Text
-    , _asidLifecycleState          :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'AutoScalingInstanceDetails' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'asidAutoScalingGroupName' @::@ 'Text'
---
--- * 'asidAvailabilityZone' @::@ 'Text'
---
--- * 'asidHealthStatus' @::@ 'Text'
---
--- * 'asidInstanceId' @::@ 'Text'
---
--- * 'asidLaunchConfigurationName' @::@ 'Text'
---
--- * 'asidLifecycleState' @::@ 'Text'
---
-autoScalingInstanceDetails :: Text -- ^ 'asidInstanceId'
-                           -> Text -- ^ 'asidAutoScalingGroupName'
-                           -> Text -- ^ 'asidAvailabilityZone'
-                           -> Text -- ^ 'asidLifecycleState'
-                           -> Text -- ^ 'asidHealthStatus'
-                           -> Text -- ^ 'asidLaunchConfigurationName'
-                           -> AutoScalingInstanceDetails
-autoScalingInstanceDetails p1 p2 p3 p4 p5 p6 = AutoScalingInstanceDetails
-    { _asidInstanceId              = p1
-    , _asidAutoScalingGroupName    = p2
-    , _asidAvailabilityZone        = p3
-    , _asidLifecycleState          = p4
-    , _asidHealthStatus            = p5
-    , _asidLaunchConfigurationName = p6
-    }
-
--- | The name of the Auto Scaling group associated with the instance.
-asidAutoScalingGroupName :: Lens' AutoScalingInstanceDetails Text
-asidAutoScalingGroupName =
-    lens _asidAutoScalingGroupName
-        (\s a -> s { _asidAutoScalingGroupName = a })
-
--- | The Availability Zone for the instance.
-asidAvailabilityZone :: Lens' AutoScalingInstanceDetails Text
-asidAvailabilityZone =
-    lens _asidAvailabilityZone (\s a -> s { _asidAvailabilityZone = a })
-
--- | The health status of this instance. "Healthy" means that the instance is
--- healthy and should remain in service. "Unhealthy" means that the instance is
--- unhealthy and Auto Scaling should terminate and replace it.
-asidHealthStatus :: Lens' AutoScalingInstanceDetails Text
-asidHealthStatus = lens _asidHealthStatus (\s a -> s { _asidHealthStatus = a })
-
--- | The ID of the instance.
-asidInstanceId :: Lens' AutoScalingInstanceDetails Text
-asidInstanceId = lens _asidInstanceId (\s a -> s { _asidInstanceId = a })
-
--- | The launch configuration associated with the instance.
-asidLaunchConfigurationName :: Lens' AutoScalingInstanceDetails Text
-asidLaunchConfigurationName =
-    lens _asidLaunchConfigurationName
-        (\s a -> s { _asidLaunchConfigurationName = a })
-
--- | The lifecycle state for the instance. For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingGroupLifecycle.html#AutoScalingStates Auto ScalingInstance States> in the /Auto Scaling Developer Guide/.
-asidLifecycleState :: Lens' AutoScalingInstanceDetails Text
-asidLifecycleState =
-    lens _asidLifecycleState (\s a -> s { _asidLifecycleState = a })
-
-instance FromXML AutoScalingInstanceDetails where
-    parseXML x = AutoScalingInstanceDetails
-        <$> x .@  "AutoScalingGroupName"
-        <*> x .@  "AvailabilityZone"
-        <*> x .@  "HealthStatus"
-        <*> x .@  "InstanceId"
-        <*> x .@  "LaunchConfigurationName"
-        <*> x .@  "LifecycleState"
-
-instance ToQuery AutoScalingInstanceDetails where
-    toQuery AutoScalingInstanceDetails{..} = mconcat
-        [ "AutoScalingGroupName"    =? _asidAutoScalingGroupName
-        , "AvailabilityZone"        =? _asidAvailabilityZone
-        , "HealthStatus"            =? _asidHealthStatus
-        , "InstanceId"              =? _asidInstanceId
-        , "LaunchConfigurationName" =? _asidLaunchConfigurationName
-        , "LifecycleState"          =? _asidLifecycleState
-        ]
-
-data ScalingActivityStatusCode
-    = Cancelled                       -- ^ Cancelled
-    | Failed                          -- ^ Failed
-    | InProgress                      -- ^ InProgress
-    | MidLifecycleAction              -- ^ MidLifecycleAction
-    | PreInService                    -- ^ PreInService
-    | Successful                      -- ^ Successful
-    | WaitingForELBConnectionDraining -- ^ WaitingForELBConnectionDraining
-    | WaitingForInstanceId            -- ^ WaitingForInstanceId
-    | WaitingForSpotInstanceId        -- ^ WaitingForSpotInstanceId
-    | WaitingForSpotInstanceRequestId -- ^ WaitingForSpotInstanceRequestId
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable ScalingActivityStatusCode
-
-instance FromText ScalingActivityStatusCode where
-    parser = takeLowerText >>= \case
-        "cancelled"                       -> pure Cancelled
-        "failed"                          -> pure Failed
-        "inprogress"                      -> pure InProgress
-        "midlifecycleaction"              -> pure MidLifecycleAction
-        "preinservice"                    -> pure PreInService
-        "successful"                      -> pure Successful
-        "waitingforelbconnectiondraining" -> pure WaitingForELBConnectionDraining
-        "waitingforinstanceid"            -> pure WaitingForInstanceId
-        "waitingforspotinstanceid"        -> pure WaitingForSpotInstanceId
-        "waitingforspotinstancerequestid" -> pure WaitingForSpotInstanceRequestId
-        e                                 -> fail $
-            "Failure parsing ScalingActivityStatusCode from " ++ show e
-
-instance ToText ScalingActivityStatusCode where
-    toText = \case
-        Cancelled                       -> "Cancelled"
-        Failed                          -> "Failed"
-        InProgress                      -> "InProgress"
-        MidLifecycleAction              -> "MidLifecycleAction"
-        PreInService                    -> "PreInService"
-        Successful                      -> "Successful"
-        WaitingForELBConnectionDraining -> "WaitingForELBConnectionDraining"
-        WaitingForInstanceId            -> "WaitingForInstanceId"
-        WaitingForSpotInstanceId        -> "WaitingForSpotInstanceId"
-        WaitingForSpotInstanceRequestId -> "WaitingForSpotInstanceRequestId"
-
-instance ToByteString ScalingActivityStatusCode
-instance ToHeader     ScalingActivityStatusCode
-instance ToQuery      ScalingActivityStatusCode
-
-instance FromXML ScalingActivityStatusCode where
-    parseXML = parseXMLText "ScalingActivityStatusCode"
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.AutoScaling.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.AutoScaling.Types
+    (
+    -- * Service
+      AutoScaling
+
+    -- * Errors
+    , _LimitExceededFault
+    , _AlreadyExistsFault
+    , _ResourceInUseFault
+    , _InvalidNextToken
+    , _ScalingActivityInProgressFault
+    , _ResourceContentionFault
+
+    -- * LifecycleState
+    , LifecycleState (..)
+
+    -- * ScalingActivityStatusCode
+    , ScalingActivityStatusCode (..)
+
+    -- * Activity
+    , Activity
+    , activity
+    , aProgress
+    , aStatusMessage
+    , aDetails
+    , aEndTime
+    , aDescription
+    , aActivityId
+    , aAutoScalingGroupName
+    , aCause
+    , aStartTime
+    , aStatusCode
+
+    -- * AdjustmentType
+    , AdjustmentType
+    , adjustmentType
+    , atAdjustmentType
+
+    -- * Alarm
+    , Alarm
+    , alarm
+    , aAlarmName
+    , aAlarmARN
+
+    -- * AutoScalingGroup
+    , AutoScalingGroup
+    , autoScalingGroup
+    , asgStatus
+    , asgTerminationPolicies
+    , asgHealthCheckGracePeriod
+    , asgVPCZoneIdentifier
+    , asgEnabledMetrics
+    , asgInstances
+    , asgAutoScalingGroupARN
+    , asgSuspendedProcesses
+    , asgPlacementGroup
+    , asgLoadBalancerNames
+    , asgTags
+    , asgAutoScalingGroupName
+    , asgLaunchConfigurationName
+    , asgMinSize
+    , asgMaxSize
+    , asgDesiredCapacity
+    , asgDefaultCooldown
+    , asgAvailabilityZones
+    , asgHealthCheckType
+    , asgCreatedTime
+
+    -- * AutoScalingInstanceDetails
+    , AutoScalingInstanceDetails
+    , autoScalingInstanceDetails
+    , asidInstanceId
+    , asidAutoScalingGroupName
+    , asidAvailabilityZone
+    , asidLifecycleState
+    , asidHealthStatus
+    , asidLaunchConfigurationName
+
+    -- * BlockDeviceMapping
+    , BlockDeviceMapping
+    , blockDeviceMapping
+    , bdmVirtualName
+    , bdmNoDevice
+    , bdmEBS
+    , bdmDeviceName
+
+    -- * EBS
+    , EBS
+    , ebs
+    , ebsDeleteOnTermination
+    , ebsVolumeSize
+    , ebsIOPS
+    , ebsVolumeType
+    , ebsSnapshotId
+
+    -- * EnabledMetric
+    , EnabledMetric
+    , enabledMetric
+    , emGranularity
+    , emMetric
+
+    -- * Filter
+    , Filter
+    , filter'
+    , fValues
+    , fName
+
+    -- * Instance
+    , Instance
+    , instance'
+    , iInstanceId
+    , iAvailabilityZone
+    , iLifecycleState
+    , iHealthStatus
+    , iLaunchConfigurationName
+
+    -- * InstanceMonitoring
+    , InstanceMonitoring
+    , instanceMonitoring
+    , imEnabled
+
+    -- * LaunchConfiguration
+    , LaunchConfiguration
+    , launchConfiguration
+    , lcSecurityGroups
+    , lcAssociatePublicIPAddress
+    , lcInstanceMonitoring
+    , lcSpotPrice
+    , lcKeyName
+    , lcClassicLinkVPCSecurityGroups
+    , lcRAMDiskId
+    , lcKernelId
+    , lcEBSOptimized
+    , lcUserData
+    , lcClassicLinkVPCId
+    , lcIAMInstanceProfile
+    , lcLaunchConfigurationARN
+    , lcPlacementTenancy
+    , lcBlockDeviceMappings
+    , lcLaunchConfigurationName
+    , lcImageId
+    , lcInstanceType
+    , lcCreatedTime
+
+    -- * LifecycleHook
+    , LifecycleHook
+    , lifecycleHook
+    , lhDefaultResult
+    , lhLifecycleHookName
+    , lhHeartbeatTimeout
+    , lhAutoScalingGroupName
+    , lhNotificationMetadata
+    , lhGlobalTimeout
+    , lhRoleARN
+    , lhLifecycleTransition
+    , lhNotificationTargetARN
+
+    -- * LoadBalancerState
+    , LoadBalancerState
+    , loadBalancerState
+    , lbsState
+    , lbsLoadBalancerName
+
+    -- * MetricCollectionType
+    , MetricCollectionType
+    , metricCollectionType
+    , mctMetric
+
+    -- * MetricGranularityType
+    , MetricGranularityType
+    , metricGranularityType
+    , mgtGranularity
+
+    -- * NotificationConfiguration
+    , NotificationConfiguration
+    , notificationConfiguration
+    , ncTopicARN
+    , ncAutoScalingGroupName
+    , ncNotificationType
+
+    -- * ProcessType
+    , ProcessType
+    , processType
+    , ptProcessName
+
+    -- * ScalingPolicy
+    , ScalingPolicy
+    , scalingPolicy
+    , sEstimatedInstanceWarmup
+    , sMinAdjustmentStep
+    , sPolicyName
+    , sPolicyType
+    , sStepAdjustments
+    , sAdjustmentType
+    , sScalingAdjustment
+    , sAutoScalingGroupName
+    , sCooldown
+    , sPolicyARN
+    , sAlarms
+    , sMetricAggregationType
+    , sMinAdjustmentMagnitude
+
+    -- * ScalingProcessQuery
+    , ScalingProcessQuery
+    , scalingProcessQuery
+    , spqScalingProcesses
+    , spqAutoScalingGroupName
+
+    -- * ScheduledUpdateGroupAction
+    , ScheduledUpdateGroupAction
+    , scheduledUpdateGroupAction
+    , sugaScheduledActionARN
+    , sugaTime
+    , sugaStartTime
+    , sugaScheduledActionName
+    , sugaMaxSize
+    , sugaDesiredCapacity
+    , sugaRecurrence
+    , sugaMinSize
+    , sugaEndTime
+    , sugaAutoScalingGroupName
+
+    -- * StepAdjustment
+    , StepAdjustment
+    , stepAdjustment
+    , saMetricIntervalLowerBound
+    , saMetricIntervalUpperBound
+    , saScalingAdjustment
+
+    -- * SuspendedProcess
+    , SuspendedProcess
+    , suspendedProcess
+    , spProcessName
+    , spSuspensionReason
+
+    -- * Tag
+    , Tag
+    , tag
+    , tagKey
+    , tagResourceId
+    , tagResourceType
+    , tagPropagateAtLaunch
+    , tagValue
+
+    -- * TagDescription
+    , TagDescription
+    , tagDescription
+    , tdResourceId
+    , tdResourceType
+    , tdKey
+    , tdPropagateAtLaunch
+    , tdValue
+    ) where
+
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.AutoScaling.Types.Sum
+import           Network.AWS.Prelude
+import           Network.AWS.Sign.V4
+
+-- | Version @2011-01-01@ of the Amazon Auto Scaling SDK.
+data AutoScaling
+
+instance AWSService AutoScaling where
+    type Sg AutoScaling = V4
+    service = const svc
+      where
+        svc =
+            Service
+            { _svcAbbrev = "AutoScaling"
+            , _svcPrefix = "autoscaling"
+            , _svcVersion = "2011-01-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
+
+-- | You have already reached a limit for your Auto Scaling resources (for
+-- example, groups, launch configurations, or lifecycle hooks). For more
+-- information, see DescribeAccountLimits.
+_LimitExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
+_LimitExceededFault = _ServiceError . hasStatus 400 . hasCode "LimitExceeded"
+
+-- | You already have an Auto Scaling group or launch configuration with this
+-- name.
+_AlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
+_AlreadyExistsFault = _ServiceError . hasStatus 400 . hasCode "AlreadyExists"
+
+-- | The Auto Scaling group or launch configuration can\'t be deleted because
+-- it is in use.
+_ResourceInUseFault :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceInUseFault = _ServiceError . hasStatus 400 . hasCode "ResourceInUse"
+
+-- | The 'NextToken' value is not valid.
+_InvalidNextToken :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidNextToken = _ServiceError . hasStatus 400 . hasCode "InvalidNextToken"
+
+-- | The Auto Scaling group can\'t be deleted because there are scaling
+-- activities in progress.
+_ScalingActivityInProgressFault :: AsError a => Getting (First ServiceError) a ServiceError
+_ScalingActivityInProgressFault =
+    _ServiceError . hasStatus 400 . hasCode "ScalingActivityInProgress"
+
+-- | You already have a pending update to an Auto Scaling resource (for
+-- example, a group, instance, or load balancer).
+_ResourceContentionFault :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceContentionFault =
+    _ServiceError . hasStatus 500 . hasCode "ResourceContention"
diff --git a/gen/Network/AWS/AutoScaling/Types/Product.hs b/gen/Network/AWS/AutoScaling/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AutoScaling/Types/Product.hs
@@ -0,0 +1,2040 @@
+{-# 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.AutoScaling.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.AutoScaling.Types.Product where
+
+import           Network.AWS.AutoScaling.Types.Sum
+import           Network.AWS.Prelude
+
+-- | Describes scaling activity, which is a long-running process that
+-- represents a change to your Auto Scaling group, such as changing its
+-- size or replacing an instance.
+--
+-- /See:/ 'activity' smart constructor.
+data Activity = Activity'
+    { _aProgress             :: !(Maybe Int)
+    , _aStatusMessage        :: !(Maybe Text)
+    , _aDetails              :: !(Maybe Text)
+    , _aEndTime              :: !(Maybe ISO8601)
+    , _aDescription          :: !(Maybe Text)
+    , _aActivityId           :: !Text
+    , _aAutoScalingGroupName :: !Text
+    , _aCause                :: !Text
+    , _aStartTime            :: !ISO8601
+    , _aStatusCode           :: !ScalingActivityStatusCode
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Activity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aProgress'
+--
+-- * 'aStatusMessage'
+--
+-- * 'aDetails'
+--
+-- * 'aEndTime'
+--
+-- * 'aDescription'
+--
+-- * 'aActivityId'
+--
+-- * 'aAutoScalingGroupName'
+--
+-- * 'aCause'
+--
+-- * 'aStartTime'
+--
+-- * 'aStatusCode'
+activity
+    :: Text -- ^ 'aActivityId'
+    -> Text -- ^ 'aAutoScalingGroupName'
+    -> Text -- ^ 'aCause'
+    -> UTCTime -- ^ 'aStartTime'
+    -> ScalingActivityStatusCode -- ^ 'aStatusCode'
+    -> Activity
+activity pActivityId_ pAutoScalingGroupName_ pCause_ pStartTime_ pStatusCode_ =
+    Activity'
+    { _aProgress = Nothing
+    , _aStatusMessage = Nothing
+    , _aDetails = Nothing
+    , _aEndTime = Nothing
+    , _aDescription = Nothing
+    , _aActivityId = pActivityId_
+    , _aAutoScalingGroupName = pAutoScalingGroupName_
+    , _aCause = pCause_
+    , _aStartTime = _Time # pStartTime_
+    , _aStatusCode = pStatusCode_
+    }
+
+-- | A value between 0 and 100 that indicates the progress of the activity.
+aProgress :: Lens' Activity (Maybe Int)
+aProgress = lens _aProgress (\ s a -> s{_aProgress = a});
+
+-- | A friendly, more verbose description of the activity status.
+aStatusMessage :: Lens' Activity (Maybe Text)
+aStatusMessage = lens _aStatusMessage (\ s a -> s{_aStatusMessage = a});
+
+-- | The details about the activity.
+aDetails :: Lens' Activity (Maybe Text)
+aDetails = lens _aDetails (\ s a -> s{_aDetails = a});
+
+-- | The end time of the activity.
+aEndTime :: Lens' Activity (Maybe UTCTime)
+aEndTime = lens _aEndTime (\ s a -> s{_aEndTime = a}) . mapping _Time;
+
+-- | A friendly, more verbose description of the activity.
+aDescription :: Lens' Activity (Maybe Text)
+aDescription = lens _aDescription (\ s a -> s{_aDescription = a});
+
+-- | The ID of the activity.
+aActivityId :: Lens' Activity Text
+aActivityId = lens _aActivityId (\ s a -> s{_aActivityId = a});
+
+-- | The name of the Auto Scaling group.
+aAutoScalingGroupName :: Lens' Activity Text
+aAutoScalingGroupName = lens _aAutoScalingGroupName (\ s a -> s{_aAutoScalingGroupName = a});
+
+-- | The reason the activity began.
+aCause :: Lens' Activity Text
+aCause = lens _aCause (\ s a -> s{_aCause = a});
+
+-- | The start time of the activity.
+aStartTime :: Lens' Activity UTCTime
+aStartTime = lens _aStartTime (\ s a -> s{_aStartTime = a}) . _Time;
+
+-- | The current status of the activity.
+aStatusCode :: Lens' Activity ScalingActivityStatusCode
+aStatusCode = lens _aStatusCode (\ s a -> s{_aStatusCode = a});
+
+instance FromXML Activity where
+        parseXML x
+          = Activity' <$>
+              (x .@? "Progress") <*> (x .@? "StatusMessage") <*>
+                (x .@? "Details")
+                <*> (x .@? "EndTime")
+                <*> (x .@? "Description")
+                <*> (x .@ "ActivityId")
+                <*> (x .@ "AutoScalingGroupName")
+                <*> (x .@ "Cause")
+                <*> (x .@ "StartTime")
+                <*> (x .@ "StatusCode")
+
+-- | Describes a policy adjustment type.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-scale-based-on-demand.html Dynamic Scaling>
+-- in the /Auto Scaling Developer Guide/.
+--
+-- /See:/ 'adjustmentType' smart constructor.
+newtype AdjustmentType = AdjustmentType'
+    { _atAdjustmentType :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdjustmentType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atAdjustmentType'
+adjustmentType
+    :: AdjustmentType
+adjustmentType =
+    AdjustmentType'
+    { _atAdjustmentType = Nothing
+    }
+
+-- | The policy adjustment type. The valid values are 'ChangeInCapacity',
+-- 'ExactCapacity', and 'PercentChangeInCapacity'.
+atAdjustmentType :: Lens' AdjustmentType (Maybe Text)
+atAdjustmentType = lens _atAdjustmentType (\ s a -> s{_atAdjustmentType = a});
+
+instance FromXML AdjustmentType where
+        parseXML x
+          = AdjustmentType' <$> (x .@? "AdjustmentType")
+
+-- | Describes an alarm.
+--
+-- /See:/ 'alarm' smart constructor.
+data Alarm = Alarm'
+    { _aAlarmName :: !(Maybe Text)
+    , _aAlarmARN  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Alarm' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aAlarmName'
+--
+-- * 'aAlarmARN'
+alarm
+    :: Alarm
+alarm =
+    Alarm'
+    { _aAlarmName = Nothing
+    , _aAlarmARN = Nothing
+    }
+
+-- | The name of the alarm.
+aAlarmName :: Lens' Alarm (Maybe Text)
+aAlarmName = lens _aAlarmName (\ s a -> s{_aAlarmName = a});
+
+-- | The Amazon Resource Name (ARN) of the alarm.
+aAlarmARN :: Lens' Alarm (Maybe Text)
+aAlarmARN = lens _aAlarmARN (\ s a -> s{_aAlarmARN = a});
+
+instance FromXML Alarm where
+        parseXML x
+          = Alarm' <$>
+              (x .@? "AlarmName") <*> (x .@? "AlarmARN")
+
+-- | Describes an Auto Scaling group.
+--
+-- /See:/ 'autoScalingGroup' smart constructor.
+data AutoScalingGroup = AutoScalingGroup'
+    { _asgStatus                  :: !(Maybe Text)
+    , _asgTerminationPolicies     :: !(Maybe [Text])
+    , _asgHealthCheckGracePeriod  :: !(Maybe Int)
+    , _asgVPCZoneIdentifier       :: !(Maybe Text)
+    , _asgEnabledMetrics          :: !(Maybe [EnabledMetric])
+    , _asgInstances               :: !(Maybe [Instance])
+    , _asgAutoScalingGroupARN     :: !(Maybe Text)
+    , _asgSuspendedProcesses      :: !(Maybe [SuspendedProcess])
+    , _asgPlacementGroup          :: !(Maybe Text)
+    , _asgLoadBalancerNames       :: !(Maybe [Text])
+    , _asgTags                    :: !(Maybe [TagDescription])
+    , _asgAutoScalingGroupName    :: !Text
+    , _asgLaunchConfigurationName :: !Text
+    , _asgMinSize                 :: !Int
+    , _asgMaxSize                 :: !Int
+    , _asgDesiredCapacity         :: !Int
+    , _asgDefaultCooldown         :: !Int
+    , _asgAvailabilityZones       :: !(List1 Text)
+    , _asgHealthCheckType         :: !Text
+    , _asgCreatedTime             :: !ISO8601
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoScalingGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asgStatus'
+--
+-- * 'asgTerminationPolicies'
+--
+-- * 'asgHealthCheckGracePeriod'
+--
+-- * 'asgVPCZoneIdentifier'
+--
+-- * 'asgEnabledMetrics'
+--
+-- * 'asgInstances'
+--
+-- * 'asgAutoScalingGroupARN'
+--
+-- * 'asgSuspendedProcesses'
+--
+-- * 'asgPlacementGroup'
+--
+-- * 'asgLoadBalancerNames'
+--
+-- * 'asgTags'
+--
+-- * 'asgAutoScalingGroupName'
+--
+-- * 'asgLaunchConfigurationName'
+--
+-- * 'asgMinSize'
+--
+-- * 'asgMaxSize'
+--
+-- * 'asgDesiredCapacity'
+--
+-- * 'asgDefaultCooldown'
+--
+-- * 'asgAvailabilityZones'
+--
+-- * 'asgHealthCheckType'
+--
+-- * 'asgCreatedTime'
+autoScalingGroup
+    :: Text -- ^ 'asgAutoScalingGroupName'
+    -> Text -- ^ 'asgLaunchConfigurationName'
+    -> Int -- ^ 'asgMinSize'
+    -> Int -- ^ 'asgMaxSize'
+    -> Int -- ^ 'asgDesiredCapacity'
+    -> Int -- ^ 'asgDefaultCooldown'
+    -> NonEmpty Text -- ^ 'asgAvailabilityZones'
+    -> Text -- ^ 'asgHealthCheckType'
+    -> UTCTime -- ^ 'asgCreatedTime'
+    -> AutoScalingGroup
+autoScalingGroup pAutoScalingGroupName_ pLaunchConfigurationName_ pMinSize_ pMaxSize_ pDesiredCapacity_ pDefaultCooldown_ pAvailabilityZones_ pHealthCheckType_ pCreatedTime_ =
+    AutoScalingGroup'
+    { _asgStatus = Nothing
+    , _asgTerminationPolicies = Nothing
+    , _asgHealthCheckGracePeriod = Nothing
+    , _asgVPCZoneIdentifier = Nothing
+    , _asgEnabledMetrics = Nothing
+    , _asgInstances = Nothing
+    , _asgAutoScalingGroupARN = Nothing
+    , _asgSuspendedProcesses = Nothing
+    , _asgPlacementGroup = Nothing
+    , _asgLoadBalancerNames = Nothing
+    , _asgTags = Nothing
+    , _asgAutoScalingGroupName = pAutoScalingGroupName_
+    , _asgLaunchConfigurationName = pLaunchConfigurationName_
+    , _asgMinSize = pMinSize_
+    , _asgMaxSize = pMaxSize_
+    , _asgDesiredCapacity = pDesiredCapacity_
+    , _asgDefaultCooldown = pDefaultCooldown_
+    , _asgAvailabilityZones = _List1 # pAvailabilityZones_
+    , _asgHealthCheckType = pHealthCheckType_
+    , _asgCreatedTime = _Time # pCreatedTime_
+    }
+
+-- | The current state of the group when DeleteAutoScalingGroup is in
+-- progress.
+asgStatus :: Lens' AutoScalingGroup (Maybe Text)
+asgStatus = lens _asgStatus (\ s a -> s{_asgStatus = a});
+
+-- | The termination policies for the group.
+asgTerminationPolicies :: Lens' AutoScalingGroup [Text]
+asgTerminationPolicies = lens _asgTerminationPolicies (\ s a -> s{_asgTerminationPolicies = a}) . _Default . _Coerce;
+
+-- | The amount of time that Auto Scaling waits before checking an
+-- instance\'s health status. The grace period begins when an instance
+-- comes into service.
+asgHealthCheckGracePeriod :: Lens' AutoScalingGroup (Maybe Int)
+asgHealthCheckGracePeriod = lens _asgHealthCheckGracePeriod (\ s a -> s{_asgHealthCheckGracePeriod = a});
+
+-- | One or more subnet IDs, if applicable, separated by commas.
+--
+-- If you specify 'VPCZoneIdentifier' and 'AvailabilityZones', ensure that
+-- the Availability Zones of the subnets match the values for
+-- 'AvailabilityZones'.
+asgVPCZoneIdentifier :: Lens' AutoScalingGroup (Maybe Text)
+asgVPCZoneIdentifier = lens _asgVPCZoneIdentifier (\ s a -> s{_asgVPCZoneIdentifier = a});
+
+-- | The metrics enabled for the group.
+asgEnabledMetrics :: Lens' AutoScalingGroup [EnabledMetric]
+asgEnabledMetrics = lens _asgEnabledMetrics (\ s a -> s{_asgEnabledMetrics = a}) . _Default . _Coerce;
+
+-- | The EC2 instances associated with the group.
+asgInstances :: Lens' AutoScalingGroup [Instance]
+asgInstances = lens _asgInstances (\ s a -> s{_asgInstances = a}) . _Default . _Coerce;
+
+-- | The Amazon Resource Name (ARN) of the group.
+asgAutoScalingGroupARN :: Lens' AutoScalingGroup (Maybe Text)
+asgAutoScalingGroupARN = lens _asgAutoScalingGroupARN (\ s a -> s{_asgAutoScalingGroupARN = a});
+
+-- | The suspended processes associated with the group.
+asgSuspendedProcesses :: Lens' AutoScalingGroup [SuspendedProcess]
+asgSuspendedProcesses = lens _asgSuspendedProcesses (\ s a -> s{_asgSuspendedProcesses = a}) . _Default . _Coerce;
+
+-- | The name of the placement group into which you\'ll launch your
+-- instances, if any. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html Placement Groups>.
+asgPlacementGroup :: Lens' AutoScalingGroup (Maybe Text)
+asgPlacementGroup = lens _asgPlacementGroup (\ s a -> s{_asgPlacementGroup = a});
+
+-- | One or more load balancers associated with the group.
+asgLoadBalancerNames :: Lens' AutoScalingGroup [Text]
+asgLoadBalancerNames = lens _asgLoadBalancerNames (\ s a -> s{_asgLoadBalancerNames = a}) . _Default . _Coerce;
+
+-- | The tags for the group.
+asgTags :: Lens' AutoScalingGroup [TagDescription]
+asgTags = lens _asgTags (\ s a -> s{_asgTags = a}) . _Default . _Coerce;
+
+-- | The name of the group.
+asgAutoScalingGroupName :: Lens' AutoScalingGroup Text
+asgAutoScalingGroupName = lens _asgAutoScalingGroupName (\ s a -> s{_asgAutoScalingGroupName = a});
+
+-- | The name of the associated launch configuration.
+asgLaunchConfigurationName :: Lens' AutoScalingGroup Text
+asgLaunchConfigurationName = lens _asgLaunchConfigurationName (\ s a -> s{_asgLaunchConfigurationName = a});
+
+-- | The minimum size of the group.
+asgMinSize :: Lens' AutoScalingGroup Int
+asgMinSize = lens _asgMinSize (\ s a -> s{_asgMinSize = a});
+
+-- | The maximum size of the group.
+asgMaxSize :: Lens' AutoScalingGroup Int
+asgMaxSize = lens _asgMaxSize (\ s a -> s{_asgMaxSize = a});
+
+-- | The desired size of the group.
+asgDesiredCapacity :: Lens' AutoScalingGroup Int
+asgDesiredCapacity = lens _asgDesiredCapacity (\ s a -> s{_asgDesiredCapacity = a});
+
+-- | The number of seconds after a scaling activity completes before any
+-- further scaling activities can start.
+asgDefaultCooldown :: Lens' AutoScalingGroup Int
+asgDefaultCooldown = lens _asgDefaultCooldown (\ s a -> s{_asgDefaultCooldown = a});
+
+-- | One or more Availability Zones for the group.
+asgAvailabilityZones :: Lens' AutoScalingGroup (NonEmpty Text)
+asgAvailabilityZones = lens _asgAvailabilityZones (\ s a -> s{_asgAvailabilityZones = a}) . _List1;
+
+-- | The service of interest for the health status check, which can be either
+-- 'EC2' for Amazon EC2 or 'ELB' for Elastic Load Balancing.
+asgHealthCheckType :: Lens' AutoScalingGroup Text
+asgHealthCheckType = lens _asgHealthCheckType (\ s a -> s{_asgHealthCheckType = a});
+
+-- | The date and time the group was created.
+asgCreatedTime :: Lens' AutoScalingGroup UTCTime
+asgCreatedTime = lens _asgCreatedTime (\ s a -> s{_asgCreatedTime = a}) . _Time;
+
+instance FromXML AutoScalingGroup where
+        parseXML x
+          = AutoScalingGroup' <$>
+              (x .@? "Status") <*>
+                (x .@? "TerminationPolicies" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "HealthCheckGracePeriod")
+                <*> (x .@? "VPCZoneIdentifier")
+                <*>
+                (x .@? "EnabledMetrics" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*>
+                (x .@? "Instances" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "AutoScalingGroupARN")
+                <*>
+                (x .@? "SuspendedProcesses" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "PlacementGroup")
+                <*>
+                (x .@? "LoadBalancerNames" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*>
+                (x .@? "Tags" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@ "AutoScalingGroupName")
+                <*> (x .@ "LaunchConfigurationName")
+                <*> (x .@ "MinSize")
+                <*> (x .@ "MaxSize")
+                <*> (x .@ "DesiredCapacity")
+                <*> (x .@ "DefaultCooldown")
+                <*>
+                (x .@? "AvailabilityZones" .!@ mempty >>=
+                   parseXMLList1 "member")
+                <*> (x .@ "HealthCheckType")
+                <*> (x .@ "CreatedTime")
+
+-- | Describes an EC2 instance associated with an Auto Scaling group.
+--
+-- /See:/ 'autoScalingInstanceDetails' smart constructor.
+data AutoScalingInstanceDetails = AutoScalingInstanceDetails'
+    { _asidInstanceId              :: !Text
+    , _asidAutoScalingGroupName    :: !Text
+    , _asidAvailabilityZone        :: !Text
+    , _asidLifecycleState          :: !Text
+    , _asidHealthStatus            :: !Text
+    , _asidLaunchConfigurationName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoScalingInstanceDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asidInstanceId'
+--
+-- * 'asidAutoScalingGroupName'
+--
+-- * 'asidAvailabilityZone'
+--
+-- * 'asidLifecycleState'
+--
+-- * 'asidHealthStatus'
+--
+-- * 'asidLaunchConfigurationName'
+autoScalingInstanceDetails
+    :: Text -- ^ 'asidInstanceId'
+    -> Text -- ^ 'asidAutoScalingGroupName'
+    -> Text -- ^ 'asidAvailabilityZone'
+    -> Text -- ^ 'asidLifecycleState'
+    -> Text -- ^ 'asidHealthStatus'
+    -> Text -- ^ 'asidLaunchConfigurationName'
+    -> AutoScalingInstanceDetails
+autoScalingInstanceDetails pInstanceId_ pAutoScalingGroupName_ pAvailabilityZone_ pLifecycleState_ pHealthStatus_ pLaunchConfigurationName_ =
+    AutoScalingInstanceDetails'
+    { _asidInstanceId = pInstanceId_
+    , _asidAutoScalingGroupName = pAutoScalingGroupName_
+    , _asidAvailabilityZone = pAvailabilityZone_
+    , _asidLifecycleState = pLifecycleState_
+    , _asidHealthStatus = pHealthStatus_
+    , _asidLaunchConfigurationName = pLaunchConfigurationName_
+    }
+
+-- | The ID of the instance.
+asidInstanceId :: Lens' AutoScalingInstanceDetails Text
+asidInstanceId = lens _asidInstanceId (\ s a -> s{_asidInstanceId = a});
+
+-- | The name of the Auto Scaling group associated with the instance.
+asidAutoScalingGroupName :: Lens' AutoScalingInstanceDetails Text
+asidAutoScalingGroupName = lens _asidAutoScalingGroupName (\ s a -> s{_asidAutoScalingGroupName = a});
+
+-- | The Availability Zone for the instance.
+asidAvailabilityZone :: Lens' AutoScalingInstanceDetails Text
+asidAvailabilityZone = lens _asidAvailabilityZone (\ s a -> s{_asidAvailabilityZone = a});
+
+-- | The lifecycle state for the instance. For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingGroupLifecycle.html#AutoScalingStates Auto Scaling Instance States>
+-- in the /Auto Scaling Developer Guide/.
+asidLifecycleState :: Lens' AutoScalingInstanceDetails Text
+asidLifecycleState = lens _asidLifecycleState (\ s a -> s{_asidLifecycleState = a});
+
+-- | The health status of this instance. \"Healthy\" means that the instance
+-- is healthy and should remain in service. \"Unhealthy\" means that the
+-- instance is unhealthy and Auto Scaling should terminate and replace it.
+asidHealthStatus :: Lens' AutoScalingInstanceDetails Text
+asidHealthStatus = lens _asidHealthStatus (\ s a -> s{_asidHealthStatus = a});
+
+-- | The launch configuration associated with the instance.
+asidLaunchConfigurationName :: Lens' AutoScalingInstanceDetails Text
+asidLaunchConfigurationName = lens _asidLaunchConfigurationName (\ s a -> s{_asidLaunchConfigurationName = a});
+
+instance FromXML AutoScalingInstanceDetails where
+        parseXML x
+          = AutoScalingInstanceDetails' <$>
+              (x .@ "InstanceId") <*> (x .@ "AutoScalingGroupName")
+                <*> (x .@ "AvailabilityZone")
+                <*> (x .@ "LifecycleState")
+                <*> (x .@ "HealthStatus")
+                <*> (x .@ "LaunchConfigurationName")
+
+-- | Describes a block device mapping.
+--
+-- /See:/ 'blockDeviceMapping' smart constructor.
+data BlockDeviceMapping = BlockDeviceMapping'
+    { _bdmVirtualName :: !(Maybe Text)
+    , _bdmNoDevice    :: !(Maybe Bool)
+    , _bdmEBS         :: !(Maybe EBS)
+    , _bdmDeviceName  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BlockDeviceMapping' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bdmVirtualName'
+--
+-- * 'bdmNoDevice'
+--
+-- * 'bdmEBS'
+--
+-- * 'bdmDeviceName'
+blockDeviceMapping
+    :: Text -- ^ 'bdmDeviceName'
+    -> BlockDeviceMapping
+blockDeviceMapping pDeviceName_ =
+    BlockDeviceMapping'
+    { _bdmVirtualName = Nothing
+    , _bdmNoDevice = Nothing
+    , _bdmEBS = Nothing
+    , _bdmDeviceName = pDeviceName_
+    }
+
+-- | The name of the virtual device, 'ephemeral0' to 'ephemeral3'.
+bdmVirtualName :: Lens' BlockDeviceMapping (Maybe Text)
+bdmVirtualName = lens _bdmVirtualName (\ s a -> s{_bdmVirtualName = a});
+
+-- | Suppresses a device mapping.
+--
+-- If this parameter is true for the root device, the instance might fail
+-- the EC2 health check. Auto Scaling launches a replacement instance if
+-- the instance fails the health check.
+bdmNoDevice :: Lens' BlockDeviceMapping (Maybe Bool)
+bdmNoDevice = lens _bdmNoDevice (\ s a -> s{_bdmNoDevice = a});
+
+-- | The information about the Amazon EBS volume.
+bdmEBS :: Lens' BlockDeviceMapping (Maybe EBS)
+bdmEBS = lens _bdmEBS (\ s a -> s{_bdmEBS = a});
+
+-- | The device name exposed to the EC2 instance (for example, '\/dev\/sdh'
+-- or 'xvdh').
+bdmDeviceName :: Lens' BlockDeviceMapping Text
+bdmDeviceName = lens _bdmDeviceName (\ s a -> s{_bdmDeviceName = a});
+
+instance FromXML BlockDeviceMapping where
+        parseXML x
+          = BlockDeviceMapping' <$>
+              (x .@? "VirtualName") <*> (x .@? "NoDevice") <*>
+                (x .@? "Ebs")
+                <*> (x .@ "DeviceName")
+
+instance ToQuery BlockDeviceMapping where
+        toQuery BlockDeviceMapping'{..}
+          = mconcat
+              ["VirtualName" =: _bdmVirtualName,
+               "NoDevice" =: _bdmNoDevice, "Ebs" =: _bdmEBS,
+               "DeviceName" =: _bdmDeviceName]
+
+-- | Describes an Amazon EBS volume.
+--
+-- /See:/ 'ebs' smart constructor.
+data EBS = EBS'
+    { _ebsDeleteOnTermination :: !(Maybe Bool)
+    , _ebsVolumeSize          :: !(Maybe Nat)
+    , _ebsIOPS                :: !(Maybe Nat)
+    , _ebsVolumeType          :: !(Maybe Text)
+    , _ebsSnapshotId          :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EBS' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ebsDeleteOnTermination'
+--
+-- * 'ebsVolumeSize'
+--
+-- * 'ebsIOPS'
+--
+-- * 'ebsVolumeType'
+--
+-- * 'ebsSnapshotId'
+ebs
+    :: EBS
+ebs =
+    EBS'
+    { _ebsDeleteOnTermination = Nothing
+    , _ebsVolumeSize = Nothing
+    , _ebsIOPS = Nothing
+    , _ebsVolumeType = Nothing
+    , _ebsSnapshotId = Nothing
+    }
+
+-- | Indicates whether to delete the volume on instance termination.
+--
+-- Default: 'true'
+ebsDeleteOnTermination :: Lens' EBS (Maybe Bool)
+ebsDeleteOnTermination = lens _ebsDeleteOnTermination (\ s a -> s{_ebsDeleteOnTermination = a});
+
+-- | The volume size, in gigabytes.
+--
+-- Valid values: If the volume type is 'io1', the minimum size of the
+-- volume is 10 GiB. If you specify 'SnapshotId' and 'VolumeSize',
+-- 'VolumeSize' must be equal to or larger than the size of the snapshot.
+--
+-- Default: If you create a volume from a snapshot and you don\'t specify a
+-- volume size, the default is the size of the snapshot.
+--
+-- Required: Required when the volume type is 'io1'.
+ebsVolumeSize :: Lens' EBS (Maybe Natural)
+ebsVolumeSize = lens _ebsVolumeSize (\ s a -> s{_ebsVolumeSize = a}) . mapping _Nat;
+
+-- | For Provisioned IOPS (SSD) volumes only. The number of I\/O operations
+-- per second (IOPS) to provision for the volume.
+--
+-- Valid values: Range is 100 to 4000.
+--
+-- Default: None
+ebsIOPS :: Lens' EBS (Maybe Natural)
+ebsIOPS = lens _ebsIOPS (\ s a -> s{_ebsIOPS = a}) . mapping _Nat;
+
+-- | The volume type.
+--
+-- Valid values: 'standard | io1 | gp2'
+--
+-- Default: 'standard'
+ebsVolumeType :: Lens' EBS (Maybe Text)
+ebsVolumeType = lens _ebsVolumeType (\ s a -> s{_ebsVolumeType = a});
+
+-- | The ID of the snapshot.
+ebsSnapshotId :: Lens' EBS (Maybe Text)
+ebsSnapshotId = lens _ebsSnapshotId (\ s a -> s{_ebsSnapshotId = a});
+
+instance FromXML EBS where
+        parseXML x
+          = EBS' <$>
+              (x .@? "DeleteOnTermination") <*>
+                (x .@? "VolumeSize")
+                <*> (x .@? "Iops")
+                <*> (x .@? "VolumeType")
+                <*> (x .@? "SnapshotId")
+
+instance ToQuery EBS where
+        toQuery EBS'{..}
+          = mconcat
+              ["DeleteOnTermination" =: _ebsDeleteOnTermination,
+               "VolumeSize" =: _ebsVolumeSize, "Iops" =: _ebsIOPS,
+               "VolumeType" =: _ebsVolumeType,
+               "SnapshotId" =: _ebsSnapshotId]
+
+-- | Describes an enabled metric.
+--
+-- /See:/ 'enabledMetric' smart constructor.
+data EnabledMetric = EnabledMetric'
+    { _emGranularity :: !(Maybe Text)
+    , _emMetric      :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EnabledMetric' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'emGranularity'
+--
+-- * 'emMetric'
+enabledMetric
+    :: EnabledMetric
+enabledMetric =
+    EnabledMetric'
+    { _emGranularity = Nothing
+    , _emMetric = Nothing
+    }
+
+-- | The granularity of the metric. The only valid value is '1Minute'.
+emGranularity :: Lens' EnabledMetric (Maybe Text)
+emGranularity = lens _emGranularity (\ s a -> s{_emGranularity = a});
+
+-- | The name of the metric.
+--
+-- -   'GroupMinSize'
+--
+-- -   'GroupMaxSize'
+--
+-- -   'GroupDesiredCapacity'
+--
+-- -   'GroupInServiceInstances'
+--
+-- -   'GroupPendingInstances'
+--
+-- -   'GroupStandbyInstances'
+--
+-- -   'GroupTerminatingInstances'
+--
+-- -   'GroupTotalInstances'
+--
+emMetric :: Lens' EnabledMetric (Maybe Text)
+emMetric = lens _emMetric (\ s a -> s{_emMetric = a});
+
+instance FromXML EnabledMetric where
+        parseXML x
+          = EnabledMetric' <$>
+              (x .@? "Granularity") <*> (x .@? "Metric")
+
+-- | Describes a filter.
+--
+-- /See:/ 'filter'' smart constructor.
+data Filter = Filter'
+    { _fValues :: !(Maybe [Text])
+    , _fName   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Filter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fValues'
+--
+-- * 'fName'
+filter'
+    :: Text -- ^ 'fName'
+    -> Filter
+filter' pName_ =
+    Filter'
+    { _fValues = Nothing
+    , _fName = pName_
+    }
+
+-- | The value of the filter.
+fValues :: Lens' Filter [Text]
+fValues = lens _fValues (\ s a -> s{_fValues = a}) . _Default . _Coerce;
+
+-- | The name of the filter. The valid values are: '\"auto-scaling-group\"',
+-- '\"key\"', '\"value\"', and '\"propagate-at-launch\"'.
+fName :: Lens' Filter Text
+fName = lens _fName (\ s a -> s{_fName = a});
+
+instance ToQuery Filter where
+        toQuery Filter'{..}
+          = mconcat
+              ["Values" =:
+                 toQuery (toQueryList "member" <$> _fValues),
+               "Name" =: _fName]
+
+-- | Describes an EC2 instance.
+--
+-- /See:/ 'instance'' smart constructor.
+data Instance = Instance'
+    { _iInstanceId              :: !Text
+    , _iAvailabilityZone        :: !Text
+    , _iLifecycleState          :: !LifecycleState
+    , _iHealthStatus            :: !Text
+    , _iLaunchConfigurationName :: !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'
+--
+-- * 'iAvailabilityZone'
+--
+-- * 'iLifecycleState'
+--
+-- * 'iHealthStatus'
+--
+-- * 'iLaunchConfigurationName'
+instance'
+    :: Text -- ^ 'iInstanceId'
+    -> Text -- ^ 'iAvailabilityZone'
+    -> LifecycleState -- ^ 'iLifecycleState'
+    -> Text -- ^ 'iHealthStatus'
+    -> Text -- ^ 'iLaunchConfigurationName'
+    -> Instance
+instance' pInstanceId_ pAvailabilityZone_ pLifecycleState_ pHealthStatus_ pLaunchConfigurationName_ =
+    Instance'
+    { _iInstanceId = pInstanceId_
+    , _iAvailabilityZone = pAvailabilityZone_
+    , _iLifecycleState = pLifecycleState_
+    , _iHealthStatus = pHealthStatus_
+    , _iLaunchConfigurationName = pLaunchConfigurationName_
+    }
+
+-- | The ID of the instance.
+iInstanceId :: Lens' Instance Text
+iInstanceId = lens _iInstanceId (\ s a -> s{_iInstanceId = a});
+
+-- | The Availability Zone in which the instance is running.
+iAvailabilityZone :: Lens' Instance Text
+iAvailabilityZone = lens _iAvailabilityZone (\ s a -> s{_iAvailabilityZone = a});
+
+-- | A description of the current lifecycle state. Note that the
+-- 'Quarantined' state is not used.
+iLifecycleState :: Lens' Instance LifecycleState
+iLifecycleState = lens _iLifecycleState (\ s a -> s{_iLifecycleState = a});
+
+-- | The health status of the instance.
+iHealthStatus :: Lens' Instance Text
+iHealthStatus = lens _iHealthStatus (\ s a -> s{_iHealthStatus = a});
+
+-- | The launch configuration associated with the instance.
+iLaunchConfigurationName :: Lens' Instance Text
+iLaunchConfigurationName = lens _iLaunchConfigurationName (\ s a -> s{_iLaunchConfigurationName = a});
+
+instance FromXML Instance where
+        parseXML x
+          = Instance' <$>
+              (x .@ "InstanceId") <*> (x .@ "AvailabilityZone") <*>
+                (x .@ "LifecycleState")
+                <*> (x .@ "HealthStatus")
+                <*> (x .@ "LaunchConfigurationName")
+
+-- | Describes whether instance monitoring is enabled.
+--
+-- /See:/ 'instanceMonitoring' smart constructor.
+newtype InstanceMonitoring = InstanceMonitoring'
+    { _imEnabled :: Maybe Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceMonitoring' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'imEnabled'
+instanceMonitoring
+    :: InstanceMonitoring
+instanceMonitoring =
+    InstanceMonitoring'
+    { _imEnabled = Nothing
+    }
+
+-- | If 'True', instance monitoring is enabled.
+imEnabled :: Lens' InstanceMonitoring (Maybe Bool)
+imEnabled = lens _imEnabled (\ s a -> s{_imEnabled = a});
+
+instance FromXML InstanceMonitoring where
+        parseXML x
+          = InstanceMonitoring' <$> (x .@? "Enabled")
+
+instance ToQuery InstanceMonitoring where
+        toQuery InstanceMonitoring'{..}
+          = mconcat ["Enabled" =: _imEnabled]
+
+-- | Describes a launch configuration.
+--
+-- /See:/ 'launchConfiguration' smart constructor.
+data LaunchConfiguration = LaunchConfiguration'
+    { _lcSecurityGroups               :: !(Maybe [Text])
+    , _lcAssociatePublicIPAddress     :: !(Maybe Bool)
+    , _lcInstanceMonitoring           :: !(Maybe InstanceMonitoring)
+    , _lcSpotPrice                    :: !(Maybe Text)
+    , _lcKeyName                      :: !(Maybe Text)
+    , _lcClassicLinkVPCSecurityGroups :: !(Maybe [Text])
+    , _lcRAMDiskId                    :: !(Maybe Text)
+    , _lcKernelId                     :: !(Maybe Text)
+    , _lcEBSOptimized                 :: !(Maybe Bool)
+    , _lcUserData                     :: !(Maybe Text)
+    , _lcClassicLinkVPCId             :: !(Maybe Text)
+    , _lcIAMInstanceProfile           :: !(Maybe Text)
+    , _lcLaunchConfigurationARN       :: !(Maybe Text)
+    , _lcPlacementTenancy             :: !(Maybe Text)
+    , _lcBlockDeviceMappings          :: !(Maybe [BlockDeviceMapping])
+    , _lcLaunchConfigurationName      :: !Text
+    , _lcImageId                      :: !Text
+    , _lcInstanceType                 :: !Text
+    , _lcCreatedTime                  :: !ISO8601
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LaunchConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcSecurityGroups'
+--
+-- * 'lcAssociatePublicIPAddress'
+--
+-- * 'lcInstanceMonitoring'
+--
+-- * 'lcSpotPrice'
+--
+-- * 'lcKeyName'
+--
+-- * 'lcClassicLinkVPCSecurityGroups'
+--
+-- * 'lcRAMDiskId'
+--
+-- * 'lcKernelId'
+--
+-- * 'lcEBSOptimized'
+--
+-- * 'lcUserData'
+--
+-- * 'lcClassicLinkVPCId'
+--
+-- * 'lcIAMInstanceProfile'
+--
+-- * 'lcLaunchConfigurationARN'
+--
+-- * 'lcPlacementTenancy'
+--
+-- * 'lcBlockDeviceMappings'
+--
+-- * 'lcLaunchConfigurationName'
+--
+-- * 'lcImageId'
+--
+-- * 'lcInstanceType'
+--
+-- * 'lcCreatedTime'
+launchConfiguration
+    :: Text -- ^ 'lcLaunchConfigurationName'
+    -> Text -- ^ 'lcImageId'
+    -> Text -- ^ 'lcInstanceType'
+    -> UTCTime -- ^ 'lcCreatedTime'
+    -> LaunchConfiguration
+launchConfiguration pLaunchConfigurationName_ pImageId_ pInstanceType_ pCreatedTime_ =
+    LaunchConfiguration'
+    { _lcSecurityGroups = Nothing
+    , _lcAssociatePublicIPAddress = Nothing
+    , _lcInstanceMonitoring = Nothing
+    , _lcSpotPrice = Nothing
+    , _lcKeyName = Nothing
+    , _lcClassicLinkVPCSecurityGroups = Nothing
+    , _lcRAMDiskId = Nothing
+    , _lcKernelId = Nothing
+    , _lcEBSOptimized = Nothing
+    , _lcUserData = Nothing
+    , _lcClassicLinkVPCId = Nothing
+    , _lcIAMInstanceProfile = Nothing
+    , _lcLaunchConfigurationARN = Nothing
+    , _lcPlacementTenancy = Nothing
+    , _lcBlockDeviceMappings = Nothing
+    , _lcLaunchConfigurationName = pLaunchConfigurationName_
+    , _lcImageId = pImageId_
+    , _lcInstanceType = pInstanceType_
+    , _lcCreatedTime = _Time # pCreatedTime_
+    }
+
+-- | The security groups to associate with the instances.
+lcSecurityGroups :: Lens' LaunchConfiguration [Text]
+lcSecurityGroups = lens _lcSecurityGroups (\ s a -> s{_lcSecurityGroups = a}) . _Default . _Coerce;
+
+-- | Specifies whether the instances are associated with a public IP address
+-- ('true') or not ('false').
+lcAssociatePublicIPAddress :: Lens' LaunchConfiguration (Maybe Bool)
+lcAssociatePublicIPAddress = lens _lcAssociatePublicIPAddress (\ s a -> s{_lcAssociatePublicIPAddress = a});
+
+-- | Controls whether instances in this group are launched with detailed
+-- monitoring.
+lcInstanceMonitoring :: Lens' LaunchConfiguration (Maybe InstanceMonitoring)
+lcInstanceMonitoring = lens _lcInstanceMonitoring (\ s a -> s{_lcInstanceMonitoring = a});
+
+-- | The price to bid when launching Spot Instances.
+lcSpotPrice :: Lens' LaunchConfiguration (Maybe Text)
+lcSpotPrice = lens _lcSpotPrice (\ s a -> s{_lcSpotPrice = a});
+
+-- | The name of the key pair.
+lcKeyName :: Lens' LaunchConfiguration (Maybe Text)
+lcKeyName = lens _lcKeyName (\ s a -> s{_lcKeyName = a});
+
+-- | The IDs of one or more security groups for the VPC specified in
+-- 'ClassicLinkVPCId'. This parameter is required if 'ClassicLinkVPCId' is
+-- specified, and cannot be used otherwise. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+lcClassicLinkVPCSecurityGroups :: Lens' LaunchConfiguration [Text]
+lcClassicLinkVPCSecurityGroups = lens _lcClassicLinkVPCSecurityGroups (\ s a -> s{_lcClassicLinkVPCSecurityGroups = a}) . _Default . _Coerce;
+
+-- | The ID of the RAM disk associated with the AMI.
+lcRAMDiskId :: Lens' LaunchConfiguration (Maybe Text)
+lcRAMDiskId = lens _lcRAMDiskId (\ s a -> s{_lcRAMDiskId = a});
+
+-- | The ID of the kernel associated with the AMI.
+lcKernelId :: Lens' LaunchConfiguration (Maybe Text)
+lcKernelId = lens _lcKernelId (\ s a -> s{_lcKernelId = a});
+
+-- | Controls whether the instance is optimized for EBS I\/O ('true') or not
+-- ('false').
+lcEBSOptimized :: Lens' LaunchConfiguration (Maybe Bool)
+lcEBSOptimized = lens _lcEBSOptimized (\ s a -> s{_lcEBSOptimized = a});
+
+-- | The user data available to the instances.
+lcUserData :: Lens' LaunchConfiguration (Maybe Text)
+lcUserData = lens _lcUserData (\ s a -> s{_lcUserData = a});
+
+-- | The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances
+-- to. This parameter can only be used if you are launching EC2-Classic
+-- instances. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink>
+-- in the /Amazon Elastic Compute Cloud User Guide/.
+lcClassicLinkVPCId :: Lens' LaunchConfiguration (Maybe Text)
+lcClassicLinkVPCId = lens _lcClassicLinkVPCId (\ s a -> s{_lcClassicLinkVPCId = a});
+
+-- | The name or Amazon Resource Name (ARN) of the instance profile
+-- associated with the IAM role for the instance.
+lcIAMInstanceProfile :: Lens' LaunchConfiguration (Maybe Text)
+lcIAMInstanceProfile = lens _lcIAMInstanceProfile (\ s a -> s{_lcIAMInstanceProfile = a});
+
+-- | The Amazon Resource Name (ARN) of the launch configuration.
+lcLaunchConfigurationARN :: Lens' LaunchConfiguration (Maybe Text)
+lcLaunchConfigurationARN = lens _lcLaunchConfigurationARN (\ s a -> s{_lcLaunchConfigurationARN = a});
+
+-- | The tenancy of the instance, either 'default' or 'dedicated'. An
+-- instance with 'dedicated' tenancy runs in an isolated, single-tenant
+-- hardware and can only be launched into a VPC.
+lcPlacementTenancy :: Lens' LaunchConfiguration (Maybe Text)
+lcPlacementTenancy = lens _lcPlacementTenancy (\ s a -> s{_lcPlacementTenancy = a});
+
+-- | A block device mapping, which specifies the block devices for the
+-- instance.
+lcBlockDeviceMappings :: Lens' LaunchConfiguration [BlockDeviceMapping]
+lcBlockDeviceMappings = lens _lcBlockDeviceMappings (\ s a -> s{_lcBlockDeviceMappings = a}) . _Default . _Coerce;
+
+-- | The name of the launch configuration.
+lcLaunchConfigurationName :: Lens' LaunchConfiguration Text
+lcLaunchConfigurationName = lens _lcLaunchConfigurationName (\ s a -> s{_lcLaunchConfigurationName = a});
+
+-- | The ID of the Amazon Machine Image (AMI).
+lcImageId :: Lens' LaunchConfiguration Text
+lcImageId = lens _lcImageId (\ s a -> s{_lcImageId = a});
+
+-- | The instance type for the instances.
+lcInstanceType :: Lens' LaunchConfiguration Text
+lcInstanceType = lens _lcInstanceType (\ s a -> s{_lcInstanceType = a});
+
+-- | The creation date and time for the launch configuration.
+lcCreatedTime :: Lens' LaunchConfiguration UTCTime
+lcCreatedTime = lens _lcCreatedTime (\ s a -> s{_lcCreatedTime = a}) . _Time;
+
+instance FromXML LaunchConfiguration where
+        parseXML x
+          = LaunchConfiguration' <$>
+              (x .@? "SecurityGroups" .!@ mempty >>=
+                 may (parseXMLList "member"))
+                <*> (x .@? "AssociatePublicIpAddress")
+                <*> (x .@? "InstanceMonitoring")
+                <*> (x .@? "SpotPrice")
+                <*> (x .@? "KeyName")
+                <*>
+                (x .@? "ClassicLinkVPCSecurityGroups" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "RamdiskId")
+                <*> (x .@? "KernelId")
+                <*> (x .@? "EbsOptimized")
+                <*> (x .@? "UserData")
+                <*> (x .@? "ClassicLinkVPCId")
+                <*> (x .@? "IamInstanceProfile")
+                <*> (x .@? "LaunchConfigurationARN")
+                <*> (x .@? "PlacementTenancy")
+                <*>
+                (x .@? "BlockDeviceMappings" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@ "LaunchConfigurationName")
+                <*> (x .@ "ImageId")
+                <*> (x .@ "InstanceType")
+                <*> (x .@ "CreatedTime")
+
+-- | Describes a lifecycle hook, which tells Auto Scaling that you want to
+-- perform an action when an instance launches or terminates. When you have
+-- a lifecycle hook in place, the Auto Scaling group will either:
+--
+-- -   Pause the instance after it launches, but before it is put into
+--     service
+-- -   Pause the instance as it terminates, but before it is fully
+--     terminated
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingPendingState.html Auto Scaling Pending State>
+-- and
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingTerminatingState.html Auto Scaling Terminating State>
+-- in the /Auto Scaling Developer Guide/.
+--
+-- /See:/ 'lifecycleHook' smart constructor.
+data LifecycleHook = LifecycleHook'
+    { _lhDefaultResult         :: !(Maybe Text)
+    , _lhLifecycleHookName     :: !(Maybe Text)
+    , _lhHeartbeatTimeout      :: !(Maybe Int)
+    , _lhAutoScalingGroupName  :: !(Maybe Text)
+    , _lhNotificationMetadata  :: !(Maybe Text)
+    , _lhGlobalTimeout         :: !(Maybe Int)
+    , _lhRoleARN               :: !(Maybe Text)
+    , _lhLifecycleTransition   :: !(Maybe Text)
+    , _lhNotificationTargetARN :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LifecycleHook' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lhDefaultResult'
+--
+-- * 'lhLifecycleHookName'
+--
+-- * 'lhHeartbeatTimeout'
+--
+-- * 'lhAutoScalingGroupName'
+--
+-- * 'lhNotificationMetadata'
+--
+-- * 'lhGlobalTimeout'
+--
+-- * 'lhRoleARN'
+--
+-- * 'lhLifecycleTransition'
+--
+-- * 'lhNotificationTargetARN'
+lifecycleHook
+    :: LifecycleHook
+lifecycleHook =
+    LifecycleHook'
+    { _lhDefaultResult = Nothing
+    , _lhLifecycleHookName = Nothing
+    , _lhHeartbeatTimeout = Nothing
+    , _lhAutoScalingGroupName = Nothing
+    , _lhNotificationMetadata = Nothing
+    , _lhGlobalTimeout = Nothing
+    , _lhRoleARN = Nothing
+    , _lhLifecycleTransition = Nothing
+    , _lhNotificationTargetARN = Nothing
+    }
+
+-- | Defines the action the Auto Scaling group should take when the lifecycle
+-- hook timeout elapses or if an unexpected failure occurs. The valid
+-- values are 'CONTINUE' and 'ABANDON'. The default value is 'CONTINUE'.
+lhDefaultResult :: Lens' LifecycleHook (Maybe Text)
+lhDefaultResult = lens _lhDefaultResult (\ s a -> s{_lhDefaultResult = a});
+
+-- | The name of the lifecycle hook.
+lhLifecycleHookName :: Lens' LifecycleHook (Maybe Text)
+lhLifecycleHookName = lens _lhLifecycleHookName (\ s a -> s{_lhLifecycleHookName = a});
+
+-- | The amount of time that can elapse before the lifecycle hook times out.
+-- When the lifecycle hook times out, Auto Scaling performs the action
+-- defined in the 'DefaultResult' parameter. You can prevent the lifecycle
+-- hook from timing out by calling RecordLifecycleActionHeartbeat.
+lhHeartbeatTimeout :: Lens' LifecycleHook (Maybe Int)
+lhHeartbeatTimeout = lens _lhHeartbeatTimeout (\ s a -> s{_lhHeartbeatTimeout = a});
+
+-- | The name of the Auto Scaling group for the lifecycle hook.
+lhAutoScalingGroupName :: Lens' LifecycleHook (Maybe Text)
+lhAutoScalingGroupName = lens _lhAutoScalingGroupName (\ s a -> s{_lhAutoScalingGroupName = a});
+
+-- | Additional information that you want to include any time Auto Scaling
+-- sends a message to the notification target.
+lhNotificationMetadata :: Lens' LifecycleHook (Maybe Text)
+lhNotificationMetadata = lens _lhNotificationMetadata (\ s a -> s{_lhNotificationMetadata = a});
+
+-- | The maximum length of time an instance can remain in a 'Pending:Wait' or
+-- 'Terminating:Wait' state. Currently, the maximum is set to 48 hours.
+lhGlobalTimeout :: Lens' LifecycleHook (Maybe Int)
+lhGlobalTimeout = lens _lhGlobalTimeout (\ s a -> s{_lhGlobalTimeout = a});
+
+-- | The ARN of the IAM role that allows the Auto Scaling group to publish to
+-- the specified notification target.
+lhRoleARN :: Lens' LifecycleHook (Maybe Text)
+lhRoleARN = lens _lhRoleARN (\ s a -> s{_lhRoleARN = a});
+
+-- | The state of the EC2 instance to which you want to attach the lifecycle
+-- hook. For a list of lifecycle hook types, see
+-- DescribeLifecycleHookTypes.
+lhLifecycleTransition :: Lens' LifecycleHook (Maybe Text)
+lhLifecycleTransition = lens _lhLifecycleTransition (\ s a -> s{_lhLifecycleTransition = a});
+
+-- | The ARN of the notification target that Auto Scaling uses to notify you
+-- when an instance is in the transition state for the lifecycle hook. This
+-- ARN target can be either an SQS queue or an SNS topic. The notification
+-- message sent to the target includes the following:
+--
+-- -   Lifecycle action token
+-- -   User account ID
+-- -   Name of the Auto Scaling group
+-- -   Lifecycle hook name
+-- -   EC2 instance ID
+-- -   Lifecycle transition
+-- -   Notification metadata
+lhNotificationTargetARN :: Lens' LifecycleHook (Maybe Text)
+lhNotificationTargetARN = lens _lhNotificationTargetARN (\ s a -> s{_lhNotificationTargetARN = a});
+
+instance FromXML LifecycleHook where
+        parseXML x
+          = LifecycleHook' <$>
+              (x .@? "DefaultResult") <*>
+                (x .@? "LifecycleHookName")
+                <*> (x .@? "HeartbeatTimeout")
+                <*> (x .@? "AutoScalingGroupName")
+                <*> (x .@? "NotificationMetadata")
+                <*> (x .@? "GlobalTimeout")
+                <*> (x .@? "RoleARN")
+                <*> (x .@? "LifecycleTransition")
+                <*> (x .@? "NotificationTargetARN")
+
+-- | Describes the state of a load balancer.
+--
+-- /See:/ 'loadBalancerState' smart constructor.
+data LoadBalancerState = LoadBalancerState'
+    { _lbsState            :: !(Maybe Text)
+    , _lbsLoadBalancerName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LoadBalancerState' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lbsState'
+--
+-- * 'lbsLoadBalancerName'
+loadBalancerState
+    :: LoadBalancerState
+loadBalancerState =
+    LoadBalancerState'
+    { _lbsState = Nothing
+    , _lbsLoadBalancerName = Nothing
+    }
+
+-- | The state of the load balancer.
+--
+-- -   'Adding' - The instances in the group are being registered with the
+--     load balancer.
+--
+-- -   'Added' - All instances in the group are registered with the load
+--     balancer.
+--
+-- -   'InService' - At least one instance in the group passed an ELB
+--     health check.
+--
+-- -   'Removing' - The instances are being deregistered from the load
+--     balancer. If connection draining is enabled, Elastic Load Balancing
+--     waits for in-flight requests to complete before deregistering the
+--     instances.
+--
+lbsState :: Lens' LoadBalancerState (Maybe Text)
+lbsState = lens _lbsState (\ s a -> s{_lbsState = a});
+
+-- | The name of the load balancer.
+lbsLoadBalancerName :: Lens' LoadBalancerState (Maybe Text)
+lbsLoadBalancerName = lens _lbsLoadBalancerName (\ s a -> s{_lbsLoadBalancerName = a});
+
+instance FromXML LoadBalancerState where
+        parseXML x
+          = LoadBalancerState' <$>
+              (x .@? "State") <*> (x .@? "LoadBalancerName")
+
+-- | Describes a metric.
+--
+-- /See:/ 'metricCollectionType' smart constructor.
+newtype MetricCollectionType = MetricCollectionType'
+    { _mctMetric :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MetricCollectionType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mctMetric'
+metricCollectionType
+    :: MetricCollectionType
+metricCollectionType =
+    MetricCollectionType'
+    { _mctMetric = Nothing
+    }
+
+-- | The metric.
+--
+-- -   'GroupMinSize'
+--
+-- -   'GroupMaxSize'
+--
+-- -   'GroupDesiredCapacity'
+--
+-- -   'GroupInServiceInstances'
+--
+-- -   'GroupPendingInstances'
+--
+-- -   'GroupStandbyInstances'
+--
+-- -   'GroupTerminatingInstances'
+--
+-- -   'GroupTotalInstances'
+--
+mctMetric :: Lens' MetricCollectionType (Maybe Text)
+mctMetric = lens _mctMetric (\ s a -> s{_mctMetric = a});
+
+instance FromXML MetricCollectionType where
+        parseXML x
+          = MetricCollectionType' <$> (x .@? "Metric")
+
+-- | Describes a granularity of a metric.
+--
+-- /See:/ 'metricGranularityType' smart constructor.
+newtype MetricGranularityType = MetricGranularityType'
+    { _mgtGranularity :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MetricGranularityType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mgtGranularity'
+metricGranularityType
+    :: MetricGranularityType
+metricGranularityType =
+    MetricGranularityType'
+    { _mgtGranularity = Nothing
+    }
+
+-- | The granularity. The only valid value is '1Minute'.
+mgtGranularity :: Lens' MetricGranularityType (Maybe Text)
+mgtGranularity = lens _mgtGranularity (\ s a -> s{_mgtGranularity = a});
+
+instance FromXML MetricGranularityType where
+        parseXML x
+          = MetricGranularityType' <$> (x .@? "Granularity")
+
+-- | Describes a notification.
+--
+-- /See:/ 'notificationConfiguration' smart constructor.
+data NotificationConfiguration = NotificationConfiguration'
+    { _ncTopicARN             :: !(Maybe Text)
+    , _ncAutoScalingGroupName :: !(Maybe Text)
+    , _ncNotificationType     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NotificationConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ncTopicARN'
+--
+-- * 'ncAutoScalingGroupName'
+--
+-- * 'ncNotificationType'
+notificationConfiguration
+    :: NotificationConfiguration
+notificationConfiguration =
+    NotificationConfiguration'
+    { _ncTopicARN = Nothing
+    , _ncAutoScalingGroupName = Nothing
+    , _ncNotificationType = Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
+-- (SNS) topic.
+ncTopicARN :: Lens' NotificationConfiguration (Maybe Text)
+ncTopicARN = lens _ncTopicARN (\ s a -> s{_ncTopicARN = a});
+
+-- | The name of the group.
+ncAutoScalingGroupName :: Lens' NotificationConfiguration (Maybe Text)
+ncAutoScalingGroupName = lens _ncAutoScalingGroupName (\ s a -> s{_ncAutoScalingGroupName = a});
+
+-- | The types of events for an action to start.
+--
+-- -   'autoscaling:EC2_INSTANCE_LAUNCH'
+--
+-- -   'autoscaling:EC2_INSTANCE_LAUNCH_ERROR'
+--
+-- -   'autoscaling:EC2_INSTANCE_TERMINATE'
+--
+-- -   'autoscaling:EC2_INSTANCE_TERMINATE_ERROR'
+--
+-- -   'autoscaling:TEST_NOTIFICATION'
+--
+ncNotificationType :: Lens' NotificationConfiguration (Maybe Text)
+ncNotificationType = lens _ncNotificationType (\ s a -> s{_ncNotificationType = a});
+
+instance FromXML NotificationConfiguration where
+        parseXML x
+          = NotificationConfiguration' <$>
+              (x .@? "TopicARN") <*> (x .@? "AutoScalingGroupName")
+                <*> (x .@? "NotificationType")
+
+-- | Describes a process type.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/US_SuspendResume.html#process-types Auto Scaling Processes>
+-- in the /Auto Scaling Developer Guide/.
+--
+-- /See:/ 'processType' smart constructor.
+newtype ProcessType = ProcessType'
+    { _ptProcessName :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProcessType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ptProcessName'
+processType
+    :: Text -- ^ 'ptProcessName'
+    -> ProcessType
+processType pProcessName_ =
+    ProcessType'
+    { _ptProcessName = pProcessName_
+    }
+
+-- | The name of the process.
+--
+-- -   'Launch'
+--
+-- -   'Terminate'
+--
+-- -   'AddToLoadBalancer'
+--
+-- -   'AlarmNotification'
+--
+-- -   'AZRebalance'
+--
+-- -   'HealthCheck'
+--
+-- -   'ReplaceUnhealthy'
+--
+-- -   'ScheduledActions'
+--
+ptProcessName :: Lens' ProcessType Text
+ptProcessName = lens _ptProcessName (\ s a -> s{_ptProcessName = a});
+
+instance FromXML ProcessType where
+        parseXML x = ProcessType' <$> (x .@ "ProcessName")
+
+-- | Describes a scaling policy.
+--
+-- /See:/ 'scalingPolicy' smart constructor.
+data ScalingPolicy = ScalingPolicy'
+    { _sEstimatedInstanceWarmup :: !(Maybe Int)
+    , _sMinAdjustmentStep       :: !(Maybe Int)
+    , _sPolicyName              :: !(Maybe Text)
+    , _sPolicyType              :: !(Maybe Text)
+    , _sStepAdjustments         :: !(Maybe [StepAdjustment])
+    , _sAdjustmentType          :: !(Maybe Text)
+    , _sScalingAdjustment       :: !(Maybe Int)
+    , _sAutoScalingGroupName    :: !(Maybe Text)
+    , _sCooldown                :: !(Maybe Int)
+    , _sPolicyARN               :: !(Maybe Text)
+    , _sAlarms                  :: !(Maybe [Alarm])
+    , _sMetricAggregationType   :: !(Maybe Text)
+    , _sMinAdjustmentMagnitude  :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ScalingPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sEstimatedInstanceWarmup'
+--
+-- * 'sMinAdjustmentStep'
+--
+-- * 'sPolicyName'
+--
+-- * 'sPolicyType'
+--
+-- * 'sStepAdjustments'
+--
+-- * 'sAdjustmentType'
+--
+-- * 'sScalingAdjustment'
+--
+-- * 'sAutoScalingGroupName'
+--
+-- * 'sCooldown'
+--
+-- * 'sPolicyARN'
+--
+-- * 'sAlarms'
+--
+-- * 'sMetricAggregationType'
+--
+-- * 'sMinAdjustmentMagnitude'
+scalingPolicy
+    :: ScalingPolicy
+scalingPolicy =
+    ScalingPolicy'
+    { _sEstimatedInstanceWarmup = Nothing
+    , _sMinAdjustmentStep = Nothing
+    , _sPolicyName = Nothing
+    , _sPolicyType = Nothing
+    , _sStepAdjustments = Nothing
+    , _sAdjustmentType = Nothing
+    , _sScalingAdjustment = Nothing
+    , _sAutoScalingGroupName = Nothing
+    , _sCooldown = Nothing
+    , _sPolicyARN = Nothing
+    , _sAlarms = Nothing
+    , _sMetricAggregationType = Nothing
+    , _sMinAdjustmentMagnitude = Nothing
+    }
+
+-- | The estimated time, in seconds, until a newly launched instance can
+-- contribute to the CloudWatch metrics.
+sEstimatedInstanceWarmup :: Lens' ScalingPolicy (Maybe Int)
+sEstimatedInstanceWarmup = lens _sEstimatedInstanceWarmup (\ s a -> s{_sEstimatedInstanceWarmup = a});
+
+-- | Available for backward compatibility. Use 'MinAdjustmentMagnitude'
+-- instead.
+sMinAdjustmentStep :: Lens' ScalingPolicy (Maybe Int)
+sMinAdjustmentStep = lens _sMinAdjustmentStep (\ s a -> s{_sMinAdjustmentStep = a});
+
+-- | The name of the scaling policy.
+sPolicyName :: Lens' ScalingPolicy (Maybe Text)
+sPolicyName = lens _sPolicyName (\ s a -> s{_sPolicyName = a});
+
+-- | The policy type. Valid values are 'SimpleScaling' and 'StepScaling'.
+sPolicyType :: Lens' ScalingPolicy (Maybe Text)
+sPolicyType = lens _sPolicyType (\ s a -> s{_sPolicyType = a});
+
+-- | A set of adjustments that enable you to scale based on the size of the
+-- alarm breach.
+sStepAdjustments :: Lens' ScalingPolicy [StepAdjustment]
+sStepAdjustments = lens _sStepAdjustments (\ s a -> s{_sStepAdjustments = a}) . _Default . _Coerce;
+
+-- | The adjustment type, which specifies how 'ScalingAdjustment' is
+-- interpreted. Valid values are 'ChangeInCapacity', 'ExactCapacity', and
+-- 'PercentChangeInCapacity'.
+sAdjustmentType :: Lens' ScalingPolicy (Maybe Text)
+sAdjustmentType = lens _sAdjustmentType (\ s a -> s{_sAdjustmentType = a});
+
+-- | The amount by which to scale, based on the specified adjustment type. A
+-- positive value adds to the current capacity while a negative number
+-- removes from the current capacity.
+sScalingAdjustment :: Lens' ScalingPolicy (Maybe Int)
+sScalingAdjustment = lens _sScalingAdjustment (\ s a -> s{_sScalingAdjustment = a});
+
+-- | The name of the Auto Scaling group associated with this scaling policy.
+sAutoScalingGroupName :: Lens' ScalingPolicy (Maybe Text)
+sAutoScalingGroupName = lens _sAutoScalingGroupName (\ s a -> s{_sAutoScalingGroupName = a});
+
+-- | The amount of time, in seconds, after a scaling activity completes
+-- before any further trigger-related scaling activities can start.
+sCooldown :: Lens' ScalingPolicy (Maybe Int)
+sCooldown = lens _sCooldown (\ s a -> s{_sCooldown = a});
+
+-- | The Amazon Resource Name (ARN) of the policy.
+sPolicyARN :: Lens' ScalingPolicy (Maybe Text)
+sPolicyARN = lens _sPolicyARN (\ s a -> s{_sPolicyARN = a});
+
+-- | The CloudWatch alarms related to the policy.
+sAlarms :: Lens' ScalingPolicy [Alarm]
+sAlarms = lens _sAlarms (\ s a -> s{_sAlarms = a}) . _Default . _Coerce;
+
+-- | The aggregation type for the CloudWatch metrics. Valid values are
+-- 'Minimum', 'Maximum', and 'Average'.
+sMetricAggregationType :: Lens' ScalingPolicy (Maybe Text)
+sMetricAggregationType = lens _sMetricAggregationType (\ s a -> s{_sMetricAggregationType = a});
+
+-- | The minimum number of instances to scale. If the value of
+-- 'AdjustmentType' is 'PercentChangeInCapacity', the scaling policy
+-- changes the 'DesiredCapacity' of the Auto Scaling group by at least this
+-- many instances. Otherwise, the error is 'ValidationError'.
+sMinAdjustmentMagnitude :: Lens' ScalingPolicy (Maybe Int)
+sMinAdjustmentMagnitude = lens _sMinAdjustmentMagnitude (\ s a -> s{_sMinAdjustmentMagnitude = a});
+
+instance FromXML ScalingPolicy where
+        parseXML x
+          = ScalingPolicy' <$>
+              (x .@? "EstimatedInstanceWarmup") <*>
+                (x .@? "MinAdjustmentStep")
+                <*> (x .@? "PolicyName")
+                <*> (x .@? "PolicyType")
+                <*>
+                (x .@? "StepAdjustments" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "AdjustmentType")
+                <*> (x .@? "ScalingAdjustment")
+                <*> (x .@? "AutoScalingGroupName")
+                <*> (x .@? "Cooldown")
+                <*> (x .@? "PolicyARN")
+                <*>
+                (x .@? "Alarms" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "MetricAggregationType")
+                <*> (x .@? "MinAdjustmentMagnitude")
+
+-- | /See:/ 'scalingProcessQuery' smart constructor.
+data ScalingProcessQuery = ScalingProcessQuery'
+    { _spqScalingProcesses     :: !(Maybe [Text])
+    , _spqAutoScalingGroupName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ScalingProcessQuery' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spqScalingProcesses'
+--
+-- * 'spqAutoScalingGroupName'
+scalingProcessQuery
+    :: Text -- ^ 'spqAutoScalingGroupName'
+    -> ScalingProcessQuery
+scalingProcessQuery pAutoScalingGroupName_ =
+    ScalingProcessQuery'
+    { _spqScalingProcesses = Nothing
+    , _spqAutoScalingGroupName = pAutoScalingGroupName_
+    }
+
+-- | One or more of the following processes:
+--
+-- -   'Launch'
+--
+-- -   'Terminate'
+--
+-- -   'HealthCheck'
+--
+-- -   'ReplaceUnhealthy'
+--
+-- -   'AZRebalance'
+--
+-- -   'AlarmNotification'
+--
+-- -   'ScheduledActions'
+--
+-- -   'AddToLoadBalancer'
+--
+spqScalingProcesses :: Lens' ScalingProcessQuery [Text]
+spqScalingProcesses = lens _spqScalingProcesses (\ s a -> s{_spqScalingProcesses = a}) . _Default . _Coerce;
+
+-- | The name or Amazon Resource Name (ARN) of the Auto Scaling group.
+spqAutoScalingGroupName :: Lens' ScalingProcessQuery Text
+spqAutoScalingGroupName = lens _spqAutoScalingGroupName (\ s a -> s{_spqAutoScalingGroupName = a});
+
+instance ToQuery ScalingProcessQuery where
+        toQuery ScalingProcessQuery'{..}
+          = mconcat
+              ["ScalingProcesses" =:
+                 toQuery
+                   (toQueryList "member" <$> _spqScalingProcesses),
+               "AutoScalingGroupName" =: _spqAutoScalingGroupName]
+
+-- | Describes a scheduled update to an Auto Scaling group.
+--
+-- /See:/ 'scheduledUpdateGroupAction' smart constructor.
+data ScheduledUpdateGroupAction = ScheduledUpdateGroupAction'
+    { _sugaScheduledActionARN   :: !(Maybe Text)
+    , _sugaTime                 :: !(Maybe ISO8601)
+    , _sugaStartTime            :: !(Maybe ISO8601)
+    , _sugaScheduledActionName  :: !(Maybe Text)
+    , _sugaMaxSize              :: !(Maybe Int)
+    , _sugaDesiredCapacity      :: !(Maybe Int)
+    , _sugaRecurrence           :: !(Maybe Text)
+    , _sugaMinSize              :: !(Maybe Int)
+    , _sugaEndTime              :: !(Maybe ISO8601)
+    , _sugaAutoScalingGroupName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ScheduledUpdateGroupAction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sugaScheduledActionARN'
+--
+-- * 'sugaTime'
+--
+-- * 'sugaStartTime'
+--
+-- * 'sugaScheduledActionName'
+--
+-- * 'sugaMaxSize'
+--
+-- * 'sugaDesiredCapacity'
+--
+-- * 'sugaRecurrence'
+--
+-- * 'sugaMinSize'
+--
+-- * 'sugaEndTime'
+--
+-- * 'sugaAutoScalingGroupName'
+scheduledUpdateGroupAction
+    :: ScheduledUpdateGroupAction
+scheduledUpdateGroupAction =
+    ScheduledUpdateGroupAction'
+    { _sugaScheduledActionARN = Nothing
+    , _sugaTime = Nothing
+    , _sugaStartTime = Nothing
+    , _sugaScheduledActionName = Nothing
+    , _sugaMaxSize = Nothing
+    , _sugaDesiredCapacity = Nothing
+    , _sugaRecurrence = Nothing
+    , _sugaMinSize = Nothing
+    , _sugaEndTime = Nothing
+    , _sugaAutoScalingGroupName = Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the scheduled action.
+sugaScheduledActionARN :: Lens' ScheduledUpdateGroupAction (Maybe Text)
+sugaScheduledActionARN = lens _sugaScheduledActionARN (\ s a -> s{_sugaScheduledActionARN = a});
+
+-- | This parameter is deprecated; use 'StartTime' instead.
+sugaTime :: Lens' ScheduledUpdateGroupAction (Maybe UTCTime)
+sugaTime = lens _sugaTime (\ s a -> s{_sugaTime = a}) . mapping _Time;
+
+-- | The date and time that the action is scheduled to begin. This date and
+-- time can be up to one month in the future.
+--
+-- When 'StartTime' and 'EndTime' are specified with 'Recurrence', they
+-- form the boundaries of when the recurring action will start and stop.
+sugaStartTime :: Lens' ScheduledUpdateGroupAction (Maybe UTCTime)
+sugaStartTime = lens _sugaStartTime (\ s a -> s{_sugaStartTime = a}) . mapping _Time;
+
+-- | The name of the scheduled action.
+sugaScheduledActionName :: Lens' ScheduledUpdateGroupAction (Maybe Text)
+sugaScheduledActionName = lens _sugaScheduledActionName (\ s a -> s{_sugaScheduledActionName = a});
+
+-- | The maximum size of the group.
+sugaMaxSize :: Lens' ScheduledUpdateGroupAction (Maybe Int)
+sugaMaxSize = lens _sugaMaxSize (\ s a -> s{_sugaMaxSize = a});
+
+-- | The number of instances you prefer to maintain in the group.
+sugaDesiredCapacity :: Lens' ScheduledUpdateGroupAction (Maybe Int)
+sugaDesiredCapacity = lens _sugaDesiredCapacity (\ s a -> s{_sugaDesiredCapacity = a});
+
+-- | The recurring schedule for the action.
+sugaRecurrence :: Lens' ScheduledUpdateGroupAction (Maybe Text)
+sugaRecurrence = lens _sugaRecurrence (\ s a -> s{_sugaRecurrence = a});
+
+-- | The minimum size of the group.
+sugaMinSize :: Lens' ScheduledUpdateGroupAction (Maybe Int)
+sugaMinSize = lens _sugaMinSize (\ s a -> s{_sugaMinSize = a});
+
+-- | The date and time that the action is scheduled to end. This date and
+-- time can be up to one month in the future.
+sugaEndTime :: Lens' ScheduledUpdateGroupAction (Maybe UTCTime)
+sugaEndTime = lens _sugaEndTime (\ s a -> s{_sugaEndTime = a}) . mapping _Time;
+
+-- | The name of the group.
+sugaAutoScalingGroupName :: Lens' ScheduledUpdateGroupAction (Maybe Text)
+sugaAutoScalingGroupName = lens _sugaAutoScalingGroupName (\ s a -> s{_sugaAutoScalingGroupName = a});
+
+instance FromXML ScheduledUpdateGroupAction where
+        parseXML x
+          = ScheduledUpdateGroupAction' <$>
+              (x .@? "ScheduledActionARN") <*> (x .@? "Time") <*>
+                (x .@? "StartTime")
+                <*> (x .@? "ScheduledActionName")
+                <*> (x .@? "MaxSize")
+                <*> (x .@? "DesiredCapacity")
+                <*> (x .@? "Recurrence")
+                <*> (x .@? "MinSize")
+                <*> (x .@? "EndTime")
+                <*> (x .@? "AutoScalingGroupName")
+
+-- | Describes an adjustment based on the difference between the value of the
+-- aggregated CloudWatch metric and the breach threshold that you\'ve
+-- defined for the alarm.
+--
+-- For the following examples, suppose that you have an alarm with a breach
+-- threshold of 50:
+--
+-- -   If you want the adjustment to be triggered when the metric is
+--     greater than or equal to 50 and less than 60, specify a lower bound
+--     of 0 and an upper bound of 10.
+--
+-- -   If you want the adjustment to be triggered when the metric is
+--     greater than 40 and less than or equal to 50, specify a lower bound
+--     of -10 and an upper bound of 0.
+--
+-- There are a few rules for the step adjustments for your step policy:
+--
+-- -   The ranges of your step adjustments can\'t overlap or have a gap.
+--
+-- -   At most one step adjustment can have a null lower bound. If one step
+--     adjustment has a negative lower bound, then there must be a step
+--     adjustment with a null lower bound.
+--
+-- -   At most one step adjustment can have a null upper bound. If one step
+--     adjustment has a positive upper bound, then there must be a step
+--     adjustment with a null upper bound.
+--
+-- -   The upper and lower bound can\'t be null in the same step
+--     adjustment.
+--
+--
+-- /See:/ 'stepAdjustment' smart constructor.
+data StepAdjustment = StepAdjustment'
+    { _saMetricIntervalLowerBound :: !(Maybe Double)
+    , _saMetricIntervalUpperBound :: !(Maybe Double)
+    , _saScalingAdjustment        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StepAdjustment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'saMetricIntervalLowerBound'
+--
+-- * 'saMetricIntervalUpperBound'
+--
+-- * 'saScalingAdjustment'
+stepAdjustment
+    :: Int -- ^ 'saScalingAdjustment'
+    -> StepAdjustment
+stepAdjustment pScalingAdjustment_ =
+    StepAdjustment'
+    { _saMetricIntervalLowerBound = Nothing
+    , _saMetricIntervalUpperBound = Nothing
+    , _saScalingAdjustment = pScalingAdjustment_
+    }
+
+-- | The lower bound for the difference between the alarm threshold and the
+-- CloudWatch metric. If the metric value is above the breach threshold,
+-- the lower bound is inclusive (the metric must be greater than or equal
+-- to the threshold plus the lower bound). Otherwise, it is exclusive (the
+-- metric must be greater than the threshold plus the lower bound). A null
+-- value indicates negative infinity.
+saMetricIntervalLowerBound :: Lens' StepAdjustment (Maybe Double)
+saMetricIntervalLowerBound = lens _saMetricIntervalLowerBound (\ s a -> s{_saMetricIntervalLowerBound = a});
+
+-- | The upper bound for the difference between the alarm threshold and the
+-- CloudWatch metric. If the metric value is above the breach threshold,
+-- the upper bound is exclusive (the metric must be less than the threshold
+-- plus the upper bound). Otherwise, it is inclusive (the metric must be
+-- less than or equal to the threshold plus the upper bound). A null value
+-- indicates positive infinity.
+--
+-- The upper bound must be greater than the lower bound.
+saMetricIntervalUpperBound :: Lens' StepAdjustment (Maybe Double)
+saMetricIntervalUpperBound = lens _saMetricIntervalUpperBound (\ s a -> s{_saMetricIntervalUpperBound = a});
+
+-- | The amount by which to scale, based on the specified adjustment type. A
+-- positive value adds to the current capacity while a negative number
+-- removes from the current capacity.
+saScalingAdjustment :: Lens' StepAdjustment Int
+saScalingAdjustment = lens _saScalingAdjustment (\ s a -> s{_saScalingAdjustment = a});
+
+instance FromXML StepAdjustment where
+        parseXML x
+          = StepAdjustment' <$>
+              (x .@? "MetricIntervalLowerBound") <*>
+                (x .@? "MetricIntervalUpperBound")
+                <*> (x .@ "ScalingAdjustment")
+
+instance ToQuery StepAdjustment where
+        toQuery StepAdjustment'{..}
+          = mconcat
+              ["MetricIntervalLowerBound" =:
+                 _saMetricIntervalLowerBound,
+               "MetricIntervalUpperBound" =:
+                 _saMetricIntervalUpperBound,
+               "ScalingAdjustment" =: _saScalingAdjustment]
+
+-- | Describes an Auto Scaling process that has been suspended. For more
+-- information, see ProcessType.
+--
+-- /See:/ 'suspendedProcess' smart constructor.
+data SuspendedProcess = SuspendedProcess'
+    { _spProcessName      :: !(Maybe Text)
+    , _spSuspensionReason :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SuspendedProcess' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spProcessName'
+--
+-- * 'spSuspensionReason'
+suspendedProcess
+    :: SuspendedProcess
+suspendedProcess =
+    SuspendedProcess'
+    { _spProcessName = Nothing
+    , _spSuspensionReason = Nothing
+    }
+
+-- | The name of the suspended process.
+spProcessName :: Lens' SuspendedProcess (Maybe Text)
+spProcessName = lens _spProcessName (\ s a -> s{_spProcessName = a});
+
+-- | The reason that the process was suspended.
+spSuspensionReason :: Lens' SuspendedProcess (Maybe Text)
+spSuspensionReason = lens _spSuspensionReason (\ s a -> s{_spSuspensionReason = a});
+
+instance FromXML SuspendedProcess where
+        parseXML x
+          = SuspendedProcess' <$>
+              (x .@? "ProcessName") <*> (x .@? "SuspensionReason")
+
+-- | Describes a tag for an Auto Scaling group.
+--
+-- /See:/ 'tag' smart constructor.
+data Tag = Tag'
+    { _tagKey               :: !Text
+    , _tagResourceId        :: !Text
+    , _tagResourceType      :: !Text
+    , _tagPropagateAtLaunch :: !Bool
+    , _tagValue             :: !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:
+--
+-- * 'tagKey'
+--
+-- * 'tagResourceId'
+--
+-- * 'tagResourceType'
+--
+-- * 'tagPropagateAtLaunch'
+--
+-- * 'tagValue'
+tag
+    :: Text -- ^ 'tagKey'
+    -> Text -- ^ 'tagResourceId'
+    -> Text -- ^ 'tagResourceType'
+    -> Bool -- ^ 'tagPropagateAtLaunch'
+    -> Text -- ^ 'tagValue'
+    -> Tag
+tag pKey_ pResourceId_ pResourceType_ pPropagateAtLaunch_ pValue_ =
+    Tag'
+    { _tagKey = pKey_
+    , _tagResourceId = pResourceId_
+    , _tagResourceType = pResourceType_
+    , _tagPropagateAtLaunch = pPropagateAtLaunch_
+    , _tagValue = pValue_
+    }
+
+-- | The tag key.
+tagKey :: Lens' Tag Text
+tagKey = lens _tagKey (\ s a -> s{_tagKey = a});
+
+-- | The name of the group.
+tagResourceId :: Lens' Tag Text
+tagResourceId = lens _tagResourceId (\ s a -> s{_tagResourceId = a});
+
+-- | The type of resource. The only supported value is 'auto-scaling-group'.
+tagResourceType :: Lens' Tag Text
+tagResourceType = lens _tagResourceType (\ s a -> s{_tagResourceType = a});
+
+-- | Determines whether the tag is added to new instances as they are
+-- launched in the group.
+tagPropagateAtLaunch :: Lens' Tag Bool
+tagPropagateAtLaunch = lens _tagPropagateAtLaunch (\ s a -> s{_tagPropagateAtLaunch = a});
+
+-- | The tag value.
+tagValue :: Lens' Tag Text
+tagValue = lens _tagValue (\ s a -> s{_tagValue = a});
+
+instance ToQuery Tag where
+        toQuery Tag'{..}
+          = mconcat
+              ["Key" =: _tagKey, "ResourceId" =: _tagResourceId,
+               "ResourceType" =: _tagResourceType,
+               "PropagateAtLaunch" =: _tagPropagateAtLaunch,
+               "Value" =: _tagValue]
+
+-- | Describes a tag for an Auto Scaling group.
+--
+-- /See:/ 'tagDescription' smart constructor.
+data TagDescription = TagDescription'
+    { _tdResourceId        :: !Text
+    , _tdResourceType      :: !Text
+    , _tdKey               :: !Text
+    , _tdPropagateAtLaunch :: !Bool
+    , _tdValue             :: !Text
+    } 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:
+--
+-- * 'tdResourceId'
+--
+-- * 'tdResourceType'
+--
+-- * 'tdKey'
+--
+-- * 'tdPropagateAtLaunch'
+--
+-- * 'tdValue'
+tagDescription
+    :: Text -- ^ 'tdResourceId'
+    -> Text -- ^ 'tdResourceType'
+    -> Text -- ^ 'tdKey'
+    -> Bool -- ^ 'tdPropagateAtLaunch'
+    -> Text -- ^ 'tdValue'
+    -> TagDescription
+tagDescription pResourceId_ pResourceType_ pKey_ pPropagateAtLaunch_ pValue_ =
+    TagDescription'
+    { _tdResourceId = pResourceId_
+    , _tdResourceType = pResourceType_
+    , _tdKey = pKey_
+    , _tdPropagateAtLaunch = pPropagateAtLaunch_
+    , _tdValue = pValue_
+    }
+
+-- | The name of the group.
+tdResourceId :: Lens' TagDescription Text
+tdResourceId = lens _tdResourceId (\ s a -> s{_tdResourceId = a});
+
+-- | The type of resource. The only supported value is 'auto-scaling-group'.
+tdResourceType :: Lens' TagDescription Text
+tdResourceType = lens _tdResourceType (\ s a -> s{_tdResourceType = a});
+
+-- | The tag key.
+tdKey :: Lens' TagDescription Text
+tdKey = lens _tdKey (\ s a -> s{_tdKey = a});
+
+-- | Determines whether the tag is added to new instances as they are
+-- launched in the group.
+tdPropagateAtLaunch :: Lens' TagDescription Bool
+tdPropagateAtLaunch = lens _tdPropagateAtLaunch (\ s a -> s{_tdPropagateAtLaunch = a});
+
+-- | The tag value.
+tdValue :: Lens' TagDescription Text
+tdValue = lens _tdValue (\ s a -> s{_tdValue = a});
+
+instance FromXML TagDescription where
+        parseXML x
+          = TagDescription' <$>
+              (x .@ "ResourceId") <*> (x .@ "ResourceType") <*>
+                (x .@ "Key")
+                <*> (x .@ "PropagateAtLaunch")
+                <*> (x .@ "Value")
diff --git a/gen/Network/AWS/AutoScaling/Types/Sum.hs b/gen/Network/AWS/AutoScaling/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AutoScaling/Types/Sum.hs
@@ -0,0 +1,130 @@
+{-# 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.AutoScaling.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.AutoScaling.Types.Sum where
+
+import           Network.AWS.Prelude
+
+data LifecycleState
+    = Detached
+    | Detaching
+    | EnteringStandby
+    | InService
+    | Pending
+    | PendingProceed
+    | PendingWait
+    | Quarantined
+    | Standby
+    | Terminated
+    | Terminating
+    | TerminatingProceed
+    | TerminatingWait
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText LifecycleState where
+    parser = takeLowerText >>= \case
+        "detached" -> pure Detached
+        "detaching" -> pure Detaching
+        "enteringstandby" -> pure EnteringStandby
+        "inservice" -> pure InService
+        "pending" -> pure Pending
+        "pending:proceed" -> pure PendingProceed
+        "pending:wait" -> pure PendingWait
+        "quarantined" -> pure Quarantined
+        "standby" -> pure Standby
+        "terminated" -> pure Terminated
+        "terminating" -> pure Terminating
+        "terminating:proceed" -> pure TerminatingProceed
+        "terminating:wait" -> pure TerminatingWait
+        e -> fromTextError $ "Failure parsing LifecycleState from value: '" <> e
+           <> "'. Accepted values: detached, detaching, enteringstandby, inservice, pending, pending:proceed, pending:wait, quarantined, standby, terminated, terminating, terminating:proceed, terminating:wait"
+
+instance ToText LifecycleState where
+    toText = \case
+        Detached -> "detached"
+        Detaching -> "detaching"
+        EnteringStandby -> "enteringstandby"
+        InService -> "inservice"
+        Pending -> "pending"
+        PendingProceed -> "pending:proceed"
+        PendingWait -> "pending:wait"
+        Quarantined -> "quarantined"
+        Standby -> "standby"
+        Terminated -> "terminated"
+        Terminating -> "terminating"
+        TerminatingProceed -> "terminating:proceed"
+        TerminatingWait -> "terminating:wait"
+
+instance Hashable     LifecycleState
+instance ToByteString LifecycleState
+instance ToQuery      LifecycleState
+instance ToHeader     LifecycleState
+
+instance FromXML LifecycleState where
+    parseXML = parseXMLText "LifecycleState"
+
+data ScalingActivityStatusCode
+    = Cancelled
+    | Failed
+    | InProgress
+    | MidLifecycleAction
+    | PreInService
+    | Successful
+    | WaitingForELBConnectionDraining
+    | WaitingForInstanceId
+    | WaitingForInstanceWarmup
+    | WaitingForSpotInstanceId
+    | WaitingForSpotInstanceRequestId
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText ScalingActivityStatusCode where
+    parser = takeLowerText >>= \case
+        "cancelled" -> pure Cancelled
+        "failed" -> pure Failed
+        "inprogress" -> pure InProgress
+        "midlifecycleaction" -> pure MidLifecycleAction
+        "preinservice" -> pure PreInService
+        "successful" -> pure Successful
+        "waitingforelbconnectiondraining" -> pure WaitingForELBConnectionDraining
+        "waitingforinstanceid" -> pure WaitingForInstanceId
+        "waitingforinstancewarmup" -> pure WaitingForInstanceWarmup
+        "waitingforspotinstanceid" -> pure WaitingForSpotInstanceId
+        "waitingforspotinstancerequestid" -> pure WaitingForSpotInstanceRequestId
+        e -> fromTextError $ "Failure parsing ScalingActivityStatusCode from value: '" <> e
+           <> "'. Accepted values: cancelled, failed, inprogress, midlifecycleaction, preinservice, successful, waitingforelbconnectiondraining, waitingforinstanceid, waitingforinstancewarmup, waitingforspotinstanceid, waitingforspotinstancerequestid"
+
+instance ToText ScalingActivityStatusCode where
+    toText = \case
+        Cancelled -> "cancelled"
+        Failed -> "failed"
+        InProgress -> "inprogress"
+        MidLifecycleAction -> "midlifecycleaction"
+        PreInService -> "preinservice"
+        Successful -> "successful"
+        WaitingForELBConnectionDraining -> "waitingforelbconnectiondraining"
+        WaitingForInstanceId -> "waitingforinstanceid"
+        WaitingForInstanceWarmup -> "waitingforinstancewarmup"
+        WaitingForSpotInstanceId -> "waitingforspotinstanceid"
+        WaitingForSpotInstanceRequestId -> "waitingforspotinstancerequestid"
+
+instance Hashable     ScalingActivityStatusCode
+instance ToByteString ScalingActivityStatusCode
+instance ToQuery      ScalingActivityStatusCode
+instance ToHeader     ScalingActivityStatusCode
+
+instance FromXML ScalingActivityStatusCode where
+    parseXML = parseXMLText "ScalingActivityStatusCode"
diff --git a/gen/Network/AWS/AutoScaling/UpdateAutoScalingGroup.hs b/gen/Network/AWS/AutoScaling/UpdateAutoScalingGroup.hs
--- a/gen/Network/AWS/AutoScaling/UpdateAutoScalingGroup.hs
+++ b/gen/Network/AWS/AutoScaling/UpdateAutoScalingGroup.hs
@@ -1,258 +1,264 @@
-{-# 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.AutoScaling.UpdateAutoScalingGroup
--- 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.
-
--- | Updates the configuration for the specified 'AutoScalingGroup'.
+-- Updates the configuration for the specified Auto Scaling group.
 --
--- To update an Auto Scaling group with a launch configuration that has the 'InstanceMonitoring' flag set to 'False', you must first ensure that collection of group metrics is
--- disabled. Otherwise, calls to 'UpdateAutoScalingGroup' will fail. If you have
--- previously enabled group metrics collection, you can disable collection of
--- all group metrics by calling 'DisableMetricsCollection'.
+-- To update an Auto Scaling group with a launch configuration with
+-- 'InstanceMonitoring' set to 'False', you must first disable the
+-- collection of group metrics. Otherwise, you will get an error. If you
+-- have previously enabled the collection of group metrics, you can disable
+-- it using DisableMetricsCollection.
 --
 -- The new settings are registered upon the completion of this call. Any
--- launch configuration settings take effect on any triggers after this call
--- returns. Scaling activities that are currently in progress aren't affected.
+-- launch configuration settings take effect on any triggers after this
+-- call returns. Scaling activities that are currently in progress aren\'t
+-- affected.
 --
--- If a new value is specified for /MinSize/ without specifying the value for /DesiredCapacity/, and if the new /MinSize/ is larger than the current size of the Auto Scaling
--- group, there will be an implicit call to 'SetDesiredCapacity' to set the group
--- to the new /MinSize/.
+-- Note the following:
 --
--- If a new value is specified for /MaxSize/ without specifying the value for /DesiredCapacity/, and the new /MaxSize/ is smaller than the current size of the Auto Scaling
--- group, there will be an implicit call to 'SetDesiredCapacity' to set the group
--- to the new /MaxSize/.
+-- -   If you specify a new value for 'MinSize' without specifying a value
+--     for 'DesiredCapacity', and the new 'MinSize' is larger than the
+--     current size of the group, we implicitly call SetDesiredCapacity to
+--     set the size of the group to the new value of 'MinSize'.
 --
--- All other optional parameters are left unchanged if not passed in the
--- request.
+-- -   If you specify a new value for 'MaxSize' without specifying a value
+--     for 'DesiredCapacity', and the new 'MaxSize' is smaller than the
+--     current size of the group, we implicitly call SetDesiredCapacity to
+--     set the size of the group to the new value of 'MaxSize'.
 --
+-- -   All other optional parameters are left unchanged if not specified.
 --
 --
--- <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_UpdateAutoScalingGroup.html>
+-- /See:/ <http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_UpdateAutoScalingGroup.html AWS API Reference> for UpdateAutoScalingGroup.
 module Network.AWS.AutoScaling.UpdateAutoScalingGroup
     (
-    -- * Request
-      UpdateAutoScalingGroup
-    -- ** Request constructor
-    , updateAutoScalingGroup
-    -- ** Request lenses
-    , uasgAutoScalingGroupName
-    , uasgAvailabilityZones
+    -- * Creating a Request
+      updateAutoScalingGroup
+    , UpdateAutoScalingGroup
+    -- * Request Lenses
+    , uasgTerminationPolicies
+    , uasgHealthCheckGracePeriod
+    , uasgVPCZoneIdentifier
     , uasgDefaultCooldown
+    , uasgMaxSize
     , uasgDesiredCapacity
-    , uasgHealthCheckGracePeriod
+    , uasgAvailabilityZones
+    , uasgMinSize
     , uasgHealthCheckType
     , uasgLaunchConfigurationName
-    , uasgMaxSize
-    , uasgMinSize
     , uasgPlacementGroup
-    , uasgTerminationPolicies
-    , uasgVPCZoneIdentifier
+    , uasgAutoScalingGroupName
 
-    -- * Response
-    , UpdateAutoScalingGroupResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateAutoScalingGroupResponse
+    , UpdateAutoScalingGroupResponse
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.AutoScaling.Types
-import qualified GHC.Exts
+import           Network.AWS.AutoScaling.Types
+import           Network.AWS.AutoScaling.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data UpdateAutoScalingGroup = UpdateAutoScalingGroup
-    { _uasgAutoScalingGroupName    :: Text
-    , _uasgAvailabilityZones       :: List1 "member" Text
-    , _uasgDefaultCooldown         :: Maybe Int
-    , _uasgDesiredCapacity         :: Maybe Int
-    , _uasgHealthCheckGracePeriod  :: Maybe Int
-    , _uasgHealthCheckType         :: Maybe Text
-    , _uasgLaunchConfigurationName :: Maybe Text
-    , _uasgMaxSize                 :: Maybe Int
-    , _uasgMinSize                 :: Maybe Int
-    , _uasgPlacementGroup          :: Maybe Text
-    , _uasgTerminationPolicies     :: List "member" Text
-    , _uasgVPCZoneIdentifier       :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'updateAutoScalingGroup' smart constructor.
+data UpdateAutoScalingGroup = UpdateAutoScalingGroup'
+    { _uasgTerminationPolicies     :: !(Maybe [Text])
+    , _uasgHealthCheckGracePeriod  :: !(Maybe Int)
+    , _uasgVPCZoneIdentifier       :: !(Maybe Text)
+    , _uasgDefaultCooldown         :: !(Maybe Int)
+    , _uasgMaxSize                 :: !(Maybe Int)
+    , _uasgDesiredCapacity         :: !(Maybe Int)
+    , _uasgAvailabilityZones       :: !(Maybe (List1 Text))
+    , _uasgMinSize                 :: !(Maybe Int)
+    , _uasgHealthCheckType         :: !(Maybe Text)
+    , _uasgLaunchConfigurationName :: !(Maybe Text)
+    , _uasgPlacementGroup          :: !(Maybe Text)
+    , _uasgAutoScalingGroupName    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'UpdateAutoScalingGroup' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'UpdateAutoScalingGroup' with the minimum fields required to make a request.
 --
--- * 'uasgAutoScalingGroupName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'uasgAvailabilityZones' @::@ 'NonEmpty' 'Text'
+-- * 'uasgTerminationPolicies'
 --
--- * 'uasgDefaultCooldown' @::@ 'Maybe' 'Int'
+-- * 'uasgHealthCheckGracePeriod'
 --
--- * 'uasgDesiredCapacity' @::@ 'Maybe' 'Int'
+-- * 'uasgVPCZoneIdentifier'
 --
--- * 'uasgHealthCheckGracePeriod' @::@ 'Maybe' 'Int'
+-- * 'uasgDefaultCooldown'
 --
--- * 'uasgHealthCheckType' @::@ 'Maybe' 'Text'
+-- * 'uasgMaxSize'
 --
--- * 'uasgLaunchConfigurationName' @::@ 'Maybe' 'Text'
+-- * 'uasgDesiredCapacity'
 --
--- * 'uasgMaxSize' @::@ 'Maybe' 'Int'
+-- * 'uasgAvailabilityZones'
 --
--- * 'uasgMinSize' @::@ 'Maybe' 'Int'
+-- * 'uasgMinSize'
 --
--- * 'uasgPlacementGroup' @::@ 'Maybe' 'Text'
+-- * 'uasgHealthCheckType'
 --
--- * 'uasgTerminationPolicies' @::@ ['Text']
+-- * 'uasgLaunchConfigurationName'
 --
--- * 'uasgVPCZoneIdentifier' @::@ 'Maybe' 'Text'
+-- * 'uasgPlacementGroup'
 --
-updateAutoScalingGroup :: Text -- ^ 'uasgAutoScalingGroupName'
-                       -> NonEmpty Text -- ^ 'uasgAvailabilityZones'
-                       -> UpdateAutoScalingGroup
-updateAutoScalingGroup p1 p2 = UpdateAutoScalingGroup
-    { _uasgAutoScalingGroupName    = p1
-    , _uasgAvailabilityZones       = withIso _List1 (const id) p2
+-- * 'uasgAutoScalingGroupName'
+updateAutoScalingGroup
+    :: Text -- ^ 'uasgAutoScalingGroupName'
+    -> UpdateAutoScalingGroup
+updateAutoScalingGroup pAutoScalingGroupName_ =
+    UpdateAutoScalingGroup'
+    { _uasgTerminationPolicies = Nothing
+    , _uasgHealthCheckGracePeriod = Nothing
+    , _uasgVPCZoneIdentifier = Nothing
+    , _uasgDefaultCooldown = Nothing
+    , _uasgMaxSize = Nothing
+    , _uasgDesiredCapacity = Nothing
+    , _uasgAvailabilityZones = Nothing
+    , _uasgMinSize = Nothing
+    , _uasgHealthCheckType = Nothing
     , _uasgLaunchConfigurationName = Nothing
-    , _uasgMinSize                 = Nothing
-    , _uasgMaxSize                 = Nothing
-    , _uasgDesiredCapacity         = Nothing
-    , _uasgDefaultCooldown         = Nothing
-    , _uasgHealthCheckType         = Nothing
-    , _uasgHealthCheckGracePeriod  = Nothing
-    , _uasgPlacementGroup          = Nothing
-    , _uasgVPCZoneIdentifier       = Nothing
-    , _uasgTerminationPolicies     = mempty
+    , _uasgPlacementGroup = Nothing
+    , _uasgAutoScalingGroupName = pAutoScalingGroupName_
     }
 
--- | The name of the Auto Scaling group.
-uasgAutoScalingGroupName :: Lens' UpdateAutoScalingGroup Text
-uasgAutoScalingGroupName =
-    lens _uasgAutoScalingGroupName
-        (\s a -> s { _uasgAutoScalingGroupName = a })
+-- | A standalone termination policy or a list of termination policies used
+-- to select the instance to terminate. The policies are executed in the
+-- order that they are listed.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/us-termination-policy.html Choosing a Termination Policy for Your Auto Scaling Group>
+-- in the /Auto Scaling Developer Guide/.
+uasgTerminationPolicies :: Lens' UpdateAutoScalingGroup [Text]
+uasgTerminationPolicies = lens _uasgTerminationPolicies (\ s a -> s{_uasgTerminationPolicies = a}) . _Default . _Coerce;
 
--- | One or more Availability Zones for the group.
-uasgAvailabilityZones :: Lens' UpdateAutoScalingGroup (NonEmpty Text)
-uasgAvailabilityZones =
-    lens _uasgAvailabilityZones (\s a -> s { _uasgAvailabilityZones = a })
-        . _List1
+-- | The amount of time, in seconds, that Auto Scaling waits before checking
+-- the health status of an instance. The grace period begins when the
+-- instance passes the system status and instance status checks from Amazon
+-- EC2. For more information, see < >.
+uasgHealthCheckGracePeriod :: Lens' UpdateAutoScalingGroup (Maybe Int)
+uasgHealthCheckGracePeriod = lens _uasgHealthCheckGracePeriod (\ s a -> s{_uasgHealthCheckGracePeriod = a});
 
--- | The amount of time, in seconds, after a scaling activity completes before
--- another scaling activity can start. For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/Cooldown.html UnderstandingAuto Scaling Cooldowns>.
+-- | The ID of the subnet, if you are launching into a VPC. You can specify
+-- several subnets in a comma-separated list.
+--
+-- When you specify 'VPCZoneIdentifier' with 'AvailabilityZones', ensure
+-- that the subnets\' Availability Zones match the values you specify for
+-- 'AvailabilityZones'.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/autoscalingsubnets.html Auto Scaling and Amazon Virtual Private Cloud>
+-- in the /Auto Scaling Developer Guide/.
+uasgVPCZoneIdentifier :: Lens' UpdateAutoScalingGroup (Maybe Text)
+uasgVPCZoneIdentifier = lens _uasgVPCZoneIdentifier (\ s a -> s{_uasgVPCZoneIdentifier = a});
+
+-- | The amount of time, in seconds, after a scaling activity completes
+-- before another scaling activity can start. For more information, see
+-- <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/Cooldown.html Understanding Auto Scaling Cooldowns>.
 uasgDefaultCooldown :: Lens' UpdateAutoScalingGroup (Maybe Int)
-uasgDefaultCooldown =
-    lens _uasgDefaultCooldown (\s a -> s { _uasgDefaultCooldown = a })
+uasgDefaultCooldown = lens _uasgDefaultCooldown (\ s a -> s{_uasgDefaultCooldown = a});
 
--- | The number of EC2 instances that should be running in the Auto Scaling group.
--- This value must be greater than or equal to the minimum size of the group and
--- less than or equal to the maximum size of the group.
+-- | The maximum size of the Auto Scaling group.
+uasgMaxSize :: Lens' UpdateAutoScalingGroup (Maybe Int)
+uasgMaxSize = lens _uasgMaxSize (\ s a -> s{_uasgMaxSize = a});
+
+-- | The number of EC2 instances that should be running in the Auto Scaling
+-- group. This number must be greater than or equal to the minimum size of
+-- the group and less than or equal to the maximum size of the group.
 uasgDesiredCapacity :: Lens' UpdateAutoScalingGroup (Maybe Int)
-uasgDesiredCapacity =
-    lens _uasgDesiredCapacity (\s a -> s { _uasgDesiredCapacity = a })
+uasgDesiredCapacity = lens _uasgDesiredCapacity (\ s a -> s{_uasgDesiredCapacity = a});
 
--- | The amount of time, in second, that Auto Scaling waits before checking the
--- health status of an instance. The grace period begins when the instance
--- passes System Status and the Instance Status checks from Amazon EC2. For more
--- information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstanceStatus.html DescribeInstanceStatus>.
-uasgHealthCheckGracePeriod :: Lens' UpdateAutoScalingGroup (Maybe Int)
-uasgHealthCheckGracePeriod =
-    lens _uasgHealthCheckGracePeriod
-        (\s a -> s { _uasgHealthCheckGracePeriod = a })
+-- | One or more Availability Zones for the group.
+uasgAvailabilityZones :: Lens' UpdateAutoScalingGroup (Maybe (NonEmpty Text))
+uasgAvailabilityZones = lens _uasgAvailabilityZones (\ s a -> s{_uasgAvailabilityZones = a}) . mapping _List1;
 
--- | The type of health check for the instances in the Auto Scaling group. The
--- health check type can either be 'EC2' for Amazon EC2 or 'ELB' for Elastic Load
--- Balancing.
+-- | The minimum size of the Auto Scaling group.
+uasgMinSize :: Lens' UpdateAutoScalingGroup (Maybe Int)
+uasgMinSize = lens _uasgMinSize (\ s a -> s{_uasgMinSize = a});
+
+-- | The type of health check for the instances in the Auto Scaling group.
+-- The health check type can either be 'EC2' for Amazon EC2 or 'ELB' for
+-- Elastic Load Balancing.
 uasgHealthCheckType :: Lens' UpdateAutoScalingGroup (Maybe Text)
-uasgHealthCheckType =
-    lens _uasgHealthCheckType (\s a -> s { _uasgHealthCheckType = a })
+uasgHealthCheckType = lens _uasgHealthCheckType (\ s a -> s{_uasgHealthCheckType = a});
 
 -- | The name of the launch configuration.
 uasgLaunchConfigurationName :: Lens' UpdateAutoScalingGroup (Maybe Text)
-uasgLaunchConfigurationName =
-    lens _uasgLaunchConfigurationName
-        (\s a -> s { _uasgLaunchConfigurationName = a })
-
--- | The maximum size of the Auto Scaling group.
-uasgMaxSize :: Lens' UpdateAutoScalingGroup (Maybe Int)
-uasgMaxSize = lens _uasgMaxSize (\s a -> s { _uasgMaxSize = a })
-
--- | The minimum size of the Auto Scaling group.
-uasgMinSize :: Lens' UpdateAutoScalingGroup (Maybe Int)
-uasgMinSize = lens _uasgMinSize (\s a -> s { _uasgMinSize = a })
+uasgLaunchConfigurationName = lens _uasgLaunchConfigurationName (\ s a -> s{_uasgLaunchConfigurationName = a});
 
--- | The name of the placement group into which you'll launch your instances, if
--- any. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html Placement Groups>.
+-- | The name of the placement group into which you\'ll launch your
+-- instances, if any. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html Placement Groups>.
 uasgPlacementGroup :: Lens' UpdateAutoScalingGroup (Maybe Text)
-uasgPlacementGroup =
-    lens _uasgPlacementGroup (\s a -> s { _uasgPlacementGroup = a })
-
--- | A standalone termination policy or a list of termination policies used to
--- select the instance to terminate. The policies are executed in the order that
--- they are listed.
---
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/us-termination-policy.html Choosing a Termination Policy for Your AutoScaling Group> in the /Auto Scaling Developer Guide/.
-uasgTerminationPolicies :: Lens' UpdateAutoScalingGroup [Text]
-uasgTerminationPolicies =
-    lens _uasgTerminationPolicies (\s a -> s { _uasgTerminationPolicies = a })
-        . _List
+uasgPlacementGroup = lens _uasgPlacementGroup (\ s a -> s{_uasgPlacementGroup = a});
 
--- | The subnet identifier for the Amazon VPC connection, if applicable. You can
--- specify several subnets in a comma-separated list.
---
--- When you specify 'VPCZoneIdentifier' with 'AvailabilityZones', ensure that the
--- subnets' Availability Zones match the values you specify for 'AvailabilityZones'
--- .
---
--- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/autoscalingsubnets.html Auto Scaling and Amazon VPC> in the /Auto ScalingDeveloper Guide/.
-uasgVPCZoneIdentifier :: Lens' UpdateAutoScalingGroup (Maybe Text)
-uasgVPCZoneIdentifier =
-    lens _uasgVPCZoneIdentifier (\s a -> s { _uasgVPCZoneIdentifier = a })
+-- | The name of the Auto Scaling group.
+uasgAutoScalingGroupName :: Lens' UpdateAutoScalingGroup Text
+uasgAutoScalingGroupName = lens _uasgAutoScalingGroupName (\ s a -> s{_uasgAutoScalingGroupName = a});
 
-data UpdateAutoScalingGroupResponse = UpdateAutoScalingGroupResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest UpdateAutoScalingGroup where
+        type Sv UpdateAutoScalingGroup = AutoScaling
+        type Rs UpdateAutoScalingGroup =
+             UpdateAutoScalingGroupResponse
+        request = postQuery
+        response
+          = receiveNull UpdateAutoScalingGroupResponse'
 
--- | 'UpdateAutoScalingGroupResponse' constructor.
-updateAutoScalingGroupResponse :: UpdateAutoScalingGroupResponse
-updateAutoScalingGroupResponse = UpdateAutoScalingGroupResponse
+instance ToHeaders UpdateAutoScalingGroup where
+        toHeaders = const mempty
 
 instance ToPath UpdateAutoScalingGroup where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery UpdateAutoScalingGroup where
-    toQuery UpdateAutoScalingGroup{..} = mconcat
-        [ "AutoScalingGroupName"    =? _uasgAutoScalingGroupName
-        , "AvailabilityZones"       =? _uasgAvailabilityZones
-        , "DefaultCooldown"         =? _uasgDefaultCooldown
-        , "DesiredCapacity"         =? _uasgDesiredCapacity
-        , "HealthCheckGracePeriod"  =? _uasgHealthCheckGracePeriod
-        , "HealthCheckType"         =? _uasgHealthCheckType
-        , "LaunchConfigurationName" =? _uasgLaunchConfigurationName
-        , "MaxSize"                 =? _uasgMaxSize
-        , "MinSize"                 =? _uasgMinSize
-        , "PlacementGroup"          =? _uasgPlacementGroup
-        , "TerminationPolicies"     =? _uasgTerminationPolicies
-        , "VPCZoneIdentifier"       =? _uasgVPCZoneIdentifier
-        ]
-
-instance ToHeaders UpdateAutoScalingGroup
+        toQuery UpdateAutoScalingGroup'{..}
+          = mconcat
+              ["Action" =:
+                 ("UpdateAutoScalingGroup" :: ByteString),
+               "Version" =: ("2011-01-01" :: ByteString),
+               "TerminationPolicies" =:
+                 toQuery
+                   (toQueryList "member" <$> _uasgTerminationPolicies),
+               "HealthCheckGracePeriod" =:
+                 _uasgHealthCheckGracePeriod,
+               "VPCZoneIdentifier" =: _uasgVPCZoneIdentifier,
+               "DefaultCooldown" =: _uasgDefaultCooldown,
+               "MaxSize" =: _uasgMaxSize,
+               "DesiredCapacity" =: _uasgDesiredCapacity,
+               "AvailabilityZones" =:
+                 toQuery
+                   (toQueryList "member" <$> _uasgAvailabilityZones),
+               "MinSize" =: _uasgMinSize,
+               "HealthCheckType" =: _uasgHealthCheckType,
+               "LaunchConfigurationName" =:
+                 _uasgLaunchConfigurationName,
+               "PlacementGroup" =: _uasgPlacementGroup,
+               "AutoScalingGroupName" =: _uasgAutoScalingGroupName]
 
-instance AWSRequest UpdateAutoScalingGroup where
-    type Sv UpdateAutoScalingGroup = AutoScaling
-    type Rs UpdateAutoScalingGroup = UpdateAutoScalingGroupResponse
+-- | /See:/ 'updateAutoScalingGroupResponse' smart constructor.
+data UpdateAutoScalingGroupResponse =
+    UpdateAutoScalingGroupResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "UpdateAutoScalingGroup"
-    response = nullResponse UpdateAutoScalingGroupResponse
+-- | Creates a value of 'UpdateAutoScalingGroupResponse' with the minimum fields required to make a request.
+--
+updateAutoScalingGroupResponse
+    :: UpdateAutoScalingGroupResponse
+updateAutoScalingGroupResponse = UpdateAutoScalingGroupResponse'
diff --git a/gen/Network/AWS/AutoScaling/Waiters.hs b/gen/Network/AWS/AutoScaling/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/AutoScaling/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.AutoScaling.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.AutoScaling.Waiters where
+
+import           Network.AWS.AutoScaling.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.AutoScaling
+import Test.AWS.AutoScaling.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "AutoScaling"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/AutoScaling.hs b/test/Test/AWS/AutoScaling.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/AutoScaling.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Module      : Test.AWS.AutoScaling
+-- 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.AutoScaling
+    ( tests
+    , fixtures
+    ) where
+
+import           Network.AWS.AutoScaling
+import           Test.AWS.Gen.AutoScaling
+import           Test.Tasty
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/AutoScaling/Internal.hs b/test/Test/AWS/AutoScaling/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/AutoScaling/Internal.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.AutoScaling.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.AutoScaling.Internal where
+
+import Test.AWS.Prelude
diff --git a/test/Test/AWS/Gen/AutoScaling.hs b/test/Test/AWS/Gen/AutoScaling.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/AutoScaling.hs
@@ -0,0 +1,855 @@
+{-# 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.AutoScaling
+-- 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.AutoScaling where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.AutoScaling
+import Test.AWS.AutoScaling.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"
+--         [ testDescribeMetricCollectionTypes $
+--             describeMetricCollectionTypes
+--
+--         , testPutScalingPolicy $
+--             putScalingPolicy
+--
+--         , testDeleteNotificationConfiguration $
+--             deleteNotificationConfiguration
+--
+--         , testDescribeTags $
+--             describeTags
+--
+--         , testDeleteLaunchConfiguration $
+--             deleteLaunchConfiguration
+--
+--         , testDescribeLoadBalancers $
+--             describeLoadBalancers
+--
+--         , testPutNotificationConfiguration $
+--             putNotificationConfiguration
+--
+--         , testSetInstanceHealth $
+--             setInstanceHealth
+--
+--         , testEnterStandby $
+--             enterStandby
+--
+--         , testSuspendProcesses $
+--             suspendProcesses
+--
+--         , testExitStandby $
+--             exitStandby
+--
+--         , testDescribeTerminationPolicyTypes $
+--             describeTerminationPolicyTypes
+--
+--         , testDescribeAutoScalingInstances $
+--             describeAutoScalingInstances
+--
+--         , testDetachInstances $
+--             detachInstances
+--
+--         , testDisableMetricsCollection $
+--             disableMetricsCollection
+--
+--         , testRecordLifecycleActionHeartbeat $
+--             recordLifecycleActionHeartbeat
+--
+--         , testDeleteTags $
+--             deleteTags
+--
+--         , testDescribeScalingProcessTypes $
+--             describeScalingProcessTypes
+--
+--         , testEnableMetricsCollection $
+--             enableMetricsCollection
+--
+--         , testDescribeLifecycleHooks $
+--             describeLifecycleHooks
+--
+--         , testDescribeAutoScalingGroups $
+--             describeAutoScalingGroups
+--
+--         , testSetDesiredCapacity $
+--             setDesiredCapacity
+--
+--         , testDetachLoadBalancers $
+--             detachLoadBalancers
+--
+--         , testDeleteScheduledAction $
+--             deleteScheduledAction
+--
+--         , testCreateOrUpdateTags $
+--             createOrUpdateTags
+--
+--         , testDeletePolicy $
+--             deletePolicy
+--
+--         , testDescribeAutoScalingNotificationTypes $
+--             describeAutoScalingNotificationTypes
+--
+--         , testCompleteLifecycleAction $
+--             completeLifecycleAction
+--
+--         , testAttachInstances $
+--             attachInstances
+--
+--         , testDescribeScheduledActions $
+--             describeScheduledActions
+--
+--         , testDeleteAutoScalingGroup $
+--             deleteAutoScalingGroup
+--
+--         , testPutLifecycleHook $
+--             putLifecycleHook
+--
+--         , testUpdateAutoScalingGroup $
+--             updateAutoScalingGroup
+--
+--         , testDeleteLifecycleHook $
+--             deleteLifecycleHook
+--
+--         , testResumeProcesses $
+--             resumeProcesses
+--
+--         , testExecutePolicy $
+--             executePolicy
+--
+--         , testTerminateInstanceInAutoScalingGroup $
+--             terminateInstanceInAutoScalingGroup
+--
+--         , testDescribeAccountLimits $
+--             describeAccountLimits
+--
+--         , testAttachLoadBalancers $
+--             attachLoadBalancers
+--
+--         , testPutScheduledUpdateGroupAction $
+--             putScheduledUpdateGroupAction
+--
+--         , testDescribePolicies $
+--             describePolicies
+--
+--         , testDescribeNotificationConfigurations $
+--             describeNotificationConfigurations
+--
+--         , testDescribeLaunchConfigurations $
+--             describeLaunchConfigurations
+--
+--         , testDescribeLifecycleHookTypes $
+--             describeLifecycleHookTypes
+--
+--         , testDescribeScalingActivities $
+--             describeScalingActivities
+--
+--         , testCreateAutoScalingGroup $
+--             createAutoScalingGroup
+--
+--         , testCreateLaunchConfiguration $
+--             createLaunchConfiguration
+--
+--         , testDescribeAdjustmentTypes $
+--             describeAdjustmentTypes
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testDescribeMetricCollectionTypesResponse $
+--             describeMetricCollectionTypesResponse
+--
+--         , testPutScalingPolicyResponse $
+--             putScalingPolicyResponse
+--
+--         , testDeleteNotificationConfigurationResponse $
+--             deleteNotificationConfigurationResponse
+--
+--         , testDescribeTagsResponse $
+--             describeTagsResponse
+--
+--         , testDeleteLaunchConfigurationResponse $
+--             deleteLaunchConfigurationResponse
+--
+--         , testDescribeLoadBalancersResponse $
+--             describeLoadBalancersResponse
+--
+--         , testPutNotificationConfigurationResponse $
+--             putNotificationConfigurationResponse
+--
+--         , testSetInstanceHealthResponse $
+--             setInstanceHealthResponse
+--
+--         , testEnterStandbyResponse $
+--             enterStandbyResponse
+--
+--         , testSuspendProcessesResponse $
+--             suspendProcessesResponse
+--
+--         , testExitStandbyResponse $
+--             exitStandbyResponse
+--
+--         , testDescribeTerminationPolicyTypesResponse $
+--             describeTerminationPolicyTypesResponse
+--
+--         , testDescribeAutoScalingInstancesResponse $
+--             describeAutoScalingInstancesResponse
+--
+--         , testDetachInstancesResponse $
+--             detachInstancesResponse
+--
+--         , testDisableMetricsCollectionResponse $
+--             disableMetricsCollectionResponse
+--
+--         , testRecordLifecycleActionHeartbeatResponse $
+--             recordLifecycleActionHeartbeatResponse
+--
+--         , testDeleteTagsResponse $
+--             deleteTagsResponse
+--
+--         , testDescribeScalingProcessTypesResponse $
+--             describeScalingProcessTypesResponse
+--
+--         , testEnableMetricsCollectionResponse $
+--             enableMetricsCollectionResponse
+--
+--         , testDescribeLifecycleHooksResponse $
+--             describeLifecycleHooksResponse
+--
+--         , testDescribeAutoScalingGroupsResponse $
+--             describeAutoScalingGroupsResponse
+--
+--         , testSetDesiredCapacityResponse $
+--             setDesiredCapacityResponse
+--
+--         , testDetachLoadBalancersResponse $
+--             detachLoadBalancersResponse
+--
+--         , testDeleteScheduledActionResponse $
+--             deleteScheduledActionResponse
+--
+--         , testCreateOrUpdateTagsResponse $
+--             createOrUpdateTagsResponse
+--
+--         , testDeletePolicyResponse $
+--             deletePolicyResponse
+--
+--         , testDescribeAutoScalingNotificationTypesResponse $
+--             describeAutoScalingNotificationTypesResponse
+--
+--         , testCompleteLifecycleActionResponse $
+--             completeLifecycleActionResponse
+--
+--         , testAttachInstancesResponse $
+--             attachInstancesResponse
+--
+--         , testDescribeScheduledActionsResponse $
+--             describeScheduledActionsResponse
+--
+--         , testDeleteAutoScalingGroupResponse $
+--             deleteAutoScalingGroupResponse
+--
+--         , testPutLifecycleHookResponse $
+--             putLifecycleHookResponse
+--
+--         , testUpdateAutoScalingGroupResponse $
+--             updateAutoScalingGroupResponse
+--
+--         , testDeleteLifecycleHookResponse $
+--             deleteLifecycleHookResponse
+--
+--         , testResumeProcessesResponse $
+--             resumeProcessesResponse
+--
+--         , testExecutePolicyResponse $
+--             executePolicyResponse
+--
+--         , testTerminateInstanceInAutoScalingGroupResponse $
+--             terminateInstanceInAutoScalingGroupResponse
+--
+--         , testDescribeAccountLimitsResponse $
+--             describeAccountLimitsResponse
+--
+--         , testAttachLoadBalancersResponse $
+--             attachLoadBalancersResponse
+--
+--         , testPutScheduledUpdateGroupActionResponse $
+--             putScheduledUpdateGroupActionResponse
+--
+--         , testDescribePoliciesResponse $
+--             describePoliciesResponse
+--
+--         , testDescribeNotificationConfigurationsResponse $
+--             describeNotificationConfigurationsResponse
+--
+--         , testDescribeLaunchConfigurationsResponse $
+--             describeLaunchConfigurationsResponse
+--
+--         , testDescribeLifecycleHookTypesResponse $
+--             describeLifecycleHookTypesResponse
+--
+--         , testDescribeScalingActivitiesResponse $
+--             describeScalingActivitiesResponse
+--
+--         , testCreateAutoScalingGroupResponse $
+--             createAutoScalingGroupResponse
+--
+--         , testCreateLaunchConfigurationResponse $
+--             createLaunchConfigurationResponse
+--
+--         , testDescribeAdjustmentTypesResponse $
+--             describeAdjustmentTypesResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testDescribeMetricCollectionTypes :: DescribeMetricCollectionTypes -> TestTree
+testDescribeMetricCollectionTypes = req
+    "DescribeMetricCollectionTypes"
+    "fixture/DescribeMetricCollectionTypes"
+
+testPutScalingPolicy :: PutScalingPolicy -> TestTree
+testPutScalingPolicy = req
+    "PutScalingPolicy"
+    "fixture/PutScalingPolicy"
+
+testDeleteNotificationConfiguration :: DeleteNotificationConfiguration -> TestTree
+testDeleteNotificationConfiguration = req
+    "DeleteNotificationConfiguration"
+    "fixture/DeleteNotificationConfiguration"
+
+testDescribeTags :: DescribeTags -> TestTree
+testDescribeTags = req
+    "DescribeTags"
+    "fixture/DescribeTags"
+
+testDeleteLaunchConfiguration :: DeleteLaunchConfiguration -> TestTree
+testDeleteLaunchConfiguration = req
+    "DeleteLaunchConfiguration"
+    "fixture/DeleteLaunchConfiguration"
+
+testDescribeLoadBalancers :: DescribeLoadBalancers -> TestTree
+testDescribeLoadBalancers = req
+    "DescribeLoadBalancers"
+    "fixture/DescribeLoadBalancers"
+
+testPutNotificationConfiguration :: PutNotificationConfiguration -> TestTree
+testPutNotificationConfiguration = req
+    "PutNotificationConfiguration"
+    "fixture/PutNotificationConfiguration"
+
+testSetInstanceHealth :: SetInstanceHealth -> TestTree
+testSetInstanceHealth = req
+    "SetInstanceHealth"
+    "fixture/SetInstanceHealth"
+
+testEnterStandby :: EnterStandby -> TestTree
+testEnterStandby = req
+    "EnterStandby"
+    "fixture/EnterStandby"
+
+testSuspendProcesses :: SuspendProcesses -> TestTree
+testSuspendProcesses = req
+    "SuspendProcesses"
+    "fixture/SuspendProcesses"
+
+testExitStandby :: ExitStandby -> TestTree
+testExitStandby = req
+    "ExitStandby"
+    "fixture/ExitStandby"
+
+testDescribeTerminationPolicyTypes :: DescribeTerminationPolicyTypes -> TestTree
+testDescribeTerminationPolicyTypes = req
+    "DescribeTerminationPolicyTypes"
+    "fixture/DescribeTerminationPolicyTypes"
+
+testDescribeAutoScalingInstances :: DescribeAutoScalingInstances -> TestTree
+testDescribeAutoScalingInstances = req
+    "DescribeAutoScalingInstances"
+    "fixture/DescribeAutoScalingInstances"
+
+testDetachInstances :: DetachInstances -> TestTree
+testDetachInstances = req
+    "DetachInstances"
+    "fixture/DetachInstances"
+
+testDisableMetricsCollection :: DisableMetricsCollection -> TestTree
+testDisableMetricsCollection = req
+    "DisableMetricsCollection"
+    "fixture/DisableMetricsCollection"
+
+testRecordLifecycleActionHeartbeat :: RecordLifecycleActionHeartbeat -> TestTree
+testRecordLifecycleActionHeartbeat = req
+    "RecordLifecycleActionHeartbeat"
+    "fixture/RecordLifecycleActionHeartbeat"
+
+testDeleteTags :: DeleteTags -> TestTree
+testDeleteTags = req
+    "DeleteTags"
+    "fixture/DeleteTags"
+
+testDescribeScalingProcessTypes :: DescribeScalingProcessTypes -> TestTree
+testDescribeScalingProcessTypes = req
+    "DescribeScalingProcessTypes"
+    "fixture/DescribeScalingProcessTypes"
+
+testEnableMetricsCollection :: EnableMetricsCollection -> TestTree
+testEnableMetricsCollection = req
+    "EnableMetricsCollection"
+    "fixture/EnableMetricsCollection"
+
+testDescribeLifecycleHooks :: DescribeLifecycleHooks -> TestTree
+testDescribeLifecycleHooks = req
+    "DescribeLifecycleHooks"
+    "fixture/DescribeLifecycleHooks"
+
+testDescribeAutoScalingGroups :: DescribeAutoScalingGroups -> TestTree
+testDescribeAutoScalingGroups = req
+    "DescribeAutoScalingGroups"
+    "fixture/DescribeAutoScalingGroups"
+
+testSetDesiredCapacity :: SetDesiredCapacity -> TestTree
+testSetDesiredCapacity = req
+    "SetDesiredCapacity"
+    "fixture/SetDesiredCapacity"
+
+testDetachLoadBalancers :: DetachLoadBalancers -> TestTree
+testDetachLoadBalancers = req
+    "DetachLoadBalancers"
+    "fixture/DetachLoadBalancers"
+
+testDeleteScheduledAction :: DeleteScheduledAction -> TestTree
+testDeleteScheduledAction = req
+    "DeleteScheduledAction"
+    "fixture/DeleteScheduledAction"
+
+testCreateOrUpdateTags :: CreateOrUpdateTags -> TestTree
+testCreateOrUpdateTags = req
+    "CreateOrUpdateTags"
+    "fixture/CreateOrUpdateTags"
+
+testDeletePolicy :: DeletePolicy -> TestTree
+testDeletePolicy = req
+    "DeletePolicy"
+    "fixture/DeletePolicy"
+
+testDescribeAutoScalingNotificationTypes :: DescribeAutoScalingNotificationTypes -> TestTree
+testDescribeAutoScalingNotificationTypes = req
+    "DescribeAutoScalingNotificationTypes"
+    "fixture/DescribeAutoScalingNotificationTypes"
+
+testCompleteLifecycleAction :: CompleteLifecycleAction -> TestTree
+testCompleteLifecycleAction = req
+    "CompleteLifecycleAction"
+    "fixture/CompleteLifecycleAction"
+
+testAttachInstances :: AttachInstances -> TestTree
+testAttachInstances = req
+    "AttachInstances"
+    "fixture/AttachInstances"
+
+testDescribeScheduledActions :: DescribeScheduledActions -> TestTree
+testDescribeScheduledActions = req
+    "DescribeScheduledActions"
+    "fixture/DescribeScheduledActions"
+
+testDeleteAutoScalingGroup :: DeleteAutoScalingGroup -> TestTree
+testDeleteAutoScalingGroup = req
+    "DeleteAutoScalingGroup"
+    "fixture/DeleteAutoScalingGroup"
+
+testPutLifecycleHook :: PutLifecycleHook -> TestTree
+testPutLifecycleHook = req
+    "PutLifecycleHook"
+    "fixture/PutLifecycleHook"
+
+testUpdateAutoScalingGroup :: UpdateAutoScalingGroup -> TestTree
+testUpdateAutoScalingGroup = req
+    "UpdateAutoScalingGroup"
+    "fixture/UpdateAutoScalingGroup"
+
+testDeleteLifecycleHook :: DeleteLifecycleHook -> TestTree
+testDeleteLifecycleHook = req
+    "DeleteLifecycleHook"
+    "fixture/DeleteLifecycleHook"
+
+testResumeProcesses :: ResumeProcesses -> TestTree
+testResumeProcesses = req
+    "ResumeProcesses"
+    "fixture/ResumeProcesses"
+
+testExecutePolicy :: ExecutePolicy -> TestTree
+testExecutePolicy = req
+    "ExecutePolicy"
+    "fixture/ExecutePolicy"
+
+testTerminateInstanceInAutoScalingGroup :: TerminateInstanceInAutoScalingGroup -> TestTree
+testTerminateInstanceInAutoScalingGroup = req
+    "TerminateInstanceInAutoScalingGroup"
+    "fixture/TerminateInstanceInAutoScalingGroup"
+
+testDescribeAccountLimits :: DescribeAccountLimits -> TestTree
+testDescribeAccountLimits = req
+    "DescribeAccountLimits"
+    "fixture/DescribeAccountLimits"
+
+testAttachLoadBalancers :: AttachLoadBalancers -> TestTree
+testAttachLoadBalancers = req
+    "AttachLoadBalancers"
+    "fixture/AttachLoadBalancers"
+
+testPutScheduledUpdateGroupAction :: PutScheduledUpdateGroupAction -> TestTree
+testPutScheduledUpdateGroupAction = req
+    "PutScheduledUpdateGroupAction"
+    "fixture/PutScheduledUpdateGroupAction"
+
+testDescribePolicies :: DescribePolicies -> TestTree
+testDescribePolicies = req
+    "DescribePolicies"
+    "fixture/DescribePolicies"
+
+testDescribeNotificationConfigurations :: DescribeNotificationConfigurations -> TestTree
+testDescribeNotificationConfigurations = req
+    "DescribeNotificationConfigurations"
+    "fixture/DescribeNotificationConfigurations"
+
+testDescribeLaunchConfigurations :: DescribeLaunchConfigurations -> TestTree
+testDescribeLaunchConfigurations = req
+    "DescribeLaunchConfigurations"
+    "fixture/DescribeLaunchConfigurations"
+
+testDescribeLifecycleHookTypes :: DescribeLifecycleHookTypes -> TestTree
+testDescribeLifecycleHookTypes = req
+    "DescribeLifecycleHookTypes"
+    "fixture/DescribeLifecycleHookTypes"
+
+testDescribeScalingActivities :: DescribeScalingActivities -> TestTree
+testDescribeScalingActivities = req
+    "DescribeScalingActivities"
+    "fixture/DescribeScalingActivities"
+
+testCreateAutoScalingGroup :: CreateAutoScalingGroup -> TestTree
+testCreateAutoScalingGroup = req
+    "CreateAutoScalingGroup"
+    "fixture/CreateAutoScalingGroup"
+
+testCreateLaunchConfiguration :: CreateLaunchConfiguration -> TestTree
+testCreateLaunchConfiguration = req
+    "CreateLaunchConfiguration"
+    "fixture/CreateLaunchConfiguration"
+
+testDescribeAdjustmentTypes :: DescribeAdjustmentTypes -> TestTree
+testDescribeAdjustmentTypes = req
+    "DescribeAdjustmentTypes"
+    "fixture/DescribeAdjustmentTypes"
+
+-- Responses
+
+testDescribeMetricCollectionTypesResponse :: DescribeMetricCollectionTypesResponse -> TestTree
+testDescribeMetricCollectionTypesResponse = res
+    "DescribeMetricCollectionTypesResponse"
+    "fixture/DescribeMetricCollectionTypesResponse"
+    (Proxy :: Proxy DescribeMetricCollectionTypes)
+
+testPutScalingPolicyResponse :: PutScalingPolicyResponse -> TestTree
+testPutScalingPolicyResponse = res
+    "PutScalingPolicyResponse"
+    "fixture/PutScalingPolicyResponse"
+    (Proxy :: Proxy PutScalingPolicy)
+
+testDeleteNotificationConfigurationResponse :: DeleteNotificationConfigurationResponse -> TestTree
+testDeleteNotificationConfigurationResponse = res
+    "DeleteNotificationConfigurationResponse"
+    "fixture/DeleteNotificationConfigurationResponse"
+    (Proxy :: Proxy DeleteNotificationConfiguration)
+
+testDescribeTagsResponse :: DescribeTagsResponse -> TestTree
+testDescribeTagsResponse = res
+    "DescribeTagsResponse"
+    "fixture/DescribeTagsResponse"
+    (Proxy :: Proxy DescribeTags)
+
+testDeleteLaunchConfigurationResponse :: DeleteLaunchConfigurationResponse -> TestTree
+testDeleteLaunchConfigurationResponse = res
+    "DeleteLaunchConfigurationResponse"
+    "fixture/DeleteLaunchConfigurationResponse"
+    (Proxy :: Proxy DeleteLaunchConfiguration)
+
+testDescribeLoadBalancersResponse :: DescribeLoadBalancersResponse -> TestTree
+testDescribeLoadBalancersResponse = res
+    "DescribeLoadBalancersResponse"
+    "fixture/DescribeLoadBalancersResponse"
+    (Proxy :: Proxy DescribeLoadBalancers)
+
+testPutNotificationConfigurationResponse :: PutNotificationConfigurationResponse -> TestTree
+testPutNotificationConfigurationResponse = res
+    "PutNotificationConfigurationResponse"
+    "fixture/PutNotificationConfigurationResponse"
+    (Proxy :: Proxy PutNotificationConfiguration)
+
+testSetInstanceHealthResponse :: SetInstanceHealthResponse -> TestTree
+testSetInstanceHealthResponse = res
+    "SetInstanceHealthResponse"
+    "fixture/SetInstanceHealthResponse"
+    (Proxy :: Proxy SetInstanceHealth)
+
+testEnterStandbyResponse :: EnterStandbyResponse -> TestTree
+testEnterStandbyResponse = res
+    "EnterStandbyResponse"
+    "fixture/EnterStandbyResponse"
+    (Proxy :: Proxy EnterStandby)
+
+testSuspendProcessesResponse :: SuspendProcessesResponse -> TestTree
+testSuspendProcessesResponse = res
+    "SuspendProcessesResponse"
+    "fixture/SuspendProcessesResponse"
+    (Proxy :: Proxy SuspendProcesses)
+
+testExitStandbyResponse :: ExitStandbyResponse -> TestTree
+testExitStandbyResponse = res
+    "ExitStandbyResponse"
+    "fixture/ExitStandbyResponse"
+    (Proxy :: Proxy ExitStandby)
+
+testDescribeTerminationPolicyTypesResponse :: DescribeTerminationPolicyTypesResponse -> TestTree
+testDescribeTerminationPolicyTypesResponse = res
+    "DescribeTerminationPolicyTypesResponse"
+    "fixture/DescribeTerminationPolicyTypesResponse"
+    (Proxy :: Proxy DescribeTerminationPolicyTypes)
+
+testDescribeAutoScalingInstancesResponse :: DescribeAutoScalingInstancesResponse -> TestTree
+testDescribeAutoScalingInstancesResponse = res
+    "DescribeAutoScalingInstancesResponse"
+    "fixture/DescribeAutoScalingInstancesResponse"
+    (Proxy :: Proxy DescribeAutoScalingInstances)
+
+testDetachInstancesResponse :: DetachInstancesResponse -> TestTree
+testDetachInstancesResponse = res
+    "DetachInstancesResponse"
+    "fixture/DetachInstancesResponse"
+    (Proxy :: Proxy DetachInstances)
+
+testDisableMetricsCollectionResponse :: DisableMetricsCollectionResponse -> TestTree
+testDisableMetricsCollectionResponse = res
+    "DisableMetricsCollectionResponse"
+    "fixture/DisableMetricsCollectionResponse"
+    (Proxy :: Proxy DisableMetricsCollection)
+
+testRecordLifecycleActionHeartbeatResponse :: RecordLifecycleActionHeartbeatResponse -> TestTree
+testRecordLifecycleActionHeartbeatResponse = res
+    "RecordLifecycleActionHeartbeatResponse"
+    "fixture/RecordLifecycleActionHeartbeatResponse"
+    (Proxy :: Proxy RecordLifecycleActionHeartbeat)
+
+testDeleteTagsResponse :: DeleteTagsResponse -> TestTree
+testDeleteTagsResponse = res
+    "DeleteTagsResponse"
+    "fixture/DeleteTagsResponse"
+    (Proxy :: Proxy DeleteTags)
+
+testDescribeScalingProcessTypesResponse :: DescribeScalingProcessTypesResponse -> TestTree
+testDescribeScalingProcessTypesResponse = res
+    "DescribeScalingProcessTypesResponse"
+    "fixture/DescribeScalingProcessTypesResponse"
+    (Proxy :: Proxy DescribeScalingProcessTypes)
+
+testEnableMetricsCollectionResponse :: EnableMetricsCollectionResponse -> TestTree
+testEnableMetricsCollectionResponse = res
+    "EnableMetricsCollectionResponse"
+    "fixture/EnableMetricsCollectionResponse"
+    (Proxy :: Proxy EnableMetricsCollection)
+
+testDescribeLifecycleHooksResponse :: DescribeLifecycleHooksResponse -> TestTree
+testDescribeLifecycleHooksResponse = res
+    "DescribeLifecycleHooksResponse"
+    "fixture/DescribeLifecycleHooksResponse"
+    (Proxy :: Proxy DescribeLifecycleHooks)
+
+testDescribeAutoScalingGroupsResponse :: DescribeAutoScalingGroupsResponse -> TestTree
+testDescribeAutoScalingGroupsResponse = res
+    "DescribeAutoScalingGroupsResponse"
+    "fixture/DescribeAutoScalingGroupsResponse"
+    (Proxy :: Proxy DescribeAutoScalingGroups)
+
+testSetDesiredCapacityResponse :: SetDesiredCapacityResponse -> TestTree
+testSetDesiredCapacityResponse = res
+    "SetDesiredCapacityResponse"
+    "fixture/SetDesiredCapacityResponse"
+    (Proxy :: Proxy SetDesiredCapacity)
+
+testDetachLoadBalancersResponse :: DetachLoadBalancersResponse -> TestTree
+testDetachLoadBalancersResponse = res
+    "DetachLoadBalancersResponse"
+    "fixture/DetachLoadBalancersResponse"
+    (Proxy :: Proxy DetachLoadBalancers)
+
+testDeleteScheduledActionResponse :: DeleteScheduledActionResponse -> TestTree
+testDeleteScheduledActionResponse = res
+    "DeleteScheduledActionResponse"
+    "fixture/DeleteScheduledActionResponse"
+    (Proxy :: Proxy DeleteScheduledAction)
+
+testCreateOrUpdateTagsResponse :: CreateOrUpdateTagsResponse -> TestTree
+testCreateOrUpdateTagsResponse = res
+    "CreateOrUpdateTagsResponse"
+    "fixture/CreateOrUpdateTagsResponse"
+    (Proxy :: Proxy CreateOrUpdateTags)
+
+testDeletePolicyResponse :: DeletePolicyResponse -> TestTree
+testDeletePolicyResponse = res
+    "DeletePolicyResponse"
+    "fixture/DeletePolicyResponse"
+    (Proxy :: Proxy DeletePolicy)
+
+testDescribeAutoScalingNotificationTypesResponse :: DescribeAutoScalingNotificationTypesResponse -> TestTree
+testDescribeAutoScalingNotificationTypesResponse = res
+    "DescribeAutoScalingNotificationTypesResponse"
+    "fixture/DescribeAutoScalingNotificationTypesResponse"
+    (Proxy :: Proxy DescribeAutoScalingNotificationTypes)
+
+testCompleteLifecycleActionResponse :: CompleteLifecycleActionResponse -> TestTree
+testCompleteLifecycleActionResponse = res
+    "CompleteLifecycleActionResponse"
+    "fixture/CompleteLifecycleActionResponse"
+    (Proxy :: Proxy CompleteLifecycleAction)
+
+testAttachInstancesResponse :: AttachInstancesResponse -> TestTree
+testAttachInstancesResponse = res
+    "AttachInstancesResponse"
+    "fixture/AttachInstancesResponse"
+    (Proxy :: Proxy AttachInstances)
+
+testDescribeScheduledActionsResponse :: DescribeScheduledActionsResponse -> TestTree
+testDescribeScheduledActionsResponse = res
+    "DescribeScheduledActionsResponse"
+    "fixture/DescribeScheduledActionsResponse"
+    (Proxy :: Proxy DescribeScheduledActions)
+
+testDeleteAutoScalingGroupResponse :: DeleteAutoScalingGroupResponse -> TestTree
+testDeleteAutoScalingGroupResponse = res
+    "DeleteAutoScalingGroupResponse"
+    "fixture/DeleteAutoScalingGroupResponse"
+    (Proxy :: Proxy DeleteAutoScalingGroup)
+
+testPutLifecycleHookResponse :: PutLifecycleHookResponse -> TestTree
+testPutLifecycleHookResponse = res
+    "PutLifecycleHookResponse"
+    "fixture/PutLifecycleHookResponse"
+    (Proxy :: Proxy PutLifecycleHook)
+
+testUpdateAutoScalingGroupResponse :: UpdateAutoScalingGroupResponse -> TestTree
+testUpdateAutoScalingGroupResponse = res
+    "UpdateAutoScalingGroupResponse"
+    "fixture/UpdateAutoScalingGroupResponse"
+    (Proxy :: Proxy UpdateAutoScalingGroup)
+
+testDeleteLifecycleHookResponse :: DeleteLifecycleHookResponse -> TestTree
+testDeleteLifecycleHookResponse = res
+    "DeleteLifecycleHookResponse"
+    "fixture/DeleteLifecycleHookResponse"
+    (Proxy :: Proxy DeleteLifecycleHook)
+
+testResumeProcessesResponse :: ResumeProcessesResponse -> TestTree
+testResumeProcessesResponse = res
+    "ResumeProcessesResponse"
+    "fixture/ResumeProcessesResponse"
+    (Proxy :: Proxy ResumeProcesses)
+
+testExecutePolicyResponse :: ExecutePolicyResponse -> TestTree
+testExecutePolicyResponse = res
+    "ExecutePolicyResponse"
+    "fixture/ExecutePolicyResponse"
+    (Proxy :: Proxy ExecutePolicy)
+
+testTerminateInstanceInAutoScalingGroupResponse :: TerminateInstanceInAutoScalingGroupResponse -> TestTree
+testTerminateInstanceInAutoScalingGroupResponse = res
+    "TerminateInstanceInAutoScalingGroupResponse"
+    "fixture/TerminateInstanceInAutoScalingGroupResponse"
+    (Proxy :: Proxy TerminateInstanceInAutoScalingGroup)
+
+testDescribeAccountLimitsResponse :: DescribeAccountLimitsResponse -> TestTree
+testDescribeAccountLimitsResponse = res
+    "DescribeAccountLimitsResponse"
+    "fixture/DescribeAccountLimitsResponse"
+    (Proxy :: Proxy DescribeAccountLimits)
+
+testAttachLoadBalancersResponse :: AttachLoadBalancersResponse -> TestTree
+testAttachLoadBalancersResponse = res
+    "AttachLoadBalancersResponse"
+    "fixture/AttachLoadBalancersResponse"
+    (Proxy :: Proxy AttachLoadBalancers)
+
+testPutScheduledUpdateGroupActionResponse :: PutScheduledUpdateGroupActionResponse -> TestTree
+testPutScheduledUpdateGroupActionResponse = res
+    "PutScheduledUpdateGroupActionResponse"
+    "fixture/PutScheduledUpdateGroupActionResponse"
+    (Proxy :: Proxy PutScheduledUpdateGroupAction)
+
+testDescribePoliciesResponse :: DescribePoliciesResponse -> TestTree
+testDescribePoliciesResponse = res
+    "DescribePoliciesResponse"
+    "fixture/DescribePoliciesResponse"
+    (Proxy :: Proxy DescribePolicies)
+
+testDescribeNotificationConfigurationsResponse :: DescribeNotificationConfigurationsResponse -> TestTree
+testDescribeNotificationConfigurationsResponse = res
+    "DescribeNotificationConfigurationsResponse"
+    "fixture/DescribeNotificationConfigurationsResponse"
+    (Proxy :: Proxy DescribeNotificationConfigurations)
+
+testDescribeLaunchConfigurationsResponse :: DescribeLaunchConfigurationsResponse -> TestTree
+testDescribeLaunchConfigurationsResponse = res
+    "DescribeLaunchConfigurationsResponse"
+    "fixture/DescribeLaunchConfigurationsResponse"
+    (Proxy :: Proxy DescribeLaunchConfigurations)
+
+testDescribeLifecycleHookTypesResponse :: DescribeLifecycleHookTypesResponse -> TestTree
+testDescribeLifecycleHookTypesResponse = res
+    "DescribeLifecycleHookTypesResponse"
+    "fixture/DescribeLifecycleHookTypesResponse"
+    (Proxy :: Proxy DescribeLifecycleHookTypes)
+
+testDescribeScalingActivitiesResponse :: DescribeScalingActivitiesResponse -> TestTree
+testDescribeScalingActivitiesResponse = res
+    "DescribeScalingActivitiesResponse"
+    "fixture/DescribeScalingActivitiesResponse"
+    (Proxy :: Proxy DescribeScalingActivities)
+
+testCreateAutoScalingGroupResponse :: CreateAutoScalingGroupResponse -> TestTree
+testCreateAutoScalingGroupResponse = res
+    "CreateAutoScalingGroupResponse"
+    "fixture/CreateAutoScalingGroupResponse"
+    (Proxy :: Proxy CreateAutoScalingGroup)
+
+testCreateLaunchConfigurationResponse :: CreateLaunchConfigurationResponse -> TestTree
+testCreateLaunchConfigurationResponse = res
+    "CreateLaunchConfigurationResponse"
+    "fixture/CreateLaunchConfigurationResponse"
+    (Proxy :: Proxy CreateLaunchConfiguration)
+
+testDescribeAdjustmentTypesResponse :: DescribeAdjustmentTypesResponse -> TestTree
+testDescribeAdjustmentTypesResponse = res
+    "DescribeAdjustmentTypesResponse"
+    "fixture/DescribeAdjustmentTypesResponse"
+    (Proxy :: Proxy DescribeAdjustmentTypes)
