diff --git a/amazonka-kms.cabal b/amazonka-kms.cabal
--- a/amazonka-kms.cabal
+++ b/amazonka-kms.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-kms
-version:               0.2.1
+version:               0.2.2
 synopsis:              Amazon Key Management Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -69,5 +69,5 @@
     other-modules:
 
     build-depends:
-          amazonka-core == 0.2.1.*
+          amazonka-core == 0.2.2.*
         , base          >= 4.7     && < 5
diff --git a/gen/Network/AWS/KMS/CreateAlias.hs b/gen/Network/AWS/KMS/CreateAlias.hs
--- a/gen/Network/AWS/KMS/CreateAlias.hs
+++ b/gen/Network/AWS/KMS/CreateAlias.hs
@@ -55,7 +55,7 @@
 data CreateAlias = CreateAlias
     { _caAliasName   :: Text
     , _caTargetKeyId :: Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'CreateAlias' constructor.
 --
@@ -84,7 +84,7 @@
 caTargetKeyId = lens _caTargetKeyId (\s a -> s { _caTargetKeyId = a })
 
 data CreateAliasResponse = CreateAliasResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'CreateAliasResponse' constructor.
 createAliasResponse :: CreateAliasResponse
diff --git a/gen/Network/AWS/KMS/CreateGrant.hs b/gen/Network/AWS/KMS/CreateGrant.hs
--- a/gen/Network/AWS/KMS/CreateGrant.hs
+++ b/gen/Network/AWS/KMS/CreateGrant.hs
@@ -66,7 +66,7 @@
     , _cgKeyId             :: Text
     , _cgOperations        :: List "Operations" GrantOperation
     , _cgRetiringPrincipal :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'CreateGrant' constructor.
 --
@@ -130,7 +130,7 @@
 data CreateGrantResponse = CreateGrantResponse
     { _cgrGrantId    :: Maybe Text
     , _cgrGrantToken :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'CreateGrantResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/CreateKey.hs b/gen/Network/AWS/KMS/CreateKey.hs
--- a/gen/Network/AWS/KMS/CreateKey.hs
+++ b/gen/Network/AWS/KMS/CreateKey.hs
@@ -56,7 +56,7 @@
     { _ckDescription :: Maybe Text
     , _ckKeyUsage    :: Maybe KeyUsageType
     , _ckPolicy      :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'CreateKey' constructor.
 --
@@ -92,7 +92,7 @@
 
 newtype CreateKeyResponse = CreateKeyResponse
     { _ckrKeyMetadata :: Maybe KeyMetadata
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'CreateKeyResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/Decrypt.hs b/gen/Network/AWS/KMS/Decrypt.hs
--- a/gen/Network/AWS/KMS/Decrypt.hs
+++ b/gen/Network/AWS/KMS/Decrypt.hs
@@ -55,7 +55,7 @@
     { _dCiphertextBlob    :: Base64
     , _dEncryptionContext :: Map Text Text
     , _dGrantTokens       :: List "GrantTokens" Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'Decrypt' constructor.
 --
@@ -95,7 +95,7 @@
 data DecryptResponse = DecryptResponse
     { _drKeyId     :: Maybe Text
     , _drPlaintext :: Maybe Base64
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'DecryptResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/DeleteAlias.hs b/gen/Network/AWS/KMS/DeleteAlias.hs
--- a/gen/Network/AWS/KMS/DeleteAlias.hs
+++ b/gen/Network/AWS/KMS/DeleteAlias.hs
@@ -47,7 +47,7 @@
 
 newtype DeleteAlias = DeleteAlias
     { _daAliasName :: Text
-    } deriving (Eq, Ord, Show, Monoid, IsString)
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
 
 -- | 'DeleteAlias' constructor.
 --
@@ -66,7 +66,7 @@
 daAliasName = lens _daAliasName (\s a -> s { _daAliasName = a })
 
 data DeleteAliasResponse = DeleteAliasResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'DeleteAliasResponse' constructor.
 deleteAliasResponse :: DeleteAliasResponse
diff --git a/gen/Network/AWS/KMS/DescribeKey.hs b/gen/Network/AWS/KMS/DescribeKey.hs
--- a/gen/Network/AWS/KMS/DescribeKey.hs
+++ b/gen/Network/AWS/KMS/DescribeKey.hs
@@ -49,7 +49,7 @@
 
 newtype DescribeKey = DescribeKey
     { _dk1KeyId :: Text
-    } deriving (Eq, Ord, Show, Monoid, IsString)
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
 
 -- | 'DescribeKey' constructor.
 --
@@ -70,7 +70,7 @@
 
 newtype DescribeKeyResponse = DescribeKeyResponse
     { _dkrKeyMetadata :: Maybe KeyMetadata
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'DescribeKeyResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/DisableKey.hs b/gen/Network/AWS/KMS/DisableKey.hs
--- a/gen/Network/AWS/KMS/DisableKey.hs
+++ b/gen/Network/AWS/KMS/DisableKey.hs
@@ -47,7 +47,7 @@
 
 newtype DisableKey = DisableKey
     { _dkKeyId :: Text
-    } deriving (Eq, Ord, Show, Monoid, IsString)
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
 
 -- | 'DisableKey' constructor.
 --
@@ -67,7 +67,7 @@
 dkKeyId = lens _dkKeyId (\s a -> s { _dkKeyId = a })
 
 data DisableKeyResponse = DisableKeyResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'DisableKeyResponse' constructor.
 disableKeyResponse :: DisableKeyResponse
diff --git a/gen/Network/AWS/KMS/DisableKeyRotation.hs b/gen/Network/AWS/KMS/DisableKeyRotation.hs
--- a/gen/Network/AWS/KMS/DisableKeyRotation.hs
+++ b/gen/Network/AWS/KMS/DisableKeyRotation.hs
@@ -47,7 +47,7 @@
 
 newtype DisableKeyRotation = DisableKeyRotation
     { _dkrKeyId :: Text
-    } deriving (Eq, Ord, Show, Monoid, IsString)
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
 
 -- | 'DisableKeyRotation' constructor.
 --
@@ -67,7 +67,7 @@
 dkrKeyId = lens _dkrKeyId (\s a -> s { _dkrKeyId = a })
 
 data DisableKeyRotationResponse = DisableKeyRotationResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'DisableKeyRotationResponse' constructor.
 disableKeyRotationResponse :: DisableKeyRotationResponse
diff --git a/gen/Network/AWS/KMS/EnableKey.hs b/gen/Network/AWS/KMS/EnableKey.hs
--- a/gen/Network/AWS/KMS/EnableKey.hs
+++ b/gen/Network/AWS/KMS/EnableKey.hs
@@ -48,7 +48,7 @@
 
 newtype EnableKey = EnableKey
     { _ekKeyId :: Text
-    } deriving (Eq, Ord, Show, Monoid, IsString)
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
 
 -- | 'EnableKey' constructor.
 --
@@ -68,7 +68,7 @@
 ekKeyId = lens _ekKeyId (\s a -> s { _ekKeyId = a })
 
 data EnableKeyResponse = EnableKeyResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'EnableKeyResponse' constructor.
 enableKeyResponse :: EnableKeyResponse
diff --git a/gen/Network/AWS/KMS/EnableKeyRotation.hs b/gen/Network/AWS/KMS/EnableKeyRotation.hs
--- a/gen/Network/AWS/KMS/EnableKeyRotation.hs
+++ b/gen/Network/AWS/KMS/EnableKeyRotation.hs
@@ -47,7 +47,7 @@
 
 newtype EnableKeyRotation = EnableKeyRotation
     { _ekrKeyId :: Text
-    } deriving (Eq, Ord, Show, Monoid, IsString)
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
 
 -- | 'EnableKeyRotation' constructor.
 --
@@ -67,7 +67,7 @@
 ekrKeyId = lens _ekrKeyId (\s a -> s { _ekrKeyId = a })
 
 data EnableKeyRotationResponse = EnableKeyRotationResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'EnableKeyRotationResponse' constructor.
 enableKeyRotationResponse :: EnableKeyRotationResponse
diff --git a/gen/Network/AWS/KMS/Encrypt.hs b/gen/Network/AWS/KMS/Encrypt.hs
--- a/gen/Network/AWS/KMS/Encrypt.hs
+++ b/gen/Network/AWS/KMS/Encrypt.hs
@@ -56,7 +56,7 @@
     , _eGrantTokens       :: List "GrantTokens" Text
     , _eKeyId             :: Text
     , _ePlaintext         :: Base64
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'Encrypt' constructor.
 --
@@ -104,7 +104,7 @@
 data EncryptResponse = EncryptResponse
     { _erCiphertextBlob :: Maybe Base64
     , _erKeyId          :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'EncryptResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/GenerateDataKey.hs b/gen/Network/AWS/KMS/GenerateDataKey.hs
--- a/gen/Network/AWS/KMS/GenerateDataKey.hs
+++ b/gen/Network/AWS/KMS/GenerateDataKey.hs
@@ -60,7 +60,7 @@
     , _gdkKeyId             :: Text
     , _gdkKeySpec           :: Maybe DataKeySpec
     , _gdkNumberOfBytes     :: Maybe Nat
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'GenerateDataKey' constructor.
 --
@@ -118,7 +118,7 @@
     { _gdkrCiphertextBlob :: Maybe Base64
     , _gdkrKeyId          :: Maybe Text
     , _gdkrPlaintext      :: Maybe Base64
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'GenerateDataKeyResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/GenerateDataKeyWithoutPlaintext.hs b/gen/Network/AWS/KMS/GenerateDataKeyWithoutPlaintext.hs
--- a/gen/Network/AWS/KMS/GenerateDataKeyWithoutPlaintext.hs
+++ b/gen/Network/AWS/KMS/GenerateDataKeyWithoutPlaintext.hs
@@ -59,7 +59,7 @@
     , _gdkwpKeyId             :: Text
     , _gdkwpKeySpec           :: Maybe DataKeySpec
     , _gdkwpNumberOfBytes     :: Maybe Nat
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'GenerateDataKeyWithoutPlaintext' constructor.
 --
@@ -117,7 +117,7 @@
 data GenerateDataKeyWithoutPlaintextResponse = GenerateDataKeyWithoutPlaintextResponse
     { _gdkwprCiphertextBlob :: Maybe Base64
     , _gdkwprKeyId          :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'GenerateDataKeyWithoutPlaintextResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/GenerateRandom.hs b/gen/Network/AWS/KMS/GenerateRandom.hs
--- a/gen/Network/AWS/KMS/GenerateRandom.hs
+++ b/gen/Network/AWS/KMS/GenerateRandom.hs
@@ -49,7 +49,7 @@
 
 newtype GenerateRandom = GenerateRandom
     { _grNumberOfBytes :: Maybe Nat
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'GenerateRandom' constructor.
 --
@@ -69,7 +69,7 @@
 
 newtype GenerateRandomResponse = GenerateRandomResponse
     { _grrPlaintext :: Maybe Base64
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'GenerateRandomResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/GetKeyPolicy.hs b/gen/Network/AWS/KMS/GetKeyPolicy.hs
--- a/gen/Network/AWS/KMS/GetKeyPolicy.hs
+++ b/gen/Network/AWS/KMS/GetKeyPolicy.hs
@@ -51,7 +51,7 @@
 data GetKeyPolicy = GetKeyPolicy
     { _gkpKeyId      :: Text
     , _gkpPolicyName :: Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'GetKeyPolicy' constructor.
 --
@@ -81,7 +81,7 @@
 
 newtype GetKeyPolicyResponse = GetKeyPolicyResponse
     { _gkprPolicy :: Maybe Text
-    } deriving (Eq, Ord, Show, Monoid)
+    } deriving (Eq, Ord, Read, Show, Monoid)
 
 -- | 'GetKeyPolicyResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/GetKeyRotationStatus.hs b/gen/Network/AWS/KMS/GetKeyRotationStatus.hs
--- a/gen/Network/AWS/KMS/GetKeyRotationStatus.hs
+++ b/gen/Network/AWS/KMS/GetKeyRotationStatus.hs
@@ -50,7 +50,7 @@
 
 newtype GetKeyRotationStatus = GetKeyRotationStatus
     { _gkrsKeyId :: Text
-    } deriving (Eq, Ord, Show, Monoid, IsString)
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
 
 -- | 'GetKeyRotationStatus' constructor.
 --
@@ -71,7 +71,7 @@
 
 newtype GetKeyRotationStatusResponse = GetKeyRotationStatusResponse
     { _gkrsrKeyRotationEnabled :: Maybe Bool
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'GetKeyRotationStatusResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/ListAliases.hs b/gen/Network/AWS/KMS/ListAliases.hs
--- a/gen/Network/AWS/KMS/ListAliases.hs
+++ b/gen/Network/AWS/KMS/ListAliases.hs
@@ -53,7 +53,7 @@
 data ListAliases = ListAliases
     { _laLimit  :: Maybe Nat
     , _laMarker :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'ListAliases' constructor.
 --
@@ -85,7 +85,7 @@
     { _larAliases    :: List "Aliases" AliasListEntry
     , _larNextMarker :: Maybe Text
     , _larTruncated  :: Maybe Bool
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ListAliasesResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/ListGrants.hs b/gen/Network/AWS/KMS/ListGrants.hs
--- a/gen/Network/AWS/KMS/ListGrants.hs
+++ b/gen/Network/AWS/KMS/ListGrants.hs
@@ -55,7 +55,7 @@
     { _lgKeyId  :: Text
     , _lgLimit  :: Maybe Nat
     , _lgMarker :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'ListGrants' constructor.
 --
@@ -97,7 +97,7 @@
     { _lgrGrants     :: List "Grants" GrantListEntry
     , _lgrNextMarker :: Maybe Text
     , _lgrTruncated  :: Maybe Bool
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ListGrantsResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/ListKeyPolicies.hs b/gen/Network/AWS/KMS/ListKeyPolicies.hs
--- a/gen/Network/AWS/KMS/ListKeyPolicies.hs
+++ b/gen/Network/AWS/KMS/ListKeyPolicies.hs
@@ -55,7 +55,7 @@
     { _lkpKeyId  :: Text
     , _lkpLimit  :: Maybe Nat
     , _lkpMarker :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'ListKeyPolicies' constructor.
 --
@@ -97,7 +97,7 @@
     { _lkprNextMarker  :: Maybe Text
     , _lkprPolicyNames :: List "PolicyNames" Text
     , _lkprTruncated   :: Maybe Bool
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'ListKeyPoliciesResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/ListKeys.hs b/gen/Network/AWS/KMS/ListKeys.hs
--- a/gen/Network/AWS/KMS/ListKeys.hs
+++ b/gen/Network/AWS/KMS/ListKeys.hs
@@ -53,7 +53,7 @@
 data ListKeys = ListKeys
     { _lkLimit  :: Maybe Nat
     , _lkMarker :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'ListKeys' constructor.
 --
@@ -85,7 +85,7 @@
     { _lkrKeys       :: List "Keys" KeyListEntry
     , _lkrNextMarker :: Maybe Text
     , _lkrTruncated  :: Maybe Bool
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ListKeysResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/PutKeyPolicy.hs b/gen/Network/AWS/KMS/PutKeyPolicy.hs
--- a/gen/Network/AWS/KMS/PutKeyPolicy.hs
+++ b/gen/Network/AWS/KMS/PutKeyPolicy.hs
@@ -51,7 +51,7 @@
     { _pkpKeyId      :: Text
     , _pkpPolicy     :: Text
     , _pkpPolicyName :: Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'PutKeyPolicy' constructor.
 --
@@ -88,7 +88,7 @@
 pkpPolicyName = lens _pkpPolicyName (\s a -> s { _pkpPolicyName = a })
 
 data PutKeyPolicyResponse = PutKeyPolicyResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'PutKeyPolicyResponse' constructor.
 putKeyPolicyResponse :: PutKeyPolicyResponse
diff --git a/gen/Network/AWS/KMS/ReEncrypt.hs b/gen/Network/AWS/KMS/ReEncrypt.hs
--- a/gen/Network/AWS/KMS/ReEncrypt.hs
+++ b/gen/Network/AWS/KMS/ReEncrypt.hs
@@ -62,7 +62,7 @@
     , _reDestinationKeyId             :: Text
     , _reGrantTokens                  :: List "GrantTokens" Text
     , _reSourceEncryptionContext      :: Map Text Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ReEncrypt' constructor.
 --
@@ -121,7 +121,7 @@
     { _rerCiphertextBlob :: Maybe Base64
     , _rerKeyId          :: Maybe Text
     , _rerSourceKeyId    :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ReEncryptResponse' constructor.
 --
diff --git a/gen/Network/AWS/KMS/RetireGrant.hs b/gen/Network/AWS/KMS/RetireGrant.hs
--- a/gen/Network/AWS/KMS/RetireGrant.hs
+++ b/gen/Network/AWS/KMS/RetireGrant.hs
@@ -49,7 +49,7 @@
 
 newtype RetireGrant = RetireGrant
     { _rgGrantToken :: Text
-    } deriving (Eq, Ord, Show, Monoid, IsString)
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
 
 -- | 'RetireGrant' constructor.
 --
@@ -68,7 +68,7 @@
 rgGrantToken = lens _rgGrantToken (\s a -> s { _rgGrantToken = a })
 
 data RetireGrantResponse = RetireGrantResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'RetireGrantResponse' constructor.
 retireGrantResponse :: RetireGrantResponse
diff --git a/gen/Network/AWS/KMS/RevokeGrant.hs b/gen/Network/AWS/KMS/RevokeGrant.hs
--- a/gen/Network/AWS/KMS/RevokeGrant.hs
+++ b/gen/Network/AWS/KMS/RevokeGrant.hs
@@ -50,7 +50,7 @@
 data RevokeGrant = RevokeGrant
     { _rgGrantId :: Text
     , _rgKeyId   :: Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'RevokeGrant' constructor.
 --
@@ -77,7 +77,7 @@
 rgKeyId = lens _rgKeyId (\s a -> s { _rgKeyId = a })
 
 data RevokeGrantResponse = RevokeGrantResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'RevokeGrantResponse' constructor.
 revokeGrantResponse :: RevokeGrantResponse
diff --git a/gen/Network/AWS/KMS/Types.hs b/gen/Network/AWS/KMS/Types.hs
--- a/gen/Network/AWS/KMS/Types.hs
+++ b/gen/Network/AWS/KMS/Types.hs
@@ -127,7 +127,7 @@
 
 data KeyUsageType
     = EncryptDecrypt -- ^ ENCRYPT_DECRYPT
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable KeyUsageType
 
@@ -158,7 +158,7 @@
     , _kmEnabled      :: Maybe Bool
     , _kmKeyId        :: Text
     , _kmKeyUsage     :: Maybe KeyUsageType
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'KeyMetadata' constructor.
 --
@@ -242,7 +242,7 @@
 data DataKeySpec
     = AES128 -- ^ AES_128
     | AES256 -- ^ AES_256
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable DataKeySpec
 
@@ -271,7 +271,7 @@
 data GrantConstraints = GrantConstraints
     { _gcEncryptionContextEquals :: Map Text Text
     , _gcEncryptionContextSubset :: Map Text Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'GrantConstraints' constructor.
 --
@@ -317,7 +317,7 @@
     { _aleAliasArn    :: Maybe Text
     , _aleAliasName   :: Maybe Text
     , _aleTargetKeyId :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'AliasListEntry' constructor.
 --
@@ -368,7 +368,7 @@
     , _gleIssuingAccount    :: Maybe Text
     , _gleOperations        :: List "Operations" GrantOperation
     , _gleRetiringPrincipal :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'GrantListEntry' constructor.
 --
@@ -454,7 +454,7 @@
     | GOReEncryptFrom                   -- ^ ReEncryptFrom
     | GOReEncryptTo                     -- ^ ReEncryptTo
     | GORetireGrant                     -- ^ RetireGrant
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable GrantOperation
 
@@ -495,7 +495,7 @@
 data KeyListEntry = KeyListEntry
     { _kleKeyArn :: Maybe Text
     , _kleKeyId  :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'KeyListEntry' constructor.
 --
diff --git a/gen/Network/AWS/KMS/UpdateKeyDescription.hs b/gen/Network/AWS/KMS/UpdateKeyDescription.hs
--- a/gen/Network/AWS/KMS/UpdateKeyDescription.hs
+++ b/gen/Network/AWS/KMS/UpdateKeyDescription.hs
@@ -47,7 +47,7 @@
 data UpdateKeyDescription = UpdateKeyDescription
     { _ukdDescription :: Text
     , _ukdKeyId       :: Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'UpdateKeyDescription' constructor.
 --
@@ -72,7 +72,7 @@
 ukdKeyId = lens _ukdKeyId (\s a -> s { _ukdKeyId = a })
 
 data UpdateKeyDescriptionResponse = UpdateKeyDescriptionResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'UpdateKeyDescriptionResponse' constructor.
 updateKeyDescriptionResponse :: UpdateKeyDescriptionResponse
