diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.3.7`
+`1.4.0`
 
 
 ## Description
@@ -34,10 +34,10 @@
 Amazon CloudFormation makes use of other AWS products. If you need
 additional technical information about a specific AWS product, you can
 find the product\'s technical documentation at
-<http://aws.amazon.com/documentation/>.
+<http://docs.aws.amazon.com/documentation/>.
 
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-cloudformation)
-and the [AWS API Reference](http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/Welcome.html).
+and the [AWS API Reference](https://aws.amazon.com/documentation/).
 
 The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),
 which provides mechanisms for specifying AuthN/AuthZ information and sending requests.
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.3.7
+version:               1.4.0
 synopsis:              Amazon CloudFormation SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -7,7 +7,7 @@
 license-file:          LICENSE
 author:                Brendan Hay
 maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2013-2015 Brendan Hay
+copyright:             Copyright (c) 2013-2016 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
@@ -34,7 +34,7 @@
     Amazon CloudFormation makes use of other AWS products. If you need
     additional technical information about a specific AWS product, you can
     find the product\'s technical documentation at
-    <http://aws.amazon.com/documentation/>.
+    <http://docs.aws.amazon.com/documentation/>.
     .
     The types from this library are intended to be used with
     <http://hackage.haskell.org/package/amazonka amazonka>, which provides
@@ -47,7 +47,7 @@
     such as <http://hackage.haskell.org/package/lens lens> or
     <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
     .
-    See "Network.AWS.CloudFormation" and the <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/Welcome.html AWS API Reference>
+    See "Network.AWS.CloudFormation" or <https://aws.amazon.com/documentation/ the AWS Documentation>
     to get started.
 
 source-repository head
@@ -63,6 +63,7 @@
     exposed-modules:
           Network.AWS.CloudFormation
         , Network.AWS.CloudFormation.CancelUpdateStack
+        , Network.AWS.CloudFormation.ContinueUpdateRollback
         , Network.AWS.CloudFormation.CreateStack
         , Network.AWS.CloudFormation.DeleteStack
         , Network.AWS.CloudFormation.DescribeAccountLimits
@@ -88,7 +89,7 @@
         , Network.AWS.CloudFormation.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.7.*
+          amazonka-core == 1.4.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-cloudformation-test
@@ -108,9 +109,9 @@
         , Test.AWS.CloudFormation.Internal
 
     build-depends:
-          amazonka-core == 1.3.7.*
-        , amazonka-test == 1.3.7.*
-        , amazonka-cloudformation == 1.3.7.*
+          amazonka-core == 1.4.0.*
+        , amazonka-test == 1.4.0.*
+        , amazonka-cloudformation == 1.4.0.*
         , base
         , bytestring
         , tasty
diff --git a/fixture/ContinueUpdateRollback.yaml b/fixture/ContinueUpdateRollback.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ContinueUpdateRollback.yaml
diff --git a/fixture/ContinueUpdateRollbackResponse.proto b/fixture/ContinueUpdateRollbackResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ContinueUpdateRollbackResponse.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
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -32,9 +32,7 @@
 -- Amazon CloudFormation makes use of other AWS products. If you need
 -- additional technical information about a specific AWS product, you can
 -- find the product\'s technical documentation at
--- <http://aws.amazon.com/documentation/>.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/Welcome.html AWS API Reference>
+-- <http://docs.aws.amazon.com/documentation/>.
 module Network.AWS.CloudFormation
     (
     -- * Service Configuration
@@ -55,6 +53,18 @@
     -- * Waiters
     -- $waiters
 
+    -- ** StackCreateComplete
+    , stackCreateComplete
+
+    -- ** StackUpdateComplete
+    , stackUpdateComplete
+
+    -- ** StackExists
+    , stackExists
+
+    -- ** StackDeleteComplete
+    , stackDeleteComplete
+
     -- * Operations
     -- $operations
 
@@ -76,6 +86,9 @@
     -- ** DescribeStacks (Paginated)
     , module Network.AWS.CloudFormation.DescribeStacks
 
+    -- ** ContinueUpdateRollback
+    , module Network.AWS.CloudFormation.ContinueUpdateRollback
+
     -- ** ValidateTemplate
     , module Network.AWS.CloudFormation.ValidateTemplate
 
@@ -261,6 +274,7 @@
     ) where
 
 import           Network.AWS.CloudFormation.CancelUpdateStack
+import           Network.AWS.CloudFormation.ContinueUpdateRollback
 import           Network.AWS.CloudFormation.CreateStack
 import           Network.AWS.CloudFormation.DeleteStack
 import           Network.AWS.CloudFormation.DescribeAccountLimits
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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.CancelUpdateStack
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -23,8 +23,6 @@
 -- previous stack configuration.
 --
 -- You can cancel only stacks that are in the UPDATE_IN_PROGRESS state.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CancelUpdateStack.html AWS API Reference> for CancelUpdateStack.
 module Network.AWS.CloudFormation.CancelUpdateStack
     (
     -- * Creating a Request
@@ -45,7 +43,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for the CancelUpdateStack action.
+-- | The input for the < CancelUpdateStack> action.
 --
 -- /See:/ 'cancelUpdateStack' smart constructor.
 newtype CancelUpdateStack = CancelUpdateStack'
@@ -73,6 +71,8 @@
         type Rs CancelUpdateStack = CancelUpdateStackResponse
         request = postQuery cloudFormation
         response = receiveNull CancelUpdateStackResponse'
+
+instance Hashable CancelUpdateStack
 
 instance ToHeaders CancelUpdateStack where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/CloudFormation/ContinueUpdateRollback.hs b/gen/Network/AWS/CloudFormation/ContinueUpdateRollback.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudFormation/ContinueUpdateRollback.hs
@@ -0,0 +1,131 @@
+{-# 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.ContinueUpdateRollback
+-- 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)
+--
+-- For a specified stack that is in the 'UPDATE_ROLLBACK_FAILED' state,
+-- continues rolling it back to the 'UPDATE_ROLLBACK_COMPLETE' state.
+-- Depending on the cause of the failure, you can manually
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors-update-rollback-failed fix the error>
+-- and continue the rollback. By continuing the rollback, you can return
+-- your stack to a working state (the 'UPDATE_ROLLBACK_COMPLETE' state),
+-- and then try to update the stack again.
+--
+-- A stack goes into the 'UPDATE_ROLLBACK_FAILED' state when AWS
+-- CloudFormation cannot roll back all changes after a failed stack update.
+-- For example, you might have a stack that is rolling back to an old
+-- database instance that was deleted outside of AWS CloudFormation.
+-- Because AWS CloudFormation doesn\'t know the database was deleted, it
+-- assumes that the database instance still exists and attempts to roll
+-- back to it, causing the update rollback to fail.
+module Network.AWS.CloudFormation.ContinueUpdateRollback
+    (
+    -- * Creating a Request
+      continueUpdateRollback
+    , ContinueUpdateRollback
+    -- * Request Lenses
+    , curStackName
+
+    -- * Destructuring the Response
+    , continueUpdateRollbackResponse
+    , ContinueUpdateRollbackResponse
+    -- * Response Lenses
+    , currsResponseStatus
+    ) 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 < ContinueUpdateRollback> action.
+--
+-- /See:/ 'continueUpdateRollback' smart constructor.
+newtype ContinueUpdateRollback = ContinueUpdateRollback'
+    { _curStackName :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ContinueUpdateRollback' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'curStackName'
+continueUpdateRollback
+    :: Text -- ^ 'curStackName'
+    -> ContinueUpdateRollback
+continueUpdateRollback pStackName_ =
+    ContinueUpdateRollback'
+    { _curStackName = pStackName_
+    }
+
+-- | The name or the unique ID of the stack that you want to continue rolling
+-- back.
+curStackName :: Lens' ContinueUpdateRollback Text
+curStackName = lens _curStackName (\ s a -> s{_curStackName = a});
+
+instance AWSRequest ContinueUpdateRollback where
+        type Rs ContinueUpdateRollback =
+             ContinueUpdateRollbackResponse
+        request = postQuery cloudFormation
+        response
+          = receiveXMLWrapper "ContinueUpdateRollbackResult"
+              (\ s h x ->
+                 ContinueUpdateRollbackResponse' <$>
+                   (pure (fromEnum s)))
+
+instance Hashable ContinueUpdateRollback
+
+instance ToHeaders ContinueUpdateRollback where
+        toHeaders = const mempty
+
+instance ToPath ContinueUpdateRollback where
+        toPath = const "/"
+
+instance ToQuery ContinueUpdateRollback where
+        toQuery ContinueUpdateRollback'{..}
+          = mconcat
+              ["Action" =:
+                 ("ContinueUpdateRollback" :: ByteString),
+               "Version" =: ("2010-05-15" :: ByteString),
+               "StackName" =: _curStackName]
+
+-- | The output for a < ContinueUpdateRollback> action.
+--
+-- /See:/ 'continueUpdateRollbackResponse' smart constructor.
+newtype ContinueUpdateRollbackResponse = ContinueUpdateRollbackResponse'
+    { _currsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ContinueUpdateRollbackResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'currsResponseStatus'
+continueUpdateRollbackResponse
+    :: Int -- ^ 'currsResponseStatus'
+    -> ContinueUpdateRollbackResponse
+continueUpdateRollbackResponse pResponseStatus_ =
+    ContinueUpdateRollbackResponse'
+    { _currsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+currsResponseStatus :: Lens' ContinueUpdateRollbackResponse Int
+currsResponseStatus = lens _currsResponseStatus (\ s a -> s{_currsResponseStatus = a});
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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.CreateStack
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,9 +20,7 @@
 --
 -- Creates a stack as specified in the template. After the call completes
 -- successfully, the stack creation starts. You can check the status of the
--- stack via the DescribeStacks API.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html AWS API Reference> for CreateStack.
+-- stack via the < DescribeStacks> API.
 module Network.AWS.CloudFormation.CreateStack
     (
     -- * Creating a Request
@@ -58,7 +56,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for CreateStack action.
+-- | The input for < CreateStack> action.
 --
 -- /See:/ 'createStack' smart constructor.
 data CreateStack = CreateStack'
@@ -148,7 +146,9 @@
 csStackPolicyBody = lens _csStackPolicyBody (\ s a -> s{_csStackPolicyBody = a});
 
 -- | A list of 'Parameter' structures that specify input parameters for the
--- stack.
+-- stack. For more information, see the
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html Parameter>
+-- data type.
 csParameters :: Lens' CreateStack [Parameter]
 csParameters = lens _csParameters (\ s a -> s{_csParameters = a}) . _Default . _Coerce;
 
@@ -228,10 +228,9 @@
 csResourceTypes :: Lens' CreateStack [Text]
 csResourceTypes = lens _csResourceTypes (\ s a -> s{_csResourceTypes = a}) . _Default . _Coerce;
 
--- | A set of user-defined 'Tags' to associate with this stack, represented
--- by key\/value pairs. Tags defined for the stack are propagated to EC2
--- resources that are created as part of the stack. A maximum number of 10
--- tags can be specified.
+-- | Key-value pairs to associate with this stack. AWS CloudFormation also
+-- propagates these tags to the resources created in the stack. A maximum
+-- number of 10 tags can be specified.
 csTags :: Lens' CreateStack [Tag]
 csTags = lens _csTags (\ s a -> s{_csTags = a}) . _Default . _Coerce;
 
@@ -246,7 +245,7 @@
 --
 -- A stack name can contain only alphanumeric characters (case sensitive)
 -- and hyphens. It must start with an alphabetic character and cannot be
--- longer than 255 characters.
+-- longer than 128 characters.
 csStackName :: Lens' CreateStack Text
 csStackName = lens _csStackName (\ s a -> s{_csStackName = a});
 
@@ -259,6 +258,8 @@
                  CreateStackResponse' <$>
                    (x .@? "StackId") <*> (pure (fromEnum s)))
 
+instance Hashable CreateStack
+
 instance ToHeaders CreateStack where
         toHeaders = const mempty
 
@@ -289,7 +290,7 @@
                "TimeoutInMinutes" =: _csTimeoutInMinutes,
                "StackName" =: _csStackName]
 
--- | The output for a CreateStack action.
+-- | The output for a < CreateStack> action.
 --
 -- /See:/ 'createStackResponse' smart constructor.
 data CreateStackResponse = CreateStackResponse'
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
@@ -12,23 +12,22 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.DeleteStack
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- 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 a specified stack. Once the call completes successfully, stack
--- deletion starts. Deleted stacks do not show up in the DescribeStacks API
--- if the deletion has been completed successfully.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeleteStack.html AWS API Reference> for DeleteStack.
+-- deletion starts. Deleted stacks do not show up in the < DescribeStacks>
+-- API if the deletion has been completed successfully.
 module Network.AWS.CloudFormation.DeleteStack
     (
     -- * Creating a Request
       deleteStack
     , DeleteStack
     -- * Request Lenses
+    , dsRetainResources
     , dsStackName
 
     -- * Destructuring the Response
@@ -43,26 +42,40 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for DeleteStack action.
+-- | The input for < DeleteStack> action.
 --
 -- /See:/ 'deleteStack' smart constructor.
-newtype DeleteStack = DeleteStack'
-    { _dsStackName :: Text
+data DeleteStack = DeleteStack'
+    { _dsRetainResources :: !(Maybe [Text])
+    , _dsStackName       :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DeleteStack' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'dsRetainResources'
+--
 -- * 'dsStackName'
 deleteStack
     :: Text -- ^ 'dsStackName'
     -> DeleteStack
 deleteStack pStackName_ =
     DeleteStack'
-    { _dsStackName = pStackName_
+    { _dsRetainResources = Nothing
+    , _dsStackName = pStackName_
     }
 
+-- | For stacks in the 'DELETE_FAILED' state, a list of resource logical IDs
+-- that are associated with the resources you want to retain. During
+-- deletion, AWS CloudFormation deletes the stack but does not delete the
+-- retained resources.
+--
+-- Retaining resources is useful when you cannot delete a resource, such as
+-- a non-empty S3 bucket, but you want to delete the stack.
+dsRetainResources :: Lens' DeleteStack [Text]
+dsRetainResources = lens _dsRetainResources (\ s a -> s{_dsRetainResources = a}) . _Default . _Coerce;
+
 -- | The name or the unique stack ID that is associated with the stack.
 dsStackName :: Lens' DeleteStack Text
 dsStackName = lens _dsStackName (\ s a -> s{_dsStackName = a});
@@ -72,6 +85,8 @@
         request = postQuery cloudFormation
         response = receiveNull DeleteStackResponse'
 
+instance Hashable DeleteStack
+
 instance ToHeaders DeleteStack where
         toHeaders = const mempty
 
@@ -83,6 +98,9 @@
           = mconcat
               ["Action" =: ("DeleteStack" :: ByteString),
                "Version" =: ("2010-05-15" :: ByteString),
+               "RetainResources" =:
+                 toQuery
+                   (toQueryList "member" <$> _dsRetainResources),
                "StackName" =: _dsStackName]
 
 -- | /See:/ 'deleteStackResponse' smart constructor.
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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.DescribeAccountLimits
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,8 +20,6 @@
 --
 -- Retrieves your account\'s AWS CloudFormation limits, such as the maximum
 -- number of stacks that you can create in your account.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeAccountLimits.html AWS API Reference> for DescribeAccountLimits.
 module Network.AWS.CloudFormation.DescribeAccountLimits
     (
     -- * Creating a Request
@@ -46,7 +44,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for the DescribeAccountLimits action.
+-- | The input for the < DescribeAccountLimits> action.
 --
 -- /See:/ 'describeAccountLimits' smart constructor.
 newtype DescribeAccountLimits = DescribeAccountLimits'
@@ -83,6 +81,8 @@
                         may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
+instance Hashable DescribeAccountLimits
+
 instance ToHeaders DescribeAccountLimits where
         toHeaders = const mempty
 
@@ -96,7 +96,7 @@
                "Version" =: ("2010-05-15" :: ByteString),
                "NextToken" =: _dalNextToken]
 
--- | The output for the DescribeAccountLimits action.
+-- | The output for the < DescribeAccountLimits> action.
 --
 -- /See:/ 'describeAccountLimitsResponse' smart constructor.
 data DescribeAccountLimitsResponse = DescribeAccountLimitsResponse'
@@ -124,8 +124,8 @@
     , _dalrsResponseStatus = pResponseStatus_
     }
 
--- | A string that identifies the next page of limits. If no additional page
--- exists, this value is null.
+-- | If the output exceeds 1 MB in size, a string that identifies the next
+-- page of limits. If no additional page exists, this value is null.
 dalrsNextToken :: Lens' DescribeAccountLimitsResponse (Maybe Text)
 dalrsNextToken = lens _dalrsNextToken (\ s a -> s{_dalrsNextToken = a});
 
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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.DescribeStackEvents
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -26,8 +26,6 @@
 -- You can list events for stacks that have failed to create or have been
 -- deleted by specifying the unique stack identifier (stack ID).
 --
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackEvents.html AWS API Reference> for DescribeStackEvents.
---
 -- This operation returns paginated results.
 module Network.AWS.CloudFormation.DescribeStackEvents
     (
@@ -55,7 +53,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for DescribeStackEvents action.
+-- | The input for < DescribeStackEvents> action.
 --
 -- /See:/ 'describeStackEvents' smart constructor.
 data DescribeStackEvents = DescribeStackEvents'
@@ -78,10 +76,8 @@
     , _dseStackName = Nothing
     }
 
--- | String that identifies the start of the next list of events, if there is
--- one.
---
--- Default: There is no default value.
+-- | A string that identifies the next page of events that you want to
+-- retrieve.
 dseNextToken :: Lens' DescribeStackEvents (Maybe Text)
 dseNextToken = lens _dseNextToken (\ s a -> s{_dseNextToken = a});
 
@@ -116,6 +112,8 @@
                         may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
+instance Hashable DescribeStackEvents
+
 instance ToHeaders DescribeStackEvents where
         toHeaders = const mempty
 
@@ -130,7 +128,7 @@
                "NextToken" =: _dseNextToken,
                "StackName" =: _dseStackName]
 
--- | The output for a DescribeStackEvents action.
+-- | The output for a < DescribeStackEvents> action.
 --
 -- /See:/ 'describeStackEventsResponse' smart constructor.
 data DescribeStackEventsResponse = DescribeStackEventsResponse'
@@ -158,8 +156,8 @@
     , _dsersResponseStatus = pResponseStatus_
     }
 
--- | String that identifies the start of the next list of events, if there is
--- one.
+-- | If the output exceeds 1 MB in size, a string that identifies the next
+-- page of events. If no additional page exists, this value is null.
 dsersNextToken :: Lens' DescribeStackEventsResponse (Maybe Text)
 dsersNextToken = lens _dsersNextToken (\ s a -> s{_dsersNextToken = a});
 
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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.DescribeStackResource
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -22,8 +22,6 @@
 --
 -- For deleted stacks, DescribeStackResource returns resource information
 -- for up to 90 days after the stack has been deleted.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackResource.html AWS API Reference> for DescribeStackResource.
 module Network.AWS.CloudFormation.DescribeStackResource
     (
     -- * Creating a Request
@@ -48,7 +46,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for DescribeStackResource action.
+-- | The input for < DescribeStackResource> action.
 --
 -- /See:/ 'describeStackResource' smart constructor.
 data DescribeStackResource = DescribeStackResource'
@@ -101,6 +99,8 @@
                    (x .@? "StackResourceDetail") <*>
                      (pure (fromEnum s)))
 
+instance Hashable DescribeStackResource
+
 instance ToHeaders DescribeStackResource where
         toHeaders = const mempty
 
@@ -115,7 +115,7 @@
                "StackName" =: _desStackName,
                "LogicalResourceId" =: _desLogicalResourceId]
 
--- | The output for a DescribeStackResource action.
+-- | The output for a < DescribeStackResource> action.
 --
 -- /See:/ 'describeStackResourceResponse' smart constructor.
 data DescribeStackResourceResponse = 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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.DescribeStackResources
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -34,12 +34,10 @@
 -- both. In addition, you can specify 'LogicalResourceId' to filter the
 -- returned result. For more information about resources, the
 -- 'LogicalResourceId' and 'PhysicalResourceId', go to the
--- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide AWS CloudFormation User Guide>.
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/ AWS CloudFormation User Guide>.
 --
 -- A 'ValidationError' is returned if you specify both 'StackName' and
 -- 'PhysicalResourceId' in the same request.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackResources.html AWS API Reference> for DescribeStackResources.
 module Network.AWS.CloudFormation.DescribeStackResources
     (
     -- * Creating a Request
@@ -65,7 +63,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for DescribeStackResources action.
+-- | The input for < DescribeStackResources> action.
 --
 -- /See:/ 'describeStackResources' smart constructor.
 data DescribeStackResources = DescribeStackResources'
@@ -139,6 +137,8 @@
                       may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
+instance Hashable DescribeStackResources
+
 instance ToHeaders DescribeStackResources where
         toHeaders = const mempty
 
@@ -155,7 +155,7 @@
                "PhysicalResourceId" =: _dsrPhysicalResourceId,
                "StackName" =: _dsrStackName]
 
--- | The output for a DescribeStackResources action.
+-- | The output for a < DescribeStackResources> action.
 --
 -- /See:/ 'describeStackResourcesResponse' smart constructor.
 data DescribeStackResourcesResponse = 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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.DescribeStacks
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -21,8 +21,6 @@
 -- Returns the description for the specified stack; if no stack name was
 -- specified, then it returns the description for all the stacks created.
 --
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStacks.html AWS API Reference> for DescribeStacks.
---
 -- This operation returns paginated results.
 module Network.AWS.CloudFormation.DescribeStacks
     (
@@ -50,7 +48,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for DescribeStacks action.
+-- | The input for < DescribeStacks> action.
 --
 -- /See:/ 'describeStacks' smart constructor.
 data DescribeStacks = DescribeStacks'
@@ -73,8 +71,8 @@
     , _dStackName = Nothing
     }
 
--- | String that identifies the start of the next list of stacks, if there is
--- one.
+-- | A string that identifies the next page of stacks that you want to
+-- retrieve.
 dNextToken :: Lens' DescribeStacks (Maybe Text)
 dNextToken = lens _dNextToken (\ s a -> s{_dNextToken = a});
 
@@ -108,6 +106,8 @@
                         may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
+instance Hashable DescribeStacks
+
 instance ToHeaders DescribeStacks where
         toHeaders = const mempty
 
@@ -122,7 +122,7 @@
                "NextToken" =: _dNextToken,
                "StackName" =: _dStackName]
 
--- | The output for a DescribeStacks action.
+-- | The output for a < DescribeStacks> action.
 --
 -- /See:/ 'describeStacksResponse' smart constructor.
 data DescribeStacksResponse = DescribeStacksResponse'
@@ -150,8 +150,8 @@
     , _dsrsResponseStatus = pResponseStatus_
     }
 
--- | String that identifies the start of the next list of stacks, if there is
--- one.
+-- | If the output exceeds 1 MB in size, a string that identifies the next
+-- page of stacks. If no additional page exists, this value is null.
 dsrsNextToken :: Lens' DescribeStacksResponse (Maybe Text)
 dsrsNextToken = lens _dsrsNextToken (\ s a -> s{_dsrsNextToken = a});
 
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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.EstimateTemplateCost
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -21,8 +21,6 @@
 -- Returns the estimated monthly cost of a template. The return value is an
 -- AWS Simple Monthly Calculator URL with a query string that describes the
 -- resources required to run the template.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_EstimateTemplateCost.html AWS API Reference> for EstimateTemplateCost.
 module Network.AWS.CloudFormation.EstimateTemplateCost
     (
     -- * Creating a Request
@@ -108,6 +106,8 @@
                  EstimateTemplateCostResponse' <$>
                    (x .@? "Url") <*> (pure (fromEnum s)))
 
+instance Hashable EstimateTemplateCost
+
 instance ToHeaders EstimateTemplateCost where
         toHeaders = const mempty
 
@@ -124,7 +124,7 @@
                "TemplateBody" =: _etcTemplateBody,
                "TemplateURL" =: _etcTemplateURL]
 
--- | The output for a EstimateTemplateCost action.
+-- | The output for a < EstimateTemplateCost> action.
 --
 -- /See:/ 'estimateTemplateCostResponse' smart constructor.
 data EstimateTemplateCostResponse = EstimateTemplateCostResponse'
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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.GetStackPolicy
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,8 +20,6 @@
 --
 -- Returns the stack policy for a specified stack. If a stack doesn\'t have
 -- a policy, a null value is returned.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetStackPolicy.html AWS API Reference> for GetStackPolicy.
 module Network.AWS.CloudFormation.GetStackPolicy
     (
     -- * Creating a Request
@@ -45,7 +43,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for the GetStackPolicy action.
+-- | The input for the < GetStackPolicy> action.
 --
 -- /See:/ 'getStackPolicy' smart constructor.
 newtype GetStackPolicy = GetStackPolicy'
@@ -79,6 +77,8 @@
                  GetStackPolicyResponse' <$>
                    (x .@? "StackPolicyBody") <*> (pure (fromEnum s)))
 
+instance Hashable GetStackPolicy
+
 instance ToHeaders GetStackPolicy where
         toHeaders = const mempty
 
@@ -92,7 +92,7 @@
                "Version" =: ("2010-05-15" :: ByteString),
                "StackName" =: _gspStackName]
 
--- | The output for the GetStackPolicy action.
+-- | The output for the < GetStackPolicy> action.
 --
 -- /See:/ 'getStackPolicyResponse' smart constructor.
 data GetStackPolicyResponse = 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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.GetTemplate
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -25,8 +25,6 @@
 -- after the stack has been deleted.
 --
 -- If the template does not exist, a 'ValidationError' is returned.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetTemplate.html AWS API Reference> for GetTemplate.
 module Network.AWS.CloudFormation.GetTemplate
     (
     -- * Creating a Request
@@ -50,7 +48,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for a GetTemplate action.
+-- | The input for a < GetTemplate> action.
 --
 -- /See:/ 'getTemplate' smart constructor.
 newtype GetTemplate = GetTemplate'
@@ -90,6 +88,8 @@
                  GetTemplateResponse' <$>
                    (x .@? "TemplateBody") <*> (pure (fromEnum s)))
 
+instance Hashable GetTemplate
+
 instance ToHeaders GetTemplate where
         toHeaders = const mempty
 
@@ -103,7 +103,7 @@
                "Version" =: ("2010-05-15" :: ByteString),
                "StackName" =: _gtStackName]
 
--- | The output for GetTemplate action.
+-- | The output for < GetTemplate> action.
 --
 -- /See:/ 'getTemplateResponse' smart constructor.
 data GetTemplateResponse = 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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.GetTemplateSummary
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -29,8 +29,6 @@
 -- For deleted stacks, 'GetTemplateSummary' returns the template
 -- information for up to 90 days after the stack has been deleted. If the
 -- template does not exist, a 'ValidationError' is returned.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetTemplateSummary.html AWS API Reference> for GetTemplateSummary.
 module Network.AWS.CloudFormation.GetTemplateSummary
     (
     -- * Creating a Request
@@ -62,7 +60,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for the GetTemplateSummary action.
+-- | The input for the < GetTemplateSummary> action.
 --
 -- /See:/ 'getTemplateSummary' smart constructor.
 data GetTemplateSummary = GetTemplateSummary'
@@ -143,6 +141,8 @@
                         may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
+instance Hashable GetTemplateSummary
+
 instance ToHeaders GetTemplateSummary where
         toHeaders = const mempty
 
@@ -158,7 +158,7 @@
                "TemplateURL" =: _gtsTemplateURL,
                "StackName" =: _gtsStackName]
 
--- | The output for the GetTemplateSummary action.
+-- | The output for the < GetTemplateSummary> action.
 --
 -- /See:/ 'getTemplateSummaryResponse' smart constructor.
 data GetTemplateSummaryResponse = GetTemplateSummaryResponse'
@@ -232,20 +232,15 @@
 -- | The capabilities found within the template. Currently, AWS
 -- CloudFormation supports only the CAPABILITY_IAM capability. If your
 -- template contains IAM resources, you must specify the CAPABILITY_IAM
--- value for this parameter when you use the CreateStack or UpdateStack
--- actions with your template; otherwise, those actions return an
--- InsufficientCapabilities error.
+-- value for this parameter when you use the < CreateStack> or
+-- < UpdateStack> actions with your template; otherwise, those actions
+-- return an InsufficientCapabilities error.
 gtsrsCapabilities :: Lens' GetTemplateSummaryResponse [Capability]
 gtsrsCapabilities = lens _gtsrsCapabilities (\ s a -> s{_gtsrsCapabilities = a}) . _Default . _Coerce;
 
 -- | A list of all the template resource types that are defined in the
 -- template, such as 'AWS::EC2::Instance', 'AWS::Dynamo::Table', and
--- 'Custom::MyCustomInstance'. Use the following syntax to describe
--- template resource types: 'AWS::*' (for all AWS resources), 'Custom::*'
--- (for all custom resources), 'Custom::logical_ID' (for a specific custom
--- resource), 'AWS::service_name::*' (for all resources of a particular AWS
--- service), and 'AWS::service_name::resource_logical_ID' (for a specific
--- AWS resource).
+-- 'Custom::MyCustomInstance'.
 gtsrsResourceTypes :: Lens' GetTemplateSummaryResponse [Text]
 gtsrsResourceTypes = lens _gtsrsResourceTypes (\ s a -> s{_gtsrsResourceTypes = a}) . _Default . _Coerce;
 
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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.ListStackResources
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -23,8 +23,6 @@
 -- For deleted stacks, ListStackResources returns resource information for
 -- up to 90 days after the stack has been deleted.
 --
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListStackResources.html AWS API Reference> for ListStackResources.
---
 -- This operation returns paginated results.
 module Network.AWS.CloudFormation.ListStackResources
     (
@@ -52,7 +50,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for the ListStackResource action.
+-- | The input for the < ListStackResource> action.
 --
 -- /See:/ 'listStackResources' smart constructor.
 data ListStackResources = ListStackResources'
@@ -76,10 +74,8 @@
     , _lsrStackName = pStackName_
     }
 
--- | String that identifies the start of the next list of stack resource
--- summaries, if there is one.
---
--- Default: There is no default value.
+-- | A string that identifies the next page of stack resources that you want
+-- to retrieve.
 lsrNextToken :: Lens' ListStackResources (Maybe Text)
 lsrNextToken = lens _lsrNextToken (\ s a -> s{_lsrNextToken = a});
 
@@ -114,6 +110,8 @@
                         may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
+instance Hashable ListStackResources
+
 instance ToHeaders ListStackResources where
         toHeaders = const mempty
 
@@ -128,7 +126,7 @@
                "NextToken" =: _lsrNextToken,
                "StackName" =: _lsrStackName]
 
--- | The output for a ListStackResources action.
+-- | The output for a < ListStackResources> action.
 --
 -- /See:/ 'listStackResourcesResponse' smart constructor.
 data ListStackResourcesResponse = ListStackResourcesResponse'
@@ -156,8 +154,9 @@
     , _lsrrsResponseStatus = pResponseStatus_
     }
 
--- | String that identifies the start of the next list of stack resources, if
--- there is one.
+-- | 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.
 lsrrsNextToken :: Lens' ListStackResourcesResponse (Maybe Text)
 lsrrsNextToken = lens _lsrrsNextToken (\ s a -> s{_lsrrsNextToken = a});
 
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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.ListStacks
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -24,8 +24,6 @@
 -- StackStatusFilter is specified, summary information for all stacks is
 -- returned (including existing stacks and stacks that have been deleted).
 --
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListStacks.html AWS API Reference> for ListStacks.
---
 -- This operation returns paginated results.
 module Network.AWS.CloudFormation.ListStacks
     (
@@ -53,7 +51,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for ListStacks action.
+-- | The input for < ListStacks> action.
 --
 -- /See:/ 'listStacks' smart constructor.
 data ListStacks = ListStacks'
@@ -76,17 +74,15 @@
     , _lsStackStatusFilter = Nothing
     }
 
--- | String that identifies the start of the next list of stacks, if there is
--- one.
---
--- Default: There is no default value.
+-- | A string that identifies the next page of stacks that you want to
+-- retrieve.
 lsNextToken :: Lens' ListStacks (Maybe Text)
 lsNextToken = lens _lsNextToken (\ s a -> s{_lsNextToken = a});
 
 -- | Stack status to use as a filter. Specify one or more stack status codes
 -- to list only stacks with the specified status codes. For a complete list
--- of stack status codes, see the 'StackStatus' parameter of the Stack data
--- type.
+-- of stack status codes, see the 'StackStatus' parameter of the < Stack>
+-- data type.
 lsStackStatusFilter :: Lens' ListStacks [StackStatus]
 lsStackStatusFilter = lens _lsStackStatusFilter (\ s a -> s{_lsStackStatusFilter = a}) . _Default . _Coerce;
 
@@ -109,6 +105,8 @@
                         may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
+instance Hashable ListStacks
+
 instance ToHeaders ListStacks where
         toHeaders = const mempty
 
@@ -125,7 +123,7 @@
                  toQuery
                    (toQueryList "member" <$> _lsStackStatusFilter)]
 
--- | The output for ListStacks action.
+-- | The output for < ListStacks> action.
 --
 -- /See:/ 'listStacksResponse' smart constructor.
 data ListStacksResponse = ListStacksResponse'
@@ -153,8 +151,8 @@
     , _lsrsResponseStatus = pResponseStatus_
     }
 
--- | String that identifies the start of the next list of stacks, if there is
--- one.
+-- | If the output exceeds 1 MB in size, a string that identifies the next
+-- page of stacks. If no additional page exists, this value is null.
 lsrsNextToken :: Lens' ListStacksResponse (Maybe Text)
 lsrsNextToken = lens _lsrsNextToken (\ s a -> s{_lsrsNextToken = a});
 
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
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.SetStackPolicy
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- 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)
 --
 -- Sets a stack policy for a specified stack.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetStackPolicy.html AWS API Reference> for SetStackPolicy.
 module Network.AWS.CloudFormation.SetStackPolicy
     (
     -- * Creating a Request
@@ -43,7 +41,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for the SetStackPolicy action.
+-- | The input for the < SetStackPolicy> action.
 --
 -- /See:/ 'setStackPolicy' smart constructor.
 data SetStackPolicy = SetStackPolicy'
@@ -93,6 +91,8 @@
         type Rs SetStackPolicy = SetStackPolicyResponse
         request = postQuery cloudFormation
         response = receiveNull SetStackPolicyResponse'
+
+instance Hashable SetStackPolicy
 
 instance ToHeaders SetStackPolicy where
         toHeaders = const mempty
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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.SignalResource
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -25,8 +25,6 @@
 -- number of signals or the timeout period is exceeded. The SignalResource
 -- API is useful in cases where you want to send signals from anywhere
 -- other than an Amazon EC2 instance.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SignalResource.html AWS API Reference> for SignalResource.
 module Network.AWS.CloudFormation.SignalResource
     (
     -- * Creating a Request
@@ -50,7 +48,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for the SignalResource action.
+-- | The input for the < SignalResource> action.
 --
 -- /See:/ 'signalResource' smart constructor.
 data SignalResource = SignalResource'
@@ -112,6 +110,8 @@
         type Rs SignalResource = SignalResourceResponse
         request = postQuery cloudFormation
         response = receiveNull SignalResourceResponse'
+
+instance Hashable SignalResource
 
 instance ToHeaders SignalResource where
         toHeaders = const mempty
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
@@ -4,7 +4,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.Types
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -195,6 +195,7 @@
         , _retryCheck = check
         }
     check e
+      | has (hasStatus 429) e = Just "too_many_requests"
       | has (hasCode "ThrottlingException" . hasStatus 400) e =
           Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
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
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.Types.Product
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -58,6 +58,8 @@
           = AccountLimit' <$>
               (x .@? "Value") <*> (x .@? "Name")
 
+instance Hashable AccountLimit
+
 -- | The Output data type.
 --
 -- /See:/ 'output' smart constructor.
@@ -103,6 +105,8 @@
               (x .@? "OutputValue") <*> (x .@? "OutputKey") <*>
                 (x .@? "Description")
 
+instance Hashable Output
+
 -- | The Parameter data type.
 --
 -- /See:/ 'parameter' smart constructor.
@@ -152,6 +156,8 @@
               (x .@? "ParameterValue") <*> (x .@? "ParameterKey")
                 <*> (x .@? "UsePreviousValue")
 
+instance Hashable Parameter
+
 instance ToQuery Parameter where
         toQuery Parameter'{..}
           = mconcat
@@ -190,6 +196,8 @@
               (x .@? "AllowedValues" .!@ mempty >>=
                  may (parseXMLList "member"))
 
+instance Hashable ParameterConstraints
+
 -- | The ParameterDeclaration data type.
 --
 -- /See:/ 'parameterDeclaration' smart constructor.
@@ -263,6 +271,8 @@
                 <*> (x .@? "NoEcho")
                 <*> (x .@? "Description")
 
+instance Hashable ParameterDeclaration
+
 -- | The Stack data type.
 --
 -- /See:/ 'stack' smart constructor.
@@ -425,6 +435,8 @@
                 <*> (x .@ "CreationTime")
                 <*> (x .@ "StackStatus")
 
+instance Hashable Stack
+
 -- | The StackEvent data type.
 --
 -- /See:/ 'stackEvent' smart constructor.
@@ -541,6 +553,8 @@
                 <*> (x .@ "StackName")
                 <*> (x .@ "Timestamp")
 
+instance Hashable StackEvent
+
 -- | The StackResource data type.
 --
 -- /See:/ 'stackResource' smart constructor.
@@ -648,6 +662,8 @@
                 <*> (x .@ "Timestamp")
                 <*> (x .@ "ResourceStatus")
 
+instance Hashable StackResource
+
 -- | Contains detailed information about the specified stack resource.
 --
 -- /See:/ 'stackResourceDetail' smart constructor.
@@ -767,6 +783,8 @@
                 <*> (x .@ "LastUpdatedTimestamp")
                 <*> (x .@ "ResourceStatus")
 
+instance Hashable StackResourceDetail
+
 -- | Contains high-level information about the specified stack resource.
 --
 -- /See:/ 'stackResourceSummary' smart constructor.
@@ -847,6 +865,8 @@
                 <*> (x .@ "LastUpdatedTimestamp")
                 <*> (x .@ "ResourceStatus")
 
+instance Hashable StackResourceSummary
+
 -- | The StackSummary Data Type
 --
 -- /See:/ 'stackSummary' smart constructor.
@@ -942,8 +962,10 @@
                 <*> (x .@ "CreationTime")
                 <*> (x .@ "StackStatus")
 
+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
+-- you to specify a key-value pair that can be used to store information
 -- related to cost allocation for an AWS CloudFormation stack.
 --
 -- /See:/ 'tag' smart constructor.
@@ -982,6 +1004,8 @@
         parseXML x
           = Tag' <$> (x .@? "Value") <*> (x .@? "Key")
 
+instance Hashable Tag
+
 instance ToQuery Tag where
         toQuery Tag'{..}
           = mconcat ["Value" =: _tagValue, "Key" =: _tagKey]
@@ -1040,3 +1064,5 @@
               (x .@? "ParameterKey") <*> (x .@? "DefaultValue") <*>
                 (x .@? "NoEcho")
                 <*> (x .@? "Description")
+
+instance Hashable 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
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.Types.Sum
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
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
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.UpdateStack
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,19 +20,14 @@
 --
 -- Updates a stack as specified in the template. After the call completes
 -- successfully, the stack update starts. You can check the status of the
--- stack via the DescribeStacks action.
+-- stack via the < DescribeStacks> action.
 --
 -- To get a copy of the template for an existing stack, you can use the
--- GetTemplate action.
---
--- Tags that were associated with this stack during creation time will
--- still be associated with the stack after an 'UpdateStack' operation.
+-- < GetTemplate> action.
 --
 -- For more information about creating an update template, updating a
 -- stack, and monitoring the progress of the update, see
 -- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html Updating a Stack>.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html AWS API Reference> for UpdateStack.
 module Network.AWS.CloudFormation.UpdateStack
     (
     -- * Creating a Request
@@ -50,6 +45,7 @@
     , usTemplateURL
     , usCapabilities
     , usResourceTypes
+    , usTags
     , usStackName
 
     -- * Destructuring the Response
@@ -67,7 +63,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for UpdateStack action.
+-- | The input for < UpdateStack> action.
 --
 -- /See:/ 'updateStack' smart constructor.
 data UpdateStack = UpdateStack'
@@ -82,6 +78,7 @@
     , _usTemplateURL                 :: !(Maybe Text)
     , _usCapabilities                :: !(Maybe [Capability])
     , _usResourceTypes               :: !(Maybe [Text])
+    , _usTags                        :: !(Maybe [Tag])
     , _usStackName                   :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -111,6 +108,8 @@
 --
 -- * 'usResourceTypes'
 --
+-- * 'usTags'
+--
 -- * 'usStackName'
 updateStack
     :: Text -- ^ 'usStackName'
@@ -128,6 +127,7 @@
     , _usTemplateURL = Nothing
     , _usCapabilities = Nothing
     , _usResourceTypes = Nothing
+    , _usTags = Nothing
     , _usStackName = pStackName_
     }
 
@@ -136,8 +136,9 @@
 usUsePreviousTemplate :: Lens' UpdateStack (Maybe Bool)
 usUsePreviousTemplate = lens _usUsePreviousTemplate (\ s a -> s{_usUsePreviousTemplate = a});
 
--- | Update the ARNs for the Amazon SNS topics that are associated with the
--- stack.
+-- | Amazon Simple Notification Service topic Amazon Resource Names (ARNs)
+-- that AWS CloudFormation associates with the stack. Specify an empty list
+-- to remove all notification topics.
 usNotificationARNs :: Lens' UpdateStack [Text]
 usNotificationARNs = lens _usNotificationARNs (\ s a -> s{_usNotificationARNs = a}) . _Default . _Coerce;
 
@@ -244,10 +245,20 @@
 -- permissions to all resource types. AWS Identity and Access Management
 -- (IAM) uses this parameter for AWS CloudFormation-specific condition keys
 -- in IAM policies. For more information, see
--- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html Controlling Access with AWS Identity and Access Management>
+-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html Controlling Access with AWS Identity and Access Management>.
 usResourceTypes :: Lens' UpdateStack [Text]
 usResourceTypes = lens _usResourceTypes (\ s a -> s{_usResourceTypes = a}) . _Default . _Coerce;
 
+-- | Key-value pairs to associate with this stack. AWS CloudFormation also
+-- propagates these tags to supported resources in the stack. You can
+-- specify a maximum number of 10 tags.
+--
+-- If you don\'t specify this parameter, AWS CloudFormation doesn\'t modify
+-- the stack\'s tags. If you specify an empty value, AWS CloudFormation
+-- removes all associated tags.
+usTags :: Lens' UpdateStack [Tag]
+usTags = lens _usTags (\ s a -> s{_usTags = a}) . _Default . _Coerce;
+
 -- | The name or unique stack ID of the stack to update.
 usStackName :: Lens' UpdateStack Text
 usStackName = lens _usStackName (\ s a -> s{_usStackName = a});
@@ -261,6 +272,8 @@
                  UpdateStackResponse' <$>
                    (x .@? "StackId") <*> (pure (fromEnum s)))
 
+instance Hashable UpdateStack
+
 instance ToHeaders UpdateStack where
         toHeaders = const mempty
 
@@ -290,9 +303,10 @@
                  toQuery (toQueryList "member" <$> _usCapabilities),
                "ResourceTypes" =:
                  toQuery (toQueryList "member" <$> _usResourceTypes),
+               "Tags" =: toQuery (toQueryList "member" <$> _usTags),
                "StackName" =: _usStackName]
 
--- | The output for a UpdateStack action.
+-- | The output for a < UpdateStack> action.
 --
 -- /See:/ 'updateStackResponse' smart constructor.
 data UpdateStackResponse = 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
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.ValidateTemplate
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- 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)
 --
 -- Validates a specified template.
---
--- /See:/ <http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ValidateTemplate.html AWS API Reference> for ValidateTemplate.
 module Network.AWS.CloudFormation.ValidateTemplate
     (
     -- * Creating a Request
@@ -48,7 +46,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | The input for ValidateTemplate action.
+-- | The input for < ValidateTemplate> action.
 --
 -- /See:/ 'validateTemplate' smart constructor.
 data ValidateTemplate = ValidateTemplate'
@@ -108,6 +106,8 @@
                         may (parseXMLList "member"))
                      <*> (pure (fromEnum s)))
 
+instance Hashable ValidateTemplate
+
 instance ToHeaders ValidateTemplate where
         toHeaders = const mempty
 
@@ -122,7 +122,7 @@
                "TemplateBody" =: _vtTemplateBody,
                "TemplateURL" =: _vtTemplateURL]
 
--- | The output for ValidateTemplate action.
+-- | The output for < ValidateTemplate> action.
 --
 -- /See:/ 'validateTemplateResponse' smart constructor.
 data ValidateTemplateResponse = ValidateTemplateResponse'
@@ -174,9 +174,9 @@
 -- | The capabilities found within the template. Currently, AWS
 -- CloudFormation supports only the CAPABILITY_IAM capability. If your
 -- template contains IAM resources, you must specify the CAPABILITY_IAM
--- value for this parameter when you use the CreateStack or UpdateStack
--- actions with your template; otherwise, those actions return an
--- InsufficientCapabilities error.
+-- value for this parameter when you use the < CreateStack> or
+-- < UpdateStack> actions with your template; otherwise, those actions
+-- return an InsufficientCapabilities error.
 vtrsCapabilities :: Lens' ValidateTemplateResponse [Capability]
 vtrsCapabilities = lens _vtrsCapabilities (\ s a -> s{_vtrsCapabilities = a}) . _Default . _Coerce;
 
diff --git a/gen/Network/AWS/CloudFormation/Waiters.hs b/gen/Network/AWS/CloudFormation/Waiters.hs
--- a/gen/Network/AWS/CloudFormation/Waiters.hs
+++ b/gen/Network/AWS/CloudFormation/Waiters.hs
@@ -7,7 +7,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFormation.Waiters
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -15,7 +15,201 @@
 --
 module Network.AWS.CloudFormation.Waiters where
 
+import           Network.AWS.CloudFormation.DescribeStacks
+import           Network.AWS.CloudFormation.DescribeStacks
+import           Network.AWS.CloudFormation.DescribeStacks
+import           Network.AWS.CloudFormation.DescribeStacks
 import           Network.AWS.CloudFormation.Types
 import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Waiter
+
+-- | Polls 'Network.AWS.CloudFormation.DescribeStacks' every 30 seconds until a
+-- successful state is reached. An error is returned after 120 failed checks.
+stackCreateComplete :: Wait DescribeStacks
+stackCreateComplete =
+    Wait
+    { _waitName = "StackCreateComplete"
+    , _waitAttempts = 120
+    , _waitDelay = 30
+    , _waitAcceptors = [ matchAll
+                             "CREATE_COMPLETE"
+                             AcceptSuccess
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "CREATE_FAILED"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "DELETE_COMPLETE"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "DELETE_IN_PROGRESS"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "DELETE_FAILED"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "ROLLBACK_COMPLETE"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "ROLLBACK_FAILED"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "ROLLBACK_IN_PROGRESS"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchError "ValidationError" AcceptFailure]
+    }
+
+-- | Polls 'Network.AWS.CloudFormation.DescribeStacks' every 30 seconds until a
+-- successful state is reached. An error is returned after 120 failed checks.
+stackUpdateComplete :: Wait DescribeStacks
+stackUpdateComplete =
+    Wait
+    { _waitName = "StackUpdateComplete"
+    , _waitAttempts = 120
+    , _waitDelay = 30
+    , _waitAcceptors = [ matchAll
+                             "UPDATE_COMPLETE"
+                             AcceptSuccess
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "UPDATE_FAILED"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "UPDATE_ROLLBACK_COMPLETE"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "UPDATE_ROLLBACK_FAILED"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "UPDATE_ROLLBACK_IN_PROGRESS"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchError "ValidationError" AcceptFailure]
+    }
+
+-- | Polls 'Network.AWS.CloudFormation.DescribeStacks' every 5 seconds until a
+-- successful state is reached. An error is returned after 20 failed checks.
+stackExists :: Wait DescribeStacks
+stackExists =
+    Wait
+    { _waitName = "StackExists"
+    , _waitAttempts = 20
+    , _waitDelay = 5
+    , _waitAcceptors = [ matchStatus 200 AcceptSuccess
+                       , matchError "ValidationError" AcceptRetry]
+    }
+
+-- | Polls 'Network.AWS.CloudFormation.DescribeStacks' every 30 seconds until a
+-- successful state is reached. An error is returned after 120 failed checks.
+stackDeleteComplete :: Wait DescribeStacks
+stackDeleteComplete =
+    Wait
+    { _waitName = "StackDeleteComplete"
+    , _waitAttempts = 120
+    , _waitDelay = 30
+    , _waitAcceptors = [ matchAll
+                             "DELETE_COMPLETE"
+                             AcceptSuccess
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchError "ValidationError" AcceptSuccess
+                       , matchAny
+                             "DELETE_FAILED"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "CREATE_COMPLETE"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "CREATE_FAILED"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "CREATE_IN_PROGRESS"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "ROLLBACK_COMPLETE"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "ROLLBACK_FAILED"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "ROLLBACK_IN_PROGRESS"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "UPDATE_COMPLETE"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "UPDATE_IN_PROGRESS"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "UPDATE_ROLLBACK_COMPLETE"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "UPDATE_ROLLBACK_FAILED"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)
+                       , matchAny
+                             "UPDATE_ROLLBACK_IN_PROGRESS"
+                             AcceptFailure
+                             (folding (concatOf dsrsStacks) .
+                              sStackStatus . to toTextCI)]
+    }
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
diff --git a/test/Test/AWS/CloudFormation.hs b/test/Test/AWS/CloudFormation.hs
--- a/test/Test/AWS/CloudFormation.hs
+++ b/test/Test/AWS/CloudFormation.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 -- Module      : Test.AWS.CloudFormation
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : This Source Code Form is subject to the terms of
 --               the Mozilla Public License, v. 2.0.
 --               A copy of the MPL can be found in the LICENSE file or
diff --git a/test/Test/AWS/CloudFormation/Internal.hs b/test/Test/AWS/CloudFormation/Internal.hs
--- a/test/Test/AWS/CloudFormation/Internal.hs
+++ b/test/Test/AWS/CloudFormation/Internal.hs
@@ -2,7 +2,7 @@
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
 -- Module      : Test.AWS.CloudFormation.Internal
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : This Source Code Form is subject to the terms of
 --               the Mozilla Public License, v. 2.0.
 --               A copy of the MPL can be found in the LICENSE file or
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
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Test.AWS.Gen.CloudFormation
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -46,6 +46,9 @@
 --         , testDescribeStacks $
 --             describeStacks
 --
+--         , testContinueUpdateRollback $
+--             continueUpdateRollback
+--
 --         , testValidateTemplate $
 --             validateTemplate
 --
@@ -103,6 +106,9 @@
 --         , testDescribeStacksResponse $
 --             describeStacksResponse
 --
+--         , testContinueUpdateRollbackResponse $
+--             continueUpdateRollbackResponse
+--
 --         , testValidateTemplateResponse $
 --             validateTemplateResponse
 --
@@ -174,6 +180,11 @@
     "DescribeStacks"
     "fixture/DescribeStacks.yaml"
 
+testContinueUpdateRollback :: ContinueUpdateRollback -> TestTree
+testContinueUpdateRollback = req
+    "ContinueUpdateRollback"
+    "fixture/ContinueUpdateRollback.yaml"
+
 testValidateTemplate :: ValidateTemplate -> TestTree
 testValidateTemplate = req
     "ValidateTemplate"
@@ -277,6 +288,13 @@
     "fixture/DescribeStacksResponse.proto"
     cloudFormation
     (Proxy :: Proxy DescribeStacks)
+
+testContinueUpdateRollbackResponse :: ContinueUpdateRollbackResponse -> TestTree
+testContinueUpdateRollbackResponse = res
+    "ContinueUpdateRollbackResponse"
+    "fixture/ContinueUpdateRollbackResponse.proto"
+    cloudFormation
+    (Proxy :: Proxy ContinueUpdateRollback)
 
 testValidateTemplateResponse :: ValidateTemplateResponse -> TestTree
 testValidateTemplateResponse = res
