diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.0`
+`1.4.1`
 
 
 ## Description
diff --git a/amazonka-route53.cabal b/amazonka-route53.cabal
--- a/amazonka-route53.cabal
+++ b/amazonka-route53.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-route53
-version:               1.4.0
+version:               1.4.1
 synopsis:              Amazon Route 53 SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -100,7 +100,7 @@
         , Network.AWS.Route53.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.0.*
+          amazonka-core == 1.4.1.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-route53-test
@@ -120,9 +120,9 @@
         , Test.AWS.Route53.Internal
 
     build-depends:
-          amazonka-core == 1.4.0.*
-        , amazonka-test == 1.4.0.*
-        , amazonka-route53 == 1.4.0.*
+          amazonka-core == 1.4.1.*
+        , amazonka-test == 1.4.1.*
+        , amazonka-route53 == 1.4.1.*
         , base
         , bytestring
         , tasty
diff --git a/gen/Network/AWS/Route53.hs b/gen/Network/AWS/Route53.hs
--- a/gen/Network/AWS/Route53.hs
+++ b/gen/Network/AWS/Route53.hs
@@ -303,21 +303,42 @@
     -- ** ChangeStatus
     , ChangeStatus (..)
 
+    -- ** CloudWatchRegion
+    , CloudWatchRegion (..)
+
+    -- ** ComparisonOperator
+    , ComparisonOperator (..)
+
     -- ** Failover
     , Failover (..)
 
+    -- ** HealthCheckRegion
+    , HealthCheckRegion (..)
+
     -- ** HealthCheckType
     , HealthCheckType (..)
 
+    -- ** InsufficientDataHealthStatus
+    , InsufficientDataHealthStatus (..)
+
     -- ** RecordType
     , RecordType (..)
 
+    -- ** Statistic
+    , Statistic (..)
+
     -- ** TagResourceType
     , TagResourceType (..)
 
     -- ** VPCRegion
     , VPCRegion (..)
 
+    -- ** AlarmIdentifier
+    , AlarmIdentifier
+    , alarmIdentifier
+    , aiRegion
+    , aiName
+
     -- ** AliasTarget
     , AliasTarget
     , aliasTarget
@@ -345,6 +366,18 @@
     , ciStatus
     , ciSubmittedAt
 
+    -- ** CloudWatchAlarmConfiguration
+    , CloudWatchAlarmConfiguration
+    , cloudWatchAlarmConfiguration
+    , cwacDimensions
+    , cwacEvaluationPeriods
+    , cwacThreshold
+    , cwacComparisonOperator
+    , cwacPeriod
+    , cwacMetricName
+    , cwacNamespace
+    , cwacStatistic
+
     -- ** DelegationSet
     , DelegationSet
     , delegationSet
@@ -352,6 +385,12 @@
     , dsCallerReference
     , dsNameServers
 
+    -- ** Dimension
+    , Dimension
+    , dimension
+    , dName
+    , dValue
+
     -- ** GeoLocation
     , GeoLocation
     , geoLocation
@@ -372,6 +411,7 @@
     -- ** HealthCheck
     , HealthCheck
     , healthCheck
+    , hcCloudWatchAlarmConfiguration
     , hcId
     , hcCallerReference
     , hcHealthCheckConfig
@@ -385,7 +425,10 @@
     , hccEnableSNI
     , hccSearchString
     , hccHealthThreshold
+    , hccRegions
     , hccResourcePath
+    , hccInsufficientDataHealthStatus
+    , hccAlarmIdentifier
     , hccMeasureLatency
     , hccInverted
     , hccFullyQualifiedDomainName
@@ -399,6 +442,7 @@
     , healthCheckObservation
     , hcoIPAddress
     , hcoStatusReport
+    , hcoRegion
 
     -- ** HostedZone
     , HostedZone
diff --git a/gen/Network/AWS/Route53/AssociateVPCWithHostedZone.hs b/gen/Network/AWS/Route53/AssociateVPCWithHostedZone.hs
--- a/gen/Network/AWS/Route53/AssociateVPCWithHostedZone.hs
+++ b/gen/Network/AWS/Route53/AssociateVPCWithHostedZone.hs
@@ -111,6 +111,8 @@
 
 instance Hashable AssociateVPCWithHostedZone
 
+instance NFData AssociateVPCWithHostedZone
+
 instance ToElement AssociateVPCWithHostedZone where
         toElement
           = mkElement
@@ -166,3 +168,5 @@
 -- of your 'AssociateVPCWithHostedZoneRequest'.
 avwhzrsChangeInfo :: Lens' AssociateVPCWithHostedZoneResponse ChangeInfo
 avwhzrsChangeInfo = lens _avwhzrsChangeInfo (\ s a -> s{_avwhzrsChangeInfo = a});
+
+instance NFData AssociateVPCWithHostedZoneResponse
diff --git a/gen/Network/AWS/Route53/ChangeResourceRecordSets.hs b/gen/Network/AWS/Route53/ChangeResourceRecordSets.hs
--- a/gen/Network/AWS/Route53/ChangeResourceRecordSets.hs
+++ b/gen/Network/AWS/Route53/ChangeResourceRecordSets.hs
@@ -118,6 +118,8 @@
 
 instance Hashable ChangeResourceRecordSets
 
+instance NFData ChangeResourceRecordSets
+
 instance ToElement ChangeResourceRecordSets where
         toElement
           = mkElement
@@ -175,3 +177,5 @@
 -- action to get detailed information about the change.
 crrsrsChangeInfo :: Lens' ChangeResourceRecordSetsResponse ChangeInfo
 crrsrsChangeInfo = lens _crrsrsChangeInfo (\ s a -> s{_crrsrsChangeInfo = a});
+
+instance NFData ChangeResourceRecordSetsResponse
diff --git a/gen/Network/AWS/Route53/ChangeTagsForResource.hs b/gen/Network/AWS/Route53/ChangeTagsForResource.hs
--- a/gen/Network/AWS/Route53/ChangeTagsForResource.hs
+++ b/gen/Network/AWS/Route53/ChangeTagsForResource.hs
@@ -114,6 +114,8 @@
 
 instance Hashable ChangeTagsForResource
 
+instance NFData ChangeTagsForResource
+
 instance ToElement ChangeTagsForResource where
         toElement
           = mkElement
@@ -162,3 +164,5 @@
 -- | The response status code.
 ctfrrsResponseStatus :: Lens' ChangeTagsForResourceResponse Int
 ctfrrsResponseStatus = lens _ctfrrsResponseStatus (\ s a -> s{_ctfrrsResponseStatus = a});
+
+instance NFData ChangeTagsForResourceResponse
diff --git a/gen/Network/AWS/Route53/CreateHealthCheck.hs b/gen/Network/AWS/Route53/CreateHealthCheck.hs
--- a/gen/Network/AWS/Route53/CreateHealthCheck.hs
+++ b/gen/Network/AWS/Route53/CreateHealthCheck.hs
@@ -105,6 +105,8 @@
 
 instance Hashable CreateHealthCheck
 
+instance NFData CreateHealthCheck
+
 instance ToElement CreateHealthCheck where
         toElement
           = mkElement
@@ -168,3 +170,5 @@
 -- | The unique URL representing the new health check.
 chcrsLocation :: Lens' CreateHealthCheckResponse Text
 chcrsLocation = lens _chcrsLocation (\ s a -> s{_chcrsLocation = a});
+
+instance NFData CreateHealthCheckResponse
diff --git a/gen/Network/AWS/Route53/CreateHostedZone.hs b/gen/Network/AWS/Route53/CreateHostedZone.hs
--- a/gen/Network/AWS/Route53/CreateHostedZone.hs
+++ b/gen/Network/AWS/Route53/CreateHostedZone.hs
@@ -165,6 +165,8 @@
 
 instance Hashable CreateHostedZone
 
+instance NFData CreateHostedZone
+
 instance ToElement CreateHostedZone where
         toElement
           = mkElement
@@ -259,3 +261,5 @@
 -- | The unique URL representing the new hosted zone.
 chzrsLocation :: Lens' CreateHostedZoneResponse Text
 chzrsLocation = lens _chzrsLocation (\ s a -> s{_chzrsLocation = a});
+
+instance NFData CreateHostedZoneResponse
diff --git a/gen/Network/AWS/Route53/CreateReusableDelegationSet.hs b/gen/Network/AWS/Route53/CreateReusableDelegationSet.hs
--- a/gen/Network/AWS/Route53/CreateReusableDelegationSet.hs
+++ b/gen/Network/AWS/Route53/CreateReusableDelegationSet.hs
@@ -106,6 +106,8 @@
 
 instance Hashable CreateReusableDelegationSet
 
+instance NFData CreateReusableDelegationSet
+
 instance ToElement CreateReusableDelegationSet where
         toElement
           = mkElement
@@ -165,3 +167,5 @@
 -- | The unique URL representing the new reusbale delegation set.
 crdsrsLocation :: Lens' CreateReusableDelegationSetResponse Text
 crdsrsLocation = lens _crdsrsLocation (\ s a -> s{_crdsrsLocation = a});
+
+instance NFData CreateReusableDelegationSetResponse
diff --git a/gen/Network/AWS/Route53/CreateTrafficPolicy.hs b/gen/Network/AWS/Route53/CreateTrafficPolicy.hs
--- a/gen/Network/AWS/Route53/CreateTrafficPolicy.hs
+++ b/gen/Network/AWS/Route53/CreateTrafficPolicy.hs
@@ -108,6 +108,8 @@
 
 instance Hashable CreateTrafficPolicy
 
+instance NFData CreateTrafficPolicy
+
 instance ToElement CreateTrafficPolicy where
         toElement
           = mkElement
@@ -170,3 +172,5 @@
 -- | Undocumented member.
 ctprsLocation :: Lens' CreateTrafficPolicyResponse Text
 ctprsLocation = lens _ctprsLocation (\ s a -> s{_ctprsLocation = a});
+
+instance NFData CreateTrafficPolicyResponse
diff --git a/gen/Network/AWS/Route53/CreateTrafficPolicyInstance.hs b/gen/Network/AWS/Route53/CreateTrafficPolicyInstance.hs
--- a/gen/Network/AWS/Route53/CreateTrafficPolicyInstance.hs
+++ b/gen/Network/AWS/Route53/CreateTrafficPolicyInstance.hs
@@ -141,6 +141,8 @@
 
 instance Hashable CreateTrafficPolicyInstance
 
+instance NFData CreateTrafficPolicyInstance
+
 instance ToElement CreateTrafficPolicyInstance where
         toElement
           = mkElement
@@ -206,3 +208,5 @@
 -- | A unique URL that represents a new traffic policy instance.
 ctpirsLocation :: Lens' CreateTrafficPolicyInstanceResponse Text
 ctpirsLocation = lens _ctpirsLocation (\ s a -> s{_ctpirsLocation = a});
+
+instance NFData CreateTrafficPolicyInstanceResponse
diff --git a/gen/Network/AWS/Route53/CreateTrafficPolicyVersion.hs b/gen/Network/AWS/Route53/CreateTrafficPolicyVersion.hs
--- a/gen/Network/AWS/Route53/CreateTrafficPolicyVersion.hs
+++ b/gen/Network/AWS/Route53/CreateTrafficPolicyVersion.hs
@@ -117,6 +117,8 @@
 
 instance Hashable CreateTrafficPolicyVersion
 
+instance NFData CreateTrafficPolicyVersion
+
 instance ToElement CreateTrafficPolicyVersion where
         toElement
           = mkElement
@@ -182,3 +184,5 @@
 -- | Undocumented member.
 ctpvrsLocation :: Lens' CreateTrafficPolicyVersionResponse Text
 ctpvrsLocation = lens _ctpvrsLocation (\ s a -> s{_ctpvrsLocation = a});
+
+instance NFData CreateTrafficPolicyVersionResponse
diff --git a/gen/Network/AWS/Route53/DeleteHealthCheck.hs b/gen/Network/AWS/Route53/DeleteHealthCheck.hs
--- a/gen/Network/AWS/Route53/DeleteHealthCheck.hs
+++ b/gen/Network/AWS/Route53/DeleteHealthCheck.hs
@@ -87,6 +87,8 @@
 
 instance Hashable DeleteHealthCheck
 
+instance NFData DeleteHealthCheck
+
 instance ToHeaders DeleteHealthCheck where
         toHeaders = const mempty
 
@@ -121,3 +123,5 @@
 -- | The response status code.
 dhcrsResponseStatus :: Lens' DeleteHealthCheckResponse Int
 dhcrsResponseStatus = lens _dhcrsResponseStatus (\ s a -> s{_dhcrsResponseStatus = a});
+
+instance NFData DeleteHealthCheckResponse
diff --git a/gen/Network/AWS/Route53/DeleteHostedZone.hs b/gen/Network/AWS/Route53/DeleteHostedZone.hs
--- a/gen/Network/AWS/Route53/DeleteHostedZone.hs
+++ b/gen/Network/AWS/Route53/DeleteHostedZone.hs
@@ -92,6 +92,8 @@
 
 instance Hashable DeleteHostedZone
 
+instance NFData DeleteHostedZone
+
 instance ToHeaders DeleteHostedZone where
         toHeaders = const mempty
 
@@ -135,3 +137,5 @@
 -- of your delete request.
 dhzrsChangeInfo :: Lens' DeleteHostedZoneResponse ChangeInfo
 dhzrsChangeInfo = lens _dhzrsChangeInfo (\ s a -> s{_dhzrsChangeInfo = a});
+
+instance NFData DeleteHostedZoneResponse
diff --git a/gen/Network/AWS/Route53/DeleteReusableDelegationSet.hs b/gen/Network/AWS/Route53/DeleteReusableDelegationSet.hs
--- a/gen/Network/AWS/Route53/DeleteReusableDelegationSet.hs
+++ b/gen/Network/AWS/Route53/DeleteReusableDelegationSet.hs
@@ -86,6 +86,8 @@
 
 instance Hashable DeleteReusableDelegationSet
 
+instance NFData DeleteReusableDelegationSet
+
 instance ToHeaders DeleteReusableDelegationSet where
         toHeaders = const mempty
 
@@ -120,3 +122,5 @@
 -- | The response status code.
 drdsrsResponseStatus :: Lens' DeleteReusableDelegationSetResponse Int
 drdsrsResponseStatus = lens _drdsrsResponseStatus (\ s a -> s{_drdsrsResponseStatus = a});
+
+instance NFData DeleteReusableDelegationSetResponse
diff --git a/gen/Network/AWS/Route53/DeleteTrafficPolicy.hs b/gen/Network/AWS/Route53/DeleteTrafficPolicy.hs
--- a/gen/Network/AWS/Route53/DeleteTrafficPolicy.hs
+++ b/gen/Network/AWS/Route53/DeleteTrafficPolicy.hs
@@ -87,6 +87,8 @@
 
 instance Hashable DeleteTrafficPolicy
 
+instance NFData DeleteTrafficPolicy
+
 instance ToHeaders DeleteTrafficPolicy where
         toHeaders = const mempty
 
@@ -122,3 +124,5 @@
 -- | The response status code.
 dtprsResponseStatus :: Lens' DeleteTrafficPolicyResponse Int
 dtprsResponseStatus = lens _dtprsResponseStatus (\ s a -> s{_dtprsResponseStatus = a});
+
+instance NFData DeleteTrafficPolicyResponse
diff --git a/gen/Network/AWS/Route53/DeleteTrafficPolicyInstance.hs b/gen/Network/AWS/Route53/DeleteTrafficPolicyInstance.hs
--- a/gen/Network/AWS/Route53/DeleteTrafficPolicyInstance.hs
+++ b/gen/Network/AWS/Route53/DeleteTrafficPolicyInstance.hs
@@ -91,6 +91,8 @@
 
 instance Hashable DeleteTrafficPolicyInstance
 
+instance NFData DeleteTrafficPolicyInstance
+
 instance ToHeaders DeleteTrafficPolicyInstance where
         toHeaders = const mempty
 
@@ -125,3 +127,5 @@
 -- | The response status code.
 dtpirsResponseStatus :: Lens' DeleteTrafficPolicyInstanceResponse Int
 dtpirsResponseStatus = lens _dtpirsResponseStatus (\ s a -> s{_dtpirsResponseStatus = a});
+
+instance NFData DeleteTrafficPolicyInstanceResponse
diff --git a/gen/Network/AWS/Route53/DisassociateVPCFromHostedZone.hs b/gen/Network/AWS/Route53/DisassociateVPCFromHostedZone.hs
--- a/gen/Network/AWS/Route53/DisassociateVPCFromHostedZone.hs
+++ b/gen/Network/AWS/Route53/DisassociateVPCFromHostedZone.hs
@@ -111,6 +111,8 @@
 
 instance Hashable DisassociateVPCFromHostedZone
 
+instance NFData DisassociateVPCFromHostedZone
+
 instance ToElement DisassociateVPCFromHostedZone
          where
         toElement
@@ -168,3 +170,5 @@
 -- of your 'DisassociateVPCFromHostedZoneRequest'.
 dvfhzrsChangeInfo :: Lens' DisassociateVPCFromHostedZoneResponse ChangeInfo
 dvfhzrsChangeInfo = lens _dvfhzrsChangeInfo (\ s a -> s{_dvfhzrsChangeInfo = a});
+
+instance NFData DisassociateVPCFromHostedZoneResponse
diff --git a/gen/Network/AWS/Route53/GetChange.hs b/gen/Network/AWS/Route53/GetChange.hs
--- a/gen/Network/AWS/Route53/GetChange.hs
+++ b/gen/Network/AWS/Route53/GetChange.hs
@@ -87,6 +87,8 @@
 
 instance Hashable GetChange
 
+instance NFData GetChange
+
 instance ToHeaders GetChange where
         toHeaders = const mempty
 
@@ -131,3 +133,5 @@
 -- date and time of the request.
 gcrsChangeInfo :: Lens' GetChangeResponse ChangeInfo
 gcrsChangeInfo = lens _gcrsChangeInfo (\ s a -> s{_gcrsChangeInfo = a});
+
+instance NFData GetChangeResponse
diff --git a/gen/Network/AWS/Route53/GetCheckerIPRanges.hs b/gen/Network/AWS/Route53/GetCheckerIPRanges.hs
--- a/gen/Network/AWS/Route53/GetCheckerIPRanges.hs
+++ b/gen/Network/AWS/Route53/GetCheckerIPRanges.hs
@@ -71,6 +71,8 @@
 
 instance Hashable GetCheckerIPRanges
 
+instance NFData GetCheckerIPRanges
+
 instance ToHeaders GetCheckerIPRanges where
         toHeaders = const mempty
 
@@ -112,3 +114,5 @@
 -- Amazon Route 53 health checkers.
 gcirrsCheckerIPRanges :: Lens' GetCheckerIPRangesResponse [Text]
 gcirrsCheckerIPRanges = lens _gcirrsCheckerIPRanges (\ s a -> s{_gcirrsCheckerIPRanges = a}) . _Coerce;
+
+instance NFData GetCheckerIPRangesResponse
diff --git a/gen/Network/AWS/Route53/GetGeoLocation.hs b/gen/Network/AWS/Route53/GetGeoLocation.hs
--- a/gen/Network/AWS/Route53/GetGeoLocation.hs
+++ b/gen/Network/AWS/Route53/GetGeoLocation.hs
@@ -112,6 +112,8 @@
 
 instance Hashable GetGeoLocation
 
+instance NFData GetGeoLocation
+
 instance ToHeaders GetGeoLocation where
         toHeaders = const mempty
 
@@ -158,3 +160,5 @@
 -- location.
 gglrsGeoLocationDetails :: Lens' GetGeoLocationResponse GeoLocationDetails
 gglrsGeoLocationDetails = lens _gglrsGeoLocationDetails (\ s a -> s{_gglrsGeoLocationDetails = a});
+
+instance NFData GetGeoLocationResponse
diff --git a/gen/Network/AWS/Route53/GetHealthCheck.hs b/gen/Network/AWS/Route53/GetHealthCheck.hs
--- a/gen/Network/AWS/Route53/GetHealthCheck.hs
+++ b/gen/Network/AWS/Route53/GetHealthCheck.hs
@@ -79,6 +79,8 @@
 
 instance Hashable GetHealthCheck
 
+instance NFData GetHealthCheck
+
 instance ToHeaders GetHealthCheck where
         toHeaders = const mempty
 
@@ -123,3 +125,5 @@
 -- check.
 ghcrsHealthCheck :: Lens' GetHealthCheckResponse HealthCheck
 ghcrsHealthCheck = lens _ghcrsHealthCheck (\ s a -> s{_ghcrsHealthCheck = a});
+
+instance NFData GetHealthCheckResponse
diff --git a/gen/Network/AWS/Route53/GetHealthCheckCount.hs b/gen/Network/AWS/Route53/GetHealthCheckCount.hs
--- a/gen/Network/AWS/Route53/GetHealthCheckCount.hs
+++ b/gen/Network/AWS/Route53/GetHealthCheckCount.hs
@@ -67,6 +67,8 @@
 
 instance Hashable GetHealthCheckCount
 
+instance NFData GetHealthCheckCount
+
 instance ToHeaders GetHealthCheckCount where
         toHeaders = const mempty
 
@@ -109,3 +111,5 @@
 -- | The number of health checks associated with the current AWS account.
 ghccrsHealthCheckCount :: Lens' GetHealthCheckCountResponse Integer
 ghccrsHealthCheckCount = lens _ghccrsHealthCheckCount (\ s a -> s{_ghccrsHealthCheckCount = a});
+
+instance NFData GetHealthCheckCountResponse
diff --git a/gen/Network/AWS/Route53/GetHealthCheckLastFailureReason.hs b/gen/Network/AWS/Route53/GetHealthCheckLastFailureReason.hs
--- a/gen/Network/AWS/Route53/GetHealthCheckLastFailureReason.hs
+++ b/gen/Network/AWS/Route53/GetHealthCheckLastFailureReason.hs
@@ -87,6 +87,8 @@
 
 instance Hashable GetHealthCheckLastFailureReason
 
+instance NFData GetHealthCheckLastFailureReason
+
 instance ToHeaders GetHealthCheckLastFailureReason
          where
         toHeaders = const mempty
@@ -134,3 +136,6 @@
 -- Amazon Route 53 health checker.
 ghclfrrsHealthCheckObservations :: Lens' GetHealthCheckLastFailureReasonResponse [HealthCheckObservation]
 ghclfrrsHealthCheckObservations = lens _ghclfrrsHealthCheckObservations (\ s a -> s{_ghclfrrsHealthCheckObservations = a}) . _Coerce;
+
+instance NFData
+         GetHealthCheckLastFailureReasonResponse
diff --git a/gen/Network/AWS/Route53/GetHealthCheckStatus.hs b/gen/Network/AWS/Route53/GetHealthCheckStatus.hs
--- a/gen/Network/AWS/Route53/GetHealthCheckStatus.hs
+++ b/gen/Network/AWS/Route53/GetHealthCheckStatus.hs
@@ -144,6 +144,8 @@
 
 instance Hashable GetHealthCheckStatus
 
+instance NFData GetHealthCheckStatus
+
 instance ToHeaders GetHealthCheckStatus where
         toHeaders = const mempty
 
@@ -189,3 +191,5 @@
 -- Amazon Route 53 health checker.
 ghcsrsHealthCheckObservations :: Lens' GetHealthCheckStatusResponse [HealthCheckObservation]
 ghcsrsHealthCheckObservations = lens _ghcsrsHealthCheckObservations (\ s a -> s{_ghcsrsHealthCheckObservations = a}) . _Coerce;
+
+instance NFData GetHealthCheckStatusResponse
diff --git a/gen/Network/AWS/Route53/GetHostedZone.hs b/gen/Network/AWS/Route53/GetHostedZone.hs
--- a/gen/Network/AWS/Route53/GetHostedZone.hs
+++ b/gen/Network/AWS/Route53/GetHostedZone.hs
@@ -87,6 +87,8 @@
 
 instance Hashable GetHostedZone
 
+instance NFData GetHostedZone
+
 instance ToHeaders GetHostedZone where
         toHeaders = const mempty
 
@@ -148,3 +150,5 @@
 -- zone.
 ghzrsHostedZone :: Lens' GetHostedZoneResponse HostedZone
 ghzrsHostedZone = lens _ghzrsHostedZone (\ s a -> s{_ghzrsHostedZone = a});
+
+instance NFData GetHostedZoneResponse
diff --git a/gen/Network/AWS/Route53/GetHostedZoneCount.hs b/gen/Network/AWS/Route53/GetHostedZoneCount.hs
--- a/gen/Network/AWS/Route53/GetHostedZoneCount.hs
+++ b/gen/Network/AWS/Route53/GetHostedZoneCount.hs
@@ -67,6 +67,8 @@
 
 instance Hashable GetHostedZoneCount
 
+instance NFData GetHostedZoneCount
+
 instance ToHeaders GetHostedZoneCount where
         toHeaders = const mempty
 
@@ -109,3 +111,5 @@
 -- | The number of hosted zones associated with the current AWS account.
 ghzcrsHostedZoneCount :: Lens' GetHostedZoneCountResponse Integer
 ghzcrsHostedZoneCount = lens _ghzcrsHostedZoneCount (\ s a -> s{_ghzcrsHostedZoneCount = a});
+
+instance NFData GetHostedZoneCountResponse
diff --git a/gen/Network/AWS/Route53/GetReusableDelegationSet.hs b/gen/Network/AWS/Route53/GetReusableDelegationSet.hs
--- a/gen/Network/AWS/Route53/GetReusableDelegationSet.hs
+++ b/gen/Network/AWS/Route53/GetReusableDelegationSet.hs
@@ -80,6 +80,8 @@
 
 instance Hashable GetReusableDelegationSet
 
+instance NFData GetReusableDelegationSet
+
 instance ToHeaders GetReusableDelegationSet where
         toHeaders = const mempty
 
@@ -125,3 +127,5 @@
 -- the specified delegation set ID.
 grdsrsDelegationSet :: Lens' GetReusableDelegationSetResponse DelegationSet
 grdsrsDelegationSet = lens _grdsrsDelegationSet (\ s a -> s{_grdsrsDelegationSet = a});
+
+instance NFData GetReusableDelegationSetResponse
diff --git a/gen/Network/AWS/Route53/GetTrafficPolicy.hs b/gen/Network/AWS/Route53/GetTrafficPolicy.hs
--- a/gen/Network/AWS/Route53/GetTrafficPolicy.hs
+++ b/gen/Network/AWS/Route53/GetTrafficPolicy.hs
@@ -93,6 +93,8 @@
 
 instance Hashable GetTrafficPolicy
 
+instance NFData GetTrafficPolicy
+
 instance ToHeaders GetTrafficPolicy where
         toHeaders = const mempty
 
@@ -137,3 +139,5 @@
 -- | A complex type that contains settings for the specified traffic policy.
 gtprsTrafficPolicy :: Lens' GetTrafficPolicyResponse TrafficPolicy
 gtprsTrafficPolicy = lens _gtprsTrafficPolicy (\ s a -> s{_gtprsTrafficPolicy = a});
+
+instance NFData GetTrafficPolicyResponse
diff --git a/gen/Network/AWS/Route53/GetTrafficPolicyInstance.hs b/gen/Network/AWS/Route53/GetTrafficPolicyInstance.hs
--- a/gen/Network/AWS/Route53/GetTrafficPolicyInstance.hs
+++ b/gen/Network/AWS/Route53/GetTrafficPolicyInstance.hs
@@ -92,6 +92,8 @@
 
 instance Hashable GetTrafficPolicyInstance
 
+instance NFData GetTrafficPolicyInstance
+
 instance ToHeaders GetTrafficPolicyInstance where
         toHeaders = const mempty
 
@@ -136,3 +138,5 @@
 -- | A complex type that contains settings for the traffic policy instance.
 gtpirsTrafficPolicyInstance :: Lens' GetTrafficPolicyInstanceResponse TrafficPolicyInstance
 gtpirsTrafficPolicyInstance = lens _gtpirsTrafficPolicyInstance (\ s a -> s{_gtpirsTrafficPolicyInstance = a});
+
+instance NFData GetTrafficPolicyInstanceResponse
diff --git a/gen/Network/AWS/Route53/GetTrafficPolicyInstanceCount.hs b/gen/Network/AWS/Route53/GetTrafficPolicyInstanceCount.hs
--- a/gen/Network/AWS/Route53/GetTrafficPolicyInstanceCount.hs
+++ b/gen/Network/AWS/Route53/GetTrafficPolicyInstanceCount.hs
@@ -73,6 +73,8 @@
 
 instance Hashable GetTrafficPolicyInstanceCount
 
+instance NFData GetTrafficPolicyInstanceCount
+
 instance ToHeaders GetTrafficPolicyInstanceCount
          where
         toHeaders = const mempty
@@ -118,3 +120,5 @@
 -- current AWS account.
 gtpicrsTrafficPolicyInstanceCount :: Lens' GetTrafficPolicyInstanceCountResponse Int
 gtpicrsTrafficPolicyInstanceCount = lens _gtpicrsTrafficPolicyInstanceCount (\ s a -> s{_gtpicrsTrafficPolicyInstanceCount = a});
+
+instance NFData GetTrafficPolicyInstanceCountResponse
diff --git a/gen/Network/AWS/Route53/ListGeoLocations.hs b/gen/Network/AWS/Route53/ListGeoLocations.hs
--- a/gen/Network/AWS/Route53/ListGeoLocations.hs
+++ b/gen/Network/AWS/Route53/ListGeoLocations.hs
@@ -145,6 +145,8 @@
 
 instance Hashable ListGeoLocations
 
+instance NFData ListGeoLocations
+
 instance ToHeaders ListGeoLocations where
         toHeaders = const mempty
 
@@ -251,3 +253,5 @@
 -- 'MaxItems' is 100.
 lglrsMaxItems :: Lens' ListGeoLocationsResponse Text
 lglrsMaxItems = lens _lglrsMaxItems (\ s a -> s{_lglrsMaxItems = a});
+
+instance NFData ListGeoLocationsResponse
diff --git a/gen/Network/AWS/Route53/ListHealthChecks.hs b/gen/Network/AWS/Route53/ListHealthChecks.hs
--- a/gen/Network/AWS/Route53/ListHealthChecks.hs
+++ b/gen/Network/AWS/Route53/ListHealthChecks.hs
@@ -125,6 +125,8 @@
 
 instance Hashable ListHealthChecks
 
+instance NFData ListHealthChecks
+
 instance ToHeaders ListHealthChecks where
         toHeaders = const mempty
 
@@ -218,3 +220,5 @@
 -- results.
 lhcrsMaxItems :: Lens' ListHealthChecksResponse Text
 lhcrsMaxItems = lens _lhcrsMaxItems (\ s a -> s{_lhcrsMaxItems = a});
+
+instance NFData ListHealthChecksResponse
diff --git a/gen/Network/AWS/Route53/ListHostedZones.hs b/gen/Network/AWS/Route53/ListHostedZones.hs
--- a/gen/Network/AWS/Route53/ListHostedZones.hs
+++ b/gen/Network/AWS/Route53/ListHostedZones.hs
@@ -138,6 +138,8 @@
 
 instance Hashable ListHostedZones
 
+instance NFData ListHostedZones
+
 instance ToHeaders ListHostedZones where
         toHeaders = const mempty
 
@@ -231,3 +233,5 @@
 -- results.
 lhzrsMaxItems :: Lens' ListHostedZonesResponse Text
 lhzrsMaxItems = lens _lhzrsMaxItems (\ s a -> s{_lhzrsMaxItems = a});
+
+instance NFData ListHostedZonesResponse
diff --git a/gen/Network/AWS/Route53/ListHostedZonesByName.hs b/gen/Network/AWS/Route53/ListHostedZonesByName.hs
--- a/gen/Network/AWS/Route53/ListHostedZonesByName.hs
+++ b/gen/Network/AWS/Route53/ListHostedZonesByName.hs
@@ -142,6 +142,8 @@
 
 instance Hashable ListHostedZonesByName
 
+instance NFData ListHostedZonesByName
+
 instance ToHeaders ListHostedZonesByName where
         toHeaders = const mempty
 
@@ -260,3 +262,5 @@
 -- to get the next page of results.
 lhzbnrsMaxItems :: Lens' ListHostedZonesByNameResponse Text
 lhzbnrsMaxItems = lens _lhzbnrsMaxItems (\ s a -> s{_lhzbnrsMaxItems = a});
+
+instance NFData ListHostedZonesByNameResponse
diff --git a/gen/Network/AWS/Route53/ListResourceRecordSets.hs b/gen/Network/AWS/Route53/ListResourceRecordSets.hs
--- a/gen/Network/AWS/Route53/ListResourceRecordSets.hs
+++ b/gen/Network/AWS/Route53/ListResourceRecordSets.hs
@@ -203,6 +203,8 @@
 
 instance Hashable ListResourceRecordSets
 
+instance NFData ListResourceRecordSets
+
 instance ToHeaders ListResourceRecordSets where
         toHeaders = const mempty
 
@@ -307,3 +309,5 @@
 -- 'MaxItems' is 100.
 lrrsrsMaxItems :: Lens' ListResourceRecordSetsResponse Text
 lrrsrsMaxItems = lens _lrrsrsMaxItems (\ s a -> s{_lrrsrsMaxItems = a});
+
+instance NFData ListResourceRecordSetsResponse
diff --git a/gen/Network/AWS/Route53/ListReusableDelegationSets.hs b/gen/Network/AWS/Route53/ListReusableDelegationSets.hs
--- a/gen/Network/AWS/Route53/ListReusableDelegationSets.hs
+++ b/gen/Network/AWS/Route53/ListReusableDelegationSets.hs
@@ -118,6 +118,8 @@
 
 instance Hashable ListReusableDelegationSets
 
+instance NFData ListReusableDelegationSets
+
 instance ToHeaders ListReusableDelegationSets where
         toHeaders = const mempty
 
@@ -214,3 +216,5 @@
 -- of results.
 lrdsrsMaxItems :: Lens' ListReusableDelegationSetsResponse Text
 lrdsrsMaxItems = lens _lrdsrsMaxItems (\ s a -> s{_lrdsrsMaxItems = a});
+
+instance NFData ListReusableDelegationSetsResponse
diff --git a/gen/Network/AWS/Route53/ListTagsForResource.hs b/gen/Network/AWS/Route53/ListTagsForResource.hs
--- a/gen/Network/AWS/Route53/ListTagsForResource.hs
+++ b/gen/Network/AWS/Route53/ListTagsForResource.hs
@@ -93,6 +93,8 @@
 
 instance Hashable ListTagsForResource
 
+instance NFData ListTagsForResource
+
 instance ToHeaders ListTagsForResource where
         toHeaders = const mempty
 
@@ -138,3 +140,5 @@
 -- resource.
 ltfrrsResourceTagSet :: Lens' ListTagsForResourceResponse ResourceTagSet
 ltfrrsResourceTagSet = lens _ltfrrsResourceTagSet (\ s a -> s{_ltfrrsResourceTagSet = a});
+
+instance NFData ListTagsForResourceResponse
diff --git a/gen/Network/AWS/Route53/ListTagsForResources.hs b/gen/Network/AWS/Route53/ListTagsForResources.hs
--- a/gen/Network/AWS/Route53/ListTagsForResources.hs
+++ b/gen/Network/AWS/Route53/ListTagsForResources.hs
@@ -96,6 +96,8 @@
 
 instance Hashable ListTagsForResources
 
+instance NFData ListTagsForResources
+
 instance ToElement ListTagsForResources where
         toElement
           = mkElement
@@ -149,3 +151,5 @@
 -- specified resources.
 lrsResourceTagSets :: Lens' ListTagsForResourcesResponse [ResourceTagSet]
 lrsResourceTagSets = lens _lrsResourceTagSets (\ s a -> s{_lrsResourceTagSets = a}) . _Coerce;
+
+instance NFData ListTagsForResourcesResponse
diff --git a/gen/Network/AWS/Route53/ListTrafficPolicies.hs b/gen/Network/AWS/Route53/ListTrafficPolicies.hs
--- a/gen/Network/AWS/Route53/ListTrafficPolicies.hs
+++ b/gen/Network/AWS/Route53/ListTrafficPolicies.hs
@@ -124,6 +124,8 @@
 
 instance Hashable ListTrafficPolicies
 
+instance NFData ListTrafficPolicies
+
 instance ToHeaders ListTrafficPolicies where
         toHeaders = const mempty
 
@@ -204,3 +206,5 @@
 -- 'ListTrafficPolicies' that produced the current response.
 ltprsMaxItems :: Lens' ListTrafficPoliciesResponse Text
 ltprsMaxItems = lens _ltprsMaxItems (\ s a -> s{_ltprsMaxItems = a});
+
+instance NFData ListTrafficPoliciesResponse
diff --git a/gen/Network/AWS/Route53/ListTrafficPolicyInstances.hs b/gen/Network/AWS/Route53/ListTrafficPolicyInstances.hs
--- a/gen/Network/AWS/Route53/ListTrafficPolicyInstances.hs
+++ b/gen/Network/AWS/Route53/ListTrafficPolicyInstances.hs
@@ -173,6 +173,8 @@
 
 instance Hashable ListTrafficPolicyInstances
 
+instance NFData ListTrafficPolicyInstances
+
 instance ToHeaders ListTrafficPolicyInstances where
         toHeaders = const mempty
 
@@ -279,3 +281,5 @@
 -- 'ListTrafficPolicyInstances' that produced the current response.
 ltpirsMaxItems :: Lens' ListTrafficPolicyInstancesResponse Text
 ltpirsMaxItems = lens _ltpirsMaxItems (\ s a -> s{_ltpirsMaxItems = a});
+
+instance NFData ListTrafficPolicyInstancesResponse
diff --git a/gen/Network/AWS/Route53/ListTrafficPolicyInstancesByHostedZone.hs b/gen/Network/AWS/Route53/ListTrafficPolicyInstancesByHostedZone.hs
--- a/gen/Network/AWS/Route53/ListTrafficPolicyInstancesByHostedZone.hs
+++ b/gen/Network/AWS/Route53/ListTrafficPolicyInstancesByHostedZone.hs
@@ -170,6 +170,9 @@
 instance Hashable
          ListTrafficPolicyInstancesByHostedZone
 
+instance NFData
+         ListTrafficPolicyInstancesByHostedZone
+
 instance ToHeaders
          ListTrafficPolicyInstancesByHostedZone where
         toHeaders = const mempty
@@ -272,3 +275,6 @@
 -- response.
 ltpibhzrsMaxItems :: Lens' ListTrafficPolicyInstancesByHostedZoneResponse Text
 ltpibhzrsMaxItems = lens _ltpibhzrsMaxItems (\ s a -> s{_ltpibhzrsMaxItems = a});
+
+instance NFData
+         ListTrafficPolicyInstancesByHostedZoneResponse
diff --git a/gen/Network/AWS/Route53/ListTrafficPolicyInstancesByPolicy.hs b/gen/Network/AWS/Route53/ListTrafficPolicyInstancesByPolicy.hs
--- a/gen/Network/AWS/Route53/ListTrafficPolicyInstancesByPolicy.hs
+++ b/gen/Network/AWS/Route53/ListTrafficPolicyInstancesByPolicy.hs
@@ -228,6 +228,8 @@
 
 instance Hashable ListTrafficPolicyInstancesByPolicy
 
+instance NFData ListTrafficPolicyInstancesByPolicy
+
 instance ToHeaders ListTrafficPolicyInstancesByPolicy
          where
         toHeaders = const mempty
@@ -341,3 +343,6 @@
 -- 'ListTrafficPolicyInstancesByPolicy' that produced the current response.
 ltpibprsMaxItems :: Lens' ListTrafficPolicyInstancesByPolicyResponse Text
 ltpibprsMaxItems = lens _ltpibprsMaxItems (\ s a -> s{_ltpibprsMaxItems = a});
+
+instance NFData
+         ListTrafficPolicyInstancesByPolicyResponse
diff --git a/gen/Network/AWS/Route53/ListTrafficPolicyVersions.hs b/gen/Network/AWS/Route53/ListTrafficPolicyVersions.hs
--- a/gen/Network/AWS/Route53/ListTrafficPolicyVersions.hs
+++ b/gen/Network/AWS/Route53/ListTrafficPolicyVersions.hs
@@ -135,6 +135,8 @@
 
 instance Hashable ListTrafficPolicyVersions
 
+instance NFData ListTrafficPolicyVersions
+
 instance ToHeaders ListTrafficPolicyVersions where
         toHeaders = const mempty
 
@@ -223,3 +225,5 @@
 -- 'ListTrafficPolicyVersions' that produced the current response.
 ltpvrsMaxItems :: Lens' ListTrafficPolicyVersionsResponse Text
 ltpvrsMaxItems = lens _ltpvrsMaxItems (\ s a -> s{_ltpvrsMaxItems = a});
+
+instance NFData ListTrafficPolicyVersionsResponse
diff --git a/gen/Network/AWS/Route53/Types.hs b/gen/Network/AWS/Route53/Types.hs
--- a/gen/Network/AWS/Route53/Types.hs
+++ b/gen/Network/AWS/Route53/Types.hs
@@ -67,21 +67,42 @@
     -- * ChangeStatus
     , ChangeStatus (..)
 
+    -- * CloudWatchRegion
+    , CloudWatchRegion (..)
+
+    -- * ComparisonOperator
+    , ComparisonOperator (..)
+
     -- * Failover
     , Failover (..)
 
+    -- * HealthCheckRegion
+    , HealthCheckRegion (..)
+
     -- * HealthCheckType
     , HealthCheckType (..)
 
+    -- * InsufficientDataHealthStatus
+    , InsufficientDataHealthStatus (..)
+
     -- * RecordType
     , RecordType (..)
 
+    -- * Statistic
+    , Statistic (..)
+
     -- * TagResourceType
     , TagResourceType (..)
 
     -- * VPCRegion
     , VPCRegion (..)
 
+    -- * AlarmIdentifier
+    , AlarmIdentifier
+    , alarmIdentifier
+    , aiRegion
+    , aiName
+
     -- * AliasTarget
     , AliasTarget
     , aliasTarget
@@ -109,6 +130,18 @@
     , ciStatus
     , ciSubmittedAt
 
+    -- * CloudWatchAlarmConfiguration
+    , CloudWatchAlarmConfiguration
+    , cloudWatchAlarmConfiguration
+    , cwacDimensions
+    , cwacEvaluationPeriods
+    , cwacThreshold
+    , cwacComparisonOperator
+    , cwacPeriod
+    , cwacMetricName
+    , cwacNamespace
+    , cwacStatistic
+
     -- * DelegationSet
     , DelegationSet
     , delegationSet
@@ -116,6 +149,12 @@
     , dsCallerReference
     , dsNameServers
 
+    -- * Dimension
+    , Dimension
+    , dimension
+    , dName
+    , dValue
+
     -- * GeoLocation
     , GeoLocation
     , geoLocation
@@ -136,6 +175,7 @@
     -- * HealthCheck
     , HealthCheck
     , healthCheck
+    , hcCloudWatchAlarmConfiguration
     , hcId
     , hcCallerReference
     , hcHealthCheckConfig
@@ -149,7 +189,10 @@
     , hccEnableSNI
     , hccSearchString
     , hccHealthThreshold
+    , hccRegions
     , hccResourcePath
+    , hccInsufficientDataHealthStatus
+    , hccAlarmIdentifier
     , hccMeasureLatency
     , hccInverted
     , hccFullyQualifiedDomainName
@@ -163,6 +206,7 @@
     , healthCheckObservation
     , hcoIPAddress
     , hcoStatusReport
+    , hcoRegion
 
     -- * HostedZone
     , HostedZone
@@ -294,8 +338,10 @@
       | has (hasCode "ThrottlingException" . hasStatus 400) e =
           Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
+      | has (hasStatus 504) e = Just "gateway_timeout"
       | has (hasCode "PriorRequestNotComplete" . hasStatus 400) e =
           Just "still_processing"
+      | has (hasStatus 502) e = Just "bad_gateway"
       | has (hasStatus 503) e = Just "service_unavailable"
       | has (hasStatus 500) e = Just "general_server_error"
       | has (hasStatus 509) e = Just "limit_exceeded"
diff --git a/gen/Network/AWS/Route53/Types/Product.hs b/gen/Network/AWS/Route53/Types/Product.hs
--- a/gen/Network/AWS/Route53/Types/Product.hs
+++ b/gen/Network/AWS/Route53/Types/Product.hs
@@ -22,6 +22,53 @@
 import           Network.AWS.Route53.Internal
 import           Network.AWS.Route53.Types.Sum
 
+-- | A complex type that contains information to uniquely identify the
+-- CloudWatch alarm that you\'re associating with a Route 53 health check.
+--
+-- /See:/ 'alarmIdentifier' smart constructor.
+data AlarmIdentifier = AlarmIdentifier'
+    { _aiRegion :: !CloudWatchRegion
+    , _aiName   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AlarmIdentifier' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aiRegion'
+--
+-- * 'aiName'
+alarmIdentifier
+    :: CloudWatchRegion -- ^ 'aiRegion'
+    -> Text -- ^ 'aiName'
+    -> AlarmIdentifier
+alarmIdentifier pRegion_ pName_ =
+    AlarmIdentifier'
+    { _aiRegion = pRegion_
+    , _aiName = pName_
+    }
+
+-- | The 'CloudWatchRegion' that the CloudWatch alarm was created in.
+aiRegion :: Lens' AlarmIdentifier CloudWatchRegion
+aiRegion = lens _aiRegion (\ s a -> s{_aiRegion = a});
+
+-- | The name of the CloudWatch alarm.
+aiName :: Lens' AlarmIdentifier Text
+aiName = lens _aiName (\ s a -> s{_aiName = a});
+
+instance FromXML AlarmIdentifier where
+        parseXML x
+          = AlarmIdentifier' <$>
+              (x .@ "Region") <*> (x .@ "Name")
+
+instance Hashable AlarmIdentifier
+
+instance NFData AlarmIdentifier
+
+instance ToXML AlarmIdentifier where
+        toXML AlarmIdentifier'{..}
+          = mconcat ["Region" @= _aiRegion, "Name" @= _aiName]
+
 -- | /Alias resource record sets only:/ Information about the CloudFront
 -- distribution, ELB load balancer, Amazon S3 bucket, or Amazon Route 53
 -- resource record set to which you are routing traffic.
@@ -213,6 +260,8 @@
 
 instance Hashable AliasTarget
 
+instance NFData AliasTarget
+
 instance ToXML AliasTarget where
         toXML AliasTarget'{..}
           = mconcat
@@ -270,6 +319,8 @@
 
 instance Hashable Change
 
+instance NFData Change
+
 instance ToXML Change where
         toXML Change'{..}
           = mconcat
@@ -313,6 +364,8 @@
 
 instance Hashable ChangeBatch
 
+instance NFData ChangeBatch
+
 instance ToXML ChangeBatch where
         toXML ChangeBatch'{..}
           = mconcat
@@ -392,6 +445,132 @@
 
 instance Hashable ChangeInfo
 
+instance NFData ChangeInfo
+
+-- | For CLOUDWATCH_METRIC health checks, a complex type that contains
+-- information about the CloudWatch alarm that you\'re associating with the
+-- health check.
+--
+-- /See:/ 'cloudWatchAlarmConfiguration' smart constructor.
+data CloudWatchAlarmConfiguration = CloudWatchAlarmConfiguration'
+    { _cwacDimensions         :: !(Maybe [Dimension])
+    , _cwacEvaluationPeriods  :: !Nat
+    , _cwacThreshold          :: !Double
+    , _cwacComparisonOperator :: !ComparisonOperator
+    , _cwacPeriod             :: !Nat
+    , _cwacMetricName         :: !Text
+    , _cwacNamespace          :: !Text
+    , _cwacStatistic          :: !Statistic
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CloudWatchAlarmConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cwacDimensions'
+--
+-- * 'cwacEvaluationPeriods'
+--
+-- * 'cwacThreshold'
+--
+-- * 'cwacComparisonOperator'
+--
+-- * 'cwacPeriod'
+--
+-- * 'cwacMetricName'
+--
+-- * 'cwacNamespace'
+--
+-- * 'cwacStatistic'
+cloudWatchAlarmConfiguration
+    :: Natural -- ^ 'cwacEvaluationPeriods'
+    -> Double -- ^ 'cwacThreshold'
+    -> ComparisonOperator -- ^ 'cwacComparisonOperator'
+    -> Natural -- ^ 'cwacPeriod'
+    -> Text -- ^ 'cwacMetricName'
+    -> Text -- ^ 'cwacNamespace'
+    -> Statistic -- ^ 'cwacStatistic'
+    -> CloudWatchAlarmConfiguration
+cloudWatchAlarmConfiguration pEvaluationPeriods_ pThreshold_ pComparisonOperator_ pPeriod_ pMetricName_ pNamespace_ pStatistic_ =
+    CloudWatchAlarmConfiguration'
+    { _cwacDimensions = Nothing
+    , _cwacEvaluationPeriods = _Nat # pEvaluationPeriods_
+    , _cwacThreshold = pThreshold_
+    , _cwacComparisonOperator = pComparisonOperator_
+    , _cwacPeriod = _Nat # pPeriod_
+    , _cwacMetricName = pMetricName_
+    , _cwacNamespace = pNamespace_
+    , _cwacStatistic = pStatistic_
+    }
+
+-- | A list of 'Dimension' elements for the CloudWatch metric that is
+-- associated with the CloudWatch alarm. For information about the metrics
+-- and dimensions that CloudWatch supports, see
+-- <http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html Amazon CloudWatch Namespaces, Dimensions, and Metrics Reference>.
+cwacDimensions :: Lens' CloudWatchAlarmConfiguration [Dimension]
+cwacDimensions = lens _cwacDimensions (\ s a -> s{_cwacDimensions = a}) . _Default . _Coerce;
+
+-- | The number of periods over which data is compared to the specified
+-- threshold.
+cwacEvaluationPeriods :: Lens' CloudWatchAlarmConfiguration Natural
+cwacEvaluationPeriods = lens _cwacEvaluationPeriods (\ s a -> s{_cwacEvaluationPeriods = a}) . _Nat;
+
+-- | The value that the metric is compared with to determine the state of the
+-- alarm. For example, if you want the health check to fail if the average
+-- TCP connection time is greater than 500 milliseconds for more than 60
+-- seconds, the threshold is 500.
+cwacThreshold :: Lens' CloudWatchAlarmConfiguration Double
+cwacThreshold = lens _cwacThreshold (\ s a -> s{_cwacThreshold = a});
+
+-- | The arithmetic operation to use when comparing the specified Statistic
+-- and Threshold.
+--
+-- Valid Values are 'GreaterThanOrEqualToThreshold',
+-- 'GreaterThanThreshold', 'LessThanThreshold' and
+-- 'LessThanOrEqualToThreshold'
+cwacComparisonOperator :: Lens' CloudWatchAlarmConfiguration ComparisonOperator
+cwacComparisonOperator = lens _cwacComparisonOperator (\ s a -> s{_cwacComparisonOperator = a});
+
+-- | An integer that represents the period in seconds over which the
+-- statistic is applied.
+cwacPeriod :: Lens' CloudWatchAlarmConfiguration Natural
+cwacPeriod = lens _cwacPeriod (\ s a -> s{_cwacPeriod = a}) . _Nat;
+
+-- | The name of the CloudWatch metric that is associated with the CloudWatch
+-- alarm.
+cwacMetricName :: Lens' CloudWatchAlarmConfiguration Text
+cwacMetricName = lens _cwacMetricName (\ s a -> s{_cwacMetricName = a});
+
+-- | The namespace of the CloudWatch metric that is associated with the
+-- CloudWatch alarm.
+cwacNamespace :: Lens' CloudWatchAlarmConfiguration Text
+cwacNamespace = lens _cwacNamespace (\ s a -> s{_cwacNamespace = a});
+
+-- | The statistic to apply to the CloudWatch metric that is associated with
+-- the CloudWatch alarm.
+--
+-- Valid Values are 'SampleCount', 'Average', 'Sum', 'Minimum' and
+-- 'Maximum'
+cwacStatistic :: Lens' CloudWatchAlarmConfiguration Statistic
+cwacStatistic = lens _cwacStatistic (\ s a -> s{_cwacStatistic = a});
+
+instance FromXML CloudWatchAlarmConfiguration where
+        parseXML x
+          = CloudWatchAlarmConfiguration' <$>
+              (x .@? "Dimensions" .!@ mempty >>=
+                 may (parseXMLList "Dimension"))
+                <*> (x .@ "EvaluationPeriods")
+                <*> (x .@ "Threshold")
+                <*> (x .@ "ComparisonOperator")
+                <*> (x .@ "Period")
+                <*> (x .@ "MetricName")
+                <*> (x .@ "Namespace")
+                <*> (x .@ "Statistic")
+
+instance Hashable CloudWatchAlarmConfiguration
+
+instance NFData CloudWatchAlarmConfiguration
+
 -- | A complex type that contains name server information.
 --
 -- /See:/ 'delegationSet' smart constructor.
@@ -444,6 +623,49 @@
 
 instance Hashable DelegationSet
 
+instance NFData DelegationSet
+
+-- | The name and value of a dimension for a CloudWatch metric.
+--
+-- /See:/ 'dimension' smart constructor.
+data Dimension = Dimension'
+    { _dName  :: !Text
+    , _dValue :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Dimension' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dName'
+--
+-- * 'dValue'
+dimension
+    :: Text -- ^ 'dName'
+    -> Text -- ^ 'dValue'
+    -> Dimension
+dimension pName_ pValue_ =
+    Dimension'
+    { _dName = pName_
+    , _dValue = pValue_
+    }
+
+-- | The name of the dimension.
+dName :: Lens' Dimension Text
+dName = lens _dName (\ s a -> s{_dName = a});
+
+-- | The value of the dimension.
+dValue :: Lens' Dimension Text
+dValue = lens _dValue (\ s a -> s{_dValue = a});
+
+instance FromXML Dimension where
+        parseXML x
+          = Dimension' <$> (x .@ "Name") <*> (x .@ "Value")
+
+instance Hashable Dimension
+
+instance NFData Dimension
+
 -- | A complex type that contains information about a geo location.
 --
 -- /See:/ 'geoLocation' smart constructor.
@@ -506,6 +728,8 @@
 
 instance Hashable GeoLocation
 
+instance NFData GeoLocation
+
 instance ToXML GeoLocation where
         toXML GeoLocation'{..}
           = mconcat
@@ -598,21 +822,26 @@
 
 instance Hashable GeoLocationDetails
 
+instance NFData GeoLocationDetails
+
 -- | A complex type that contains identifying information about the health
 -- check.
 --
 -- /See:/ 'healthCheck' smart constructor.
 data HealthCheck = HealthCheck'
-    { _hcId                 :: !Text
-    , _hcCallerReference    :: !Text
-    , _hcHealthCheckConfig  :: !HealthCheckConfig
-    , _hcHealthCheckVersion :: !Nat
+    { _hcCloudWatchAlarmConfiguration :: !(Maybe CloudWatchAlarmConfiguration)
+    , _hcId                           :: !Text
+    , _hcCallerReference              :: !Text
+    , _hcHealthCheckConfig            :: !HealthCheckConfig
+    , _hcHealthCheckVersion           :: !Nat
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'HealthCheck' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'hcCloudWatchAlarmConfiguration'
+--
 -- * 'hcId'
 --
 -- * 'hcCallerReference'
@@ -628,12 +857,19 @@
     -> HealthCheck
 healthCheck pId_ pCallerReference_ pHealthCheckConfig_ pHealthCheckVersion_ =
     HealthCheck'
-    { _hcId = pId_
+    { _hcCloudWatchAlarmConfiguration = Nothing
+    , _hcId = pId_
     , _hcCallerReference = pCallerReference_
     , _hcHealthCheckConfig = pHealthCheckConfig_
     , _hcHealthCheckVersion = _Nat # pHealthCheckVersion_
     }
 
+-- | For CLOUDWATCH_METRIC health checks, a complex type that contains
+-- information about the CloudWatch alarm that you\'re associating with the
+-- health check.
+hcCloudWatchAlarmConfiguration :: Lens' HealthCheck (Maybe CloudWatchAlarmConfiguration)
+hcCloudWatchAlarmConfiguration = lens _hcCloudWatchAlarmConfiguration (\ s a -> s{_hcCloudWatchAlarmConfiguration = a});
+
 -- | The ID of the specified health check.
 hcId :: Lens' HealthCheck Text
 hcId = lens _hcId (\ s a -> s{_hcId = a});
@@ -655,29 +891,36 @@
 instance FromXML HealthCheck where
         parseXML x
           = HealthCheck' <$>
-              (x .@ "Id") <*> (x .@ "CallerReference") <*>
-                (x .@ "HealthCheckConfig")
+              (x .@? "CloudWatchAlarmConfiguration") <*>
+                (x .@ "Id")
+                <*> (x .@ "CallerReference")
+                <*> (x .@ "HealthCheckConfig")
                 <*> (x .@ "HealthCheckVersion")
 
 instance Hashable HealthCheck
 
+instance NFData HealthCheck
+
 -- | A complex type that contains the health check configuration.
 --
 -- /See:/ 'healthCheckConfig' smart constructor.
 data HealthCheckConfig = HealthCheckConfig'
-    { _hccFailureThreshold         :: !(Maybe Nat)
-    , _hccIPAddress                :: !(Maybe Text)
-    , _hccEnableSNI                :: !(Maybe Bool)
-    , _hccSearchString             :: !(Maybe Text)
-    , _hccHealthThreshold          :: !(Maybe Nat)
-    , _hccResourcePath             :: !(Maybe Text)
-    , _hccMeasureLatency           :: !(Maybe Bool)
-    , _hccInverted                 :: !(Maybe Bool)
-    , _hccFullyQualifiedDomainName :: !(Maybe Text)
-    , _hccChildHealthChecks        :: !(Maybe [Text])
-    , _hccRequestInterval          :: !(Maybe Nat)
-    , _hccPort                     :: !(Maybe Nat)
-    , _hccType                     :: !HealthCheckType
+    { _hccFailureThreshold             :: !(Maybe Nat)
+    , _hccIPAddress                    :: !(Maybe Text)
+    , _hccEnableSNI                    :: !(Maybe Bool)
+    , _hccSearchString                 :: !(Maybe Text)
+    , _hccHealthThreshold              :: !(Maybe Nat)
+    , _hccRegions                      :: !(Maybe (List1 HealthCheckRegion))
+    , _hccResourcePath                 :: !(Maybe Text)
+    , _hccInsufficientDataHealthStatus :: !(Maybe InsufficientDataHealthStatus)
+    , _hccAlarmIdentifier              :: !(Maybe AlarmIdentifier)
+    , _hccMeasureLatency               :: !(Maybe Bool)
+    , _hccInverted                     :: !(Maybe Bool)
+    , _hccFullyQualifiedDomainName     :: !(Maybe Text)
+    , _hccChildHealthChecks            :: !(Maybe [Text])
+    , _hccRequestInterval              :: !(Maybe Nat)
+    , _hccPort                         :: !(Maybe Nat)
+    , _hccType                         :: !HealthCheckType
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'HealthCheckConfig' with the minimum fields required to make a request.
@@ -694,8 +937,14 @@
 --
 -- * 'hccHealthThreshold'
 --
+-- * 'hccRegions'
+--
 -- * 'hccResourcePath'
 --
+-- * 'hccInsufficientDataHealthStatus'
+--
+-- * 'hccAlarmIdentifier'
+--
 -- * 'hccMeasureLatency'
 --
 -- * 'hccInverted'
@@ -719,7 +968,10 @@
     , _hccEnableSNI = Nothing
     , _hccSearchString = Nothing
     , _hccHealthThreshold = Nothing
+    , _hccRegions = Nothing
     , _hccResourcePath = Nothing
+    , _hccInsufficientDataHealthStatus = Nothing
+    , _hccAlarmIdentifier = Nothing
     , _hccMeasureLatency = Nothing
     , _hccInverted = Nothing
     , _hccFullyQualifiedDomainName = Nothing
@@ -764,12 +1016,29 @@
 hccHealthThreshold :: Lens' HealthCheckConfig (Maybe Natural)
 hccHealthThreshold = lens _hccHealthThreshold (\ s a -> s{_hccHealthThreshold = a}) . mapping _Nat;
 
+-- | A list of 'HealthCheckRegion' values that you want Amazon Route 53 to
+-- use to perform health checks for the specified endpoint. You must
+-- specify at least three regions.
+hccRegions :: Lens' HealthCheckConfig (Maybe (NonEmpty HealthCheckRegion))
+hccRegions = lens _hccRegions (\ s a -> s{_hccRegions = a}) . mapping _List1;
+
 -- | Path to ping on the instance to check the health. Required for HTTP,
 -- HTTPS, HTTP_STR_MATCH, and HTTPS_STR_MATCH health checks. The HTTP
 -- request is issued to the instance on the given port and path.
 hccResourcePath :: Lens' HealthCheckConfig (Maybe Text)
 hccResourcePath = lens _hccResourcePath (\ s a -> s{_hccResourcePath = a});
 
+-- | The status of the health check when CloudWatch has insufficient data
+-- about the state of associated alarm. Valid values are 'Healthy',
+-- 'Unhealthy' and 'LastKnownStatus'.
+hccInsufficientDataHealthStatus :: Lens' HealthCheckConfig (Maybe InsufficientDataHealthStatus)
+hccInsufficientDataHealthStatus = lens _hccInsufficientDataHealthStatus (\ s a -> s{_hccInsufficientDataHealthStatus = a});
+
+-- | A complex type that contains information to uniquely identify the
+-- CloudWatch alarm that you\'re associating with a Route 53 health check.
+hccAlarmIdentifier :: Lens' HealthCheckConfig (Maybe AlarmIdentifier)
+hccAlarmIdentifier = lens _hccAlarmIdentifier (\ s a -> s{_hccAlarmIdentifier = a});
+
 -- | A Boolean value that indicates whether you want Amazon Route 53 to
 -- measure the latency between health checkers in multiple AWS regions and
 -- your endpoint and to display CloudWatch latency graphs in the Amazon
@@ -809,7 +1078,8 @@
 hccPort = lens _hccPort (\ s a -> s{_hccPort = a}) . mapping _Nat;
 
 -- | The type of health check to be performed. Currently supported types are
--- TCP, HTTP, HTTPS, HTTP_STR_MATCH, and HTTPS_STR_MATCH.
+-- TCP, HTTP, HTTPS, HTTP_STR_MATCH, HTTPS_STR_MATCH, CALCULATED and
+-- CLOUDWATCH_METRIC.
 hccType :: Lens' HealthCheckConfig HealthCheckType
 hccType = lens _hccType (\ s a -> s{_hccType = a});
 
@@ -820,7 +1090,12 @@
                 <*> (x .@? "EnableSNI")
                 <*> (x .@? "SearchString")
                 <*> (x .@? "HealthThreshold")
+                <*>
+                (x .@? "Regions" .!@ mempty >>=
+                   may (parseXMLList1 "Region"))
                 <*> (x .@? "ResourcePath")
+                <*> (x .@? "InsufficientDataHealthStatus")
+                <*> (x .@? "AlarmIdentifier")
                 <*> (x .@? "MeasureLatency")
                 <*> (x .@? "Inverted")
                 <*> (x .@? "FullyQualifiedDomainName")
@@ -833,6 +1108,8 @@
 
 instance Hashable HealthCheckConfig
 
+instance NFData HealthCheckConfig
+
 instance ToXML HealthCheckConfig where
         toXML HealthCheckConfig'{..}
           = mconcat
@@ -841,7 +1118,12 @@
                "EnableSNI" @= _hccEnableSNI,
                "SearchString" @= _hccSearchString,
                "HealthThreshold" @= _hccHealthThreshold,
+               "Regions" @=
+                 toXML (toXMLList "Region" <$> _hccRegions),
                "ResourcePath" @= _hccResourcePath,
+               "InsufficientDataHealthStatus" @=
+                 _hccInsufficientDataHealthStatus,
+               "AlarmIdentifier" @= _hccAlarmIdentifier,
                "MeasureLatency" @= _hccMeasureLatency,
                "Inverted" @= _hccInverted,
                "FullyQualifiedDomainName" @=
@@ -860,6 +1142,7 @@
 data HealthCheckObservation = HealthCheckObservation'
     { _hcoIPAddress    :: !(Maybe Text)
     , _hcoStatusReport :: !(Maybe StatusReport)
+    , _hcoRegion       :: !(Maybe HealthCheckRegion)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'HealthCheckObservation' with the minimum fields required to make a request.
@@ -869,15 +1152,18 @@
 -- * 'hcoIPAddress'
 --
 -- * 'hcoStatusReport'
+--
+-- * 'hcoRegion'
 healthCheckObservation
     :: HealthCheckObservation
 healthCheckObservation =
     HealthCheckObservation'
     { _hcoIPAddress = Nothing
     , _hcoStatusReport = Nothing
+    , _hcoRegion = Nothing
     }
 
--- | The IP address of the Amazon Route 53 health checker that performed the
+-- | The IP address of the Amazon Route 53 health checker that performed this
 -- health check.
 hcoIPAddress :: Lens' HealthCheckObservation (Maybe Text)
 hcoIPAddress = lens _hcoIPAddress (\ s a -> s{_hcoIPAddress = a});
@@ -887,13 +1173,21 @@
 hcoStatusReport :: Lens' HealthCheckObservation (Maybe StatusReport)
 hcoStatusReport = lens _hcoStatusReport (\ s a -> s{_hcoStatusReport = a});
 
+-- | The 'HealthCheckRegion' of the Amazon Route 53 health checker that
+-- performed this health check.
+hcoRegion :: Lens' HealthCheckObservation (Maybe HealthCheckRegion)
+hcoRegion = lens _hcoRegion (\ s a -> s{_hcoRegion = a});
+
 instance FromXML HealthCheckObservation where
         parseXML x
           = HealthCheckObservation' <$>
-              (x .@? "IPAddress") <*> (x .@? "StatusReport")
+              (x .@? "IPAddress") <*> (x .@? "StatusReport") <*>
+                (x .@? "Region")
 
 instance Hashable HealthCheckObservation
 
+instance NFData HealthCheckObservation
+
 -- | A complex type that contain information about the specified hosted zone.
 --
 -- /See:/ 'hostedZone' smart constructor.
@@ -970,6 +1264,8 @@
 
 instance Hashable HostedZone
 
+instance NFData HostedZone
+
 -- | A complex type that contains an optional comment about your hosted zone.
 -- If you don\'t want to specify a comment, you can omit the
 -- 'HostedZoneConfig' and 'Comment' elements from the XML document.
@@ -1012,6 +1308,8 @@
 
 instance Hashable HostedZoneConfig
 
+instance NFData HostedZoneConfig
+
 instance ToXML HostedZoneConfig where
         toXML HostedZoneConfig'{..}
           = mconcat
@@ -1056,6 +1354,8 @@
 
 instance Hashable ResourceRecord
 
+instance NFData ResourceRecord
+
 instance ToXML ResourceRecord where
         toXML ResourceRecord'{..}
           = mconcat ["Value" @= _rrValue]
@@ -1407,6 +1707,8 @@
 
 instance Hashable ResourceRecordSet
 
+instance NFData ResourceRecordSet
+
 instance ToXML ResourceRecordSet where
         toXML ResourceRecordSet'{..}
           = mconcat
@@ -1477,6 +1779,8 @@
 
 instance Hashable ResourceTagSet
 
+instance NFData ResourceTagSet
+
 -- | A complex type that contains information about the health check status
 -- for the current observation.
 --
@@ -1519,6 +1823,8 @@
 
 instance Hashable StatusReport
 
+instance NFData StatusReport
+
 -- | A single tag containing a key and value.
 --
 -- /See:/ 'tag' smart constructor.
@@ -1556,6 +1862,8 @@
 
 instance Hashable Tag
 
+instance NFData Tag
+
 instance ToXML Tag where
         toXML Tag'{..}
           = mconcat ["Value" @= _tagValue, "Key" @= _tagKey]
@@ -1637,6 +1945,8 @@
 
 instance Hashable TrafficPolicy
 
+instance NFData TrafficPolicy
+
 -- | /See:/ 'trafficPolicyInstance' smart constructor.
 data TrafficPolicyInstance = TrafficPolicyInstance'
     { _tpiId                   :: !Text
@@ -1745,6 +2055,8 @@
 
 instance Hashable TrafficPolicyInstance
 
+instance NFData TrafficPolicyInstance
+
 -- | /See:/ 'trafficPolicySummary' smart constructor.
 data TrafficPolicySummary = TrafficPolicySummary'
     { _tpsId                 :: !Text
@@ -1812,6 +2124,8 @@
 
 instance Hashable TrafficPolicySummary
 
+instance NFData TrafficPolicySummary
+
 -- | /See:/ 'vpc' smart constructor.
 data VPC = VPC'
     { _vpcVPCRegion :: !(Maybe VPCRegion)
@@ -1846,6 +2160,8 @@
           = VPC' <$> (x .@? "VPCRegion") <*> (x .@? "VPCId")
 
 instance Hashable VPC
+
+instance NFData VPC
 
 instance ToXML VPC where
         toXML VPC'{..}
diff --git a/gen/Network/AWS/Route53/Types/Sum.hs b/gen/Network/AWS/Route53/Types/Sum.hs
--- a/gen/Network/AWS/Route53/Types/Sum.hs
+++ b/gen/Network/AWS/Route53/Types/Sum.hs
@@ -41,6 +41,7 @@
         Upsert -> "UPSERT"
 
 instance Hashable     ChangeAction
+instance NFData       ChangeAction
 instance ToByteString ChangeAction
 instance ToQuery      ChangeAction
 instance ToHeader     ChangeAction
@@ -66,6 +67,7 @@
         Pending -> "PENDING"
 
 instance Hashable     ChangeStatus
+instance NFData       ChangeStatus
 instance ToByteString ChangeStatus
 instance ToQuery      ChangeStatus
 instance ToHeader     ChangeStatus
@@ -73,6 +75,91 @@
 instance FromXML ChangeStatus where
     parseXML = parseXMLText "ChangeStatus"
 
+data CloudWatchRegion
+    = CWRApNortheast1
+    | CWRApNortheast2
+    | CWRApSoutheast1
+    | CWRApSoutheast2
+    | CWREuCentral1
+    | CWREuWest1
+    | CWRSaEast1
+    | CWRUsEast1
+    | CWRUsWest1
+    | CWRUsWest2
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText CloudWatchRegion where
+    parser = takeLowerText >>= \case
+        "ap-northeast-1" -> pure CWRApNortheast1
+        "ap-northeast-2" -> pure CWRApNortheast2
+        "ap-southeast-1" -> pure CWRApSoutheast1
+        "ap-southeast-2" -> pure CWRApSoutheast2
+        "eu-central-1" -> pure CWREuCentral1
+        "eu-west-1" -> pure CWREuWest1
+        "sa-east-1" -> pure CWRSaEast1
+        "us-east-1" -> pure CWRUsEast1
+        "us-west-1" -> pure CWRUsWest1
+        "us-west-2" -> pure CWRUsWest2
+        e -> fromTextError $ "Failure parsing CloudWatchRegion from value: '" <> e
+           <> "'. Accepted values: ap-northeast-1, ap-northeast-2, ap-southeast-1, ap-southeast-2, eu-central-1, eu-west-1, sa-east-1, us-east-1, us-west-1, us-west-2"
+
+instance ToText CloudWatchRegion where
+    toText = \case
+        CWRApNortheast1 -> "ap-northeast-1"
+        CWRApNortheast2 -> "ap-northeast-2"
+        CWRApSoutheast1 -> "ap-southeast-1"
+        CWRApSoutheast2 -> "ap-southeast-2"
+        CWREuCentral1 -> "eu-central-1"
+        CWREuWest1 -> "eu-west-1"
+        CWRSaEast1 -> "sa-east-1"
+        CWRUsEast1 -> "us-east-1"
+        CWRUsWest1 -> "us-west-1"
+        CWRUsWest2 -> "us-west-2"
+
+instance Hashable     CloudWatchRegion
+instance NFData       CloudWatchRegion
+instance ToByteString CloudWatchRegion
+instance ToQuery      CloudWatchRegion
+instance ToHeader     CloudWatchRegion
+
+instance FromXML CloudWatchRegion where
+    parseXML = parseXMLText "CloudWatchRegion"
+
+instance ToXML CloudWatchRegion where
+    toXML = toXMLText
+
+data ComparisonOperator
+    = GreaterThanOrEqualToThreshold
+    | GreaterThanThreshold
+    | LessThanOrEqualToThreshold
+    | LessThanThreshold
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText ComparisonOperator where
+    parser = takeLowerText >>= \case
+        "greaterthanorequaltothreshold" -> pure GreaterThanOrEqualToThreshold
+        "greaterthanthreshold" -> pure GreaterThanThreshold
+        "lessthanorequaltothreshold" -> pure LessThanOrEqualToThreshold
+        "lessthanthreshold" -> pure LessThanThreshold
+        e -> fromTextError $ "Failure parsing ComparisonOperator from value: '" <> e
+           <> "'. Accepted values: GreaterThanOrEqualToThreshold, GreaterThanThreshold, LessThanOrEqualToThreshold, LessThanThreshold"
+
+instance ToText ComparisonOperator where
+    toText = \case
+        GreaterThanOrEqualToThreshold -> "GreaterThanOrEqualToThreshold"
+        GreaterThanThreshold -> "GreaterThanThreshold"
+        LessThanOrEqualToThreshold -> "LessThanOrEqualToThreshold"
+        LessThanThreshold -> "LessThanThreshold"
+
+instance Hashable     ComparisonOperator
+instance NFData       ComparisonOperator
+instance ToByteString ComparisonOperator
+instance ToQuery      ComparisonOperator
+instance ToHeader     ComparisonOperator
+
+instance FromXML ComparisonOperator where
+    parseXML = parseXMLText "ComparisonOperator"
+
 data Failover
     = Primary
     | Secondary
@@ -91,6 +178,7 @@
         Secondary -> "SECONDARY"
 
 instance Hashable     Failover
+instance NFData       Failover
 instance ToByteString Failover
 instance ToQuery      Failover
 instance ToHeader     Failover
@@ -101,8 +189,58 @@
 instance ToXML Failover where
     toXML = toXMLText
 
+-- | An Amazon EC2 region that you want Amazon Route 53 to use to perform
+-- health checks.
+data HealthCheckRegion
+    = HCRApNortheast1
+    | HCRApSoutheast1
+    | HCRApSoutheast2
+    | HCREuWest1
+    | HCRSaEast1
+    | HCRUsEast1
+    | HCRUsWest1
+    | HCRUsWest2
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText HealthCheckRegion where
+    parser = takeLowerText >>= \case
+        "ap-northeast-1" -> pure HCRApNortheast1
+        "ap-southeast-1" -> pure HCRApSoutheast1
+        "ap-southeast-2" -> pure HCRApSoutheast2
+        "eu-west-1" -> pure HCREuWest1
+        "sa-east-1" -> pure HCRSaEast1
+        "us-east-1" -> pure HCRUsEast1
+        "us-west-1" -> pure HCRUsWest1
+        "us-west-2" -> pure HCRUsWest2
+        e -> fromTextError $ "Failure parsing HealthCheckRegion from value: '" <> e
+           <> "'. Accepted values: ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-west-1, sa-east-1, us-east-1, us-west-1, us-west-2"
+
+instance ToText HealthCheckRegion where
+    toText = \case
+        HCRApNortheast1 -> "ap-northeast-1"
+        HCRApSoutheast1 -> "ap-southeast-1"
+        HCRApSoutheast2 -> "ap-southeast-2"
+        HCREuWest1 -> "eu-west-1"
+        HCRSaEast1 -> "sa-east-1"
+        HCRUsEast1 -> "us-east-1"
+        HCRUsWest1 -> "us-west-1"
+        HCRUsWest2 -> "us-west-2"
+
+instance Hashable     HealthCheckRegion
+instance NFData       HealthCheckRegion
+instance ToByteString HealthCheckRegion
+instance ToQuery      HealthCheckRegion
+instance ToHeader     HealthCheckRegion
+
+instance FromXML HealthCheckRegion where
+    parseXML = parseXMLText "HealthCheckRegion"
+
+instance ToXML HealthCheckRegion where
+    toXML = toXMLText
+
 data HealthCheckType
     = Calculated
+    | CloudwatchMetric
     | HTTP
     | HTTPS
     | HTTPSStrMatch
@@ -113,17 +251,19 @@
 instance FromText HealthCheckType where
     parser = takeLowerText >>= \case
         "calculated" -> pure Calculated
+        "cloudwatch_metric" -> pure CloudwatchMetric
         "http" -> pure HTTP
         "https" -> pure HTTPS
         "https_str_match" -> pure HTTPSStrMatch
         "http_str_match" -> pure HTTPStrMatch
         "tcp" -> pure TCP
         e -> fromTextError $ "Failure parsing HealthCheckType from value: '" <> e
-           <> "'. Accepted values: CALCULATED, HTTP, HTTPS, HTTPS_STR_MATCH, HTTP_STR_MATCH, TCP"
+           <> "'. Accepted values: CALCULATED, CLOUDWATCH_METRIC, HTTP, HTTPS, HTTPS_STR_MATCH, HTTP_STR_MATCH, TCP"
 
 instance ToText HealthCheckType where
     toText = \case
         Calculated -> "CALCULATED"
+        CloudwatchMetric -> "CLOUDWATCH_METRIC"
         HTTP -> "HTTP"
         HTTPS -> "HTTPS"
         HTTPSStrMatch -> "HTTPS_STR_MATCH"
@@ -131,6 +271,7 @@
         TCP -> "TCP"
 
 instance Hashable     HealthCheckType
+instance NFData       HealthCheckType
 instance ToByteString HealthCheckType
 instance ToQuery      HealthCheckType
 instance ToHeader     HealthCheckType
@@ -141,6 +282,38 @@
 instance ToXML HealthCheckType where
     toXML = toXMLText
 
+data InsufficientDataHealthStatus
+    = Healthy
+    | LastKnownStatus
+    | Unhealthy
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText InsufficientDataHealthStatus where
+    parser = takeLowerText >>= \case
+        "healthy" -> pure Healthy
+        "lastknownstatus" -> pure LastKnownStatus
+        "unhealthy" -> pure Unhealthy
+        e -> fromTextError $ "Failure parsing InsufficientDataHealthStatus from value: '" <> e
+           <> "'. Accepted values: Healthy, LastKnownStatus, Unhealthy"
+
+instance ToText InsufficientDataHealthStatus where
+    toText = \case
+        Healthy -> "Healthy"
+        LastKnownStatus -> "LastKnownStatus"
+        Unhealthy -> "Unhealthy"
+
+instance Hashable     InsufficientDataHealthStatus
+instance NFData       InsufficientDataHealthStatus
+instance ToByteString InsufficientDataHealthStatus
+instance ToQuery      InsufficientDataHealthStatus
+instance ToHeader     InsufficientDataHealthStatus
+
+instance FromXML InsufficientDataHealthStatus where
+    parseXML = parseXMLText "InsufficientDataHealthStatus"
+
+instance ToXML InsufficientDataHealthStatus where
+    toXML = toXMLText
+
 data RecordType
     = A
     | Aaaa
@@ -183,6 +356,7 @@
         Txt -> "TXT"
 
 instance Hashable     RecordType
+instance NFData       RecordType
 instance ToByteString RecordType
 instance ToQuery      RecordType
 instance ToHeader     RecordType
@@ -193,6 +367,41 @@
 instance ToXML RecordType where
     toXML = toXMLText
 
+data Statistic
+    = Average
+    | Maximum
+    | Minimum
+    | SampleCount
+    | Sum
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText Statistic where
+    parser = takeLowerText >>= \case
+        "average" -> pure Average
+        "maximum" -> pure Maximum
+        "minimum" -> pure Minimum
+        "samplecount" -> pure SampleCount
+        "sum" -> pure Sum
+        e -> fromTextError $ "Failure parsing Statistic from value: '" <> e
+           <> "'. Accepted values: Average, Maximum, Minimum, SampleCount, Sum"
+
+instance ToText Statistic where
+    toText = \case
+        Average -> "Average"
+        Maximum -> "Maximum"
+        Minimum -> "Minimum"
+        SampleCount -> "SampleCount"
+        Sum -> "Sum"
+
+instance Hashable     Statistic
+instance NFData       Statistic
+instance ToByteString Statistic
+instance ToQuery      Statistic
+instance ToHeader     Statistic
+
+instance FromXML Statistic where
+    parseXML = parseXMLText "Statistic"
+
 data TagResourceType
     = Healthcheck
     | Hostedzone
@@ -211,6 +420,7 @@
         Hostedzone -> "hostedzone"
 
 instance Hashable     TagResourceType
+instance NFData       TagResourceType
 instance ToByteString TagResourceType
 instance ToQuery      TagResourceType
 instance ToHeader     TagResourceType
@@ -266,6 +476,7 @@
         UsWest2 -> "us-west-2"
 
 instance Hashable     VPCRegion
+instance NFData       VPCRegion
 instance ToByteString VPCRegion
 instance ToQuery      VPCRegion
 instance ToHeader     VPCRegion
diff --git a/gen/Network/AWS/Route53/UpdateHealthCheck.hs b/gen/Network/AWS/Route53/UpdateHealthCheck.hs
--- a/gen/Network/AWS/Route53/UpdateHealthCheck.hs
+++ b/gen/Network/AWS/Route53/UpdateHealthCheck.hs
@@ -36,8 +36,11 @@
     , uhcEnableSNI
     , uhcSearchString
     , uhcHealthThreshold
+    , uhcRegions
     , uhcResourcePath
+    , uhcInsufficientDataHealthStatus
     , uhcHealthCheckVersion
+    , uhcAlarmIdentifier
     , uhcInverted
     , uhcFullyQualifiedDomainName
     , uhcChildHealthChecks
@@ -64,18 +67,21 @@
 --
 -- /See:/ 'updateHealthCheck' smart constructor.
 data UpdateHealthCheck = UpdateHealthCheck'
-    { _uhcFailureThreshold         :: !(Maybe Nat)
-    , _uhcIPAddress                :: !(Maybe Text)
-    , _uhcEnableSNI                :: !(Maybe Bool)
-    , _uhcSearchString             :: !(Maybe Text)
-    , _uhcHealthThreshold          :: !(Maybe Nat)
-    , _uhcResourcePath             :: !(Maybe Text)
-    , _uhcHealthCheckVersion       :: !(Maybe Nat)
-    , _uhcInverted                 :: !(Maybe Bool)
-    , _uhcFullyQualifiedDomainName :: !(Maybe Text)
-    , _uhcChildHealthChecks        :: !(Maybe [Text])
-    , _uhcPort                     :: !(Maybe Nat)
-    , _uhcHealthCheckId            :: !Text
+    { _uhcFailureThreshold             :: !(Maybe Nat)
+    , _uhcIPAddress                    :: !(Maybe Text)
+    , _uhcEnableSNI                    :: !(Maybe Bool)
+    , _uhcSearchString                 :: !(Maybe Text)
+    , _uhcHealthThreshold              :: !(Maybe Nat)
+    , _uhcRegions                      :: !(Maybe (List1 HealthCheckRegion))
+    , _uhcResourcePath                 :: !(Maybe Text)
+    , _uhcInsufficientDataHealthStatus :: !(Maybe InsufficientDataHealthStatus)
+    , _uhcHealthCheckVersion           :: !(Maybe Nat)
+    , _uhcAlarmIdentifier              :: !(Maybe AlarmIdentifier)
+    , _uhcInverted                     :: !(Maybe Bool)
+    , _uhcFullyQualifiedDomainName     :: !(Maybe Text)
+    , _uhcChildHealthChecks            :: !(Maybe [Text])
+    , _uhcPort                         :: !(Maybe Nat)
+    , _uhcHealthCheckId                :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'UpdateHealthCheck' with the minimum fields required to make a request.
@@ -92,10 +98,16 @@
 --
 -- * 'uhcHealthThreshold'
 --
+-- * 'uhcRegions'
+--
 -- * 'uhcResourcePath'
 --
+-- * 'uhcInsufficientDataHealthStatus'
+--
 -- * 'uhcHealthCheckVersion'
 --
+-- * 'uhcAlarmIdentifier'
+--
 -- * 'uhcInverted'
 --
 -- * 'uhcFullyQualifiedDomainName'
@@ -115,8 +127,11 @@
     , _uhcEnableSNI = Nothing
     , _uhcSearchString = Nothing
     , _uhcHealthThreshold = Nothing
+    , _uhcRegions = Nothing
     , _uhcResourcePath = Nothing
+    , _uhcInsufficientDataHealthStatus = Nothing
     , _uhcHealthCheckVersion = Nothing
+    , _uhcAlarmIdentifier = Nothing
     , _uhcInverted = Nothing
     , _uhcFullyQualifiedDomainName = Nothing
     , _uhcChildHealthChecks = Nothing
@@ -171,6 +186,17 @@
 uhcHealthThreshold :: Lens' UpdateHealthCheck (Maybe Natural)
 uhcHealthThreshold = lens _uhcHealthThreshold (\ s a -> s{_uhcHealthThreshold = a}) . mapping _Nat;
 
+-- | A list of 'HealthCheckRegion' values that specify the Amazon EC2 regions
+-- that you want Amazon Route 53 to use to perform health checks. You must
+-- specify at least three regions.
+--
+-- When you remove a region from the list, Amazon Route 53 will briefly
+-- continue to check your endpoint from that region.
+--
+-- Specify this value only if you want to change it.
+uhcRegions :: Lens' UpdateHealthCheck (Maybe (NonEmpty HealthCheckRegion))
+uhcRegions = lens _uhcRegions (\ s a -> s{_uhcRegions = a}) . mapping _List1;
+
 -- | The path that you want Amazon Route 53 to request when performing health
 -- checks. The path can be any value for which your endpoint will return an
 -- HTTP status code of 2xx or 3xx when the endpoint is healthy, for example
@@ -180,6 +206,10 @@
 uhcResourcePath :: Lens' UpdateHealthCheck (Maybe Text)
 uhcResourcePath = lens _uhcResourcePath (\ s a -> s{_uhcResourcePath = a});
 
+-- | Undocumented member.
+uhcInsufficientDataHealthStatus :: Lens' UpdateHealthCheck (Maybe InsufficientDataHealthStatus)
+uhcInsufficientDataHealthStatus = lens _uhcInsufficientDataHealthStatus (\ s a -> s{_uhcInsufficientDataHealthStatus = a});
+
 -- | Optional. When you specify a health check version, Amazon Route 53
 -- compares this value with the current value in the health check, which
 -- prevents you from updating the health check when the versions don\'t
@@ -188,6 +218,10 @@
 uhcHealthCheckVersion :: Lens' UpdateHealthCheck (Maybe Natural)
 uhcHealthCheckVersion = lens _uhcHealthCheckVersion (\ s a -> s{_uhcHealthCheckVersion = a}) . mapping _Nat;
 
+-- | Undocumented member.
+uhcAlarmIdentifier :: Lens' UpdateHealthCheck (Maybe AlarmIdentifier)
+uhcAlarmIdentifier = lens _uhcAlarmIdentifier (\ s a -> s{_uhcAlarmIdentifier = a});
+
 -- | A boolean value that indicates whether the status of health check should
 -- be inverted. For example, if a health check is healthy but 'Inverted' is
 -- 'True', then Amazon Route 53 considers the health check to be unhealthy.
@@ -231,6 +265,8 @@
 
 instance Hashable UpdateHealthCheck
 
+instance NFData UpdateHealthCheck
+
 instance ToElement UpdateHealthCheck where
         toElement
           = mkElement
@@ -255,8 +291,13 @@
                "EnableSNI" @= _uhcEnableSNI,
                "SearchString" @= _uhcSearchString,
                "HealthThreshold" @= _uhcHealthThreshold,
+               "Regions" @=
+                 toXML (toXMLList "Region" <$> _uhcRegions),
                "ResourcePath" @= _uhcResourcePath,
+               "InsufficientDataHealthStatus" @=
+                 _uhcInsufficientDataHealthStatus,
                "HealthCheckVersion" @= _uhcHealthCheckVersion,
+               "AlarmIdentifier" @= _uhcAlarmIdentifier,
                "Inverted" @= _uhcInverted,
                "FullyQualifiedDomainName" @=
                  _uhcFullyQualifiedDomainName,
@@ -296,3 +337,5 @@
 -- | Undocumented member.
 uhcrsHealthCheck :: Lens' UpdateHealthCheckResponse HealthCheck
 uhcrsHealthCheck = lens _uhcrsHealthCheck (\ s a -> s{_uhcrsHealthCheck = a});
+
+instance NFData UpdateHealthCheckResponse
diff --git a/gen/Network/AWS/Route53/UpdateHostedZoneComment.hs b/gen/Network/AWS/Route53/UpdateHostedZoneComment.hs
--- a/gen/Network/AWS/Route53/UpdateHostedZoneComment.hs
+++ b/gen/Network/AWS/Route53/UpdateHostedZoneComment.hs
@@ -94,6 +94,8 @@
 
 instance Hashable UpdateHostedZoneComment
 
+instance NFData UpdateHostedZoneComment
+
 instance ToElement UpdateHostedZoneComment where
         toElement
           = mkElement
@@ -146,3 +148,5 @@
 -- | Undocumented member.
 uhzcrsHostedZone :: Lens' UpdateHostedZoneCommentResponse HostedZone
 uhzcrsHostedZone = lens _uhzcrsHostedZone (\ s a -> s{_uhzcrsHostedZone = a});
+
+instance NFData UpdateHostedZoneCommentResponse
diff --git a/gen/Network/AWS/Route53/UpdateTrafficPolicyComment.hs b/gen/Network/AWS/Route53/UpdateTrafficPolicyComment.hs
--- a/gen/Network/AWS/Route53/UpdateTrafficPolicyComment.hs
+++ b/gen/Network/AWS/Route53/UpdateTrafficPolicyComment.hs
@@ -107,6 +107,8 @@
 
 instance Hashable UpdateTrafficPolicyComment
 
+instance NFData UpdateTrafficPolicyComment
+
 instance ToElement UpdateTrafficPolicyComment where
         toElement
           = mkElement
@@ -161,3 +163,5 @@
 -- | A complex type that contains settings for the specified traffic policy.
 utpcrsTrafficPolicy :: Lens' UpdateTrafficPolicyCommentResponse TrafficPolicy
 utpcrsTrafficPolicy = lens _utpcrsTrafficPolicy (\ s a -> s{_utpcrsTrafficPolicy = a});
+
+instance NFData UpdateTrafficPolicyCommentResponse
diff --git a/gen/Network/AWS/Route53/UpdateTrafficPolicyInstance.hs b/gen/Network/AWS/Route53/UpdateTrafficPolicyInstance.hs
--- a/gen/Network/AWS/Route53/UpdateTrafficPolicyInstance.hs
+++ b/gen/Network/AWS/Route53/UpdateTrafficPolicyInstance.hs
@@ -141,6 +141,8 @@
 
 instance Hashable UpdateTrafficPolicyInstance
 
+instance NFData UpdateTrafficPolicyInstance
+
 instance ToElement UpdateTrafficPolicyInstance where
         toElement
           = mkElement
@@ -198,3 +200,5 @@
 -- instance.
 utpirsTrafficPolicyInstance :: Lens' UpdateTrafficPolicyInstanceResponse TrafficPolicyInstance
 utpirsTrafficPolicyInstance = lens _utpirsTrafficPolicyInstance (\ s a -> s{_utpirsTrafficPolicyInstance = a});
+
+instance NFData UpdateTrafficPolicyInstanceResponse
