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
@@ -26,7 +26,7 @@
 identified as the source for the definitive version of your content.
 
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-cloudfront)
-and the [AWS API Reference](http://docs.aws.amazon.com/AmazonCloudFront/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-cloudfront.cabal b/amazonka-cloudfront.cabal
--- a/amazonka-cloudfront.cabal
+++ b/amazonka-cloudfront.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-cloudfront
-version:               1.3.7
+version:               1.4.0
 synopsis:              Amazon CloudFront 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
@@ -36,7 +36,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.CloudFront" and the <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/Welcome.html AWS API Reference>
+    See "Network.AWS.CloudFront" or <https://aws.amazon.com/documentation/ the AWS Documentation>
     to get started.
 
 source-repository head
@@ -81,7 +81,7 @@
         , Network.AWS.CloudFront.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.7.*
+          amazonka-core == 1.4.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-cloudfront-test
@@ -101,9 +101,9 @@
         , Test.AWS.CloudFront.Internal
 
     build-depends:
-          amazonka-core == 1.3.7.*
-        , amazonka-test == 1.3.7.*
-        , amazonka-cloudfront == 1.3.7.*
+          amazonka-core == 1.4.0.*
+        , amazonka-test == 1.4.0.*
+        , amazonka-cloudfront == 1.4.0.*
         , base
         , bytestring
         , tasty
diff --git a/gen/Network/AWS/CloudFront.hs b/gen/Network/AWS/CloudFront.hs
--- a/gen/Network/AWS/CloudFront.hs
+++ b/gen/Network/AWS/CloudFront.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -22,8 +22,6 @@
 -- currently in that edge location, CloudFront retrieves it from an Amazon
 -- S3 bucket or an HTTP server (for example, a web server) that you have
 -- identified as the source for the definitive version of your content.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.CloudFront
     (
     -- * Service Configuration
@@ -32,6 +30,9 @@
     -- * Errors
     -- $errors
 
+    -- ** TooManyOriginCustomHeaders
+    , _TooManyOriginCustomHeaders
+
     -- ** InvalidErrorCode
     , _InvalidErrorCode
 
@@ -283,6 +284,9 @@
     -- ** PriceClass
     , PriceClass (..)
 
+    -- ** SSLProtocol
+    , SSLProtocol (..)
+
     -- ** SSLSupportMethod
     , SSLSupportMethod (..)
 
@@ -392,9 +396,16 @@
     , cerItems
     , cerQuantity
 
+    -- ** CustomHeaders
+    , CustomHeaders
+    , customHeaders
+    , chItems
+    , chQuantity
+
     -- ** CustomOriginConfig
     , CustomOriginConfig
     , customOriginConfig
+    , cocOriginSSLProtocols
     , cocHTTPPort
     , cocHTTPSPort
     , cocOriginProtocolPolicy
@@ -539,12 +550,25 @@
     -- ** Origin
     , Origin
     , origin
+    , oCustomHeaders
     , oCustomOriginConfig
     , oS3OriginConfig
     , oOriginPath
     , oId
     , oDomainName
 
+    -- ** OriginCustomHeader
+    , OriginCustomHeader
+    , originCustomHeader
+    , ochHeaderName
+    , ochHeaderValue
+
+    -- ** OriginSSLProtocols
+    , OriginSSLProtocols
+    , originSSLProtocols
+    , ospQuantity
+    , ospItems
+
     -- ** Origins
     , Origins
     , origins
@@ -643,6 +667,7 @@
     , ViewerCertificate
     , viewerCertificate
     , vcSSLSupportMethod
+    , vcACMCertificateARN
     , vcCertificateSource
     , vcMinimumProtocolVersion
     , vcCertificate
diff --git a/gen/Network/AWS/CloudFront/CreateCloudFrontOriginAccessIdentity.hs b/gen/Network/AWS/CloudFront/CreateCloudFrontOriginAccessIdentity.hs
--- a/gen/Network/AWS/CloudFront/CreateCloudFrontOriginAccessIdentity.hs
+++ b/gen/Network/AWS/CloudFront/CreateCloudFrontOriginAccessIdentity.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.CreateCloudFrontOriginAccessIdentity
--- 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)
 --
 -- Create a new origin access identity.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/CreateCloudFrontOriginAccessIdentity.html AWS API Reference> for CreateCloudFrontOriginAccessIdentity.
 module Network.AWS.CloudFront.CreateCloudFrontOriginAccessIdentity
     (
     -- * Creating a Request
@@ -83,11 +81,14 @@
                      (parseXML x)
                      <*> (pure (fromEnum s)))
 
+instance Hashable
+         CreateCloudFrontOriginAccessIdentity
+
 instance ToElement
          CreateCloudFrontOriginAccessIdentity where
         toElement
           = mkElement
-              "{http://cloudfront.amazonaws.com/doc/2015-09-17/}CloudFrontOriginAccessIdentityConfig"
+              "{http://cloudfront.amazonaws.com/doc/2016-01-28/}CloudFrontOriginAccessIdentityConfig"
               .
               _ccfoaiCloudFrontOriginAccessIdentityConfig
 
@@ -99,7 +100,7 @@
          where
         toPath
           = const
-              "/2015-09-17/origin-access-identity/cloudfront"
+              "/2016-01-28/origin-access-identity/cloudfront"
 
 instance ToQuery CreateCloudFrontOriginAccessIdentity
          where
diff --git a/gen/Network/AWS/CloudFront/CreateDistribution.hs b/gen/Network/AWS/CloudFront/CreateDistribution.hs
--- a/gen/Network/AWS/CloudFront/CreateDistribution.hs
+++ b/gen/Network/AWS/CloudFront/CreateDistribution.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.CreateDistribution
--- 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)
 --
 -- Create a new distribution.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/CreateDistribution.html AWS API Reference> for CreateDistribution.
 module Network.AWS.CloudFront.CreateDistribution
     (
     -- * Creating a Request
@@ -82,10 +80,12 @@
                      (h .#? "Location")
                      <*> (pure (fromEnum s)))
 
+instance Hashable CreateDistribution
+
 instance ToElement CreateDistribution where
         toElement
           = mkElement
-              "{http://cloudfront.amazonaws.com/doc/2015-09-17/}DistributionConfig"
+              "{http://cloudfront.amazonaws.com/doc/2016-01-28/}DistributionConfig"
               .
               _cdDistributionConfig
 
@@ -93,7 +93,7 @@
         toHeaders = const mempty
 
 instance ToPath CreateDistribution where
-        toPath = const "/2015-09-17/distribution"
+        toPath = const "/2016-01-28/distribution"
 
 instance ToQuery CreateDistribution where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/CreateInvalidation.hs b/gen/Network/AWS/CloudFront/CreateInvalidation.hs
--- a/gen/Network/AWS/CloudFront/CreateInvalidation.hs
+++ b/gen/Network/AWS/CloudFront/CreateInvalidation.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.CreateInvalidation
--- 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)
 --
 -- Create a new invalidation.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/CreateInvalidation.html AWS API Reference> for CreateInvalidation.
 module Network.AWS.CloudFront.CreateInvalidation
     (
     -- * Creating a Request
@@ -90,10 +88,12 @@
                    (parseXML x) <*> (h .#? "Location") <*>
                      (pure (fromEnum s)))
 
+instance Hashable CreateInvalidation
+
 instance ToElement CreateInvalidation where
         toElement
           = mkElement
-              "{http://cloudfront.amazonaws.com/doc/2015-09-17/}InvalidationBatch"
+              "{http://cloudfront.amazonaws.com/doc/2016-01-28/}InvalidationBatch"
               .
               _ciInvalidationBatch
 
@@ -103,7 +103,7 @@
 instance ToPath CreateInvalidation where
         toPath CreateInvalidation'{..}
           = mconcat
-              ["/2015-09-17/distribution/", toBS _ciDistributionId,
+              ["/2016-01-28/distribution/", toBS _ciDistributionId,
                "/invalidation"]
 
 instance ToQuery CreateInvalidation where
diff --git a/gen/Network/AWS/CloudFront/CreateStreamingDistribution.hs b/gen/Network/AWS/CloudFront/CreateStreamingDistribution.hs
--- a/gen/Network/AWS/CloudFront/CreateStreamingDistribution.hs
+++ b/gen/Network/AWS/CloudFront/CreateStreamingDistribution.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.CreateStreamingDistribution
--- 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)
 --
 -- Create a new streaming distribution.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/CreateStreamingDistribution.html AWS API Reference> for CreateStreamingDistribution.
 module Network.AWS.CloudFront.CreateStreamingDistribution
     (
     -- * Creating a Request
@@ -82,10 +80,12 @@
                      (parseXML x)
                      <*> (pure (fromEnum s)))
 
+instance Hashable CreateStreamingDistribution
+
 instance ToElement CreateStreamingDistribution where
         toElement
           = mkElement
-              "{http://cloudfront.amazonaws.com/doc/2015-09-17/}StreamingDistributionConfig"
+              "{http://cloudfront.amazonaws.com/doc/2016-01-28/}StreamingDistributionConfig"
               .
               _csdStreamingDistributionConfig
 
@@ -93,7 +93,7 @@
         toHeaders = const mempty
 
 instance ToPath CreateStreamingDistribution where
-        toPath = const "/2015-09-17/streaming-distribution"
+        toPath = const "/2016-01-28/streaming-distribution"
 
 instance ToQuery CreateStreamingDistribution where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/DeleteCloudFrontOriginAccessIdentity.hs b/gen/Network/AWS/CloudFront/DeleteCloudFrontOriginAccessIdentity.hs
--- a/gen/Network/AWS/CloudFront/DeleteCloudFrontOriginAccessIdentity.hs
+++ b/gen/Network/AWS/CloudFront/DeleteCloudFrontOriginAccessIdentity.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.DeleteCloudFrontOriginAccessIdentity
--- 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)
 --
 -- Delete an origin access identity.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/DeleteCloudFrontOriginAccessIdentity.html AWS API Reference> for DeleteCloudFrontOriginAccessIdentity.
 module Network.AWS.CloudFront.DeleteCloudFrontOriginAccessIdentity
     (
     -- * Creating a Request
@@ -84,6 +82,9 @@
           = receiveNull
               DeleteCloudFrontOriginAccessIdentityResponse'
 
+instance Hashable
+         DeleteCloudFrontOriginAccessIdentity
+
 instance ToHeaders
          DeleteCloudFrontOriginAccessIdentity where
         toHeaders DeleteCloudFrontOriginAccessIdentity'{..}
@@ -93,7 +94,7 @@
          where
         toPath DeleteCloudFrontOriginAccessIdentity'{..}
           = mconcat
-              ["/2015-09-17/origin-access-identity/cloudfront/",
+              ["/2016-01-28/origin-access-identity/cloudfront/",
                toBS _dcfoaiId]
 
 instance ToQuery DeleteCloudFrontOriginAccessIdentity
diff --git a/gen/Network/AWS/CloudFront/DeleteDistribution.hs b/gen/Network/AWS/CloudFront/DeleteDistribution.hs
--- a/gen/Network/AWS/CloudFront/DeleteDistribution.hs
+++ b/gen/Network/AWS/CloudFront/DeleteDistribution.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.DeleteDistribution
--- 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)
 --
 -- Delete a distribution.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/DeleteDistribution.html AWS API Reference> for DeleteDistribution.
 module Network.AWS.CloudFront.DeleteDistribution
     (
     -- * Creating a Request
@@ -81,13 +79,15 @@
         request = delete cloudFront
         response = receiveNull DeleteDistributionResponse'
 
+instance Hashable DeleteDistribution
+
 instance ToHeaders DeleteDistribution where
         toHeaders DeleteDistribution'{..}
           = mconcat ["If-Match" =# _ddIfMatch]
 
 instance ToPath DeleteDistribution where
         toPath DeleteDistribution'{..}
-          = mconcat ["/2015-09-17/distribution/", toBS _ddId]
+          = mconcat ["/2016-01-28/distribution/", toBS _ddId]
 
 instance ToQuery DeleteDistribution where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/DeleteStreamingDistribution.hs b/gen/Network/AWS/CloudFront/DeleteStreamingDistribution.hs
--- a/gen/Network/AWS/CloudFront/DeleteStreamingDistribution.hs
+++ b/gen/Network/AWS/CloudFront/DeleteStreamingDistribution.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.DeleteStreamingDistribution
--- 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)
 --
 -- Delete a streaming distribution.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/DeleteStreamingDistribution.html AWS API Reference> for DeleteStreamingDistribution.
 module Network.AWS.CloudFront.DeleteStreamingDistribution
     (
     -- * Creating a Request
@@ -82,6 +80,8 @@
         response
           = receiveNull DeleteStreamingDistributionResponse'
 
+instance Hashable DeleteStreamingDistribution
+
 instance ToHeaders DeleteStreamingDistribution where
         toHeaders DeleteStreamingDistribution'{..}
           = mconcat ["If-Match" =# _dsdIfMatch]
@@ -89,7 +89,7 @@
 instance ToPath DeleteStreamingDistribution where
         toPath DeleteStreamingDistribution'{..}
           = mconcat
-              ["/2015-09-17/streaming-distribution/", toBS _dsdId]
+              ["/2016-01-28/streaming-distribution/", toBS _dsdId]
 
 instance ToQuery DeleteStreamingDistribution where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentity.hs b/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentity.hs
--- a/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentity.hs
+++ b/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentity.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.GetCloudFrontOriginAccessIdentity
--- 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)
 --
 -- Get the information about an origin access identity.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/GetCloudFrontOriginAccessIdentity.html AWS API Reference> for GetCloudFrontOriginAccessIdentity.
 module Network.AWS.CloudFront.GetCloudFrontOriginAccessIdentity
     (
     -- * Creating a Request
@@ -81,6 +79,8 @@
                    (h .#? "ETag") <*> (parseXML x) <*>
                      (pure (fromEnum s)))
 
+instance Hashable GetCloudFrontOriginAccessIdentity
+
 instance ToHeaders GetCloudFrontOriginAccessIdentity
          where
         toHeaders = const mempty
@@ -89,7 +89,7 @@
          where
         toPath GetCloudFrontOriginAccessIdentity'{..}
           = mconcat
-              ["/2015-09-17/origin-access-identity/cloudfront/",
+              ["/2016-01-28/origin-access-identity/cloudfront/",
                toBS _gcfoaiId]
 
 instance ToQuery GetCloudFrontOriginAccessIdentity
diff --git a/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentityConfig.hs b/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentityConfig.hs
--- a/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentityConfig.hs
+++ b/gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentityConfig.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.GetCloudFrontOriginAccessIdentityConfig
--- 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)
 --
 -- Get the configuration information about an origin access identity.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/GetCloudFrontOriginAccessIdentityConfig.html AWS API Reference> for GetCloudFrontOriginAccessIdentityConfig.
 module Network.AWS.CloudFront.GetCloudFrontOriginAccessIdentityConfig
     (
     -- * Creating a Request
@@ -81,6 +79,9 @@
                    (parseXML x) <*> (h .#? "ETag") <*>
                      (pure (fromEnum s)))
 
+instance Hashable
+         GetCloudFrontOriginAccessIdentityConfig
+
 instance ToHeaders
          GetCloudFrontOriginAccessIdentityConfig where
         toHeaders = const mempty
@@ -89,7 +90,7 @@
          GetCloudFrontOriginAccessIdentityConfig where
         toPath GetCloudFrontOriginAccessIdentityConfig'{..}
           = mconcat
-              ["/2015-09-17/origin-access-identity/cloudfront/",
+              ["/2016-01-28/origin-access-identity/cloudfront/",
                toBS _gcfoaicId, "/config"]
 
 instance ToQuery
diff --git a/gen/Network/AWS/CloudFront/GetDistribution.hs b/gen/Network/AWS/CloudFront/GetDistribution.hs
--- a/gen/Network/AWS/CloudFront/GetDistribution.hs
+++ b/gen/Network/AWS/CloudFront/GetDistribution.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.GetDistribution
--- 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)
 --
 -- Get the information about a distribution.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/GetDistribution.html AWS API Reference> for GetDistribution.
 module Network.AWS.CloudFront.GetDistribution
     (
     -- * Creating a Request
@@ -79,12 +77,14 @@
                    (h .#? "ETag") <*> (parseXML x) <*>
                      (pure (fromEnum s)))
 
+instance Hashable GetDistribution
+
 instance ToHeaders GetDistribution where
         toHeaders = const mempty
 
 instance ToPath GetDistribution where
         toPath GetDistribution'{..}
-          = mconcat ["/2015-09-17/distribution/", toBS _gdId]
+          = mconcat ["/2016-01-28/distribution/", toBS _gdId]
 
 instance ToQuery GetDistribution where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/GetDistributionConfig.hs b/gen/Network/AWS/CloudFront/GetDistributionConfig.hs
--- a/gen/Network/AWS/CloudFront/GetDistributionConfig.hs
+++ b/gen/Network/AWS/CloudFront/GetDistributionConfig.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.GetDistributionConfig
--- 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)
 --
 -- Get the configuration information about a distribution.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/GetDistributionConfig.html AWS API Reference> for GetDistributionConfig.
 module Network.AWS.CloudFront.GetDistributionConfig
     (
     -- * Creating a Request
@@ -80,13 +78,15 @@
                    (h .#? "ETag") <*> (parseXML x) <*>
                      (pure (fromEnum s)))
 
+instance Hashable GetDistributionConfig
+
 instance ToHeaders GetDistributionConfig where
         toHeaders = const mempty
 
 instance ToPath GetDistributionConfig where
         toPath GetDistributionConfig'{..}
           = mconcat
-              ["/2015-09-17/distribution/", toBS _gdcId, "/config"]
+              ["/2016-01-28/distribution/", toBS _gdcId, "/config"]
 
 instance ToQuery GetDistributionConfig where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/GetInvalidation.hs b/gen/Network/AWS/CloudFront/GetInvalidation.hs
--- a/gen/Network/AWS/CloudFront/GetInvalidation.hs
+++ b/gen/Network/AWS/CloudFront/GetInvalidation.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.GetInvalidation
--- 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)
 --
 -- Get the information about an invalidation.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/GetInvalidation.html AWS API Reference> for GetInvalidation.
 module Network.AWS.CloudFront.GetInvalidation
     (
     -- * Creating a Request
@@ -87,13 +85,15 @@
                  GetInvalidationResponse' <$>
                    (parseXML x) <*> (pure (fromEnum s)))
 
+instance Hashable GetInvalidation
+
 instance ToHeaders GetInvalidation where
         toHeaders = const mempty
 
 instance ToPath GetInvalidation where
         toPath GetInvalidation'{..}
           = mconcat
-              ["/2015-09-17/distribution/", toBS _giDistributionId,
+              ["/2016-01-28/distribution/", toBS _giDistributionId,
                "/invalidation/", toBS _giId]
 
 instance ToQuery GetInvalidation where
diff --git a/gen/Network/AWS/CloudFront/GetStreamingDistribution.hs b/gen/Network/AWS/CloudFront/GetStreamingDistribution.hs
--- a/gen/Network/AWS/CloudFront/GetStreamingDistribution.hs
+++ b/gen/Network/AWS/CloudFront/GetStreamingDistribution.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.GetStreamingDistribution
--- 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)
 --
 -- Get the information about a streaming distribution.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/GetStreamingDistribution.html AWS API Reference> for GetStreamingDistribution.
 module Network.AWS.CloudFront.GetStreamingDistribution
     (
     -- * Creating a Request
@@ -80,13 +78,15 @@
                    (h .#? "ETag") <*> (parseXML x) <*>
                      (pure (fromEnum s)))
 
+instance Hashable GetStreamingDistribution
+
 instance ToHeaders GetStreamingDistribution where
         toHeaders = const mempty
 
 instance ToPath GetStreamingDistribution where
         toPath GetStreamingDistribution'{..}
           = mconcat
-              ["/2015-09-17/streaming-distribution/", toBS _gsdId]
+              ["/2016-01-28/streaming-distribution/", toBS _gsdId]
 
 instance ToQuery GetStreamingDistribution where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/GetStreamingDistributionConfig.hs b/gen/Network/AWS/CloudFront/GetStreamingDistributionConfig.hs
--- a/gen/Network/AWS/CloudFront/GetStreamingDistributionConfig.hs
+++ b/gen/Network/AWS/CloudFront/GetStreamingDistributionConfig.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.GetStreamingDistributionConfig
--- 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)
 --
 -- Get the configuration information about a streaming distribution.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/GetStreamingDistributionConfig.html AWS API Reference> for GetStreamingDistributionConfig.
 module Network.AWS.CloudFront.GetStreamingDistributionConfig
     (
     -- * Creating a Request
@@ -81,6 +79,8 @@
                    (parseXML x) <*> (h .#? "ETag") <*>
                      (pure (fromEnum s)))
 
+instance Hashable GetStreamingDistributionConfig
+
 instance ToHeaders GetStreamingDistributionConfig
          where
         toHeaders = const mempty
@@ -88,7 +88,7 @@
 instance ToPath GetStreamingDistributionConfig where
         toPath GetStreamingDistributionConfig'{..}
           = mconcat
-              ["/2015-09-17/streaming-distribution/", toBS _gsdcId,
+              ["/2016-01-28/streaming-distribution/", toBS _gsdcId,
                "/config"]
 
 instance ToQuery GetStreamingDistributionConfig where
diff --git a/gen/Network/AWS/CloudFront/ListCloudFrontOriginAccessIdentities.hs b/gen/Network/AWS/CloudFront/ListCloudFrontOriginAccessIdentities.hs
--- a/gen/Network/AWS/CloudFront/ListCloudFrontOriginAccessIdentities.hs
+++ b/gen/Network/AWS/CloudFront/ListCloudFrontOriginAccessIdentities.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.ListCloudFrontOriginAccessIdentities
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,8 +20,6 @@
 --
 -- List origin access identities.
 --
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/ListCloudFrontOriginAccessIdentities.html AWS API Reference> for ListCloudFrontOriginAccessIdentities.
---
 -- This operation returns paginated results.
 module Network.AWS.CloudFront.ListCloudFrontOriginAccessIdentities
     (
@@ -115,6 +113,9 @@
                  ListCloudFrontOriginAccessIdentitiesResponse' <$>
                    (pure (fromEnum s)) <*> (parseXML x))
 
+instance Hashable
+         ListCloudFrontOriginAccessIdentities
+
 instance ToHeaders
          ListCloudFrontOriginAccessIdentities where
         toHeaders = const mempty
@@ -123,7 +124,7 @@
          where
         toPath
           = const
-              "/2015-09-17/origin-access-identity/cloudfront"
+              "/2016-01-28/origin-access-identity/cloudfront"
 
 instance ToQuery ListCloudFrontOriginAccessIdentities
          where
diff --git a/gen/Network/AWS/CloudFront/ListDistributions.hs b/gen/Network/AWS/CloudFront/ListDistributions.hs
--- a/gen/Network/AWS/CloudFront/ListDistributions.hs
+++ b/gen/Network/AWS/CloudFront/ListDistributions.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.ListDistributions
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,8 +20,6 @@
 --
 -- List distributions.
 --
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/ListDistributions.html AWS API Reference> for ListDistributions.
---
 -- This operation returns paginated results.
 module Network.AWS.CloudFront.ListDistributions
     (
@@ -105,11 +103,13 @@
                  ListDistributionsResponse' <$>
                    (pure (fromEnum s)) <*> (parseXML x))
 
+instance Hashable ListDistributions
+
 instance ToHeaders ListDistributions where
         toHeaders = const mempty
 
 instance ToPath ListDistributions where
-        toPath = const "/2015-09-17/distribution"
+        toPath = const "/2016-01-28/distribution"
 
 instance ToQuery ListDistributions where
         toQuery ListDistributions'{..}
diff --git a/gen/Network/AWS/CloudFront/ListDistributionsByWebACLId.hs b/gen/Network/AWS/CloudFront/ListDistributionsByWebACLId.hs
--- a/gen/Network/AWS/CloudFront/ListDistributionsByWebACLId.hs
+++ b/gen/Network/AWS/CloudFront/ListDistributionsByWebACLId.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.ListDistributionsByWebACLId
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,8 +20,6 @@
 --
 -- List the distributions that are associated with a specified AWS WAF web
 -- ACL.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/ListDistributionsByWebACLId.html AWS API Reference> for ListDistributionsByWebACLId.
 module Network.AWS.CloudFront.ListDistributionsByWebACLId
     (
     -- * Creating a Request
@@ -105,13 +103,15 @@
                  ListDistributionsByWebACLIdResponse' <$>
                    (parseXML x) <*> (pure (fromEnum s)))
 
+instance Hashable ListDistributionsByWebACLId
+
 instance ToHeaders ListDistributionsByWebACLId where
         toHeaders = const mempty
 
 instance ToPath ListDistributionsByWebACLId where
         toPath ListDistributionsByWebACLId'{..}
           = mconcat
-              ["/2015-09-17/distributionsByWebACLId/",
+              ["/2016-01-28/distributionsByWebACLId/",
                toBS _ldbwaiWebACLId]
 
 instance ToQuery ListDistributionsByWebACLId where
diff --git a/gen/Network/AWS/CloudFront/ListInvalidations.hs b/gen/Network/AWS/CloudFront/ListInvalidations.hs
--- a/gen/Network/AWS/CloudFront/ListInvalidations.hs
+++ b/gen/Network/AWS/CloudFront/ListInvalidations.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.ListInvalidations
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,8 +20,6 @@
 --
 -- List invalidation batches.
 --
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/ListInvalidations.html AWS API Reference> for ListInvalidations.
---
 -- This operation returns paginated results.
 module Network.AWS.CloudFront.ListInvalidations
     (
@@ -117,13 +115,15 @@
                  ListInvalidationsResponse' <$>
                    (pure (fromEnum s)) <*> (parseXML x))
 
+instance Hashable ListInvalidations
+
 instance ToHeaders ListInvalidations where
         toHeaders = const mempty
 
 instance ToPath ListInvalidations where
         toPath ListInvalidations'{..}
           = mconcat
-              ["/2015-09-17/distribution/", toBS _liDistributionId,
+              ["/2016-01-28/distribution/", toBS _liDistributionId,
                "/invalidation"]
 
 instance ToQuery ListInvalidations where
diff --git a/gen/Network/AWS/CloudFront/ListStreamingDistributions.hs b/gen/Network/AWS/CloudFront/ListStreamingDistributions.hs
--- a/gen/Network/AWS/CloudFront/ListStreamingDistributions.hs
+++ b/gen/Network/AWS/CloudFront/ListStreamingDistributions.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.ListStreamingDistributions
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,8 +20,6 @@
 --
 -- List streaming distributions.
 --
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/ListStreamingDistributions.html AWS API Reference> for ListStreamingDistributions.
---
 -- This operation returns paginated results.
 module Network.AWS.CloudFront.ListStreamingDistributions
     (
@@ -112,11 +110,13 @@
                  ListStreamingDistributionsResponse' <$>
                    (pure (fromEnum s)) <*> (parseXML x))
 
+instance Hashable ListStreamingDistributions
+
 instance ToHeaders ListStreamingDistributions where
         toHeaders = const mempty
 
 instance ToPath ListStreamingDistributions where
-        toPath = const "/2015-09-17/streaming-distribution"
+        toPath = const "/2016-01-28/streaming-distribution"
 
 instance ToQuery ListStreamingDistributions where
         toQuery ListStreamingDistributions'{..}
diff --git a/gen/Network/AWS/CloudFront/Types.hs b/gen/Network/AWS/CloudFront/Types.hs
--- a/gen/Network/AWS/CloudFront/Types.hs
+++ b/gen/Network/AWS/CloudFront/Types.hs
@@ -4,7 +4,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.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
@@ -16,6 +16,7 @@
       cloudFront
 
     -- * Errors
+    , _TooManyOriginCustomHeaders
     , _InvalidErrorCode
     , _TooManyCacheBehaviors
     , _TooManyCloudFrontOriginAccessIdentities
@@ -87,6 +88,9 @@
     -- * PriceClass
     , PriceClass (..)
 
+    -- * SSLProtocol
+    , SSLProtocol (..)
+
     -- * SSLSupportMethod
     , SSLSupportMethod (..)
 
@@ -196,9 +200,16 @@
     , cerItems
     , cerQuantity
 
+    -- * CustomHeaders
+    , CustomHeaders
+    , customHeaders
+    , chItems
+    , chQuantity
+
     -- * CustomOriginConfig
     , CustomOriginConfig
     , customOriginConfig
+    , cocOriginSSLProtocols
     , cocHTTPPort
     , cocHTTPSPort
     , cocOriginProtocolPolicy
@@ -343,12 +354,25 @@
     -- * Origin
     , Origin
     , origin
+    , oCustomHeaders
     , oCustomOriginConfig
     , oS3OriginConfig
     , oOriginPath
     , oId
     , oDomainName
 
+    -- * OriginCustomHeader
+    , OriginCustomHeader
+    , originCustomHeader
+    , ochHeaderName
+    , ochHeaderValue
+
+    -- * OriginSSLProtocols
+    , OriginSSLProtocols
+    , originSSLProtocols
+    , ospQuantity
+    , ospItems
+
     -- * Origins
     , Origins
     , origins
@@ -447,6 +471,7 @@
     , ViewerCertificate
     , viewerCertificate
     , vcSSLSupportMethod
+    , vcACMCertificateARN
     , vcCertificateSource
     , vcMinimumProtocolVersion
     , vcCertificate
@@ -460,14 +485,14 @@
 import           Network.AWS.Prelude
 import           Network.AWS.Sign.V4
 
--- | API version '2015-09-17' of the Amazon CloudFront SDK configuration.
+-- | API version '2016-01-28' of the Amazon CloudFront SDK configuration.
 cloudFront :: Service
 cloudFront =
     Service
     { _svcAbbrev = "CloudFront"
     , _svcSigner = v4
     , _svcPrefix = "cloudfront"
-    , _svcVersion = "2015-09-17"
+    , _svcVersion = "2016-01-28"
     , _svcEndpoint = defaultEndpoint cloudFront
     , _svcTimeout = Just 70
     , _svcCheck = statusSuccess
@@ -483,6 +508,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"
@@ -490,6 +516,11 @@
       | has (hasStatus 500) e = Just "general_server_error"
       | has (hasStatus 509) e = Just "limit_exceeded"
       | otherwise = Nothing
+
+-- | Prism for TooManyOriginCustomHeaders' errors.
+_TooManyOriginCustomHeaders :: AsError a => Getting (First ServiceError) a ServiceError
+_TooManyOriginCustomHeaders =
+    _ServiceError . hasStatus 400 . hasCode "TooManyOriginCustomHeaders"
 
 -- | Prism for InvalidErrorCode' errors.
 _InvalidErrorCode :: AsError a => Getting (First ServiceError) a ServiceError
diff --git a/gen/Network/AWS/CloudFront/Types/Product.hs b/gen/Network/AWS/CloudFront/Types/Product.hs
--- a/gen/Network/AWS/CloudFront/Types/Product.hs
+++ b/gen/Network/AWS/CloudFront/Types/Product.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.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
@@ -79,6 +79,8 @@
                 <*> (x .@ "Enabled")
                 <*> (x .@ "Quantity")
 
+instance Hashable ActiveTrustedSigners
+
 -- | A complex type that contains information about CNAMEs (alternate domain
 -- names), if any, for this distribution.
 --
@@ -120,6 +122,8 @@
                  may (parseXMLList "CNAME"))
                 <*> (x .@ "Quantity")
 
+instance Hashable Aliases
+
 instance ToXML Aliases where
         toXML Aliases'{..}
           = mconcat
@@ -184,6 +188,8 @@
               (x .@? "CachedMethods") <*> (x .@ "Quantity") <*>
                 (x .@? "Items" .!@ mempty >>= parseXMLList "Method")
 
+instance Hashable AllowedMethods
+
 instance ToXML AllowedMethods where
         toXML AllowedMethods'{..}
           = mconcat
@@ -390,6 +396,8 @@
                 <*> (x .@ "ViewerProtocolPolicy")
                 <*> (x .@ "MinTTL")
 
+instance Hashable CacheBehavior
+
 instance ToXML CacheBehavior where
         toXML CacheBehavior'{..}
           = mconcat
@@ -444,6 +452,8 @@
                  may (parseXMLList "CacheBehavior"))
                 <*> (x .@ "Quantity")
 
+instance Hashable CacheBehaviors
+
 instance ToXML CacheBehaviors where
         toXML CacheBehaviors'{..}
           = mconcat
@@ -499,6 +509,8 @@
               (x .@ "Quantity") <*>
                 (x .@? "Items" .!@ mempty >>= parseXMLList "Method")
 
+instance Hashable CachedMethods
+
 instance ToXML CachedMethods where
         toXML CachedMethods'{..}
           = mconcat
@@ -555,6 +567,8 @@
                 (x .@ "Id")
                 <*> (x .@ "S3CanonicalUserId")
 
+instance Hashable CloudFrontOriginAccessIdentity
+
 -- | Origin access identity configuration.
 --
 -- /See:/ 'cloudFrontOriginAccessIdentityConfig' smart constructor.
@@ -605,6 +619,9 @@
           = CloudFrontOriginAccessIdentityConfig' <$>
               (x .@ "CallerReference") <*> (x .@ "Comment")
 
+instance Hashable
+         CloudFrontOriginAccessIdentityConfig
+
 instance ToXML CloudFrontOriginAccessIdentityConfig
          where
         toXML CloudFrontOriginAccessIdentityConfig'{..}
@@ -701,6 +718,8 @@
                 <*> (x .@ "IsTruncated")
                 <*> (x .@ "Quantity")
 
+instance Hashable CloudFrontOriginAccessIdentityList
+
 -- | Summary of the information about a CloudFront origin access identity.
 --
 -- /See:/ 'cloudFrontOriginAccessIdentitySummary' smart constructor.
@@ -753,6 +772,9 @@
               (x .@ "Id") <*> (x .@ "S3CanonicalUserId") <*>
                 (x .@ "Comment")
 
+instance Hashable
+         CloudFrontOriginAccessIdentitySummary
+
 -- | A complex type that specifies the whitelisted cookies, if any, that you
 -- want CloudFront to forward to your origin that is associated with this
 -- cache behavior.
@@ -795,6 +817,8 @@
                  may (parseXMLList "Name"))
                 <*> (x .@ "Quantity")
 
+instance Hashable CookieNames
+
 instance ToXML CookieNames where
         toXML CookieNames'{..}
           = mconcat
@@ -844,6 +868,8 @@
           = CookiePreference' <$>
               (x .@? "WhitelistedNames") <*> (x .@ "Forward")
 
+instance Hashable CookiePreference
+
 instance ToXML CookiePreference where
         toXML CookiePreference'{..}
           = mconcat
@@ -928,6 +954,8 @@
                 <*> (x .@? "ErrorCachingMinTTL")
                 <*> (x .@ "ErrorCode")
 
+instance Hashable CustomErrorResponse
+
 instance ToXML CustomErrorResponse where
         toXML CustomErrorResponse'{..}
           = mconcat
@@ -976,6 +1004,8 @@
                  may (parseXMLList "CustomErrorResponse"))
                 <*> (x .@ "Quantity")
 
+instance Hashable CustomErrorResponses
+
 instance ToXML CustomErrorResponses where
         toXML CustomErrorResponses'{..}
           = mconcat
@@ -984,11 +1014,60 @@
                    (toXMLList "CustomErrorResponse" <$> _cerItems),
                "Quantity" @= _cerQuantity]
 
+-- | A complex type that contains the list of Custom Headers for each origin.
+--
+-- /See:/ 'customHeaders' smart constructor.
+data CustomHeaders = CustomHeaders'
+    { _chItems    :: !(Maybe [OriginCustomHeader])
+    , _chQuantity :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomHeaders' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'chItems'
+--
+-- * 'chQuantity'
+customHeaders
+    :: Int -- ^ 'chQuantity'
+    -> CustomHeaders
+customHeaders pQuantity_ =
+    CustomHeaders'
+    { _chItems = Nothing
+    , _chQuantity = pQuantity_
+    }
+
+-- | A complex type that contains the custom headers for this Origin.
+chItems :: Lens' CustomHeaders [OriginCustomHeader]
+chItems = lens _chItems (\ s a -> s{_chItems = a}) . _Default . _Coerce;
+
+-- | The number of custom headers for this origin.
+chQuantity :: Lens' CustomHeaders Int
+chQuantity = lens _chQuantity (\ s a -> s{_chQuantity = a});
+
+instance FromXML CustomHeaders where
+        parseXML x
+          = CustomHeaders' <$>
+              (x .@? "Items" .!@ mempty >>=
+                 may (parseXMLList "OriginCustomHeader"))
+                <*> (x .@ "Quantity")
+
+instance Hashable CustomHeaders
+
+instance ToXML CustomHeaders where
+        toXML CustomHeaders'{..}
+          = mconcat
+              ["Items" @=
+                 toXML (toXMLList "OriginCustomHeader" <$> _chItems),
+               "Quantity" @= _chQuantity]
+
 -- | A customer origin.
 --
 -- /See:/ 'customOriginConfig' smart constructor.
 data CustomOriginConfig = CustomOriginConfig'
-    { _cocHTTPPort             :: !Int
+    { _cocOriginSSLProtocols   :: !(Maybe OriginSSLProtocols)
+    , _cocHTTPPort             :: !Int
     , _cocHTTPSPort            :: !Int
     , _cocOriginProtocolPolicy :: !OriginProtocolPolicy
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -997,6 +1076,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'cocOriginSSLProtocols'
+--
 -- * 'cocHTTPPort'
 --
 -- * 'cocHTTPSPort'
@@ -1009,11 +1090,17 @@
     -> CustomOriginConfig
 customOriginConfig pHTTPPort_ pHTTPSPort_ pOriginProtocolPolicy_ =
     CustomOriginConfig'
-    { _cocHTTPPort = pHTTPPort_
+    { _cocOriginSSLProtocols = Nothing
+    , _cocHTTPPort = pHTTPPort_
     , _cocHTTPSPort = pHTTPSPort_
     , _cocOriginProtocolPolicy = pOriginProtocolPolicy_
     }
 
+-- | The SSL\/TLS protocols that you want CloudFront to use when
+-- communicating with your origin over HTTPS.
+cocOriginSSLProtocols :: Lens' CustomOriginConfig (Maybe OriginSSLProtocols)
+cocOriginSSLProtocols = lens _cocOriginSSLProtocols (\ s a -> s{_cocOriginSSLProtocols = a});
+
 -- | The HTTP port the custom origin listens on.
 cocHTTPPort :: Lens' CustomOriginConfig Int
 cocHTTPPort = lens _cocHTTPPort (\ s a -> s{_cocHTTPPort = a});
@@ -1029,13 +1116,17 @@
 instance FromXML CustomOriginConfig where
         parseXML x
           = CustomOriginConfig' <$>
-              (x .@ "HTTPPort") <*> (x .@ "HTTPSPort") <*>
-                (x .@ "OriginProtocolPolicy")
+              (x .@? "OriginSslProtocols") <*> (x .@ "HTTPPort")
+                <*> (x .@ "HTTPSPort")
+                <*> (x .@ "OriginProtocolPolicy")
 
+instance Hashable CustomOriginConfig
+
 instance ToXML CustomOriginConfig where
         toXML CustomOriginConfig'{..}
           = mconcat
-              ["HTTPPort" @= _cocHTTPPort,
+              ["OriginSslProtocols" @= _cocOriginSSLProtocols,
+               "HTTPPort" @= _cocHTTPPort,
                "HTTPSPort" @= _cocHTTPSPort,
                "OriginProtocolPolicy" @= _cocOriginProtocolPolicy]
 
@@ -1209,6 +1300,8 @@
                 <*> (x .@ "ViewerProtocolPolicy")
                 <*> (x .@ "MinTTL")
 
+instance Hashable DefaultCacheBehavior
+
 instance ToXML DefaultCacheBehavior where
         toXML DefaultCacheBehavior'{..}
           = mconcat
@@ -1321,6 +1414,8 @@
                 <*> (x .@ "ActiveTrustedSigners")
                 <*> (x .@ "DistributionConfig")
 
+instance Hashable Distribution
+
 -- | A distribution Configuration.
 --
 -- /See:/ 'distributionConfig' smart constructor.
@@ -1498,6 +1593,8 @@
                 <*> (x .@ "Comment")
                 <*> (x .@ "Enabled")
 
+instance Hashable DistributionConfig
+
 instance ToXML DistributionConfig where
         toXML DistributionConfig'{..}
           = mconcat
@@ -1600,6 +1697,8 @@
                 <*> (x .@ "IsTruncated")
                 <*> (x .@ "Quantity")
 
+instance Hashable DistributionList
+
 -- | A summary of the information for an Amazon CloudFront distribution.
 --
 -- /See:/ 'distributionSummary' smart constructor.
@@ -1777,6 +1876,8 @@
                 <*> (x .@ "Restrictions")
                 <*> (x .@ "WebACLId")
 
+instance Hashable DistributionSummary
+
 -- | A complex type that specifies how CloudFront handles query strings,
 -- cookies and headers.
 --
@@ -1828,6 +1929,8 @@
               (x .@? "Headers") <*> (x .@ "QueryString") <*>
                 (x .@ "Cookies")
 
+instance Hashable ForwardedValues
+
 instance ToXML ForwardedValues where
         toXML ForwardedValues'{..}
           = mconcat
@@ -1906,6 +2009,8 @@
                 <*> (x .@ "RestrictionType")
                 <*> (x .@ "Quantity")
 
+instance Hashable GeoRestriction
+
 instance ToXML GeoRestriction where
         toXML GeoRestriction'{..}
           = mconcat
@@ -1969,6 +2074,8 @@
                  may (parseXMLList "Name"))
                 <*> (x .@ "Quantity")
 
+instance Hashable Headers
+
 instance ToXML Headers where
         toXML Headers'{..}
           = mconcat
@@ -2035,6 +2142,8 @@
                 (x .@ "CreateTime")
                 <*> (x .@ "InvalidationBatch")
 
+instance Hashable Invalidation
+
 -- | An invalidation batch.
 --
 -- /See:/ 'invalidationBatch' smart constructor.
@@ -2088,6 +2197,8 @@
           = InvalidationBatch' <$>
               (x .@ "Paths") <*> (x .@ "CallerReference")
 
+instance Hashable InvalidationBatch
+
 instance ToXML InvalidationBatch where
         toXML InvalidationBatch'{..}
           = mconcat
@@ -2179,6 +2290,8 @@
                 <*> (x .@ "IsTruncated")
                 <*> (x .@ "Quantity")
 
+instance Hashable InvalidationList
+
 -- | Summary of an invalidation request.
 --
 -- /See:/ 'invalidationSummary' smart constructor.
@@ -2227,6 +2340,8 @@
               (x .@ "Id") <*> (x .@ "CreateTime") <*>
                 (x .@ "Status")
 
+instance Hashable InvalidationSummary
+
 -- | A complex type that lists the active CloudFront key pairs, if any, that
 -- are associated with AwsAccountNumber.
 --
@@ -2268,6 +2383,8 @@
                  may (parseXMLList "KeyPairId"))
                 <*> (x .@ "Quantity")
 
+instance Hashable KeyPairIds
+
 -- | A complex type that controls whether access logs are written for the
 -- distribution.
 --
@@ -2342,6 +2459,8 @@
                 (x .@ "Bucket")
                 <*> (x .@ "Prefix")
 
+instance Hashable LoggingConfig
+
 instance ToXML LoggingConfig where
         toXML LoggingConfig'{..}
           = mconcat
@@ -2355,7 +2474,8 @@
 --
 -- /See:/ 'origin' smart constructor.
 data Origin = Origin'
-    { _oCustomOriginConfig :: !(Maybe CustomOriginConfig)
+    { _oCustomHeaders      :: !(Maybe CustomHeaders)
+    , _oCustomOriginConfig :: !(Maybe CustomOriginConfig)
     , _oS3OriginConfig     :: !(Maybe S3OriginConfig)
     , _oOriginPath         :: !(Maybe Text)
     , _oId                 :: !Text
@@ -2366,6 +2486,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'oCustomHeaders'
+--
 -- * 'oCustomOriginConfig'
 --
 -- * 'oS3OriginConfig'
@@ -2381,13 +2503,19 @@
     -> Origin
 origin pId_ pDomainName_ =
     Origin'
-    { _oCustomOriginConfig = Nothing
+    { _oCustomHeaders = Nothing
+    , _oCustomOriginConfig = Nothing
     , _oS3OriginConfig = Nothing
     , _oOriginPath = Nothing
     , _oId = pId_
     , _oDomainName = pDomainName_
     }
 
+-- | A complex type that contains information about the custom headers
+-- associated with this Origin.
+oCustomHeaders :: Lens' Origin (Maybe CustomHeaders)
+oCustomHeaders = lens _oCustomHeaders (\ s a -> s{_oCustomHeaders = a});
+
 -- | A complex type that contains information about a custom origin. If the
 -- origin is an Amazon S3 bucket, use the S3OriginConfig element instead.
 oCustomOriginConfig :: Lens' Origin (Maybe CustomOriginConfig)
@@ -2425,20 +2553,121 @@
 instance FromXML Origin where
         parseXML x
           = Origin' <$>
-              (x .@? "CustomOriginConfig") <*>
-                (x .@? "S3OriginConfig")
+              (x .@? "CustomHeaders") <*>
+                (x .@? "CustomOriginConfig")
+                <*> (x .@? "S3OriginConfig")
                 <*> (x .@? "OriginPath")
                 <*> (x .@ "Id")
                 <*> (x .@ "DomainName")
 
+instance Hashable Origin
+
 instance ToXML Origin where
         toXML Origin'{..}
           = mconcat
-              ["CustomOriginConfig" @= _oCustomOriginConfig,
+              ["CustomHeaders" @= _oCustomHeaders,
+               "CustomOriginConfig" @= _oCustomOriginConfig,
                "S3OriginConfig" @= _oS3OriginConfig,
                "OriginPath" @= _oOriginPath, "Id" @= _oId,
                "DomainName" @= _oDomainName]
 
+-- | A complex type that contains information related to a Header
+--
+-- /See:/ 'originCustomHeader' smart constructor.
+data OriginCustomHeader = OriginCustomHeader'
+    { _ochHeaderName  :: !Text
+    , _ochHeaderValue :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OriginCustomHeader' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ochHeaderName'
+--
+-- * 'ochHeaderValue'
+originCustomHeader
+    :: Text -- ^ 'ochHeaderName'
+    -> Text -- ^ 'ochHeaderValue'
+    -> OriginCustomHeader
+originCustomHeader pHeaderName_ pHeaderValue_ =
+    OriginCustomHeader'
+    { _ochHeaderName = pHeaderName_
+    , _ochHeaderValue = pHeaderValue_
+    }
+
+-- | The header\'s name.
+ochHeaderName :: Lens' OriginCustomHeader Text
+ochHeaderName = lens _ochHeaderName (\ s a -> s{_ochHeaderName = a});
+
+-- | The header\'s value.
+ochHeaderValue :: Lens' OriginCustomHeader Text
+ochHeaderValue = lens _ochHeaderValue (\ s a -> s{_ochHeaderValue = a});
+
+instance FromXML OriginCustomHeader where
+        parseXML x
+          = OriginCustomHeader' <$>
+              (x .@ "HeaderName") <*> (x .@ "HeaderValue")
+
+instance Hashable OriginCustomHeader
+
+instance ToXML OriginCustomHeader where
+        toXML OriginCustomHeader'{..}
+          = mconcat
+              ["HeaderName" @= _ochHeaderName,
+               "HeaderValue" @= _ochHeaderValue]
+
+-- | A complex type that contains the list of SSL\/TLS protocols that you
+-- want CloudFront to use when communicating with your origin over HTTPS.
+--
+-- /See:/ 'originSSLProtocols' smart constructor.
+data OriginSSLProtocols = OriginSSLProtocols'
+    { _ospQuantity :: !Int
+    , _ospItems    :: ![SSLProtocol]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OriginSSLProtocols' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ospQuantity'
+--
+-- * 'ospItems'
+originSSLProtocols
+    :: Int -- ^ 'ospQuantity'
+    -> OriginSSLProtocols
+originSSLProtocols pQuantity_ =
+    OriginSSLProtocols'
+    { _ospQuantity = pQuantity_
+    , _ospItems = mempty
+    }
+
+-- | The number of SSL\/TLS protocols that you want to allow CloudFront to
+-- use when establishing an HTTPS connection with this origin.
+ospQuantity :: Lens' OriginSSLProtocols Int
+ospQuantity = lens _ospQuantity (\ s a -> s{_ospQuantity = a});
+
+-- | A complex type that contains one SslProtocol element for each SSL\/TLS
+-- protocol that you want to allow CloudFront to use when establishing an
+-- HTTPS connection with this origin.
+ospItems :: Lens' OriginSSLProtocols [SSLProtocol]
+ospItems = lens _ospItems (\ s a -> s{_ospItems = a}) . _Coerce;
+
+instance FromXML OriginSSLProtocols where
+        parseXML x
+          = OriginSSLProtocols' <$>
+              (x .@ "Quantity") <*>
+                (x .@? "Items" .!@ mempty >>=
+                   parseXMLList "SslProtocol")
+
+instance Hashable OriginSSLProtocols
+
+instance ToXML OriginSSLProtocols where
+        toXML OriginSSLProtocols'{..}
+          = mconcat
+              ["Quantity" @= _ospQuantity,
+               "Items" @= toXMLList "SslProtocol" _ospItems]
+
 -- | A complex type that contains information about origins for this
 -- distribution.
 --
@@ -2479,6 +2708,8 @@
                  may (parseXMLList1 "Origin"))
                 <*> (x .@ "Quantity")
 
+instance Hashable Origins
+
 instance ToXML Origins where
         toXML Origins'{..}
           = mconcat
@@ -2526,6 +2757,8 @@
                  may (parseXMLList "Path"))
                 <*> (x .@ "Quantity")
 
+instance Hashable Paths
+
 instance ToXML Paths where
         toXML Paths'{..}
           = mconcat
@@ -2561,6 +2794,8 @@
         parseXML x
           = Restrictions' <$> (x .@ "GeoRestriction")
 
+instance Hashable Restrictions
+
 instance ToXML Restrictions where
         toXML Restrictions'{..}
           = mconcat ["GeoRestriction" @= _rGeoRestriction]
@@ -2604,6 +2839,8 @@
           = S3Origin' <$>
               (x .@ "DomainName") <*> (x .@ "OriginAccessIdentity")
 
+instance Hashable S3Origin
+
 instance ToXML S3Origin where
         toXML S3Origin'{..}
           = mconcat
@@ -2651,6 +2888,8 @@
         parseXML x
           = S3OriginConfig' <$> (x .@ "OriginAccessIdentity")
 
+instance Hashable S3OriginConfig
+
 instance ToXML S3OriginConfig where
         toXML S3OriginConfig'{..}
           = mconcat
@@ -2698,6 +2937,8 @@
           = Signer' <$>
               (x .@? "AwsAccountNumber") <*> (x .@? "KeyPairIds")
 
+instance Hashable Signer
+
 -- | A streaming distribution.
 --
 -- /See:/ 'streamingDistribution' smart constructor.
@@ -2787,6 +3028,8 @@
                 <*> (x .@ "ActiveTrustedSigners")
                 <*> (x .@ "StreamingDistributionConfig")
 
+instance Hashable StreamingDistribution
+
 -- | The configuration for the streaming distribution.
 --
 -- /See:/ 'streamingDistributionConfig' smart constructor.
@@ -2908,6 +3151,8 @@
                 <*> (x .@ "TrustedSigners")
                 <*> (x .@ "Enabled")
 
+instance Hashable StreamingDistributionConfig
+
 instance ToXML StreamingDistributionConfig where
         toXML StreamingDistributionConfig'{..}
           = mconcat
@@ -3004,6 +3249,8 @@
                 <*> (x .@ "IsTruncated")
                 <*> (x .@ "Quantity")
 
+instance Hashable StreamingDistributionList
+
 -- | A summary of the information for an Amazon CloudFront streaming
 -- distribution.
 --
@@ -3140,6 +3387,8 @@
                 <*> (x .@ "PriceClass")
                 <*> (x .@ "Enabled")
 
+instance Hashable StreamingDistributionSummary
+
 -- | A complex type that controls whether access logs are written for this
 -- streaming distribution.
 --
@@ -3199,6 +3448,8 @@
               (x .@ "Enabled") <*> (x .@ "Bucket") <*>
                 (x .@ "Prefix")
 
+instance Hashable StreamingLoggingConfig
+
 instance ToXML StreamingLoggingConfig where
         toXML StreamingLoggingConfig'{..}
           = mconcat
@@ -3267,6 +3518,8 @@
                 <*> (x .@ "Enabled")
                 <*> (x .@ "Quantity")
 
+instance Hashable TrustedSigners
+
 instance ToXML TrustedSigners where
         toXML TrustedSigners'{..}
           = mconcat
@@ -3280,6 +3533,7 @@
 -- /See:/ 'viewerCertificate' smart constructor.
 data ViewerCertificate = ViewerCertificate'
     { _vcSSLSupportMethod             :: !(Maybe SSLSupportMethod)
+    , _vcACMCertificateARN            :: !(Maybe Text)
     , _vcCertificateSource            :: !(Maybe CertificateSource)
     , _vcMinimumProtocolVersion       :: !(Maybe MinimumProtocolVersion)
     , _vcCertificate                  :: !(Maybe Text)
@@ -3293,6 +3547,8 @@
 --
 -- * 'vcSSLSupportMethod'
 --
+-- * 'vcACMCertificateARN'
+--
 -- * 'vcCertificateSource'
 --
 -- * 'vcMinimumProtocolVersion'
@@ -3307,6 +3563,7 @@
 viewerCertificate =
     ViewerCertificate'
     { _vcSSLSupportMethod = Nothing
+    , _vcACMCertificateARN = Nothing
     , _vcCertificateSource = Nothing
     , _vcMinimumProtocolVersion = Nothing
     , _vcCertificate = Nothing
@@ -3328,13 +3585,15 @@
 vcSSLSupportMethod = lens _vcSSLSupportMethod (\ s a -> s{_vcSSLSupportMethod = a});
 
 -- | If you want viewers to use HTTPS to request your objects and you\'re
--- using the CloudFront domain name of your distribution in your object
--- URLs (for example, https:\/\/d111111abcdef8.cloudfront.net\/logo.jpg),
--- set to \"cloudfront\". If you want viewers to use HTTPS to request your
--- objects and you\'re using an alternate domain name in your object URLs
--- (for example, https:\/\/example.com\/logo.jpg), set to \"iam\", and
--- update the Certificate field with the IAM certificate identifier of the
--- custom viewer certificate for this distribution.
+-- using an alternate domain name in your object URLs (for example,
+-- https:\/\/example.com\/logo.jpg), specify the ACM certificate ARN of the
+-- custom viewer certificate for this distribution. Specify either this
+-- value, IAMCertificateId, or CloudFrontDefaultCertificate.
+vcACMCertificateARN :: Lens' ViewerCertificate (Maybe Text)
+vcACMCertificateARN = lens _vcACMCertificateARN (\ s a -> s{_vcACMCertificateARN = a});
+
+-- | Note: this field is deprecated. Please use one of [ACMCertificateArn,
+-- IAMCertificateId, CloudFrontDefaultCertificate].
 vcCertificateSource :: Lens' ViewerCertificate (Maybe CertificateSource)
 vcCertificateSource = lens _vcCertificateSource (\ s a -> s{_vcCertificateSource = a});
 
@@ -3353,29 +3612,24 @@
 vcMinimumProtocolVersion :: Lens' ViewerCertificate (Maybe MinimumProtocolVersion)
 vcMinimumProtocolVersion = lens _vcMinimumProtocolVersion (\ s a -> s{_vcMinimumProtocolVersion = a});
 
--- | If you want viewers to use HTTPS to request your objects and you\'re
--- using an alternate domain name in your object URLs (for example,
--- https:\/\/example.com\/logo.jpg), set to the IAM certificate identifier
--- of the custom viewer certificate for this distribution.
+-- | Note: this field is deprecated. Please use one of [ACMCertificateArn,
+-- IAMCertificateId, CloudFrontDefaultCertificate].
 vcCertificate :: Lens' ViewerCertificate (Maybe Text)
 vcCertificate = lens _vcCertificate (\ s a -> s{_vcCertificate = a});
 
--- | Note: this field is deprecated. Please use \"iam\" as CertificateSource
--- and specify the IAM certificate Id as the Certificate. If you want
--- viewers to use HTTPS to request your objects and you\'re using an
--- alternate domain name in your object URLs (for example,
+-- | If you want viewers to use HTTPS to request your objects and you\'re
+-- using an alternate domain name in your object URLs (for example,
 -- https:\/\/example.com\/logo.jpg), specify the IAM certificate identifier
 -- of the custom viewer certificate for this distribution. Specify either
--- this value or CloudFrontDefaultCertificate.
+-- this value, ACMCertificateArn, or CloudFrontDefaultCertificate.
 vcIAMCertificateId :: Lens' ViewerCertificate (Maybe Text)
 vcIAMCertificateId = lens _vcIAMCertificateId (\ s a -> s{_vcIAMCertificateId = a});
 
--- | Note: this field is deprecated. Please use \"cloudfront\" as
--- CertificateSource and omit specifying a Certificate. If you want viewers
--- to use HTTPS to request your objects and you\'re using the CloudFront
--- domain name of your distribution in your object URLs (for example,
--- https:\/\/d111111abcdef8.cloudfront.net\/logo.jpg), set to true. Omit
--- this value if you are setting an IAMCertificateId.
+-- | If you want viewers to use HTTPS to request your objects and you\'re
+-- using the CloudFront domain name of your distribution in your object
+-- URLs (for example, https:\/\/d111111abcdef8.cloudfront.net\/logo.jpg),
+-- set to true. Omit this value if you are setting an ACMCertificateArn or
+-- IAMCertificateId.
 vcCloudFrontDefaultCertificate :: Lens' ViewerCertificate (Maybe Bool)
 vcCloudFrontDefaultCertificate = lens _vcCloudFrontDefaultCertificate (\ s a -> s{_vcCloudFrontDefaultCertificate = a});
 
@@ -3383,16 +3637,20 @@
         parseXML x
           = ViewerCertificate' <$>
               (x .@? "SSLSupportMethod") <*>
-                (x .@? "CertificateSource")
+                (x .@? "ACMCertificateArn")
+                <*> (x .@? "CertificateSource")
                 <*> (x .@? "MinimumProtocolVersion")
                 <*> (x .@? "Certificate")
                 <*> (x .@? "IAMCertificateId")
                 <*> (x .@? "CloudFrontDefaultCertificate")
 
+instance Hashable ViewerCertificate
+
 instance ToXML ViewerCertificate where
         toXML ViewerCertificate'{..}
           = mconcat
               ["SSLSupportMethod" @= _vcSSLSupportMethod,
+               "ACMCertificateArn" @= _vcACMCertificateARN,
                "CertificateSource" @= _vcCertificateSource,
                "MinimumProtocolVersion" @=
                  _vcMinimumProtocolVersion,
diff --git a/gen/Network/AWS/CloudFront/Types/Sum.hs b/gen/Network/AWS/CloudFront/Types/Sum.hs
--- a/gen/Network/AWS/CloudFront/Types/Sum.hs
+++ b/gen/Network/AWS/CloudFront/Types/Sum.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.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
@@ -20,19 +20,22 @@
 import           Network.AWS.Prelude
 
 data CertificateSource
-    = Cloudfront
+    = Acm
+    | Cloudfront
     | IAM
     deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText CertificateSource where
     parser = takeLowerText >>= \case
+        "acm" -> pure Acm
         "cloudfront" -> pure Cloudfront
         "iam" -> pure IAM
         e -> fromTextError $ "Failure parsing CertificateSource from value: '" <> e
-           <> "'. Accepted values: cloudfront, iam"
+           <> "'. Accepted values: acm, cloudfront, iam"
 
 instance ToText CertificateSource where
     toText = \case
+        Acm -> "acm"
         Cloudfront -> "cloudfront"
         IAM -> "iam"
 
@@ -153,21 +156,21 @@
     toXML = toXMLText
 
 data MinimumProtocolVersion
-    = SSLV3
-    | TLSV1
+    = MPVSSLV3
+    | MPVTLSV1
     deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText MinimumProtocolVersion where
     parser = takeLowerText >>= \case
-        "sslv3" -> pure SSLV3
-        "tlsv1" -> pure TLSV1
+        "sslv3" -> pure MPVSSLV3
+        "tlsv1" -> pure MPVTLSV1
         e -> fromTextError $ "Failure parsing MinimumProtocolVersion from value: '" <> e
            <> "'. Accepted values: SSLv3, TLSv1"
 
 instance ToText MinimumProtocolVersion where
     toText = \case
-        SSLV3 -> "SSLv3"
-        TLSV1 -> "TLSv1"
+        MPVSSLV3 -> "SSLv3"
+        MPVTLSV1 -> "TLSv1"
 
 instance Hashable     MinimumProtocolVersion
 instance ToByteString MinimumProtocolVersion
@@ -182,19 +185,22 @@
 
 data OriginProtocolPolicy
     = HTTPOnly
+    | HTTPSOnly
     | MatchViewer
     deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText OriginProtocolPolicy where
     parser = takeLowerText >>= \case
         "http-only" -> pure HTTPOnly
+        "https-only" -> pure HTTPSOnly
         "match-viewer" -> pure MatchViewer
         e -> fromTextError $ "Failure parsing OriginProtocolPolicy from value: '" <> e
-           <> "'. Accepted values: http-only, match-viewer"
+           <> "'. Accepted values: http-only, https-only, match-viewer"
 
 instance ToText OriginProtocolPolicy where
     toText = \case
         HTTPOnly -> "http-only"
+        HTTPSOnly -> "https-only"
         MatchViewer -> "match-viewer"
 
 instance Hashable     OriginProtocolPolicy
@@ -239,6 +245,40 @@
 instance ToXML PriceClass where
     toXML = toXMLText
 
+data SSLProtocol
+    = SSLV3
+    | TLSV1
+    | TLSV1_1
+    | TLSV1_2
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText SSLProtocol where
+    parser = takeLowerText >>= \case
+        "sslv3" -> pure SSLV3
+        "tlsv1" -> pure TLSV1
+        "tlsv1.1" -> pure TLSV1_1
+        "tlsv1.2" -> pure TLSV1_2
+        e -> fromTextError $ "Failure parsing SSLProtocol from value: '" <> e
+           <> "'. Accepted values: SSLv3, TLSv1, TLSv1.1, TLSv1.2"
+
+instance ToText SSLProtocol where
+    toText = \case
+        SSLV3 -> "SSLv3"
+        TLSV1 -> "TLSv1"
+        TLSV1_1 -> "TLSv1.1"
+        TLSV1_2 -> "TLSv1.2"
+
+instance Hashable     SSLProtocol
+instance ToByteString SSLProtocol
+instance ToQuery      SSLProtocol
+instance ToHeader     SSLProtocol
+
+instance FromXML SSLProtocol where
+    parseXML = parseXMLText "SSLProtocol"
+
+instance ToXML SSLProtocol where
+    toXML = toXMLText
+
 data SSLSupportMethod
     = SNIOnly
     | VIP
@@ -268,24 +308,24 @@
     toXML = toXMLText
 
 data ViewerProtocolPolicy
-    = AllowAll
-    | HTTPSOnly
-    | RedirectToHTTPS
+    = VPPAllowAll
+    | VPPHTTPSOnly
+    | VPPRedirectToHTTPS
     deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText ViewerProtocolPolicy where
     parser = takeLowerText >>= \case
-        "allow-all" -> pure AllowAll
-        "https-only" -> pure HTTPSOnly
-        "redirect-to-https" -> pure RedirectToHTTPS
+        "allow-all" -> pure VPPAllowAll
+        "https-only" -> pure VPPHTTPSOnly
+        "redirect-to-https" -> pure VPPRedirectToHTTPS
         e -> fromTextError $ "Failure parsing ViewerProtocolPolicy from value: '" <> e
            <> "'. Accepted values: allow-all, https-only, redirect-to-https"
 
 instance ToText ViewerProtocolPolicy where
     toText = \case
-        AllowAll -> "allow-all"
-        HTTPSOnly -> "https-only"
-        RedirectToHTTPS -> "redirect-to-https"
+        VPPAllowAll -> "allow-all"
+        VPPHTTPSOnly -> "https-only"
+        VPPRedirectToHTTPS -> "redirect-to-https"
 
 instance Hashable     ViewerProtocolPolicy
 instance ToByteString ViewerProtocolPolicy
diff --git a/gen/Network/AWS/CloudFront/UpdateCloudFrontOriginAccessIdentity.hs b/gen/Network/AWS/CloudFront/UpdateCloudFrontOriginAccessIdentity.hs
--- a/gen/Network/AWS/CloudFront/UpdateCloudFrontOriginAccessIdentity.hs
+++ b/gen/Network/AWS/CloudFront/UpdateCloudFrontOriginAccessIdentity.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.UpdateCloudFrontOriginAccessIdentity
--- 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)
 --
 -- Update an origin access identity.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/UpdateCloudFrontOriginAccessIdentity.html AWS API Reference> for UpdateCloudFrontOriginAccessIdentity.
 module Network.AWS.CloudFront.UpdateCloudFrontOriginAccessIdentity
     (
     -- * Creating a Request
@@ -101,11 +99,14 @@
                    (h .#? "ETag") <*> (parseXML x) <*>
                      (pure (fromEnum s)))
 
+instance Hashable
+         UpdateCloudFrontOriginAccessIdentity
+
 instance ToElement
          UpdateCloudFrontOriginAccessIdentity where
         toElement
           = mkElement
-              "{http://cloudfront.amazonaws.com/doc/2015-09-17/}CloudFrontOriginAccessIdentityConfig"
+              "{http://cloudfront.amazonaws.com/doc/2016-01-28/}CloudFrontOriginAccessIdentityConfig"
               .
               _ucfoaiCloudFrontOriginAccessIdentityConfig
 
@@ -118,7 +119,7 @@
          where
         toPath UpdateCloudFrontOriginAccessIdentity'{..}
           = mconcat
-              ["/2015-09-17/origin-access-identity/cloudfront/",
+              ["/2016-01-28/origin-access-identity/cloudfront/",
                toBS _ucfoaiId, "/config"]
 
 instance ToQuery UpdateCloudFrontOriginAccessIdentity
diff --git a/gen/Network/AWS/CloudFront/UpdateDistribution.hs b/gen/Network/AWS/CloudFront/UpdateDistribution.hs
--- a/gen/Network/AWS/CloudFront/UpdateDistribution.hs
+++ b/gen/Network/AWS/CloudFront/UpdateDistribution.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.UpdateDistribution
--- 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)
 --
 -- Update a distribution.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/UpdateDistribution.html AWS API Reference> for UpdateDistribution.
 module Network.AWS.CloudFront.UpdateDistribution
     (
     -- * Creating a Request
@@ -100,10 +98,12 @@
                    (h .#? "ETag") <*> (parseXML x) <*>
                      (pure (fromEnum s)))
 
+instance Hashable UpdateDistribution
+
 instance ToElement UpdateDistribution where
         toElement
           = mkElement
-              "{http://cloudfront.amazonaws.com/doc/2015-09-17/}DistributionConfig"
+              "{http://cloudfront.amazonaws.com/doc/2016-01-28/}DistributionConfig"
               .
               _udDistributionConfig
 
@@ -114,7 +114,7 @@
 instance ToPath UpdateDistribution where
         toPath UpdateDistribution'{..}
           = mconcat
-              ["/2015-09-17/distribution/", toBS _udId, "/config"]
+              ["/2016-01-28/distribution/", toBS _udId, "/config"]
 
 instance ToQuery UpdateDistribution where
         toQuery = const mempty
diff --git a/gen/Network/AWS/CloudFront/UpdateStreamingDistribution.hs b/gen/Network/AWS/CloudFront/UpdateStreamingDistribution.hs
--- a/gen/Network/AWS/CloudFront/UpdateStreamingDistribution.hs
+++ b/gen/Network/AWS/CloudFront/UpdateStreamingDistribution.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.UpdateStreamingDistribution
--- 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)
 --
 -- Update a streaming distribution.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/UpdateStreamingDistribution.html AWS API Reference> for UpdateStreamingDistribution.
 module Network.AWS.CloudFront.UpdateStreamingDistribution
     (
     -- * Creating a Request
@@ -100,10 +98,12 @@
                    (h .#? "ETag") <*> (parseXML x) <*>
                      (pure (fromEnum s)))
 
+instance Hashable UpdateStreamingDistribution
+
 instance ToElement UpdateStreamingDistribution where
         toElement
           = mkElement
-              "{http://cloudfront.amazonaws.com/doc/2015-09-17/}StreamingDistributionConfig"
+              "{http://cloudfront.amazonaws.com/doc/2016-01-28/}StreamingDistributionConfig"
               .
               _usdStreamingDistributionConfig
 
@@ -114,7 +114,7 @@
 instance ToPath UpdateStreamingDistribution where
         toPath UpdateStreamingDistribution'{..}
           = mconcat
-              ["/2015-09-17/streaming-distribution/", toBS _usdId,
+              ["/2016-01-28/streaming-distribution/", toBS _usdId,
                "/config"]
 
 instance ToQuery UpdateStreamingDistribution where
diff --git a/gen/Network/AWS/CloudFront/Waiters.hs b/gen/Network/AWS/CloudFront/Waiters.hs
--- a/gen/Network/AWS/CloudFront/Waiters.hs
+++ b/gen/Network/AWS/CloudFront/Waiters.hs
@@ -7,7 +7,7 @@
 
 -- |
 -- Module      : Network.AWS.CloudFront.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/CloudFront.hs b/test/Test/AWS/CloudFront.hs
--- a/test/Test/AWS/CloudFront.hs
+++ b/test/Test/AWS/CloudFront.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 -- Module      : Test.AWS.CloudFront
--- 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/CloudFront/Internal.hs b/test/Test/AWS/CloudFront/Internal.hs
--- a/test/Test/AWS/CloudFront/Internal.hs
+++ b/test/Test/AWS/CloudFront/Internal.hs
@@ -2,7 +2,7 @@
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
 -- Module      : Test.AWS.CloudFront.Internal
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : This Source Code Form is subject to the terms of
 --               the Mozilla Public License, v. 2.0.
 --               A copy of the MPL can be found in the LICENSE file or
diff --git a/test/Test/AWS/Gen/CloudFront.hs b/test/Test/AWS/Gen/CloudFront.hs
--- a/test/Test/AWS/Gen/CloudFront.hs
+++ b/test/Test/AWS/Gen/CloudFront.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Test.AWS.Gen.CloudFront
--- 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
