diff --git a/amazonka-iam.cabal b/amazonka-iam.cabal
--- a/amazonka-iam.cabal
+++ b/amazonka-iam.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-iam
-version:               0.0.0
+version:               0.0.1
 synopsis:              Amazon Identity and Access Management SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -123,5 +123,5 @@
     other-modules:
 
     build-depends:
-          amazonka-core
-        , base          >= 4.7 && < 5
+          amazonka-core == 0.0.1.*
+        , base          >= 4.7     && < 5
diff --git a/gen/Network/AWS/IAM/GenerateCredentialReport.hs b/gen/Network/AWS/IAM/GenerateCredentialReport.hs
--- a/gen/Network/AWS/IAM/GenerateCredentialReport.hs
+++ b/gen/Network/AWS/IAM/GenerateCredentialReport.hs
@@ -55,8 +55,8 @@
 
 data GenerateCredentialReportResponse = GenerateCredentialReportResponse
     { _gcrrDescription :: Maybe Text
-    , _gcrrState       :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    , _gcrrState       :: Maybe ReportStateType
+    } deriving (Eq, Show)
 
 -- | 'GenerateCredentialReportResponse' constructor.
 --
@@ -64,7 +64,7 @@
 --
 -- * 'gcrrDescription' @::@ 'Maybe' 'Text'
 --
--- * 'gcrrState' @::@ 'Maybe' 'Text'
+-- * 'gcrrState' @::@ 'Maybe' 'ReportStateType'
 --
 generateCredentialReportResponse :: GenerateCredentialReportResponse
 generateCredentialReportResponse = GenerateCredentialReportResponse
@@ -77,7 +77,7 @@
 gcrrDescription = lens _gcrrDescription (\s a -> s { _gcrrDescription = a })
 
 -- | Information about the state of a credential report.
-gcrrState :: Lens' GenerateCredentialReportResponse (Maybe Text)
+gcrrState :: Lens' GenerateCredentialReportResponse (Maybe ReportStateType)
 gcrrState = lens _gcrrState (\s a -> s { _gcrrState = a })
 
 instance ToPath GenerateCredentialReport where
diff --git a/gen/Network/AWS/IAM/GetAccountSummary.hs b/gen/Network/AWS/IAM/GetAccountSummary.hs
--- a/gen/Network/AWS/IAM/GetAccountSummary.hs
+++ b/gen/Network/AWS/IAM/GetAccountSummary.hs
@@ -53,14 +53,14 @@
 getAccountSummary = GetAccountSummary
 
 newtype GetAccountSummaryResponse = GetAccountSummaryResponse
-    { _gasrSummaryMap :: EMap "entry" "key" "value" Text Int
+    { _gasrSummaryMap :: EMap "entry" "key" "value" SummaryKeyType Int
     } deriving (Eq, Show, Monoid, Semigroup)
 
 -- | 'GetAccountSummaryResponse' constructor.
 --
 -- The fields accessible through corresponding lenses are:
 --
--- * 'gasrSummaryMap' @::@ 'HashMap' 'Text' 'Int'
+-- * 'gasrSummaryMap' @::@ 'HashMap' 'SummaryKeyType' 'Int'
 --
 getAccountSummaryResponse :: GetAccountSummaryResponse
 getAccountSummaryResponse = GetAccountSummaryResponse
@@ -89,7 +89,7 @@
 -- certificates allowed for a user UserPolicySizeQuota - Maximum allowed
 -- size for user policy documents (in kilobytes) Users - Number of users for
 -- the AWS account UsersQuota - Maximum users allowed for the AWS account.
-gasrSummaryMap :: Lens' GetAccountSummaryResponse (HashMap Text Int)
+gasrSummaryMap :: Lens' GetAccountSummaryResponse (HashMap SummaryKeyType Int)
 gasrSummaryMap = lens _gasrSummaryMap (\s a -> s { _gasrSummaryMap = a }) . _EMap
 
 instance ToPath GetAccountSummary where
diff --git a/gen/Network/AWS/IAM/GetCredentialReport.hs b/gen/Network/AWS/IAM/GetCredentialReport.hs
--- a/gen/Network/AWS/IAM/GetCredentialReport.hs
+++ b/gen/Network/AWS/IAM/GetCredentialReport.hs
@@ -57,7 +57,7 @@
 data GetCredentialReportResponse = GetCredentialReportResponse
     { _gcrrContent       :: Maybe Base64
     , _gcrrGeneratedTime :: Maybe RFC822
-    , _gcrrReportFormat  :: Maybe Text
+    , _gcrrReportFormat  :: Maybe ReportFormatType
     } deriving (Eq, Show)
 
 -- | 'GetCredentialReportResponse' constructor.
@@ -68,7 +68,7 @@
 --
 -- * 'gcrrGeneratedTime' @::@ 'Maybe' 'UTCTime'
 --
--- * 'gcrrReportFormat' @::@ 'Maybe' 'Text'
+-- * 'gcrrReportFormat' @::@ 'Maybe' 'ReportFormatType'
 --
 getCredentialReportResponse :: GetCredentialReportResponse
 getCredentialReportResponse = GetCredentialReportResponse
@@ -89,7 +89,7 @@
         . mapping _Time
 
 -- | The format (MIME type) of the credential report.
-gcrrReportFormat :: Lens' GetCredentialReportResponse (Maybe Text)
+gcrrReportFormat :: Lens' GetCredentialReportResponse (Maybe ReportFormatType)
 gcrrReportFormat = lens _gcrrReportFormat (\s a -> s { _gcrrReportFormat = a })
 
 instance ToPath GetCredentialReport where
diff --git a/gen/Network/AWS/IAM/ListVirtualMFADevices.hs b/gen/Network/AWS/IAM/ListVirtualMFADevices.hs
--- a/gen/Network/AWS/IAM/ListVirtualMFADevices.hs
+++ b/gen/Network/AWS/IAM/ListVirtualMFADevices.hs
@@ -53,16 +53,16 @@
 import qualified GHC.Exts
 
 data ListVirtualMFADevices = ListVirtualMFADevices
-    { _lvmfadAssignmentStatus :: Maybe Text
+    { _lvmfadAssignmentStatus :: Maybe AssignmentStatusType
     , _lvmfadMarker           :: Maybe Text
     , _lvmfadMaxItems         :: Maybe Nat
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'ListVirtualMFADevices' constructor.
 --
 -- The fields accessible through corresponding lenses are:
 --
--- * 'lvmfadAssignmentStatus' @::@ 'Maybe' 'Text'
+-- * 'lvmfadAssignmentStatus' @::@ 'Maybe' 'AssignmentStatusType'
 --
 -- * 'lvmfadMarker' @::@ 'Maybe' 'Text'
 --
@@ -78,7 +78,7 @@
 -- | The status (unassigned or assigned) of the devices to list. If you do not
 -- specify an AssignmentStatus, the action defaults to Any which lists both
 -- assigned and unassigned virtual MFA devices.
-lvmfadAssignmentStatus :: Lens' ListVirtualMFADevices (Maybe Text)
+lvmfadAssignmentStatus :: Lens' ListVirtualMFADevices (Maybe AssignmentStatusType)
 lvmfadAssignmentStatus =
     lens _lvmfadAssignmentStatus (\s a -> s { _lvmfadAssignmentStatus = a })
 
diff --git a/gen/Network/AWS/IAM/Types.hs b/gen/Network/AWS/IAM/Types.hs
--- a/gen/Network/AWS/IAM/Types.hs
+++ b/gen/Network/AWS/IAM/Types.hs
@@ -221,11 +221,13 @@
         Assigned   -> "Assigned"
         Unassigned -> "Unassigned"
 
+instance ToByteString AssignmentStatusType
+instance ToHeader     AssignmentStatusType
+instance ToQuery      AssignmentStatusType
+
 instance FromXML AssignmentStatusType where
     parseXML = parseXMLText "AssignmentStatusType"
 
-instance ToQuery AssignmentStatusType where
-    toQuery = toQuery . toText
 
 data PasswordPolicy = PasswordPolicy
     { _ppAllowUsersToChangePassword :: Maybe Bool
@@ -590,11 +592,13 @@
 instance ToText ReportFormatType where
     toText TextCsv = "text/csv"
 
+instance ToByteString ReportFormatType
+instance ToHeader     ReportFormatType
+instance ToQuery      ReportFormatType
+
 instance FromXML ReportFormatType where
     parseXML = parseXMLText "ReportFormatType"
 
-instance ToQuery ReportFormatType where
-    toQuery = toQuery . toText
 
 data ServerCertificateMetadata = ServerCertificateMetadata
     { _scmArn                   :: Text
@@ -817,11 +821,13 @@
         Users                           -> "Users"
         UsersQuota                      -> "UsersQuota"
 
+instance ToByteString SummaryKeyType
+instance ToHeader     SummaryKeyType
+instance ToQuery      SummaryKeyType
+
 instance FromXML SummaryKeyType where
     parseXML = parseXMLText "SummaryKeyType"
 
-instance ToQuery SummaryKeyType where
-    toQuery = toQuery . toText
 
 data ReportStateType
     = Complete   -- ^ COMPLETE
@@ -842,11 +848,13 @@
         Inprogress -> "INPROGRESS"
         Started    -> "STARTED"
 
+instance ToByteString ReportStateType
+instance ToHeader     ReportStateType
+instance ToQuery      ReportStateType
+
 instance FromXML ReportStateType where
     parseXML = parseXMLText "ReportStateType"
 
-instance ToQuery ReportStateType where
-    toQuery = toQuery . toText
 
 data User = User
     { _uArn              :: Text
@@ -962,11 +970,13 @@
         Active   -> "Active"
         Inactive -> "Inactive"
 
+instance ToByteString StatusType
+instance ToHeader     StatusType
+instance ToQuery      StatusType
+
 instance FromXML StatusType where
     parseXML = parseXMLText "StatusType"
 
-instance ToQuery StatusType where
-    toQuery = toQuery . toText
 
 data SAMLProviderListEntry = SAMLProviderListEntry
     { _samlpleArn        :: Maybe Text
@@ -1170,9 +1180,9 @@
     { _akAccessKeyId     :: Text
     , _akCreateDate      :: Maybe RFC822
     , _akSecretAccessKey :: Sensitive Text
-    , _akStatus          :: Text
+    , _akStatus          :: StatusType
     , _akUserName        :: Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'AccessKey' constructor.
 --
@@ -1184,13 +1194,13 @@
 --
 -- * 'akSecretAccessKey' @::@ 'Text'
 --
--- * 'akStatus' @::@ 'Text'
+-- * 'akStatus' @::@ 'StatusType'
 --
 -- * 'akUserName' @::@ 'Text'
 --
 accessKey :: Text -- ^ 'akUserName'
           -> Text -- ^ 'akAccessKeyId'
-          -> Text -- ^ 'akStatus'
+          -> StatusType -- ^ 'akStatus'
           -> Text -- ^ 'akSecretAccessKey'
           -> AccessKey
 accessKey p1 p2 p3 p4 = AccessKey
@@ -1217,7 +1227,7 @@
 
 -- | The status of the access key. Active means the key is valid for API
 -- calls, while Inactive means it is not.
-akStatus :: Lens' AccessKey Text
+akStatus :: Lens' AccessKey StatusType
 akStatus = lens _akStatus (\s a -> s { _akStatus = a })
 
 -- | The name of the IAM user that the access key is associated with.
@@ -1320,10 +1330,10 @@
 data SigningCertificate = SigningCertificate
     { _sc1CertificateBody :: Text
     , _sc1CertificateId   :: Text
-    , _sc1Status          :: Text
+    , _sc1Status          :: StatusType
     , _sc1UploadDate      :: Maybe RFC822
     , _sc1UserName        :: Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'SigningCertificate' constructor.
 --
@@ -1333,7 +1343,7 @@
 --
 -- * 'sc1CertificateId' @::@ 'Text'
 --
--- * 'sc1Status' @::@ 'Text'
+-- * 'sc1Status' @::@ 'StatusType'
 --
 -- * 'sc1UploadDate' @::@ 'Maybe' 'UTCTime'
 --
@@ -1342,7 +1352,7 @@
 signingCertificate :: Text -- ^ 'sc1UserName'
                    -> Text -- ^ 'sc1CertificateId'
                    -> Text -- ^ 'sc1CertificateBody'
-                   -> Text -- ^ 'sc1Status'
+                   -> StatusType -- ^ 'sc1Status'
                    -> SigningCertificate
 signingCertificate p1 p2 p3 p4 = SigningCertificate
     { _sc1UserName        = p1
@@ -1363,7 +1373,7 @@
 
 -- | The status of the signing certificate. Active means the key is valid for
 -- API calls, while Inactive means it is not.
-sc1Status :: Lens' SigningCertificate Text
+sc1Status :: Lens' SigningCertificate StatusType
 sc1Status = lens _sc1Status (\s a -> s { _sc1Status = a })
 
 -- | The date when the signing certificate was uploaded.
@@ -1394,9 +1404,9 @@
 data AccessKeyMetadata = AccessKeyMetadata
     { _akmAccessKeyId :: Maybe Text
     , _akmCreateDate  :: Maybe RFC822
-    , _akmStatus      :: Maybe Text
+    , _akmStatus      :: Maybe StatusType
     , _akmUserName    :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'AccessKeyMetadata' constructor.
 --
@@ -1406,7 +1416,7 @@
 --
 -- * 'akmCreateDate' @::@ 'Maybe' 'UTCTime'
 --
--- * 'akmStatus' @::@ 'Maybe' 'Text'
+-- * 'akmStatus' @::@ 'Maybe' 'StatusType'
 --
 -- * 'akmUserName' @::@ 'Maybe' 'Text'
 --
@@ -1428,7 +1438,7 @@
 
 -- | The status of the access key. Active means the key is valid for API
 -- calls; Inactive means it is not.
-akmStatus :: Lens' AccessKeyMetadata (Maybe Text)
+akmStatus :: Lens' AccessKeyMetadata (Maybe StatusType)
 akmStatus = lens _akmStatus (\s a -> s { _akmStatus = a })
 
 -- | The name of the IAM user that the key is associated with.
diff --git a/gen/Network/AWS/IAM/UpdateAccessKey.hs b/gen/Network/AWS/IAM/UpdateAccessKey.hs
--- a/gen/Network/AWS/IAM/UpdateAccessKey.hs
+++ b/gen/Network/AWS/IAM/UpdateAccessKey.hs
@@ -54,9 +54,9 @@
 
 data UpdateAccessKey = UpdateAccessKey
     { _uakAccessKeyId :: Text
-    , _uakStatus      :: Text
+    , _uakStatus      :: StatusType
     , _uakUserName    :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'UpdateAccessKey' constructor.
 --
@@ -64,12 +64,12 @@
 --
 -- * 'uakAccessKeyId' @::@ 'Text'
 --
--- * 'uakStatus' @::@ 'Text'
+-- * 'uakStatus' @::@ 'StatusType'
 --
 -- * 'uakUserName' @::@ 'Maybe' 'Text'
 --
 updateAccessKey :: Text -- ^ 'uakAccessKeyId'
-                -> Text -- ^ 'uakStatus'
+                -> StatusType -- ^ 'uakStatus'
                 -> UpdateAccessKey
 updateAccessKey p1 p2 = UpdateAccessKey
     { _uakAccessKeyId = p1
@@ -84,7 +84,7 @@
 -- | The status you want to assign to the secret access key. Active means the
 -- key can be used for API calls to AWS, while Inactive means the key cannot
 -- be used.
-uakStatus :: Lens' UpdateAccessKey Text
+uakStatus :: Lens' UpdateAccessKey StatusType
 uakStatus = lens _uakStatus (\s a -> s { _uakStatus = a })
 
 -- | The name of the user whose key you want to update.
diff --git a/gen/Network/AWS/IAM/UpdateSigningCertificate.hs b/gen/Network/AWS/IAM/UpdateSigningCertificate.hs
--- a/gen/Network/AWS/IAM/UpdateSigningCertificate.hs
+++ b/gen/Network/AWS/IAM/UpdateSigningCertificate.hs
@@ -55,9 +55,9 @@
 
 data UpdateSigningCertificate = UpdateSigningCertificate
     { _uscCertificateId :: Text
-    , _uscStatus        :: Text
+    , _uscStatus        :: StatusType
     , _uscUserName      :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'UpdateSigningCertificate' constructor.
 --
@@ -65,12 +65,12 @@
 --
 -- * 'uscCertificateId' @::@ 'Text'
 --
--- * 'uscStatus' @::@ 'Text'
+-- * 'uscStatus' @::@ 'StatusType'
 --
 -- * 'uscUserName' @::@ 'Maybe' 'Text'
 --
 updateSigningCertificate :: Text -- ^ 'uscCertificateId'
-                         -> Text -- ^ 'uscStatus'
+                         -> StatusType -- ^ 'uscStatus'
                          -> UpdateSigningCertificate
 updateSigningCertificate p1 p2 = UpdateSigningCertificate
     { _uscCertificateId = p1
@@ -85,7 +85,7 @@
 -- | The status you want to assign to the certificate. Active means the
 -- certificate can be used for API calls to AWS, while Inactive means the
 -- certificate cannot be used.
-uscStatus :: Lens' UpdateSigningCertificate Text
+uscStatus :: Lens' UpdateSigningCertificate StatusType
 uscStatus = lens _uscStatus (\s a -> s { _uscStatus = a })
 
 -- | The name of the user the signing certificate belongs to.
