diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.0`
+`1.4.1`
 
 
 ## Description
diff --git a/amazonka-cloudformation.cabal b/amazonka-cloudformation.cabal
--- a/amazonka-cloudformation.cabal
+++ b/amazonka-cloudformation.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-cloudformation
-version:               1.4.0
+version:               1.4.1
 synopsis:              Amazon CloudFormation SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -64,17 +64,22 @@
           Network.AWS.CloudFormation
         , Network.AWS.CloudFormation.CancelUpdateStack
         , Network.AWS.CloudFormation.ContinueUpdateRollback
+        , Network.AWS.CloudFormation.CreateChangeSet
         , Network.AWS.CloudFormation.CreateStack
+        , Network.AWS.CloudFormation.DeleteChangeSet
         , Network.AWS.CloudFormation.DeleteStack
         , Network.AWS.CloudFormation.DescribeAccountLimits
+        , Network.AWS.CloudFormation.DescribeChangeSet
         , Network.AWS.CloudFormation.DescribeStackEvents
         , Network.AWS.CloudFormation.DescribeStackResource
         , Network.AWS.CloudFormation.DescribeStackResources
         , Network.AWS.CloudFormation.DescribeStacks
         , Network.AWS.CloudFormation.EstimateTemplateCost
+        , Network.AWS.CloudFormation.ExecuteChangeSet
         , Network.AWS.CloudFormation.GetStackPolicy
         , Network.AWS.CloudFormation.GetTemplate
         , Network.AWS.CloudFormation.GetTemplateSummary
+        , Network.AWS.CloudFormation.ListChangeSets
         , Network.AWS.CloudFormation.ListStackResources
         , Network.AWS.CloudFormation.ListStacks
         , Network.AWS.CloudFormation.SetStackPolicy
@@ -89,7 +94,7 @@
         , Network.AWS.CloudFormation.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.0.*
+          amazonka-core == 1.4.1.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-cloudformation-test
@@ -109,9 +114,9 @@
         , Test.AWS.CloudFormation.Internal
 
     build-depends:
-          amazonka-core == 1.4.0.*
-        , amazonka-test == 1.4.0.*
-        , amazonka-cloudformation == 1.4.0.*
+          amazonka-core == 1.4.1.*
+        , amazonka-test == 1.4.1.*
+        , amazonka-cloudformation == 1.4.1.*
         , base
         , bytestring
         , tasty
diff --git a/fixture/CreateChangeSet.yaml b/fixture/CreateChangeSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateChangeSet.yaml
diff --git a/fixture/CreateChangeSetResponse.proto b/fixture/CreateChangeSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateChangeSetResponse.proto
diff --git a/fixture/DeleteChangeSet.yaml b/fixture/DeleteChangeSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteChangeSet.yaml
diff --git a/fixture/DeleteChangeSetResponse.proto b/fixture/DeleteChangeSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteChangeSetResponse.proto
diff --git a/fixture/DescribeChangeSet.yaml b/fixture/DescribeChangeSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeChangeSet.yaml
diff --git a/fixture/DescribeChangeSetResponse.proto b/fixture/DescribeChangeSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeChangeSetResponse.proto
diff --git a/fixture/ExecuteChangeSet.yaml b/fixture/ExecuteChangeSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ExecuteChangeSet.yaml
diff --git a/fixture/ExecuteChangeSetResponse.proto b/fixture/ExecuteChangeSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ExecuteChangeSetResponse.proto
diff --git a/fixture/ListChangeSets.yaml b/fixture/ListChangeSets.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListChangeSets.yaml
diff --git a/fixture/ListChangeSetsResponse.proto b/fixture/ListChangeSetsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListChangeSetsResponse.proto
diff --git a/gen/Network/AWS/CloudFormation.hs b/gen/Network/AWS/CloudFormation.hs
--- a/gen/Network/AWS/CloudFormation.hs
+++ b/gen/Network/AWS/CloudFormation.hs
@@ -41,6 +41,12 @@
     -- * Errors
     -- $errors
 
+    -- ** ChangeSetNotFoundException
+    , _ChangeSetNotFoundException
+
+    -- ** InvalidChangeSetStatusException
+    , _InvalidChangeSetStatusException
+
     -- ** InsufficientCapabilitiesException
     , _InsufficientCapabilitiesException
 
@@ -77,6 +83,9 @@
     -- ** GetTemplateSummary
     , module Network.AWS.CloudFormation.GetTemplateSummary
 
+    -- ** ListChangeSets
+    , module Network.AWS.CloudFormation.ListChangeSets
+
     -- ** ListStackResources (Paginated)
     , module Network.AWS.CloudFormation.ListStackResources
 
@@ -86,6 +95,12 @@
     -- ** DescribeStacks (Paginated)
     , module Network.AWS.CloudFormation.DescribeStacks
 
+    -- ** CreateChangeSet
+    , module Network.AWS.CloudFormation.CreateChangeSet
+
+    -- ** ExecuteChangeSet
+    , module Network.AWS.CloudFormation.ExecuteChangeSet
+
     -- ** ContinueUpdateRollback
     , module Network.AWS.CloudFormation.ContinueUpdateRollback
 
@@ -119,9 +134,15 @@
     -- ** EstimateTemplateCost
     , module Network.AWS.CloudFormation.EstimateTemplateCost
 
+    -- ** DeleteChangeSet
+    , module Network.AWS.CloudFormation.DeleteChangeSet
+
     -- ** GetTemplate
     , module Network.AWS.CloudFormation.GetTemplate
 
+    -- ** DescribeChangeSet
+    , module Network.AWS.CloudFormation.DescribeChangeSet
+
     -- ** DescribeStackResource
     , module Network.AWS.CloudFormation.DescribeStackResource
 
@@ -130,9 +151,33 @@
     -- ** Capability
     , Capability (..)
 
+    -- ** ChangeAction
+    , ChangeAction (..)
+
+    -- ** ChangeSetStatus
+    , ChangeSetStatus (..)
+
+    -- ** ChangeSource
+    , ChangeSource (..)
+
+    -- ** ChangeType
+    , ChangeType (..)
+
+    -- ** EvaluationType
+    , EvaluationType (..)
+
     -- ** OnFailure
     , OnFailure (..)
 
+    -- ** Replacement
+    , Replacement (..)
+
+    -- ** RequiresRecreation
+    , RequiresRecreation (..)
+
+    -- ** ResourceAttribute
+    , ResourceAttribute (..)
+
     -- ** ResourceSignalStatus
     , ResourceSignalStatus (..)
 
@@ -148,6 +193,24 @@
     , alValue
     , alName
 
+    -- ** Change
+    , Change
+    , change
+    , cResourceChange
+    , cType
+
+    -- ** ChangeSetSummary
+    , ChangeSetSummary
+    , changeSetSummary
+    , cssCreationTime
+    , cssStatus
+    , cssChangeSetName
+    , cssChangeSetId
+    , cssStatusReason
+    , cssStackId
+    , cssDescription
+    , cssStackName
+
     -- ** Output
     , Output
     , output
@@ -177,6 +240,32 @@
     , pdNoEcho
     , pdDescription
 
+    -- ** ResourceChange
+    , ResourceChange
+    , resourceChange
+    , rcLogicalResourceId
+    , rcPhysicalResourceId
+    , rcResourceType
+    , rcAction
+    , rcScope
+    , rcDetails
+    , rcReplacement
+
+    -- ** ResourceChangeDetail
+    , ResourceChangeDetail
+    , resourceChangeDetail
+    , rcdCausingEntity
+    , rcdChangeSource
+    , rcdEvaluation
+    , rcdTarget
+
+    -- ** ResourceTargetDefinition
+    , ResourceTargetDefinition
+    , resourceTargetDefinition
+    , rtdAttribute
+    , rtdRequiresRecreation
+    , rtdName
+
     -- ** Stack
     , Stack
     , stack
@@ -275,17 +364,22 @@
 
 import           Network.AWS.CloudFormation.CancelUpdateStack
 import           Network.AWS.CloudFormation.ContinueUpdateRollback
+import           Network.AWS.CloudFormation.CreateChangeSet
 import           Network.AWS.CloudFormation.CreateStack
+import           Network.AWS.CloudFormation.DeleteChangeSet
 import           Network.AWS.CloudFormation.DeleteStack
 import           Network.AWS.CloudFormation.DescribeAccountLimits
+import           Network.AWS.CloudFormation.DescribeChangeSet
 import           Network.AWS.CloudFormation.DescribeStackEvents
 import           Network.AWS.CloudFormation.DescribeStackResource
 import           Network.AWS.CloudFormation.DescribeStackResources
 import           Network.AWS.CloudFormation.DescribeStacks
 import           Network.AWS.CloudFormation.EstimateTemplateCost
+import           Network.AWS.CloudFormation.ExecuteChangeSet
 import           Network.AWS.CloudFormation.GetStackPolicy
 import           Network.AWS.CloudFormation.GetTemplate
 import           Network.AWS.CloudFormation.GetTemplateSummary
+import           Network.AWS.CloudFormation.ListChangeSets
 import           Network.AWS.CloudFormation.ListStackResources
 import           Network.AWS.CloudFormation.ListStacks
 import           Network.AWS.CloudFormation.SetStackPolicy
diff --git a/gen/Network/AWS/CloudFormation/CancelUpdateStack.hs b/gen/Network/AWS/CloudFormation/CancelUpdateStack.hs
--- a/gen/Network/AWS/CloudFormation/CancelUpdateStack.hs
+++ b/gen/Network/AWS/CloudFormation/CancelUpdateStack.hs
@@ -74,6 +74,8 @@
 
 instance Hashable CancelUpdateStack
 
+instance NFData CancelUpdateStack
+
 instance ToHeaders CancelUpdateStack where
         toHeaders = const mempty
 
@@ -97,3 +99,5 @@
 cancelUpdateStackResponse
     :: CancelUpdateStackResponse
 cancelUpdateStackResponse = CancelUpdateStackResponse'
+
+instance NFData CancelUpdateStackResponse
diff --git a/gen/Network/AWS/CloudFormation/ContinueUpdateRollback.hs b/gen/Network/AWS/CloudFormation/ContinueUpdateRollback.hs
--- a/gen/Network/AWS/CloudFormation/ContinueUpdateRollback.hs
+++ b/gen/Network/AWS/CloudFormation/ContinueUpdateRollback.hs
@@ -92,6 +92,8 @@
 
 instance Hashable ContinueUpdateRollback
 
+instance NFData ContinueUpdateRollback
+
 instance ToHeaders ContinueUpdateRollback where
         toHeaders = const mempty
 
@@ -129,3 +131,5 @@
 -- | The response status code.
 currsResponseStatus :: Lens' ContinueUpdateRollbackResponse Int
 currsResponseStatus = lens _currsResponseStatus (\ s a -> s{_currsResponseStatus = a});
+
+instance NFData ContinueUpdateRollbackResponse
diff --git a/gen/Network/AWS/CloudFormation/CreateChangeSet.hs b/gen/Network/AWS/CloudFormation/CreateChangeSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudFormation/CreateChangeSet.hs
@@ -0,0 +1,318 @@
+{-# 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.CloudFormation.CreateChangeSet
+-- Copyright   : (c) 2013-2016 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)
+--
+-- Creates a list of changes for a stack. AWS CloudFormation generates the
+-- change set by comparing the stack\'s information with the information
+-- that you submit. A change set can help you understand which resources
+-- AWS CloudFormation will change and how it will change them before you
+-- update your stack. Change sets allow you to check before you make a
+-- change so that you don\'t delete or replace critical resources.
+--
+-- AWS CloudFormation doesn\'t make any changes to the stack when you
+-- create a change set. To make the specified changes, you must execute the
+-- change set by using the < ExecuteChangeSet> action.
+--
+-- After the call successfully completes, AWS CloudFormation starts
+-- creating the change set. To check the status of the change set, use the
+-- < DescribeChangeSet> action.
+module Network.AWS.CloudFormation.CreateChangeSet
+    (
+    -- * Creating a Request
+      createChangeSet
+    , CreateChangeSet
+    -- * Request Lenses
+    , ccsUsePreviousTemplate
+    , ccsClientToken
+    , ccsNotificationARNs
+    , ccsParameters
+    , ccsTemplateBody
+    , ccsTemplateURL
+    , ccsDescription
+    , ccsCapabilities
+    , ccsResourceTypes
+    , ccsTags
+    , ccsStackName
+    , ccsChangeSetName
+
+    -- * Destructuring the Response
+    , createChangeSetResponse
+    , CreateChangeSetResponse
+    -- * Response Lenses
+    , ccsrsId
+    , ccsrsResponseStatus
+    ) where
+
+import           Network.AWS.CloudFormation.Types
+import           Network.AWS.CloudFormation.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | The input for the < CreateChangeSet> action.
+--
+-- /See:/ 'createChangeSet' smart constructor.
+data CreateChangeSet = CreateChangeSet'
+    { _ccsUsePreviousTemplate :: !(Maybe Bool)
+    , _ccsClientToken         :: !(Maybe Text)
+    , _ccsNotificationARNs    :: !(Maybe [Text])
+    , _ccsParameters          :: !(Maybe [Parameter])
+    , _ccsTemplateBody        :: !(Maybe Text)
+    , _ccsTemplateURL         :: !(Maybe Text)
+    , _ccsDescription         :: !(Maybe Text)
+    , _ccsCapabilities        :: !(Maybe [Capability])
+    , _ccsResourceTypes       :: !(Maybe [Text])
+    , _ccsTags                :: !(Maybe [Tag])
+    , _ccsStackName           :: !Text
+    , _ccsChangeSetName       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateChangeSet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccsUsePreviousTemplate'
+--
+-- * 'ccsClientToken'
+--
+-- * 'ccsNotificationARNs'
+--
+-- * 'ccsParameters'
+--
+-- * 'ccsTemplateBody'
+--
+-- * 'ccsTemplateURL'
+--
+-- * 'ccsDescription'
+--
+-- * 'ccsCapabilities'
+--
+-- * 'ccsResourceTypes'
+--
+-- * 'ccsTags'
+--
+-- * 'ccsStackName'
+--
+-- * 'ccsChangeSetName'
+createChangeSet
+    :: Text -- ^ 'ccsStackName'
+    -> Text -- ^ 'ccsChangeSetName'
+    -> CreateChangeSet
+createChangeSet pStackName_ pChangeSetName_ =
+    CreateChangeSet'
+    { _ccsUsePreviousTemplate = Nothing
+    , _ccsClientToken = Nothing
+    , _ccsNotificationARNs = Nothing
+    , _ccsParameters = Nothing
+    , _ccsTemplateBody = Nothing
+    , _ccsTemplateURL = Nothing
+    , _ccsDescription = Nothing
+    , _ccsCapabilities = Nothing
+    , _ccsResourceTypes = Nothing
+    , _ccsTags = Nothing
+    , _ccsStackName = pStackName_
+    , _ccsChangeSetName = pChangeSetName_
+    }
+
+-- | Whether to reuse the template that is associated with the stack to
+-- create the change set.
+ccsUsePreviousTemplate :: Lens' CreateChangeSet (Maybe Bool)
+ccsUsePreviousTemplate = lens _ccsUsePreviousTemplate (\ s a -> s{_ccsUsePreviousTemplate = a});
+
+-- | A unique identifier for this 'CreateChangeSet' request. Specify this
+-- token if you plan to retry requests so that AWS CloudFormation knows
+-- that you\'re not attempting to create another change set with the same
+-- name. You might retry 'CreateChangeSet' requests to ensure that AWS
+-- CloudFormation successfully received them.
+ccsClientToken :: Lens' CreateChangeSet (Maybe Text)
+ccsClientToken = lens _ccsClientToken (\ s a -> s{_ccsClientToken = a});
+
+-- | The Amazon Resource Names (ARNs) of Amazon Simple Notification Service
+-- (Amazon SNS) topics that AWS CloudFormation associates with the stack.
+-- To remove all associated notification topics, specify an empty list.
+ccsNotificationARNs :: Lens' CreateChangeSet [Text]
+ccsNotificationARNs = lens _ccsNotificationARNs (\ s a -> s{_ccsNotificationARNs = a}) . _Default . _Coerce;
+
+-- | A list of 'Parameter' structures that specify input parameters for the
+-- change set. For more information, see the
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html Parameter>
+-- data type.
+ccsParameters :: Lens' CreateChangeSet [Parameter]
+ccsParameters = lens _ccsParameters (\ s a -> s{_ccsParameters = a}) . _Default . _Coerce;
+
+-- | A structure that contains the body of the revised template, with a
+-- minimum length of 1 byte and a maximum length of 51,200 bytes. AWS
+-- CloudFormation generates the change set by comparing this template with
+-- the template of the stack that you specified.
+--
+-- Conditional: You must specify only 'TemplateBody' or 'TemplateURL'.
+ccsTemplateBody :: Lens' CreateChangeSet (Maybe Text)
+ccsTemplateBody = lens _ccsTemplateBody (\ s a -> s{_ccsTemplateBody = a});
+
+-- | The location of the file that contains the revised template. The URL
+-- must point to a template (max size: 460,800 bytes) that is located in an
+-- S3 bucket. AWS CloudFormation generates the change set by comparing this
+-- template with the stack that you specified.
+--
+-- Conditional: You must specify only 'TemplateBody' or 'TemplateURL'.
+ccsTemplateURL :: Lens' CreateChangeSet (Maybe Text)
+ccsTemplateURL = lens _ccsTemplateURL (\ s a -> s{_ccsTemplateURL = a});
+
+-- | A description to help you identify this change set.
+ccsDescription :: Lens' CreateChangeSet (Maybe Text)
+ccsDescription = lens _ccsDescription (\ s a -> s{_ccsDescription = a});
+
+-- | A list of capabilities that you must specify before AWS CloudFormation
+-- can update certain stacks. Some stack templates might include resources
+-- that can affect permissions in your AWS account, for example, by
+-- creating new AWS Identity and Access Management (IAM) users. For those
+-- stacks, you must explicitly acknowledge their capabilities by specifying
+-- this parameter.
+--
+-- Currently, the only valid value is 'CAPABILITY_IAM', which is required
+-- for the following resources:
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html AWS::IAM::AccessKey>,
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html AWS::IAM::Group>,
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html AWS::IAM::InstanceProfile>,
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html AWS::IAM::Policy>,
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html AWS::IAM::Role>,
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html AWS::IAM::User>,
+-- and
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html AWS::IAM::UserToGroupAddition>.
+-- If your stack template contains these resources, we recommend that you
+-- review all permissions associated with them and edit their permissions
+-- if necessary. If your template contains any of the listed resources and
+-- you don\'t specify this parameter, this action returns an
+-- 'InsufficientCapabilities' error.
+ccsCapabilities :: Lens' CreateChangeSet [Capability]
+ccsCapabilities = lens _ccsCapabilities (\ s a -> s{_ccsCapabilities = a}) . _Default . _Coerce;
+
+-- | The template resource types that you have permissions to work with if
+-- you execute this change set, such as 'AWS::EC2::Instance',
+-- 'AWS::EC2::*', or 'Custom::MyCustomInstance'.
+--
+-- If the list of resource types doesn\'t include a resource type that
+-- you\'re updating, the stack update fails. By default, AWS CloudFormation
+-- grants permissions to all resource types. AWS Identity and Access
+-- Management (IAM) uses this parameter for condition keys in IAM policies
+-- for AWS CloudFormation. For more information, see
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html Controlling Access with AWS Identity and Access Management>
+-- in the AWS CloudFormation User Guide.
+ccsResourceTypes :: Lens' CreateChangeSet [Text]
+ccsResourceTypes = lens _ccsResourceTypes (\ s a -> s{_ccsResourceTypes = a}) . _Default . _Coerce;
+
+-- | Key-value pairs to associate with this stack. AWS CloudFormation also
+-- propagates these tags to resources in the stack. You can specify a
+-- maximum of 10 tags.
+ccsTags :: Lens' CreateChangeSet [Tag]
+ccsTags = lens _ccsTags (\ s a -> s{_ccsTags = a}) . _Default . _Coerce;
+
+-- | The name or the unique ID of the stack for which you are creating a
+-- change set. AWS CloudFormation generates the change set by comparing
+-- this stack\'s information with the information that you submit, such as
+-- a modified template or different parameter input values.
+ccsStackName :: Lens' CreateChangeSet Text
+ccsStackName = lens _ccsStackName (\ s a -> s{_ccsStackName = a});
+
+-- | The name of the change set. The name must be unique among all change
+-- sets that are associated with the specified stack.
+--
+-- A change set name can contain only alphanumeric, case sensitive
+-- characters and hyphens. It must start with an alphabetic character and
+-- cannot exceed 128 characters.
+ccsChangeSetName :: Lens' CreateChangeSet Text
+ccsChangeSetName = lens _ccsChangeSetName (\ s a -> s{_ccsChangeSetName = a});
+
+instance AWSRequest CreateChangeSet where
+        type Rs CreateChangeSet = CreateChangeSetResponse
+        request = postQuery cloudFormation
+        response
+          = receiveXMLWrapper "CreateChangeSetResult"
+              (\ s h x ->
+                 CreateChangeSetResponse' <$>
+                   (x .@? "Id") <*> (pure (fromEnum s)))
+
+instance Hashable CreateChangeSet
+
+instance NFData CreateChangeSet
+
+instance ToHeaders CreateChangeSet where
+        toHeaders = const mempty
+
+instance ToPath CreateChangeSet where
+        toPath = const "/"
+
+instance ToQuery CreateChangeSet where
+        toQuery CreateChangeSet'{..}
+          = mconcat
+              ["Action" =: ("CreateChangeSet" :: ByteString),
+               "Version" =: ("2010-05-15" :: ByteString),
+               "UsePreviousTemplate" =: _ccsUsePreviousTemplate,
+               "ClientToken" =: _ccsClientToken,
+               "NotificationARNs" =:
+                 toQuery
+                   (toQueryList "member" <$> _ccsNotificationARNs),
+               "Parameters" =:
+                 toQuery (toQueryList "member" <$> _ccsParameters),
+               "TemplateBody" =: _ccsTemplateBody,
+               "TemplateURL" =: _ccsTemplateURL,
+               "Description" =: _ccsDescription,
+               "Capabilities" =:
+                 toQuery (toQueryList "member" <$> _ccsCapabilities),
+               "ResourceTypes" =:
+                 toQuery (toQueryList "member" <$> _ccsResourceTypes),
+               "Tags" =:
+                 toQuery (toQueryList "member" <$> _ccsTags),
+               "StackName" =: _ccsStackName,
+               "ChangeSetName" =: _ccsChangeSetName]
+
+-- | The output for the < CreateChangeSet> action.
+--
+-- /See:/ 'createChangeSetResponse' smart constructor.
+data CreateChangeSetResponse = CreateChangeSetResponse'
+    { _ccsrsId             :: !(Maybe Text)
+    , _ccsrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateChangeSetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccsrsId'
+--
+-- * 'ccsrsResponseStatus'
+createChangeSetResponse
+    :: Int -- ^ 'ccsrsResponseStatus'
+    -> CreateChangeSetResponse
+createChangeSetResponse pResponseStatus_ =
+    CreateChangeSetResponse'
+    { _ccsrsId = Nothing
+    , _ccsrsResponseStatus = pResponseStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the change set.
+ccsrsId :: Lens' CreateChangeSetResponse (Maybe Text)
+ccsrsId = lens _ccsrsId (\ s a -> s{_ccsrsId = a});
+
+-- | The response status code.
+ccsrsResponseStatus :: Lens' CreateChangeSetResponse Int
+ccsrsResponseStatus = lens _ccsrsResponseStatus (\ s a -> s{_ccsrsResponseStatus = a});
+
+instance NFData CreateChangeSetResponse
diff --git a/gen/Network/AWS/CloudFormation/CreateStack.hs b/gen/Network/AWS/CloudFormation/CreateStack.hs
--- a/gen/Network/AWS/CloudFormation/CreateStack.hs
+++ b/gen/Network/AWS/CloudFormation/CreateStack.hs
@@ -181,8 +181,9 @@
 csTemplateURL = lens _csTemplateURL (\ s a -> s{_csTemplateURL = a});
 
 -- | A list of capabilities that you must specify before AWS CloudFormation
--- can create or update certain stacks. Some stack templates might include
--- resources that can affect permissions in your AWS account. For those
+-- can create certain stacks. Some stack templates might include resources
+-- that can affect permissions in your AWS account, for example, by
+-- creating new AWS Identity and Access Management (IAM) users. For those
 -- stacks, you must explicitly acknowledge their capabilities by specifying
 -- this parameter.
 --
@@ -197,8 +198,10 @@
 -- and
 -- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html AWS::IAM::UserToGroupAddition>.
 -- If your stack template contains these resources, we recommend that you
--- review any permissions associated with them. If you don\'t specify this
--- parameter, this action returns an 'InsufficientCapabilities' error.
+-- review all permissions associated with them and edit their permissions
+-- if necessary. If your template contains any of the listed resources and
+-- you don\'t specify this parameter, this action returns an
+-- 'InsufficientCapabilities' error.
 csCapabilities :: Lens' CreateStack [Capability]
 csCapabilities = lens _csCapabilities (\ s a -> s{_csCapabilities = a}) . _Default . _Coerce;
 
@@ -260,6 +263,8 @@
 
 instance Hashable CreateStack
 
+instance NFData CreateStack
+
 instance ToHeaders CreateStack where
         toHeaders = const mempty
 
@@ -321,3 +326,5 @@
 -- | The response status code.
 csrsResponseStatus :: Lens' CreateStackResponse Int
 csrsResponseStatus = lens _csrsResponseStatus (\ s a -> s{_csrsResponseStatus = a});
+
+instance NFData CreateStackResponse
diff --git a/gen/Network/AWS/CloudFormation/DeleteChangeSet.hs b/gen/Network/AWS/CloudFormation/DeleteChangeSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudFormation/DeleteChangeSet.hs
@@ -0,0 +1,133 @@
+{-# 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.CloudFormation.DeleteChangeSet
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified change set. Deleting change sets ensures that no
+-- one executes the wrong change set.
+--
+-- If the call successfully completes, AWS CloudFormation successfully
+-- deleted the change set.
+module Network.AWS.CloudFormation.DeleteChangeSet
+    (
+    -- * Creating a Request
+      deleteChangeSet
+    , DeleteChangeSet
+    -- * Request Lenses
+    , dcsStackName
+    , dcsChangeSetName
+
+    -- * Destructuring the Response
+    , deleteChangeSetResponse
+    , DeleteChangeSetResponse
+    -- * Response Lenses
+    , dcsrsResponseStatus
+    ) where
+
+import           Network.AWS.CloudFormation.Types
+import           Network.AWS.CloudFormation.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | The input for the < DeleteChangeSet> action.
+--
+-- /See:/ 'deleteChangeSet' smart constructor.
+data DeleteChangeSet = DeleteChangeSet'
+    { _dcsStackName     :: !(Maybe Text)
+    , _dcsChangeSetName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteChangeSet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcsStackName'
+--
+-- * 'dcsChangeSetName'
+deleteChangeSet
+    :: Text -- ^ 'dcsChangeSetName'
+    -> DeleteChangeSet
+deleteChangeSet pChangeSetName_ =
+    DeleteChangeSet'
+    { _dcsStackName = Nothing
+    , _dcsChangeSetName = pChangeSetName_
+    }
+
+-- | If you specified the name of a change set to delete, specify the stack
+-- name or ID (ARN) that is associated with it.
+dcsStackName :: Lens' DeleteChangeSet (Maybe Text)
+dcsStackName = lens _dcsStackName (\ s a -> s{_dcsStackName = a});
+
+-- | The name or Amazon Resource Name (ARN) of the change set that you want
+-- to delete.
+dcsChangeSetName :: Lens' DeleteChangeSet Text
+dcsChangeSetName = lens _dcsChangeSetName (\ s a -> s{_dcsChangeSetName = a});
+
+instance AWSRequest DeleteChangeSet where
+        type Rs DeleteChangeSet = DeleteChangeSetResponse
+        request = postQuery cloudFormation
+        response
+          = receiveXMLWrapper "DeleteChangeSetResult"
+              (\ s h x ->
+                 DeleteChangeSetResponse' <$> (pure (fromEnum s)))
+
+instance Hashable DeleteChangeSet
+
+instance NFData DeleteChangeSet
+
+instance ToHeaders DeleteChangeSet where
+        toHeaders = const mempty
+
+instance ToPath DeleteChangeSet where
+        toPath = const "/"
+
+instance ToQuery DeleteChangeSet where
+        toQuery DeleteChangeSet'{..}
+          = mconcat
+              ["Action" =: ("DeleteChangeSet" :: ByteString),
+               "Version" =: ("2010-05-15" :: ByteString),
+               "StackName" =: _dcsStackName,
+               "ChangeSetName" =: _dcsChangeSetName]
+
+-- | The output for the < DeleteChangeSet> action.
+--
+-- /See:/ 'deleteChangeSetResponse' smart constructor.
+newtype DeleteChangeSetResponse = DeleteChangeSetResponse'
+    { _dcsrsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteChangeSetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcsrsResponseStatus'
+deleteChangeSetResponse
+    :: Int -- ^ 'dcsrsResponseStatus'
+    -> DeleteChangeSetResponse
+deleteChangeSetResponse pResponseStatus_ =
+    DeleteChangeSetResponse'
+    { _dcsrsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+dcsrsResponseStatus :: Lens' DeleteChangeSetResponse Int
+dcsrsResponseStatus = lens _dcsrsResponseStatus (\ s a -> s{_dcsrsResponseStatus = a});
+
+instance NFData DeleteChangeSetResponse
diff --git a/gen/Network/AWS/CloudFormation/DeleteStack.hs b/gen/Network/AWS/CloudFormation/DeleteStack.hs
--- a/gen/Network/AWS/CloudFormation/DeleteStack.hs
+++ b/gen/Network/AWS/CloudFormation/DeleteStack.hs
@@ -87,6 +87,8 @@
 
 instance Hashable DeleteStack
 
+instance NFData DeleteStack
+
 instance ToHeaders DeleteStack where
         toHeaders = const mempty
 
@@ -113,3 +115,5 @@
 deleteStackResponse
     :: DeleteStackResponse
 deleteStackResponse = DeleteStackResponse'
+
+instance NFData DeleteStackResponse
diff --git a/gen/Network/AWS/CloudFormation/DescribeAccountLimits.hs b/gen/Network/AWS/CloudFormation/DescribeAccountLimits.hs
--- a/gen/Network/AWS/CloudFormation/DescribeAccountLimits.hs
+++ b/gen/Network/AWS/CloudFormation/DescribeAccountLimits.hs
@@ -83,6 +83,8 @@
 
 instance Hashable DescribeAccountLimits
 
+instance NFData DescribeAccountLimits
+
 instance ToHeaders DescribeAccountLimits where
         toHeaders = const mempty
 
@@ -137,3 +139,5 @@
 -- | The response status code.
 dalrsResponseStatus :: Lens' DescribeAccountLimitsResponse Int
 dalrsResponseStatus = lens _dalrsResponseStatus (\ s a -> s{_dalrsResponseStatus = a});
+
+instance NFData DescribeAccountLimitsResponse
diff --git a/gen/Network/AWS/CloudFormation/DescribeChangeSet.hs b/gen/Network/AWS/CloudFormation/DescribeChangeSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudFormation/DescribeChangeSet.hs
@@ -0,0 +1,305 @@
+{-# 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.CloudFormation.DescribeChangeSet
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the inputs for the change set and a list of changes that AWS
+-- CloudFormation will make if you execute the change set. For more
+-- information, see
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html Updating Stacks Using Change Sets>
+-- in the AWS CloudFormation User Guide.
+module Network.AWS.CloudFormation.DescribeChangeSet
+    (
+    -- * Creating a Request
+      describeChangeSet
+    , DescribeChangeSet
+    -- * Request Lenses
+    , desNextToken
+    , desStackName
+    , desChangeSetName
+
+    -- * Destructuring the Response
+    , describeChangeSetResponse
+    , DescribeChangeSetResponse
+    -- * Response Lenses
+    , drsCreationTime
+    , drsStatus
+    , drsChanges
+    , drsNotificationARNs
+    , drsChangeSetName
+    , drsChangeSetId
+    , drsNextToken
+    , drsParameters
+    , drsStatusReason
+    , drsStackId
+    , drsDescription
+    , drsCapabilities
+    , drsTags
+    , drsStackName
+    , drsResponseStatus
+    ) where
+
+import           Network.AWS.CloudFormation.Types
+import           Network.AWS.CloudFormation.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | The input for the < DescribeChangeSet> action.
+--
+-- /See:/ 'describeChangeSet' smart constructor.
+data DescribeChangeSet = DescribeChangeSet'
+    { _desNextToken     :: !(Maybe Text)
+    , _desStackName     :: !(Maybe Text)
+    , _desChangeSetName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeChangeSet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'desNextToken'
+--
+-- * 'desStackName'
+--
+-- * 'desChangeSetName'
+describeChangeSet
+    :: Text -- ^ 'desChangeSetName'
+    -> DescribeChangeSet
+describeChangeSet pChangeSetName_ =
+    DescribeChangeSet'
+    { _desNextToken = Nothing
+    , _desStackName = Nothing
+    , _desChangeSetName = pChangeSetName_
+    }
+
+-- | A string (provided by the < DescribeChangeSet> response output) that
+-- identifies the next page of information that you want to retrieve.
+desNextToken :: Lens' DescribeChangeSet (Maybe Text)
+desNextToken = lens _desNextToken (\ s a -> s{_desNextToken = a});
+
+-- | If you specified the name of a change set, specify the stack name or ID
+-- (ARN) of the change set you want to describe.
+desStackName :: Lens' DescribeChangeSet (Maybe Text)
+desStackName = lens _desStackName (\ s a -> s{_desStackName = a});
+
+-- | The name or Amazon Resource Name (ARN) of the change set that you want
+-- to describe.
+desChangeSetName :: Lens' DescribeChangeSet Text
+desChangeSetName = lens _desChangeSetName (\ s a -> s{_desChangeSetName = a});
+
+instance AWSRequest DescribeChangeSet where
+        type Rs DescribeChangeSet = DescribeChangeSetResponse
+        request = postQuery cloudFormation
+        response
+          = receiveXMLWrapper "DescribeChangeSetResult"
+              (\ s h x ->
+                 DescribeChangeSetResponse' <$>
+                   (x .@? "CreationTime") <*> (x .@? "Status") <*>
+                     (x .@? "Changes" .!@ mempty >>=
+                        may (parseXMLList "member"))
+                     <*>
+                     (x .@? "NotificationARNs" .!@ mempty >>=
+                        may (parseXMLList "member"))
+                     <*> (x .@? "ChangeSetName")
+                     <*> (x .@? "ChangeSetId")
+                     <*> (x .@? "NextToken")
+                     <*>
+                     (x .@? "Parameters" .!@ mempty >>=
+                        may (parseXMLList "member"))
+                     <*> (x .@? "StatusReason")
+                     <*> (x .@? "StackId")
+                     <*> (x .@? "Description")
+                     <*>
+                     (x .@? "Capabilities" .!@ mempty >>=
+                        may (parseXMLList "member"))
+                     <*>
+                     (x .@? "Tags" .!@ mempty >>=
+                        may (parseXMLList "member"))
+                     <*> (x .@? "StackName")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable DescribeChangeSet
+
+instance NFData DescribeChangeSet
+
+instance ToHeaders DescribeChangeSet where
+        toHeaders = const mempty
+
+instance ToPath DescribeChangeSet where
+        toPath = const "/"
+
+instance ToQuery DescribeChangeSet where
+        toQuery DescribeChangeSet'{..}
+          = mconcat
+              ["Action" =: ("DescribeChangeSet" :: ByteString),
+               "Version" =: ("2010-05-15" :: ByteString),
+               "NextToken" =: _desNextToken,
+               "StackName" =: _desStackName,
+               "ChangeSetName" =: _desChangeSetName]
+
+-- | The output for the < DescribeChangeSet> action.
+--
+-- /See:/ 'describeChangeSetResponse' smart constructor.
+data DescribeChangeSetResponse = DescribeChangeSetResponse'
+    { _drsCreationTime     :: !(Maybe ISO8601)
+    , _drsStatus           :: !(Maybe ChangeSetStatus)
+    , _drsChanges          :: !(Maybe [Change])
+    , _drsNotificationARNs :: !(Maybe [Text])
+    , _drsChangeSetName    :: !(Maybe Text)
+    , _drsChangeSetId      :: !(Maybe Text)
+    , _drsNextToken        :: !(Maybe Text)
+    , _drsParameters       :: !(Maybe [Parameter])
+    , _drsStatusReason     :: !(Maybe Text)
+    , _drsStackId          :: !(Maybe Text)
+    , _drsDescription      :: !(Maybe Text)
+    , _drsCapabilities     :: !(Maybe [Capability])
+    , _drsTags             :: !(Maybe [Tag])
+    , _drsStackName        :: !(Maybe Text)
+    , _drsResponseStatus   :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeChangeSetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drsCreationTime'
+--
+-- * 'drsStatus'
+--
+-- * 'drsChanges'
+--
+-- * 'drsNotificationARNs'
+--
+-- * 'drsChangeSetName'
+--
+-- * 'drsChangeSetId'
+--
+-- * 'drsNextToken'
+--
+-- * 'drsParameters'
+--
+-- * 'drsStatusReason'
+--
+-- * 'drsStackId'
+--
+-- * 'drsDescription'
+--
+-- * 'drsCapabilities'
+--
+-- * 'drsTags'
+--
+-- * 'drsStackName'
+--
+-- * 'drsResponseStatus'
+describeChangeSetResponse
+    :: Int -- ^ 'drsResponseStatus'
+    -> DescribeChangeSetResponse
+describeChangeSetResponse pResponseStatus_ =
+    DescribeChangeSetResponse'
+    { _drsCreationTime = Nothing
+    , _drsStatus = Nothing
+    , _drsChanges = Nothing
+    , _drsNotificationARNs = Nothing
+    , _drsChangeSetName = Nothing
+    , _drsChangeSetId = Nothing
+    , _drsNextToken = Nothing
+    , _drsParameters = Nothing
+    , _drsStatusReason = Nothing
+    , _drsStackId = Nothing
+    , _drsDescription = Nothing
+    , _drsCapabilities = Nothing
+    , _drsTags = Nothing
+    , _drsStackName = Nothing
+    , _drsResponseStatus = pResponseStatus_
+    }
+
+-- | The start time when the change set was created, in UTC.
+drsCreationTime :: Lens' DescribeChangeSetResponse (Maybe UTCTime)
+drsCreationTime = lens _drsCreationTime (\ s a -> s{_drsCreationTime = a}) . mapping _Time;
+
+-- | The current status of the change set, such as 'CREATE_IN_PROGRESS',
+-- 'CREATE_COMPLETE', or 'FAILED'.
+drsStatus :: Lens' DescribeChangeSetResponse (Maybe ChangeSetStatus)
+drsStatus = lens _drsStatus (\ s a -> s{_drsStatus = a});
+
+-- | A list of 'Change' structures that describes the resources AWS
+-- CloudFormation changes if you execute the change set.
+drsChanges :: Lens' DescribeChangeSetResponse [Change]
+drsChanges = lens _drsChanges (\ s a -> s{_drsChanges = a}) . _Default . _Coerce;
+
+-- | The ARNs of the Amazon Simple Notification Service (Amazon SNS) topics
+-- that will be associated with the stack if you execute the change set.
+drsNotificationARNs :: Lens' DescribeChangeSetResponse [Text]
+drsNotificationARNs = lens _drsNotificationARNs (\ s a -> s{_drsNotificationARNs = a}) . _Default . _Coerce;
+
+-- | The name of the change set.
+drsChangeSetName :: Lens' DescribeChangeSetResponse (Maybe Text)
+drsChangeSetName = lens _drsChangeSetName (\ s a -> s{_drsChangeSetName = a});
+
+-- | The ARN of the change set.
+drsChangeSetId :: Lens' DescribeChangeSetResponse (Maybe Text)
+drsChangeSetId = lens _drsChangeSetId (\ s a -> s{_drsChangeSetId = a});
+
+-- | If the output exceeds 1 MB, a string that identifies the next page of
+-- changes. If there is no additional page, this value is null.
+drsNextToken :: Lens' DescribeChangeSetResponse (Maybe Text)
+drsNextToken = lens _drsNextToken (\ s a -> s{_drsNextToken = a});
+
+-- | A list of 'Parameter' structures that describes the input parameters and
+-- their values used to create the change set. For more information, see
+-- the
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html Parameter>
+-- data type.
+drsParameters :: Lens' DescribeChangeSetResponse [Parameter]
+drsParameters = lens _drsParameters (\ s a -> s{_drsParameters = a}) . _Default . _Coerce;
+
+-- | A description of the change set\'s status. For example, if your attempt
+-- to create a change set failed, AWS CloudFormation shows the error
+-- message.
+drsStatusReason :: Lens' DescribeChangeSetResponse (Maybe Text)
+drsStatusReason = lens _drsStatusReason (\ s a -> s{_drsStatusReason = a});
+
+-- | The ARN of the stack that is associated with the change set.
+drsStackId :: Lens' DescribeChangeSetResponse (Maybe Text)
+drsStackId = lens _drsStackId (\ s a -> s{_drsStackId = a});
+
+-- | Information about the change set.
+drsDescription :: Lens' DescribeChangeSetResponse (Maybe Text)
+drsDescription = lens _drsDescription (\ s a -> s{_drsDescription = a});
+
+-- | If you execute the change set, the list of capabilities that were
+-- explicitly acknowledged when the change set was created.
+drsCapabilities :: Lens' DescribeChangeSetResponse [Capability]
+drsCapabilities = lens _drsCapabilities (\ s a -> s{_drsCapabilities = a}) . _Default . _Coerce;
+
+-- | If you execute the change set, the tags that will be associated with the
+-- stack.
+drsTags :: Lens' DescribeChangeSetResponse [Tag]
+drsTags = lens _drsTags (\ s a -> s{_drsTags = a}) . _Default . _Coerce;
+
+-- | The name of the stack that is associated with the change set.
+drsStackName :: Lens' DescribeChangeSetResponse (Maybe Text)
+drsStackName = lens _drsStackName (\ s a -> s{_drsStackName = a});
+
+-- | The response status code.
+drsResponseStatus :: Lens' DescribeChangeSetResponse Int
+drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
+
+instance NFData DescribeChangeSetResponse
diff --git a/gen/Network/AWS/CloudFormation/DescribeStackEvents.hs b/gen/Network/AWS/CloudFormation/DescribeStackEvents.hs
--- a/gen/Network/AWS/CloudFormation/DescribeStackEvents.hs
+++ b/gen/Network/AWS/CloudFormation/DescribeStackEvents.hs
@@ -114,6 +114,8 @@
 
 instance Hashable DescribeStackEvents
 
+instance NFData DescribeStackEvents
+
 instance ToHeaders DescribeStackEvents where
         toHeaders = const mempty
 
@@ -168,3 +170,5 @@
 -- | The response status code.
 dsersResponseStatus :: Lens' DescribeStackEventsResponse Int
 dsersResponseStatus = lens _dsersResponseStatus (\ s a -> s{_dsersResponseStatus = a});
+
+instance NFData DescribeStackEventsResponse
diff --git a/gen/Network/AWS/CloudFormation/DescribeStackResource.hs b/gen/Network/AWS/CloudFormation/DescribeStackResource.hs
--- a/gen/Network/AWS/CloudFormation/DescribeStackResource.hs
+++ b/gen/Network/AWS/CloudFormation/DescribeStackResource.hs
@@ -28,8 +28,8 @@
       describeStackResource
     , DescribeStackResource
     -- * Request Lenses
-    , desStackName
-    , desLogicalResourceId
+    , dsrsStackName
+    , dsrsLogicalResourceId
 
     -- * Destructuring the Response
     , describeStackResourceResponse
@@ -50,25 +50,25 @@
 --
 -- /See:/ 'describeStackResource' smart constructor.
 data DescribeStackResource = DescribeStackResource'
-    { _desStackName         :: !Text
-    , _desLogicalResourceId :: !Text
+    { _dsrsStackName         :: !Text
+    , _dsrsLogicalResourceId :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeStackResource' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'desStackName'
+-- * 'dsrsStackName'
 --
--- * 'desLogicalResourceId'
+-- * 'dsrsLogicalResourceId'
 describeStackResource
-    :: Text -- ^ 'desStackName'
-    -> Text -- ^ 'desLogicalResourceId'
+    :: Text -- ^ 'dsrsStackName'
+    -> Text -- ^ 'dsrsLogicalResourceId'
     -> DescribeStackResource
 describeStackResource pStackName_ pLogicalResourceId_ =
     DescribeStackResource'
-    { _desStackName = pStackName_
-    , _desLogicalResourceId = pLogicalResourceId_
+    { _dsrsStackName = pStackName_
+    , _dsrsLogicalResourceId = pLogicalResourceId_
     }
 
 -- | The name or the unique stack ID that is associated with the stack, which
@@ -79,14 +79,14 @@
 -- -   Deleted stacks: You must specify the unique stack ID.
 --
 -- Default: There is no default value.
-desStackName :: Lens' DescribeStackResource Text
-desStackName = lens _desStackName (\ s a -> s{_desStackName = a});
+dsrsStackName :: Lens' DescribeStackResource Text
+dsrsStackName = lens _dsrsStackName (\ s a -> s{_dsrsStackName = a});
 
 -- | The logical name of the resource as specified in the template.
 --
 -- Default: There is no default value.
-desLogicalResourceId :: Lens' DescribeStackResource Text
-desLogicalResourceId = lens _desLogicalResourceId (\ s a -> s{_desLogicalResourceId = a});
+dsrsLogicalResourceId :: Lens' DescribeStackResource Text
+dsrsLogicalResourceId = lens _dsrsLogicalResourceId (\ s a -> s{_dsrsLogicalResourceId = a});
 
 instance AWSRequest DescribeStackResource where
         type Rs DescribeStackResource =
@@ -101,6 +101,8 @@
 
 instance Hashable DescribeStackResource
 
+instance NFData DescribeStackResource
+
 instance ToHeaders DescribeStackResource where
         toHeaders = const mempty
 
@@ -112,8 +114,8 @@
           = mconcat
               ["Action" =: ("DescribeStackResource" :: ByteString),
                "Version" =: ("2010-05-15" :: ByteString),
-               "StackName" =: _desStackName,
-               "LogicalResourceId" =: _desLogicalResourceId]
+               "StackName" =: _dsrsStackName,
+               "LogicalResourceId" =: _dsrsLogicalResourceId]
 
 -- | The output for a < DescribeStackResource> action.
 --
@@ -147,3 +149,5 @@
 -- | The response status code.
 dsrrsResponseStatus :: Lens' DescribeStackResourceResponse Int
 dsrrsResponseStatus = lens _dsrrsResponseStatus (\ s a -> s{_dsrrsResponseStatus = a});
+
+instance NFData DescribeStackResourceResponse
diff --git a/gen/Network/AWS/CloudFormation/DescribeStackResources.hs b/gen/Network/AWS/CloudFormation/DescribeStackResources.hs
--- a/gen/Network/AWS/CloudFormation/DescribeStackResources.hs
+++ b/gen/Network/AWS/CloudFormation/DescribeStackResources.hs
@@ -52,8 +52,8 @@
     , describeStackResourcesResponse
     , DescribeStackResourcesResponse
     -- * Response Lenses
-    , drsStackResources
-    , drsResponseStatus
+    , dsrsrsStackResources
+    , dsrsrsResponseStatus
     ) where
 
 import           Network.AWS.CloudFormation.Types
@@ -139,6 +139,8 @@
 
 instance Hashable DescribeStackResources
 
+instance NFData DescribeStackResources
+
 instance ToHeaders DescribeStackResources where
         toHeaders = const mempty
 
@@ -159,30 +161,32 @@
 --
 -- /See:/ 'describeStackResourcesResponse' smart constructor.
 data DescribeStackResourcesResponse = DescribeStackResourcesResponse'
-    { _drsStackResources :: !(Maybe [StackResource])
-    , _drsResponseStatus :: !Int
+    { _dsrsrsStackResources :: !(Maybe [StackResource])
+    , _dsrsrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeStackResourcesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drsStackResources'
+-- * 'dsrsrsStackResources'
 --
--- * 'drsResponseStatus'
+-- * 'dsrsrsResponseStatus'
 describeStackResourcesResponse
-    :: Int -- ^ 'drsResponseStatus'
+    :: Int -- ^ 'dsrsrsResponseStatus'
     -> DescribeStackResourcesResponse
 describeStackResourcesResponse pResponseStatus_ =
     DescribeStackResourcesResponse'
-    { _drsStackResources = Nothing
-    , _drsResponseStatus = pResponseStatus_
+    { _dsrsrsStackResources = Nothing
+    , _dsrsrsResponseStatus = pResponseStatus_
     }
 
 -- | A list of 'StackResource' structures.
-drsStackResources :: Lens' DescribeStackResourcesResponse [StackResource]
-drsStackResources = lens _drsStackResources (\ s a -> s{_drsStackResources = a}) . _Default . _Coerce;
+dsrsrsStackResources :: Lens' DescribeStackResourcesResponse [StackResource]
+dsrsrsStackResources = lens _dsrsrsStackResources (\ s a -> s{_dsrsrsStackResources = a}) . _Default . _Coerce;
 
 -- | The response status code.
-drsResponseStatus :: Lens' DescribeStackResourcesResponse Int
-drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
+dsrsrsResponseStatus :: Lens' DescribeStackResourcesResponse Int
+dsrsrsResponseStatus = lens _dsrsrsResponseStatus (\ s a -> s{_dsrsrsResponseStatus = a});
+
+instance NFData DescribeStackResourcesResponse
diff --git a/gen/Network/AWS/CloudFormation/DescribeStacks.hs b/gen/Network/AWS/CloudFormation/DescribeStacks.hs
--- a/gen/Network/AWS/CloudFormation/DescribeStacks.hs
+++ b/gen/Network/AWS/CloudFormation/DescribeStacks.hs
@@ -108,6 +108,8 @@
 
 instance Hashable DescribeStacks
 
+instance NFData DescribeStacks
+
 instance ToHeaders DescribeStacks where
         toHeaders = const mempty
 
@@ -162,3 +164,5 @@
 -- | The response status code.
 dsrsResponseStatus :: Lens' DescribeStacksResponse Int
 dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a});
+
+instance NFData DescribeStacksResponse
diff --git a/gen/Network/AWS/CloudFormation/EstimateTemplateCost.hs b/gen/Network/AWS/CloudFormation/EstimateTemplateCost.hs
--- a/gen/Network/AWS/CloudFormation/EstimateTemplateCost.hs
+++ b/gen/Network/AWS/CloudFormation/EstimateTemplateCost.hs
@@ -108,6 +108,8 @@
 
 instance Hashable EstimateTemplateCost
 
+instance NFData EstimateTemplateCost
+
 instance ToHeaders EstimateTemplateCost where
         toHeaders = const mempty
 
@@ -156,3 +158,5 @@
 -- | The response status code.
 etcrsResponseStatus :: Lens' EstimateTemplateCostResponse Int
 etcrsResponseStatus = lens _etcrsResponseStatus (\ s a -> s{_etcrsResponseStatus = a});
+
+instance NFData EstimateTemplateCostResponse
diff --git a/gen/Network/AWS/CloudFormation/ExecuteChangeSet.hs b/gen/Network/AWS/CloudFormation/ExecuteChangeSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudFormation/ExecuteChangeSet.hs
@@ -0,0 +1,140 @@
+{-# 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.CloudFormation.ExecuteChangeSet
+-- Copyright   : (c) 2013-2016 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)
+--
+-- Updates a stack using the input information that was provided when the
+-- specified change set was created. After the call successfully completes,
+-- AWS CloudFormation starts updating the stack. Use the < DescribeStacks>
+-- action to view the status of the update.
+--
+-- When you execute a change set, AWS CloudFormation deletes all other
+-- change sets associated with the stack because they aren\'t valid for the
+-- updated stack.
+--
+-- If a stack policy is associated with the stack, AWS CloudFormation
+-- enforces the policy during the update. You can\'t specify a temporary
+-- stack policy that overrides the current policy.
+module Network.AWS.CloudFormation.ExecuteChangeSet
+    (
+    -- * Creating a Request
+      executeChangeSet
+    , ExecuteChangeSet
+    -- * Request Lenses
+    , ecsStackName
+    , ecsChangeSetName
+
+    -- * Destructuring the Response
+    , executeChangeSetResponse
+    , ExecuteChangeSetResponse
+    -- * Response Lenses
+    , ecsrsResponseStatus
+    ) where
+
+import           Network.AWS.CloudFormation.Types
+import           Network.AWS.CloudFormation.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | The input for the < ExecuteChangeSet> action.
+--
+-- /See:/ 'executeChangeSet' smart constructor.
+data ExecuteChangeSet = ExecuteChangeSet'
+    { _ecsStackName     :: !(Maybe Text)
+    , _ecsChangeSetName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExecuteChangeSet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ecsStackName'
+--
+-- * 'ecsChangeSetName'
+executeChangeSet
+    :: Text -- ^ 'ecsChangeSetName'
+    -> ExecuteChangeSet
+executeChangeSet pChangeSetName_ =
+    ExecuteChangeSet'
+    { _ecsStackName = Nothing
+    , _ecsChangeSetName = pChangeSetName_
+    }
+
+-- | If you specified the name of a change set, specify the stack name or ID
+-- (ARN) that is associated with the change set you want to execute.
+ecsStackName :: Lens' ExecuteChangeSet (Maybe Text)
+ecsStackName = lens _ecsStackName (\ s a -> s{_ecsStackName = a});
+
+-- | The name or ARN of the change set that you want use to update the
+-- specified stack.
+ecsChangeSetName :: Lens' ExecuteChangeSet Text
+ecsChangeSetName = lens _ecsChangeSetName (\ s a -> s{_ecsChangeSetName = a});
+
+instance AWSRequest ExecuteChangeSet where
+        type Rs ExecuteChangeSet = ExecuteChangeSetResponse
+        request = postQuery cloudFormation
+        response
+          = receiveXMLWrapper "ExecuteChangeSetResult"
+              (\ s h x ->
+                 ExecuteChangeSetResponse' <$> (pure (fromEnum s)))
+
+instance Hashable ExecuteChangeSet
+
+instance NFData ExecuteChangeSet
+
+instance ToHeaders ExecuteChangeSet where
+        toHeaders = const mempty
+
+instance ToPath ExecuteChangeSet where
+        toPath = const "/"
+
+instance ToQuery ExecuteChangeSet where
+        toQuery ExecuteChangeSet'{..}
+          = mconcat
+              ["Action" =: ("ExecuteChangeSet" :: ByteString),
+               "Version" =: ("2010-05-15" :: ByteString),
+               "StackName" =: _ecsStackName,
+               "ChangeSetName" =: _ecsChangeSetName]
+
+-- | The output for the < ExecuteChangeSet> action.
+--
+-- /See:/ 'executeChangeSetResponse' smart constructor.
+newtype ExecuteChangeSetResponse = ExecuteChangeSetResponse'
+    { _ecsrsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExecuteChangeSetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ecsrsResponseStatus'
+executeChangeSetResponse
+    :: Int -- ^ 'ecsrsResponseStatus'
+    -> ExecuteChangeSetResponse
+executeChangeSetResponse pResponseStatus_ =
+    ExecuteChangeSetResponse'
+    { _ecsrsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+ecsrsResponseStatus :: Lens' ExecuteChangeSetResponse Int
+ecsrsResponseStatus = lens _ecsrsResponseStatus (\ s a -> s{_ecsrsResponseStatus = a});
+
+instance NFData ExecuteChangeSetResponse
diff --git a/gen/Network/AWS/CloudFormation/GetStackPolicy.hs b/gen/Network/AWS/CloudFormation/GetStackPolicy.hs
--- a/gen/Network/AWS/CloudFormation/GetStackPolicy.hs
+++ b/gen/Network/AWS/CloudFormation/GetStackPolicy.hs
@@ -79,6 +79,8 @@
 
 instance Hashable GetStackPolicy
 
+instance NFData GetStackPolicy
+
 instance ToHeaders GetStackPolicy where
         toHeaders = const mempty
 
@@ -125,3 +127,5 @@
 -- | The response status code.
 gsprsResponseStatus :: Lens' GetStackPolicyResponse Int
 gsprsResponseStatus = lens _gsprsResponseStatus (\ s a -> s{_gsprsResponseStatus = a});
+
+instance NFData GetStackPolicyResponse
diff --git a/gen/Network/AWS/CloudFormation/GetTemplate.hs b/gen/Network/AWS/CloudFormation/GetTemplate.hs
--- a/gen/Network/AWS/CloudFormation/GetTemplate.hs
+++ b/gen/Network/AWS/CloudFormation/GetTemplate.hs
@@ -90,6 +90,8 @@
 
 instance Hashable GetTemplate
 
+instance NFData GetTemplate
+
 instance ToHeaders GetTemplate where
         toHeaders = const mempty
 
@@ -136,3 +138,5 @@
 -- | The response status code.
 gtrsResponseStatus :: Lens' GetTemplateResponse Int
 gtrsResponseStatus = lens _gtrsResponseStatus (\ s a -> s{_gtrsResponseStatus = a});
+
+instance NFData GetTemplateResponse
diff --git a/gen/Network/AWS/CloudFormation/GetTemplateSummary.hs b/gen/Network/AWS/CloudFormation/GetTemplateSummary.hs
--- a/gen/Network/AWS/CloudFormation/GetTemplateSummary.hs
+++ b/gen/Network/AWS/CloudFormation/GetTemplateSummary.hs
@@ -143,6 +143,8 @@
 
 instance Hashable GetTemplateSummary
 
+instance NFData GetTemplateSummary
+
 instance ToHeaders GetTemplateSummary where
         toHeaders = const mempty
 
@@ -247,3 +249,5 @@
 -- | The response status code.
 gtsrsResponseStatus :: Lens' GetTemplateSummaryResponse Int
 gtsrsResponseStatus = lens _gtsrsResponseStatus (\ s a -> s{_gtsrsResponseStatus = a});
+
+instance NFData GetTemplateSummaryResponse
diff --git a/gen/Network/AWS/CloudFormation/ListChangeSets.hs b/gen/Network/AWS/CloudFormation/ListChangeSets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudFormation/ListChangeSets.hs
@@ -0,0 +1,155 @@
+{-# 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.CloudFormation.ListChangeSets
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the ID and status of each active change set for a stack. For
+-- example, AWS CloudFormation lists change sets that are in the
+-- 'CREATE_IN_PROGRESS' or 'CREATE_PENDING' state.
+module Network.AWS.CloudFormation.ListChangeSets
+    (
+    -- * Creating a Request
+      listChangeSets
+    , ListChangeSets
+    -- * Request Lenses
+    , lcsNextToken
+    , lcsStackName
+
+    -- * Destructuring the Response
+    , listChangeSetsResponse
+    , ListChangeSetsResponse
+    -- * Response Lenses
+    , lcsrsNextToken
+    , lcsrsSummaries
+    , lcsrsResponseStatus
+    ) where
+
+import           Network.AWS.CloudFormation.Types
+import           Network.AWS.CloudFormation.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | The input for the < ListChangeSets> action.
+--
+-- /See:/ 'listChangeSets' smart constructor.
+data ListChangeSets = ListChangeSets'
+    { _lcsNextToken :: !(Maybe Text)
+    , _lcsStackName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListChangeSets' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcsNextToken'
+--
+-- * 'lcsStackName'
+listChangeSets
+    :: Text -- ^ 'lcsStackName'
+    -> ListChangeSets
+listChangeSets pStackName_ =
+    ListChangeSets'
+    { _lcsNextToken = Nothing
+    , _lcsStackName = pStackName_
+    }
+
+-- | A string (provided by the < ListChangeSets> response output) that
+-- identifies the next page of change sets that you want to retrieve.
+lcsNextToken :: Lens' ListChangeSets (Maybe Text)
+lcsNextToken = lens _lcsNextToken (\ s a -> s{_lcsNextToken = a});
+
+-- | The name or the Amazon Resource Name (ARN) of the stack for which you
+-- want to list change sets.
+lcsStackName :: Lens' ListChangeSets Text
+lcsStackName = lens _lcsStackName (\ s a -> s{_lcsStackName = a});
+
+instance AWSRequest ListChangeSets where
+        type Rs ListChangeSets = ListChangeSetsResponse
+        request = postQuery cloudFormation
+        response
+          = receiveXMLWrapper "ListChangeSetsResult"
+              (\ s h x ->
+                 ListChangeSetsResponse' <$>
+                   (x .@? "NextToken") <*>
+                     (x .@? "Summaries" .!@ mempty >>=
+                        may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
+
+instance Hashable ListChangeSets
+
+instance NFData ListChangeSets
+
+instance ToHeaders ListChangeSets where
+        toHeaders = const mempty
+
+instance ToPath ListChangeSets where
+        toPath = const "/"
+
+instance ToQuery ListChangeSets where
+        toQuery ListChangeSets'{..}
+          = mconcat
+              ["Action" =: ("ListChangeSets" :: ByteString),
+               "Version" =: ("2010-05-15" :: ByteString),
+               "NextToken" =: _lcsNextToken,
+               "StackName" =: _lcsStackName]
+
+-- | The output for the < ListChangeSets> action.
+--
+-- /See:/ 'listChangeSetsResponse' smart constructor.
+data ListChangeSetsResponse = ListChangeSetsResponse'
+    { _lcsrsNextToken      :: !(Maybe Text)
+    , _lcsrsSummaries      :: !(Maybe [ChangeSetSummary])
+    , _lcsrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListChangeSetsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcsrsNextToken'
+--
+-- * 'lcsrsSummaries'
+--
+-- * 'lcsrsResponseStatus'
+listChangeSetsResponse
+    :: Int -- ^ 'lcsrsResponseStatus'
+    -> ListChangeSetsResponse
+listChangeSetsResponse pResponseStatus_ =
+    ListChangeSetsResponse'
+    { _lcsrsNextToken = Nothing
+    , _lcsrsSummaries = Nothing
+    , _lcsrsResponseStatus = pResponseStatus_
+    }
+
+-- | If the output exceeds 1 MB, a string that identifies the next page of
+-- change sets. If there is no additional page, this value is null.
+lcsrsNextToken :: Lens' ListChangeSetsResponse (Maybe Text)
+lcsrsNextToken = lens _lcsrsNextToken (\ s a -> s{_lcsrsNextToken = a});
+
+-- | A list of 'ChangeSetSummary' structures that provides the ID and status
+-- of each change set for the specified stack.
+lcsrsSummaries :: Lens' ListChangeSetsResponse [ChangeSetSummary]
+lcsrsSummaries = lens _lcsrsSummaries (\ s a -> s{_lcsrsSummaries = a}) . _Default . _Coerce;
+
+-- | The response status code.
+lcsrsResponseStatus :: Lens' ListChangeSetsResponse Int
+lcsrsResponseStatus = lens _lcsrsResponseStatus (\ s a -> s{_lcsrsResponseStatus = a});
+
+instance NFData ListChangeSetsResponse
diff --git a/gen/Network/AWS/CloudFormation/ListStackResources.hs b/gen/Network/AWS/CloudFormation/ListStackResources.hs
--- a/gen/Network/AWS/CloudFormation/ListStackResources.hs
+++ b/gen/Network/AWS/CloudFormation/ListStackResources.hs
@@ -112,6 +112,8 @@
 
 instance Hashable ListStackResources
 
+instance NFData ListStackResources
+
 instance ToHeaders ListStackResources where
         toHeaders = const mempty
 
@@ -154,9 +156,8 @@
     , _lsrrsResponseStatus = pResponseStatus_
     }
 
--- | If the output exceeds 1 MB in size, a string that identifies the next
--- page of stack resources. If no additional page exists, this value is
--- null.
+-- | If the output exceeds 1 MB, a string that identifies the next page of
+-- stack resources. If no additional page exists, this value is null.
 lsrrsNextToken :: Lens' ListStackResourcesResponse (Maybe Text)
 lsrrsNextToken = lens _lsrrsNextToken (\ s a -> s{_lsrrsNextToken = a});
 
@@ -167,3 +168,5 @@
 -- | The response status code.
 lsrrsResponseStatus :: Lens' ListStackResourcesResponse Int
 lsrrsResponseStatus = lens _lsrrsResponseStatus (\ s a -> s{_lsrrsResponseStatus = a});
+
+instance NFData ListStackResourcesResponse
diff --git a/gen/Network/AWS/CloudFormation/ListStacks.hs b/gen/Network/AWS/CloudFormation/ListStacks.hs
--- a/gen/Network/AWS/CloudFormation/ListStacks.hs
+++ b/gen/Network/AWS/CloudFormation/ListStacks.hs
@@ -107,6 +107,8 @@
 
 instance Hashable ListStacks
 
+instance NFData ListStacks
+
 instance ToHeaders ListStacks where
         toHeaders = const mempty
 
@@ -164,3 +166,5 @@
 -- | The response status code.
 lsrsResponseStatus :: Lens' ListStacksResponse Int
 lsrsResponseStatus = lens _lsrsResponseStatus (\ s a -> s{_lsrsResponseStatus = a});
+
+instance NFData ListStacksResponse
diff --git a/gen/Network/AWS/CloudFormation/SetStackPolicy.hs b/gen/Network/AWS/CloudFormation/SetStackPolicy.hs
--- a/gen/Network/AWS/CloudFormation/SetStackPolicy.hs
+++ b/gen/Network/AWS/CloudFormation/SetStackPolicy.hs
@@ -77,8 +77,8 @@
 sspStackPolicyBody = lens _sspStackPolicyBody (\ s a -> s{_sspStackPolicyBody = a});
 
 -- | Location of a file containing the stack policy. The URL must point to a
--- policy (max size: 16KB) located in an S3 bucket in the same region as
--- the stack. You can specify either the 'StackPolicyBody' or the
+-- policy (maximum size: 16 KB) located in an S3 bucket in the same region
+-- as the stack. You can specify either the 'StackPolicyBody' or the
 -- 'StackPolicyURL' parameter, but not both.
 sspStackPolicyURL :: Lens' SetStackPolicy (Maybe Text)
 sspStackPolicyURL = lens _sspStackPolicyURL (\ s a -> s{_sspStackPolicyURL = a});
@@ -94,6 +94,8 @@
 
 instance Hashable SetStackPolicy
 
+instance NFData SetStackPolicy
+
 instance ToHeaders SetStackPolicy where
         toHeaders = const mempty
 
@@ -119,3 +121,5 @@
 setStackPolicyResponse
     :: SetStackPolicyResponse
 setStackPolicyResponse = SetStackPolicyResponse'
+
+instance NFData SetStackPolicyResponse
diff --git a/gen/Network/AWS/CloudFormation/SignalResource.hs b/gen/Network/AWS/CloudFormation/SignalResource.hs
--- a/gen/Network/AWS/CloudFormation/SignalResource.hs
+++ b/gen/Network/AWS/CloudFormation/SignalResource.hs
@@ -113,6 +113,8 @@
 
 instance Hashable SignalResource
 
+instance NFData SignalResource
+
 instance ToHeaders SignalResource where
         toHeaders = const mempty
 
@@ -138,3 +140,5 @@
 signalResourceResponse
     :: SignalResourceResponse
 signalResourceResponse = SignalResourceResponse'
+
+instance NFData SignalResourceResponse
diff --git a/gen/Network/AWS/CloudFormation/Types.hs b/gen/Network/AWS/CloudFormation/Types.hs
--- a/gen/Network/AWS/CloudFormation/Types.hs
+++ b/gen/Network/AWS/CloudFormation/Types.hs
@@ -16,6 +16,8 @@
       cloudFormation
 
     -- * Errors
+    , _ChangeSetNotFoundException
+    , _InvalidChangeSetStatusException
     , _InsufficientCapabilitiesException
     , _AlreadyExistsException
     , _LimitExceededException
@@ -23,9 +25,33 @@
     -- * Capability
     , Capability (..)
 
+    -- * ChangeAction
+    , ChangeAction (..)
+
+    -- * ChangeSetStatus
+    , ChangeSetStatus (..)
+
+    -- * ChangeSource
+    , ChangeSource (..)
+
+    -- * ChangeType
+    , ChangeType (..)
+
+    -- * EvaluationType
+    , EvaluationType (..)
+
     -- * OnFailure
     , OnFailure (..)
 
+    -- * Replacement
+    , Replacement (..)
+
+    -- * RequiresRecreation
+    , RequiresRecreation (..)
+
+    -- * ResourceAttribute
+    , ResourceAttribute (..)
+
     -- * ResourceSignalStatus
     , ResourceSignalStatus (..)
 
@@ -41,6 +67,24 @@
     , alValue
     , alName
 
+    -- * Change
+    , Change
+    , change
+    , cResourceChange
+    , cType
+
+    -- * ChangeSetSummary
+    , ChangeSetSummary
+    , changeSetSummary
+    , cssCreationTime
+    , cssStatus
+    , cssChangeSetName
+    , cssChangeSetId
+    , cssStatusReason
+    , cssStackId
+    , cssDescription
+    , cssStackName
+
     -- * Output
     , Output
     , output
@@ -70,6 +114,32 @@
     , pdNoEcho
     , pdDescription
 
+    -- * ResourceChange
+    , ResourceChange
+    , resourceChange
+    , rcLogicalResourceId
+    , rcPhysicalResourceId
+    , rcResourceType
+    , rcAction
+    , rcScope
+    , rcDetails
+    , rcReplacement
+
+    -- * ResourceChangeDetail
+    , ResourceChangeDetail
+    , resourceChangeDetail
+    , rcdCausingEntity
+    , rcdChangeSource
+    , rcdEvaluation
+    , rcdTarget
+
+    -- * ResourceTargetDefinition
+    , ResourceTargetDefinition
+    , resourceTargetDefinition
+    , rtdAttribute
+    , rtdRequiresRecreation
+    , rtdName
+
     -- * Stack
     , Stack
     , stack
@@ -199,10 +269,25 @@
       | has (hasCode "ThrottlingException" . hasStatus 400) e =
           Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
+      | has (hasStatus 504) e = Just "gateway_timeout"
+      | has (hasStatus 502) e = Just "bad_gateway"
       | has (hasStatus 503) e = Just "service_unavailable"
       | has (hasStatus 500) e = Just "general_server_error"
       | has (hasStatus 509) e = Just "limit_exceeded"
       | otherwise = Nothing
+
+-- | The specified change set name or ID doesn\'t exit. To view valid change
+-- sets for a stack, use the 'ListChangeSets' action.
+_ChangeSetNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_ChangeSetNotFoundException =
+    _ServiceError . hasStatus 404 . hasCode "ChangeSetNotFound"
+
+-- | The specified change set cannot be used to update the stack. For
+-- example, the change set status might be 'CREATE_IN_PROGRESS' or the
+-- stack status might be 'UPDATE_IN_PROGRESS'.
+_InvalidChangeSetStatusException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidChangeSetStatusException =
+    _ServiceError . hasStatus 400 . hasCode "InvalidChangeSetStatus"
 
 -- | The template contains resources with capabilities that were not
 -- specified in the Capabilities parameter.
diff --git a/gen/Network/AWS/CloudFormation/Types/Product.hs b/gen/Network/AWS/CloudFormation/Types/Product.hs
--- a/gen/Network/AWS/CloudFormation/Types/Product.hs
+++ b/gen/Network/AWS/CloudFormation/Types/Product.hs
@@ -60,6 +60,149 @@
 
 instance Hashable AccountLimit
 
+instance NFData AccountLimit
+
+-- | The 'Change' structure describes the changes AWS CloudFormation will
+-- perform if you execute the change set.
+--
+-- /See:/ 'change' smart constructor.
+data Change = Change'
+    { _cResourceChange :: !(Maybe ResourceChange)
+    , _cType           :: !(Maybe ChangeType)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Change' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cResourceChange'
+--
+-- * 'cType'
+change
+    :: Change
+change =
+    Change'
+    { _cResourceChange = Nothing
+    , _cType = Nothing
+    }
+
+-- | A 'ResourceChange' structure that describes the resource and action that
+-- AWS CloudFormation will perform.
+cResourceChange :: Lens' Change (Maybe ResourceChange)
+cResourceChange = lens _cResourceChange (\ s a -> s{_cResourceChange = a});
+
+-- | The type of entity that AWS CloudFormation changes. Currently, the only
+-- entity type is 'Resource'.
+cType :: Lens' Change (Maybe ChangeType)
+cType = lens _cType (\ s a -> s{_cType = a});
+
+instance FromXML Change where
+        parseXML x
+          = Change' <$>
+              (x .@? "ResourceChange") <*> (x .@? "Type")
+
+instance Hashable Change
+
+instance NFData Change
+
+-- | The 'ChangeSetSummary' structure describes a change set, its status, and
+-- the stack with which it\'s associated.
+--
+-- /See:/ 'changeSetSummary' smart constructor.
+data ChangeSetSummary = ChangeSetSummary'
+    { _cssCreationTime  :: !(Maybe ISO8601)
+    , _cssStatus        :: !(Maybe ChangeSetStatus)
+    , _cssChangeSetName :: !(Maybe Text)
+    , _cssChangeSetId   :: !(Maybe Text)
+    , _cssStatusReason  :: !(Maybe Text)
+    , _cssStackId       :: !(Maybe Text)
+    , _cssDescription   :: !(Maybe Text)
+    , _cssStackName     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ChangeSetSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cssCreationTime'
+--
+-- * 'cssStatus'
+--
+-- * 'cssChangeSetName'
+--
+-- * 'cssChangeSetId'
+--
+-- * 'cssStatusReason'
+--
+-- * 'cssStackId'
+--
+-- * 'cssDescription'
+--
+-- * 'cssStackName'
+changeSetSummary
+    :: ChangeSetSummary
+changeSetSummary =
+    ChangeSetSummary'
+    { _cssCreationTime = Nothing
+    , _cssStatus = Nothing
+    , _cssChangeSetName = Nothing
+    , _cssChangeSetId = Nothing
+    , _cssStatusReason = Nothing
+    , _cssStackId = Nothing
+    , _cssDescription = Nothing
+    , _cssStackName = Nothing
+    }
+
+-- | The start time when the change set was created, in UTC.
+cssCreationTime :: Lens' ChangeSetSummary (Maybe UTCTime)
+cssCreationTime = lens _cssCreationTime (\ s a -> s{_cssCreationTime = a}) . mapping _Time;
+
+-- | The state of the change set, such as 'CREATE_IN_PROGRESS',
+-- 'CREATE_COMPLETE', or 'FAILED'.
+cssStatus :: Lens' ChangeSetSummary (Maybe ChangeSetStatus)
+cssStatus = lens _cssStatus (\ s a -> s{_cssStatus = a});
+
+-- | The name of the change set.
+cssChangeSetName :: Lens' ChangeSetSummary (Maybe Text)
+cssChangeSetName = lens _cssChangeSetName (\ s a -> s{_cssChangeSetName = a});
+
+-- | The ID of the change set.
+cssChangeSetId :: Lens' ChangeSetSummary (Maybe Text)
+cssChangeSetId = lens _cssChangeSetId (\ s a -> s{_cssChangeSetId = a});
+
+-- | A description of the change set\'s status. For example, if your change
+-- set is in the 'FAILED' state, AWS CloudFormation shows the error
+-- message.
+cssStatusReason :: Lens' ChangeSetSummary (Maybe Text)
+cssStatusReason = lens _cssStatusReason (\ s a -> s{_cssStatusReason = a});
+
+-- | The ID of the stack with which the change set is associated.
+cssStackId :: Lens' ChangeSetSummary (Maybe Text)
+cssStackId = lens _cssStackId (\ s a -> s{_cssStackId = a});
+
+-- | Descriptive information about the change set.
+cssDescription :: Lens' ChangeSetSummary (Maybe Text)
+cssDescription = lens _cssDescription (\ s a -> s{_cssDescription = a});
+
+-- | The name of the stack with which the change set is associated.
+cssStackName :: Lens' ChangeSetSummary (Maybe Text)
+cssStackName = lens _cssStackName (\ s a -> s{_cssStackName = a});
+
+instance FromXML ChangeSetSummary where
+        parseXML x
+          = ChangeSetSummary' <$>
+              (x .@? "CreationTime") <*> (x .@? "Status") <*>
+                (x .@? "ChangeSetName")
+                <*> (x .@? "ChangeSetId")
+                <*> (x .@? "StatusReason")
+                <*> (x .@? "StackId")
+                <*> (x .@? "Description")
+                <*> (x .@? "StackName")
+
+instance Hashable ChangeSetSummary
+
+instance NFData ChangeSetSummary
+
 -- | The Output data type.
 --
 -- /See:/ 'output' smart constructor.
@@ -107,6 +250,8 @@
 
 instance Hashable Output
 
+instance NFData Output
+
 -- | The Parameter data type.
 --
 -- /See:/ 'parameter' smart constructor.
@@ -158,6 +303,8 @@
 
 instance Hashable Parameter
 
+instance NFData Parameter
+
 instance ToQuery Parameter where
         toQuery Parameter'{..}
           = mconcat
@@ -198,6 +345,8 @@
 
 instance Hashable ParameterConstraints
 
+instance NFData ParameterConstraints
+
 -- | The ParameterDeclaration data type.
 --
 -- /See:/ 'parameterDeclaration' smart constructor.
@@ -273,6 +422,279 @@
 
 instance Hashable ParameterDeclaration
 
+instance NFData ParameterDeclaration
+
+-- | The 'ResourceChange' structure describes the resource and the action
+-- that AWS CloudFormation will perform on it if you execute this change
+-- set.
+--
+-- /See:/ 'resourceChange' smart constructor.
+data ResourceChange = ResourceChange'
+    { _rcLogicalResourceId  :: !(Maybe Text)
+    , _rcPhysicalResourceId :: !(Maybe Text)
+    , _rcResourceType       :: !(Maybe Text)
+    , _rcAction             :: !(Maybe ChangeAction)
+    , _rcScope              :: !(Maybe [ResourceAttribute])
+    , _rcDetails            :: !(Maybe [ResourceChangeDetail])
+    , _rcReplacement        :: !(Maybe Replacement)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResourceChange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcLogicalResourceId'
+--
+-- * 'rcPhysicalResourceId'
+--
+-- * 'rcResourceType'
+--
+-- * 'rcAction'
+--
+-- * 'rcScope'
+--
+-- * 'rcDetails'
+--
+-- * 'rcReplacement'
+resourceChange
+    :: ResourceChange
+resourceChange =
+    ResourceChange'
+    { _rcLogicalResourceId = Nothing
+    , _rcPhysicalResourceId = Nothing
+    , _rcResourceType = Nothing
+    , _rcAction = Nothing
+    , _rcScope = Nothing
+    , _rcDetails = Nothing
+    , _rcReplacement = Nothing
+    }
+
+-- | The resource\'s logical ID, which is defined in the stack\'s template.
+rcLogicalResourceId :: Lens' ResourceChange (Maybe Text)
+rcLogicalResourceId = lens _rcLogicalResourceId (\ s a -> s{_rcLogicalResourceId = a});
+
+-- | The resource\'s physical ID (resource name). Resources that you are
+-- adding don\'t have physical IDs because they haven\'t been created.
+rcPhysicalResourceId :: Lens' ResourceChange (Maybe Text)
+rcPhysicalResourceId = lens _rcPhysicalResourceId (\ s a -> s{_rcPhysicalResourceId = a});
+
+-- | The type of AWS CloudFormation resource, such as 'AWS::S3::Bucket'.
+rcResourceType :: Lens' ResourceChange (Maybe Text)
+rcResourceType = lens _rcResourceType (\ s a -> s{_rcResourceType = a});
+
+-- | The action that AWS CloudFormation takes on the resource, such as 'Add'
+-- (adds a new resource), 'Modify' (changes a resource), or 'Remove'
+-- (deletes a resource).
+rcAction :: Lens' ResourceChange (Maybe ChangeAction)
+rcAction = lens _rcAction (\ s a -> s{_rcAction = a});
+
+-- | For the 'Modify' action, indicates which resource attribute is
+-- triggering this update, such as a change in the resource attribute\'s
+-- 'Metadata', 'Properties', or 'Tags'.
+rcScope :: Lens' ResourceChange [ResourceAttribute]
+rcScope = lens _rcScope (\ s a -> s{_rcScope = a}) . _Default . _Coerce;
+
+-- | For the 'Modify' action, a list of 'ResourceChangeDetail' structures
+-- that describes the changes that AWS CloudFormation will make to the
+-- resource.
+rcDetails :: Lens' ResourceChange [ResourceChangeDetail]
+rcDetails = lens _rcDetails (\ s a -> s{_rcDetails = a}) . _Default . _Coerce;
+
+-- | For the 'Modify' action, indicates whether AWS CloudFormation will
+-- replace the resource by creating a new one and deleting the old one.
+-- This value depends on the value of the 'RequiresRecreation' property in
+-- the 'ResourceTargetDefinition' structure. For example, if the
+-- 'RequiresRecreation' field is 'Always' and the 'Evaluation' field is
+-- 'Static', 'Replacement' is 'True'. If the 'RequiresRecreation' field is
+-- 'Always' and the 'Evaluation' field is 'Dynamic', 'Replacement' is
+-- 'Conditionally'.
+--
+-- If you have multiple changes with different 'RequiresRecreation' values,
+-- the 'Replacement' value depends on the change with the most impact. A
+-- 'RequiresRecreation' value of 'Always' has the most impact, followed by
+-- 'Conditionally', and then 'Never'.
+rcReplacement :: Lens' ResourceChange (Maybe Replacement)
+rcReplacement = lens _rcReplacement (\ s a -> s{_rcReplacement = a});
+
+instance FromXML ResourceChange where
+        parseXML x
+          = ResourceChange' <$>
+              (x .@? "LogicalResourceId") <*>
+                (x .@? "PhysicalResourceId")
+                <*> (x .@? "ResourceType")
+                <*> (x .@? "Action")
+                <*>
+                (x .@? "Scope" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*>
+                (x .@? "Details" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "Replacement")
+
+instance Hashable ResourceChange
+
+instance NFData ResourceChange
+
+-- | For a resource with 'Modify' as the action, the 'ResourceChange'
+-- structure describes the changes AWS CloudFormation will make to that
+-- resource.
+--
+-- /See:/ 'resourceChangeDetail' smart constructor.
+data ResourceChangeDetail = ResourceChangeDetail'
+    { _rcdCausingEntity :: !(Maybe Text)
+    , _rcdChangeSource  :: !(Maybe ChangeSource)
+    , _rcdEvaluation    :: !(Maybe EvaluationType)
+    , _rcdTarget        :: !(Maybe ResourceTargetDefinition)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResourceChangeDetail' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcdCausingEntity'
+--
+-- * 'rcdChangeSource'
+--
+-- * 'rcdEvaluation'
+--
+-- * 'rcdTarget'
+resourceChangeDetail
+    :: ResourceChangeDetail
+resourceChangeDetail =
+    ResourceChangeDetail'
+    { _rcdCausingEntity = Nothing
+    , _rcdChangeSource = Nothing
+    , _rcdEvaluation = Nothing
+    , _rcdTarget = Nothing
+    }
+
+-- | The identity of the entity that triggered this change. This entity is a
+-- member of the group that is specified by the 'ChangeSource' field. For
+-- example, if you modified the value of the 'KeyPairName' parameter, the
+-- 'CausingEntity' is the name of the parameter ('KeyPairName').
+--
+-- If the 'ChangeSource' value is 'DirectModification', no value is given
+-- for 'CausingEntity'.
+rcdCausingEntity :: Lens' ResourceChangeDetail (Maybe Text)
+rcdCausingEntity = lens _rcdCausingEntity (\ s a -> s{_rcdCausingEntity = a});
+
+-- | The group to which the 'CausingEntity' value belongs. There are five
+-- entity groups:
+--
+-- -   'ResourceReference' entities are 'Ref' intrinsic functions that
+--     refer to resources in the template, such as
+--     '{ \"Ref\" : \"MyEC2InstanceResource\" }'.
+-- -   'ParameterReference' entities are 'Ref' intrinsic functions that get
+--     template parameter values, such as
+--     '{ \"Ref\" : \"MyPasswordParameter\" }'.
+-- -   'ResourceAttribute' entities are 'Fn::GetAtt' intrinsic functions
+--     that get resource attribute values, such as
+--     '{ \"Fn::GetAtt\" : [ \"MyEC2InstanceResource\", \"PublicDnsName\" ] }'.
+-- -   'DirectModification' entities are changes that are made directly to
+--     the template.
+-- -   'Automatic' entities are 'AWS::CloudFormation::Stack' resource
+--     types, which are also known as nested stacks. If you made no changes
+--     to the 'AWS::CloudFormation::Stack' resource, AWS CloudFormation
+--     sets the 'ChangeSource' to 'Automatic' because the nested stack\'s
+--     template might have changed. Changes to a nested stack\'s template
+--     aren\'t visible to AWS CloudFormation until you run an update on the
+--     parent stack.
+rcdChangeSource :: Lens' ResourceChangeDetail (Maybe ChangeSource)
+rcdChangeSource = lens _rcdChangeSource (\ s a -> s{_rcdChangeSource = a});
+
+-- | Indicates whether AWS CloudFormation can determine the target value, and
+-- whether the target value will change before you execute a change set.
+--
+-- For 'Static' evaluations, AWS CloudFormation can determine that the
+-- target value will change, and its value. For example, if you directly
+-- modify the 'InstanceType' property of an EC2 instance, AWS
+-- CloudFormation knows that this property value will change, and its
+-- value, so this is a 'Static' evaluation.
+--
+-- For 'Dynamic' evaluations, cannot determine the target value because it
+-- depends on the result of an intrinsic function, such as a 'Ref' or
+-- 'Fn::GetAtt' intrinsic function, when the stack is updated. For example,
+-- if your template includes a reference to a resource that is
+-- conditionally recreated, the value of the reference (the physical ID of
+-- the resource) might change, depending on if the resource is recreated.
+-- If the resource is recreated, it will have a new physical ID, so all
+-- references to that resource will also be updated.
+rcdEvaluation :: Lens' ResourceChangeDetail (Maybe EvaluationType)
+rcdEvaluation = lens _rcdEvaluation (\ s a -> s{_rcdEvaluation = a});
+
+-- | A 'ResourceTargetDefinition' structure that describes the field that AWS
+-- CloudFormation will change and whether the resource will be recreated.
+rcdTarget :: Lens' ResourceChangeDetail (Maybe ResourceTargetDefinition)
+rcdTarget = lens _rcdTarget (\ s a -> s{_rcdTarget = a});
+
+instance FromXML ResourceChangeDetail where
+        parseXML x
+          = ResourceChangeDetail' <$>
+              (x .@? "CausingEntity") <*> (x .@? "ChangeSource")
+                <*> (x .@? "Evaluation")
+                <*> (x .@? "Target")
+
+instance Hashable ResourceChangeDetail
+
+instance NFData ResourceChangeDetail
+
+-- | The field that AWS CloudFormation will change, such as the name of a
+-- resource\'s property, and whether the resource will be recreated.
+--
+-- /See:/ 'resourceTargetDefinition' smart constructor.
+data ResourceTargetDefinition = ResourceTargetDefinition'
+    { _rtdAttribute          :: !(Maybe ResourceAttribute)
+    , _rtdRequiresRecreation :: !(Maybe RequiresRecreation)
+    , _rtdName               :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResourceTargetDefinition' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtdAttribute'
+--
+-- * 'rtdRequiresRecreation'
+--
+-- * 'rtdName'
+resourceTargetDefinition
+    :: ResourceTargetDefinition
+resourceTargetDefinition =
+    ResourceTargetDefinition'
+    { _rtdAttribute = Nothing
+    , _rtdRequiresRecreation = Nothing
+    , _rtdName = Nothing
+    }
+
+-- | Indicates which resource attribute is triggering this update, such as a
+-- change in the resource attribute\'s 'Metadata', 'Properties', or 'Tags'.
+rtdAttribute :: Lens' ResourceTargetDefinition (Maybe ResourceAttribute)
+rtdAttribute = lens _rtdAttribute (\ s a -> s{_rtdAttribute = a});
+
+-- | If the 'Attribute' value is 'Properties', indicates whether a change to
+-- this property causes the resource to be recreated. The value can be
+-- 'Never', 'Always', or 'Conditionally'. To determine the conditions for a
+-- 'Conditionally' recreation, see the update behavior for that
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html property>
+-- in the AWS CloudFormation User Guide.
+rtdRequiresRecreation :: Lens' ResourceTargetDefinition (Maybe RequiresRecreation)
+rtdRequiresRecreation = lens _rtdRequiresRecreation (\ s a -> s{_rtdRequiresRecreation = a});
+
+-- | If the 'Attribute' value is 'Properties', the name of the property. For
+-- all other attributes, the value is null.
+rtdName :: Lens' ResourceTargetDefinition (Maybe Text)
+rtdName = lens _rtdName (\ s a -> s{_rtdName = a});
+
+instance FromXML ResourceTargetDefinition where
+        parseXML x
+          = ResourceTargetDefinition' <$>
+              (x .@? "Attribute") <*> (x .@? "RequiresRecreation")
+                <*> (x .@? "Name")
+
+instance Hashable ResourceTargetDefinition
+
+instance NFData ResourceTargetDefinition
+
 -- | The Stack data type.
 --
 -- /See:/ 'stack' smart constructor.
@@ -387,7 +809,7 @@
 sCapabilities :: Lens' Stack [Capability]
 sCapabilities = lens _sCapabilities (\ s a -> s{_sCapabilities = a}) . _Default . _Coerce;
 
--- | A list of 'Tag's that specify cost allocation information for the stack.
+-- | A list of 'Tag's that specify information about the stack.
 sTags :: Lens' Stack [Tag]
 sTags = lens _sTags (\ s a -> s{_sTags = a}) . _Default . _Coerce;
 
@@ -437,6 +859,8 @@
 
 instance Hashable Stack
 
+instance NFData Stack
+
 -- | The StackEvent data type.
 --
 -- /See:/ 'stackEvent' smart constructor.
@@ -555,6 +979,8 @@
 
 instance Hashable StackEvent
 
+instance NFData StackEvent
+
 -- | The StackResource data type.
 --
 -- /See:/ 'stackResource' smart constructor.
@@ -664,6 +1090,8 @@
 
 instance Hashable StackResource
 
+instance NFData StackResource
+
 -- | Contains detailed information about the specified stack resource.
 --
 -- /See:/ 'stackResourceDetail' smart constructor.
@@ -785,6 +1213,8 @@
 
 instance Hashable StackResourceDetail
 
+instance NFData StackResourceDetail
+
 -- | Contains high-level information about the specified stack resource.
 --
 -- /See:/ 'stackResourceSummary' smart constructor.
@@ -867,6 +1297,8 @@
 
 instance Hashable StackResourceSummary
 
+instance NFData StackResourceSummary
+
 -- | The StackSummary Data Type
 --
 -- /See:/ 'stackSummary' smart constructor.
@@ -964,9 +1396,10 @@
 
 instance Hashable StackSummary
 
--- | The Tag type is used by 'CreateStack' in the 'Tags' parameter. It allows
--- you to specify a key-value pair that can be used to store information
--- related to cost allocation for an AWS CloudFormation stack.
+instance NFData StackSummary
+
+-- | The Tag type enables you to specify a key-value pair that can be used to
+-- store information about an AWS CloudFormation stack.
 --
 -- /See:/ 'tag' smart constructor.
 data Tag = Tag'
@@ -1006,6 +1439,8 @@
 
 instance Hashable Tag
 
+instance NFData Tag
+
 instance ToQuery Tag where
         toQuery Tag'{..}
           = mconcat ["Value" =: _tagValue, "Key" =: _tagKey]
@@ -1066,3 +1501,5 @@
                 <*> (x .@? "Description")
 
 instance Hashable TemplateParameter
+
+instance NFData TemplateParameter
diff --git a/gen/Network/AWS/CloudFormation/Types/Sum.hs b/gen/Network/AWS/CloudFormation/Types/Sum.hs
--- a/gen/Network/AWS/CloudFormation/Types/Sum.hs
+++ b/gen/Network/AWS/CloudFormation/Types/Sum.hs
@@ -34,6 +34,7 @@
         CapabilityIAM -> "CAPABILITY_IAM"
 
 instance Hashable     Capability
+instance NFData       Capability
 instance ToByteString Capability
 instance ToQuery      Capability
 instance ToHeader     Capability
@@ -41,6 +42,154 @@
 instance FromXML Capability where
     parseXML = parseXMLText "Capability"
 
+data ChangeAction
+    = Add
+    | Modify
+    | Remove
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText ChangeAction where
+    parser = takeLowerText >>= \case
+        "add" -> pure Add
+        "modify" -> pure Modify
+        "remove" -> pure Remove
+        e -> fromTextError $ "Failure parsing ChangeAction from value: '" <> e
+           <> "'. Accepted values: Add, Modify, Remove"
+
+instance ToText ChangeAction where
+    toText = \case
+        Add -> "Add"
+        Modify -> "Modify"
+        Remove -> "Remove"
+
+instance Hashable     ChangeAction
+instance NFData       ChangeAction
+instance ToByteString ChangeAction
+instance ToQuery      ChangeAction
+instance ToHeader     ChangeAction
+
+instance FromXML ChangeAction where
+    parseXML = parseXMLText "ChangeAction"
+
+data ChangeSetStatus
+    = CSSCreateComplete
+    | CSSCreateInProgress
+    | CSSCreatePending
+    | CSSDeleteComplete
+    | CSSFailed
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText ChangeSetStatus where
+    parser = takeLowerText >>= \case
+        "create_complete" -> pure CSSCreateComplete
+        "create_in_progress" -> pure CSSCreateInProgress
+        "create_pending" -> pure CSSCreatePending
+        "delete_complete" -> pure CSSDeleteComplete
+        "failed" -> pure CSSFailed
+        e -> fromTextError $ "Failure parsing ChangeSetStatus from value: '" <> e
+           <> "'. Accepted values: CREATE_COMPLETE, CREATE_IN_PROGRESS, CREATE_PENDING, DELETE_COMPLETE, FAILED"
+
+instance ToText ChangeSetStatus where
+    toText = \case
+        CSSCreateComplete -> "CREATE_COMPLETE"
+        CSSCreateInProgress -> "CREATE_IN_PROGRESS"
+        CSSCreatePending -> "CREATE_PENDING"
+        CSSDeleteComplete -> "DELETE_COMPLETE"
+        CSSFailed -> "FAILED"
+
+instance Hashable     ChangeSetStatus
+instance NFData       ChangeSetStatus
+instance ToByteString ChangeSetStatus
+instance ToQuery      ChangeSetStatus
+instance ToHeader     ChangeSetStatus
+
+instance FromXML ChangeSetStatus where
+    parseXML = parseXMLText "ChangeSetStatus"
+
+data ChangeSource
+    = Automatic
+    | DirectModification
+    | ParameterReference
+    | ResourceAttribute
+    | ResourceReference
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText ChangeSource where
+    parser = takeLowerText >>= \case
+        "automatic" -> pure Automatic
+        "directmodification" -> pure DirectModification
+        "parameterreference" -> pure ParameterReference
+        "resourceattribute" -> pure ResourceAttribute
+        "resourcereference" -> pure ResourceReference
+        e -> fromTextError $ "Failure parsing ChangeSource from value: '" <> e
+           <> "'. Accepted values: Automatic, DirectModification, ParameterReference, ResourceAttribute, ResourceReference"
+
+instance ToText ChangeSource where
+    toText = \case
+        Automatic -> "Automatic"
+        DirectModification -> "DirectModification"
+        ParameterReference -> "ParameterReference"
+        ResourceAttribute -> "ResourceAttribute"
+        ResourceReference -> "ResourceReference"
+
+instance Hashable     ChangeSource
+instance NFData       ChangeSource
+instance ToByteString ChangeSource
+instance ToQuery      ChangeSource
+instance ToHeader     ChangeSource
+
+instance FromXML ChangeSource where
+    parseXML = parseXMLText "ChangeSource"
+
+data ChangeType =
+    Resource
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText ChangeType where
+    parser = takeLowerText >>= \case
+        "resource" -> pure Resource
+        e -> fromTextError $ "Failure parsing ChangeType from value: '" <> e
+           <> "'. Accepted values: Resource"
+
+instance ToText ChangeType where
+    toText = \case
+        Resource -> "Resource"
+
+instance Hashable     ChangeType
+instance NFData       ChangeType
+instance ToByteString ChangeType
+instance ToQuery      ChangeType
+instance ToHeader     ChangeType
+
+instance FromXML ChangeType where
+    parseXML = parseXMLText "ChangeType"
+
+data EvaluationType
+    = Dynamic
+    | Static
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText EvaluationType where
+    parser = takeLowerText >>= \case
+        "dynamic" -> pure Dynamic
+        "static" -> pure Static
+        e -> fromTextError $ "Failure parsing EvaluationType from value: '" <> e
+           <> "'. Accepted values: Dynamic, Static"
+
+instance ToText EvaluationType where
+    toText = \case
+        Dynamic -> "Dynamic"
+        Static -> "Static"
+
+instance Hashable     EvaluationType
+instance NFData       EvaluationType
+instance ToByteString EvaluationType
+instance ToQuery      EvaluationType
+instance ToHeader     EvaluationType
+
+instance FromXML EvaluationType where
+    parseXML = parseXMLText "EvaluationType"
+
 data OnFailure
     = Delete
     | DoNothing
@@ -62,10 +211,107 @@
         Rollback -> "ROLLBACK"
 
 instance Hashable     OnFailure
+instance NFData       OnFailure
 instance ToByteString OnFailure
 instance ToQuery      OnFailure
 instance ToHeader     OnFailure
 
+data Replacement
+    = Conditional
+    | False'
+    | True'
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText Replacement where
+    parser = takeLowerText >>= \case
+        "conditional" -> pure Conditional
+        "false" -> pure False'
+        "true" -> pure True'
+        e -> fromTextError $ "Failure parsing Replacement from value: '" <> e
+           <> "'. Accepted values: Conditional, False, True"
+
+instance ToText Replacement where
+    toText = \case
+        Conditional -> "Conditional"
+        False' -> "False"
+        True' -> "True"
+
+instance Hashable     Replacement
+instance NFData       Replacement
+instance ToByteString Replacement
+instance ToQuery      Replacement
+instance ToHeader     Replacement
+
+instance FromXML Replacement where
+    parseXML = parseXMLText "Replacement"
+
+data RequiresRecreation
+    = Always
+    | Conditionally
+    | Never
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText RequiresRecreation where
+    parser = takeLowerText >>= \case
+        "always" -> pure Always
+        "conditionally" -> pure Conditionally
+        "never" -> pure Never
+        e -> fromTextError $ "Failure parsing RequiresRecreation from value: '" <> e
+           <> "'. Accepted values: Always, Conditionally, Never"
+
+instance ToText RequiresRecreation where
+    toText = \case
+        Always -> "Always"
+        Conditionally -> "Conditionally"
+        Never -> "Never"
+
+instance Hashable     RequiresRecreation
+instance NFData       RequiresRecreation
+instance ToByteString RequiresRecreation
+instance ToQuery      RequiresRecreation
+instance ToHeader     RequiresRecreation
+
+instance FromXML RequiresRecreation where
+    parseXML = parseXMLText "RequiresRecreation"
+
+data ResourceAttribute
+    = CreationPolicy
+    | DeletionPolicy
+    | Metadata
+    | Properties
+    | Tags
+    | UpdatePolicy
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText ResourceAttribute where
+    parser = takeLowerText >>= \case
+        "creationpolicy" -> pure CreationPolicy
+        "deletionpolicy" -> pure DeletionPolicy
+        "metadata" -> pure Metadata
+        "properties" -> pure Properties
+        "tags" -> pure Tags
+        "updatepolicy" -> pure UpdatePolicy
+        e -> fromTextError $ "Failure parsing ResourceAttribute from value: '" <> e
+           <> "'. Accepted values: CreationPolicy, DeletionPolicy, Metadata, Properties, Tags, UpdatePolicy"
+
+instance ToText ResourceAttribute where
+    toText = \case
+        CreationPolicy -> "CreationPolicy"
+        DeletionPolicy -> "DeletionPolicy"
+        Metadata -> "Metadata"
+        Properties -> "Properties"
+        Tags -> "Tags"
+        UpdatePolicy -> "UpdatePolicy"
+
+instance Hashable     ResourceAttribute
+instance NFData       ResourceAttribute
+instance ToByteString ResourceAttribute
+instance ToQuery      ResourceAttribute
+instance ToHeader     ResourceAttribute
+
+instance FromXML ResourceAttribute where
+    parseXML = parseXMLText "ResourceAttribute"
+
 data ResourceSignalStatus
     = Failure
     | Success
@@ -84,6 +330,7 @@
         Success -> "SUCCESS"
 
 instance Hashable     ResourceSignalStatus
+instance NFData       ResourceSignalStatus
 instance ToByteString ResourceSignalStatus
 instance ToQuery      ResourceSignalStatus
 instance ToHeader     ResourceSignalStatus
@@ -130,6 +377,7 @@
         UpdateInProgress -> "UPDATE_IN_PROGRESS"
 
 instance Hashable     ResourceStatus
+instance NFData       ResourceStatus
 instance ToByteString ResourceStatus
 instance ToQuery      ResourceStatus
 instance ToHeader     ResourceStatus
@@ -197,6 +445,7 @@
         SSUpdateRollbackInProgress -> "UPDATE_ROLLBACK_IN_PROGRESS"
 
 instance Hashable     StackStatus
+instance NFData       StackStatus
 instance ToByteString StackStatus
 instance ToQuery      StackStatus
 instance ToHeader     StackStatus
diff --git a/gen/Network/AWS/CloudFormation/UpdateStack.hs b/gen/Network/AWS/CloudFormation/UpdateStack.hs
--- a/gen/Network/AWS/CloudFormation/UpdateStack.hs
+++ b/gen/Network/AWS/CloudFormation/UpdateStack.hs
@@ -217,11 +217,14 @@
 usTemplateURL = lens _usTemplateURL (\ s a -> s{_usTemplateURL = a});
 
 -- | A list of capabilities that you must specify before AWS CloudFormation
--- can create or update certain stacks. Some stack templates might include
--- resources that can affect permissions in your AWS account. For those
+-- can update certain stacks. Some stack templates might include resources
+-- that can affect permissions in your AWS account, for example, by
+-- creating new AWS Identity and Access Management (IAM) users. For those
 -- stacks, you must explicitly acknowledge their capabilities by specifying
--- this parameter. Currently, the only valid value is 'CAPABILITY_IAM',
--- which is required for the following resources:
+-- this parameter.
+--
+-- Currently, the only valid value is 'CAPABILITY_IAM', which is required
+-- for the following resources:
 -- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html AWS::IAM::AccessKey>,
 -- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html AWS::IAM::Group>,
 -- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html AWS::IAM::InstanceProfile>,
@@ -231,8 +234,10 @@
 -- and
 -- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html AWS::IAM::UserToGroupAddition>.
 -- If your stack template contains these resources, we recommend that you
--- review any permissions associated with them. If you don\'t specify this
--- parameter, this action returns an InsufficientCapabilities error.
+-- review all permissions associated with them and edit their permissions
+-- if necessary. If your template contains any of the listed resources and
+-- you don\'t specify this parameter, this action returns an
+-- 'InsufficientCapabilities' error.
 usCapabilities :: Lens' UpdateStack [Capability]
 usCapabilities = lens _usCapabilities (\ s a -> s{_usCapabilities = a}) . _Default . _Coerce;
 
@@ -274,6 +279,8 @@
 
 instance Hashable UpdateStack
 
+instance NFData UpdateStack
+
 instance ToHeaders UpdateStack where
         toHeaders = const mempty
 
@@ -337,3 +344,5 @@
 -- | The response status code.
 usrsResponseStatus :: Lens' UpdateStackResponse Int
 usrsResponseStatus = lens _usrsResponseStatus (\ s a -> s{_usrsResponseStatus = a});
+
+instance NFData UpdateStackResponse
diff --git a/gen/Network/AWS/CloudFormation/ValidateTemplate.hs b/gen/Network/AWS/CloudFormation/ValidateTemplate.hs
--- a/gen/Network/AWS/CloudFormation/ValidateTemplate.hs
+++ b/gen/Network/AWS/CloudFormation/ValidateTemplate.hs
@@ -108,6 +108,8 @@
 
 instance Hashable ValidateTemplate
 
+instance NFData ValidateTemplate
+
 instance ToHeaders ValidateTemplate where
         toHeaders = const mempty
 
@@ -183,3 +185,5 @@
 -- | The response status code.
 vtrsResponseStatus :: Lens' ValidateTemplateResponse Int
 vtrsResponseStatus = lens _vtrsResponseStatus (\ s a -> s{_vtrsResponseStatus = a});
+
+instance NFData ValidateTemplateResponse
diff --git a/test/Test/AWS/Gen/CloudFormation.hs b/test/Test/AWS/Gen/CloudFormation.hs
--- a/test/Test/AWS/Gen/CloudFormation.hs
+++ b/test/Test/AWS/Gen/CloudFormation.hs
@@ -37,6 +37,9 @@
 --         , testGetTemplateSummary $
 --             getTemplateSummary
 --
+--         , testListChangeSets $
+--             listChangeSets
+--
 --         , testListStackResources $
 --             listStackResources
 --
@@ -46,6 +49,12 @@
 --         , testDescribeStacks $
 --             describeStacks
 --
+--         , testCreateChangeSet $
+--             createChangeSet
+--
+--         , testExecuteChangeSet $
+--             executeChangeSet
+--
 --         , testContinueUpdateRollback $
 --             continueUpdateRollback
 --
@@ -79,9 +88,15 @@
 --         , testEstimateTemplateCost $
 --             estimateTemplateCost
 --
+--         , testDeleteChangeSet $
+--             deleteChangeSet
+--
 --         , testGetTemplate $
 --             getTemplate
 --
+--         , testDescribeChangeSet $
+--             describeChangeSet
+--
 --         , testDescribeStackResource $
 --             describeStackResource
 --
@@ -97,6 +112,9 @@
 --         , testGetTemplateSummaryResponse $
 --             getTemplateSummaryResponse
 --
+--         , testListChangeSetsResponse $
+--             listChangeSetsResponse
+--
 --         , testListStackResourcesResponse $
 --             listStackResourcesResponse
 --
@@ -106,6 +124,12 @@
 --         , testDescribeStacksResponse $
 --             describeStacksResponse
 --
+--         , testCreateChangeSetResponse $
+--             createChangeSetResponse
+--
+--         , testExecuteChangeSetResponse $
+--             executeChangeSetResponse
+--
 --         , testContinueUpdateRollbackResponse $
 --             continueUpdateRollbackResponse
 --
@@ -139,9 +163,15 @@
 --         , testEstimateTemplateCostResponse $
 --             estimateTemplateCostResponse
 --
+--         , testDeleteChangeSetResponse $
+--             deleteChangeSetResponse
+--
 --         , testGetTemplateResponse $
 --             getTemplateResponse
 --
+--         , testDescribeChangeSetResponse $
+--             describeChangeSetResponse
+--
 --         , testDescribeStackResourceResponse $
 --             describeStackResourceResponse
 --
@@ -165,6 +195,11 @@
     "GetTemplateSummary"
     "fixture/GetTemplateSummary.yaml"
 
+testListChangeSets :: ListChangeSets -> TestTree
+testListChangeSets = req
+    "ListChangeSets"
+    "fixture/ListChangeSets.yaml"
+
 testListStackResources :: ListStackResources -> TestTree
 testListStackResources = req
     "ListStackResources"
@@ -180,6 +215,16 @@
     "DescribeStacks"
     "fixture/DescribeStacks.yaml"
 
+testCreateChangeSet :: CreateChangeSet -> TestTree
+testCreateChangeSet = req
+    "CreateChangeSet"
+    "fixture/CreateChangeSet.yaml"
+
+testExecuteChangeSet :: ExecuteChangeSet -> TestTree
+testExecuteChangeSet = req
+    "ExecuteChangeSet"
+    "fixture/ExecuteChangeSet.yaml"
+
 testContinueUpdateRollback :: ContinueUpdateRollback -> TestTree
 testContinueUpdateRollback = req
     "ContinueUpdateRollback"
@@ -235,11 +280,21 @@
     "EstimateTemplateCost"
     "fixture/EstimateTemplateCost.yaml"
 
+testDeleteChangeSet :: DeleteChangeSet -> TestTree
+testDeleteChangeSet = req
+    "DeleteChangeSet"
+    "fixture/DeleteChangeSet.yaml"
+
 testGetTemplate :: GetTemplate -> TestTree
 testGetTemplate = req
     "GetTemplate"
     "fixture/GetTemplate.yaml"
 
+testDescribeChangeSet :: DescribeChangeSet -> TestTree
+testDescribeChangeSet = req
+    "DescribeChangeSet"
+    "fixture/DescribeChangeSet.yaml"
+
 testDescribeStackResource :: DescribeStackResource -> TestTree
 testDescribeStackResource = req
     "DescribeStackResource"
@@ -268,6 +323,13 @@
     cloudFormation
     (Proxy :: Proxy GetTemplateSummary)
 
+testListChangeSetsResponse :: ListChangeSetsResponse -> TestTree
+testListChangeSetsResponse = res
+    "ListChangeSetsResponse"
+    "fixture/ListChangeSetsResponse.proto"
+    cloudFormation
+    (Proxy :: Proxy ListChangeSets)
+
 testListStackResourcesResponse :: ListStackResourcesResponse -> TestTree
 testListStackResourcesResponse = res
     "ListStackResourcesResponse"
@@ -289,6 +351,20 @@
     cloudFormation
     (Proxy :: Proxy DescribeStacks)
 
+testCreateChangeSetResponse :: CreateChangeSetResponse -> TestTree
+testCreateChangeSetResponse = res
+    "CreateChangeSetResponse"
+    "fixture/CreateChangeSetResponse.proto"
+    cloudFormation
+    (Proxy :: Proxy CreateChangeSet)
+
+testExecuteChangeSetResponse :: ExecuteChangeSetResponse -> TestTree
+testExecuteChangeSetResponse = res
+    "ExecuteChangeSetResponse"
+    "fixture/ExecuteChangeSetResponse.proto"
+    cloudFormation
+    (Proxy :: Proxy ExecuteChangeSet)
+
 testContinueUpdateRollbackResponse :: ContinueUpdateRollbackResponse -> TestTree
 testContinueUpdateRollbackResponse = res
     "ContinueUpdateRollbackResponse"
@@ -366,12 +442,26 @@
     cloudFormation
     (Proxy :: Proxy EstimateTemplateCost)
 
+testDeleteChangeSetResponse :: DeleteChangeSetResponse -> TestTree
+testDeleteChangeSetResponse = res
+    "DeleteChangeSetResponse"
+    "fixture/DeleteChangeSetResponse.proto"
+    cloudFormation
+    (Proxy :: Proxy DeleteChangeSet)
+
 testGetTemplateResponse :: GetTemplateResponse -> TestTree
 testGetTemplateResponse = res
     "GetTemplateResponse"
     "fixture/GetTemplateResponse.proto"
     cloudFormation
     (Proxy :: Proxy GetTemplate)
+
+testDescribeChangeSetResponse :: DescribeChangeSetResponse -> TestTree
+testDescribeChangeSetResponse = res
+    "DescribeChangeSetResponse"
+    "fixture/DescribeChangeSetResponse.proto"
+    cloudFormation
+    (Proxy :: Proxy DescribeChangeSet)
 
 testDescribeStackResourceResponse :: DescribeStackResourceResponse -> TestTree
 testDescribeStackResourceResponse = res
