diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.5`
+`1.5.0`
 
 
 ## Description
diff --git a/amazonka-dynamodb-streams.cabal b/amazonka-dynamodb-streams.cabal
--- a/amazonka-dynamodb-streams.cabal
+++ b/amazonka-dynamodb-streams.cabal
@@ -1,13 +1,13 @@
 name:                  amazonka-dynamodb-streams
-version:               1.4.5
+version:               1.5.0
 synopsis:              Amazon DynamoDB Streams SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
-license:               OtherLicense
+license:               MPL-2.0
 license-file:          LICENSE
 author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2013-2016 Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+copyright:             Copyright (c) 2013-2017 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
@@ -29,14 +29,19 @@
     to get started.
 
 source-repository head
-    type:     git
-    location: git://github.com/brendanhay/amazonka.git
+    type:              git
+    location:          git://github.com/brendanhay/amazonka.git
+    subdir:            amazonka-dynamodb-streams
 
 library
     default-language:  Haskell2010
     hs-source-dirs:    src gen
 
-    ghc-options:       -Wall
+    ghc-options:
+        -Wall
+        -fwarn-incomplete-uni-patterns
+        -fwarn-incomplete-record-updates
+        -funbox-strict-fields
 
     exposed-modules:
           Network.AWS.DynamoDBStreams
@@ -52,7 +57,7 @@
         , Network.AWS.DynamoDBStreams.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.5.*
+          amazonka-core == 1.5.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-dynamodb-streams-test
@@ -72,9 +77,9 @@
         , Test.AWS.DynamoDBStreams.Internal
 
     build-depends:
-          amazonka-core == 1.4.5.*
-        , amazonka-test == 1.4.5.*
-        , amazonka-dynamodb-streams == 1.4.5.*
+          amazonka-core == 1.5.0.*
+        , amazonka-test == 1.5.0.*
+        , amazonka-dynamodb-streams
         , base
         , bytestring
         , tasty
diff --git a/gen/Network/AWS/DynamoDBStreams.hs b/gen/Network/AWS/DynamoDBStreams.hs
--- a/gen/Network/AWS/DynamoDBStreams.hs
+++ b/gen/Network/AWS/DynamoDBStreams.hs
@@ -5,9 +5,9 @@
 
 -- |
 -- Module      : Network.AWS.DynamoDBStreams
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -15,18 +15,6 @@
 --
 -- Amazon DynamoDB Streams provides API actions for accessing streams and processing stream records. To learn more about application development with Streams, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html Capturing Table Activity with DynamoDB Streams> in the Amazon DynamoDB Developer Guide.
 --
--- The following are short descriptions of each low-level DynamoDB Streams action:
---
---     * /DescribeStream/ - Returns detailed information about a particular stream.
---
---     * /GetRecords/ - Retrieves the stream records from within a shard.
---
---     * /GetShardIterator/ - Returns information on how to retrieve the streams record from a shard with a given shard ID.
---
---     * /ListStreams/ - Returns a list of all the streams associated with the current AWS account and endpoint.
---
---
---
 module Network.AWS.DynamoDBStreams
     (
     -- * Service Configuration
@@ -99,6 +87,12 @@
     , avS
     , avBOOL
 
+    -- ** Identity
+    , Identity
+    , identity
+    , iPrincipalId
+    , iType
+
     -- ** KeySchemaElement
     , KeySchemaElement
     , keySchemaElement
@@ -108,6 +102,7 @@
     -- ** Record
     , Record
     , record
+    , rUserIdentity
     , rEventVersion
     , rDynamodb
     , rAwsRegion
@@ -160,12 +155,12 @@
     , srNewImage
     ) where
 
-import           Network.AWS.DynamoDBStreams.DescribeStream
-import           Network.AWS.DynamoDBStreams.GetRecords
-import           Network.AWS.DynamoDBStreams.GetShardIterator
-import           Network.AWS.DynamoDBStreams.ListStreams
-import           Network.AWS.DynamoDBStreams.Types
-import           Network.AWS.DynamoDBStreams.Waiters
+import Network.AWS.DynamoDBStreams.DescribeStream
+import Network.AWS.DynamoDBStreams.GetRecords
+import Network.AWS.DynamoDBStreams.GetShardIterator
+import Network.AWS.DynamoDBStreams.ListStreams
+import Network.AWS.DynamoDBStreams.Types
+import Network.AWS.DynamoDBStreams.Waiters
 
 {- $errors
 Error matchers are designed for use with the functions provided by
diff --git a/gen/Network/AWS/DynamoDBStreams/DescribeStream.hs b/gen/Network/AWS/DynamoDBStreams/DescribeStream.hs
--- a/gen/Network/AWS/DynamoDBStreams/DescribeStream.hs
+++ b/gen/Network/AWS/DynamoDBStreams/DescribeStream.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.DynamoDBStreams.DescribeStream
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,24 +41,25 @@
     , dsrsResponseStatus
     ) where
 
-import           Network.AWS.DynamoDBStreams.Types
-import           Network.AWS.DynamoDBStreams.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.DynamoDBStreams.Types
+import Network.AWS.DynamoDBStreams.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a /DescribeStream/ operation.
+-- | Represents the input of a @DescribeStream@ operation.
 --
 --
 --
 -- /See:/ 'describeStream' smart constructor.
 data DescribeStream = DescribeStream'
-    { _dsExclusiveStartShardId :: !(Maybe Text)
-    , _dsLimit                 :: !(Maybe Nat)
-    , _dsStreamARN             :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsExclusiveStartShardId :: !(Maybe Text)
+  , _dsLimit                 :: !(Maybe Nat)
+  , _dsStreamARN             :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeStream' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,12 +73,13 @@
     :: Text -- ^ 'dsStreamARN'
     -> DescribeStream
 describeStream pStreamARN_ =
-    DescribeStream'
-    { _dsExclusiveStartShardId = Nothing
-    , _dsLimit = Nothing
-    , _dsStreamARN = pStreamARN_
-    }
+  DescribeStream'
+  { _dsExclusiveStartShardId = Nothing
+  , _dsLimit = Nothing
+  , _dsStreamARN = pStreamARN_
+  }
 
+
 -- | The shard ID of the first item that this operation will evaluate. Use the value that was returned for @LastEvaluatedShardId@ in the previous operation.
 dsExclusiveStartShardId :: Lens' DescribeStream (Maybe Text)
 dsExclusiveStartShardId = lens _dsExclusiveStartShardId (\ s a -> s{_dsExclusiveStartShardId = a});
@@ -99,9 +101,9 @@
                  DescribeStreamResponse' <$>
                    (x .?> "StreamDescription") <*> (pure (fromEnum s)))
 
-instance Hashable DescribeStream
+instance Hashable DescribeStream where
 
-instance NFData DescribeStream
+instance NFData DescribeStream where
 
 instance ToHeaders DescribeStream where
         toHeaders
@@ -128,16 +130,17 @@
 instance ToQuery DescribeStream where
         toQuery = const mempty
 
--- | Represents the output of a /DescribeStream/ operation.
+-- | Represents the output of a @DescribeStream@ operation.
 --
 --
 --
 -- /See:/ 'describeStreamResponse' smart constructor.
 data DescribeStreamResponse = DescribeStreamResponse'
-    { _dsrsStreamDescription :: !(Maybe StreamDescription)
-    , _dsrsResponseStatus    :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsrsStreamDescription :: !(Maybe StreamDescription)
+  , _dsrsResponseStatus    :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeStreamResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -149,11 +152,10 @@
     :: Int -- ^ 'dsrsResponseStatus'
     -> DescribeStreamResponse
 describeStreamResponse pResponseStatus_ =
-    DescribeStreamResponse'
-    { _dsrsStreamDescription = Nothing
-    , _dsrsResponseStatus = pResponseStatus_
-    }
+  DescribeStreamResponse'
+  {_dsrsStreamDescription = Nothing, _dsrsResponseStatus = pResponseStatus_}
 
+
 -- | A complete description of the stream, including its creation date and time, the DynamoDB table associated with the stream, the shard IDs within the stream, and the beginning and ending sequence numbers of stream records within the shards.
 dsrsStreamDescription :: Lens' DescribeStreamResponse (Maybe StreamDescription)
 dsrsStreamDescription = lens _dsrsStreamDescription (\ s a -> s{_dsrsStreamDescription = a});
@@ -162,4 +164,4 @@
 dsrsResponseStatus :: Lens' DescribeStreamResponse Int
 dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a});
 
-instance NFData DescribeStreamResponse
+instance NFData DescribeStreamResponse where
diff --git a/gen/Network/AWS/DynamoDBStreams/GetRecords.hs b/gen/Network/AWS/DynamoDBStreams/GetRecords.hs
--- a/gen/Network/AWS/DynamoDBStreams/GetRecords.hs
+++ b/gen/Network/AWS/DynamoDBStreams/GetRecords.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.DynamoDBStreams.GetRecords
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,23 +41,24 @@
     , grrsResponseStatus
     ) where
 
-import           Network.AWS.DynamoDBStreams.Types
-import           Network.AWS.DynamoDBStreams.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.DynamoDBStreams.Types
+import Network.AWS.DynamoDBStreams.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a /GetRecords/ operation.
+-- | Represents the input of a @GetRecords@ operation.
 --
 --
 --
 -- /See:/ 'getRecords' smart constructor.
 data GetRecords = GetRecords'
-    { _grLimit         :: !(Maybe Nat)
-    , _grShardIterator :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _grLimit         :: !(Maybe Nat)
+  , _grShardIterator :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetRecords' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,11 +70,9 @@
     :: Text -- ^ 'grShardIterator'
     -> GetRecords
 getRecords pShardIterator_ =
-    GetRecords'
-    { _grLimit = Nothing
-    , _grShardIterator = pShardIterator_
-    }
+  GetRecords' {_grLimit = Nothing, _grShardIterator = pShardIterator_}
 
+
 -- | The maximum number of records to return from the shard. The upper limit is 1000.
 grLimit :: Lens' GetRecords (Maybe Natural)
 grLimit = lens _grLimit (\ s a -> s{_grLimit = a}) . mapping _Nat;
@@ -93,9 +92,9 @@
                      (x .?> "NextShardIterator")
                      <*> (pure (fromEnum s)))
 
-instance Hashable GetRecords
+instance Hashable GetRecords where
 
-instance NFData GetRecords
+instance NFData GetRecords where
 
 instance ToHeaders GetRecords where
         toHeaders
@@ -120,17 +119,18 @@
 instance ToQuery GetRecords where
         toQuery = const mempty
 
--- | Represents the output of a /GetRecords/ operation.
+-- | Represents the output of a @GetRecords@ operation.
 --
 --
 --
 -- /See:/ 'getRecordsResponse' smart constructor.
 data GetRecordsResponse = GetRecordsResponse'
-    { _grrsRecords           :: !(Maybe [Record])
-    , _grrsNextShardIterator :: !(Maybe Text)
-    , _grrsResponseStatus    :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _grrsRecords           :: !(Maybe [Record])
+  , _grrsNextShardIterator :: !(Maybe Text)
+  , _grrsResponseStatus    :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetRecordsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -144,12 +144,13 @@
     :: Int -- ^ 'grrsResponseStatus'
     -> GetRecordsResponse
 getRecordsResponse pResponseStatus_ =
-    GetRecordsResponse'
-    { _grrsRecords = Nothing
-    , _grrsNextShardIterator = Nothing
-    , _grrsResponseStatus = pResponseStatus_
-    }
+  GetRecordsResponse'
+  { _grrsRecords = Nothing
+  , _grrsNextShardIterator = Nothing
+  , _grrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The stream records from the shard, which were retrieved using the shard iterator.
 grrsRecords :: Lens' GetRecordsResponse [Record]
 grrsRecords = lens _grrsRecords (\ s a -> s{_grrsRecords = a}) . _Default . _Coerce;
@@ -162,4 +163,4 @@
 grrsResponseStatus :: Lens' GetRecordsResponse Int
 grrsResponseStatus = lens _grrsResponseStatus (\ s a -> s{_grrsResponseStatus = a});
 
-instance NFData GetRecordsResponse
+instance NFData GetRecordsResponse where
diff --git a/gen/Network/AWS/DynamoDBStreams/GetShardIterator.hs b/gen/Network/AWS/DynamoDBStreams/GetShardIterator.hs
--- a/gen/Network/AWS/DynamoDBStreams/GetShardIterator.hs
+++ b/gen/Network/AWS/DynamoDBStreams/GetShardIterator.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.DynamoDBStreams.GetShardIterator
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,25 +40,26 @@
     , gsirsResponseStatus
     ) where
 
-import           Network.AWS.DynamoDBStreams.Types
-import           Network.AWS.DynamoDBStreams.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.DynamoDBStreams.Types
+import Network.AWS.DynamoDBStreams.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a /GetShardIterator/ operation.
+-- | Represents the input of a @GetShardIterator@ operation.
 --
 --
 --
 -- /See:/ 'getShardIterator' smart constructor.
 data GetShardIterator = GetShardIterator'
-    { _gsiSequenceNumber    :: !(Maybe Text)
-    , _gsiStreamARN         :: !Text
-    , _gsiShardId           :: !Text
-    , _gsiShardIteratorType :: !ShardIteratorType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gsiSequenceNumber    :: !(Maybe Text)
+  , _gsiStreamARN         :: !Text
+  , _gsiShardId           :: !Text
+  , _gsiShardIteratorType :: !ShardIteratorType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetShardIterator' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -76,13 +77,14 @@
     -> ShardIteratorType -- ^ 'gsiShardIteratorType'
     -> GetShardIterator
 getShardIterator pStreamARN_ pShardId_ pShardIteratorType_ =
-    GetShardIterator'
-    { _gsiSequenceNumber = Nothing
-    , _gsiStreamARN = pStreamARN_
-    , _gsiShardId = pShardId_
-    , _gsiShardIteratorType = pShardIteratorType_
-    }
+  GetShardIterator'
+  { _gsiSequenceNumber = Nothing
+  , _gsiStreamARN = pStreamARN_
+  , _gsiShardId = pShardId_
+  , _gsiShardIteratorType = pShardIteratorType_
+  }
 
+
 -- | The sequence number of a stream record in the shard from which to start reading.
 gsiSequenceNumber :: Lens' GetShardIterator (Maybe Text)
 gsiSequenceNumber = lens _gsiSequenceNumber (\ s a -> s{_gsiSequenceNumber = a});
@@ -108,9 +110,9 @@
                  GetShardIteratorResponse' <$>
                    (x .?> "ShardIterator") <*> (pure (fromEnum s)))
 
-instance Hashable GetShardIterator
+instance Hashable GetShardIterator where
 
-instance NFData GetShardIterator
+instance NFData GetShardIterator where
 
 instance ToHeaders GetShardIterator where
         toHeaders
@@ -137,16 +139,17 @@
 instance ToQuery GetShardIterator where
         toQuery = const mempty
 
--- | Represents the output of a /GetShardIterator/ operation.
+-- | Represents the output of a @GetShardIterator@ operation.
 --
 --
 --
 -- /See:/ 'getShardIteratorResponse' smart constructor.
 data GetShardIteratorResponse = GetShardIteratorResponse'
-    { _gsirsShardIterator  :: !(Maybe Text)
-    , _gsirsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gsirsShardIterator  :: !(Maybe Text)
+  , _gsirsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetShardIteratorResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -158,11 +161,10 @@
     :: Int -- ^ 'gsirsResponseStatus'
     -> GetShardIteratorResponse
 getShardIteratorResponse pResponseStatus_ =
-    GetShardIteratorResponse'
-    { _gsirsShardIterator = Nothing
-    , _gsirsResponseStatus = pResponseStatus_
-    }
+  GetShardIteratorResponse'
+  {_gsirsShardIterator = Nothing, _gsirsResponseStatus = pResponseStatus_}
 
+
 -- | The position in the shard from which to start reading stream records sequentially. A shard iterator specifies this position using the sequence number of a stream record in a shard.
 gsirsShardIterator :: Lens' GetShardIteratorResponse (Maybe Text)
 gsirsShardIterator = lens _gsirsShardIterator (\ s a -> s{_gsirsShardIterator = a});
@@ -171,4 +173,4 @@
 gsirsResponseStatus :: Lens' GetShardIteratorResponse Int
 gsirsResponseStatus = lens _gsirsResponseStatus (\ s a -> s{_gsirsResponseStatus = a});
 
-instance NFData GetShardIteratorResponse
+instance NFData GetShardIteratorResponse where
diff --git a/gen/Network/AWS/DynamoDBStreams/ListStreams.hs b/gen/Network/AWS/DynamoDBStreams/ListStreams.hs
--- a/gen/Network/AWS/DynamoDBStreams/ListStreams.hs
+++ b/gen/Network/AWS/DynamoDBStreams/ListStreams.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.DynamoDBStreams.ListStreams
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns an array of stream ARNs associated with the current account and endpoint. If the @TableName@ parameter is present, then /ListStreams/ will return only the streams ARNs for that table.
+-- Returns an array of stream ARNs associated with the current account and endpoint. If the @TableName@ parameter is present, then @ListStreams@ will return only the streams ARNs for that table.
 --
 --
 module Network.AWS.DynamoDBStreams.ListStreams
@@ -40,24 +40,25 @@
     , lsrsResponseStatus
     ) where
 
-import           Network.AWS.DynamoDBStreams.Types
-import           Network.AWS.DynamoDBStreams.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.DynamoDBStreams.Types
+import Network.AWS.DynamoDBStreams.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a /ListStreams/ operation.
+-- | Represents the input of a @ListStreams@ operation.
 --
 --
 --
 -- /See:/ 'listStreams' smart constructor.
 data ListStreams = ListStreams'
-    { _lsExclusiveStartStreamARN :: !(Maybe Text)
-    , _lsLimit                   :: !(Maybe Nat)
-    , _lsTableName               :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lsExclusiveStartStreamARN :: !(Maybe Text)
+  , _lsLimit                   :: !(Maybe Nat)
+  , _lsTableName               :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListStreams' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -70,12 +71,13 @@
 listStreams
     :: ListStreams
 listStreams =
-    ListStreams'
-    { _lsExclusiveStartStreamARN = Nothing
-    , _lsLimit = Nothing
-    , _lsTableName = Nothing
-    }
+  ListStreams'
+  { _lsExclusiveStartStreamARN = Nothing
+  , _lsLimit = Nothing
+  , _lsTableName = Nothing
+  }
 
+
 -- | The ARN (Amazon Resource Name) of the first item that this operation will evaluate. Use the value that was returned for @LastEvaluatedStreamArn@ in the previous operation.
 lsExclusiveStartStreamARN :: Lens' ListStreams (Maybe Text)
 lsExclusiveStartStreamARN = lens _lsExclusiveStartStreamARN (\ s a -> s{_lsExclusiveStartStreamARN = a});
@@ -99,9 +101,9 @@
                      (x .?> "Streams" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable ListStreams
+instance Hashable ListStreams where
 
-instance NFData ListStreams
+instance NFData ListStreams where
 
 instance ToHeaders ListStreams where
         toHeaders
@@ -128,17 +130,18 @@
 instance ToQuery ListStreams where
         toQuery = const mempty
 
--- | Represents the output of a /ListStreams/ operation.
+-- | Represents the output of a @ListStreams@ operation.
 --
 --
 --
 -- /See:/ 'listStreamsResponse' smart constructor.
 data ListStreamsResponse = ListStreamsResponse'
-    { _lsrsLastEvaluatedStreamARN :: !(Maybe Text)
-    , _lsrsStreams                :: !(Maybe [Stream])
-    , _lsrsResponseStatus         :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lsrsLastEvaluatedStreamARN :: !(Maybe Text)
+  , _lsrsStreams                :: !(Maybe [Stream])
+  , _lsrsResponseStatus         :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListStreamsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -152,12 +155,13 @@
     :: Int -- ^ 'lsrsResponseStatus'
     -> ListStreamsResponse
 listStreamsResponse pResponseStatus_ =
-    ListStreamsResponse'
-    { _lsrsLastEvaluatedStreamARN = Nothing
-    , _lsrsStreams = Nothing
-    , _lsrsResponseStatus = pResponseStatus_
-    }
+  ListStreamsResponse'
+  { _lsrsLastEvaluatedStreamARN = Nothing
+  , _lsrsStreams = Nothing
+  , _lsrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The stream ARN of the item where the operation stopped, inclusive of the previous result set. Use this value to start a new operation, excluding this value in the new request. If @LastEvaluatedStreamArn@ is empty, then the "last page" of results has been processed and there is no more data to be retrieved. If @LastEvaluatedStreamArn@ is not empty, it does not necessarily mean that there is more data in the result set. The only way to know when you have reached the end of the result set is when @LastEvaluatedStreamArn@ is empty.
 lsrsLastEvaluatedStreamARN :: Lens' ListStreamsResponse (Maybe Text)
 lsrsLastEvaluatedStreamARN = lens _lsrsLastEvaluatedStreamARN (\ s a -> s{_lsrsLastEvaluatedStreamARN = a});
@@ -170,4 +174,4 @@
 lsrsResponseStatus :: Lens' ListStreamsResponse Int
 lsrsResponseStatus = lens _lsrsResponseStatus (\ s a -> s{_lsrsResponseStatus = a});
 
-instance NFData ListStreamsResponse
+instance NFData ListStreamsResponse where
diff --git a/gen/Network/AWS/DynamoDBStreams/Types.hs b/gen/Network/AWS/DynamoDBStreams/Types.hs
--- a/gen/Network/AWS/DynamoDBStreams/Types.hs
+++ b/gen/Network/AWS/DynamoDBStreams/Types.hs
@@ -4,9 +4,9 @@
 
 -- |
 -- Module      : Network.AWS.DynamoDBStreams.Types
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -51,6 +51,12 @@
     , avS
     , avBOOL
 
+    -- * Identity
+    , Identity
+    , identity
+    , iPrincipalId
+    , iType
+
     -- * KeySchemaElement
     , KeySchemaElement
     , keySchemaElement
@@ -60,6 +66,7 @@
     -- * Record
     , Record
     , record
+    , rUserIdentity
     , rEventVersion
     , rDynamodb
     , rAwsRegion
@@ -112,38 +119,40 @@
     , srNewImage
     ) where
 
-import           Network.AWS.DynamoDBStreams.Types.Product
-import           Network.AWS.DynamoDBStreams.Types.Sum
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Sign.V4
+import Network.AWS.DynamoDBStreams.Types.Product
+import Network.AWS.DynamoDBStreams.Types.Sum
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Sign.V4
 
 -- | API version @2012-08-10@ of the Amazon DynamoDB Streams SDK configuration.
 dynamoDBStreams :: Service
 dynamoDBStreams =
-    Service
-    { _svcAbbrev = "DynamoDBStreams"
-    , _svcSigner = v4
-    , _svcPrefix = "streams.dynamodb"
-    , _svcVersion = "2012-08-10"
-    , _svcEndpoint = defaultEndpoint dynamoDBStreams
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "DynamoDBStreams"
-    , _svcRetry = retry
-    }
+  Service
+  { _svcAbbrev = "DynamoDBStreams"
+  , _svcSigner = v4
+  , _svcPrefix = "streams.dynamodb"
+  , _svcVersion = "2012-08-10"
+  , _svcEndpoint = defaultEndpoint dynamoDBStreams
+  , _svcTimeout = Just 70
+  , _svcCheck = statusSuccess
+  , _svcError = parseJSONError "DynamoDBStreams"
+  , _svcRetry = retry
+  }
   where
     retry =
-        Exponential
-        { _retryBase = 5.0e-2
-        , _retryGrowth = 2
-        , _retryAttempts = 5
-        , _retryCheck = check
-        }
+      Exponential
+      { _retryBase = 5.0e-2
+      , _retryGrowth = 2
+      , _retryAttempts = 5
+      , _retryCheck = check
+      }
     check e
+      | has (hasCode "ThrottledException" . hasStatus 400) e =
+        Just "throttled_exception"
       | has (hasStatus 429) e = Just "too_many_requests"
       | has (hasCode "ThrottlingException" . hasStatus 400) e =
-          Just "throttling_exception"
+        Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
       | has (hasStatus 504) e = Just "gateway_timeout"
       | has (hasStatus 502) e = Just "bad_gateway"
@@ -152,18 +161,22 @@
       | has (hasStatus 509) e = Just "limit_exceeded"
       | otherwise = Nothing
 
--- | The shard iterator has expired and can no longer be used to retrieve stream records. A shard iterator expires 15 minutes after it is retrieved using the /GetShardIterator/ action.
+
+-- | The shard iterator has expired and can no longer be used to retrieve stream records. A shard iterator expires 15 minutes after it is retrieved using the @GetShardIterator@ action.
 --
 --
 _ExpiredIteratorException :: AsError a => Getting (First ServiceError) a ServiceError
-_ExpiredIteratorException = _ServiceError . hasCode "ExpiredIteratorException"
+_ExpiredIteratorException =
+  _MatchServiceError dynamoDBStreams "ExpiredIteratorException"
 
+
 -- | An error occurred on the server side.
 --
 --
 _InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError
-_InternalServerError = _ServiceError . hasCode "InternalServerError"
+_InternalServerError = _MatchServiceError dynamoDBStreams "InternalServerError"
 
+
 -- | The operation attempted to read past the oldest stream record in a shard.
 --
 --
@@ -171,23 +184,27 @@
 --
 --     * You request a shard iterator with a sequence number older than the trim point (24 hours).
 --
---     * You obtain a shard iterator, but before you use the iterator in a /GetRecords/ request, a stream record in the shard exceeds the 24 hour period and is trimmed. This causes the iterator to access a record that no longer exists.
+--     * You obtain a shard iterator, but before you use the iterator in a @GetRecords@ request, a stream record in the shard exceeds the 24 hour period and is trimmed. This causes the iterator to access a record that no longer exists.
 --
 --
 --
 _TrimmedDataAccessException :: AsError a => Getting (First ServiceError) a ServiceError
 _TrimmedDataAccessException =
-    _ServiceError . hasCode "TrimmedDataAccessException"
+  _MatchServiceError dynamoDBStreams "TrimmedDataAccessException"
 
+
 -- | The operation tried to access a nonexistent stream.
 --
 --
 _ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _ResourceNotFoundException =
-    _ServiceError . hasCode "ResourceNotFoundException"
+  _MatchServiceError dynamoDBStreams "ResourceNotFoundException"
 
+
 -- | Your request rate is too high. The AWS SDKs for DynamoDB automatically retry requests that receive this exception. Your request is eventually successful, unless your retry queue is too large to finish. Reduce the frequency of requests and use exponential backoff. For more information, go to <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#APIRetries Error Retries and Exponential Backoff> in the /Amazon DynamoDB Developer Guide/ .
 --
 --
 _LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
-_LimitExceededException = _ServiceError . hasCode "LimitExceededException"
+_LimitExceededException =
+  _MatchServiceError dynamoDBStreams "LimitExceededException"
+
diff --git a/gen/Network/AWS/DynamoDBStreams/Types/Product.hs b/gen/Network/AWS/DynamoDBStreams/Types/Product.hs
--- a/gen/Network/AWS/DynamoDBStreams/Types/Product.hs
+++ b/gen/Network/AWS/DynamoDBStreams/Types/Product.hs
@@ -9,17 +9,17 @@
 
 -- |
 -- Module      : Network.AWS.DynamoDBStreams.Types.Product
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Network.AWS.DynamoDBStreams.Types.Product where
 
-import           Network.AWS.DynamoDBStreams.Types.Sum
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
+import Network.AWS.DynamoDBStreams.Types.Sum
+import Network.AWS.Lens
+import Network.AWS.Prelude
 
 -- | Represents the data for an attribute. You can set one, and only one, of the elements.
 --
@@ -29,18 +29,19 @@
 --
 -- /See:/ 'attributeValue' smart constructor.
 data AttributeValue = AttributeValue'
-    { _avL    :: !(Maybe [AttributeValue])
-    , _avNS   :: !(Maybe [Text])
-    , _avM    :: !(Maybe (Map Text AttributeValue))
-    , _avNULL :: !(Maybe Bool)
-    , _avN    :: !(Maybe Text)
-    , _avBS   :: !(Maybe [Base64])
-    , _avB    :: !(Maybe Base64)
-    , _avSS   :: !(Maybe [Text])
-    , _avS    :: !(Maybe Text)
-    , _avBOOL :: !(Maybe Bool)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _avL    :: !(Maybe [AttributeValue])
+  , _avNS   :: !(Maybe [Text])
+  , _avM    :: !(Maybe (Map Text AttributeValue))
+  , _avNULL :: !(Maybe Bool)
+  , _avN    :: !(Maybe Text)
+  , _avBS   :: !(Maybe [Base64])
+  , _avB    :: !(Maybe Base64)
+  , _avSS   :: !(Maybe [Text])
+  , _avS    :: !(Maybe Text)
+  , _avBOOL :: !(Maybe Bool)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AttributeValue' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,19 +68,20 @@
 attributeValue
     :: AttributeValue
 attributeValue =
-    AttributeValue'
-    { _avL = Nothing
-    , _avNS = Nothing
-    , _avM = Nothing
-    , _avNULL = Nothing
-    , _avN = Nothing
-    , _avBS = Nothing
-    , _avB = Nothing
-    , _avSS = Nothing
-    , _avS = Nothing
-    , _avBOOL = Nothing
-    }
+  AttributeValue'
+  { _avL = Nothing
+  , _avNS = Nothing
+  , _avM = Nothing
+  , _avNULL = Nothing
+  , _avN = Nothing
+  , _avBS = Nothing
+  , _avB = Nothing
+  , _avSS = Nothing
+  , _avS = Nothing
+  , _avBOOL = Nothing
+  }
 
+
 -- | A List data type.
 avL :: Lens' AttributeValue [AttributeValue]
 avL = lens _avL (\ s a -> s{_avL = a}) . _Default . _Coerce;
@@ -135,22 +137,65 @@
                      <*> (x .:? "S")
                      <*> (x .:? "BOOL"))
 
-instance Hashable AttributeValue
+instance Hashable AttributeValue where
 
-instance NFData AttributeValue
+instance NFData AttributeValue where
 
+-- | Contains details about the type of identity that made the request.
+--
+--
+--
+-- /See:/ 'identity' smart constructor.
+data Identity = Identity'
+  { _iPrincipalId :: !(Maybe Text)
+  , _iType        :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Identity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iPrincipalId' - A unique identifier for the entity that made the call. For Time To Live, the principalId is "dynamodb.amazonaws.com".
+--
+-- * 'iType' - The type of the identity. For Time To Live, the type is "Service".
+identity
+    :: Identity
+identity = Identity' {_iPrincipalId = Nothing, _iType = Nothing}
+
+
+-- | A unique identifier for the entity that made the call. For Time To Live, the principalId is "dynamodb.amazonaws.com".
+iPrincipalId :: Lens' Identity (Maybe Text)
+iPrincipalId = lens _iPrincipalId (\ s a -> s{_iPrincipalId = a});
+
+-- | The type of the identity. For Time To Live, the type is "Service".
+iType :: Lens' Identity (Maybe Text)
+iType = lens _iType (\ s a -> s{_iType = a});
+
+instance FromJSON Identity where
+        parseJSON
+          = withObject "Identity"
+              (\ x ->
+                 Identity' <$>
+                   (x .:? "PrincipalId") <*> (x .:? "Type"))
+
+instance Hashable Identity where
+
+instance NFData Identity where
+
 -- | Represents /a single element/ of a key schema. A key schema specifies the attributes that make up the primary key of a table, or the key attributes of an index.
 --
 --
--- A /KeySchemaElement/ represents exactly one attribute of the primary key. For example, a simple primary key (partition key) would be represented by one /KeySchemaElement/ . A composite primary key (partition key and sort key) would require one /KeySchemaElement/ for the partition key, and another /KeySchemaElement/ for the sort key.
+-- A @KeySchemaElement@ represents exactly one attribute of the primary key. For example, a simple primary key (partition key) would be represented by one @KeySchemaElement@ . A composite primary key (partition key and sort key) would require one @KeySchemaElement@ for the partition key, and another @KeySchemaElement@ for the sort key.
 --
 --
 -- /See:/ 'keySchemaElement' smart constructor.
 data KeySchemaElement = KeySchemaElement'
-    { _kseAttributeName :: !Text
-    , _kseKeyType       :: !KeyType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _kseAttributeName :: !Text
+  , _kseKeyType       :: !KeyType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'KeySchemaElement' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -163,11 +208,10 @@
     -> KeyType -- ^ 'kseKeyType'
     -> KeySchemaElement
 keySchemaElement pAttributeName_ pKeyType_ =
-    KeySchemaElement'
-    { _kseAttributeName = pAttributeName_
-    , _kseKeyType = pKeyType_
-    }
+  KeySchemaElement'
+  {_kseAttributeName = pAttributeName_, _kseKeyType = pKeyType_}
 
+
 -- | The name of a key attribute.
 kseAttributeName :: Lens' KeySchemaElement Text
 kseAttributeName = lens _kseAttributeName (\ s a -> s{_kseAttributeName = a});
@@ -183,9 +227,9 @@
                  KeySchemaElement' <$>
                    (x .: "AttributeName") <*> (x .: "KeyType"))
 
-instance Hashable KeySchemaElement
+instance Hashable KeySchemaElement where
 
-instance NFData KeySchemaElement
+instance NFData KeySchemaElement where
 
 -- | A description of a unique event within a stream.
 --
@@ -193,42 +237,52 @@
 --
 -- /See:/ 'record' smart constructor.
 data Record = Record'
-    { _rEventVersion :: !(Maybe Text)
-    , _rDynamodb     :: !(Maybe StreamRecord)
-    , _rAwsRegion    :: !(Maybe Text)
-    , _rEventName    :: !(Maybe OperationType)
-    , _rEventSource  :: !(Maybe Text)
-    , _rEventId      :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rUserIdentity :: !(Maybe Identity)
+  , _rEventVersion :: !(Maybe Text)
+  , _rDynamodb     :: !(Maybe StreamRecord)
+  , _rAwsRegion    :: !(Maybe Text)
+  , _rEventName    :: !(Maybe OperationType)
+  , _rEventSource  :: !(Maybe Text)
+  , _rEventId      :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'Record' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rEventVersion' - The version number of the stream record format. This number is updated whenever the structure of /Record/ is modified. Client applications must not assume that /eventVersion/ will remain at a particular value, as this number is subject to change at any time. In general, /eventVersion/ will only increase as the low-level DynamoDB Streams API evolves.
+-- * 'rUserIdentity' - Items that are deleted by the Time to Live process after expiration have the following fields:      * Records[].userIdentity.type "Service"     * Records[].userIdentity.principalId "dynamodb.amazonaws.com"
 --
+-- * 'rEventVersion' - The version number of the stream record format. This number is updated whenever the structure of @Record@ is modified. Client applications must not assume that @eventVersion@ will remain at a particular value, as this number is subject to change at any time. In general, @eventVersion@ will only increase as the low-level DynamoDB Streams API evolves.
+--
 -- * 'rDynamodb' - The main body of the stream record, containing all of the DynamoDB-specific fields.
 --
--- * 'rAwsRegion' - The region in which the /GetRecords/ request was received.
+-- * 'rAwsRegion' - The region in which the @GetRecords@ request was received.
 --
 -- * 'rEventName' - The type of data modification that was performed on the DynamoDB table:     * @INSERT@ - a new item was added to the table.     * @MODIFY@ - one or more of an existing item's attributes were modified.     * @REMOVE@ - the item was deleted from the table
 --
--- * 'rEventSource' - The AWS service from which the stream record originated. For DynamoDB Streams, this is /aws:dynamodb/ .
+-- * 'rEventSource' - The AWS service from which the stream record originated. For DynamoDB Streams, this is @aws:dynamodb@ .
 --
 -- * 'rEventId' - A globally unique identifier for the event that was recorded in this stream record.
 record
     :: Record
 record =
-    Record'
-    { _rEventVersion = Nothing
-    , _rDynamodb = Nothing
-    , _rAwsRegion = Nothing
-    , _rEventName = Nothing
-    , _rEventSource = Nothing
-    , _rEventId = Nothing
-    }
+  Record'
+  { _rUserIdentity = Nothing
+  , _rEventVersion = Nothing
+  , _rDynamodb = Nothing
+  , _rAwsRegion = Nothing
+  , _rEventName = Nothing
+  , _rEventSource = Nothing
+  , _rEventId = Nothing
+  }
 
--- | The version number of the stream record format. This number is updated whenever the structure of /Record/ is modified. Client applications must not assume that /eventVersion/ will remain at a particular value, as this number is subject to change at any time. In general, /eventVersion/ will only increase as the low-level DynamoDB Streams API evolves.
+
+-- | Items that are deleted by the Time to Live process after expiration have the following fields:      * Records[].userIdentity.type "Service"     * Records[].userIdentity.principalId "dynamodb.amazonaws.com"
+rUserIdentity :: Lens' Record (Maybe Identity)
+rUserIdentity = lens _rUserIdentity (\ s a -> s{_rUserIdentity = a});
+
+-- | The version number of the stream record format. This number is updated whenever the structure of @Record@ is modified. Client applications must not assume that @eventVersion@ will remain at a particular value, as this number is subject to change at any time. In general, @eventVersion@ will only increase as the low-level DynamoDB Streams API evolves.
 rEventVersion :: Lens' Record (Maybe Text)
 rEventVersion = lens _rEventVersion (\ s a -> s{_rEventVersion = a});
 
@@ -236,7 +290,7 @@
 rDynamodb :: Lens' Record (Maybe StreamRecord)
 rDynamodb = lens _rDynamodb (\ s a -> s{_rDynamodb = a});
 
--- | The region in which the /GetRecords/ request was received.
+-- | The region in which the @GetRecords@ request was received.
 rAwsRegion :: Lens' Record (Maybe Text)
 rAwsRegion = lens _rAwsRegion (\ s a -> s{_rAwsRegion = a});
 
@@ -244,7 +298,7 @@
 rEventName :: Lens' Record (Maybe OperationType)
 rEventName = lens _rEventName (\ s a -> s{_rEventName = a});
 
--- | The AWS service from which the stream record originated. For DynamoDB Streams, this is /aws:dynamodb/ .
+-- | The AWS service from which the stream record originated. For DynamoDB Streams, this is @aws:dynamodb@ .
 rEventSource :: Lens' Record (Maybe Text)
 rEventSource = lens _rEventSource (\ s a -> s{_rEventSource = a});
 
@@ -257,15 +311,16 @@
           = withObject "Record"
               (\ x ->
                  Record' <$>
-                   (x .:? "eventVersion") <*> (x .:? "dynamodb") <*>
-                     (x .:? "awsRegion")
+                   (x .:? "userIdentity") <*> (x .:? "eventVersion") <*>
+                     (x .:? "dynamodb")
+                     <*> (x .:? "awsRegion")
                      <*> (x .:? "eventName")
                      <*> (x .:? "eventSource")
                      <*> (x .:? "eventID"))
 
-instance Hashable Record
+instance Hashable Record where
 
-instance NFData Record
+instance NFData Record where
 
 -- | The beginning and ending sequence numbers for the stream records contained within a shard.
 --
@@ -273,10 +328,11 @@
 --
 -- /See:/ 'sequenceNumberRange' smart constructor.
 data SequenceNumberRange = SequenceNumberRange'
-    { _snrStartingSequenceNumber :: !(Maybe Text)
-    , _snrEndingSequenceNumber   :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _snrStartingSequenceNumber :: !(Maybe Text)
+  , _snrEndingSequenceNumber   :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SequenceNumberRange' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -287,11 +343,10 @@
 sequenceNumberRange
     :: SequenceNumberRange
 sequenceNumberRange =
-    SequenceNumberRange'
-    { _snrStartingSequenceNumber = Nothing
-    , _snrEndingSequenceNumber = Nothing
-    }
+  SequenceNumberRange'
+  {_snrStartingSequenceNumber = Nothing, _snrEndingSequenceNumber = Nothing}
 
+
 -- | The first sequence number.
 snrStartingSequenceNumber :: Lens' SequenceNumberRange (Maybe Text)
 snrStartingSequenceNumber = lens _snrStartingSequenceNumber (\ s a -> s{_snrStartingSequenceNumber = a});
@@ -308,9 +363,9 @@
                    (x .:? "StartingSequenceNumber") <*>
                      (x .:? "EndingSequenceNumber"))
 
-instance Hashable SequenceNumberRange
+instance Hashable SequenceNumberRange where
 
-instance NFData SequenceNumberRange
+instance NFData SequenceNumberRange where
 
 -- | A uniquely identified group of stream records within a stream.
 --
@@ -318,11 +373,12 @@
 --
 -- /See:/ 'shard' smart constructor.
 data Shard = Shard'
-    { _sParentShardId       :: !(Maybe Text)
-    , _sSequenceNumberRange :: !(Maybe SequenceNumberRange)
-    , _sShardId             :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _sParentShardId       :: !(Maybe Text)
+  , _sSequenceNumberRange :: !(Maybe SequenceNumberRange)
+  , _sShardId             :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'Shard' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -335,12 +391,13 @@
 shard
     :: Shard
 shard =
-    Shard'
-    { _sParentShardId = Nothing
-    , _sSequenceNumberRange = Nothing
-    , _sShardId = Nothing
-    }
+  Shard'
+  { _sParentShardId = Nothing
+  , _sSequenceNumberRange = Nothing
+  , _sShardId = Nothing
+  }
 
+
 -- | The shard ID of the current shard's parent.
 sParentShardId :: Lens' Shard (Maybe Text)
 sParentShardId = lens _sParentShardId (\ s a -> s{_sParentShardId = a});
@@ -362,9 +419,9 @@
                      (x .:? "SequenceNumberRange")
                      <*> (x .:? "ShardId"))
 
-instance Hashable Shard
+instance Hashable Shard where
 
-instance NFData Shard
+instance NFData Shard where
 
 -- | Represents all of the data describing a particular stream.
 --
@@ -372,16 +429,17 @@
 --
 -- /See:/ 'stream' smart constructor.
 data Stream = Stream'
-    { _sStreamLabel :: !(Maybe Text)
-    , _sStreamARN   :: !(Maybe Text)
-    , _sTableName   :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _sStreamLabel :: !(Maybe Text)
+  , _sStreamARN   :: !(Maybe Text)
+  , _sTableName   :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'Stream' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sStreamLabel' - A timestamp, in ISO 8601 format, for this stream. Note that /LatestStreamLabel/ is not a unique identifier for the stream, because it is possible that a stream from another table might have the same timestamp. However, the combination of the following three elements is guaranteed to be unique:     * the AWS customer ID.     * the table name     * the /StreamLabel/
+-- * 'sStreamLabel' - A timestamp, in ISO 8601 format, for this stream. Note that @LatestStreamLabel@ is not a unique identifier for the stream, because it is possible that a stream from another table might have the same timestamp. However, the combination of the following three elements is guaranteed to be unique:     * the AWS customer ID.     * the table name     * the @StreamLabel@
 --
 -- * 'sStreamARN' - The Amazon Resource Name (ARN) for the stream.
 --
@@ -389,13 +447,11 @@
 stream
     :: Stream
 stream =
-    Stream'
-    { _sStreamLabel = Nothing
-    , _sStreamARN = Nothing
-    , _sTableName = Nothing
-    }
+  Stream'
+  {_sStreamLabel = Nothing, _sStreamARN = Nothing, _sTableName = Nothing}
 
--- | A timestamp, in ISO 8601 format, for this stream. Note that /LatestStreamLabel/ is not a unique identifier for the stream, because it is possible that a stream from another table might have the same timestamp. However, the combination of the following three elements is guaranteed to be unique:     * the AWS customer ID.     * the table name     * the /StreamLabel/
+
+-- | A timestamp, in ISO 8601 format, for this stream. Note that @LatestStreamLabel@ is not a unique identifier for the stream, because it is possible that a stream from another table might have the same timestamp. However, the combination of the following three elements is guaranteed to be unique:     * the AWS customer ID.     * the table name     * the @StreamLabel@
 sStreamLabel :: Lens' Stream (Maybe Text)
 sStreamLabel = lens _sStreamLabel (\ s a -> s{_sStreamLabel = a});
 
@@ -415,9 +471,9 @@
                    (x .:? "StreamLabel") <*> (x .:? "StreamArn") <*>
                      (x .:? "TableName"))
 
-instance Hashable Stream
+instance Hashable Stream where
 
-instance NFData Stream
+instance NFData Stream where
 
 -- | Represents all of the data describing a particular stream.
 --
@@ -425,24 +481,25 @@
 --
 -- /See:/ 'streamDescription' smart constructor.
 data StreamDescription = StreamDescription'
-    { _sdLastEvaluatedShardId    :: !(Maybe Text)
-    , _sdStreamLabel             :: !(Maybe Text)
-    , _sdStreamStatus            :: !(Maybe StreamStatus)
-    , _sdKeySchema               :: !(Maybe (List1 KeySchemaElement))
-    , _sdStreamViewType          :: !(Maybe StreamViewType)
-    , _sdStreamARN               :: !(Maybe Text)
-    , _sdShards                  :: !(Maybe [Shard])
-    , _sdTableName               :: !(Maybe Text)
-    , _sdCreationRequestDateTime :: !(Maybe POSIX)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _sdLastEvaluatedShardId    :: !(Maybe Text)
+  , _sdStreamLabel             :: !(Maybe Text)
+  , _sdStreamStatus            :: !(Maybe StreamStatus)
+  , _sdKeySchema               :: !(Maybe (List1 KeySchemaElement))
+  , _sdStreamViewType          :: !(Maybe StreamViewType)
+  , _sdStreamARN               :: !(Maybe Text)
+  , _sdShards                  :: !(Maybe [Shard])
+  , _sdTableName               :: !(Maybe Text)
+  , _sdCreationRequestDateTime :: !(Maybe POSIX)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StreamDescription' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'sdLastEvaluatedShardId' - The shard ID of the item where the operation stopped, inclusive of the previous result set. Use this value to start a new operation, excluding this value in the new request. If @LastEvaluatedShardId@ is empty, then the "last page" of results has been processed and there is currently no more data to be retrieved. If @LastEvaluatedShardId@ is not empty, it does not necessarily mean that there is more data in the result set. The only way to know when you have reached the end of the result set is when @LastEvaluatedShardId@ is empty.
 --
--- * 'sdStreamLabel' - A timestamp, in ISO 8601 format, for this stream. Note that /LatestStreamLabel/ is not a unique identifier for the stream, because it is possible that a stream from another table might have the same timestamp. However, the combination of the following three elements is guaranteed to be unique:     * the AWS customer ID.     * the table name     * the /StreamLabel/
+-- * 'sdStreamLabel' - A timestamp, in ISO 8601 format, for this stream. Note that @LatestStreamLabel@ is not a unique identifier for the stream, because it is possible that a stream from another table might have the same timestamp. However, the combination of the following three elements is guaranteed to be unique:     * the AWS customer ID.     * the table name     * the @StreamLabel@
 --
 -- * 'sdStreamStatus' - Indicates the current status of the stream:     * @ENABLING@ - Streams is currently being enabled on the DynamoDB table.     * @ENABLED@ - the stream is enabled.     * @DISABLING@ - Streams is currently being disabled on the DynamoDB table.     * @DISABLED@ - the stream is disabled.
 --
@@ -460,23 +517,24 @@
 streamDescription
     :: StreamDescription
 streamDescription =
-    StreamDescription'
-    { _sdLastEvaluatedShardId = Nothing
-    , _sdStreamLabel = Nothing
-    , _sdStreamStatus = Nothing
-    , _sdKeySchema = Nothing
-    , _sdStreamViewType = Nothing
-    , _sdStreamARN = Nothing
-    , _sdShards = Nothing
-    , _sdTableName = Nothing
-    , _sdCreationRequestDateTime = Nothing
-    }
+  StreamDescription'
+  { _sdLastEvaluatedShardId = Nothing
+  , _sdStreamLabel = Nothing
+  , _sdStreamStatus = Nothing
+  , _sdKeySchema = Nothing
+  , _sdStreamViewType = Nothing
+  , _sdStreamARN = Nothing
+  , _sdShards = Nothing
+  , _sdTableName = Nothing
+  , _sdCreationRequestDateTime = Nothing
+  }
 
+
 -- | The shard ID of the item where the operation stopped, inclusive of the previous result set. Use this value to start a new operation, excluding this value in the new request. If @LastEvaluatedShardId@ is empty, then the "last page" of results has been processed and there is currently no more data to be retrieved. If @LastEvaluatedShardId@ is not empty, it does not necessarily mean that there is more data in the result set. The only way to know when you have reached the end of the result set is when @LastEvaluatedShardId@ is empty.
 sdLastEvaluatedShardId :: Lens' StreamDescription (Maybe Text)
 sdLastEvaluatedShardId = lens _sdLastEvaluatedShardId (\ s a -> s{_sdLastEvaluatedShardId = a});
 
--- | A timestamp, in ISO 8601 format, for this stream. Note that /LatestStreamLabel/ is not a unique identifier for the stream, because it is possible that a stream from another table might have the same timestamp. However, the combination of the following three elements is guaranteed to be unique:     * the AWS customer ID.     * the table name     * the /StreamLabel/
+-- | A timestamp, in ISO 8601 format, for this stream. Note that @LatestStreamLabel@ is not a unique identifier for the stream, because it is possible that a stream from another table might have the same timestamp. However, the combination of the following three elements is guaranteed to be unique:     * the AWS customer ID.     * the table name     * the @StreamLabel@
 sdStreamLabel :: Lens' StreamDescription (Maybe Text)
 sdStreamLabel = lens _sdStreamLabel (\ s a -> s{_sdStreamLabel = a});
 
@@ -523,9 +581,9 @@
                      <*> (x .:? "TableName")
                      <*> (x .:? "CreationRequestDateTime"))
 
-instance Hashable StreamDescription
+instance Hashable StreamDescription where
 
-instance NFData StreamDescription
+instance NFData StreamDescription where
 
 -- | A description of a single data modification that was performed on an item in a DynamoDB table.
 --
@@ -533,15 +591,16 @@
 --
 -- /See:/ 'streamRecord' smart constructor.
 data StreamRecord = StreamRecord'
-    { _srSizeBytes                   :: !(Maybe Nat)
-    , _srSequenceNumber              :: !(Maybe Text)
-    , _srApproximateCreationDateTime :: !(Maybe POSIX)
-    , _srStreamViewType              :: !(Maybe StreamViewType)
-    , _srKeys                        :: !(Maybe (Map Text AttributeValue))
-    , _srOldImage                    :: !(Maybe (Map Text AttributeValue))
-    , _srNewImage                    :: !(Maybe (Map Text AttributeValue))
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _srSizeBytes                   :: !(Maybe Nat)
+  , _srSequenceNumber              :: !(Maybe Text)
+  , _srApproximateCreationDateTime :: !(Maybe POSIX)
+  , _srStreamViewType              :: !(Maybe StreamViewType)
+  , _srKeys                        :: !(Maybe (Map Text AttributeValue))
+  , _srOldImage                    :: !(Maybe (Map Text AttributeValue))
+  , _srNewImage                    :: !(Maybe (Map Text AttributeValue))
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StreamRecord' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -562,16 +621,17 @@
 streamRecord
     :: StreamRecord
 streamRecord =
-    StreamRecord'
-    { _srSizeBytes = Nothing
-    , _srSequenceNumber = Nothing
-    , _srApproximateCreationDateTime = Nothing
-    , _srStreamViewType = Nothing
-    , _srKeys = Nothing
-    , _srOldImage = Nothing
-    , _srNewImage = Nothing
-    }
+  StreamRecord'
+  { _srSizeBytes = Nothing
+  , _srSequenceNumber = Nothing
+  , _srApproximateCreationDateTime = Nothing
+  , _srStreamViewType = Nothing
+  , _srKeys = Nothing
+  , _srOldImage = Nothing
+  , _srNewImage = Nothing
+  }
 
+
 -- | The size of the stream record, in bytes.
 srSizeBytes :: Lens' StreamRecord (Maybe Natural)
 srSizeBytes = lens _srSizeBytes (\ s a -> s{_srSizeBytes = a}) . mapping _Nat;
@@ -612,6 +672,6 @@
                      <*> (x .:? "OldImage" .!= mempty)
                      <*> (x .:? "NewImage" .!= mempty))
 
-instance Hashable StreamRecord
+instance Hashable StreamRecord where
 
-instance NFData StreamRecord
+instance NFData StreamRecord where
diff --git a/gen/Network/AWS/DynamoDBStreams/Types/Sum.hs b/gen/Network/AWS/DynamoDBStreams/Types/Sum.hs
--- a/gen/Network/AWS/DynamoDBStreams/Types/Sum.hs
+++ b/gen/Network/AWS/DynamoDBStreams/Types/Sum.hs
@@ -9,21 +9,22 @@
 
 -- |
 -- Module      : Network.AWS.DynamoDBStreams.Types.Sum
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Network.AWS.DynamoDBStreams.Types.Sum where
 
-import           Network.AWS.Prelude
+import Network.AWS.Prelude
 
 data KeyType
-    = Hash
-    | Range
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Hash
+  | Range
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText KeyType where
     parser = takeLowerText >>= \case
         "hash" -> pure Hash
@@ -46,11 +47,12 @@
     parseJSON = parseJSONText "KeyType"
 
 data OperationType
-    = Insert
-    | Modify
-    | Remove
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Insert
+  | Modify
+  | Remove
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText OperationType where
     parser = takeLowerText >>= \case
         "insert" -> pure Insert
@@ -75,12 +77,13 @@
     parseJSON = parseJSONText "OperationType"
 
 data ShardIteratorType
-    = AfterSequenceNumber
-    | AtSequenceNumber
-    | Latest
-    | TrimHorizon
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = AfterSequenceNumber
+  | AtSequenceNumber
+  | Latest
+  | TrimHorizon
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText ShardIteratorType where
     parser = takeLowerText >>= \case
         "after_sequence_number" -> pure AfterSequenceNumber
@@ -107,12 +110,13 @@
     toJSON = toJSONText
 
 data StreamStatus
-    = Disabled
-    | Disabling
-    | Enabled
-    | Enabling
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Disabled
+  | Disabling
+  | Enabled
+  | Enabling
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText StreamStatus where
     parser = takeLowerText >>= \case
         "disabled" -> pure Disabled
@@ -139,11 +143,12 @@
     parseJSON = parseJSONText "StreamStatus"
 
 data StreamViewType
-    = KeysOnly
-    | NewAndOldImages
-    | NewImage
-    | OldImage
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = KeysOnly
+  | NewAndOldImages
+  | NewImage
+  | OldImage
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
 
 instance FromText StreamViewType where
     parser = takeLowerText >>= \case
diff --git a/gen/Network/AWS/DynamoDBStreams/Waiters.hs b/gen/Network/AWS/DynamoDBStreams/Waiters.hs
--- a/gen/Network/AWS/DynamoDBStreams/Waiters.hs
+++ b/gen/Network/AWS/DynamoDBStreams/Waiters.hs
@@ -7,15 +7,15 @@
 
 -- |
 -- Module      : Network.AWS.DynamoDBStreams.Waiters
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Network.AWS.DynamoDBStreams.Waiters where
 
-import           Network.AWS.DynamoDBStreams.Types
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Waiter
+import Network.AWS.DynamoDBStreams.Types
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,9 +2,9 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
diff --git a/test/Test/AWS/Gen/DynamoDBStreams.hs b/test/Test/AWS/Gen/DynamoDBStreams.hs
--- a/test/Test/AWS/Gen/DynamoDBStreams.hs
+++ b/test/Test/AWS/Gen/DynamoDBStreams.hs
@@ -5,20 +5,20 @@
 
 -- |
 -- Module      : Test.AWS.Gen.DynamoDBStreams
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Test.AWS.Gen.DynamoDBStreams where
 
 import Data.Proxy
+import Network.AWS.DynamoDBStreams
+import Test.AWS.DynamoDBStreams.Internal
 import Test.AWS.Fixture
 import Test.AWS.Prelude
 import Test.Tasty
-import Network.AWS.DynamoDBStreams
-import Test.AWS.DynamoDBStreams.Internal
 
 -- Auto-generated: the actual test selection needs to be manually placed into
 -- the top-level so that real test data can be incrementally added.
