diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.1.0`
+`1.2.0`
 
 
 ## Description
diff --git a/amazonka-cloudhsm.cabal b/amazonka-cloudhsm.cabal
--- a/amazonka-cloudhsm.cabal
+++ b/amazonka-cloudhsm.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-cloudhsm
-version:               1.1.0
+version:               1.2.0
 synopsis:              Amazon CloudHSM SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -66,7 +66,7 @@
         , Network.AWS.CloudHSM.Types.Sum
 
     build-depends:
-          amazonka-core == 1.1.0.*
+          amazonka-core == 1.2.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-cloudhsm-test
@@ -85,9 +85,9 @@
         , Test.AWS.CloudHSM.Internal
 
     build-depends:
-          amazonka-core == 1.1.0
-        , amazonka-test == 1.1.0
-        , amazonka-cloudhsm == 1.1.0
+          amazonka-core == 1.2.0
+        , amazonka-test == 1.2.0
+        , amazonka-cloudhsm == 1.2.0
         , base
         , bytestring
         , lens
diff --git a/gen/Network/AWS/CloudHSM.hs b/gen/Network/AWS/CloudHSM.hs
--- a/gen/Network/AWS/CloudHSM.hs
+++ b/gen/Network/AWS/CloudHSM.hs
@@ -16,8 +16,8 @@
 -- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/welcome.html AWS API Reference>
 module Network.AWS.CloudHSM
     (
-    -- * Service
-      CloudHSM
+    -- * Service Configuration
+      cloudHSM
 
     -- * Errors
     -- $errors
diff --git a/gen/Network/AWS/CloudHSM/CreateHAPG.hs b/gen/Network/AWS/CloudHSM/CreateHAPG.hs
--- a/gen/Network/AWS/CloudHSM/CreateHAPG.hs
+++ b/gen/Network/AWS/CloudHSM/CreateHAPG.hs
@@ -70,9 +70,8 @@
 chLabel = lens _chLabel (\ s a -> s{_chLabel = a});
 
 instance AWSRequest CreateHAPG where
-        type Sv CreateHAPG = CloudHSM
         type Rs CreateHAPG = CreateHAPGResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveJSON
               (\ s h x ->
@@ -89,7 +88,8 @@
                     ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON CreateHAPG where
-        toJSON CreateHAPG'{..} = object ["Label" .= _chLabel]
+        toJSON CreateHAPG'{..}
+          = object (catMaybes [Just ("Label" .= _chLabel)])
 
 instance ToPath CreateHAPG where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/CreateHSM.hs b/gen/Network/AWS/CloudHSM/CreateHSM.hs
--- a/gen/Network/AWS/CloudHSM/CreateHSM.hs
+++ b/gen/Network/AWS/CloudHSM/CreateHSM.hs
@@ -138,9 +138,8 @@
 chSubscriptionType = lens _chSubscriptionType (\ s a -> s{_chSubscriptionType = a});
 
 instance AWSRequest CreateHSM where
-        type Sv CreateHSM = CloudHSM
         type Rs CreateHSM = CreateHSMResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveJSON
               (\ s h x ->
@@ -159,12 +158,15 @@
 instance ToJSON CreateHSM where
         toJSON CreateHSM'{..}
           = object
-              ["ClientToken" .= _chClientToken,
-               "SyslogIp" .= _chSyslogIP,
-               "ExternalId" .= _chExternalId, "EniIp" .= _chEniIP,
-               "SubnetId" .= _chSubnetId, "SshKey" .= _chSSHKey,
-               "IamRoleArn" .= _chIAMRoleARN,
-               "SubscriptionType" .= _chSubscriptionType]
+              (catMaybes
+                 [("ClientToken" .=) <$> _chClientToken,
+                  ("SyslogIp" .=) <$> _chSyslogIP,
+                  ("ExternalId" .=) <$> _chExternalId,
+                  ("EniIp" .=) <$> _chEniIP,
+                  Just ("SubnetId" .= _chSubnetId),
+                  Just ("SshKey" .= _chSSHKey),
+                  Just ("IamRoleArn" .= _chIAMRoleARN),
+                  Just ("SubscriptionType" .= _chSubscriptionType)])
 
 instance ToPath CreateHSM where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/CreateLunaClient.hs b/gen/Network/AWS/CloudHSM/CreateLunaClient.hs
--- a/gen/Network/AWS/CloudHSM/CreateLunaClient.hs
+++ b/gen/Network/AWS/CloudHSM/CreateLunaClient.hs
@@ -78,9 +78,8 @@
 clcCertificate = lens _clcCertificate (\ s a -> s{_clcCertificate = a});
 
 instance AWSRequest CreateLunaClient where
-        type Sv CreateLunaClient = CloudHSM
         type Rs CreateLunaClient = CreateLunaClientResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveJSON
               (\ s h x ->
@@ -100,8 +99,9 @@
 instance ToJSON CreateLunaClient where
         toJSON CreateLunaClient'{..}
           = object
-              ["Label" .= _clcLabel,
-               "Certificate" .= _clcCertificate]
+              (catMaybes
+                 [("Label" .=) <$> _clcLabel,
+                  Just ("Certificate" .= _clcCertificate)])
 
 instance ToPath CreateLunaClient where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/DeleteHAPG.hs b/gen/Network/AWS/CloudHSM/DeleteHAPG.hs
--- a/gen/Network/AWS/CloudHSM/DeleteHAPG.hs
+++ b/gen/Network/AWS/CloudHSM/DeleteHAPG.hs
@@ -67,9 +67,8 @@
 dhHAPGARN = lens _dhHAPGARN (\ s a -> s{_dhHAPGARN = a});
 
 instance AWSRequest DeleteHAPG where
-        type Sv DeleteHAPG = CloudHSM
         type Rs DeleteHAPG = DeleteHAPGResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveEmpty
               (\ s h x ->
@@ -86,7 +85,7 @@
 
 instance ToJSON DeleteHAPG where
         toJSON DeleteHAPG'{..}
-          = object ["HapgArn" .= _dhHAPGARN]
+          = object (catMaybes [Just ("HapgArn" .= _dhHAPGARN)])
 
 instance ToPath DeleteHAPG where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/DeleteHSM.hs b/gen/Network/AWS/CloudHSM/DeleteHSM.hs
--- a/gen/Network/AWS/CloudHSM/DeleteHSM.hs
+++ b/gen/Network/AWS/CloudHSM/DeleteHSM.hs
@@ -68,9 +68,8 @@
 dhHSMARN = lens _dhHSMARN (\ s a -> s{_dhHSMARN = a});
 
 instance AWSRequest DeleteHSM where
-        type Sv DeleteHSM = CloudHSM
         type Rs DeleteHSM = DeleteHSMResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveEmpty
               (\ s h x ->
@@ -87,7 +86,7 @@
 
 instance ToJSON DeleteHSM where
         toJSON DeleteHSM'{..}
-          = object ["HsmArn" .= _dhHSMARN]
+          = object (catMaybes [Just ("HsmArn" .= _dhHSMARN)])
 
 instance ToPath DeleteHSM where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/DeleteLunaClient.hs b/gen/Network/AWS/CloudHSM/DeleteLunaClient.hs
--- a/gen/Network/AWS/CloudHSM/DeleteLunaClient.hs
+++ b/gen/Network/AWS/CloudHSM/DeleteLunaClient.hs
@@ -65,9 +65,8 @@
 dClientARN = lens _dClientARN (\ s a -> s{_dClientARN = a});
 
 instance AWSRequest DeleteLunaClient where
-        type Sv DeleteLunaClient = CloudHSM
         type Rs DeleteLunaClient = DeleteLunaClientResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveEmpty
               (\ s h x ->
@@ -85,7 +84,8 @@
 
 instance ToJSON DeleteLunaClient where
         toJSON DeleteLunaClient'{..}
-          = object ["ClientArn" .= _dClientARN]
+          = object
+              (catMaybes [Just ("ClientArn" .= _dClientARN)])
 
 instance ToPath DeleteLunaClient where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/DescribeHAPG.hs b/gen/Network/AWS/CloudHSM/DescribeHAPG.hs
--- a/gen/Network/AWS/CloudHSM/DescribeHAPG.hs
+++ b/gen/Network/AWS/CloudHSM/DescribeHAPG.hs
@@ -76,9 +76,8 @@
 dhapgHAPGARN = lens _dhapgHAPGARN (\ s a -> s{_dhapgHAPGARN = a});
 
 instance AWSRequest DescribeHAPG where
-        type Sv DescribeHAPG = CloudHSM
         type Rs DescribeHAPG = DescribeHAPGResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveJSON
               (\ s h x ->
@@ -105,7 +104,8 @@
 
 instance ToJSON DescribeHAPG where
         toJSON DescribeHAPG'{..}
-          = object ["HapgArn" .= _dhapgHAPGARN]
+          = object
+              (catMaybes [Just ("HapgArn" .= _dhapgHAPGARN)])
 
 instance ToPath DescribeHAPG where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/DescribeHSM.hs b/gen/Network/AWS/CloudHSM/DescribeHSM.hs
--- a/gen/Network/AWS/CloudHSM/DescribeHSM.hs
+++ b/gen/Network/AWS/CloudHSM/DescribeHSM.hs
@@ -98,9 +98,8 @@
 dhsmHSMARN = lens _dhsmHSMARN (\ s a -> s{_dhsmHSMARN = a});
 
 instance AWSRequest DescribeHSM where
-        type Sv DescribeHSM = CloudHSM
         type Rs DescribeHSM = DescribeHSMResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveJSON
               (\ s h x ->
@@ -139,8 +138,9 @@
 instance ToJSON DescribeHSM where
         toJSON DescribeHSM'{..}
           = object
-              ["HsmSerialNumber" .= _dhsmHSMSerialNumber,
-               "HsmArn" .= _dhsmHSMARN]
+              (catMaybes
+                 [("HsmSerialNumber" .=) <$> _dhsmHSMSerialNumber,
+                  ("HsmArn" .=) <$> _dhsmHSMARN])
 
 instance ToPath DescribeHSM where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/DescribeLunaClient.hs b/gen/Network/AWS/CloudHSM/DescribeLunaClient.hs
--- a/gen/Network/AWS/CloudHSM/DescribeLunaClient.hs
+++ b/gen/Network/AWS/CloudHSM/DescribeLunaClient.hs
@@ -78,10 +78,9 @@
 dlcCertificateFingerprint = lens _dlcCertificateFingerprint (\ s a -> s{_dlcCertificateFingerprint = a});
 
 instance AWSRequest DescribeLunaClient where
-        type Sv DescribeLunaClient = CloudHSM
         type Rs DescribeLunaClient =
              DescribeLunaClientResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveJSON
               (\ s h x ->
@@ -106,9 +105,10 @@
 instance ToJSON DescribeLunaClient where
         toJSON DescribeLunaClient'{..}
           = object
-              ["ClientArn" .= _dlcClientARN,
-               "CertificateFingerprint" .=
-                 _dlcCertificateFingerprint]
+              (catMaybes
+                 [("ClientArn" .=) <$> _dlcClientARN,
+                  ("CertificateFingerprint" .=) <$>
+                    _dlcCertificateFingerprint])
 
 instance ToPath DescribeLunaClient where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/GetConfig.hs b/gen/Network/AWS/CloudHSM/GetConfig.hs
--- a/gen/Network/AWS/CloudHSM/GetConfig.hs
+++ b/gen/Network/AWS/CloudHSM/GetConfig.hs
@@ -89,9 +89,8 @@
 gcHAPGList = lens _gcHAPGList (\ s a -> s{_gcHAPGList = a}) . _Coerce;
 
 instance AWSRequest GetConfig where
-        type Sv GetConfig = CloudHSM
         type Rs GetConfig = GetConfigResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveJSON
               (\ s h x ->
@@ -112,9 +111,10 @@
 instance ToJSON GetConfig where
         toJSON GetConfig'{..}
           = object
-              ["ClientArn" .= _gcClientARN,
-               "ClientVersion" .= _gcClientVersion,
-               "HapgList" .= _gcHAPGList]
+              (catMaybes
+                 [Just ("ClientArn" .= _gcClientARN),
+                  Just ("ClientVersion" .= _gcClientVersion),
+                  Just ("HapgList" .= _gcHAPGList)])
 
 instance ToPath GetConfig where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/ListAvailableZones.hs b/gen/Network/AWS/CloudHSM/ListAvailableZones.hs
--- a/gen/Network/AWS/CloudHSM/ListAvailableZones.hs
+++ b/gen/Network/AWS/CloudHSM/ListAvailableZones.hs
@@ -55,10 +55,9 @@
 listAvailableZones = ListAvailableZones'
 
 instance AWSRequest ListAvailableZones where
-        type Sv ListAvailableZones = CloudHSM
         type Rs ListAvailableZones =
              ListAvailableZonesResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/CloudHSM/ListHAPGs.hs b/gen/Network/AWS/CloudHSM/ListHAPGs.hs
--- a/gen/Network/AWS/CloudHSM/ListHAPGs.hs
+++ b/gen/Network/AWS/CloudHSM/ListHAPGs.hs
@@ -72,9 +72,8 @@
 lhNextToken = lens _lhNextToken (\ s a -> s{_lhNextToken = a});
 
 instance AWSRequest ListHAPGs where
-        type Sv ListHAPGs = CloudHSM
         type Rs ListHAPGs = ListHAPGsResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveJSON
               (\ s h x ->
@@ -93,7 +92,8 @@
 
 instance ToJSON ListHAPGs where
         toJSON ListHAPGs'{..}
-          = object ["NextToken" .= _lhNextToken]
+          = object
+              (catMaybes [("NextToken" .=) <$> _lhNextToken])
 
 instance ToPath ListHAPGs where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/ListHSMs.hs b/gen/Network/AWS/CloudHSM/ListHSMs.hs
--- a/gen/Network/AWS/CloudHSM/ListHSMs.hs
+++ b/gen/Network/AWS/CloudHSM/ListHSMs.hs
@@ -73,9 +73,8 @@
 lhsmNextToken = lens _lhsmNextToken (\ s a -> s{_lhsmNextToken = a});
 
 instance AWSRequest ListHSMs where
-        type Sv ListHSMs = CloudHSM
         type Rs ListHSMs = ListHSMsResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveJSON
               (\ s h x ->
@@ -94,7 +93,8 @@
 
 instance ToJSON ListHSMs where
         toJSON ListHSMs'{..}
-          = object ["NextToken" .= _lhsmNextToken]
+          = object
+              (catMaybes [("NextToken" .=) <$> _lhsmNextToken])
 
 instance ToPath ListHSMs where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/ListLunaClients.hs b/gen/Network/AWS/CloudHSM/ListLunaClients.hs
--- a/gen/Network/AWS/CloudHSM/ListLunaClients.hs
+++ b/gen/Network/AWS/CloudHSM/ListLunaClients.hs
@@ -72,9 +72,8 @@
 llcNextToken = lens _llcNextToken (\ s a -> s{_llcNextToken = a});
 
 instance AWSRequest ListLunaClients where
-        type Sv ListLunaClients = CloudHSM
         type Rs ListLunaClients = ListLunaClientsResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveJSON
               (\ s h x ->
@@ -94,7 +93,8 @@
 
 instance ToJSON ListLunaClients where
         toJSON ListLunaClients'{..}
-          = object ["NextToken" .= _llcNextToken]
+          = object
+              (catMaybes [("NextToken" .=) <$> _llcNextToken])
 
 instance ToPath ListLunaClients where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/ModifyHAPG.hs b/gen/Network/AWS/CloudHSM/ModifyHAPG.hs
--- a/gen/Network/AWS/CloudHSM/ModifyHAPG.hs
+++ b/gen/Network/AWS/CloudHSM/ModifyHAPG.hs
@@ -85,9 +85,8 @@
 mhHAPGARN = lens _mhHAPGARN (\ s a -> s{_mhHAPGARN = a});
 
 instance AWSRequest ModifyHAPG where
-        type Sv ModifyHAPG = CloudHSM
         type Rs ModifyHAPG = ModifyHAPGResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveJSON
               (\ s h x ->
@@ -106,8 +105,11 @@
 instance ToJSON ModifyHAPG where
         toJSON ModifyHAPG'{..}
           = object
-              ["PartitionSerialList" .= _mhPartitionSerialList,
-               "Label" .= _mhLabel, "HapgArn" .= _mhHAPGARN]
+              (catMaybes
+                 [("PartitionSerialList" .=) <$>
+                    _mhPartitionSerialList,
+                  ("Label" .=) <$> _mhLabel,
+                  Just ("HapgArn" .= _mhHAPGARN)])
 
 instance ToPath ModifyHAPG where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/ModifyHSM.hs b/gen/Network/AWS/CloudHSM/ModifyHSM.hs
--- a/gen/Network/AWS/CloudHSM/ModifyHSM.hs
+++ b/gen/Network/AWS/CloudHSM/ModifyHSM.hs
@@ -114,9 +114,8 @@
 mhHSMARN = lens _mhHSMARN (\ s a -> s{_mhHSMARN = a});
 
 instance AWSRequest ModifyHSM where
-        type Sv ModifyHSM = CloudHSM
         type Rs ModifyHSM = ModifyHSMResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveJSON
               (\ s h x ->
@@ -135,10 +134,13 @@
 instance ToJSON ModifyHSM where
         toJSON ModifyHSM'{..}
           = object
-              ["IamRoleArn" .= _mhIAMRoleARN,
-               "SubnetId" .= _mhSubnetId, "SyslogIp" .= _mhSyslogIP,
-               "ExternalId" .= _mhExternalId, "EniIp" .= _mhEniIP,
-               "HsmArn" .= _mhHSMARN]
+              (catMaybes
+                 [("IamRoleArn" .=) <$> _mhIAMRoleARN,
+                  ("SubnetId" .=) <$> _mhSubnetId,
+                  ("SyslogIp" .=) <$> _mhSyslogIP,
+                  ("ExternalId" .=) <$> _mhExternalId,
+                  ("EniIp" .=) <$> _mhEniIP,
+                  Just ("HsmArn" .= _mhHSMARN)])
 
 instance ToPath ModifyHSM where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/ModifyLunaClient.hs b/gen/Network/AWS/CloudHSM/ModifyLunaClient.hs
--- a/gen/Network/AWS/CloudHSM/ModifyLunaClient.hs
+++ b/gen/Network/AWS/CloudHSM/ModifyLunaClient.hs
@@ -79,9 +79,8 @@
 mlcCertificate = lens _mlcCertificate (\ s a -> s{_mlcCertificate = a});
 
 instance AWSRequest ModifyLunaClient where
-        type Sv ModifyLunaClient = CloudHSM
         type Rs ModifyLunaClient = ModifyLunaClientResponse
-        request = postJSON
+        request = postJSON cloudHSM
         response
           = receiveJSON
               (\ s h x ->
@@ -101,8 +100,9 @@
 instance ToJSON ModifyLunaClient where
         toJSON ModifyLunaClient'{..}
           = object
-              ["ClientArn" .= _mlcClientARN,
-               "Certificate" .= _mlcCertificate]
+              (catMaybes
+                 [Just ("ClientArn" .= _mlcClientARN),
+                  Just ("Certificate" .= _mlcCertificate)])
 
 instance ToPath ModifyLunaClient where
         toPath = const "/"
diff --git a/gen/Network/AWS/CloudHSM/Types.hs b/gen/Network/AWS/CloudHSM/Types.hs
--- a/gen/Network/AWS/CloudHSM/Types.hs
+++ b/gen/Network/AWS/CloudHSM/Types.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE TypeFamilies      #-}
 
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
@@ -13,8 +12,8 @@
 --
 module Network.AWS.CloudHSM.Types
     (
-    -- * Service
-      CloudHSM
+    -- * Service Configuration
+      cloudHSM
 
     -- * Errors
     , _InvalidRequestException
@@ -39,39 +38,36 @@
 import           Network.AWS.Prelude
 import           Network.AWS.Sign.V4
 
--- | Version @2014-05-30@ of the Amazon CloudHSM SDK.
-data CloudHSM
-
-instance AWSService CloudHSM where
-    type Sg CloudHSM = V4
-    service = const svc
-      where
-        svc =
-            Service
-            { _svcAbbrev = "CloudHSM"
-            , _svcPrefix = "cloudhsm"
-            , _svcVersion = "2014-05-30"
-            , _svcEndpoint = defaultEndpoint svc
-            , _svcTimeout = Just 70
-            , _svcStatus = statusSuccess
-            , _svcError = parseJSONError
-            , _svcRetry = retry
-            }
-        retry =
-            Exponential
-            { _retryBase = 5.0e-2
-            , _retryGrowth = 2
-            , _retryAttempts = 5
-            , _retryCheck = check
-            }
-        check e
-          | has (hasCode "ThrottlingException" . hasStatus 400) e =
-              Just "throttling_exception"
-          | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
-          | has (hasStatus 503) e = Just "service_unavailable"
-          | has (hasStatus 500) e = Just "general_server_error"
-          | has (hasStatus 509) e = Just "limit_exceeded"
-          | otherwise = Nothing
+-- | API version '2014-05-30' of the Amazon CloudHSM SDK configuration.
+cloudHSM :: Service
+cloudHSM =
+    Service
+    { _svcAbbrev = "CloudHSM"
+    , _svcSigner = v4
+    , _svcPrefix = "cloudhsm"
+    , _svcVersion = "2014-05-30"
+    , _svcEndpoint = defaultEndpoint cloudHSM
+    , _svcTimeout = Just 70
+    , _svcCheck = statusSuccess
+    , _svcError = parseJSONError
+    , _svcRetry = retry
+    }
+  where
+    retry =
+        Exponential
+        { _retryBase = 5.0e-2
+        , _retryGrowth = 2
+        , _retryAttempts = 5
+        , _retryCheck = check
+        }
+    check e
+      | has (hasCode "ThrottlingException" . hasStatus 400) e =
+          Just "throttling_exception"
+      | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
+      | has (hasStatus 503) e = Just "service_unavailable"
+      | has (hasStatus 500) e = Just "general_server_error"
+      | has (hasStatus 509) e = Just "limit_exceeded"
+      | otherwise = Nothing
 
 -- | Indicates that one or more of the request parameters are not valid.
 _InvalidRequestException :: AsError a => Getting (First ServiceError) a ServiceError
diff --git a/gen/Network/AWS/CloudHSM/Types/Product.hs b/gen/Network/AWS/CloudHSM/Types/Product.hs
--- a/gen/Network/AWS/CloudHSM/Types/Product.hs
+++ b/gen/Network/AWS/CloudHSM/Types/Product.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE OverloadedStrings  #-}
 {-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
diff --git a/test/Test/AWS/Gen/CloudHSM.hs b/test/Test/AWS/Gen/CloudHSM.hs
--- a/test/Test/AWS/Gen/CloudHSM.hs
+++ b/test/Test/AWS/Gen/CloudHSM.hs
@@ -229,100 +229,117 @@
 testListHAPGsResponse = res
     "ListHAPGsResponse"
     "fixture/ListHAPGsResponse"
+    cloudHSM
     (Proxy :: Proxy ListHAPGs)
 
 testListHSMsResponse :: ListHSMsResponse -> TestTree
 testListHSMsResponse = res
     "ListHSMsResponse"
     "fixture/ListHSMsResponse"
+    cloudHSM
     (Proxy :: Proxy ListHSMs)
 
 testDeleteHAPGResponse :: DeleteHAPGResponse -> TestTree
 testDeleteHAPGResponse = res
     "DeleteHAPGResponse"
     "fixture/DeleteHAPGResponse"
+    cloudHSM
     (Proxy :: Proxy DeleteHAPG)
 
 testModifyLunaClientResponse :: ModifyLunaClientResponse -> TestTree
 testModifyLunaClientResponse = res
     "ModifyLunaClientResponse"
     "fixture/ModifyLunaClientResponse"
+    cloudHSM
     (Proxy :: Proxy ModifyLunaClient)
 
 testDescribeLunaClientResponse :: DescribeLunaClientResponse -> TestTree
 testDescribeLunaClientResponse = res
     "DescribeLunaClientResponse"
     "fixture/DescribeLunaClientResponse"
+    cloudHSM
     (Proxy :: Proxy DescribeLunaClient)
 
 testCreateHSMResponse :: CreateHSMResponse -> TestTree
 testCreateHSMResponse = res
     "CreateHSMResponse"
     "fixture/CreateHSMResponse"
+    cloudHSM
     (Proxy :: Proxy CreateHSM)
 
 testCreateHAPGResponse :: CreateHAPGResponse -> TestTree
 testCreateHAPGResponse = res
     "CreateHAPGResponse"
     "fixture/CreateHAPGResponse"
+    cloudHSM
     (Proxy :: Proxy CreateHAPG)
 
 testCreateLunaClientResponse :: CreateLunaClientResponse -> TestTree
 testCreateLunaClientResponse = res
     "CreateLunaClientResponse"
     "fixture/CreateLunaClientResponse"
+    cloudHSM
     (Proxy :: Proxy CreateLunaClient)
 
 testDescribeHAPGResponse :: DescribeHAPGResponse -> TestTree
 testDescribeHAPGResponse = res
     "DescribeHAPGResponse"
     "fixture/DescribeHAPGResponse"
+    cloudHSM
     (Proxy :: Proxy DescribeHAPG)
 
 testListLunaClientsResponse :: ListLunaClientsResponse -> TestTree
 testListLunaClientsResponse = res
     "ListLunaClientsResponse"
     "fixture/ListLunaClientsResponse"
+    cloudHSM
     (Proxy :: Proxy ListLunaClients)
 
 testGetConfigResponse :: GetConfigResponse -> TestTree
 testGetConfigResponse = res
     "GetConfigResponse"
     "fixture/GetConfigResponse"
+    cloudHSM
     (Proxy :: Proxy GetConfig)
 
 testDeleteHSMResponse :: DeleteHSMResponse -> TestTree
 testDeleteHSMResponse = res
     "DeleteHSMResponse"
     "fixture/DeleteHSMResponse"
+    cloudHSM
     (Proxy :: Proxy DeleteHSM)
 
 testDescribeHSMResponse :: DescribeHSMResponse -> TestTree
 testDescribeHSMResponse = res
     "DescribeHSMResponse"
     "fixture/DescribeHSMResponse"
+    cloudHSM
     (Proxy :: Proxy DescribeHSM)
 
 testModifyHAPGResponse :: ModifyHAPGResponse -> TestTree
 testModifyHAPGResponse = res
     "ModifyHAPGResponse"
     "fixture/ModifyHAPGResponse"
+    cloudHSM
     (Proxy :: Proxy ModifyHAPG)
 
 testListAvailableZonesResponse :: ListAvailableZonesResponse -> TestTree
 testListAvailableZonesResponse = res
     "ListAvailableZonesResponse"
     "fixture/ListAvailableZonesResponse"
+    cloudHSM
     (Proxy :: Proxy ListAvailableZones)
 
 testModifyHSMResponse :: ModifyHSMResponse -> TestTree
 testModifyHSMResponse = res
     "ModifyHSMResponse"
     "fixture/ModifyHSMResponse"
+    cloudHSM
     (Proxy :: Proxy ModifyHSM)
 
 testDeleteLunaClientResponse :: DeleteLunaClientResponse -> TestTree
 testDeleteLunaClientResponse = res
     "DeleteLunaClientResponse"
     "fixture/DeleteLunaClientResponse"
+    cloudHSM
     (Proxy :: Proxy DeleteLunaClient)
