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
@@ -18,7 +18,7 @@
 The AWS Elastic Transcoder Service.
 
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-elastictranscoder)
-and the [AWS API Reference](http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/api-reference.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-elastictranscoder.cabal b/amazonka-elastictranscoder.cabal
--- a/amazonka-elastictranscoder.cabal
+++ b/amazonka-elastictranscoder.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-elastictranscoder
-version:               1.3.7
+version:               1.4.0
 synopsis:              Amazon Elastic Transcoder 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
@@ -28,7 +28,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.ElasticTranscoder" and the <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/api-reference.html AWS API Reference>
+    See "Network.AWS.ElasticTranscoder" or <https://aws.amazon.com/documentation/ the AWS Documentation>
     to get started.
 
 source-repository head
@@ -68,7 +68,7 @@
         , Network.AWS.ElasticTranscoder.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.7.*
+          amazonka-core == 1.4.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-elastictranscoder-test
@@ -88,9 +88,9 @@
         , Test.AWS.ElasticTranscoder.Internal
 
     build-depends:
-          amazonka-core == 1.3.7.*
-        , amazonka-test == 1.3.7.*
-        , amazonka-elastictranscoder == 1.3.7.*
+          amazonka-core == 1.4.0.*
+        , amazonka-test == 1.4.0.*
+        , amazonka-elastictranscoder == 1.4.0.*
         , base
         , bytestring
         , tasty
diff --git a/gen/Network/AWS/ElasticTranscoder.hs b/gen/Network/AWS/ElasticTranscoder.hs
--- a/gen/Network/AWS/ElasticTranscoder.hs
+++ b/gen/Network/AWS/ElasticTranscoder.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder
--- 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
@@ -14,8 +14,6 @@
 -- AWS Elastic Transcoder Service
 --
 -- The AWS Elastic Transcoder Service.
---
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/api-reference.html AWS API Reference>
 module Network.AWS.ElasticTranscoder
     (
     -- * Service Configuration
diff --git a/gen/Network/AWS/ElasticTranscoder/CancelJob.hs b/gen/Network/AWS/ElasticTranscoder/CancelJob.hs
--- a/gen/Network/AWS/ElasticTranscoder/CancelJob.hs
+++ b/gen/Network/AWS/ElasticTranscoder/CancelJob.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.CancelJob
--- 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,9 +22,8 @@
 --
 -- You can only cancel a job that has a status of 'Submitted'. To prevent a
 -- pipeline from starting to process a job while you\'re getting the job
--- identifier, use UpdatePipelineStatus to temporarily pause the pipeline.
---
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/CancelJob.html AWS API Reference> for CancelJob.
+-- identifier, use < UpdatePipelineStatus> to temporarily pause the
+-- pipeline.
 module Network.AWS.ElasticTranscoder.CancelJob
     (
     -- * Creating a Request
@@ -70,7 +69,7 @@
 -- | The identifier of the job that you want to cancel.
 --
 -- To get a list of the jobs (including their 'jobId') that have a status
--- of 'Submitted', use the ListJobsByStatus API action.
+-- of 'Submitted', use the < ListJobsByStatus> API action.
 cjId :: Lens' CancelJob Text
 cjId = lens _cjId (\ s a -> s{_cjId = a});
 
@@ -81,6 +80,8 @@
           = receiveEmpty
               (\ s h x ->
                  CancelJobResponse' <$> (pure (fromEnum s)))
+
+instance Hashable CancelJob
 
 instance ToHeaders CancelJob where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/CreateJob.hs b/gen/Network/AWS/ElasticTranscoder/CreateJob.hs
--- a/gen/Network/AWS/ElasticTranscoder/CreateJob.hs
+++ b/gen/Network/AWS/ElasticTranscoder/CreateJob.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.CreateJob
--- 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 @@
 -- one output for the Kindle Fire and another output for the Apple iPhone
 -- 4s), you currently must use the Elastic Transcoder API to list the jobs
 -- (as opposed to the AWS Console).
---
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/CreateJob.html AWS API Reference> for CreateJob.
 module Network.AWS.ElasticTranscoder.CreateJob
     (
     -- * Creating a Request
@@ -155,6 +153,8 @@
               (\ s h x ->
                  CreateJobResponse' <$>
                    (x .?> "Job") <*> (pure (fromEnum s)))
+
+instance Hashable CreateJob
 
 instance ToHeaders CreateJob where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/CreatePipeline.hs b/gen/Network/AWS/ElasticTranscoder/CreatePipeline.hs
--- a/gen/Network/AWS/ElasticTranscoder/CreatePipeline.hs
+++ b/gen/Network/AWS/ElasticTranscoder/CreatePipeline.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.CreatePipeline
--- 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 @@
 --
 -- The CreatePipeline operation creates a pipeline with settings that you
 -- specify.
---
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/CreatePipeline.html AWS API Reference> for CreatePipeline.
 module Network.AWS.ElasticTranscoder.CreatePipeline
     (
     -- * Creating a Request
@@ -308,6 +306,8 @@
                  CreatePipelineResponse' <$>
                    (x .?> "Warnings" .!@ mempty) <*> (x .?> "Pipeline")
                      <*> (pure (fromEnum s)))
+
+instance Hashable CreatePipeline
 
 instance ToHeaders CreatePipeline where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/CreatePreset.hs b/gen/Network/AWS/ElasticTranscoder/CreatePreset.hs
--- a/gen/Network/AWS/ElasticTranscoder/CreatePreset.hs
+++ b/gen/Network/AWS/ElasticTranscoder/CreatePreset.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.CreatePreset
--- 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
@@ -36,8 +36,6 @@
 -- information, see the International Telecommunication Union publication
 -- /Recommendation ITU-T H.264: Advanced video coding for generic
 -- audiovisual services/.
---
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/CreatePreset.html AWS API Reference> for CreatePreset.
 module Network.AWS.ElasticTranscoder.CreatePreset
     (
     -- * Creating a Request
@@ -145,6 +143,8 @@
                  CreatePresetResponse' <$>
                    (x .?> "Warning") <*> (x .?> "Preset") <*>
                      (pure (fromEnum s)))
+
+instance Hashable CreatePreset
 
 instance ToHeaders CreatePreset where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/DeletePipeline.hs b/gen/Network/AWS/ElasticTranscoder/DeletePipeline.hs
--- a/gen/Network/AWS/ElasticTranscoder/DeletePipeline.hs
+++ b/gen/Network/AWS/ElasticTranscoder/DeletePipeline.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.DeletePipeline
--- 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 @@
 -- You can only delete a pipeline that has never been used or that is not
 -- currently in use (doesn\'t contain any active jobs). If the pipeline is
 -- currently in use, 'DeletePipeline' returns an error.
---
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/DeletePipeline.html AWS API Reference> for DeletePipeline.
 module Network.AWS.ElasticTranscoder.DeletePipeline
     (
     -- * Creating a Request
@@ -78,6 +76,8 @@
           = receiveEmpty
               (\ s h x ->
                  DeletePipelineResponse' <$> (pure (fromEnum s)))
+
+instance Hashable DeletePipeline
 
 instance ToHeaders DeletePipeline where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/DeletePreset.hs b/gen/Network/AWS/ElasticTranscoder/DeletePreset.hs
--- a/gen/Network/AWS/ElasticTranscoder/DeletePreset.hs
+++ b/gen/Network/AWS/ElasticTranscoder/DeletePreset.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.DeletePreset
--- 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 @@
 --
 -- You can\'t delete the default presets that are included with Elastic
 -- Transcoder.
---
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/DeletePreset.html AWS API Reference> for DeletePreset.
 module Network.AWS.ElasticTranscoder.DeletePreset
     (
     -- * Creating a Request
@@ -79,6 +77,8 @@
           = receiveEmpty
               (\ s h x ->
                  DeletePresetResponse' <$> (pure (fromEnum s)))
+
+instance Hashable DeletePreset
 
 instance ToHeaders DeletePreset where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/ListJobsByPipeline.hs b/gen/Network/AWS/ElasticTranscoder/ListJobsByPipeline.hs
--- a/gen/Network/AWS/ElasticTranscoder/ListJobsByPipeline.hs
+++ b/gen/Network/AWS/ElasticTranscoder/ListJobsByPipeline.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.ListJobsByPipeline
--- 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 @@
 -- pipeline. The response body contains one element for each job that
 -- satisfies the search criteria.
 --
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/ListJobsByPipeline.html AWS API Reference> for ListJobsByPipeline.
---
 -- This operation returns paginated results.
 module Network.AWS.ElasticTranscoder.ListJobsByPipeline
     (
@@ -117,6 +115,8 @@
                  ListJobsByPipelineResponse' <$>
                    (x .?> "NextPageToken") <*> (x .?> "Jobs" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListJobsByPipeline
 
 instance ToHeaders ListJobsByPipeline where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/ListJobsByStatus.hs b/gen/Network/AWS/ElasticTranscoder/ListJobsByStatus.hs
--- a/gen/Network/AWS/ElasticTranscoder/ListJobsByStatus.hs
+++ b/gen/Network/AWS/ElasticTranscoder/ListJobsByStatus.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.ListJobsByStatus
--- 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 @@
 -- status. The response body contains one element for each job that
 -- satisfies the search criteria.
 --
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/ListJobsByStatus.html AWS API Reference> for ListJobsByStatus.
---
 -- This operation returns paginated results.
 module Network.AWS.ElasticTranscoder.ListJobsByStatus
     (
@@ -115,6 +113,8 @@
                  ListJobsByStatusResponse' <$>
                    (x .?> "NextPageToken") <*> (x .?> "Jobs" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListJobsByStatus
 
 instance ToHeaders ListJobsByStatus where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/ListPipelines.hs b/gen/Network/AWS/ElasticTranscoder/ListPipelines.hs
--- a/gen/Network/AWS/ElasticTranscoder/ListPipelines.hs
+++ b/gen/Network/AWS/ElasticTranscoder/ListPipelines.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.ListPipelines
--- 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 @@
 -- The ListPipelines operation gets a list of the pipelines associated with
 -- the current AWS account.
 --
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/ListPipelines.html AWS API Reference> for ListPipelines.
---
 -- This operation returns paginated results.
 module Network.AWS.ElasticTranscoder.ListPipelines
     (
@@ -102,6 +100,8 @@
                    (x .?> "NextPageToken") <*>
                      (x .?> "Pipelines" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListPipelines
 
 instance ToHeaders ListPipelines where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/ListPresets.hs b/gen/Network/AWS/ElasticTranscoder/ListPresets.hs
--- a/gen/Network/AWS/ElasticTranscoder/ListPresets.hs
+++ b/gen/Network/AWS/ElasticTranscoder/ListPresets.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.ListPresets
--- 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 @@
 -- with Elastic Transcoder and the presets that you\'ve added in an AWS
 -- region.
 --
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/ListPresets.html AWS API Reference> for ListPresets.
---
 -- This operation returns paginated results.
 module Network.AWS.ElasticTranscoder.ListPresets
     (
@@ -103,6 +101,8 @@
                    (x .?> "NextPageToken") <*>
                      (x .?> "Presets" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListPresets
 
 instance ToHeaders ListPresets where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/ReadJob.hs b/gen/Network/AWS/ElasticTranscoder/ReadJob.hs
--- a/gen/Network/AWS/ElasticTranscoder/ReadJob.hs
+++ b/gen/Network/AWS/ElasticTranscoder/ReadJob.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.ReadJob
--- 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)
 --
 -- The ReadJob operation returns detailed information about a job.
---
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/ReadJob.html AWS API Reference> for ReadJob.
 module Network.AWS.ElasticTranscoder.ReadJob
     (
     -- * Creating a Request
@@ -77,6 +75,8 @@
               (\ s h x ->
                  ReadJobResponse' <$>
                    (pure (fromEnum s)) <*> (x .:> "Job"))
+
+instance Hashable ReadJob
 
 instance ToHeaders ReadJob where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/ReadPipeline.hs b/gen/Network/AWS/ElasticTranscoder/ReadPipeline.hs
--- a/gen/Network/AWS/ElasticTranscoder/ReadPipeline.hs
+++ b/gen/Network/AWS/ElasticTranscoder/ReadPipeline.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.ReadPipeline
--- 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)
 --
 -- The ReadPipeline operation gets detailed information about a pipeline.
---
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/ReadPipeline.html AWS API Reference> for ReadPipeline.
 module Network.AWS.ElasticTranscoder.ReadPipeline
     (
     -- * Creating a Request
@@ -78,6 +76,8 @@
                  ReadPipelineResponse' <$>
                    (x .?> "Warnings" .!@ mempty) <*> (x .?> "Pipeline")
                      <*> (pure (fromEnum s)))
+
+instance Hashable ReadPipeline
 
 instance ToHeaders ReadPipeline where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/ReadPreset.hs b/gen/Network/AWS/ElasticTranscoder/ReadPreset.hs
--- a/gen/Network/AWS/ElasticTranscoder/ReadPreset.hs
+++ b/gen/Network/AWS/ElasticTranscoder/ReadPreset.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.ReadPreset
--- 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)
 --
 -- The ReadPreset operation gets detailed information about a preset.
---
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/ReadPreset.html AWS API Reference> for ReadPreset.
 module Network.AWS.ElasticTranscoder.ReadPreset
     (
     -- * Creating a Request
@@ -77,6 +75,8 @@
               (\ s h x ->
                  ReadPresetResponse' <$>
                    (x .?> "Preset") <*> (pure (fromEnum s)))
+
+instance Hashable ReadPreset
 
 instance ToHeaders ReadPreset where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/TestRole.hs b/gen/Network/AWS/ElasticTranscoder/TestRole.hs
--- a/gen/Network/AWS/ElasticTranscoder/TestRole.hs
+++ b/gen/Network/AWS/ElasticTranscoder/TestRole.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.TestRole
--- 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 @@
 -- the specified IAM role, checks read access to the input and output
 -- buckets, and tries to send a test notification to Amazon SNS topics that
 -- you specify.
---
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/TestRole.html AWS API Reference> for TestRole.
 module Network.AWS.ElasticTranscoder.TestRole
     (
     -- * Creating a Request
@@ -118,6 +116,8 @@
                  TestRoleResponse' <$>
                    (x .?> "Success") <*> (x .?> "Messages" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable TestRole
 
 instance ToHeaders TestRole where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/Types.hs b/gen/Network/AWS/ElasticTranscoder/Types.hs
--- a/gen/Network/AWS/ElasticTranscoder/Types.hs
+++ b/gen/Network/AWS/ElasticTranscoder/Types.hs
@@ -4,7 +4,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.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
@@ -362,6 +362,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/ElasticTranscoder/Types/Product.hs b/gen/Network/AWS/ElasticTranscoder/Types/Product.hs
--- a/gen/Network/AWS/ElasticTranscoder/Types/Product.hs
+++ b/gen/Network/AWS/ElasticTranscoder/Types/Product.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.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
@@ -154,6 +154,8 @@
                      <*> (x .:? "Encryption")
                      <*> (x .:? "MaxWidth"))
 
+instance Hashable Artwork
+
 instance ToJSON Artwork where
         toJSON Artwork'{..}
           = object
@@ -262,6 +264,8 @@
                      (x .:? "Profile")
                      <*> (x .:? "BitOrder"))
 
+instance Hashable AudioCodecOptions
+
 instance ToJSON AudioCodecOptions where
         toJSON AudioCodecOptions'{..}
           = object
@@ -470,6 +474,8 @@
                      <*> (x .:? "BitRate")
                      <*> (x .:? "CodecOptions"))
 
+instance Hashable AudioParameters
+
 instance ToJSON AudioParameters where
         toJSON AudioParameters'{..}
           = object
@@ -572,6 +578,8 @@
                    (x .:? "Pattern") <*> (x .:? "Format") <*>
                      (x .:? "Encryption"))
 
+instance Hashable CaptionFormat
+
 instance ToJSON CaptionFormat where
         toJSON CaptionFormat'{..}
           = object
@@ -662,6 +670,8 @@
                      <*> (x .:? "Language")
                      <*> (x .:? "Label"))
 
+instance Hashable CaptionSource
+
 instance ToJSON CaptionSource where
         toJSON CaptionSource'{..}
           = object
@@ -741,6 +751,8 @@
                      (x .:? "CaptionSources" .!= mempty)
                      <*> (x .:? "CaptionFormats" .!= mempty))
 
+instance Hashable Captions
+
 instance ToJSON Captions where
         toJSON Captions'{..}
           = object
@@ -778,6 +790,8 @@
           = withObject "Clip"
               (\ x -> Clip' <$> (x .:? "TimeSpan"))
 
+instance Hashable Clip
+
 instance ToJSON Clip where
         toJSON Clip'{..}
           = object (catMaybes [("TimeSpan" .=) <$> _cTimeSpan])
@@ -1009,6 +1023,8 @@
 cjoRotate :: Lens' CreateJobOutput (Maybe Text)
 cjoRotate = lens _cjoRotate (\ s a -> s{_cjoRotate = a});
 
+instance Hashable CreateJobOutput
+
 instance ToJSON CreateJobOutput where
         toJSON CreateJobOutput'{..}
           = object
@@ -1132,6 +1148,8 @@
 cjpHlsContentProtection :: Lens' CreateJobPlaylist (Maybe HlsContentProtection)
 cjpHlsContentProtection = lens _cjpHlsContentProtection (\ s a -> s{_cjpHlsContentProtection = a});
 
+instance Hashable CreateJobPlaylist
+
 instance ToJSON CreateJobPlaylist where
         toJSON CreateJobPlaylist'{..}
           = object
@@ -1209,6 +1227,8 @@
                      <*> (x .:? "Width")
                      <*> (x .:? "DurationMillis"))
 
+instance Hashable DetectedProperties
+
 instance ToJSON DetectedProperties where
         toJSON DetectedProperties'{..}
           = object
@@ -1329,6 +1349,8 @@
                    (x .:? "Mode") <*> (x .:? "KeyMd5") <*> (x .:? "Key")
                      <*> (x .:? "InitializationVector"))
 
+instance Hashable Encryption
+
 instance ToJSON Encryption where
         toJSON Encryption'{..}
           = object
@@ -1443,6 +1465,8 @@
                      <*> (x .:? "InitializationVector")
                      <*> (x .:? "LicenseAcquisitionUrl"))
 
+instance Hashable HlsContentProtection
+
 instance ToJSON HlsContentProtection where
         toJSON HlsContentProtection'{..}
           = object
@@ -1624,6 +1648,8 @@
                      <*> (x .:? "OutputKeyPrefix")
                      <*> (x .:? "Timing"))
 
+instance Hashable Job'
+
 -- | The .jpg or .png file associated with an audio file.
 --
 -- /See:/ 'jobAlbumArt' smart constructor.
@@ -1677,6 +1703,8 @@
                    (x .:? "MergePolicy") <*>
                      (x .:? "Artwork" .!= mempty))
 
+instance Hashable JobAlbumArt
+
 instance ToJSON JobAlbumArt where
         toJSON JobAlbumArt'{..}
           = object
@@ -1816,6 +1844,8 @@
                      <*> (x .:? "Container")
                      <*> (x .:? "Interlaced"))
 
+instance Hashable JobInput
+
 instance ToJSON JobInput where
         toJSON JobInput'{..}
           = object
@@ -2201,6 +2231,8 @@
                      <*> (x .:? "Duration")
                      <*> (x .:? "Rotate"))
 
+instance Hashable JobOutput
+
 -- | Watermarks can be in .png or .jpg format. If you want to display a
 -- watermark that is not rectangular, use the .png format, which supports
 -- transparency.
@@ -2261,6 +2293,8 @@
                    (x .:? "PresetWatermarkId") <*> (x .:? "InputKey")
                      <*> (x .:? "Encryption"))
 
+instance Hashable JobWatermark
+
 instance ToJSON JobWatermark where
         toJSON JobWatermark'{..}
           = object
@@ -2333,6 +2367,8 @@
                      (x .:? "Progressing")
                      <*> (x .:? "Completed"))
 
+instance Hashable Notifications
+
 instance ToJSON Notifications where
         toJSON Notifications'{..}
           = object
@@ -2411,6 +2447,8 @@
                    (x .:? "Access" .!= mempty) <*> (x .:? "GranteeType")
                      <*> (x .:? "Grantee"))
 
+instance Hashable Permission
+
 instance ToJSON Permission where
         toJSON Permission'{..}
           = object
@@ -2644,6 +2682,8 @@
                      <*> (x .:? "Notifications")
                      <*> (x .:? "ThumbnailConfig"))
 
+instance Hashable Pipeline
+
 -- | The 'PipelineOutputConfig' structure.
 --
 -- /See:/ 'pipelineOutputConfig' smart constructor.
@@ -2722,6 +2762,8 @@
                    (x .:? "Bucket") <*> (x .:? "StorageClass") <*>
                      (x .:? "Permissions" .!= mempty))
 
+instance Hashable PipelineOutputConfig
+
 instance ToJSON PipelineOutputConfig where
         toJSON PipelineOutputConfig'{..}
           = object
@@ -2837,6 +2879,8 @@
                      <*> (x .:? "InitializationVector")
                      <*> (x .:? "LicenseAcquisitionUrl"))
 
+instance Hashable PlayReadyDrm
+
 instance ToJSON PlayReadyDrm where
         toJSON PlayReadyDrm'{..}
           = object
@@ -2988,6 +3032,8 @@
                      <*> (x .:? "StatusDetail")
                      <*> (x .:? "HlsContentProtection"))
 
+instance Hashable Playlist
+
 -- | Presets are templates that contain most of the settings for transcoding
 -- media files from one format to another. Elastic Transcoder includes some
 -- default presets for common formats, for example, several iPod and iPhone
@@ -3101,6 +3147,8 @@
                      <*> (x .:? "Description")
                      <*> (x .:? "Audio"))
 
+instance Hashable Preset
+
 -- | Settings for the size, location, and opacity of graphics that you want
 -- Elastic Transcoder to overlay over videos that are transcoded using this
 -- preset. You can specify settings for up to four watermarks. Watermarks
@@ -3336,6 +3384,8 @@
                      <*> (x .:? "HorizontalAlign")
                      <*> (x .:? "Target"))
 
+instance Hashable PresetWatermark
+
 instance ToJSON PresetWatermark where
         toJSON PresetWatermark'{..}
           = object
@@ -3500,6 +3550,8 @@
                      <*> (x .:? "Interval")
                      <*> (x .:? "MaxWidth"))
 
+instance Hashable Thumbnails
+
 instance ToJSON Thumbnails where
         toJSON Thumbnails'{..}
           = object
@@ -3561,6 +3613,8 @@
                  TimeSpan' <$>
                    (x .:? "StartTime") <*> (x .:? "Duration"))
 
+instance Hashable TimeSpan
+
 instance ToJSON TimeSpan where
         toJSON TimeSpan'{..}
           = object
@@ -3617,6 +3671,8 @@
                      (x .:? "FinishTimeMillis")
                      <*> (x .:? "StartTimeMillis"))
 
+instance Hashable Timing
+
 -- | The 'VideoParameters' structure.
 --
 -- /See:/ 'videoParameters' smart constructor.
@@ -4107,6 +4163,8 @@
                      <*> (x .:? "FixedGOP")
                      <*> (x .:? "CodecOptions" .!= mempty))
 
+instance Hashable VideoParameters
+
 instance ToJSON VideoParameters where
         toJSON VideoParameters'{..}
           = object
@@ -4171,3 +4229,5 @@
           = withObject "Warning"
               (\ x ->
                  Warning' <$> (x .:? "Code") <*> (x .:? "Message"))
+
+instance Hashable Warning
diff --git a/gen/Network/AWS/ElasticTranscoder/Types/Sum.hs b/gen/Network/AWS/ElasticTranscoder/Types/Sum.hs
--- a/gen/Network/AWS/ElasticTranscoder/Types/Sum.hs
+++ b/gen/Network/AWS/ElasticTranscoder/Types/Sum.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.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/ElasticTranscoder/UpdatePipeline.hs b/gen/Network/AWS/ElasticTranscoder/UpdatePipeline.hs
--- a/gen/Network/AWS/ElasticTranscoder/UpdatePipeline.hs
+++ b/gen/Network/AWS/ElasticTranscoder/UpdatePipeline.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.UpdatePipeline
--- 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 @@
 -- Jobs that you have already submitted and that Elastic Transcoder has not
 -- started to process are affected in addition to jobs that you submit
 -- after you change settings.
---
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/UpdatePipeline.html AWS API Reference> for UpdatePipeline.
 module Network.AWS.ElasticTranscoder.UpdatePipeline
     (
     -- * Creating a Request
@@ -264,6 +262,8 @@
                  UpdatePipelineResponse' <$>
                    (x .?> "Warnings" .!@ mempty) <*> (x .?> "Pipeline")
                      <*> (pure (fromEnum s)))
+
+instance Hashable UpdatePipeline
 
 instance ToHeaders UpdatePipeline where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/UpdatePipelineNotifications.hs b/gen/Network/AWS/ElasticTranscoder/UpdatePipelineNotifications.hs
--- a/gen/Network/AWS/ElasticTranscoder/UpdatePipelineNotifications.hs
+++ b/gen/Network/AWS/ElasticTranscoder/UpdatePipelineNotifications.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.UpdatePipelineNotifications
--- 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 @@
 --
 -- When you update notifications for a pipeline, Elastic Transcoder returns
 -- the values that you specified in the request.
---
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/UpdatePipelineNotifications.html AWS API Reference> for UpdatePipelineNotifications.
 module Network.AWS.ElasticTranscoder.UpdatePipelineNotifications
     (
     -- * Creating a Request
@@ -111,6 +109,8 @@
               (\ s h x ->
                  UpdatePipelineNotificationsResponse' <$>
                    (x .?> "Pipeline") <*> (pure (fromEnum s)))
+
+instance Hashable UpdatePipelineNotifications
 
 instance ToHeaders UpdatePipelineNotifications where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/UpdatePipelineStatus.hs b/gen/Network/AWS/ElasticTranscoder/UpdatePipelineStatus.hs
--- a/gen/Network/AWS/ElasticTranscoder/UpdatePipelineStatus.hs
+++ b/gen/Network/AWS/ElasticTranscoder/UpdatePipelineStatus.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.UpdatePipelineStatus
--- 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,9 +25,7 @@
 -- jobs. You can\'t cancel jobs after Elastic Transcoder has started
 -- processing them; if you pause the pipeline to which you submitted the
 -- jobs, you have more time to get the job IDs for the jobs that you want
--- to cancel, and to send a CancelJob request.
---
--- /See:/ <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/UpdatePipelineStatus.html AWS API Reference> for UpdatePipelineStatus.
+-- to cancel, and to send a < CancelJob> request.
 module Network.AWS.ElasticTranscoder.UpdatePipelineStatus
     (
     -- * Creating a Request
@@ -97,6 +95,8 @@
               (\ s h x ->
                  UpdatePipelineStatusResponse' <$>
                    (x .?> "Pipeline") <*> (pure (fromEnum s)))
+
+instance Hashable UpdatePipelineStatus
 
 instance ToHeaders UpdatePipelineStatus where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElasticTranscoder/Waiters.hs b/gen/Network/AWS/ElasticTranscoder/Waiters.hs
--- a/gen/Network/AWS/ElasticTranscoder/Waiters.hs
+++ b/gen/Network/AWS/ElasticTranscoder/Waiters.hs
@@ -7,7 +7,7 @@
 
 -- |
 -- Module      : Network.AWS.ElasticTranscoder.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/ElasticTranscoder.hs b/test/Test/AWS/ElasticTranscoder.hs
--- a/test/Test/AWS/ElasticTranscoder.hs
+++ b/test/Test/AWS/ElasticTranscoder.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 -- Module      : Test.AWS.ElasticTranscoder
--- 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/ElasticTranscoder/Internal.hs b/test/Test/AWS/ElasticTranscoder/Internal.hs
--- a/test/Test/AWS/ElasticTranscoder/Internal.hs
+++ b/test/Test/AWS/ElasticTranscoder/Internal.hs
@@ -2,7 +2,7 @@
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
 -- Module      : Test.AWS.ElasticTranscoder.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/ElasticTranscoder.hs b/test/Test/AWS/Gen/ElasticTranscoder.hs
--- a/test/Test/AWS/Gen/ElasticTranscoder.hs
+++ b/test/Test/AWS/Gen/ElasticTranscoder.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Test.AWS.Gen.ElasticTranscoder
--- 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
