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.0.0
+version:               0.0.1
 synopsis:              Amazon Key Management Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -69,5 +69,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/KMS/CreateGrant.hs b/gen/Network/AWS/KMS/CreateGrant.hs
--- a/gen/Network/AWS/KMS/CreateGrant.hs
+++ b/gen/Network/AWS/KMS/CreateGrant.hs
@@ -63,7 +63,7 @@
     , _cgGrantTokens       :: List "GrantTokens" Text
     , _cgGranteePrincipal  :: Text
     , _cgKeyId             :: Text
-    , _cgOperations        :: List "Operations" Text
+    , _cgOperations        :: List "Operations" GrantOperation
     , _cgRetiringPrincipal :: Maybe Text
     } deriving (Eq, Show)
 
@@ -79,7 +79,7 @@
 --
 -- * 'cgKeyId' @::@ 'Text'
 --
--- * 'cgOperations' @::@ ['Text']
+-- * 'cgOperations' @::@ ['GrantOperation']
 --
 -- * 'cgRetiringPrincipal' @::@ 'Maybe' 'Text'
 --
@@ -118,7 +118,7 @@
 -- | List of operations permitted by the grant. This can be any combination of
 -- one or more of the following values: Decrypt Encrypt GenerateDataKey
 -- GenerateDataKeyWithoutPlaintext ReEncryptFrom ReEncryptTo CreateGrant.
-cgOperations :: Lens' CreateGrant [Text]
+cgOperations :: Lens' CreateGrant [GrantOperation]
 cgOperations = lens _cgOperations (\s a -> s { _cgOperations = a }) . _List
 
 -- | Principal given permission to retire the grant. For more information, see
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
@@ -53,9 +53,9 @@
 
 data CreateKey = CreateKey
     { _ckDescription :: Maybe Text
-    , _ckKeyUsage    :: Maybe Text
+    , _ckKeyUsage    :: Maybe KeyUsageType
     , _ckPolicy      :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'CreateKey' constructor.
 --
@@ -63,7 +63,7 @@
 --
 -- * 'ckDescription' @::@ 'Maybe' 'Text'
 --
--- * 'ckKeyUsage' @::@ 'Maybe' 'Text'
+-- * 'ckKeyUsage' @::@ 'Maybe' 'KeyUsageType'
 --
 -- * 'ckPolicy' @::@ 'Maybe' 'Text'
 --
@@ -82,7 +82,7 @@
 -- | Specifies the intended use of the key. Currently this defaults to
 -- ENCRYPT/DECRYPT, and only symmetric encryption and decryption are
 -- supported.
-ckKeyUsage :: Lens' CreateKey (Maybe Text)
+ckKeyUsage :: Lens' CreateKey (Maybe KeyUsageType)
 ckKeyUsage = lens _ckKeyUsage (\s a -> s { _ckKeyUsage = a })
 
 -- | Policy to be attached to the key. This is required and delegates back to
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
@@ -56,7 +56,7 @@
     { _gdkEncryptionContext :: Map Text Text
     , _gdkGrantTokens       :: List "GrantTokens" Text
     , _gdkKeyId             :: Text
-    , _gdkKeySpec           :: Maybe Text
+    , _gdkKeySpec           :: Maybe DataKeySpec
     , _gdkNumberOfBytes     :: Maybe Nat
     } deriving (Eq, Show)
 
@@ -70,7 +70,7 @@
 --
 -- * 'gdkKeyId' @::@ 'Text'
 --
--- * 'gdkKeySpec' @::@ 'Maybe' 'Text'
+-- * 'gdkKeySpec' @::@ 'Maybe' 'DataKeySpec'
 --
 -- * 'gdkNumberOfBytes' @::@ 'Maybe' 'Natural'
 --
@@ -105,7 +105,7 @@
 
 -- | Value that identifies the encryption algorithm and key size to generate a
 -- data key for. Currently this can be AES_128 or AES_256.
-gdkKeySpec :: Lens' GenerateDataKey (Maybe Text)
+gdkKeySpec :: Lens' GenerateDataKey (Maybe DataKeySpec)
 gdkKeySpec = lens _gdkKeySpec (\s a -> s { _gdkKeySpec = a })
 
 -- | Integer that contains the number of bytes to generate. Common values are
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
@@ -55,7 +55,7 @@
     { _gdkwpEncryptionContext :: Map Text Text
     , _gdkwpGrantTokens       :: List "GrantTokens" Text
     , _gdkwpKeyId             :: Text
-    , _gdkwpKeySpec           :: Maybe Text
+    , _gdkwpKeySpec           :: Maybe DataKeySpec
     , _gdkwpNumberOfBytes     :: Maybe Nat
     } deriving (Eq, Show)
 
@@ -69,7 +69,7 @@
 --
 -- * 'gdkwpKeyId' @::@ 'Text'
 --
--- * 'gdkwpKeySpec' @::@ 'Maybe' 'Text'
+-- * 'gdkwpKeySpec' @::@ 'Maybe' 'DataKeySpec'
 --
 -- * 'gdkwpNumberOfBytes' @::@ 'Maybe' 'Natural'
 --
@@ -102,7 +102,7 @@
 
 -- | Value that identifies the encryption algorithm and key size. Currently
 -- this can be AES_128 or AES_256.
-gdkwpKeySpec :: Lens' GenerateDataKeyWithoutPlaintext (Maybe Text)
+gdkwpKeySpec :: Lens' GenerateDataKeyWithoutPlaintext (Maybe DataKeySpec)
 gdkwpKeySpec = lens _gdkwpKeySpec (\s a -> s { _gdkwpKeySpec = a })
 
 -- | Integer that contains the number of bytes to generate. Common values are
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
@@ -113,6 +113,10 @@
 instance ToText KeyUsageType where
     toText EncryptDecrypt = "ENCRYPT_DECRYPT"
 
+instance ToByteString KeyUsageType
+instance ToHeader     KeyUsageType
+instance ToQuery      KeyUsageType
+
 instance FromJSON KeyUsageType where
     parseJSON = parseJSONText "KeyUsageType"
 
@@ -126,8 +130,8 @@
     , _kmDescription  :: Maybe Text
     , _kmEnabled      :: Maybe Bool
     , _kmKeyId        :: Text
-    , _kmKeyUsage     :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    , _kmKeyUsage     :: Maybe KeyUsageType
+    } deriving (Eq, Show)
 
 -- | 'KeyMetadata' constructor.
 --
@@ -145,7 +149,7 @@
 --
 -- * 'kmKeyId' @::@ 'Text'
 --
--- * 'kmKeyUsage' @::@ 'Maybe' 'Text'
+-- * 'kmKeyUsage' @::@ 'Maybe' 'KeyUsageType'
 --
 keyMetadata :: Text -- ^ 'kmKeyId'
             -> KeyMetadata
@@ -184,7 +188,7 @@
 kmKeyId = lens _kmKeyId (\s a -> s { _kmKeyId = a })
 
 -- | A value that specifies what operation(s) the key can perform.
-kmKeyUsage :: Lens' KeyMetadata (Maybe Text)
+kmKeyUsage :: Lens' KeyMetadata (Maybe KeyUsageType)
 kmKeyUsage = lens _kmKeyUsage (\s a -> s { _kmKeyUsage = a })
 
 instance FromJSON KeyMetadata where
@@ -224,6 +228,10 @@
         AES128 -> "AES_128"
         AES256 -> "AES_256"
 
+instance ToByteString DataKeySpec
+instance ToHeader     DataKeySpec
+instance ToQuery      DataKeySpec
+
 instance FromJSON DataKeySpec where
     parseJSON = parseJSONText "DataKeySpec"
 
@@ -328,7 +336,7 @@
     , _gleGrantId           :: Maybe Text
     , _gleGranteePrincipal  :: Maybe Text
     , _gleIssuingAccount    :: Maybe Text
-    , _gleOperations        :: List "Operations" Text
+    , _gleOperations        :: List "Operations" GrantOperation
     , _gleRetiringPrincipal :: Maybe Text
     } deriving (Eq, Show)
 
@@ -344,7 +352,7 @@
 --
 -- * 'gleIssuingAccount' @::@ 'Maybe' 'Text'
 --
--- * 'gleOperations' @::@ ['Text']
+-- * 'gleOperations' @::@ ['GrantOperation']
 --
 -- * 'gleRetiringPrincipal' @::@ 'Maybe' 'Text'
 --
@@ -380,7 +388,7 @@
 -- | List of operations permitted by the grant. This can be any combination of
 -- one or more of the following values: Decrypt Encrypt GenerateDataKey
 -- GenerateDataKeyWithoutPlaintext ReEncryptFrom ReEncryptTo CreateGrant.
-gleOperations :: Lens' GrantListEntry [Text]
+gleOperations :: Lens' GrantListEntry [GrantOperation]
 gleOperations = lens _gleOperations (\s a -> s { _gleOperations = a }) . _List
 
 -- | The principal that can retire the account.
@@ -440,6 +448,10 @@
         GOReEncryptFrom                   -> "ReEncryptFrom"
         GOReEncryptTo                     -> "ReEncryptTo"
         GORetireGrant                     -> "RetireGrant"
+
+instance ToByteString GrantOperation
+instance ToHeader     GrantOperation
+instance ToQuery      GrantOperation
 
 instance FromJSON GrantOperation where
     parseJSON = parseJSONText "GrantOperation"
