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
@@ -19,7 +19,7 @@
 time processing of streaming big data.
 
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-kinesis)
-and the [AWS API Reference](http://docs.aws.amazon.com/kinesis/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-kinesis.cabal b/amazonka-kinesis.cabal
--- a/amazonka-kinesis.cabal
+++ b/amazonka-kinesis.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-kinesis
-version:               1.3.7
+version:               1.4.0
 synopsis:              Amazon Kinesis 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
@@ -29,7 +29,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.Kinesis" and the <http://docs.aws.amazon.com/kinesis/latest/APIReference/Welcome.html AWS API Reference>
+    See "Network.AWS.Kinesis" or <https://aws.amazon.com/documentation/ the AWS Documentation>
     to get started.
 
 source-repository head
@@ -67,7 +67,7 @@
         , Network.AWS.Kinesis.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.7.*
+          amazonka-core == 1.4.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-kinesis-test
@@ -87,9 +87,9 @@
         , Test.AWS.Kinesis.Internal
 
     build-depends:
-          amazonka-core == 1.3.7.*
-        , amazonka-test == 1.3.7.*
-        , amazonka-kinesis == 1.3.7.*
+          amazonka-core == 1.4.0.*
+        , amazonka-test == 1.4.0.*
+        , amazonka-kinesis == 1.4.0.*
         , base
         , bytestring
         , tasty
diff --git a/gen/Network/AWS/Kinesis.hs b/gen/Network/AWS/Kinesis.hs
--- a/gen/Network/AWS/Kinesis.hs
+++ b/gen/Network/AWS/Kinesis.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis
--- 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,8 +15,6 @@
 --
 -- Amazon Kinesis is a managed service that scales elastically for real
 -- time processing of streaming big data.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.Kinesis
     (
     -- * Service Configuration
diff --git a/gen/Network/AWS/Kinesis/AddTagsToStream.hs b/gen/Network/AWS/Kinesis/AddTagsToStream.hs
--- a/gen/Network/AWS/Kinesis/AddTagsToStream.hs
+++ b/gen/Network/AWS/Kinesis/AddTagsToStream.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.AddTagsToStream
--- 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 @@
 --
 -- If tags have already been assigned to the stream, 'AddTagsToStream'
 -- overwrites any existing tags that correspond to the specified tag keys.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_AddTagsToStream.html AWS API Reference> for AddTagsToStream.
 module Network.AWS.Kinesis.AddTagsToStream
     (
     -- * Creating a Request
@@ -82,6 +80,8 @@
         type Rs AddTagsToStream = AddTagsToStreamResponse
         request = postJSON kinesis
         response = receiveNull AddTagsToStreamResponse'
+
+instance Hashable AddTagsToStream
 
 instance ToHeaders AddTagsToStream where
         toHeaders
diff --git a/gen/Network/AWS/Kinesis/CreateStream.hs b/gen/Network/AWS/Kinesis/CreateStream.hs
--- a/gen/Network/AWS/Kinesis/CreateStream.hs
+++ b/gen/Network/AWS/Kinesis/CreateStream.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.CreateStream
--- 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,9 +59,7 @@
 -- You can use 'DescribeStream' to check the stream status, which is
 -- returned in 'StreamStatus'.
 --
--- CreateStream has a limit of 5 transactions per second per account.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_CreateStream.html AWS API Reference> for CreateStream.
+-- < CreateStream> has a limit of 5 transactions per second per account.
 module Network.AWS.Kinesis.CreateStream
     (
     -- * Creating a Request
@@ -128,6 +126,8 @@
         type Rs CreateStream = CreateStreamResponse
         request = postJSON kinesis
         response = receiveNull CreateStreamResponse'
+
+instance Hashable CreateStream
 
 instance ToHeaders CreateStream where
         toHeaders
diff --git a/gen/Network/AWS/Kinesis/DecreaseStreamRetentionPeriod.hs b/gen/Network/AWS/Kinesis/DecreaseStreamRetentionPeriod.hs
--- a/gen/Network/AWS/Kinesis/DecreaseStreamRetentionPeriod.hs
+++ b/gen/Network/AWS/Kinesis/DecreaseStreamRetentionPeriod.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.DecreaseStreamRetentionPeriod
--- 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 @@
 -- This operation may result in lost data. For example, if the stream\'s
 -- retention period is 48 hours and is decreased to 24 hours, any data
 -- already in the stream that is older than 24 hours is inaccessible.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_DecreaseStreamRetentionPeriod.html AWS API Reference> for DecreaseStreamRetentionPeriod.
 module Network.AWS.Kinesis.DecreaseStreamRetentionPeriod
     (
     -- * Creating a Request
@@ -48,7 +46,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input for DecreaseStreamRetentionPeriod.
+-- | Represents the input for < DecreaseStreamRetentionPeriod>.
 --
 -- /See:/ 'decreaseStreamRetentionPeriod' smart constructor.
 data DecreaseStreamRetentionPeriod = DecreaseStreamRetentionPeriod'
@@ -89,6 +87,8 @@
         request = postJSON kinesis
         response
           = receiveNull DecreaseStreamRetentionPeriodResponse'
+
+instance Hashable DecreaseStreamRetentionPeriod
 
 instance ToHeaders DecreaseStreamRetentionPeriod
          where
diff --git a/gen/Network/AWS/Kinesis/DeleteStream.hs b/gen/Network/AWS/Kinesis/DeleteStream.hs
--- a/gen/Network/AWS/Kinesis/DeleteStream.hs
+++ b/gen/Network/AWS/Kinesis/DeleteStream.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.DeleteStream
--- 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
@@ -28,18 +28,16 @@
 -- until Amazon Kinesis completes the deletion.
 --
 -- __Note:__ Amazon Kinesis might continue to accept data read and write
--- operations, such as PutRecord, PutRecords, and GetRecords, on a stream
--- in the 'DELETING' state until the stream deletion is complete.
+-- operations, such as < PutRecord>, < PutRecords>, and < GetRecords>, on a
+-- stream in the 'DELETING' state until the stream deletion is complete.
 --
 -- When you delete a stream, any shards in that stream are also deleted,
 -- and any tags are dissociated from the stream.
 --
--- You can use the DescribeStream operation to check the state of the
+-- You can use the < DescribeStream> operation to check the state of the
 -- stream, which is returned in 'StreamStatus'.
 --
--- DeleteStream has a limit of 5 transactions per second per account.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_DeleteStream.html AWS API Reference> for DeleteStream.
+-- < DeleteStream> has a limit of 5 transactions per second per account.
 module Network.AWS.Kinesis.DeleteStream
     (
     -- * Creating a Request
@@ -60,7 +58,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input for DeleteStream.
+-- | Represents the input for < DeleteStream>.
 --
 -- /See:/ 'deleteStream' smart constructor.
 newtype DeleteStream = DeleteStream'
@@ -88,6 +86,8 @@
         type Rs DeleteStream = DeleteStreamResponse
         request = postJSON kinesis
         response = receiveNull DeleteStreamResponse'
+
+instance Hashable DeleteStream
 
 instance ToHeaders DeleteStream where
         toHeaders
diff --git a/gen/Network/AWS/Kinesis/DescribeStream.hs b/gen/Network/AWS/Kinesis/DescribeStream.hs
--- a/gen/Network/AWS/Kinesis/DescribeStream.hs
+++ b/gen/Network/AWS/Kinesis/DescribeStream.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.DescribeStream
--- 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
@@ -40,9 +40,7 @@
 -- returned. Specify this ID in the 'ExclusiveStartShardId' parameter in a
 -- subsequent request to 'DescribeStream'.
 --
--- DescribeStream has a limit of 10 transactions per second per account.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStream.html AWS API Reference> for DescribeStream.
+-- < DescribeStream> has a limit of 10 transactions per second per account.
 --
 -- This operation returns paginated results.
 module Network.AWS.Kinesis.DescribeStream
@@ -134,6 +132,8 @@
               (\ s h x ->
                  DescribeStreamResponse' <$>
                    (pure (fromEnum s)) <*> (x .:> "StreamDescription"))
+
+instance Hashable DescribeStream
 
 instance ToHeaders DescribeStream where
         toHeaders
diff --git a/gen/Network/AWS/Kinesis/GetRecords.hs b/gen/Network/AWS/Kinesis/GetRecords.hs
--- a/gen/Network/AWS/Kinesis/GetRecords.hs
+++ b/gen/Network/AWS/Kinesis/GetRecords.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.GetRecords
--- 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,38 +24,38 @@
 -- iterator specifies the position in the shard from which you want to
 -- start reading data records sequentially. If there are no records
 -- available in the portion of the shard that the iterator points to,
--- GetRecords returns an empty list. Note that it might take multiple calls
--- to get to a portion of the shard that contains records.
+-- < GetRecords> returns an empty list. Note that it might take multiple
+-- calls to get to a portion of the shard that contains records.
 --
 -- You can scale by provisioning multiple shards. Your application should
 -- have one thread per shard, each reading continuously from its stream. To
--- read from a stream continually, call GetRecords in a loop. Use
--- GetShardIterator to get the shard iterator to specify in the first
--- GetRecords call. GetRecords returns a new shard iterator in
+-- read from a stream continually, call < GetRecords> in a loop. Use
+-- < GetShardIterator> to get the shard iterator to specify in the first
+-- < GetRecords> call. < GetRecords> returns a new shard iterator in
 -- 'NextShardIterator'. Specify the shard iterator returned in
--- 'NextShardIterator' in subsequent calls to GetRecords. Note that if the
--- shard has been closed, the shard iterator can\'t return more data and
--- GetRecords returns 'null' in 'NextShardIterator'. You can terminate the
--- loop when the shard is closed, or when the shard iterator reaches the
--- record with the sequence number or other attribute that marks it as the
--- last record to process.
+-- 'NextShardIterator' in subsequent calls to < GetRecords>. Note that if
+-- the shard has been closed, the shard iterator can\'t return more data
+-- and < GetRecords> returns 'null' in 'NextShardIterator'. You can
+-- terminate the loop when the shard is closed, or when the shard iterator
+-- reaches the record with the sequence number or other attribute that
+-- marks it as the last record to process.
 --
 -- Each data record can be up to 1 MB in size, and each shard can read up
 -- to 2 MB per second. You can ensure that your calls don\'t exceed the
 -- maximum supported size or throughput by using the 'Limit' parameter to
--- specify the maximum number of records that GetRecords can return.
+-- specify the maximum number of records that < GetRecords> can return.
 -- Consider your average record size when determining this limit.
 --
--- The size of the data returned by GetRecords will vary depending on the
--- utilization of the shard. The maximum size of data that GetRecords can
--- return is 10 MB. If a call returns this amount of data, subsequent calls
--- made within the next 5 seconds throw
+-- The size of the data returned by < GetRecords> will vary depending on
+-- the utilization of the shard. The maximum size of data that
+-- < GetRecords> can return is 10 MB. If a call returns this amount of
+-- data, subsequent calls made within the next 5 seconds throw
 -- 'ProvisionedThroughputExceededException'. If there is insufficient
 -- provisioned throughput on the shard, subsequent calls made within the
 -- next 1 second throw 'ProvisionedThroughputExceededException'. Note that
--- GetRecords won\'t return any data when it throws an exception. For this
--- reason, we recommend that you wait one second between calls to
--- GetRecords; however, it\'s possible that the application will get
+-- < GetRecords> won\'t return any data when it throws an exception. For
+-- this reason, we recommend that you wait one second between calls to
+-- < GetRecords>; however, it\'s possible that the application will get
 -- exceptions for longer than 1 second.
 --
 -- To detect whether the application is falling behind in processing, you
@@ -73,8 +73,6 @@
 -- There are no guarantees about the timestamp accuracy, or that the
 -- timestamp is always increasing. For example, records in a shard or
 -- across a stream might have timestamps that are out of order.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetRecords.html AWS API Reference> for GetRecords.
 module Network.AWS.Kinesis.GetRecords
     (
     -- * Creating a Request
@@ -101,7 +99,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input for GetRecords.
+-- | Represents the input for < GetRecords>.
 --
 -- /See:/ 'getRecords' smart constructor.
 data GetRecords = GetRecords'
@@ -126,8 +124,8 @@
     }
 
 -- | The maximum number of records to return. Specify a value of up to
--- 10,000. If you specify a value that is greater than 10,000, GetRecords
--- throws 'InvalidArgumentException'.
+-- 10,000. If you specify a value that is greater than 10,000,
+-- < GetRecords> throws 'InvalidArgumentException'.
 grLimit :: Lens' GetRecords (Maybe Natural)
 grLimit = lens _grLimit (\ s a -> s{_grLimit = a}) . mapping _Nat;
 
@@ -149,6 +147,8 @@
                      <*> (pure (fromEnum s))
                      <*> (x .?> "Records" .!@ mempty))
 
+instance Hashable GetRecords
+
 instance ToHeaders GetRecords where
         toHeaders
           = const
@@ -171,7 +171,7 @@
 instance ToQuery GetRecords where
         toQuery = const mempty
 
--- | Represents the output for GetRecords.
+-- | Represents the output for < GetRecords>.
 --
 -- /See:/ 'getRecordsResponse' smart constructor.
 data GetRecordsResponse = GetRecordsResponse'
@@ -209,7 +209,7 @@
 grrsNextShardIterator :: Lens' GetRecordsResponse (Maybe Text)
 grrsNextShardIterator = lens _grrsNextShardIterator (\ s a -> s{_grrsNextShardIterator = a});
 
--- | The number of milliseconds the GetRecords response is from the tip of
+-- | The number of milliseconds the < GetRecords> response is from the tip of
 -- the stream, indicating how far behind current time the consumer is. A
 -- value of zero indicates record processing is caught up, and there are no
 -- new records to process at this moment.
diff --git a/gen/Network/AWS/Kinesis/GetShardIterator.hs b/gen/Network/AWS/Kinesis/GetShardIterator.hs
--- a/gen/Network/AWS/Kinesis/GetShardIterator.hs
+++ b/gen/Network/AWS/Kinesis/GetShardIterator.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.GetShardIterator
--- 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
@@ -33,34 +33,32 @@
 -- by a specific sequence number by using the 'AT_SEQUENCE_NUMBER' shard
 -- iterator type, or right after the sequence number by using the
 -- 'AFTER_SEQUENCE_NUMBER' shard iterator type, using sequence numbers
--- returned by earlier calls to PutRecord, PutRecords, GetRecords, or
--- DescribeStream. You can specify the shard iterator type 'TRIM_HORIZON'
--- in the request to cause 'ShardIterator' to point to the last untrimmed
--- record in the shard in the system, which is the oldest data record in
--- the shard. Or you can point to just after the most recent record in the
--- shard, by using the shard iterator type 'LATEST', so that you always
--- read the most recent data in the shard.
+-- returned by earlier calls to < PutRecord>, < PutRecords>, < GetRecords>,
+-- or < DescribeStream>. You can specify the shard iterator type
+-- 'TRIM_HORIZON' in the request to cause 'ShardIterator' to point to the
+-- last untrimmed record in the shard in the system, which is the oldest
+-- data record in the shard. Or you can point to just after the most recent
+-- record in the shard, by using the shard iterator type 'LATEST', so that
+-- you always read the most recent data in the shard.
 --
 -- When you repeatedly read from an Amazon Kinesis stream use a
--- GetShardIterator request to get the first shard iterator for use in your
--- first GetRecords request and then use the shard iterator returned by the
--- GetRecords request in 'NextShardIterator' for subsequent reads. A new
--- shard iterator is returned by every GetRecords request in
--- 'NextShardIterator', which you use in the 'ShardIterator' parameter of
--- the next GetRecords request.
+-- < GetShardIterator> request to get the first shard iterator for use in
+-- your first < GetRecords> request and then use the shard iterator
+-- returned by the < GetRecords> request in 'NextShardIterator' for
+-- subsequent reads. A new shard iterator is returned by every
+-- < GetRecords> request in 'NextShardIterator', which you use in the
+-- 'ShardIterator' parameter of the next < GetRecords> request.
 --
--- If a GetShardIterator request is made too often, you receive a
+-- If a < GetShardIterator> request is made too often, you receive a
 -- 'ProvisionedThroughputExceededException'. For more information about
--- throughput limits, see GetRecords.
+-- throughput limits, see < GetRecords>.
 --
 -- If the shard is closed, the iterator can\'t return more data, and
--- GetShardIterator returns 'null' for its 'ShardIterator'. A shard can be
--- closed using SplitShard or MergeShards.
+-- < GetShardIterator> returns 'null' for its 'ShardIterator'. A shard can
+-- be closed using < SplitShard> or < MergeShards>.
 --
--- GetShardIterator has a limit of 5 transactions per second per account
+-- < GetShardIterator> has a limit of 5 transactions per second per account
 -- per open shard.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html AWS API Reference> for GetShardIterator.
 module Network.AWS.Kinesis.GetShardIterator
     (
     -- * Creating a Request
@@ -158,6 +156,8 @@
               (\ s h x ->
                  GetShardIteratorResponse' <$>
                    (x .?> "ShardIterator") <*> (pure (fromEnum s)))
+
+instance Hashable GetShardIterator
 
 instance ToHeaders GetShardIterator where
         toHeaders
diff --git a/gen/Network/AWS/Kinesis/IncreaseStreamRetentionPeriod.hs b/gen/Network/AWS/Kinesis/IncreaseStreamRetentionPeriod.hs
--- a/gen/Network/AWS/Kinesis/IncreaseStreamRetentionPeriod.hs
+++ b/gen/Network/AWS/Kinesis/IncreaseStreamRetentionPeriod.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.IncreaseStreamRetentionPeriod
--- 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 @@
 -- operation has been called. For example, if a stream’s retention period
 -- is set to 24 hours and is increased to 168 hours, any data that is older
 -- than 24 hours will remain inaccessible to consumer applications.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_IncreaseStreamRetentionPeriod.html AWS API Reference> for IncreaseStreamRetentionPeriod.
 module Network.AWS.Kinesis.IncreaseStreamRetentionPeriod
     (
     -- * Creating a Request
@@ -52,7 +50,7 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | Represents the input for IncreaseStreamRetentionPeriod.
+-- | Represents the input for < IncreaseStreamRetentionPeriod>.
 --
 -- /See:/ 'increaseStreamRetentionPeriod' smart constructor.
 data IncreaseStreamRetentionPeriod = IncreaseStreamRetentionPeriod'
@@ -93,6 +91,8 @@
         request = postJSON kinesis
         response
           = receiveNull IncreaseStreamRetentionPeriodResponse'
+
+instance Hashable IncreaseStreamRetentionPeriod
 
 instance ToHeaders IncreaseStreamRetentionPeriod
          where
diff --git a/gen/Network/AWS/Kinesis/ListStreams.hs b/gen/Network/AWS/Kinesis/ListStreams.hs
--- a/gen/Network/AWS/Kinesis/ListStreams.hs
+++ b/gen/Network/AWS/Kinesis/ListStreams.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.ListStreams
--- 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,9 +34,7 @@
 -- request is then added to the list. You can continue this process until
 -- all the stream names have been collected in the list.
 --
--- ListStreams has a limit of 5 transactions per second per account.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListStreams.html AWS API Reference> for ListStreams.
+-- < ListStreams> has a limit of 5 transactions per second per account.
 --
 -- This operation returns paginated results.
 module Network.AWS.Kinesis.ListStreams
@@ -115,6 +113,8 @@
                    (pure (fromEnum s)) <*>
                      (x .?> "StreamNames" .!@ mempty)
                      <*> (x .:> "HasMoreStreams"))
+
+instance Hashable ListStreams
 
 instance ToHeaders ListStreams where
         toHeaders
diff --git a/gen/Network/AWS/Kinesis/ListTagsForStream.hs b/gen/Network/AWS/Kinesis/ListTagsForStream.hs
--- a/gen/Network/AWS/Kinesis/ListTagsForStream.hs
+++ b/gen/Network/AWS/Kinesis/ListTagsForStream.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.ListTagsForStream
--- 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)
 --
 -- Lists the tags for the specified Amazon Kinesis stream.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListTagsForStream.html AWS API Reference> for ListTagsForStream.
 module Network.AWS.Kinesis.ListTagsForStream
     (
     -- * Creating a Request
@@ -101,6 +99,8 @@
                  ListTagsForStreamResponse' <$>
                    (pure (fromEnum s)) <*> (x .?> "Tags" .!@ mempty) <*>
                      (x .:> "HasMoreTags"))
+
+instance Hashable ListTagsForStream
 
 instance ToHeaders ListTagsForStream where
         toHeaders
diff --git a/gen/Network/AWS/Kinesis/MergeShards.hs b/gen/Network/AWS/Kinesis/MergeShards.hs
--- a/gen/Network/AWS/Kinesis/MergeShards.hs
+++ b/gen/Network/AWS/Kinesis/MergeShards.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.MergeShards
--- 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
@@ -41,7 +41,7 @@
 -- stream does not exist, 'MergeShards' returns a
 -- 'ResourceNotFoundException'.
 --
--- You can use DescribeStream to check the state of the stream, which is
+-- You can use < DescribeStream> to check the state of the stream, which is
 -- returned in 'StreamStatus'.
 --
 -- 'MergeShards' is an asynchronous operation. Upon receiving a
@@ -50,16 +50,14 @@
 -- Amazon Kinesis sets the 'StreamStatus' to 'ACTIVE'. Read and write
 -- operations continue to work while the stream is in the 'UPDATING' state.
 --
--- You use DescribeStream to determine the shard IDs that are specified in
--- the 'MergeShards' request.
+-- You use < DescribeStream> to determine the shard IDs that are specified
+-- in the 'MergeShards' request.
 --
 -- If you try to operate on too many streams in parallel using
--- CreateStream, DeleteStream, 'MergeShards' or SplitShard, you will
--- receive a 'LimitExceededException'.
+-- < CreateStream>, < DeleteStream>, 'MergeShards' or < SplitShard>, you
+-- will receive a 'LimitExceededException'.
 --
 -- 'MergeShards' has limit of 5 transactions per second per account.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_MergeShards.html AWS API Reference> for MergeShards.
 module Network.AWS.Kinesis.MergeShards
     (
     -- * Creating a Request
@@ -129,6 +127,8 @@
         type Rs MergeShards = MergeShardsResponse
         request = postJSON kinesis
         response = receiveNull MergeShardsResponse'
+
+instance Hashable MergeShards
 
 instance ToHeaders MergeShards where
         toHeaders
diff --git a/gen/Network/AWS/Kinesis/PutRecord.hs b/gen/Network/AWS/Kinesis/PutRecord.hs
--- a/gen/Network/AWS/Kinesis/PutRecord.hs
+++ b/gen/Network/AWS/Kinesis/PutRecord.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.PutRecord
--- 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
@@ -60,10 +60,8 @@
 --
 -- By default, data records are accessible for only 24 hours from the time
 -- that they are added to an Amazon Kinesis stream. This retention period
--- can be modified using the DecreaseStreamRetentionPeriod and
--- IncreaseStreamRetentionPeriod operations.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html AWS API Reference> for PutRecord.
+-- can be modified using the < DecreaseStreamRetentionPeriod> and
+-- < IncreaseStreamRetentionPeriod> operations.
 module Network.AWS.Kinesis.PutRecord
     (
     -- * Creating a Request
@@ -182,6 +180,8 @@
                  PutRecordResponse' <$>
                    (pure (fromEnum s)) <*> (x .:> "ShardId") <*>
                      (x .:> "SequenceNumber"))
+
+instance Hashable PutRecord
 
 instance ToHeaders PutRecord where
         toHeaders
diff --git a/gen/Network/AWS/Kinesis/PutRecords.hs b/gen/Network/AWS/Kinesis/PutRecords.hs
--- a/gen/Network/AWS/Kinesis/PutRecords.hs
+++ b/gen/Network/AWS/Kinesis/PutRecords.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.PutRecords
--- 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
@@ -82,10 +82,8 @@
 --
 -- By default, data records are accessible for only 24 hours from the time
 -- that they are added to an Amazon Kinesis stream. This retention period
--- can be modified using the DecreaseStreamRetentionPeriod and
--- IncreaseStreamRetentionPeriod operations.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html AWS API Reference> for PutRecords.
+-- can be modified using the < DecreaseStreamRetentionPeriod> and
+-- < IncreaseStreamRetentionPeriod> operations.
 module Network.AWS.Kinesis.PutRecords
     (
     -- * Creating a Request
@@ -153,6 +151,8 @@
                  PutRecordsResponse' <$>
                    (x .?> "FailedRecordCount") <*> (pure (fromEnum s))
                      <*> (x .:> "Records"))
+
+instance Hashable PutRecords
 
 instance ToHeaders PutRecords where
         toHeaders
diff --git a/gen/Network/AWS/Kinesis/RemoveTagsFromStream.hs b/gen/Network/AWS/Kinesis/RemoveTagsFromStream.hs
--- a/gen/Network/AWS/Kinesis/RemoveTagsFromStream.hs
+++ b/gen/Network/AWS/Kinesis/RemoveTagsFromStream.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.RemoveTagsFromStream
--- 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 @@
 -- Deletes tags from the specified Amazon Kinesis stream.
 --
 -- If you specify a tag that does not exist, it is ignored.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_RemoveTagsFromStream.html AWS API Reference> for RemoveTagsFromStream.
 module Network.AWS.Kinesis.RemoveTagsFromStream
     (
     -- * Creating a Request
@@ -82,6 +80,8 @@
              RemoveTagsFromStreamResponse
         request = postJSON kinesis
         response = receiveNull RemoveTagsFromStreamResponse'
+
+instance Hashable RemoveTagsFromStream
 
 instance ToHeaders RemoveTagsFromStream where
         toHeaders
diff --git a/gen/Network/AWS/Kinesis/SplitShard.hs b/gen/Network/AWS/Kinesis/SplitShard.hs
--- a/gen/Network/AWS/Kinesis/SplitShard.hs
+++ b/gen/Network/AWS/Kinesis/SplitShard.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.SplitShard
--- 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
@@ -38,9 +38,9 @@
 -- <http://docs.aws.amazon.com/kinesis/latest/dev/kinesis-using-sdk-java-resharding-split.html Split a Shard>
 -- in the /Amazon Kinesis Developer Guide/.
 --
--- You can use DescribeStream to determine the shard ID and hash key values
--- for the 'ShardToSplit' and 'NewStartingHashKey' parameters that are
--- specified in the 'SplitShard' request.
+-- You can use < DescribeStream> to determine the shard ID and hash key
+-- values for the 'ShardToSplit' and 'NewStartingHashKey' parameters that
+-- are specified in the 'SplitShard' request.
 --
 -- 'SplitShard' is an asynchronous operation. Upon receiving a 'SplitShard'
 -- request, Amazon Kinesis immediately returns a response and sets the
@@ -63,12 +63,10 @@
 -- <http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html contact AWS Support>.
 --
 -- If you try to operate on too many streams in parallel using
--- CreateStream, DeleteStream, MergeShards or SplitShard, you receive a
--- 'LimitExceededException'.
+-- < CreateStream>, < DeleteStream>, < MergeShards> or < SplitShard>, you
+-- receive a 'LimitExceededException'.
 --
 -- 'SplitShard' has limit of 5 transactions per second per account.
---
--- /See:/ <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_SplitShard.html AWS API Reference> for SplitShard.
 module Network.AWS.Kinesis.SplitShard
     (
     -- * Creating a Request
@@ -144,6 +142,8 @@
         type Rs SplitShard = SplitShardResponse
         request = postJSON kinesis
         response = receiveNull SplitShardResponse'
+
+instance Hashable SplitShard
 
 instance ToHeaders SplitShard where
         toHeaders
diff --git a/gen/Network/AWS/Kinesis/Types.hs b/gen/Network/AWS/Kinesis/Types.hs
--- a/gen/Network/AWS/Kinesis/Types.hs
+++ b/gen/Network/AWS/Kinesis/Types.hs
@@ -4,7 +4,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.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
@@ -119,6 +119,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/Kinesis/Types/Product.hs b/gen/Network/AWS/Kinesis/Types/Product.hs
--- a/gen/Network/AWS/Kinesis/Types/Product.hs
+++ b/gen/Network/AWS/Kinesis/Types/Product.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.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
@@ -62,6 +62,8 @@
                  HashKeyRange' <$>
                    (x .: "StartingHashKey") <*> (x .: "EndingHashKey"))
 
+instance Hashable HashKeyRange
+
 -- | Represents the output for 'PutRecords'.
 --
 -- /See:/ 'putRecordsRequestEntry' smart constructor.
@@ -121,6 +123,8 @@
 prrePartitionKey :: Lens' PutRecordsRequestEntry Text
 prrePartitionKey = lens _prrePartitionKey (\ s a -> s{_prrePartitionKey = a});
 
+instance Hashable PutRecordsRequestEntry
+
 instance ToJSON PutRecordsRequestEntry where
         toJSON PutRecordsRequestEntry'{..}
           = object
@@ -194,6 +198,8 @@
                      (x .:? "ErrorMessage")
                      <*> (x .:? "ShardId"))
 
+instance Hashable PutRecordsResultEntry
+
 -- | The unit of data of the Amazon Kinesis stream, which is composed of a
 -- sequence number, a partition key, and a data blob.
 --
@@ -265,6 +271,8 @@
                      <*> (x .: "Data")
                      <*> (x .: "PartitionKey"))
 
+instance Hashable Record
+
 -- | The range of possible sequence numbers for the shard.
 --
 -- /See:/ 'sequenceNumberRange' smart constructor.
@@ -306,6 +314,8 @@
                    (x .:? "EndingSequenceNumber") <*>
                      (x .: "StartingSequenceNumber"))
 
+instance Hashable SequenceNumberRange
+
 -- | A uniquely identified group of data records in an Amazon Kinesis stream.
 --
 -- /See:/ 'shard' smart constructor.
@@ -376,7 +386,9 @@
                      <*> (x .: "HashKeyRange")
                      <*> (x .: "SequenceNumberRange"))
 
--- | Represents the output for DescribeStream.
+instance Hashable Shard
+
+-- | Represents the output for < DescribeStream>.
 --
 -- /See:/ 'streamDescription' smart constructor.
 data StreamDescription = StreamDescription'
@@ -468,6 +480,8 @@
                      <*> (x .: "HasMoreShards")
                      <*> (x .: "RetentionPeriodHours"))
 
+instance Hashable StreamDescription
+
 -- | Metadata assigned to the stream, consisting of a key-value pair.
 --
 -- /See:/ 'tag' smart constructor.
@@ -507,3 +521,5 @@
         parseJSON
           = withObject "Tag"
               (\ x -> Tag' <$> (x .:? "Value") <*> (x .: "Key"))
+
+instance Hashable Tag
diff --git a/gen/Network/AWS/Kinesis/Types/Sum.hs b/gen/Network/AWS/Kinesis/Types/Sum.hs
--- a/gen/Network/AWS/Kinesis/Types/Sum.hs
+++ b/gen/Network/AWS/Kinesis/Types/Sum.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.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/Kinesis/Waiters.hs b/gen/Network/AWS/Kinesis/Waiters.hs
--- a/gen/Network/AWS/Kinesis/Waiters.hs
+++ b/gen/Network/AWS/Kinesis/Waiters.hs
@@ -7,7 +7,7 @@
 
 -- |
 -- Module      : Network.AWS.Kinesis.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/Kinesis.hs b/test/Test/AWS/Gen/Kinesis.hs
--- a/test/Test/AWS/Gen/Kinesis.hs
+++ b/test/Test/AWS/Gen/Kinesis.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Test.AWS.Gen.Kinesis
--- 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/Kinesis.hs b/test/Test/AWS/Kinesis.hs
--- a/test/Test/AWS/Kinesis.hs
+++ b/test/Test/AWS/Kinesis.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 -- Module      : Test.AWS.Kinesis
--- 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/Kinesis/Internal.hs b/test/Test/AWS/Kinesis/Internal.hs
--- a/test/Test/AWS/Kinesis/Internal.hs
+++ b/test/Test/AWS/Kinesis/Internal.hs
@@ -2,7 +2,7 @@
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
 -- Module      : Test.AWS.Kinesis.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
