diff --git a/amazonka-opsworks.cabal b/amazonka-opsworks.cabal
--- a/amazonka-opsworks.cabal
+++ b/amazonka-opsworks.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-opsworks
-version:               0.0.0
+version:               0.0.1
 synopsis:              Amazon OpsWorks SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -100,5 +100,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/OpsWorks/CloneStack.hs b/gen/Network/AWS/OpsWorks/CloneStack.hs
--- a/gen/Network/AWS/OpsWorks/CloneStack.hs
+++ b/gen/Network/AWS/OpsWorks/CloneStack.hs
@@ -69,7 +69,7 @@
 import qualified GHC.Exts
 
 data CloneStack = CloneStack
-    { _cs1Attributes                :: Map Text Text
+    { _cs1Attributes                :: Map StackAttributesKeys Text
     , _cs1ChefConfiguration         :: Maybe ChefConfiguration
     , _cs1CloneAppIds               :: List "InstanceIds" Text
     , _cs1ClonePermissions          :: Maybe Bool
@@ -79,7 +79,7 @@
     , _cs1DefaultAvailabilityZone   :: Maybe Text
     , _cs1DefaultInstanceProfileArn :: Maybe Text
     , _cs1DefaultOs                 :: Maybe Text
-    , _cs1DefaultRootDeviceType     :: Maybe Text
+    , _cs1DefaultRootDeviceType     :: Maybe RootDeviceType
     , _cs1DefaultSshKeyName         :: Maybe Text
     , _cs1DefaultSubnetId           :: Maybe Text
     , _cs1HostnameTheme             :: Maybe Text
@@ -96,7 +96,7 @@
 --
 -- The fields accessible through corresponding lenses are:
 --
--- * 'cs1Attributes' @::@ 'HashMap' 'Text' 'Text'
+-- * 'cs1Attributes' @::@ 'HashMap' 'StackAttributesKeys' 'Text'
 --
 -- * 'cs1ChefConfiguration' @::@ 'Maybe' 'ChefConfiguration'
 --
@@ -116,7 +116,7 @@
 --
 -- * 'cs1DefaultOs' @::@ 'Maybe' 'Text'
 --
--- * 'cs1DefaultRootDeviceType' @::@ 'Maybe' 'Text'
+-- * 'cs1DefaultRootDeviceType' @::@ 'Maybe' 'RootDeviceType'
 --
 -- * 'cs1DefaultSshKeyName' @::@ 'Maybe' 'Text'
 --
@@ -167,7 +167,7 @@
 
 -- | A list of stack attributes and values as key/value pairs to be added to
 -- the cloned stack.
-cs1Attributes :: Lens' CloneStack (HashMap Text Text)
+cs1Attributes :: Lens' CloneStack (HashMap StackAttributesKeys Text)
 cs1Attributes = lens _cs1Attributes (\s a -> s { _cs1Attributes = a }) . _Map
 
 -- | A ChefConfiguration object that specifies whether to enable Berkshelf and
@@ -232,7 +232,7 @@
 -- | The default root device type. This value is used by default for all
 -- instances in the cloned stack, but you can override it when you create an
 -- instance. For more information, see Storage for the Root Device.
-cs1DefaultRootDeviceType :: Lens' CloneStack (Maybe Text)
+cs1DefaultRootDeviceType :: Lens' CloneStack (Maybe RootDeviceType)
 cs1DefaultRootDeviceType =
     lens _cs1DefaultRootDeviceType
         (\s a -> s { _cs1DefaultRootDeviceType = a })
diff --git a/gen/Network/AWS/OpsWorks/CreateApp.hs b/gen/Network/AWS/OpsWorks/CreateApp.hs
--- a/gen/Network/AWS/OpsWorks/CreateApp.hs
+++ b/gen/Network/AWS/OpsWorks/CreateApp.hs
@@ -61,7 +61,7 @@
 
 data CreateApp = CreateApp
     { _caAppSource        :: Maybe Source
-    , _caAttributes       :: Map Text Text
+    , _caAttributes       :: Map AppAttributesKeys Text
     , _caDataSources      :: List "DataSources" DataSource
     , _caDescription      :: Maybe Text
     , _caDomains          :: List "InstanceIds" Text
@@ -70,7 +70,7 @@
     , _caShortname        :: Maybe Text
     , _caSslConfiguration :: Maybe SslConfiguration
     , _caStackId          :: Text
-    , _caType             :: Text
+    , _caType             :: AppType
     } deriving (Eq, Show)
 
 -- | 'CreateApp' constructor.
@@ -79,7 +79,7 @@
 --
 -- * 'caAppSource' @::@ 'Maybe' 'Source'
 --
--- * 'caAttributes' @::@ 'HashMap' 'Text' 'Text'
+-- * 'caAttributes' @::@ 'HashMap' 'AppAttributesKeys' 'Text'
 --
 -- * 'caDataSources' @::@ ['DataSource']
 --
@@ -97,11 +97,11 @@
 --
 -- * 'caStackId' @::@ 'Text'
 --
--- * 'caType' @::@ 'Text'
+-- * 'caType' @::@ 'AppType'
 --
 createApp :: Text -- ^ 'caStackId'
           -> Text -- ^ 'caName'
-          -> Text -- ^ 'caType'
+          -> AppType -- ^ 'caType'
           -> CreateApp
 createApp p1 p2 p3 = CreateApp
     { _caStackId          = p1
@@ -123,7 +123,7 @@
 
 -- | One or more user-defined key/value pairs to be added to the stack
 -- attributes.
-caAttributes :: Lens' CreateApp (HashMap Text Text)
+caAttributes :: Lens' CreateApp (HashMap AppAttributesKeys Text)
 caAttributes = lens _caAttributes (\s a -> s { _caAttributes = a }) . _Map
 
 -- | The app's data source.
@@ -164,7 +164,7 @@
 -- For example, PHP applications are associated with a PHP layer. AWS
 -- OpsWorks deploys an application to those instances that are members of
 -- the corresponding layer.
-caType :: Lens' CreateApp Text
+caType :: Lens' CreateApp AppType
 caType = lens _caType (\s a -> s { _caType = a })
 
 newtype CreateAppResponse = CreateAppResponse
diff --git a/gen/Network/AWS/OpsWorks/CreateInstance.hs b/gen/Network/AWS/OpsWorks/CreateInstance.hs
--- a/gen/Network/AWS/OpsWorks/CreateInstance.hs
+++ b/gen/Network/AWS/OpsWorks/CreateInstance.hs
@@ -65,8 +65,8 @@
 
 data CreateInstance = CreateInstance
     { _ciAmiId                :: Maybe Text
-    , _ciArchitecture         :: Maybe Text
-    , _ciAutoScalingType      :: Maybe Text
+    , _ciArchitecture         :: Maybe Architecture
+    , _ciAutoScalingType      :: Maybe AutoScalingType
     , _ciAvailabilityZone     :: Maybe Text
     , _ciEbsOptimized         :: Maybe Bool
     , _ciHostname             :: Maybe Text
@@ -74,12 +74,12 @@
     , _ciInstanceType         :: Text
     , _ciLayerIds             :: List "InstanceIds" Text
     , _ciOs                   :: Maybe Text
-    , _ciRootDeviceType       :: Maybe Text
+    , _ciRootDeviceType       :: Maybe RootDeviceType
     , _ciSshKeyName           :: Maybe Text
     , _ciStackId              :: Text
     , _ciSubnetId             :: Maybe Text
     , _ciVirtualizationType   :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'CreateInstance' constructor.
 --
@@ -87,9 +87,9 @@
 --
 -- * 'ciAmiId' @::@ 'Maybe' 'Text'
 --
--- * 'ciArchitecture' @::@ 'Maybe' 'Text'
+-- * 'ciArchitecture' @::@ 'Maybe' 'Architecture'
 --
--- * 'ciAutoScalingType' @::@ 'Maybe' 'Text'
+-- * 'ciAutoScalingType' @::@ 'Maybe' 'AutoScalingType'
 --
 -- * 'ciAvailabilityZone' @::@ 'Maybe' 'Text'
 --
@@ -105,7 +105,7 @@
 --
 -- * 'ciOs' @::@ 'Maybe' 'Text'
 --
--- * 'ciRootDeviceType' @::@ 'Maybe' 'Text'
+-- * 'ciRootDeviceType' @::@ 'Maybe' 'RootDeviceType'
 --
 -- * 'ciSshKeyName' @::@ 'Maybe' 'Text'
 --
@@ -146,7 +146,7 @@
 -- do not necessarily support both architectures. For a list of the
 -- architectures that are supported by the different instance types, see
 -- Instance Families and Types.
-ciArchitecture :: Lens' CreateInstance (Maybe Text)
+ciArchitecture :: Lens' CreateInstance (Maybe Architecture)
 ciArchitecture = lens _ciArchitecture (\s a -> s { _ciArchitecture = a })
 
 -- | The instance auto scaling type, which has three possible values:
@@ -158,7 +158,7 @@
 -- load metrics. To use load-based auto scaling, you must enable it for the
 -- instance layer and configure the thresholds by calling
 -- SetLoadBasedAutoScaling.
-ciAutoScalingType :: Lens' CreateInstance (Maybe Text)
+ciAutoScalingType :: Lens' CreateInstance (Maybe AutoScalingType)
 ciAutoScalingType =
     lens _ciAutoScalingType (\s a -> s { _ciAutoScalingType = a })
 
@@ -209,7 +209,7 @@
 
 -- | The instance root device type. For more information, see Storage for the
 -- Root Device.
-ciRootDeviceType :: Lens' CreateInstance (Maybe Text)
+ciRootDeviceType :: Lens' CreateInstance (Maybe RootDeviceType)
 ciRootDeviceType = lens _ciRootDeviceType (\s a -> s { _ciRootDeviceType = a })
 
 -- | The instance SSH key name.
diff --git a/gen/Network/AWS/OpsWorks/CreateLayer.hs b/gen/Network/AWS/OpsWorks/CreateLayer.hs
--- a/gen/Network/AWS/OpsWorks/CreateLayer.hs
+++ b/gen/Network/AWS/OpsWorks/CreateLayer.hs
@@ -64,7 +64,7 @@
 import qualified GHC.Exts
 
 data CreateLayer = CreateLayer
-    { _clAttributes               :: Map Text Text
+    { _clAttributes               :: Map LayerAttributesKeys Text
     , _clAutoAssignElasticIps     :: Maybe Bool
     , _clAutoAssignPublicIps      :: Maybe Bool
     , _clCustomInstanceProfileArn :: Maybe Text
@@ -76,7 +76,7 @@
     , _clPackages                 :: List "InstanceIds" Text
     , _clShortname                :: Text
     , _clStackId                  :: Text
-    , _clType                     :: Text
+    , _clType                     :: LayerType
     , _clUseEbsOptimizedInstances :: Maybe Bool
     , _clVolumeConfigurations     :: List "VolumeConfigurations" VolumeConfiguration
     } deriving (Eq, Show)
@@ -85,7 +85,7 @@
 --
 -- The fields accessible through corresponding lenses are:
 --
--- * 'clAttributes' @::@ 'HashMap' 'Text' 'Text'
+-- * 'clAttributes' @::@ 'HashMap' 'LayerAttributesKeys' 'Text'
 --
 -- * 'clAutoAssignElasticIps' @::@ 'Maybe' 'Bool'
 --
@@ -109,14 +109,14 @@
 --
 -- * 'clStackId' @::@ 'Text'
 --
--- * 'clType' @::@ 'Text'
+-- * 'clType' @::@ 'LayerType'
 --
 -- * 'clUseEbsOptimizedInstances' @::@ 'Maybe' 'Bool'
 --
 -- * 'clVolumeConfigurations' @::@ ['VolumeConfiguration']
 --
 createLayer :: Text -- ^ 'clStackId'
-            -> Text -- ^ 'clType'
+            -> LayerType -- ^ 'clType'
             -> Text -- ^ 'clName'
             -> Text -- ^ 'clShortname'
             -> CreateLayer
@@ -140,7 +140,7 @@
 
 -- | One or more user-defined key/value pairs to be added to the stack
 -- attributes.
-clAttributes :: Lens' CreateLayer (HashMap Text Text)
+clAttributes :: Lens' CreateLayer (HashMap LayerAttributesKeys Text)
 clAttributes = lens _clAttributes (\s a -> s { _clAttributes = a }) . _Map
 
 -- | Whether to automatically assign an Elastic IP address to the layer's
@@ -215,7 +215,7 @@
 -- layer lb: An HAProxy layer memcached: A Memcached layer
 -- monitoring-master: A Ganglia layer nodejs-app: A Node.js App Server layer
 -- php-app: A PHP App Server layer web: A Static Web Server layer.
-clType :: Lens' CreateLayer Text
+clType :: Lens' CreateLayer LayerType
 clType = lens _clType (\s a -> s { _clType = a })
 
 -- | Whether to use Amazon EBS-optimized instances.
diff --git a/gen/Network/AWS/OpsWorks/CreateStack.hs b/gen/Network/AWS/OpsWorks/CreateStack.hs
--- a/gen/Network/AWS/OpsWorks/CreateStack.hs
+++ b/gen/Network/AWS/OpsWorks/CreateStack.hs
@@ -66,7 +66,7 @@
 import qualified GHC.Exts
 
 data CreateStack = CreateStack
-    { _csAttributes                :: Map Text Text
+    { _csAttributes                :: Map StackAttributesKeys Text
     , _csChefConfiguration         :: Maybe ChefConfiguration
     , _csConfigurationManager      :: Maybe StackConfigurationManager
     , _csCustomCookbooksSource     :: Maybe Source
@@ -74,7 +74,7 @@
     , _csDefaultAvailabilityZone   :: Maybe Text
     , _csDefaultInstanceProfileArn :: Text
     , _csDefaultOs                 :: Maybe Text
-    , _csDefaultRootDeviceType     :: Maybe Text
+    , _csDefaultRootDeviceType     :: Maybe RootDeviceType
     , _csDefaultSshKeyName         :: Maybe Text
     , _csDefaultSubnetId           :: Maybe Text
     , _csHostnameTheme             :: Maybe Text
@@ -90,7 +90,7 @@
 --
 -- The fields accessible through corresponding lenses are:
 --
--- * 'csAttributes' @::@ 'HashMap' 'Text' 'Text'
+-- * 'csAttributes' @::@ 'HashMap' 'StackAttributesKeys' 'Text'
 --
 -- * 'csChefConfiguration' @::@ 'Maybe' 'ChefConfiguration'
 --
@@ -106,7 +106,7 @@
 --
 -- * 'csDefaultOs' @::@ 'Maybe' 'Text'
 --
--- * 'csDefaultRootDeviceType' @::@ 'Maybe' 'Text'
+-- * 'csDefaultRootDeviceType' @::@ 'Maybe' 'RootDeviceType'
 --
 -- * 'csDefaultSshKeyName' @::@ 'Maybe' 'Text'
 --
@@ -154,7 +154,7 @@
 
 -- | One or more user-defined key/value pairs to be added to the stack
 -- attributes.
-csAttributes :: Lens' CreateStack (HashMap Text Text)
+csAttributes :: Lens' CreateStack (HashMap StackAttributesKeys Text)
 csAttributes = lens _csAttributes (\s a -> s { _csAttributes = a }) . _Map
 
 -- | A ChefConfiguration object that specifies whether to enable Berkshelf and
@@ -210,7 +210,7 @@
 -- instances in the stack, but you can override it when you create an
 -- instance. The default option is instance-store. For more information, see
 -- Storage for the Root Device.
-csDefaultRootDeviceType :: Lens' CreateStack (Maybe Text)
+csDefaultRootDeviceType :: Lens' CreateStack (Maybe RootDeviceType)
 csDefaultRootDeviceType =
     lens _csDefaultRootDeviceType (\s a -> s { _csDefaultRootDeviceType = a })
 
diff --git a/gen/Network/AWS/OpsWorks/Types.hs b/gen/Network/AWS/OpsWorks/Types.hs
--- a/gen/Network/AWS/OpsWorks/Types.hs
+++ b/gen/Network/AWS/OpsWorks/Types.hs
@@ -997,6 +997,10 @@
         DocumentRoot       -> "DocumentRoot"
         RailsEnv           -> "RailsEnv"
 
+instance ToByteString AppAttributesKeys
+instance ToHeader     AppAttributesKeys
+instance ToQuery      AppAttributesKeys
+
 instance FromJSON AppAttributesKeys where
     parseJSON = parseJSONText "AppAttributesKeys"
 
@@ -1171,6 +1175,10 @@
 instance ToText StackAttributesKeys where
     toText Color = "Color"
 
+instance ToByteString StackAttributesKeys
+instance ToHeader     StackAttributesKeys
+instance ToQuery      StackAttributesKeys
+
 instance FromJSON StackAttributesKeys where
     parseJSON = parseJSONText "StackAttributesKeys"
 
@@ -1261,6 +1269,10 @@
         S3      -> "s3"
         Svn     -> "svn"
 
+instance ToByteString SourceType
+instance ToHeader     SourceType
+instance ToQuery      SourceType
+
 instance FromJSON SourceType where
     parseJSON = parseJSONText "SourceType"
 
@@ -1495,6 +1507,10 @@
         RailsApp         -> "rails-app"
         Web              -> "web"
 
+instance ToByteString LayerType
+instance ToHeader     LayerType
+instance ToQuery      LayerType
+
 instance FromJSON LayerType where
     parseJSON = parseJSONText "LayerType"
 
@@ -1597,7 +1613,7 @@
 data App = App
     { _appAppId            :: Maybe Text
     , _appAppSource        :: Maybe Source
-    , _appAttributes       :: Map Text Text
+    , _appAttributes       :: Map AppAttributesKeys Text
     , _appCreatedAt        :: Maybe Text
     , _appDataSources      :: List "DataSources" DataSource
     , _appDescription      :: Maybe Text
@@ -1607,7 +1623,7 @@
     , _appShortname        :: Maybe Text
     , _appSslConfiguration :: Maybe SslConfiguration
     , _appStackId          :: Maybe Text
-    , _appType             :: Maybe Text
+    , _appType             :: Maybe AppType
     } deriving (Eq, Show)
 
 -- | 'App' constructor.
@@ -1618,7 +1634,7 @@
 --
 -- * 'appAppSource' @::@ 'Maybe' 'Source'
 --
--- * 'appAttributes' @::@ 'HashMap' 'Text' 'Text'
+-- * 'appAttributes' @::@ 'HashMap' 'AppAttributesKeys' 'Text'
 --
 -- * 'appCreatedAt' @::@ 'Maybe' 'Text'
 --
@@ -1638,7 +1654,7 @@
 --
 -- * 'appStackId' @::@ 'Maybe' 'Text'
 --
--- * 'appType' @::@ 'Maybe' 'Text'
+-- * 'appType' @::@ 'Maybe' 'AppType'
 --
 app :: App
 app = App
@@ -1666,7 +1682,7 @@
 appAppSource = lens _appAppSource (\s a -> s { _appAppSource = a })
 
 -- | The stack attributes.
-appAttributes :: Lens' App (HashMap Text Text)
+appAttributes :: Lens' App (HashMap AppAttributesKeys Text)
 appAttributes = lens _appAttributes (\s a -> s { _appAttributes = a }) . _Map
 
 -- | When the app was created.
@@ -1708,7 +1724,7 @@
 appStackId = lens _appStackId (\s a -> s { _appStackId = a })
 
 -- | The app type.
-appType :: Lens' App (Maybe Text)
+appType :: Lens' App (Maybe AppType)
 appType = lens _appType (\s a -> s { _appType = a })
 
 instance FromJSON App where
@@ -1898,6 +1914,10 @@
         Load  -> "load"
         Timer -> "timer"
 
+instance ToByteString AutoScalingType
+instance ToHeader     AutoScalingType
+instance ToQuery      AutoScalingType
+
 instance FromJSON AutoScalingType where
     parseJSON = parseJSONText "AutoScalingType"
 
@@ -1908,10 +1928,10 @@
     { _sPassword :: Maybe Text
     , _sRevision :: Maybe Text
     , _sSshKey   :: Maybe Text
-    , _sType     :: Maybe Text
+    , _sType     :: Maybe SourceType
     , _sUrl      :: Maybe Text
     , _sUsername :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'Source' constructor.
 --
@@ -1923,7 +1943,7 @@
 --
 -- * 'sSshKey' @::@ 'Maybe' 'Text'
 --
--- * 'sType' @::@ 'Maybe' 'Text'
+-- * 'sType' @::@ 'Maybe' 'SourceType'
 --
 -- * 'sUrl' @::@ 'Maybe' 'Text'
 --
@@ -1958,7 +1978,7 @@
 sSshKey = lens _sSshKey (\s a -> s { _sSshKey = a })
 
 -- | The repository type.
-sType :: Lens' Source (Maybe Text)
+sType :: Lens' Source (Maybe SourceType)
 sType = lens _sType (\s a -> s { _sType = a })
 
 -- | The source URL.
@@ -2055,6 +2075,10 @@
         I386  -> "i386"
         X8664 -> "x86_64"
 
+instance ToByteString Architecture
+instance ToHeader     Architecture
+instance ToQuery      Architecture
+
 instance FromJSON Architecture where
     parseJSON = parseJSONText "Architecture"
 
@@ -2182,6 +2206,10 @@
         RubyVersion                 -> "RubyVersion"
         RubygemsVersion             -> "RubygemsVersion"
 
+instance ToByteString LayerAttributesKeys
+instance ToHeader     LayerAttributesKeys
+instance ToQuery      LayerAttributesKeys
+
 instance FromJSON LayerAttributesKeys where
     parseJSON = parseJSONText "LayerAttributesKeys"
 
@@ -2341,7 +2369,7 @@
         ]
 
 data Layer = Layer
-    { _lAttributes                :: Map Text Text
+    { _lAttributes                :: Map LayerAttributesKeys Text
     , _lAutoAssignElasticIps      :: Maybe Bool
     , _lAutoAssignPublicIps       :: Maybe Bool
     , _lCreatedAt                 :: Maybe Text
@@ -2357,7 +2385,7 @@
     , _lPackages                  :: List "InstanceIds" Text
     , _lShortname                 :: Maybe Text
     , _lStackId                   :: Maybe Text
-    , _lType                      :: Maybe Text
+    , _lType                      :: Maybe LayerType
     , _lUseEbsOptimizedInstances  :: Maybe Bool
     , _lVolumeConfigurations      :: List "VolumeConfigurations" VolumeConfiguration
     } deriving (Eq, Show)
@@ -2366,7 +2394,7 @@
 --
 -- The fields accessible through corresponding lenses are:
 --
--- * 'lAttributes' @::@ 'HashMap' 'Text' 'Text'
+-- * 'lAttributes' @::@ 'HashMap' 'LayerAttributesKeys' 'Text'
 --
 -- * 'lAutoAssignElasticIps' @::@ 'Maybe' 'Bool'
 --
@@ -2398,7 +2426,7 @@
 --
 -- * 'lStackId' @::@ 'Maybe' 'Text'
 --
--- * 'lType' @::@ 'Maybe' 'Text'
+-- * 'lType' @::@ 'Maybe' 'LayerType'
 --
 -- * 'lUseEbsOptimizedInstances' @::@ 'Maybe' 'Bool'
 --
@@ -2428,7 +2456,7 @@
     }
 
 -- | The layer attributes.
-lAttributes :: Lens' Layer (HashMap Text Text)
+lAttributes :: Lens' Layer (HashMap LayerAttributesKeys Text)
 lAttributes = lens _lAttributes (\s a -> s { _lAttributes = a }) . _Map
 
 -- | Whether to automatically assign an Elastic IP address to the layer's
@@ -2512,7 +2540,7 @@
 -- | The layer type, which must be one of the following: Custom
 -- GangliaMonitoringMaster HaProxy MemcachedServer MySqlMaster
 -- NodeJsAppServer PhpAppServer RailsAppServer WebServer.
-lType :: Lens' Layer (Maybe Text)
+lType :: Lens' Layer (Maybe LayerType)
 lType = lens _lType (\s a -> s { _lType = a })
 
 -- | Whether the layer uses Amazon EBS-optimized instances.
@@ -2755,6 +2783,10 @@
         Ebs           -> "ebs"
         InstanceStore -> "instance-store"
 
+instance ToByteString RootDeviceType
+instance ToHeader     RootDeviceType
+instance ToQuery      RootDeviceType
+
 instance FromJSON RootDeviceType where
     parseJSON = parseJSONText "RootDeviceType"
 
@@ -2763,7 +2795,7 @@
 
 data Stack = Stack
     { _sArn                       :: Maybe Text
-    , _sAttributes                :: Map Text Text
+    , _sAttributes                :: Map StackAttributesKeys Text
     , _sChefConfiguration         :: Maybe ChefConfiguration
     , _sConfigurationManager      :: Maybe StackConfigurationManager
     , _sCreatedAt                 :: Maybe Text
@@ -2772,7 +2804,7 @@
     , _sDefaultAvailabilityZone   :: Maybe Text
     , _sDefaultInstanceProfileArn :: Maybe Text
     , _sDefaultOs                 :: Maybe Text
-    , _sDefaultRootDeviceType     :: Maybe Text
+    , _sDefaultRootDeviceType     :: Maybe RootDeviceType
     , _sDefaultSshKeyName         :: Maybe Text
     , _sDefaultSubnetId           :: Maybe Text
     , _sHostnameTheme             :: Maybe Text
@@ -2791,7 +2823,7 @@
 --
 -- * 'sArn' @::@ 'Maybe' 'Text'
 --
--- * 'sAttributes' @::@ 'HashMap' 'Text' 'Text'
+-- * 'sAttributes' @::@ 'HashMap' 'StackAttributesKeys' 'Text'
 --
 -- * 'sChefConfiguration' @::@ 'Maybe' 'ChefConfiguration'
 --
@@ -2809,7 +2841,7 @@
 --
 -- * 'sDefaultOs' @::@ 'Maybe' 'Text'
 --
--- * 'sDefaultRootDeviceType' @::@ 'Maybe' 'Text'
+-- * 'sDefaultRootDeviceType' @::@ 'Maybe' 'RootDeviceType'
 --
 -- * 'sDefaultSshKeyName' @::@ 'Maybe' 'Text'
 --
@@ -2861,7 +2893,7 @@
 sArn = lens _sArn (\s a -> s { _sArn = a })
 
 -- | The stack's attributes.
-sAttributes :: Lens' Stack (HashMap Text Text)
+sAttributes :: Lens' Stack (HashMap StackAttributesKeys Text)
 sAttributes = lens _sAttributes (\s a -> s { _sAttributes = a }) . _Map
 
 -- | A ChefConfiguration object that specifies whether to enable Berkshelf and
@@ -2915,7 +2947,7 @@
 -- | The default root device type. This value is used by default for all
 -- instances in the stack, but you can override it when you create an
 -- instance. For more information, see Storage for the Root Device.
-sDefaultRootDeviceType :: Lens' Stack (Maybe Text)
+sDefaultRootDeviceType :: Lens' Stack (Maybe RootDeviceType)
 sDefaultRootDeviceType =
     lens _sDefaultRootDeviceType (\s a -> s { _sDefaultRootDeviceType = a })
 
@@ -3017,7 +3049,7 @@
 
 data DeploymentCommand = DeploymentCommand
     { _dcArgs :: Map Text (List "InstanceIds" Text)
-    , _dcName :: Text
+    , _dcName :: DeploymentCommandName
     } deriving (Eq, Show)
 
 -- | 'DeploymentCommand' constructor.
@@ -3026,9 +3058,9 @@
 --
 -- * 'dcArgs' @::@ 'HashMap' 'Text' ['Text']
 --
--- * 'dcName' @::@ 'Text'
+-- * 'dcName' @::@ 'DeploymentCommandName'
 --
-deploymentCommand :: Text -- ^ 'dcName'
+deploymentCommand :: DeploymentCommandName -- ^ 'dcName'
                   -> DeploymentCommand
 deploymentCommand p1 = DeploymentCommand
     { _dcName = p1
@@ -3059,7 +3091,7 @@
 -- application server. stop: Stop the app's web or application server.
 -- restart: Restart the app's web or application server. undeploy: Undeploy
 -- the app.
-dcName :: Lens' DeploymentCommand Text
+dcName :: Lens' DeploymentCommand DeploymentCommandName
 dcName = lens _dcName (\s a -> s { _dcName = a })
 
 instance FromJSON DeploymentCommand where
@@ -3201,6 +3233,10 @@
         UpdateCustomCookbooks -> "update_custom_cookbooks"
         UpdateDependencies    -> "update_dependencies"
 
+instance ToByteString DeploymentCommandName
+instance ToHeader     DeploymentCommandName
+instance ToQuery      DeploymentCommandName
+
 instance FromJSON DeploymentCommandName where
     parseJSON = parseJSONText "DeploymentCommandName"
 
@@ -3209,8 +3245,8 @@
 
 data Instance = Instance
     { _iAmiId                    :: Maybe Text
-    , _iArchitecture             :: Maybe Text
-    , _iAutoScalingType          :: Maybe Text
+    , _iArchitecture             :: Maybe Architecture
+    , _iAutoScalingType          :: Maybe AutoScalingType
     , _iAvailabilityZone         :: Maybe Text
     , _iCreatedAt                :: Maybe Text
     , _iEbsOptimized             :: Maybe Bool
@@ -3228,7 +3264,7 @@
     , _iPrivateIp                :: Maybe Text
     , _iPublicDns                :: Maybe Text
     , _iPublicIp                 :: Maybe Text
-    , _iRootDeviceType           :: Maybe Text
+    , _iRootDeviceType           :: Maybe RootDeviceType
     , _iRootDeviceVolumeId       :: Maybe Text
     , _iSecurityGroupIds         :: List "InstanceIds" Text
     , _iSshHostDsaKeyFingerprint :: Maybe Text
@@ -3238,7 +3274,7 @@
     , _iStatus                   :: Maybe Text
     , _iSubnetId                 :: Maybe Text
     , _iVirtualizationType       :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'Instance' constructor.
 --
@@ -3246,9 +3282,9 @@
 --
 -- * 'iAmiId' @::@ 'Maybe' 'Text'
 --
--- * 'iArchitecture' @::@ 'Maybe' 'Text'
+-- * 'iArchitecture' @::@ 'Maybe' 'Architecture'
 --
--- * 'iAutoScalingType' @::@ 'Maybe' 'Text'
+-- * 'iAutoScalingType' @::@ 'Maybe' 'AutoScalingType'
 --
 -- * 'iAvailabilityZone' @::@ 'Maybe' 'Text'
 --
@@ -3284,7 +3320,7 @@
 --
 -- * 'iPublicIp' @::@ 'Maybe' 'Text'
 --
--- * 'iRootDeviceType' @::@ 'Maybe' 'Text'
+-- * 'iRootDeviceType' @::@ 'Maybe' 'RootDeviceType'
 --
 -- * 'iRootDeviceVolumeId' @::@ 'Maybe' 'Text'
 --
@@ -3345,7 +3381,7 @@
 iAmiId = lens _iAmiId (\s a -> s { _iAmiId = a })
 
 -- | The instance architecture, "i386" or "x86_64".
-iArchitecture :: Lens' Instance (Maybe Text)
+iArchitecture :: Lens' Instance (Maybe Architecture)
 iArchitecture = lens _iArchitecture (\s a -> s { _iArchitecture = a })
 
 -- | The instance's auto scaling type, which has three possible values:
@@ -3354,7 +3390,7 @@
 -- started and stopped based on a specified schedule. LoadBasedAutoScaling:
 -- A load-based auto scaling instance, which is started and stopped based on
 -- load metrics.
-iAutoScalingType :: Lens' Instance (Maybe Text)
+iAutoScalingType :: Lens' Instance (Maybe AutoScalingType)
 iAutoScalingType = lens _iAutoScalingType (\s a -> s { _iAutoScalingType = a })
 
 -- | The instance Availability Zone. For more information, see Regions and
@@ -3442,7 +3478,7 @@
 
 -- | The instance root device type. For more information, see Storage for the
 -- Root Device.
-iRootDeviceType :: Lens' Instance (Maybe Text)
+iRootDeviceType :: Lens' Instance (Maybe RootDeviceType)
 iRootDeviceType = lens _iRootDeviceType (\s a -> s { _iRootDeviceType = a })
 
 -- | The root device volume ID.
@@ -3881,6 +3917,10 @@
         Php    -> "php"
         Rails  -> "rails"
         Static -> "static"
+
+instance ToByteString AppType
+instance ToHeader     AppType
+instance ToQuery      AppType
 
 instance FromJSON AppType where
     parseJSON = parseJSONText "AppType"
diff --git a/gen/Network/AWS/OpsWorks/UpdateApp.hs b/gen/Network/AWS/OpsWorks/UpdateApp.hs
--- a/gen/Network/AWS/OpsWorks/UpdateApp.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateApp.hs
@@ -58,14 +58,14 @@
 data UpdateApp = UpdateApp
     { _uaAppId            :: Text
     , _uaAppSource        :: Maybe Source
-    , _uaAttributes       :: Map Text Text
+    , _uaAttributes       :: Map AppAttributesKeys Text
     , _uaDataSources      :: List "DataSources" DataSource
     , _uaDescription      :: Maybe Text
     , _uaDomains          :: List "InstanceIds" Text
     , _uaEnableSsl        :: Maybe Bool
     , _uaName             :: Maybe Text
     , _uaSslConfiguration :: Maybe SslConfiguration
-    , _uaType             :: Maybe Text
+    , _uaType             :: Maybe AppType
     } deriving (Eq, Show)
 
 -- | 'UpdateApp' constructor.
@@ -76,7 +76,7 @@
 --
 -- * 'uaAppSource' @::@ 'Maybe' 'Source'
 --
--- * 'uaAttributes' @::@ 'HashMap' 'Text' 'Text'
+-- * 'uaAttributes' @::@ 'HashMap' 'AppAttributesKeys' 'Text'
 --
 -- * 'uaDataSources' @::@ ['DataSource']
 --
@@ -90,7 +90,7 @@
 --
 -- * 'uaSslConfiguration' @::@ 'Maybe' 'SslConfiguration'
 --
--- * 'uaType' @::@ 'Maybe' 'Text'
+-- * 'uaType' @::@ 'Maybe' 'AppType'
 --
 updateApp :: Text -- ^ 'uaAppId'
           -> UpdateApp
@@ -117,7 +117,7 @@
 
 -- | One or more user-defined key/value pairs to be added to the stack
 -- attributes.
-uaAttributes :: Lens' UpdateApp (HashMap Text Text)
+uaAttributes :: Lens' UpdateApp (HashMap AppAttributesKeys Text)
 uaAttributes = lens _uaAttributes (\s a -> s { _uaAttributes = a }) . _Map
 
 -- | The app's data sources.
@@ -147,7 +147,7 @@
     lens _uaSslConfiguration (\s a -> s { _uaSslConfiguration = a })
 
 -- | The app type.
-uaType :: Lens' UpdateApp (Maybe Text)
+uaType :: Lens' UpdateApp (Maybe AppType)
 uaType = lens _uaType (\s a -> s { _uaType = a })
 
 data UpdateAppResponse = UpdateAppResponse
diff --git a/gen/Network/AWS/OpsWorks/UpdateInstance.hs b/gen/Network/AWS/OpsWorks/UpdateInstance.hs
--- a/gen/Network/AWS/OpsWorks/UpdateInstance.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateInstance.hs
@@ -58,8 +58,8 @@
 
 data UpdateInstance = UpdateInstance
     { _uiAmiId                :: Maybe Text
-    , _uiArchitecture         :: Maybe Text
-    , _uiAutoScalingType      :: Maybe Text
+    , _uiArchitecture         :: Maybe Architecture
+    , _uiAutoScalingType      :: Maybe AutoScalingType
     , _uiEbsOptimized         :: Maybe Bool
     , _uiHostname             :: Maybe Text
     , _uiInstallUpdatesOnBoot :: Maybe Bool
@@ -68,7 +68,7 @@
     , _uiLayerIds             :: List "InstanceIds" Text
     , _uiOs                   :: Maybe Text
     , _uiSshKeyName           :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Show)
 
 -- | 'UpdateInstance' constructor.
 --
@@ -76,9 +76,9 @@
 --
 -- * 'uiAmiId' @::@ 'Maybe' 'Text'
 --
--- * 'uiArchitecture' @::@ 'Maybe' 'Text'
+-- * 'uiArchitecture' @::@ 'Maybe' 'Architecture'
 --
--- * 'uiAutoScalingType' @::@ 'Maybe' 'Text'
+-- * 'uiAutoScalingType' @::@ 'Maybe' 'AutoScalingType'
 --
 -- * 'uiEbsOptimized' @::@ 'Maybe' 'Bool'
 --
@@ -121,7 +121,7 @@
 -- | The instance architecture. Instance types do not necessarily support both
 -- architectures. For a list of the architectures that are supported by the
 -- different instance types, see Instance Families and Types.
-uiArchitecture :: Lens' UpdateInstance (Maybe Text)
+uiArchitecture :: Lens' UpdateInstance (Maybe Architecture)
 uiArchitecture = lens _uiArchitecture (\s a -> s { _uiArchitecture = a })
 
 -- | The instance's auto scaling type, which has three possible values:
@@ -130,7 +130,7 @@
 -- started and stopped based on a specified schedule. LoadBasedAutoScaling:
 -- A load-based auto scaling instance, which is started and stopped based on
 -- load metrics.
-uiAutoScalingType :: Lens' UpdateInstance (Maybe Text)
+uiAutoScalingType :: Lens' UpdateInstance (Maybe AutoScalingType)
 uiAutoScalingType =
     lens _uiAutoScalingType (\s a -> s { _uiAutoScalingType = a })
 
diff --git a/gen/Network/AWS/OpsWorks/UpdateLayer.hs b/gen/Network/AWS/OpsWorks/UpdateLayer.hs
--- a/gen/Network/AWS/OpsWorks/UpdateLayer.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateLayer.hs
@@ -60,7 +60,7 @@
 import qualified GHC.Exts
 
 data UpdateLayer = UpdateLayer
-    { _ulAttributes               :: Map Text Text
+    { _ulAttributes               :: Map LayerAttributesKeys Text
     , _ulAutoAssignElasticIps     :: Maybe Bool
     , _ulAutoAssignPublicIps      :: Maybe Bool
     , _ulCustomInstanceProfileArn :: Maybe Text
@@ -80,7 +80,7 @@
 --
 -- The fields accessible through corresponding lenses are:
 --
--- * 'ulAttributes' @::@ 'HashMap' 'Text' 'Text'
+-- * 'ulAttributes' @::@ 'HashMap' 'LayerAttributesKeys' 'Text'
 --
 -- * 'ulAutoAssignElasticIps' @::@ 'Maybe' 'Bool'
 --
@@ -129,7 +129,7 @@
 
 -- | One or more user-defined key/value pairs to be added to the stack
 -- attributes.
-ulAttributes :: Lens' UpdateLayer (HashMap Text Text)
+ulAttributes :: Lens' UpdateLayer (HashMap LayerAttributesKeys Text)
 ulAttributes = lens _ulAttributes (\s a -> s { _ulAttributes = a }) . _Map
 
 -- | Whether to automatically assign an Elastic IP address to the layer's
diff --git a/gen/Network/AWS/OpsWorks/UpdateStack.hs b/gen/Network/AWS/OpsWorks/UpdateStack.hs
--- a/gen/Network/AWS/OpsWorks/UpdateStack.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateStack.hs
@@ -63,7 +63,7 @@
 import qualified GHC.Exts
 
 data UpdateStack = UpdateStack
-    { _usAttributes                :: Map Text Text
+    { _usAttributes                :: Map StackAttributesKeys Text
     , _usChefConfiguration         :: Maybe ChefConfiguration
     , _usConfigurationManager      :: Maybe StackConfigurationManager
     , _usCustomCookbooksSource     :: Maybe Source
@@ -71,7 +71,7 @@
     , _usDefaultAvailabilityZone   :: Maybe Text
     , _usDefaultInstanceProfileArn :: Maybe Text
     , _usDefaultOs                 :: Maybe Text
-    , _usDefaultRootDeviceType     :: Maybe Text
+    , _usDefaultRootDeviceType     :: Maybe RootDeviceType
     , _usDefaultSshKeyName         :: Maybe Text
     , _usDefaultSubnetId           :: Maybe Text
     , _usHostnameTheme             :: Maybe Text
@@ -86,7 +86,7 @@
 --
 -- The fields accessible through corresponding lenses are:
 --
--- * 'usAttributes' @::@ 'HashMap' 'Text' 'Text'
+-- * 'usAttributes' @::@ 'HashMap' 'StackAttributesKeys' 'Text'
 --
 -- * 'usChefConfiguration' @::@ 'Maybe' 'ChefConfiguration'
 --
@@ -102,7 +102,7 @@
 --
 -- * 'usDefaultOs' @::@ 'Maybe' 'Text'
 --
--- * 'usDefaultRootDeviceType' @::@ 'Maybe' 'Text'
+-- * 'usDefaultRootDeviceType' @::@ 'Maybe' 'RootDeviceType'
 --
 -- * 'usDefaultSshKeyName' @::@ 'Maybe' 'Text'
 --
@@ -144,7 +144,7 @@
 
 -- | One or more user-defined key/value pairs to be added to the stack
 -- attributes.
-usAttributes :: Lens' UpdateStack (HashMap Text Text)
+usAttributes :: Lens' UpdateStack (HashMap StackAttributesKeys Text)
 usAttributes = lens _usAttributes (\s a -> s { _usAttributes = a }) . _Map
 
 -- | A ChefConfiguration object that specifies whether to enable Berkshelf and
@@ -199,7 +199,7 @@
 -- | The default root device type. This value is used by default for all
 -- instances in the stack, but you can override it when you create an
 -- instance. For more information, see Storage for the Root Device.
-usDefaultRootDeviceType :: Lens' UpdateStack (Maybe Text)
+usDefaultRootDeviceType :: Lens' UpdateStack (Maybe RootDeviceType)
 usDefaultRootDeviceType =
     lens _usDefaultRootDeviceType (\s a -> s { _usDefaultRootDeviceType = a })
 
