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
@@ -138,7 +138,7 @@
 access to non-administrators.
 
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-ssm)
-and the [AWS API Reference](http://docs.aws.amazon.com/ssm/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-ssm.cabal b/amazonka-ssm.cabal
--- a/amazonka-ssm.cabal
+++ b/amazonka-ssm.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-ssm
-version:               1.3.7
+version:               1.4.0
 synopsis:              Amazon Simple Systems Management Service 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
@@ -148,7 +148,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.SSM" and the <http://docs.aws.amazon.com/ssm/latest/APIReference/Welcome.html AWS API Reference>
+    See "Network.AWS.SSM" or <https://aws.amazon.com/documentation/ the AWS Documentation>
     to get started.
 
 source-repository head
@@ -187,7 +187,7 @@
         , Network.AWS.SSM.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.7.*
+          amazonka-core == 1.4.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-ssm-test
@@ -207,9 +207,9 @@
         , Test.AWS.SSM.Internal
 
     build-depends:
-          amazonka-core == 1.3.7.*
-        , amazonka-test == 1.3.7.*
-        , amazonka-ssm == 1.3.7.*
+          amazonka-core == 1.4.0.*
+        , amazonka-test == 1.4.0.*
+        , amazonka-ssm == 1.4.0.*
         , base
         , bytestring
         , tasty
diff --git a/gen/Network/AWS/SSM.hs b/gen/Network/AWS/SSM.hs
--- a/gen/Network/AWS/SSM.hs
+++ b/gen/Network/AWS/SSM.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM
--- 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
@@ -134,12 +134,10 @@
 -- AWS-RunPowerShellScript document on Windows, to trusted administrators
 -- only. You can create SSM documents for specific tasks and delegate
 -- access to non-administrators.
---
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.SSM
     (
     -- * Service Configuration
-      sSM
+      ssm
 
     -- * Errors
     -- $errors
@@ -222,10 +220,10 @@
     -- ** CreateDocument
     , module Network.AWS.SSM.CreateDocument
 
-    -- ** ListCommandInvocations
+    -- ** ListCommandInvocations (Paginated)
     , module Network.AWS.SSM.ListCommandInvocations
 
-    -- ** ListDocuments
+    -- ** ListDocuments (Paginated)
     , module Network.AWS.SSM.ListDocuments
 
     -- ** GetDocument
@@ -243,7 +241,7 @@
     -- ** DescribeInstanceInformation
     , module Network.AWS.SSM.DescribeInstanceInformation
 
-    -- ** ListAssociations
+    -- ** ListAssociations (Paginated)
     , module Network.AWS.SSM.ListAssociations
 
     -- ** DeleteAssociation
@@ -252,7 +250,7 @@
     -- ** SendCommand
     , module Network.AWS.SSM.SendCommand
 
-    -- ** ListCommands
+    -- ** ListCommands (Paginated)
     , module Network.AWS.SSM.ListCommands
 
     -- ** DeleteDocument
diff --git a/gen/Network/AWS/SSM/CancelCommand.hs b/gen/Network/AWS/SSM/CancelCommand.hs
--- a/gen/Network/AWS/SSM/CancelCommand.hs
+++ b/gen/Network/AWS/SSM/CancelCommand.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.CancelCommand
--- 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 @@
 -- Attempts to cancel the command specified by the Command ID. There is no
 -- guarantee that the command will be terminated and the underlying process
 -- stopped.
---
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_CancelCommand.html AWS API Reference> for CancelCommand.
 module Network.AWS.SSM.CancelCommand
     (
     -- * Creating a Request
@@ -80,11 +78,13 @@
 
 instance AWSRequest CancelCommand where
         type Rs CancelCommand = CancelCommandResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveEmpty
               (\ s h x ->
                  CancelCommandResponse' <$> (pure (fromEnum s)))
+
+instance Hashable CancelCommand
 
 instance ToHeaders CancelCommand where
         toHeaders
diff --git a/gen/Network/AWS/SSM/CreateAssociation.hs b/gen/Network/AWS/SSM/CreateAssociation.hs
--- a/gen/Network/AWS/SSM/CreateAssociation.hs
+++ b/gen/Network/AWS/SSM/CreateAssociation.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.CreateAssociation
--- 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
@@ -27,8 +27,6 @@
 -- If you associate a document with an instance that already has an
 -- associated document, the system throws the AssociationAlreadyExists
 -- exception.
---
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_CreateAssociation.html AWS API Reference> for CreateAssociation.
 module Network.AWS.SSM.CreateAssociation
     (
     -- * Creating a Request
@@ -95,13 +93,15 @@
 
 instance AWSRequest CreateAssociation where
         type Rs CreateAssociation = CreateAssociationResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveJSON
               (\ s h x ->
                  CreateAssociationResponse' <$>
                    (x .?> "AssociationDescription") <*>
                      (pure (fromEnum s)))
+
+instance Hashable CreateAssociation
 
 instance ToHeaders CreateAssociation where
         toHeaders
diff --git a/gen/Network/AWS/SSM/CreateAssociationBatch.hs b/gen/Network/AWS/SSM/CreateAssociationBatch.hs
--- a/gen/Network/AWS/SSM/CreateAssociationBatch.hs
+++ b/gen/Network/AWS/SSM/CreateAssociationBatch.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.CreateAssociationBatch
--- 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
@@ -27,8 +27,6 @@
 -- If you associate a document with an instance that already has an
 -- associated document, the system throws the AssociationAlreadyExists
 -- exception.
---
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_CreateAssociationBatch.html AWS API Reference> for CreateAssociationBatch.
 module Network.AWS.SSM.CreateAssociationBatch
     (
     -- * Creating a Request
@@ -77,7 +75,7 @@
 instance AWSRequest CreateAssociationBatch where
         type Rs CreateAssociationBatch =
              CreateAssociationBatchResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveJSON
               (\ s h x ->
@@ -85,6 +83,8 @@
                    (x .?> "Successful" .!@ mempty) <*>
                      (x .?> "Failed" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable CreateAssociationBatch
 
 instance ToHeaders CreateAssociationBatch where
         toHeaders
diff --git a/gen/Network/AWS/SSM/CreateDocument.hs b/gen/Network/AWS/SSM/CreateDocument.hs
--- a/gen/Network/AWS/SSM/CreateDocument.hs
+++ b/gen/Network/AWS/SSM/CreateDocument.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.CreateDocument
--- 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,10 +20,8 @@
 --
 -- Creates an SSM document.
 --
--- After you create an SSM document, you can use CreateAssociation to
+-- After you create an SSM document, you can use < CreateAssociation> to
 -- associate it with one or more running instances.
---
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_CreateDocument.html AWS API Reference> for CreateDocument.
 module Network.AWS.SSM.CreateDocument
     (
     -- * Creating a Request
@@ -83,13 +81,15 @@
 
 instance AWSRequest CreateDocument where
         type Rs CreateDocument = CreateDocumentResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveJSON
               (\ s h x ->
                  CreateDocumentResponse' <$>
                    (x .?> "DocumentDescription") <*>
                      (pure (fromEnum s)))
+
+instance Hashable CreateDocument
 
 instance ToHeaders CreateDocument where
         toHeaders
diff --git a/gen/Network/AWS/SSM/DeleteAssociation.hs b/gen/Network/AWS/SSM/DeleteAssociation.hs
--- a/gen/Network/AWS/SSM/DeleteAssociation.hs
+++ b/gen/Network/AWS/SSM/DeleteAssociation.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DeleteAssociation
--- 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 @@
 -- state of an instance after you disassociate a document, you must create
 -- a new document with the desired configuration and associate it with the
 -- instance.
---
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_DeleteAssociation.html AWS API Reference> for DeleteAssociation.
 module Network.AWS.SSM.DeleteAssociation
     (
     -- * Creating a Request
@@ -83,11 +81,13 @@
 
 instance AWSRequest DeleteAssociation where
         type Rs DeleteAssociation = DeleteAssociationResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveEmpty
               (\ s h x ->
                  DeleteAssociationResponse' <$> (pure (fromEnum s)))
+
+instance Hashable DeleteAssociation
 
 instance ToHeaders DeleteAssociation where
         toHeaders
diff --git a/gen/Network/AWS/SSM/DeleteDocument.hs b/gen/Network/AWS/SSM/DeleteDocument.hs
--- a/gen/Network/AWS/SSM/DeleteDocument.hs
+++ b/gen/Network/AWS/SSM/DeleteDocument.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DeleteDocument
--- 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 @@
 -- Before you delete the SSM document, we recommend that you use
 -- DeleteAssociation to disassociate all instances that are associated with
 -- the document.
---
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_DeleteDocument.html AWS API Reference> for DeleteDocument.
 module Network.AWS.SSM.DeleteDocument
     (
     -- * Creating a Request
@@ -71,11 +69,13 @@
 
 instance AWSRequest DeleteDocument where
         type Rs DeleteDocument = DeleteDocumentResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveEmpty
               (\ s h x ->
                  DeleteDocumentResponse' <$> (pure (fromEnum s)))
+
+instance Hashable DeleteDocument
 
 instance ToHeaders DeleteDocument where
         toHeaders
diff --git a/gen/Network/AWS/SSM/DescribeAssociation.hs b/gen/Network/AWS/SSM/DescribeAssociation.hs
--- a/gen/Network/AWS/SSM/DescribeAssociation.hs
+++ b/gen/Network/AWS/SSM/DescribeAssociation.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeAssociation
--- 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)
 --
 -- Describes the associations for the specified SSM document or instance.
---
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_DescribeAssociation.html AWS API Reference> for DescribeAssociation.
 module Network.AWS.SSM.DescribeAssociation
     (
     -- * Creating a Request
@@ -79,13 +77,15 @@
 instance AWSRequest DescribeAssociation where
         type Rs DescribeAssociation =
              DescribeAssociationResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveJSON
               (\ s h x ->
                  DescribeAssociationResponse' <$>
                    (x .?> "AssociationDescription") <*>
                      (pure (fromEnum s)))
+
+instance Hashable DescribeAssociation
 
 instance ToHeaders DescribeAssociation where
         toHeaders
diff --git a/gen/Network/AWS/SSM/DescribeDocument.hs b/gen/Network/AWS/SSM/DescribeDocument.hs
--- a/gen/Network/AWS/SSM/DescribeDocument.hs
+++ b/gen/Network/AWS/SSM/DescribeDocument.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeDocument
--- 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)
 --
 -- Describes the specified SSM document.
---
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_DescribeDocument.html AWS API Reference> for DescribeDocument.
 module Network.AWS.SSM.DescribeDocument
     (
     -- * Creating a Request
@@ -68,12 +66,14 @@
 
 instance AWSRequest DescribeDocument where
         type Rs DescribeDocument = DescribeDocumentResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveJSON
               (\ s h x ->
                  DescribeDocumentResponse' <$>
                    (x .?> "Document") <*> (pure (fromEnum s)))
+
+instance Hashable DescribeDocument
 
 instance ToHeaders DescribeDocument where
         toHeaders
diff --git a/gen/Network/AWS/SSM/DescribeInstanceInformation.hs b/gen/Network/AWS/SSM/DescribeInstanceInformation.hs
--- a/gen/Network/AWS/SSM/DescribeInstanceInformation.hs
+++ b/gen/Network/AWS/SSM/DescribeInstanceInformation.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeInstanceInformation
--- 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 @@
 -- IDs, it returns information for all your instances. If you specify an
 -- instance ID that is not valid or an instance that you do not own, you
 -- receive an error.
---
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_DescribeInstanceInformation.html AWS API Reference> for DescribeInstanceInformation.
 module Network.AWS.SSM.DescribeInstanceInformation
     (
     -- * Creating a Request
@@ -97,7 +95,7 @@
 instance AWSRequest DescribeInstanceInformation where
         type Rs DescribeInstanceInformation =
              DescribeInstanceInformationResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveJSON
               (\ s h x ->
@@ -105,6 +103,8 @@
                    (x .?> "NextToken") <*>
                      (x .?> "InstanceInformationList" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable DescribeInstanceInformation
 
 instance ToHeaders DescribeInstanceInformation where
         toHeaders
diff --git a/gen/Network/AWS/SSM/GetDocument.hs b/gen/Network/AWS/SSM/GetDocument.hs
--- a/gen/Network/AWS/SSM/GetDocument.hs
+++ b/gen/Network/AWS/SSM/GetDocument.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.GetDocument
--- 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)
 --
 -- Gets the contents of the specified SSM document.
---
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_GetDocument.html AWS API Reference> for GetDocument.
 module Network.AWS.SSM.GetDocument
     (
     -- * Creating a Request
@@ -69,13 +67,15 @@
 
 instance AWSRequest GetDocument where
         type Rs GetDocument = GetDocumentResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveJSON
               (\ s h x ->
                  GetDocumentResponse' <$>
                    (x .?> "Content") <*> (x .?> "Name") <*>
                      (pure (fromEnum s)))
+
+instance Hashable GetDocument
 
 instance ToHeaders GetDocument where
         toHeaders
diff --git a/gen/Network/AWS/SSM/ListAssociations.hs b/gen/Network/AWS/SSM/ListAssociations.hs
--- a/gen/Network/AWS/SSM/ListAssociations.hs
+++ b/gen/Network/AWS/SSM/ListAssociations.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.ListAssociations
--- 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,7 +20,7 @@
 --
 -- Lists the associations for the specified SSM document or instance.
 --
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_ListAssociations.html AWS API Reference> for ListAssociations.
+-- This operation returns paginated results.
 module Network.AWS.SSM.ListAssociations
     (
     -- * Creating a Request
@@ -41,6 +41,7 @@
     ) where
 
 import           Network.AWS.Lens
+import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -89,9 +90,16 @@
 laAssociationFilterList :: Lens' ListAssociations (NonEmpty AssociationFilter)
 laAssociationFilterList = lens _laAssociationFilterList (\ s a -> s{_laAssociationFilterList = a}) . _List1;
 
+instance AWSPager ListAssociations where
+        page rq rs
+          | stop (rs ^. larsNextToken) = Nothing
+          | stop (rs ^. larsAssociations) = Nothing
+          | otherwise =
+            Just $ rq & laNextToken .~ rs ^. larsNextToken
+
 instance AWSRequest ListAssociations where
         type Rs ListAssociations = ListAssociationsResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveJSON
               (\ s h x ->
@@ -99,6 +107,8 @@
                    (x .?> "NextToken") <*>
                      (x .?> "Associations" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListAssociations
 
 instance ToHeaders ListAssociations where
         toHeaders
diff --git a/gen/Network/AWS/SSM/ListCommandInvocations.hs b/gen/Network/AWS/SSM/ListCommandInvocations.hs
--- a/gen/Network/AWS/SSM/ListCommandInvocations.hs
+++ b/gen/Network/AWS/SSM/ListCommandInvocations.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.ListCommandInvocations
--- 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,7 +25,7 @@
 -- instance ID. ListCommandInvocations provide status about command
 -- execution.
 --
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_ListCommandInvocations.html AWS API Reference> for ListCommandInvocations.
+-- This operation returns paginated results.
 module Network.AWS.SSM.ListCommandInvocations
     (
     -- * Creating a Request
@@ -49,6 +49,7 @@
     ) where
 
 import           Network.AWS.Lens
+import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -110,8 +111,8 @@
 lciCommandId :: Lens' ListCommandInvocations (Maybe Text)
 lciCommandId = lens _lciCommandId (\ s a -> s{_lciCommandId = a});
 
--- | (Optional) If set this returns the response of the command executions.
--- By default this is set to False.
+-- | (Optional) If set this returns the response of the command executions
+-- and any command output. By default this is set to False.
 lciDetails :: Lens' ListCommandInvocations (Maybe Bool)
 lciDetails = lens _lciDetails (\ s a -> s{_lciDetails = a});
 
@@ -121,10 +122,17 @@
 lciMaxResults :: Lens' ListCommandInvocations (Maybe Natural)
 lciMaxResults = lens _lciMaxResults (\ s a -> s{_lciMaxResults = a}) . mapping _Nat;
 
+instance AWSPager ListCommandInvocations where
+        page rq rs
+          | stop (rs ^. lcirsNextToken) = Nothing
+          | stop (rs ^. lcirsCommandInvocations) = Nothing
+          | otherwise =
+            Just $ rq & lciNextToken .~ rs ^. lcirsNextToken
+
 instance AWSRequest ListCommandInvocations where
         type Rs ListCommandInvocations =
              ListCommandInvocationsResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveJSON
               (\ s h x ->
@@ -132,6 +140,8 @@
                    (x .?> "NextToken") <*>
                      (x .?> "CommandInvocations" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListCommandInvocations
 
 instance ToHeaders ListCommandInvocations where
         toHeaders
diff --git a/gen/Network/AWS/SSM/ListCommands.hs b/gen/Network/AWS/SSM/ListCommands.hs
--- a/gen/Network/AWS/SSM/ListCommands.hs
+++ b/gen/Network/AWS/SSM/ListCommands.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.ListCommands
--- 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,7 +20,7 @@
 --
 -- Lists the commands requested by users of the AWS account.
 --
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_ListCommands.html AWS API Reference> for ListCommands.
+-- This operation returns paginated results.
 module Network.AWS.SSM.ListCommands
     (
     -- * Creating a Request
@@ -43,6 +43,7 @@
     ) where
 
 import           Network.AWS.Lens
+import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -106,15 +107,24 @@
 lcMaxResults :: Lens' ListCommands (Maybe Natural)
 lcMaxResults = lens _lcMaxResults (\ s a -> s{_lcMaxResults = a}) . mapping _Nat;
 
+instance AWSPager ListCommands where
+        page rq rs
+          | stop (rs ^. lcrsNextToken) = Nothing
+          | stop (rs ^. lcrsCommands) = Nothing
+          | otherwise =
+            Just $ rq & lcNextToken .~ rs ^. lcrsNextToken
+
 instance AWSRequest ListCommands where
         type Rs ListCommands = ListCommandsResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveJSON
               (\ s h x ->
                  ListCommandsResponse' <$>
                    (x .?> "Commands" .!@ mempty) <*> (x .?> "NextToken")
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListCommands
 
 instance ToHeaders ListCommands where
         toHeaders
diff --git a/gen/Network/AWS/SSM/ListDocuments.hs b/gen/Network/AWS/SSM/ListDocuments.hs
--- a/gen/Network/AWS/SSM/ListDocuments.hs
+++ b/gen/Network/AWS/SSM/ListDocuments.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.ListDocuments
--- 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,7 +20,7 @@
 --
 -- Describes one or more of your SSM documents.
 --
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_ListDocuments.html AWS API Reference> for ListDocuments.
+-- This operation returns paginated results.
 module Network.AWS.SSM.ListDocuments
     (
     -- * Creating a Request
@@ -41,6 +41,7 @@
     ) where
 
 import           Network.AWS.Lens
+import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -88,9 +89,16 @@
 ldMaxResults :: Lens' ListDocuments (Maybe Natural)
 ldMaxResults = lens _ldMaxResults (\ s a -> s{_ldMaxResults = a}) . mapping _Nat;
 
+instance AWSPager ListDocuments where
+        page rq rs
+          | stop (rs ^. ldrsNextToken) = Nothing
+          | stop (rs ^. ldrsDocumentIdentifiers) = Nothing
+          | otherwise =
+            Just $ rq & ldNextToken .~ rs ^. ldrsNextToken
+
 instance AWSRequest ListDocuments where
         type Rs ListDocuments = ListDocumentsResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveJSON
               (\ s h x ->
@@ -98,6 +106,8 @@
                    (x .?> "DocumentIdentifiers" .!@ mempty) <*>
                      (x .?> "NextToken")
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListDocuments
 
 instance ToHeaders ListDocuments where
         toHeaders
diff --git a/gen/Network/AWS/SSM/SendCommand.hs b/gen/Network/AWS/SSM/SendCommand.hs
--- a/gen/Network/AWS/SSM/SendCommand.hs
+++ b/gen/Network/AWS/SSM/SendCommand.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.SendCommand
--- 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)
 --
 -- Executes commands on one or more remote instances.
---
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_SendCommand.html AWS API Reference> for SendCommand.
 module Network.AWS.SSM.SendCommand
     (
     -- * Creating a Request
@@ -129,12 +127,14 @@
 
 instance AWSRequest SendCommand where
         type Rs SendCommand = SendCommandResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveJSON
               (\ s h x ->
                  SendCommandResponse' <$>
                    (x .?> "Command") <*> (pure (fromEnum s)))
+
+instance Hashable SendCommand
 
 instance ToHeaders SendCommand where
         toHeaders
diff --git a/gen/Network/AWS/SSM/Types.hs b/gen/Network/AWS/SSM/Types.hs
--- a/gen/Network/AWS/SSM/Types.hs
+++ b/gen/Network/AWS/SSM/Types.hs
@@ -4,7 +4,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.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
@@ -13,7 +13,7 @@
 module Network.AWS.SSM.Types
     (
     -- * Service Configuration
-      sSM
+      ssm
 
     -- * Errors
     , _UnsupportedPlatformType
@@ -221,14 +221,14 @@
 import           Network.AWS.SSM.Types.Sum
 
 -- | API version '2014-11-06' of the Amazon Simple Systems Management Service SDK configuration.
-sSM :: Service
-sSM =
+ssm :: Service
+ssm =
     Service
     { _svcAbbrev = "SSM"
     , _svcSigner = v4
     , _svcPrefix = "ssm"
     , _svcVersion = "2014-11-06"
-    , _svcEndpoint = defaultEndpoint sSM
+    , _svcEndpoint = defaultEndpoint ssm
     , _svcTimeout = Just 70
     , _svcCheck = statusSuccess
     , _svcError = parseJSONError
@@ -243,6 +243,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/SSM/Types/Product.hs b/gen/Network/AWS/SSM/Types/Product.hs
--- a/gen/Network/AWS/SSM/Types/Product.hs
+++ b/gen/Network/AWS/SSM/Types/Product.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.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
@@ -59,6 +59,8 @@
                  Association' <$>
                    (x .:? "InstanceId") <*> (x .:? "Name"))
 
+instance Hashable Association
+
 -- | Describes the parameters for a document.
 --
 -- /See:/ 'associationDescription' smart constructor.
@@ -124,6 +126,8 @@
                      <*> (x .:? "Name")
                      <*> (x .:? "Parameters" .!= mempty))
 
+instance Hashable AssociationDescription
+
 -- | Describes a filter.
 --
 -- /See:/ 'associationFilter' smart constructor.
@@ -157,6 +161,8 @@
 afValue :: Lens' AssociationFilter Text
 afValue = lens _afValue (\ s a -> s{_afValue = a});
 
+instance Hashable AssociationFilter
+
 instance ToJSON AssociationFilter where
         toJSON AssociationFilter'{..}
           = object
@@ -222,6 +228,8 @@
                      (x .: "Name")
                      <*> (x .: "Message"))
 
+instance Hashable AssociationStatus
+
 instance ToJSON AssociationStatus where
         toJSON AssociationStatus'{..}
           = object
@@ -347,6 +355,8 @@
                      <*> (x .:? "OutputS3BucketName")
                      <*> (x .:? "RequestedDateTime"))
 
+instance Hashable Command
+
 -- | Describes a command filter.
 --
 -- /See:/ 'commandFilter' smart constructor.
@@ -380,6 +390,8 @@
 cfValue :: Lens' CommandFilter Text
 cfValue = lens _cfValue (\ s a -> s{_cfValue = a});
 
+instance Hashable CommandFilter
+
 instance ToJSON CommandFilter where
         toJSON CommandFilter'{..}
           = object
@@ -484,6 +496,8 @@
                      <*> (x .:? "TraceOutput")
                      <*> (x .:? "RequestedDateTime"))
 
+instance Hashable CommandInvocation
+
 -- | Describes plugin details.
 --
 -- /See:/ 'commandPlugin' smart constructor.
@@ -583,6 +597,8 @@
                      <*> (x .:? "OutputS3BucketName")
                      <*> (x .:? "ResponseFinishDateTime"))
 
+instance Hashable CommandPlugin
+
 -- | Describes the association of an SSM document and an instance.
 --
 -- /See:/ 'createAssociationBatchRequestEntry' smart constructor.
@@ -631,6 +647,8 @@
                    (x .:? "InstanceId") <*> (x .:? "Name") <*>
                      (x .:? "Parameters" .!= mempty))
 
+instance Hashable CreateAssociationBatchRequestEntry
+
 instance ToJSON CreateAssociationBatchRequestEntry
          where
         toJSON CreateAssociationBatchRequestEntry'{..}
@@ -724,6 +742,8 @@
                      <*> (x .:? "Parameters" .!= mempty)
                      <*> (x .:? "Description"))
 
+instance Hashable DocumentDescription
+
 -- | Describes a filter.
 --
 -- /See:/ 'documentFilter' smart constructor.
@@ -757,6 +777,8 @@
 dfValue :: Lens' DocumentFilter Text
 dfValue = lens _dfValue (\ s a -> s{_dfValue = a});
 
+instance Hashable DocumentFilter
+
 instance ToJSON DocumentFilter where
         toJSON DocumentFilter'{..}
           = object
@@ -802,6 +824,8 @@
                    (x .:? "PlatformTypes" .!= mempty) <*>
                      (x .:? "Name"))
 
+instance Hashable DocumentIdentifier
+
 -- | /See:/ 'documentParameter' smart constructor.
 data DocumentParameter = DocumentParameter'
     { _dpName         :: !(Maybe Text)
@@ -859,6 +883,8 @@
                      (x .:? "Type")
                      <*> (x .:? "Description"))
 
+instance Hashable DocumentParameter
+
 -- | Describes a failed association.
 --
 -- /See:/ 'failedCreateAssociation' smart constructor.
@@ -906,6 +932,8 @@
                    (x .:? "Entry") <*> (x .:? "Fault") <*>
                      (x .:? "Message"))
 
+instance Hashable FailedCreateAssociation
+
 -- | Describes a filter for a specific list of instances.
 --
 -- /See:/ 'instanceInformation' smart constructor.
@@ -999,6 +1027,8 @@
                      <*> (x .:? "PlatformType")
                      <*> (x .:? "PlatformName"))
 
+instance Hashable InstanceInformation
+
 -- | Describes a filter for a specific list of instances.
 --
 -- /See:/ 'instanceInformationFilter' smart constructor.
@@ -1031,6 +1061,8 @@
 -- | The filter values.
 iifValueSet :: Lens' InstanceInformationFilter (NonEmpty Text)
 iifValueSet = lens _iifValueSet (\ s a -> s{_iifValueSet = a}) . _List1;
+
+instance Hashable InstanceInformationFilter
 
 instance ToJSON InstanceInformationFilter where
         toJSON InstanceInformationFilter'{..}
diff --git a/gen/Network/AWS/SSM/Types/Sum.hs b/gen/Network/AWS/SSM/Types/Sum.hs
--- a/gen/Network/AWS/SSM/Types/Sum.hs
+++ b/gen/Network/AWS/SSM/Types/Sum.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.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/SSM/UpdateAssociationStatus.hs b/gen/Network/AWS/SSM/UpdateAssociationStatus.hs
--- a/gen/Network/AWS/SSM/UpdateAssociationStatus.hs
+++ b/gen/Network/AWS/SSM/UpdateAssociationStatus.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.UpdateAssociationStatus
--- 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 @@
 --
 -- Updates the status of the SSM document associated with the specified
 -- instance.
---
--- /See:/ <http://docs.aws.amazon.com/ssm/latest/APIReference/API_UpdateAssociationStatus.html AWS API Reference> for UpdateAssociationStatus.
 module Network.AWS.SSM.UpdateAssociationStatus
     (
     -- * Creating a Request
@@ -90,13 +88,15 @@
 instance AWSRequest UpdateAssociationStatus where
         type Rs UpdateAssociationStatus =
              UpdateAssociationStatusResponse
-        request = postJSON sSM
+        request = postJSON ssm
         response
           = receiveJSON
               (\ s h x ->
                  UpdateAssociationStatusResponse' <$>
                    (x .?> "AssociationDescription") <*>
                      (pure (fromEnum s)))
+
+instance Hashable UpdateAssociationStatus
 
 instance ToHeaders UpdateAssociationStatus where
         toHeaders
diff --git a/gen/Network/AWS/SSM/Waiters.hs b/gen/Network/AWS/SSM/Waiters.hs
--- a/gen/Network/AWS/SSM/Waiters.hs
+++ b/gen/Network/AWS/SSM/Waiters.hs
@@ -7,7 +7,7 @@
 
 -- |
 -- Module      : Network.AWS.SSM.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
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/Gen/SSM.hs b/test/Test/AWS/Gen/SSM.hs
--- a/test/Test/AWS/Gen/SSM.hs
+++ b/test/Test/AWS/Gen/SSM.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Test.AWS.Gen.SSM
--- 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
@@ -218,110 +218,110 @@
 testDescribeDocumentResponse = res
     "DescribeDocumentResponse"
     "fixture/DescribeDocumentResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy DescribeDocument)
 
 testCreateAssociationResponse :: CreateAssociationResponse -> TestTree
 testCreateAssociationResponse = res
     "CreateAssociationResponse"
     "fixture/CreateAssociationResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy CreateAssociation)
 
 testCreateDocumentResponse :: CreateDocumentResponse -> TestTree
 testCreateDocumentResponse = res
     "CreateDocumentResponse"
     "fixture/CreateDocumentResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy CreateDocument)
 
 testListCommandInvocationsResponse :: ListCommandInvocationsResponse -> TestTree
 testListCommandInvocationsResponse = res
     "ListCommandInvocationsResponse"
     "fixture/ListCommandInvocationsResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy ListCommandInvocations)
 
 testListDocumentsResponse :: ListDocumentsResponse -> TestTree
 testListDocumentsResponse = res
     "ListDocumentsResponse"
     "fixture/ListDocumentsResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy ListDocuments)
 
 testGetDocumentResponse :: GetDocumentResponse -> TestTree
 testGetDocumentResponse = res
     "GetDocumentResponse"
     "fixture/GetDocumentResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy GetDocument)
 
 testCancelCommandResponse :: CancelCommandResponse -> TestTree
 testCancelCommandResponse = res
     "CancelCommandResponse"
     "fixture/CancelCommandResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy CancelCommand)
 
 testDescribeAssociationResponse :: DescribeAssociationResponse -> TestTree
 testDescribeAssociationResponse = res
     "DescribeAssociationResponse"
     "fixture/DescribeAssociationResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy DescribeAssociation)
 
 testUpdateAssociationStatusResponse :: UpdateAssociationStatusResponse -> TestTree
 testUpdateAssociationStatusResponse = res
     "UpdateAssociationStatusResponse"
     "fixture/UpdateAssociationStatusResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy UpdateAssociationStatus)
 
 testDescribeInstanceInformationResponse :: DescribeInstanceInformationResponse -> TestTree
 testDescribeInstanceInformationResponse = res
     "DescribeInstanceInformationResponse"
     "fixture/DescribeInstanceInformationResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy DescribeInstanceInformation)
 
 testListAssociationsResponse :: ListAssociationsResponse -> TestTree
 testListAssociationsResponse = res
     "ListAssociationsResponse"
     "fixture/ListAssociationsResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy ListAssociations)
 
 testDeleteAssociationResponse :: DeleteAssociationResponse -> TestTree
 testDeleteAssociationResponse = res
     "DeleteAssociationResponse"
     "fixture/DeleteAssociationResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy DeleteAssociation)
 
 testSendCommandResponse :: SendCommandResponse -> TestTree
 testSendCommandResponse = res
     "SendCommandResponse"
     "fixture/SendCommandResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy SendCommand)
 
 testListCommandsResponse :: ListCommandsResponse -> TestTree
 testListCommandsResponse = res
     "ListCommandsResponse"
     "fixture/ListCommandsResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy ListCommands)
 
 testDeleteDocumentResponse :: DeleteDocumentResponse -> TestTree
 testDeleteDocumentResponse = res
     "DeleteDocumentResponse"
     "fixture/DeleteDocumentResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy DeleteDocument)
 
 testCreateAssociationBatchResponse :: CreateAssociationBatchResponse -> TestTree
 testCreateAssociationBatchResponse = res
     "CreateAssociationBatchResponse"
     "fixture/CreateAssociationBatchResponse.proto"
-    sSM
+    ssm
     (Proxy :: Proxy CreateAssociationBatch)
diff --git a/test/Test/AWS/SSM.hs b/test/Test/AWS/SSM.hs
--- a/test/Test/AWS/SSM.hs
+++ b/test/Test/AWS/SSM.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 -- Module      : Test.AWS.SSM
--- 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/SSM/Internal.hs b/test/Test/AWS/SSM/Internal.hs
--- a/test/Test/AWS/SSM/Internal.hs
+++ b/test/Test/AWS/SSM/Internal.hs
@@ -2,7 +2,7 @@
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
 -- Module      : Test.AWS.SSM.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
