diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,21 +1,31 @@
 # Amazon CloudHSM SDK
 
-> _Warning:_ This is an experimental preview release which is still under heavy development and not intended for public consumption, _caveat emptor_!
-
+* [Version](#version)
 * [Description](#description)
 * [Contribute](#contribute)
 * [Licence](#licence)
 
+
+## Version
+
+`1.0.0`
+
+
 ## Description
 
-The AWS CloudHSM service helps you meet corporate, contractual and regulatory
-compliance requirements for data security by using dedicated Hardware
-Security Module (HSM) appliances within the AWS cloud. With CloudHSM, you
-control the encryption keys and cryptographic operations performed by the HSM.
+AWS CloudHSM Service
 
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-cloudhsm)
 and the [AWS API Reference](http://docs.aws.amazon.com/cloudhsm/latest/dg/welcome.html).
 
+The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),
+which provides mechanisms for specifying AuthN/AuthZ information and sending requests.
+
+Use of lenses is required for constructing and manipulating types.
+This is due to the amount of nesting of AWS types and transparency regarding
+de/serialisation into more palatable Haskell values.
+The provided lenses should be compatible with any of the major lens libraries
+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
 
 ## Contribute
 
diff --git a/amazonka-cloudhsm.cabal b/amazonka-cloudhsm.cabal
--- a/amazonka-cloudhsm.cabal
+++ b/amazonka-cloudhsm.cabal
@@ -1,28 +1,33 @@
 name:                  amazonka-cloudhsm
-version:               0.3.6
+version:               1.0.0
 synopsis:              Amazon CloudHSM SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
 license-file:          LICENSE
 author:                Brendan Hay
 maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2013-2014 Brendan Hay
+copyright:             Copyright (c) 2013-2015 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 extra-source-files:    README.md
 cabal-version:         >= 1.10
 
 description:
-    The AWS CloudHSM service helps you meet corporate, contractual and regulatory
-    compliance requirements for data security by using dedicated Hardware
-    Security Module (HSM) appliances within the AWS cloud. With CloudHSM, you
-    control the encryption keys and cryptographic operations performed by the HSM.
-
+    AWS CloudHSM Service
     .
-    /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/welcome.html AWS API Reference>
+    The types from this library are intended to be used with
+    <http://hackage.haskell.org/package/amazonka amazonka>, which provides
+    mechanisms for specifying AuthN/AuthZ information and sending requests.
     .
-    /Warning:/ This is an experimental preview release which is still under
-    heavy development and not intended for public consumption, caveat emptor!
+    Use of lenses is required for constructing and manipulating types.
+    This is due to the amount of nesting of AWS types and transparency regarding
+    de/serialisation into more palatable Haskell values.
+    The provided lenses should be compatible with any of the major lens libraries
+    such as <http://hackage.haskell.org/package/lens lens> or
+    <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
+    .
+    See "Network.AWS.CloudHSM" and the <http://docs.aws.amazon.com/cloudhsm/latest/dg/welcome.html AWS API Reference>
+    to get started.
 
 source-repository head
     type:     git
@@ -36,27 +41,58 @@
 
     exposed-modules:
           Network.AWS.CloudHSM
-        , Network.AWS.CloudHSM.CreateHapg
-        , Network.AWS.CloudHSM.CreateHsm
+        , Network.AWS.CloudHSM.CreateHAPG
+        , Network.AWS.CloudHSM.CreateHSM
         , Network.AWS.CloudHSM.CreateLunaClient
-        , Network.AWS.CloudHSM.DeleteHapg
-        , Network.AWS.CloudHSM.DeleteHsm
+        , Network.AWS.CloudHSM.DeleteHAPG
+        , Network.AWS.CloudHSM.DeleteHSM
         , Network.AWS.CloudHSM.DeleteLunaClient
-        , Network.AWS.CloudHSM.DescribeHapg
-        , Network.AWS.CloudHSM.DescribeHsm
+        , Network.AWS.CloudHSM.DescribeHAPG
+        , Network.AWS.CloudHSM.DescribeHSM
         , Network.AWS.CloudHSM.DescribeLunaClient
         , Network.AWS.CloudHSM.GetConfig
         , Network.AWS.CloudHSM.ListAvailableZones
-        , Network.AWS.CloudHSM.ListHapgs
-        , Network.AWS.CloudHSM.ListHsms
+        , Network.AWS.CloudHSM.ListHAPGs
+        , Network.AWS.CloudHSM.ListHSMs
         , Network.AWS.CloudHSM.ListLunaClients
-        , Network.AWS.CloudHSM.ModifyHapg
-        , Network.AWS.CloudHSM.ModifyHsm
+        , Network.AWS.CloudHSM.ModifyHAPG
+        , Network.AWS.CloudHSM.ModifyHSM
         , Network.AWS.CloudHSM.ModifyLunaClient
         , Network.AWS.CloudHSM.Types
+        , Network.AWS.CloudHSM.Waiters
 
     other-modules:
+          Network.AWS.CloudHSM.Types.Product
+        , Network.AWS.CloudHSM.Types.Sum
 
     build-depends:
-          amazonka-core == 0.3.6.*
+          amazonka-core == 1.0.0.*
         , base          >= 4.7     && < 5
+
+test-suite amazonka-cloudhsm-test
+    type:              exitcode-stdio-1.0
+    default-language:  Haskell2010
+    hs-source-dirs:    test
+    main-is:           Main.hs
+
+    ghc-options:       -Wall -threaded
+
+    -- This is not comprehensive if modules have manually been added.
+    -- It exists to ensure cabal 'somewhat' detects test module changes.
+    other-modules:
+          Test.AWS.CloudHSM
+        , Test.AWS.Gen.CloudHSM
+        , Test.AWS.CloudHSM.Internal
+
+    build-depends:
+          amazonka-core == 1.0.0
+        , amazonka-test == 1.0.0
+        , amazonka-cloudhsm == 1.0.0
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
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
@@ -1,55 +1,154 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CloudHSM
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | The AWS CloudHSM service helps you meet corporate, contractual and regulatory
--- compliance requirements for data security by using dedicated Hardware
--- Security Module (HSM) appliances within the AWS cloud. With CloudHSM, you
--- control the encryption keys and cryptographic operations performed by the HSM.
+-- AWS CloudHSM Service
+--
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/welcome.html AWS API Reference>
 module Network.AWS.CloudHSM
-    ( module Network.AWS.CloudHSM.CreateHapg
-    , module Network.AWS.CloudHSM.CreateHsm
-    , module Network.AWS.CloudHSM.CreateLunaClient
-    , module Network.AWS.CloudHSM.DeleteHapg
-    , module Network.AWS.CloudHSM.DeleteHsm
-    , module Network.AWS.CloudHSM.DeleteLunaClient
-    , module Network.AWS.CloudHSM.DescribeHapg
-    , module Network.AWS.CloudHSM.DescribeHsm
+    (
+    -- * Service
+      CloudHSM
+
+    -- * Errors
+    -- $errors
+
+    -- ** InvalidRequestException
+    , _InvalidRequestException
+
+    -- ** CloudHSMServiceException
+    , _CloudHSMServiceException
+
+    -- ** CloudHSMInternalException
+    , _CloudHSMInternalException
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** ListHAPGs
+    , module Network.AWS.CloudHSM.ListHAPGs
+
+    -- ** ListHSMs
+    , module Network.AWS.CloudHSM.ListHSMs
+
+    -- ** DeleteHAPG
+    , module Network.AWS.CloudHSM.DeleteHAPG
+
+    -- ** ModifyLunaClient
+    , module Network.AWS.CloudHSM.ModifyLunaClient
+
+    -- ** DescribeLunaClient
     , module Network.AWS.CloudHSM.DescribeLunaClient
+
+    -- ** CreateHSM
+    , module Network.AWS.CloudHSM.CreateHSM
+
+    -- ** CreateHAPG
+    , module Network.AWS.CloudHSM.CreateHAPG
+
+    -- ** CreateLunaClient
+    , module Network.AWS.CloudHSM.CreateLunaClient
+
+    -- ** DescribeHAPG
+    , module Network.AWS.CloudHSM.DescribeHAPG
+
+    -- ** ListLunaClients
+    , module Network.AWS.CloudHSM.ListLunaClients
+
+    -- ** GetConfig
     , module Network.AWS.CloudHSM.GetConfig
+
+    -- ** DeleteHSM
+    , module Network.AWS.CloudHSM.DeleteHSM
+
+    -- ** DescribeHSM
+    , module Network.AWS.CloudHSM.DescribeHSM
+
+    -- ** ModifyHAPG
+    , module Network.AWS.CloudHSM.ModifyHAPG
+
+    -- ** ListAvailableZones
     , module Network.AWS.CloudHSM.ListAvailableZones
-    , module Network.AWS.CloudHSM.ListHapgs
-    , module Network.AWS.CloudHSM.ListHsms
-    , module Network.AWS.CloudHSM.ListLunaClients
-    , module Network.AWS.CloudHSM.ModifyHapg
-    , module Network.AWS.CloudHSM.ModifyHsm
-    , module Network.AWS.CloudHSM.ModifyLunaClient
-    , module Network.AWS.CloudHSM.Types
+
+    -- ** ModifyHSM
+    , module Network.AWS.CloudHSM.ModifyHSM
+
+    -- ** DeleteLunaClient
+    , module Network.AWS.CloudHSM.DeleteLunaClient
+
+    -- * Types
+
+    -- ** ClientVersion
+    , ClientVersion (..)
+
+    -- ** CloudHSMObjectState
+    , CloudHSMObjectState (..)
+
+    -- ** HSMStatus
+    , HSMStatus (..)
+
+    -- ** SubscriptionType
+    , SubscriptionType (..)
     ) where
 
-import Network.AWS.CloudHSM.CreateHapg
-import Network.AWS.CloudHSM.CreateHsm
-import Network.AWS.CloudHSM.CreateLunaClient
-import Network.AWS.CloudHSM.DeleteHapg
-import Network.AWS.CloudHSM.DeleteHsm
-import Network.AWS.CloudHSM.DeleteLunaClient
-import Network.AWS.CloudHSM.DescribeHapg
-import Network.AWS.CloudHSM.DescribeHsm
-import Network.AWS.CloudHSM.DescribeLunaClient
-import Network.AWS.CloudHSM.GetConfig
-import Network.AWS.CloudHSM.ListAvailableZones
-import Network.AWS.CloudHSM.ListHapgs
-import Network.AWS.CloudHSM.ListHsms
-import Network.AWS.CloudHSM.ListLunaClients
-import Network.AWS.CloudHSM.ModifyHapg
-import Network.AWS.CloudHSM.ModifyHsm
-import Network.AWS.CloudHSM.ModifyLunaClient
-import Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.CreateHAPG
+import           Network.AWS.CloudHSM.CreateHSM
+import           Network.AWS.CloudHSM.CreateLunaClient
+import           Network.AWS.CloudHSM.DeleteHAPG
+import           Network.AWS.CloudHSM.DeleteHSM
+import           Network.AWS.CloudHSM.DeleteLunaClient
+import           Network.AWS.CloudHSM.DescribeHAPG
+import           Network.AWS.CloudHSM.DescribeHSM
+import           Network.AWS.CloudHSM.DescribeLunaClient
+import           Network.AWS.CloudHSM.GetConfig
+import           Network.AWS.CloudHSM.ListAvailableZones
+import           Network.AWS.CloudHSM.ListHAPGs
+import           Network.AWS.CloudHSM.ListHSMs
+import           Network.AWS.CloudHSM.ListLunaClients
+import           Network.AWS.CloudHSM.ModifyHAPG
+import           Network.AWS.CloudHSM.ModifyHSM
+import           Network.AWS.CloudHSM.ModifyLunaClient
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Waiters
+
+{- $errors
+Error matchers are designed for use with the functions provided by
+<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
+This allows catching (and rethrowing) service specific errors returned
+by 'CloudHSM'.
+-}
+
+{- $operations
+Some AWS operations return results that are incomplete and require subsequent
+requests in order to obtain the entire result set. The process of sending
+subsequent requests to continue where a previous request left off is called
+pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
+1000 objects at a time, and you must send subsequent requests with the
+appropriate Marker in order to retrieve the next page of results.
+
+Operations that have an 'AWSPager' instance can transparently perform subsequent
+requests, correctly setting Markers and other request facets to iterate through
+the entire result set of a truncated API operation. Operations which support
+this have an additional note in the documentation.
+
+Many operations have the ability to filter results on the server side. See the
+individual operation parameters for details.
+-}
+
+{- $waiters
+Waiters poll by repeatedly sending a request until some remote success condition
+configured by the 'Wait' specification is fulfilled. The 'Wait' specification
+determines how many attempts should be made, in addition to delay and retry strategies.
+-}
diff --git a/gen/Network/AWS/CloudHSM/CreateHAPG.hs b/gen/Network/AWS/CloudHSM/CreateHAPG.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudHSM/CreateHAPG.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudHSM.CreateHAPG
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a high-availability partition group. A high-availability
+-- partition group is a group of partitions that spans multiple physical
+-- HSMs.
+--
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_CreateHAPG.html AWS API Reference> for CreateHAPG.
+module Network.AWS.CloudHSM.CreateHAPG
+    (
+    -- * Creating a Request
+      createHAPG
+    , CreateHAPG
+    -- * Request Lenses
+    , chLabel
+
+    -- * Destructuring the Response
+    , createHAPGResponse
+    , CreateHAPGResponse
+    -- * Response Lenses
+    , chrsHAPGARN
+    , chrsStatus
+    ) where
+
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Contains the inputs for the CreateHapgRequest action.
+--
+-- /See:/ 'createHAPG' smart constructor.
+newtype CreateHAPG = CreateHAPG'
+    { _chLabel :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateHAPG' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'chLabel'
+createHAPG
+    :: Text -- ^ 'chLabel'
+    -> CreateHAPG
+createHAPG pLabel_ =
+    CreateHAPG'
+    { _chLabel = pLabel_
+    }
+
+-- | The label of the new high-availability partition group.
+chLabel :: Lens' CreateHAPG Text
+chLabel = lens _chLabel (\ s a -> s{_chLabel = a});
+
+instance AWSRequest CreateHAPG where
+        type Sv CreateHAPG = CloudHSM
+        type Rs CreateHAPG = CreateHAPGResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateHAPGResponse' <$>
+                   (x .?> "HapgArn") <*> (pure (fromEnum s)))
+
+instance ToHeaders CreateHAPG where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.CreateHapg" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON CreateHAPG where
+        toJSON CreateHAPG'{..} = object ["Label" .= _chLabel]
+
+instance ToPath CreateHAPG where
+        toPath = const "/"
+
+instance ToQuery CreateHAPG where
+        toQuery = const mempty
+
+-- | Contains the output of the CreateHAPartitionGroup action.
+--
+-- /See:/ 'createHAPGResponse' smart constructor.
+data CreateHAPGResponse = CreateHAPGResponse'
+    { _chrsHAPGARN :: !(Maybe Text)
+    , _chrsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateHAPGResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'chrsHAPGARN'
+--
+-- * 'chrsStatus'
+createHAPGResponse
+    :: Int -- ^ 'chrsStatus'
+    -> CreateHAPGResponse
+createHAPGResponse pStatus_ =
+    CreateHAPGResponse'
+    { _chrsHAPGARN = Nothing
+    , _chrsStatus = pStatus_
+    }
+
+-- | The ARN of the high-availability partition group.
+chrsHAPGARN :: Lens' CreateHAPGResponse (Maybe Text)
+chrsHAPGARN = lens _chrsHAPGARN (\ s a -> s{_chrsHAPGARN = a});
+
+-- | The response status code.
+chrsStatus :: Lens' CreateHAPGResponse Int
+chrsStatus = lens _chrsStatus (\ s a -> s{_chrsStatus = a});
diff --git a/gen/Network/AWS/CloudHSM/CreateHSM.hs b/gen/Network/AWS/CloudHSM/CreateHSM.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudHSM/CreateHSM.hs
@@ -0,0 +1,205 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudHSM.CreateHSM
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an uninitialized HSM instance. Running this command provisions
+-- an HSM appliance and will result in charges to your AWS account for the
+-- HSM.
+--
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_CreateHSM.html AWS API Reference> for CreateHSM.
+module Network.AWS.CloudHSM.CreateHSM
+    (
+    -- * Creating a Request
+      createHSM
+    , CreateHSM
+    -- * Request Lenses
+    , chClientToken
+    , chSyslogIP
+    , chExternalId
+    , chEniIP
+    , chSubnetId
+    , chSSHKey
+    , chIAMRoleARN
+    , chSubscriptionType
+
+    -- * Destructuring the Response
+    , createHSMResponse
+    , CreateHSMResponse
+    -- * Response Lenses
+    , chsmrsHSMARN
+    , chsmrsStatus
+    ) where
+
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Contains the inputs for the CreateHsm action.
+--
+-- /See:/ 'createHSM' smart constructor.
+data CreateHSM = CreateHSM'
+    { _chClientToken      :: !(Maybe Text)
+    , _chSyslogIP         :: !(Maybe Text)
+    , _chExternalId       :: !(Maybe Text)
+    , _chEniIP            :: !(Maybe Text)
+    , _chSubnetId         :: !Text
+    , _chSSHKey           :: !Text
+    , _chIAMRoleARN       :: !Text
+    , _chSubscriptionType :: !SubscriptionType
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateHSM' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'chClientToken'
+--
+-- * 'chSyslogIP'
+--
+-- * 'chExternalId'
+--
+-- * 'chEniIP'
+--
+-- * 'chSubnetId'
+--
+-- * 'chSSHKey'
+--
+-- * 'chIAMRoleARN'
+--
+-- * 'chSubscriptionType'
+createHSM
+    :: Text -- ^ 'chSubnetId'
+    -> Text -- ^ 'chSSHKey'
+    -> Text -- ^ 'chIAMRoleARN'
+    -> SubscriptionType -- ^ 'chSubscriptionType'
+    -> CreateHSM
+createHSM pSubnetId_ pSSHKey_ pIAMRoleARN_ pSubscriptionType_ =
+    CreateHSM'
+    { _chClientToken = Nothing
+    , _chSyslogIP = Nothing
+    , _chExternalId = Nothing
+    , _chEniIP = Nothing
+    , _chSubnetId = pSubnetId_
+    , _chSSHKey = pSSHKey_
+    , _chIAMRoleARN = pIAMRoleARN_
+    , _chSubscriptionType = pSubscriptionType_
+    }
+
+-- | A user-defined token to ensure idempotence. Subsequent calls to this
+-- action with the same token will be ignored.
+chClientToken :: Lens' CreateHSM (Maybe Text)
+chClientToken = lens _chClientToken (\ s a -> s{_chClientToken = a});
+
+-- | The IP address for the syslog monitoring server.
+chSyslogIP :: Lens' CreateHSM (Maybe Text)
+chSyslogIP = lens _chSyslogIP (\ s a -> s{_chSyslogIP = a});
+
+-- | The external ID from __IamRoleArn__, if present.
+chExternalId :: Lens' CreateHSM (Maybe Text)
+chExternalId = lens _chExternalId (\ s a -> s{_chExternalId = a});
+
+-- | The IP address to assign to the HSM\'s ENI.
+chEniIP :: Lens' CreateHSM (Maybe Text)
+chEniIP = lens _chEniIP (\ s a -> s{_chEniIP = a});
+
+-- | The identifier of the subnet in your VPC in which to place the HSM.
+chSubnetId :: Lens' CreateHSM Text
+chSubnetId = lens _chSubnetId (\ s a -> s{_chSubnetId = a});
+
+-- | The SSH public key to install on the HSM.
+chSSHKey :: Lens' CreateHSM Text
+chSSHKey = lens _chSSHKey (\ s a -> s{_chSSHKey = a});
+
+-- | The ARN of an IAM role to enable the AWS CloudHSM service to allocate an
+-- ENI on your behalf.
+chIAMRoleARN :: Lens' CreateHSM Text
+chIAMRoleARN = lens _chIAMRoleARN (\ s a -> s{_chIAMRoleARN = a});
+
+-- | The subscription type.
+chSubscriptionType :: Lens' CreateHSM SubscriptionType
+chSubscriptionType = lens _chSubscriptionType (\ s a -> s{_chSubscriptionType = a});
+
+instance AWSRequest CreateHSM where
+        type Sv CreateHSM = CloudHSM
+        type Rs CreateHSM = CreateHSMResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateHSMResponse' <$>
+                   (x .?> "HsmArn") <*> (pure (fromEnum s)))
+
+instance ToHeaders CreateHSM where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.CreateHsm" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON CreateHSM where
+        toJSON CreateHSM'{..}
+          = object
+              ["ClientToken" .= _chClientToken,
+               "SyslogIp" .= _chSyslogIP,
+               "ExternalId" .= _chExternalId, "EniIp" .= _chEniIP,
+               "SubnetId" .= _chSubnetId, "SshKey" .= _chSSHKey,
+               "IamRoleArn" .= _chIAMRoleARN,
+               "SubscriptionType" .= _chSubscriptionType]
+
+instance ToPath CreateHSM where
+        toPath = const "/"
+
+instance ToQuery CreateHSM where
+        toQuery = const mempty
+
+-- | Contains the output of the CreateHsm action.
+--
+-- /See:/ 'createHSMResponse' smart constructor.
+data CreateHSMResponse = CreateHSMResponse'
+    { _chsmrsHSMARN :: !(Maybe Text)
+    , _chsmrsStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateHSMResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'chsmrsHSMARN'
+--
+-- * 'chsmrsStatus'
+createHSMResponse
+    :: Int -- ^ 'chsmrsStatus'
+    -> CreateHSMResponse
+createHSMResponse pStatus_ =
+    CreateHSMResponse'
+    { _chsmrsHSMARN = Nothing
+    , _chsmrsStatus = pStatus_
+    }
+
+-- | The ARN of the HSM.
+chsmrsHSMARN :: Lens' CreateHSMResponse (Maybe Text)
+chsmrsHSMARN = lens _chsmrsHSMARN (\ s a -> s{_chsmrsHSMARN = a});
+
+-- | The response status code.
+chsmrsStatus :: Lens' CreateHSMResponse Int
+chsmrsStatus = lens _chsmrsStatus (\ s a -> s{_chsmrsStatus = a});
diff --git a/gen/Network/AWS/CloudHSM/CreateHapg.hs b/gen/Network/AWS/CloudHSM/CreateHapg.hs
deleted file mode 100644
--- a/gen/Network/AWS/CloudHSM/CreateHapg.hs
+++ /dev/null
@@ -1,113 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.CloudHSM.CreateHapg
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a high-availability partition group. A high-availability partition
--- group is a group of partitions that spans multiple physical HSMs.
---
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_CreateHapg.html>
-module Network.AWS.CloudHSM.CreateHapg
-    (
-    -- * Request
-      CreateHapg
-    -- ** Request constructor
-    , createHapg
-    -- ** Request lenses
-    , chLabel
-
-    -- * Response
-    , CreateHapgResponse
-    -- ** Response constructor
-    , createHapgResponse
-    -- ** Response lenses
-    , chrHapgArn
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
-
-newtype CreateHapg = CreateHapg
-    { _chLabel :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
-
--- | 'CreateHapg' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'chLabel' @::@ 'Text'
---
-createHapg :: Text -- ^ 'chLabel'
-           -> CreateHapg
-createHapg p1 = CreateHapg
-    { _chLabel = p1
-    }
-
--- | The label of the new high-availability partition group.
-chLabel :: Lens' CreateHapg Text
-chLabel = lens _chLabel (\s a -> s { _chLabel = a })
-
-newtype CreateHapgResponse = CreateHapgResponse
-    { _chrHapgArn :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'CreateHapgResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'chrHapgArn' @::@ 'Maybe' 'Text'
---
-createHapgResponse :: CreateHapgResponse
-createHapgResponse = CreateHapgResponse
-    { _chrHapgArn = Nothing
-    }
-
--- | The ARN of the high-availability partition group.
-chrHapgArn :: Lens' CreateHapgResponse (Maybe Text)
-chrHapgArn = lens _chrHapgArn (\s a -> s { _chrHapgArn = a })
-
-instance ToPath CreateHapg where
-    toPath = const "/"
-
-instance ToQuery CreateHapg where
-    toQuery = const mempty
-
-instance ToHeaders CreateHapg
-
-instance ToJSON CreateHapg where
-    toJSON CreateHapg{..} = object
-        [ "Label" .= _chLabel
-        ]
-
-instance AWSRequest CreateHapg where
-    type Sv CreateHapg = CloudHSM
-    type Rs CreateHapg = CreateHapgResponse
-
-    request  = post "CreateHapg"
-    response = jsonResponse
-
-instance FromJSON CreateHapgResponse where
-    parseJSON = withObject "CreateHapgResponse" $ \o -> CreateHapgResponse
-        <$> o .:? "HapgArn"
diff --git a/gen/Network/AWS/CloudHSM/CreateHsm.hs b/gen/Network/AWS/CloudHSM/CreateHsm.hs
deleted file mode 100644
--- a/gen/Network/AWS/CloudHSM/CreateHsm.hs
+++ /dev/null
@@ -1,189 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.CloudHSM.CreateHsm
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates an uninitialized HSM instance. Running this command provisions an HSM
--- appliance and will result in charges to your AWS account for the HSM.
---
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_CreateHsm.html>
-module Network.AWS.CloudHSM.CreateHsm
-    (
-    -- * Request
-      CreateHsm
-    -- ** Request constructor
-    , createHsm
-    -- ** Request lenses
-    , chClientToken
-    , chEniIp
-    , chExternalId
-    , chIamRoleArn
-    , chSshKey
-    , chSubnetId
-    , chSubscriptionType
-    , chSyslogIp
-
-    -- * Response
-    , CreateHsmResponse
-    -- ** Response constructor
-    , createHsmResponse
-    -- ** Response lenses
-    , chrHsmArn
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
-
-data CreateHsm = CreateHsm
-    { _chClientToken      :: Maybe Text
-    , _chEniIp            :: Maybe Text
-    , _chExternalId       :: Maybe Text
-    , _chIamRoleArn       :: Text
-    , _chSshKey           :: Text
-    , _chSubnetId         :: Text
-    , _chSubscriptionType :: SubscriptionType
-    , _chSyslogIp         :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'CreateHsm' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'chClientToken' @::@ 'Maybe' 'Text'
---
--- * 'chEniIp' @::@ 'Maybe' 'Text'
---
--- * 'chExternalId' @::@ 'Maybe' 'Text'
---
--- * 'chIamRoleArn' @::@ 'Text'
---
--- * 'chSshKey' @::@ 'Text'
---
--- * 'chSubnetId' @::@ 'Text'
---
--- * 'chSubscriptionType' @::@ 'SubscriptionType'
---
--- * 'chSyslogIp' @::@ 'Maybe' 'Text'
---
-createHsm :: Text -- ^ 'chSubnetId'
-          -> Text -- ^ 'chSshKey'
-          -> Text -- ^ 'chIamRoleArn'
-          -> SubscriptionType -- ^ 'chSubscriptionType'
-          -> CreateHsm
-createHsm p1 p2 p3 p4 = CreateHsm
-    { _chSubnetId         = p1
-    , _chSshKey           = p2
-    , _chIamRoleArn       = p3
-    , _chSubscriptionType = p4
-    , _chEniIp            = Nothing
-    , _chExternalId       = Nothing
-    , _chClientToken      = Nothing
-    , _chSyslogIp         = Nothing
-    }
-
--- | A user-defined token to ensure idempotence. Subsequent calls to this action
--- with the same token will be ignored.
-chClientToken :: Lens' CreateHsm (Maybe Text)
-chClientToken = lens _chClientToken (\s a -> s { _chClientToken = a })
-
--- | The IP address to assign to the HSM's ENI.
-chEniIp :: Lens' CreateHsm (Maybe Text)
-chEniIp = lens _chEniIp (\s a -> s { _chEniIp = a })
-
--- | The external ID from IamRoleArn, if present.
-chExternalId :: Lens' CreateHsm (Maybe Text)
-chExternalId = lens _chExternalId (\s a -> s { _chExternalId = a })
-
--- | The ARN of an IAM role to enable the AWS CloudHSM service to allocate an ENI
--- on your behalf.
-chIamRoleArn :: Lens' CreateHsm Text
-chIamRoleArn = lens _chIamRoleArn (\s a -> s { _chIamRoleArn = a })
-
--- | The SSH public key to install on the HSM.
-chSshKey :: Lens' CreateHsm Text
-chSshKey = lens _chSshKey (\s a -> s { _chSshKey = a })
-
--- | The identifier of the subnet in your VPC in which to place the HSM.
-chSubnetId :: Lens' CreateHsm Text
-chSubnetId = lens _chSubnetId (\s a -> s { _chSubnetId = a })
-
--- | The subscription type.
-chSubscriptionType :: Lens' CreateHsm SubscriptionType
-chSubscriptionType =
-    lens _chSubscriptionType (\s a -> s { _chSubscriptionType = a })
-
--- | The IP address for the syslog monitoring server.
-chSyslogIp :: Lens' CreateHsm (Maybe Text)
-chSyslogIp = lens _chSyslogIp (\s a -> s { _chSyslogIp = a })
-
-newtype CreateHsmResponse = CreateHsmResponse
-    { _chrHsmArn :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'CreateHsmResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'chrHsmArn' @::@ 'Maybe' 'Text'
---
-createHsmResponse :: CreateHsmResponse
-createHsmResponse = CreateHsmResponse
-    { _chrHsmArn = Nothing
-    }
-
--- | The ARN of the HSM.
-chrHsmArn :: Lens' CreateHsmResponse (Maybe Text)
-chrHsmArn = lens _chrHsmArn (\s a -> s { _chrHsmArn = a })
-
-instance ToPath CreateHsm where
-    toPath = const "/"
-
-instance ToQuery CreateHsm where
-    toQuery = const mempty
-
-instance ToHeaders CreateHsm
-
-instance ToJSON CreateHsm where
-    toJSON CreateHsm{..} = object
-        [ "SubnetId"         .= _chSubnetId
-        , "SshKey"           .= _chSshKey
-        , "EniIp"            .= _chEniIp
-        , "IamRoleArn"       .= _chIamRoleArn
-        , "ExternalId"       .= _chExternalId
-        , "SubscriptionType" .= _chSubscriptionType
-        , "ClientToken"      .= _chClientToken
-        , "SyslogIp"         .= _chSyslogIp
-        ]
-
-instance AWSRequest CreateHsm where
-    type Sv CreateHsm = CloudHSM
-    type Rs CreateHsm = CreateHsmResponse
-
-    request  = post "CreateHsm"
-    response = jsonResponse
-
-instance FromJSON CreateHsmResponse where
-    parseJSON = withObject "CreateHsmResponse" $ \o -> CreateHsmResponse
-        <$> o .:? "HsmArn"
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
@@ -1,123 +1,142 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CloudHSM.CreateLunaClient
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates an HSM client.
+-- Creates an HSM client.
 --
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_CreateLunaClient.html>
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_CreateLunaClient.html AWS API Reference> for CreateLunaClient.
 module Network.AWS.CloudHSM.CreateLunaClient
     (
-    -- * Request
-      CreateLunaClient
-    -- ** Request constructor
-    , createLunaClient
-    -- ** Request lenses
-    , clcCertificate
+    -- * Creating a Request
+      createLunaClient
+    , CreateLunaClient
+    -- * Request Lenses
     , clcLabel
+    , clcCertificate
 
-    -- * Response
-    , CreateLunaClientResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createLunaClientResponse
-    -- ** Response lenses
-    , clcrClientArn
+    , CreateLunaClientResponse
+    -- * Response Lenses
+    , clcrsClientARN
+    , clcrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
-
-data CreateLunaClient = CreateLunaClient
-    { _clcCertificate :: Text
-    , _clcLabel       :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CreateLunaClient' constructor.
+-- | Contains the inputs for the CreateLunaClient action.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createLunaClient' smart constructor.
+data CreateLunaClient = CreateLunaClient'
+    { _clcLabel       :: !(Maybe Text)
+    , _clcCertificate :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateLunaClient' with the minimum fields required to make a request.
 --
--- * 'clcCertificate' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'clcLabel' @::@ 'Maybe' 'Text'
+-- * 'clcLabel'
 --
-createLunaClient :: Text -- ^ 'clcCertificate'
-                 -> CreateLunaClient
-createLunaClient p1 = CreateLunaClient
-    { _clcCertificate = p1
-    , _clcLabel       = Nothing
+-- * 'clcCertificate'
+createLunaClient
+    :: Text -- ^ 'clcCertificate'
+    -> CreateLunaClient
+createLunaClient pCertificate_ =
+    CreateLunaClient'
+    { _clcLabel = Nothing
+    , _clcCertificate = pCertificate_
     }
 
--- | The contents of a Base64-Encoded X.509 v3 certificate to be installed on the
--- HSMs used by this client.
-clcCertificate :: Lens' CreateLunaClient Text
-clcCertificate = lens _clcCertificate (\s a -> s { _clcCertificate = a })
-
 -- | The label for the client.
 clcLabel :: Lens' CreateLunaClient (Maybe Text)
-clcLabel = lens _clcLabel (\s a -> s { _clcLabel = a })
+clcLabel = lens _clcLabel (\ s a -> s{_clcLabel = a});
 
-newtype CreateLunaClientResponse = CreateLunaClientResponse
-    { _clcrClientArn :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- | The contents of a Base64-Encoded X.509 v3 certificate to be installed on
+-- the HSMs used by this client.
+clcCertificate :: Lens' CreateLunaClient Text
+clcCertificate = lens _clcCertificate (\ s a -> s{_clcCertificate = a});
 
--- | 'CreateLunaClientResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'clcrClientArn' @::@ 'Maybe' 'Text'
---
-createLunaClientResponse :: CreateLunaClientResponse
-createLunaClientResponse = CreateLunaClientResponse
-    { _clcrClientArn = Nothing
-    }
+instance AWSRequest CreateLunaClient where
+        type Sv CreateLunaClient = CloudHSM
+        type Rs CreateLunaClient = CreateLunaClientResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateLunaClientResponse' <$>
+                   (x .?> "ClientArn") <*> (pure (fromEnum s)))
 
--- | The ARN of the client.
-clcrClientArn :: Lens' CreateLunaClientResponse (Maybe Text)
-clcrClientArn = lens _clcrClientArn (\s a -> s { _clcrClientArn = a })
+instance ToHeaders CreateLunaClient where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.CreateLunaClient" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON CreateLunaClient where
+        toJSON CreateLunaClient'{..}
+          = object
+              ["Label" .= _clcLabel,
+               "Certificate" .= _clcCertificate]
+
 instance ToPath CreateLunaClient where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateLunaClient where
-    toQuery = const mempty
-
-instance ToHeaders CreateLunaClient
+        toQuery = const mempty
 
-instance ToJSON CreateLunaClient where
-    toJSON CreateLunaClient{..} = object
-        [ "Label"       .= _clcLabel
-        , "Certificate" .= _clcCertificate
-        ]
+-- | Contains the output of the CreateLunaClient action.
+--
+-- /See:/ 'createLunaClientResponse' smart constructor.
+data CreateLunaClientResponse = CreateLunaClientResponse'
+    { _clcrsClientARN :: !(Maybe Text)
+    , _clcrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateLunaClient where
-    type Sv CreateLunaClient = CloudHSM
-    type Rs CreateLunaClient = CreateLunaClientResponse
+-- | Creates a value of 'CreateLunaClientResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'clcrsClientARN'
+--
+-- * 'clcrsStatus'
+createLunaClientResponse
+    :: Int -- ^ 'clcrsStatus'
+    -> CreateLunaClientResponse
+createLunaClientResponse pStatus_ =
+    CreateLunaClientResponse'
+    { _clcrsClientARN = Nothing
+    , _clcrsStatus = pStatus_
+    }
 
-    request  = post "CreateLunaClient"
-    response = jsonResponse
+-- | The ARN of the client.
+clcrsClientARN :: Lens' CreateLunaClientResponse (Maybe Text)
+clcrsClientARN = lens _clcrsClientARN (\ s a -> s{_clcrsClientARN = a});
 
-instance FromJSON CreateLunaClientResponse where
-    parseJSON = withObject "CreateLunaClientResponse" $ \o -> CreateLunaClientResponse
-        <$> o .:? "ClientArn"
+-- | The response status code.
+clcrsStatus :: Lens' CreateLunaClientResponse Int
+clcrsStatus = lens _clcrsStatus (\ s a -> s{_clcrsStatus = a});
diff --git a/gen/Network/AWS/CloudHSM/DeleteHAPG.hs b/gen/Network/AWS/CloudHSM/DeleteHAPG.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudHSM/DeleteHAPG.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudHSM.DeleteHAPG
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a high-availability partition group.
+--
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_DeleteHAPG.html AWS API Reference> for DeleteHAPG.
+module Network.AWS.CloudHSM.DeleteHAPG
+    (
+    -- * Creating a Request
+      deleteHAPG
+    , DeleteHAPG
+    -- * Request Lenses
+    , dhHAPGARN
+
+    -- * Destructuring the Response
+    , deleteHAPGResponse
+    , DeleteHAPGResponse
+    -- * Response Lenses
+    , dhrsStatus
+    ) where
+
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Contains the inputs for the DeleteHapg action.
+--
+-- /See:/ 'deleteHAPG' smart constructor.
+newtype DeleteHAPG = DeleteHAPG'
+    { _dhHAPGARN :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteHAPG' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dhHAPGARN'
+deleteHAPG
+    :: Text -- ^ 'dhHAPGARN'
+    -> DeleteHAPG
+deleteHAPG pHAPGARN_ =
+    DeleteHAPG'
+    { _dhHAPGARN = pHAPGARN_
+    }
+
+-- | The ARN of the high-availability partition group to delete.
+dhHAPGARN :: Lens' DeleteHAPG Text
+dhHAPGARN = lens _dhHAPGARN (\ s a -> s{_dhHAPGARN = a});
+
+instance AWSRequest DeleteHAPG where
+        type Sv DeleteHAPG = CloudHSM
+        type Rs DeleteHAPG = DeleteHAPGResponse
+        request = postJSON
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 DeleteHAPGResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders DeleteHAPG where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.DeleteHapg" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteHAPG where
+        toJSON DeleteHAPG'{..}
+          = object ["HapgArn" .= _dhHAPGARN]
+
+instance ToPath DeleteHAPG where
+        toPath = const "/"
+
+instance ToQuery DeleteHAPG where
+        toQuery = const mempty
+
+-- | Contains the output of the DeleteHapg action.
+--
+-- /See:/ 'deleteHAPGResponse' smart constructor.
+newtype DeleteHAPGResponse = DeleteHAPGResponse'
+    { _dhrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteHAPGResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dhrsStatus'
+deleteHAPGResponse
+    :: Int -- ^ 'dhrsStatus'
+    -> DeleteHAPGResponse
+deleteHAPGResponse pStatus_ =
+    DeleteHAPGResponse'
+    { _dhrsStatus = pStatus_
+    }
+
+-- | The response status code.
+dhrsStatus :: Lens' DeleteHAPGResponse Int
+dhrsStatus = lens _dhrsStatus (\ s a -> s{_dhrsStatus = a});
diff --git a/gen/Network/AWS/CloudHSM/DeleteHSM.hs b/gen/Network/AWS/CloudHSM/DeleteHSM.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudHSM/DeleteHSM.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudHSM.DeleteHSM
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an HSM. Once complete, this operation cannot be undone and your
+-- key material cannot be recovered.
+--
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_DeleteHSM.html AWS API Reference> for DeleteHSM.
+module Network.AWS.CloudHSM.DeleteHSM
+    (
+    -- * Creating a Request
+      deleteHSM
+    , DeleteHSM
+    -- * Request Lenses
+    , dhHSMARN
+
+    -- * Destructuring the Response
+    , deleteHSMResponse
+    , DeleteHSMResponse
+    -- * Response Lenses
+    , dhsmrsStatus
+    ) where
+
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Contains the inputs for the DeleteHsm action.
+--
+-- /See:/ 'deleteHSM' smart constructor.
+newtype DeleteHSM = DeleteHSM'
+    { _dhHSMARN :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteHSM' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dhHSMARN'
+deleteHSM
+    :: Text -- ^ 'dhHSMARN'
+    -> DeleteHSM
+deleteHSM pHSMARN_ =
+    DeleteHSM'
+    { _dhHSMARN = pHSMARN_
+    }
+
+-- | The ARN of the HSM to delete.
+dhHSMARN :: Lens' DeleteHSM Text
+dhHSMARN = lens _dhHSMARN (\ s a -> s{_dhHSMARN = a});
+
+instance AWSRequest DeleteHSM where
+        type Sv DeleteHSM = CloudHSM
+        type Rs DeleteHSM = DeleteHSMResponse
+        request = postJSON
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 DeleteHSMResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders DeleteHSM where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.DeleteHsm" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteHSM where
+        toJSON DeleteHSM'{..}
+          = object ["HsmArn" .= _dhHSMARN]
+
+instance ToPath DeleteHSM where
+        toPath = const "/"
+
+instance ToQuery DeleteHSM where
+        toQuery = const mempty
+
+-- | Contains the output of the DeleteHsm action.
+--
+-- /See:/ 'deleteHSMResponse' smart constructor.
+newtype DeleteHSMResponse = DeleteHSMResponse'
+    { _dhsmrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteHSMResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dhsmrsStatus'
+deleteHSMResponse
+    :: Int -- ^ 'dhsmrsStatus'
+    -> DeleteHSMResponse
+deleteHSMResponse pStatus_ =
+    DeleteHSMResponse'
+    { _dhsmrsStatus = pStatus_
+    }
+
+-- | The response status code.
+dhsmrsStatus :: Lens' DeleteHSMResponse Int
+dhsmrsStatus = lens _dhsmrsStatus (\ s a -> s{_dhsmrsStatus = a});
diff --git a/gen/Network/AWS/CloudHSM/DeleteHapg.hs b/gen/Network/AWS/CloudHSM/DeleteHapg.hs
deleted file mode 100644
--- a/gen/Network/AWS/CloudHSM/DeleteHapg.hs
+++ /dev/null
@@ -1,113 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.CloudHSM.DeleteHapg
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes a high-availability partition group.
---
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_DeleteHapg.html>
-module Network.AWS.CloudHSM.DeleteHapg
-    (
-    -- * Request
-      DeleteHapg
-    -- ** Request constructor
-    , deleteHapg
-    -- ** Request lenses
-    , dhHapgArn
-
-    -- * Response
-    , DeleteHapgResponse
-    -- ** Response constructor
-    , deleteHapgResponse
-    -- ** Response lenses
-    , dhrStatus
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
-
-newtype DeleteHapg = DeleteHapg
-    { _dhHapgArn :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
-
--- | 'DeleteHapg' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dhHapgArn' @::@ 'Text'
---
-deleteHapg :: Text -- ^ 'dhHapgArn'
-           -> DeleteHapg
-deleteHapg p1 = DeleteHapg
-    { _dhHapgArn = p1
-    }
-
--- | The ARN of the high-availability partition group to delete.
-dhHapgArn :: Lens' DeleteHapg Text
-dhHapgArn = lens _dhHapgArn (\s a -> s { _dhHapgArn = a })
-
-newtype DeleteHapgResponse = DeleteHapgResponse
-    { _dhrStatus :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
-
--- | 'DeleteHapgResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dhrStatus' @::@ 'Text'
---
-deleteHapgResponse :: Text -- ^ 'dhrStatus'
-                   -> DeleteHapgResponse
-deleteHapgResponse p1 = DeleteHapgResponse
-    { _dhrStatus = p1
-    }
-
--- | The status of the action.
-dhrStatus :: Lens' DeleteHapgResponse Text
-dhrStatus = lens _dhrStatus (\s a -> s { _dhrStatus = a })
-
-instance ToPath DeleteHapg where
-    toPath = const "/"
-
-instance ToQuery DeleteHapg where
-    toQuery = const mempty
-
-instance ToHeaders DeleteHapg
-
-instance ToJSON DeleteHapg where
-    toJSON DeleteHapg{..} = object
-        [ "HapgArn" .= _dhHapgArn
-        ]
-
-instance AWSRequest DeleteHapg where
-    type Sv DeleteHapg = CloudHSM
-    type Rs DeleteHapg = DeleteHapgResponse
-
-    request  = post "DeleteHapg"
-    response = jsonResponse
-
-instance FromJSON DeleteHapgResponse where
-    parseJSON = withObject "DeleteHapgResponse" $ \o -> DeleteHapgResponse
-        <$> o .:  "Status"
diff --git a/gen/Network/AWS/CloudHSM/DeleteHsm.hs b/gen/Network/AWS/CloudHSM/DeleteHsm.hs
deleted file mode 100644
--- a/gen/Network/AWS/CloudHSM/DeleteHsm.hs
+++ /dev/null
@@ -1,114 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.CloudHSM.DeleteHsm
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes an HSM. Once complete, this operation cannot be undone and your key
--- material cannot be recovered.
---
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_DeleteHsm.html>
-module Network.AWS.CloudHSM.DeleteHsm
-    (
-    -- * Request
-      DeleteHsm
-    -- ** Request constructor
-    , deleteHsm
-    -- ** Request lenses
-    , dhHsmArn
-
-    -- * Response
-    , DeleteHsmResponse
-    -- ** Response constructor
-    , deleteHsmResponse
-    -- ** Response lenses
-    , dhr1Status
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
-
-newtype DeleteHsm = DeleteHsm
-    { _dhHsmArn :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
-
--- | 'DeleteHsm' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dhHsmArn' @::@ 'Text'
---
-deleteHsm :: Text -- ^ 'dhHsmArn'
-          -> DeleteHsm
-deleteHsm p1 = DeleteHsm
-    { _dhHsmArn = p1
-    }
-
--- | The ARN of the HSM to delete.
-dhHsmArn :: Lens' DeleteHsm Text
-dhHsmArn = lens _dhHsmArn (\s a -> s { _dhHsmArn = a })
-
-newtype DeleteHsmResponse = DeleteHsmResponse
-    { _dhr1Status :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
-
--- | 'DeleteHsmResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dhr1Status' @::@ 'Text'
---
-deleteHsmResponse :: Text -- ^ 'dhr1Status'
-                  -> DeleteHsmResponse
-deleteHsmResponse p1 = DeleteHsmResponse
-    { _dhr1Status = p1
-    }
-
--- | The status of the action.
-dhr1Status :: Lens' DeleteHsmResponse Text
-dhr1Status = lens _dhr1Status (\s a -> s { _dhr1Status = a })
-
-instance ToPath DeleteHsm where
-    toPath = const "/"
-
-instance ToQuery DeleteHsm where
-    toQuery = const mempty
-
-instance ToHeaders DeleteHsm
-
-instance ToJSON DeleteHsm where
-    toJSON DeleteHsm{..} = object
-        [ "HsmArn" .= _dhHsmArn
-        ]
-
-instance AWSRequest DeleteHsm where
-    type Sv DeleteHsm = CloudHSM
-    type Rs DeleteHsm = DeleteHsmResponse
-
-    request  = post "DeleteHsm"
-    response = jsonResponse
-
-instance FromJSON DeleteHsmResponse where
-    parseJSON = withObject "DeleteHsmResponse" $ \o -> DeleteHsmResponse
-        <$> o .:  "Status"
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
@@ -1,113 +1,116 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CloudHSM.DeleteLunaClient
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes a client.
+-- Deletes a client.
 --
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_DeleteLunaClient.html>
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_DeleteLunaClient.html AWS API Reference> for DeleteLunaClient.
 module Network.AWS.CloudHSM.DeleteLunaClient
     (
-    -- * Request
-      DeleteLunaClient
-    -- ** Request constructor
-    , deleteLunaClient
-    -- ** Request lenses
-    , dlc1ClientArn
+    -- * Creating a Request
+      deleteLunaClient
+    , DeleteLunaClient
+    -- * Request Lenses
+    , dClientARN
 
-    -- * Response
-    , DeleteLunaClientResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteLunaClientResponse
-    -- ** Response lenses
-    , dlcrStatus
+    , DeleteLunaClientResponse
+    -- * Response Lenses
+    , dlcrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DeleteLunaClient = DeleteLunaClient
-    { _dlc1ClientArn :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+-- | /See:/ 'deleteLunaClient' smart constructor.
+newtype DeleteLunaClient = DeleteLunaClient'
+    { _dClientARN :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteLunaClient' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteLunaClient' with the minimum fields required to make a request.
 --
--- * 'dlc1ClientArn' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteLunaClient :: Text -- ^ 'dlc1ClientArn'
-                 -> DeleteLunaClient
-deleteLunaClient p1 = DeleteLunaClient
-    { _dlc1ClientArn = p1
+-- * 'dClientARN'
+deleteLunaClient
+    :: Text -- ^ 'dClientARN'
+    -> DeleteLunaClient
+deleteLunaClient pClientARN_ =
+    DeleteLunaClient'
+    { _dClientARN = pClientARN_
     }
 
 -- | The ARN of the client to delete.
-dlc1ClientArn :: Lens' DeleteLunaClient Text
-dlc1ClientArn = lens _dlc1ClientArn (\s a -> s { _dlc1ClientArn = a })
+dClientARN :: Lens' DeleteLunaClient Text
+dClientARN = lens _dClientARN (\ s a -> s{_dClientARN = a});
 
-newtype DeleteLunaClientResponse = DeleteLunaClientResponse
-    { _dlcrStatus :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+instance AWSRequest DeleteLunaClient where
+        type Sv DeleteLunaClient = CloudHSM
+        type Rs DeleteLunaClient = DeleteLunaClientResponse
+        request = postJSON
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 DeleteLunaClientResponse' <$> (pure (fromEnum s)))
 
--- | 'DeleteLunaClientResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dlcrStatus' @::@ 'Text'
---
-deleteLunaClientResponse :: Text -- ^ 'dlcrStatus'
-                         -> DeleteLunaClientResponse
-deleteLunaClientResponse p1 = DeleteLunaClientResponse
-    { _dlcrStatus = p1
-    }
+instance ToHeaders DeleteLunaClient where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.DeleteLunaClient" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The status of the action.
-dlcrStatus :: Lens' DeleteLunaClientResponse Text
-dlcrStatus = lens _dlcrStatus (\s a -> s { _dlcrStatus = a })
+instance ToJSON DeleteLunaClient where
+        toJSON DeleteLunaClient'{..}
+          = object ["ClientArn" .= _dClientARN]
 
 instance ToPath DeleteLunaClient where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteLunaClient where
-    toQuery = const mempty
-
-instance ToHeaders DeleteLunaClient
-
-instance ToJSON DeleteLunaClient where
-    toJSON DeleteLunaClient{..} = object
-        [ "ClientArn" .= _dlc1ClientArn
-        ]
+        toQuery = const mempty
 
-instance AWSRequest DeleteLunaClient where
-    type Sv DeleteLunaClient = CloudHSM
-    type Rs DeleteLunaClient = DeleteLunaClientResponse
+-- | /See:/ 'deleteLunaClientResponse' smart constructor.
+newtype DeleteLunaClientResponse = DeleteLunaClientResponse'
+    { _dlcrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteLunaClient"
-    response = jsonResponse
+-- | Creates a value of 'DeleteLunaClientResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlcrsStatus'
+deleteLunaClientResponse
+    :: Int -- ^ 'dlcrsStatus'
+    -> DeleteLunaClientResponse
+deleteLunaClientResponse pStatus_ =
+    DeleteLunaClientResponse'
+    { _dlcrsStatus = pStatus_
+    }
 
-instance FromJSON DeleteLunaClientResponse where
-    parseJSON = withObject "DeleteLunaClientResponse" $ \o -> DeleteLunaClientResponse
-        <$> o .:  "Status"
+-- | The response status code.
+dlcrsStatus :: Lens' DeleteLunaClientResponse Int
+dlcrsStatus = lens _dlcrsStatus (\ s a -> s{_dlcrsStatus = a});
diff --git a/gen/Network/AWS/CloudHSM/DescribeHAPG.hs b/gen/Network/AWS/CloudHSM/DescribeHAPG.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudHSM/DescribeHAPG.hs
@@ -0,0 +1,212 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudHSM.DescribeHAPG
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves information about a high-availability partition group.
+--
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_DescribeHAPG.html AWS API Reference> for DescribeHAPG.
+module Network.AWS.CloudHSM.DescribeHAPG
+    (
+    -- * Creating a Request
+      describeHAPG
+    , DescribeHAPG
+    -- * Request Lenses
+    , dhapgHAPGARN
+
+    -- * Destructuring the Response
+    , describeHAPGResponse
+    , DescribeHAPGResponse
+    -- * Response Lenses
+    , dhapgrsState
+    , dhapgrsLastModifiedTimestamp
+    , dhapgrsHSMsPendingRegistration
+    , dhapgrsHAPGSerial
+    , dhapgrsHSMsPendingDeletion
+    , dhapgrsHSMsLastActionFailed
+    , dhapgrsPartitionSerialList
+    , dhapgrsHAPGARN
+    , dhapgrsLabel
+    , dhapgrsStatus
+    ) where
+
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Contains the inputs for the DescribeHapg action.
+--
+-- /See:/ 'describeHAPG' smart constructor.
+newtype DescribeHAPG = DescribeHAPG'
+    { _dhapgHAPGARN :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeHAPG' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dhapgHAPGARN'
+describeHAPG
+    :: Text -- ^ 'dhapgHAPGARN'
+    -> DescribeHAPG
+describeHAPG pHAPGARN_ =
+    DescribeHAPG'
+    { _dhapgHAPGARN = pHAPGARN_
+    }
+
+-- | The ARN of the high-availability partition group to describe.
+dhapgHAPGARN :: Lens' DescribeHAPG Text
+dhapgHAPGARN = lens _dhapgHAPGARN (\ s a -> s{_dhapgHAPGARN = a});
+
+instance AWSRequest DescribeHAPG where
+        type Sv DescribeHAPG = CloudHSM
+        type Rs DescribeHAPG = DescribeHAPGResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeHAPGResponse' <$>
+                   (x .?> "State") <*> (x .?> "LastModifiedTimestamp")
+                     <*> (x .?> "HsmsPendingRegistration" .!@ mempty)
+                     <*> (x .?> "HapgSerial")
+                     <*> (x .?> "HsmsPendingDeletion" .!@ mempty)
+                     <*> (x .?> "HsmsLastActionFailed" .!@ mempty)
+                     <*> (x .?> "PartitionSerialList" .!@ mempty)
+                     <*> (x .?> "HapgArn")
+                     <*> (x .?> "Label")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeHAPG where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.DescribeHapg" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeHAPG where
+        toJSON DescribeHAPG'{..}
+          = object ["HapgArn" .= _dhapgHAPGARN]
+
+instance ToPath DescribeHAPG where
+        toPath = const "/"
+
+instance ToQuery DescribeHAPG where
+        toQuery = const mempty
+
+-- | Contains the output of the DescribeHapg action.
+--
+-- /See:/ 'describeHAPGResponse' smart constructor.
+data DescribeHAPGResponse = DescribeHAPGResponse'
+    { _dhapgrsState                   :: !(Maybe CloudHSMObjectState)
+    , _dhapgrsLastModifiedTimestamp   :: !(Maybe Text)
+    , _dhapgrsHSMsPendingRegistration :: !(Maybe [Text])
+    , _dhapgrsHAPGSerial              :: !(Maybe Text)
+    , _dhapgrsHSMsPendingDeletion     :: !(Maybe [Text])
+    , _dhapgrsHSMsLastActionFailed    :: !(Maybe [Text])
+    , _dhapgrsPartitionSerialList     :: !(Maybe [Text])
+    , _dhapgrsHAPGARN                 :: !(Maybe Text)
+    , _dhapgrsLabel                   :: !(Maybe Text)
+    , _dhapgrsStatus                  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeHAPGResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dhapgrsState'
+--
+-- * 'dhapgrsLastModifiedTimestamp'
+--
+-- * 'dhapgrsHSMsPendingRegistration'
+--
+-- * 'dhapgrsHAPGSerial'
+--
+-- * 'dhapgrsHSMsPendingDeletion'
+--
+-- * 'dhapgrsHSMsLastActionFailed'
+--
+-- * 'dhapgrsPartitionSerialList'
+--
+-- * 'dhapgrsHAPGARN'
+--
+-- * 'dhapgrsLabel'
+--
+-- * 'dhapgrsStatus'
+describeHAPGResponse
+    :: Int -- ^ 'dhapgrsStatus'
+    -> DescribeHAPGResponse
+describeHAPGResponse pStatus_ =
+    DescribeHAPGResponse'
+    { _dhapgrsState = Nothing
+    , _dhapgrsLastModifiedTimestamp = Nothing
+    , _dhapgrsHSMsPendingRegistration = Nothing
+    , _dhapgrsHAPGSerial = Nothing
+    , _dhapgrsHSMsPendingDeletion = Nothing
+    , _dhapgrsHSMsLastActionFailed = Nothing
+    , _dhapgrsPartitionSerialList = Nothing
+    , _dhapgrsHAPGARN = Nothing
+    , _dhapgrsLabel = Nothing
+    , _dhapgrsStatus = pStatus_
+    }
+
+-- | The state of the high-availability partition group.
+dhapgrsState :: Lens' DescribeHAPGResponse (Maybe CloudHSMObjectState)
+dhapgrsState = lens _dhapgrsState (\ s a -> s{_dhapgrsState = a});
+
+-- | The date and time the high-availability partition group was last
+-- modified.
+dhapgrsLastModifiedTimestamp :: Lens' DescribeHAPGResponse (Maybe Text)
+dhapgrsLastModifiedTimestamp = lens _dhapgrsLastModifiedTimestamp (\ s a -> s{_dhapgrsLastModifiedTimestamp = a});
+
+-- | Undocumented member.
+dhapgrsHSMsPendingRegistration :: Lens' DescribeHAPGResponse [Text]
+dhapgrsHSMsPendingRegistration = lens _dhapgrsHSMsPendingRegistration (\ s a -> s{_dhapgrsHSMsPendingRegistration = a}) . _Default . _Coerce;
+
+-- | The serial number of the high-availability partition group.
+dhapgrsHAPGSerial :: Lens' DescribeHAPGResponse (Maybe Text)
+dhapgrsHAPGSerial = lens _dhapgrsHAPGSerial (\ s a -> s{_dhapgrsHAPGSerial = a});
+
+-- | Undocumented member.
+dhapgrsHSMsPendingDeletion :: Lens' DescribeHAPGResponse [Text]
+dhapgrsHSMsPendingDeletion = lens _dhapgrsHSMsPendingDeletion (\ s a -> s{_dhapgrsHSMsPendingDeletion = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+dhapgrsHSMsLastActionFailed :: Lens' DescribeHAPGResponse [Text]
+dhapgrsHSMsLastActionFailed = lens _dhapgrsHSMsLastActionFailed (\ s a -> s{_dhapgrsHSMsLastActionFailed = a}) . _Default . _Coerce;
+
+-- | The list of partition serial numbers that belong to the
+-- high-availability partition group.
+dhapgrsPartitionSerialList :: Lens' DescribeHAPGResponse [Text]
+dhapgrsPartitionSerialList = lens _dhapgrsPartitionSerialList (\ s a -> s{_dhapgrsPartitionSerialList = a}) . _Default . _Coerce;
+
+-- | The ARN of the high-availability partition group.
+dhapgrsHAPGARN :: Lens' DescribeHAPGResponse (Maybe Text)
+dhapgrsHAPGARN = lens _dhapgrsHAPGARN (\ s a -> s{_dhapgrsHAPGARN = a});
+
+-- | The label for the high-availability partition group.
+dhapgrsLabel :: Lens' DescribeHAPGResponse (Maybe Text)
+dhapgrsLabel = lens _dhapgrsLabel (\ s a -> s{_dhapgrsLabel = a});
+
+-- | The response status code.
+dhapgrsStatus :: Lens' DescribeHAPGResponse Int
+dhapgrsStatus = lens _dhapgrsStatus (\ s a -> s{_dhapgrsStatus = a});
diff --git a/gen/Network/AWS/CloudHSM/DescribeHSM.hs b/gen/Network/AWS/CloudHSM/DescribeHSM.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudHSM/DescribeHSM.hs
@@ -0,0 +1,334 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudHSM.DescribeHSM
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves information about an HSM. You can identify the HSM by its ARN
+-- or its serial number.
+--
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_DescribeHSM.html AWS API Reference> for DescribeHSM.
+module Network.AWS.CloudHSM.DescribeHSM
+    (
+    -- * Creating a Request
+      describeHSM
+    , DescribeHSM
+    -- * Request Lenses
+    , dhsmHSMSerialNumber
+    , dhsmHSMARN
+
+    -- * Destructuring the Response
+    , describeHSMResponse
+    , DescribeHSMResponse
+    -- * Response Lenses
+    , desrsIAMRoleARN
+    , desrsEniId
+    , desrsSubscriptionEndDate
+    , desrsVPCId
+    , desrsSSHKeyLastUpdated
+    , desrsServerCertURI
+    , desrsSubscriptionType
+    , desrsStatusDetails
+    , desrsSSHPublicKey
+    , desrsSubnetId
+    , desrsPartitions
+    , desrsAvailabilityZone
+    , desrsSubscriptionStartDate
+    , desrsServerCertLastUpdated
+    , desrsSoftwareVersion
+    , desrsSerialNumber
+    , desrsVendorName
+    , desrsHSMARN
+    , desrsEniIP
+    , desrsHSMType
+    , desrsStatus
+    ) where
+
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Contains the inputs for the DescribeHsm action.
+--
+-- /See:/ 'describeHSM' smart constructor.
+data DescribeHSM = DescribeHSM'
+    { _dhsmHSMSerialNumber :: !(Maybe Text)
+    , _dhsmHSMARN          :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeHSM' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dhsmHSMSerialNumber'
+--
+-- * 'dhsmHSMARN'
+describeHSM
+    :: DescribeHSM
+describeHSM =
+    DescribeHSM'
+    { _dhsmHSMSerialNumber = Nothing
+    , _dhsmHSMARN = Nothing
+    }
+
+-- | The serial number of the HSM. Either the /HsmArn/ or the
+-- /HsmSerialNumber/ parameter must be specified.
+dhsmHSMSerialNumber :: Lens' DescribeHSM (Maybe Text)
+dhsmHSMSerialNumber = lens _dhsmHSMSerialNumber (\ s a -> s{_dhsmHSMSerialNumber = a});
+
+-- | The ARN of the HSM. Either the /HsmArn/ or the /SerialNumber/ parameter
+-- must be specified.
+dhsmHSMARN :: Lens' DescribeHSM (Maybe Text)
+dhsmHSMARN = lens _dhsmHSMARN (\ s a -> s{_dhsmHSMARN = a});
+
+instance AWSRequest DescribeHSM where
+        type Sv DescribeHSM = CloudHSM
+        type Rs DescribeHSM = DescribeHSMResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeHSMResponse' <$>
+                   (x .?> "IamRoleArn") <*> (x .?> "EniId") <*>
+                     (x .?> "SubscriptionEndDate")
+                     <*> (x .?> "VpcId")
+                     <*> (x .?> "SshKeyLastUpdated")
+                     <*> (x .?> "ServerCertUri")
+                     <*> (x .?> "SubscriptionType")
+                     <*> (x .?> "StatusDetails")
+                     <*> (x .?> "SshPublicKey")
+                     <*> (x .?> "SubnetId")
+                     <*> (x .?> "Partitions" .!@ mempty)
+                     <*> (x .?> "AvailabilityZone")
+                     <*> (x .?> "SubscriptionStartDate")
+                     <*> (x .?> "ServerCertLastUpdated")
+                     <*> (x .?> "SoftwareVersion")
+                     <*> (x .?> "SerialNumber")
+                     <*> (x .?> "VendorName")
+                     <*> (x .?> "HsmArn")
+                     <*> (x .?> "EniIp")
+                     <*> (x .?> "HsmType")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeHSM where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.DescribeHsm" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeHSM where
+        toJSON DescribeHSM'{..}
+          = object
+              ["HsmSerialNumber" .= _dhsmHSMSerialNumber,
+               "HsmArn" .= _dhsmHSMARN]
+
+instance ToPath DescribeHSM where
+        toPath = const "/"
+
+instance ToQuery DescribeHSM where
+        toQuery = const mempty
+
+-- | Contains the output of the DescribeHsm action.
+--
+-- /See:/ 'describeHSMResponse' smart constructor.
+data DescribeHSMResponse = DescribeHSMResponse'
+    { _desrsIAMRoleARN            :: !(Maybe Text)
+    , _desrsEniId                 :: !(Maybe Text)
+    , _desrsSubscriptionEndDate   :: !(Maybe Text)
+    , _desrsVPCId                 :: !(Maybe Text)
+    , _desrsSSHKeyLastUpdated     :: !(Maybe Text)
+    , _desrsServerCertURI         :: !(Maybe Text)
+    , _desrsSubscriptionType      :: !(Maybe SubscriptionType)
+    , _desrsStatusDetails         :: !(Maybe Text)
+    , _desrsSSHPublicKey          :: !(Maybe Text)
+    , _desrsSubnetId              :: !(Maybe Text)
+    , _desrsPartitions            :: !(Maybe [Text])
+    , _desrsAvailabilityZone      :: !(Maybe Text)
+    , _desrsSubscriptionStartDate :: !(Maybe Text)
+    , _desrsServerCertLastUpdated :: !(Maybe Text)
+    , _desrsSoftwareVersion       :: !(Maybe Text)
+    , _desrsSerialNumber          :: !(Maybe Text)
+    , _desrsVendorName            :: !(Maybe Text)
+    , _desrsHSMARN                :: !(Maybe Text)
+    , _desrsEniIP                 :: !(Maybe Text)
+    , _desrsHSMType               :: !(Maybe Text)
+    , _desrsStatus                :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeHSMResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'desrsIAMRoleARN'
+--
+-- * 'desrsEniId'
+--
+-- * 'desrsSubscriptionEndDate'
+--
+-- * 'desrsVPCId'
+--
+-- * 'desrsSSHKeyLastUpdated'
+--
+-- * 'desrsServerCertURI'
+--
+-- * 'desrsSubscriptionType'
+--
+-- * 'desrsStatusDetails'
+--
+-- * 'desrsSSHPublicKey'
+--
+-- * 'desrsSubnetId'
+--
+-- * 'desrsPartitions'
+--
+-- * 'desrsAvailabilityZone'
+--
+-- * 'desrsSubscriptionStartDate'
+--
+-- * 'desrsServerCertLastUpdated'
+--
+-- * 'desrsSoftwareVersion'
+--
+-- * 'desrsSerialNumber'
+--
+-- * 'desrsVendorName'
+--
+-- * 'desrsHSMARN'
+--
+-- * 'desrsEniIP'
+--
+-- * 'desrsHSMType'
+--
+-- * 'desrsStatus'
+describeHSMResponse
+    :: Int -- ^ 'desrsStatus'
+    -> DescribeHSMResponse
+describeHSMResponse pStatus_ =
+    DescribeHSMResponse'
+    { _desrsIAMRoleARN = Nothing
+    , _desrsEniId = Nothing
+    , _desrsSubscriptionEndDate = Nothing
+    , _desrsVPCId = Nothing
+    , _desrsSSHKeyLastUpdated = Nothing
+    , _desrsServerCertURI = Nothing
+    , _desrsSubscriptionType = Nothing
+    , _desrsStatusDetails = Nothing
+    , _desrsSSHPublicKey = Nothing
+    , _desrsSubnetId = Nothing
+    , _desrsPartitions = Nothing
+    , _desrsAvailabilityZone = Nothing
+    , _desrsSubscriptionStartDate = Nothing
+    , _desrsServerCertLastUpdated = Nothing
+    , _desrsSoftwareVersion = Nothing
+    , _desrsSerialNumber = Nothing
+    , _desrsVendorName = Nothing
+    , _desrsHSMARN = Nothing
+    , _desrsEniIP = Nothing
+    , _desrsHSMType = Nothing
+    , _desrsStatus = pStatus_
+    }
+
+-- | The ARN of the IAM role assigned to the HSM.
+desrsIAMRoleARN :: Lens' DescribeHSMResponse (Maybe Text)
+desrsIAMRoleARN = lens _desrsIAMRoleARN (\ s a -> s{_desrsIAMRoleARN = a});
+
+-- | The identifier of the elastic network interface (ENI) attached to the
+-- HSM.
+desrsEniId :: Lens' DescribeHSMResponse (Maybe Text)
+desrsEniId = lens _desrsEniId (\ s a -> s{_desrsEniId = a});
+
+-- | The subscription end date.
+desrsSubscriptionEndDate :: Lens' DescribeHSMResponse (Maybe Text)
+desrsSubscriptionEndDate = lens _desrsSubscriptionEndDate (\ s a -> s{_desrsSubscriptionEndDate = a});
+
+-- | The identifier of the VPC that the HSM is in.
+desrsVPCId :: Lens' DescribeHSMResponse (Maybe Text)
+desrsVPCId = lens _desrsVPCId (\ s a -> s{_desrsVPCId = a});
+
+-- | The date and time the SSH key was last updated.
+desrsSSHKeyLastUpdated :: Lens' DescribeHSMResponse (Maybe Text)
+desrsSSHKeyLastUpdated = lens _desrsSSHKeyLastUpdated (\ s a -> s{_desrsSSHKeyLastUpdated = a});
+
+-- | The URI of the certificate server.
+desrsServerCertURI :: Lens' DescribeHSMResponse (Maybe Text)
+desrsServerCertURI = lens _desrsServerCertURI (\ s a -> s{_desrsServerCertURI = a});
+
+-- | The subscription type.
+desrsSubscriptionType :: Lens' DescribeHSMResponse (Maybe SubscriptionType)
+desrsSubscriptionType = lens _desrsSubscriptionType (\ s a -> s{_desrsSubscriptionType = a});
+
+-- | Contains additional information about the status of the HSM.
+desrsStatusDetails :: Lens' DescribeHSMResponse (Maybe Text)
+desrsStatusDetails = lens _desrsStatusDetails (\ s a -> s{_desrsStatusDetails = a});
+
+-- | The public SSH key.
+desrsSSHPublicKey :: Lens' DescribeHSMResponse (Maybe Text)
+desrsSSHPublicKey = lens _desrsSSHPublicKey (\ s a -> s{_desrsSSHPublicKey = a});
+
+-- | The identifier of the subnet the HSM is in.
+desrsSubnetId :: Lens' DescribeHSMResponse (Maybe Text)
+desrsSubnetId = lens _desrsSubnetId (\ s a -> s{_desrsSubnetId = a});
+
+-- | The list of partitions on the HSM.
+desrsPartitions :: Lens' DescribeHSMResponse [Text]
+desrsPartitions = lens _desrsPartitions (\ s a -> s{_desrsPartitions = a}) . _Default . _Coerce;
+
+-- | The Availability Zone that the HSM is in.
+desrsAvailabilityZone :: Lens' DescribeHSMResponse (Maybe Text)
+desrsAvailabilityZone = lens _desrsAvailabilityZone (\ s a -> s{_desrsAvailabilityZone = a});
+
+-- | The subscription start date.
+desrsSubscriptionStartDate :: Lens' DescribeHSMResponse (Maybe Text)
+desrsSubscriptionStartDate = lens _desrsSubscriptionStartDate (\ s a -> s{_desrsSubscriptionStartDate = a});
+
+-- | The date and time the server certificate was last updated.
+desrsServerCertLastUpdated :: Lens' DescribeHSMResponse (Maybe Text)
+desrsServerCertLastUpdated = lens _desrsServerCertLastUpdated (\ s a -> s{_desrsServerCertLastUpdated = a});
+
+-- | The HSM software version.
+desrsSoftwareVersion :: Lens' DescribeHSMResponse (Maybe Text)
+desrsSoftwareVersion = lens _desrsSoftwareVersion (\ s a -> s{_desrsSoftwareVersion = a});
+
+-- | The serial number of the HSM.
+desrsSerialNumber :: Lens' DescribeHSMResponse (Maybe Text)
+desrsSerialNumber = lens _desrsSerialNumber (\ s a -> s{_desrsSerialNumber = a});
+
+-- | The name of the HSM vendor.
+desrsVendorName :: Lens' DescribeHSMResponse (Maybe Text)
+desrsVendorName = lens _desrsVendorName (\ s a -> s{_desrsVendorName = a});
+
+-- | The ARN of the HSM.
+desrsHSMARN :: Lens' DescribeHSMResponse (Maybe Text)
+desrsHSMARN = lens _desrsHSMARN (\ s a -> s{_desrsHSMARN = a});
+
+-- | The IP address assigned to the HSM\'s ENI.
+desrsEniIP :: Lens' DescribeHSMResponse (Maybe Text)
+desrsEniIP = lens _desrsEniIP (\ s a -> s{_desrsEniIP = a});
+
+-- | The HSM model type.
+desrsHSMType :: Lens' DescribeHSMResponse (Maybe Text)
+desrsHSMType = lens _desrsHSMType (\ s a -> s{_desrsHSMType = a});
+
+-- | The response status code.
+desrsStatus :: Lens' DescribeHSMResponse Int
+desrsStatus = lens _desrsStatus (\ s a -> s{_desrsStatus = a});
diff --git a/gen/Network/AWS/CloudHSM/DescribeHapg.hs b/gen/Network/AWS/CloudHSM/DescribeHapg.hs
deleted file mode 100644
--- a/gen/Network/AWS/CloudHSM/DescribeHapg.hs
+++ /dev/null
@@ -1,201 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.CloudHSM.DescribeHapg
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Retrieves information about a high-availability partition group.
---
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_DescribeHapg.html>
-module Network.AWS.CloudHSM.DescribeHapg
-    (
-    -- * Request
-      DescribeHapg
-    -- ** Request constructor
-    , describeHapg
-    -- ** Request lenses
-    , dh1HapgArn
-
-    -- * Response
-    , DescribeHapgResponse
-    -- ** Response constructor
-    , describeHapgResponse
-    -- ** Response lenses
-    , dhrHapgArn
-    , dhrHapgSerial
-    , dhrHsmsLastActionFailed
-    , dhrHsmsPendingDeletion
-    , dhrHsmsPendingRegistration
-    , dhrLabel
-    , dhrLastModifiedTimestamp
-    , dhrPartitionSerialList
-    , dhrState
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
-
-newtype DescribeHapg = DescribeHapg
-    { _dh1HapgArn :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
-
--- | 'DescribeHapg' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dh1HapgArn' @::@ 'Text'
---
-describeHapg :: Text -- ^ 'dh1HapgArn'
-             -> DescribeHapg
-describeHapg p1 = DescribeHapg
-    { _dh1HapgArn = p1
-    }
-
--- | The ARN of the high-availability partition group to describe.
-dh1HapgArn :: Lens' DescribeHapg Text
-dh1HapgArn = lens _dh1HapgArn (\s a -> s { _dh1HapgArn = a })
-
-data DescribeHapgResponse = DescribeHapgResponse
-    { _dhrHapgArn                 :: Maybe Text
-    , _dhrHapgSerial              :: Maybe Text
-    , _dhrHsmsLastActionFailed    :: List "HsmsLastActionFailed" Text
-    , _dhrHsmsPendingDeletion     :: List "HsmsPendingDeletion" Text
-    , _dhrHsmsPendingRegistration :: List "HsmsPendingRegistration" Text
-    , _dhrLabel                   :: Maybe Text
-    , _dhrLastModifiedTimestamp   :: Maybe Text
-    , _dhrPartitionSerialList     :: List "PartitionSerialList" Text
-    , _dhrState                   :: Maybe CloudHsmObjectState
-    } deriving (Eq, Read, Show)
-
--- | 'DescribeHapgResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dhrHapgArn' @::@ 'Maybe' 'Text'
---
--- * 'dhrHapgSerial' @::@ 'Maybe' 'Text'
---
--- * 'dhrHsmsLastActionFailed' @::@ ['Text']
---
--- * 'dhrHsmsPendingDeletion' @::@ ['Text']
---
--- * 'dhrHsmsPendingRegistration' @::@ ['Text']
---
--- * 'dhrLabel' @::@ 'Maybe' 'Text'
---
--- * 'dhrLastModifiedTimestamp' @::@ 'Maybe' 'Text'
---
--- * 'dhrPartitionSerialList' @::@ ['Text']
---
--- * 'dhrState' @::@ 'Maybe' 'CloudHsmObjectState'
---
-describeHapgResponse :: DescribeHapgResponse
-describeHapgResponse = DescribeHapgResponse
-    { _dhrHapgArn                 = Nothing
-    , _dhrHapgSerial              = Nothing
-    , _dhrHsmsLastActionFailed    = mempty
-    , _dhrHsmsPendingDeletion     = mempty
-    , _dhrHsmsPendingRegistration = mempty
-    , _dhrLabel                   = Nothing
-    , _dhrLastModifiedTimestamp   = Nothing
-    , _dhrPartitionSerialList     = mempty
-    , _dhrState                   = Nothing
-    }
-
--- | The ARN of the high-availability partition group.
-dhrHapgArn :: Lens' DescribeHapgResponse (Maybe Text)
-dhrHapgArn = lens _dhrHapgArn (\s a -> s { _dhrHapgArn = a })
-
--- | The serial number of the high-availability partition group.
-dhrHapgSerial :: Lens' DescribeHapgResponse (Maybe Text)
-dhrHapgSerial = lens _dhrHapgSerial (\s a -> s { _dhrHapgSerial = a })
-
-dhrHsmsLastActionFailed :: Lens' DescribeHapgResponse [Text]
-dhrHsmsLastActionFailed =
-    lens _dhrHsmsLastActionFailed (\s a -> s { _dhrHsmsLastActionFailed = a })
-        . _List
-
-dhrHsmsPendingDeletion :: Lens' DescribeHapgResponse [Text]
-dhrHsmsPendingDeletion =
-    lens _dhrHsmsPendingDeletion (\s a -> s { _dhrHsmsPendingDeletion = a })
-        . _List
-
-dhrHsmsPendingRegistration :: Lens' DescribeHapgResponse [Text]
-dhrHsmsPendingRegistration =
-    lens _dhrHsmsPendingRegistration
-        (\s a -> s { _dhrHsmsPendingRegistration = a })
-            . _List
-
--- | The label for the high-availability partition group.
-dhrLabel :: Lens' DescribeHapgResponse (Maybe Text)
-dhrLabel = lens _dhrLabel (\s a -> s { _dhrLabel = a })
-
--- | The date and time the high-availability partition group was last modified.
-dhrLastModifiedTimestamp :: Lens' DescribeHapgResponse (Maybe Text)
-dhrLastModifiedTimestamp =
-    lens _dhrLastModifiedTimestamp
-        (\s a -> s { _dhrLastModifiedTimestamp = a })
-
--- | The list of partition serial numbers that belong to the high-availability
--- partition group.
-dhrPartitionSerialList :: Lens' DescribeHapgResponse [Text]
-dhrPartitionSerialList =
-    lens _dhrPartitionSerialList (\s a -> s { _dhrPartitionSerialList = a })
-        . _List
-
--- | The state of the high-availability partition group.
-dhrState :: Lens' DescribeHapgResponse (Maybe CloudHsmObjectState)
-dhrState = lens _dhrState (\s a -> s { _dhrState = a })
-
-instance ToPath DescribeHapg where
-    toPath = const "/"
-
-instance ToQuery DescribeHapg where
-    toQuery = const mempty
-
-instance ToHeaders DescribeHapg
-
-instance ToJSON DescribeHapg where
-    toJSON DescribeHapg{..} = object
-        [ "HapgArn" .= _dh1HapgArn
-        ]
-
-instance AWSRequest DescribeHapg where
-    type Sv DescribeHapg = CloudHSM
-    type Rs DescribeHapg = DescribeHapgResponse
-
-    request  = post "DescribeHapg"
-    response = jsonResponse
-
-instance FromJSON DescribeHapgResponse where
-    parseJSON = withObject "DescribeHapgResponse" $ \o -> DescribeHapgResponse
-        <$> o .:? "HapgArn"
-        <*> o .:? "HapgSerial"
-        <*> o .:? "HsmsLastActionFailed" .!= mempty
-        <*> o .:? "HsmsPendingDeletion" .!= mempty
-        <*> o .:? "HsmsPendingRegistration" .!= mempty
-        <*> o .:? "Label"
-        <*> o .:? "LastModifiedTimestamp"
-        <*> o .:? "PartitionSerialList" .!= mempty
-        <*> o .:? "State"
diff --git a/gen/Network/AWS/CloudHSM/DescribeHsm.hs b/gen/Network/AWS/CloudHSM/DescribeHsm.hs
deleted file mode 100644
--- a/gen/Network/AWS/CloudHSM/DescribeHsm.hs
+++ /dev/null
@@ -1,336 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.CloudHSM.DescribeHsm
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Retrieves information about an HSM. You can identify the HSM by its ARN or
--- its serial number.
---
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_DescribeHsm.html>
-module Network.AWS.CloudHSM.DescribeHsm
-    (
-    -- * Request
-      DescribeHsm
-    -- ** Request constructor
-    , describeHsm
-    -- ** Request lenses
-    , dh1HsmArn
-    , dh1HsmSerialNumber
-
-    -- * Response
-    , DescribeHsmResponse
-    -- ** Response constructor
-    , describeHsmResponse
-    -- ** Response lenses
-    , dhr2AvailabilityZone
-    , dhr2EniId
-    , dhr2EniIp
-    , dhr2HsmArn
-    , dhr2HsmType
-    , dhr2IamRoleArn
-    , dhr2Partitions
-    , dhr2SerialNumber
-    , dhr2ServerCertLastUpdated
-    , dhr2ServerCertUri
-    , dhr2SoftwareVersion
-    , dhr2SshKeyLastUpdated
-    , dhr2SshPublicKey
-    , dhr2Status
-    , dhr2StatusDetails
-    , dhr2SubnetId
-    , dhr2SubscriptionEndDate
-    , dhr2SubscriptionStartDate
-    , dhr2SubscriptionType
-    , dhr2VendorName
-    , dhr2VpcId
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
-
-data DescribeHsm = DescribeHsm
-    { _dh1HsmArn          :: Maybe Text
-    , _dh1HsmSerialNumber :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DescribeHsm' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dh1HsmArn' @::@ 'Maybe' 'Text'
---
--- * 'dh1HsmSerialNumber' @::@ 'Maybe' 'Text'
---
-describeHsm :: DescribeHsm
-describeHsm = DescribeHsm
-    { _dh1HsmArn          = Nothing
-    , _dh1HsmSerialNumber = Nothing
-    }
-
--- | The ARN of the HSM. Either the /HsmArn/ or the /SerialNumber/ parameter must be
--- specified.
-dh1HsmArn :: Lens' DescribeHsm (Maybe Text)
-dh1HsmArn = lens _dh1HsmArn (\s a -> s { _dh1HsmArn = a })
-
--- | The serial number of the HSM. Either the /HsmArn/ or the /HsmSerialNumber/
--- parameter must be specified.
-dh1HsmSerialNumber :: Lens' DescribeHsm (Maybe Text)
-dh1HsmSerialNumber =
-    lens _dh1HsmSerialNumber (\s a -> s { _dh1HsmSerialNumber = a })
-
-data DescribeHsmResponse = DescribeHsmResponse
-    { _dhr2AvailabilityZone      :: Maybe Text
-    , _dhr2EniId                 :: Maybe Text
-    , _dhr2EniIp                 :: Maybe Text
-    , _dhr2HsmArn                :: Maybe Text
-    , _dhr2HsmType               :: Maybe Text
-    , _dhr2IamRoleArn            :: Maybe Text
-    , _dhr2Partitions            :: List "Partitions" Text
-    , _dhr2SerialNumber          :: Maybe Text
-    , _dhr2ServerCertLastUpdated :: Maybe Text
-    , _dhr2ServerCertUri         :: Maybe Text
-    , _dhr2SoftwareVersion       :: Maybe Text
-    , _dhr2SshKeyLastUpdated     :: Maybe Text
-    , _dhr2SshPublicKey          :: Maybe Text
-    , _dhr2Status                :: Maybe HsmStatus
-    , _dhr2StatusDetails         :: Maybe Text
-    , _dhr2SubnetId              :: Maybe Text
-    , _dhr2SubscriptionEndDate   :: Maybe Text
-    , _dhr2SubscriptionStartDate :: Maybe Text
-    , _dhr2SubscriptionType      :: Maybe SubscriptionType
-    , _dhr2VendorName            :: Maybe Text
-    , _dhr2VpcId                 :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'DescribeHsmResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dhr2AvailabilityZone' @::@ 'Maybe' 'Text'
---
--- * 'dhr2EniId' @::@ 'Maybe' 'Text'
---
--- * 'dhr2EniIp' @::@ 'Maybe' 'Text'
---
--- * 'dhr2HsmArn' @::@ 'Maybe' 'Text'
---
--- * 'dhr2HsmType' @::@ 'Maybe' 'Text'
---
--- * 'dhr2IamRoleArn' @::@ 'Maybe' 'Text'
---
--- * 'dhr2Partitions' @::@ ['Text']
---
--- * 'dhr2SerialNumber' @::@ 'Maybe' 'Text'
---
--- * 'dhr2ServerCertLastUpdated' @::@ 'Maybe' 'Text'
---
--- * 'dhr2ServerCertUri' @::@ 'Maybe' 'Text'
---
--- * 'dhr2SoftwareVersion' @::@ 'Maybe' 'Text'
---
--- * 'dhr2SshKeyLastUpdated' @::@ 'Maybe' 'Text'
---
--- * 'dhr2SshPublicKey' @::@ 'Maybe' 'Text'
---
--- * 'dhr2Status' @::@ 'Maybe' 'HsmStatus'
---
--- * 'dhr2StatusDetails' @::@ 'Maybe' 'Text'
---
--- * 'dhr2SubnetId' @::@ 'Maybe' 'Text'
---
--- * 'dhr2SubscriptionEndDate' @::@ 'Maybe' 'Text'
---
--- * 'dhr2SubscriptionStartDate' @::@ 'Maybe' 'Text'
---
--- * 'dhr2SubscriptionType' @::@ 'Maybe' 'SubscriptionType'
---
--- * 'dhr2VendorName' @::@ 'Maybe' 'Text'
---
--- * 'dhr2VpcId' @::@ 'Maybe' 'Text'
---
-describeHsmResponse :: DescribeHsmResponse
-describeHsmResponse = DescribeHsmResponse
-    { _dhr2HsmArn                = Nothing
-    , _dhr2Status                = Nothing
-    , _dhr2StatusDetails         = Nothing
-    , _dhr2AvailabilityZone      = Nothing
-    , _dhr2EniId                 = Nothing
-    , _dhr2EniIp                 = Nothing
-    , _dhr2SubscriptionType      = Nothing
-    , _dhr2SubscriptionStartDate = Nothing
-    , _dhr2SubscriptionEndDate   = Nothing
-    , _dhr2VpcId                 = Nothing
-    , _dhr2SubnetId              = Nothing
-    , _dhr2IamRoleArn            = Nothing
-    , _dhr2SerialNumber          = Nothing
-    , _dhr2VendorName            = Nothing
-    , _dhr2HsmType               = Nothing
-    , _dhr2SoftwareVersion       = Nothing
-    , _dhr2SshPublicKey          = Nothing
-    , _dhr2SshKeyLastUpdated     = Nothing
-    , _dhr2ServerCertUri         = Nothing
-    , _dhr2ServerCertLastUpdated = Nothing
-    , _dhr2Partitions            = mempty
-    }
-
--- | The Availability Zone that the HSM is in.
-dhr2AvailabilityZone :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2AvailabilityZone =
-    lens _dhr2AvailabilityZone (\s a -> s { _dhr2AvailabilityZone = a })
-
--- | The identifier of the elastic network interface (ENI) attached to the HSM.
-dhr2EniId :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2EniId = lens _dhr2EniId (\s a -> s { _dhr2EniId = a })
-
--- | The IP address assigned to the HSM's ENI.
-dhr2EniIp :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2EniIp = lens _dhr2EniIp (\s a -> s { _dhr2EniIp = a })
-
--- | The ARN of the HSM.
-dhr2HsmArn :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2HsmArn = lens _dhr2HsmArn (\s a -> s { _dhr2HsmArn = a })
-
--- | The HSM model type.
-dhr2HsmType :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2HsmType = lens _dhr2HsmType (\s a -> s { _dhr2HsmType = a })
-
--- | The ARN of the IAM role assigned to the HSM.
-dhr2IamRoleArn :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2IamRoleArn = lens _dhr2IamRoleArn (\s a -> s { _dhr2IamRoleArn = a })
-
--- | The list of partitions on the HSM.
-dhr2Partitions :: Lens' DescribeHsmResponse [Text]
-dhr2Partitions = lens _dhr2Partitions (\s a -> s { _dhr2Partitions = a }) . _List
-
--- | The serial number of the HSM.
-dhr2SerialNumber :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2SerialNumber = lens _dhr2SerialNumber (\s a -> s { _dhr2SerialNumber = a })
-
--- | The date and time the server certificate was last updated.
-dhr2ServerCertLastUpdated :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2ServerCertLastUpdated =
-    lens _dhr2ServerCertLastUpdated
-        (\s a -> s { _dhr2ServerCertLastUpdated = a })
-
--- | The URI of the certificate server.
-dhr2ServerCertUri :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2ServerCertUri =
-    lens _dhr2ServerCertUri (\s a -> s { _dhr2ServerCertUri = a })
-
--- | The HSM software version.
-dhr2SoftwareVersion :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2SoftwareVersion =
-    lens _dhr2SoftwareVersion (\s a -> s { _dhr2SoftwareVersion = a })
-
--- | The date and time the SSH key was last updated.
-dhr2SshKeyLastUpdated :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2SshKeyLastUpdated =
-    lens _dhr2SshKeyLastUpdated (\s a -> s { _dhr2SshKeyLastUpdated = a })
-
--- | The public SSH key.
-dhr2SshPublicKey :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2SshPublicKey = lens _dhr2SshPublicKey (\s a -> s { _dhr2SshPublicKey = a })
-
--- | The status of the HSM.
-dhr2Status :: Lens' DescribeHsmResponse (Maybe HsmStatus)
-dhr2Status = lens _dhr2Status (\s a -> s { _dhr2Status = a })
-
--- | Contains additional information about the status of the HSM.
-dhr2StatusDetails :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2StatusDetails =
-    lens _dhr2StatusDetails (\s a -> s { _dhr2StatusDetails = a })
-
--- | The identifier of the subnet the HSM is in.
-dhr2SubnetId :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2SubnetId = lens _dhr2SubnetId (\s a -> s { _dhr2SubnetId = a })
-
--- | The subscription end date.
-dhr2SubscriptionEndDate :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2SubscriptionEndDate =
-    lens _dhr2SubscriptionEndDate (\s a -> s { _dhr2SubscriptionEndDate = a })
-
--- | The subscription start date.
-dhr2SubscriptionStartDate :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2SubscriptionStartDate =
-    lens _dhr2SubscriptionStartDate
-        (\s a -> s { _dhr2SubscriptionStartDate = a })
-
--- | The subscription type.
-dhr2SubscriptionType :: Lens' DescribeHsmResponse (Maybe SubscriptionType)
-dhr2SubscriptionType =
-    lens _dhr2SubscriptionType (\s a -> s { _dhr2SubscriptionType = a })
-
--- | The name of the HSM vendor.
-dhr2VendorName :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2VendorName = lens _dhr2VendorName (\s a -> s { _dhr2VendorName = a })
-
--- | The identifier of the VPC that the HSM is in.
-dhr2VpcId :: Lens' DescribeHsmResponse (Maybe Text)
-dhr2VpcId = lens _dhr2VpcId (\s a -> s { _dhr2VpcId = a })
-
-instance ToPath DescribeHsm where
-    toPath = const "/"
-
-instance ToQuery DescribeHsm where
-    toQuery = const mempty
-
-instance ToHeaders DescribeHsm
-
-instance ToJSON DescribeHsm where
-    toJSON DescribeHsm{..} = object
-        [ "HsmArn"          .= _dh1HsmArn
-        , "HsmSerialNumber" .= _dh1HsmSerialNumber
-        ]
-
-instance AWSRequest DescribeHsm where
-    type Sv DescribeHsm = CloudHSM
-    type Rs DescribeHsm = DescribeHsmResponse
-
-    request  = post "DescribeHsm"
-    response = jsonResponse
-
-instance FromJSON DescribeHsmResponse where
-    parseJSON = withObject "DescribeHsmResponse" $ \o -> DescribeHsmResponse
-        <$> o .:? "AvailabilityZone"
-        <*> o .:? "EniId"
-        <*> o .:? "EniIp"
-        <*> o .:? "HsmArn"
-        <*> o .:? "HsmType"
-        <*> o .:? "IamRoleArn"
-        <*> o .:? "Partitions" .!= mempty
-        <*> o .:? "SerialNumber"
-        <*> o .:? "ServerCertLastUpdated"
-        <*> o .:? "ServerCertUri"
-        <*> o .:? "SoftwareVersion"
-        <*> o .:? "SshKeyLastUpdated"
-        <*> o .:? "SshPublicKey"
-        <*> o .:? "Status"
-        <*> o .:? "StatusDetails"
-        <*> o .:? "SubnetId"
-        <*> o .:? "SubscriptionEndDate"
-        <*> o .:? "SubscriptionStartDate"
-        <*> o .:? "SubscriptionType"
-        <*> o .:? "VendorName"
-        <*> o .:? "VpcId"
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
@@ -1,167 +1,179 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CloudHSM.DescribeLunaClient
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Retrieves information about an HSM client.
+-- Retrieves information about an HSM client.
 --
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_DescribeLunaClient.html>
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_DescribeLunaClient.html AWS API Reference> for DescribeLunaClient.
 module Network.AWS.CloudHSM.DescribeLunaClient
     (
-    -- * Request
-      DescribeLunaClient
-    -- ** Request constructor
-    , describeLunaClient
-    -- ** Request lenses
+    -- * Creating a Request
+      describeLunaClient
+    , DescribeLunaClient
+    -- * Request Lenses
+    , dlcClientARN
     , dlcCertificateFingerprint
-    , dlcClientArn
 
-    -- * Response
-    , DescribeLunaClientResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeLunaClientResponse
-    -- ** Response lenses
-    , dlcrCertificate
-    , dlcrCertificateFingerprint
-    , dlcrClientArn
-    , dlcrLabel
-    , dlcrLastModifiedTimestamp
+    , DescribeLunaClientResponse
+    -- * Response Lenses
+    , drsClientARN
+    , drsCertificateFingerprint
+    , drsLastModifiedTimestamp
+    , drsCertificate
+    , drsLabel
+    , drsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeLunaClient = DescribeLunaClient
-    { _dlcCertificateFingerprint :: Maybe Text
-    , _dlcClientArn              :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeLunaClient' smart constructor.
+data DescribeLunaClient = DescribeLunaClient'
+    { _dlcClientARN              :: !(Maybe Text)
+    , _dlcCertificateFingerprint :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeLunaClient' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeLunaClient' with the minimum fields required to make a request.
 --
--- * 'dlcCertificateFingerprint' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dlcClientArn' @::@ 'Maybe' 'Text'
+-- * 'dlcClientARN'
 --
-describeLunaClient :: DescribeLunaClient
-describeLunaClient = DescribeLunaClient
-    { _dlcClientArn              = Nothing
+-- * 'dlcCertificateFingerprint'
+describeLunaClient
+    :: DescribeLunaClient
+describeLunaClient =
+    DescribeLunaClient'
+    { _dlcClientARN = Nothing
     , _dlcCertificateFingerprint = Nothing
     }
 
+-- | The ARN of the client.
+dlcClientARN :: Lens' DescribeLunaClient (Maybe Text)
+dlcClientARN = lens _dlcClientARN (\ s a -> s{_dlcClientARN = a});
+
 -- | The certificate fingerprint.
 dlcCertificateFingerprint :: Lens' DescribeLunaClient (Maybe Text)
-dlcCertificateFingerprint =
-    lens _dlcCertificateFingerprint
-        (\s a -> s { _dlcCertificateFingerprint = a })
+dlcCertificateFingerprint = lens _dlcCertificateFingerprint (\ s a -> s{_dlcCertificateFingerprint = a});
 
--- | The ARN of the client.
-dlcClientArn :: Lens' DescribeLunaClient (Maybe Text)
-dlcClientArn = lens _dlcClientArn (\s a -> s { _dlcClientArn = a })
+instance AWSRequest DescribeLunaClient where
+        type Sv DescribeLunaClient = CloudHSM
+        type Rs DescribeLunaClient =
+             DescribeLunaClientResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeLunaClientResponse' <$>
+                   (x .?> "ClientArn") <*>
+                     (x .?> "CertificateFingerprint")
+                     <*> (x .?> "LastModifiedTimestamp")
+                     <*> (x .?> "Certificate")
+                     <*> (x .?> "Label")
+                     <*> (pure (fromEnum s)))
 
-data DescribeLunaClientResponse = DescribeLunaClientResponse
-    { _dlcrCertificate            :: Maybe Text
-    , _dlcrCertificateFingerprint :: Maybe Text
-    , _dlcrClientArn              :: Maybe Text
-    , _dlcrLabel                  :: Maybe Text
-    , _dlcrLastModifiedTimestamp  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+instance ToHeaders DescribeLunaClient where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.DescribeLunaClient" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | 'DescribeLunaClientResponse' constructor.
+instance ToJSON DescribeLunaClient where
+        toJSON DescribeLunaClient'{..}
+          = object
+              ["ClientArn" .= _dlcClientARN,
+               "CertificateFingerprint" .=
+                 _dlcCertificateFingerprint]
+
+instance ToPath DescribeLunaClient where
+        toPath = const "/"
+
+instance ToQuery DescribeLunaClient where
+        toQuery = const mempty
+
+-- | /See:/ 'describeLunaClientResponse' smart constructor.
+data DescribeLunaClientResponse = DescribeLunaClientResponse'
+    { _drsClientARN              :: !(Maybe Text)
+    , _drsCertificateFingerprint :: !(Maybe Text)
+    , _drsLastModifiedTimestamp  :: !(Maybe Text)
+    , _drsCertificate            :: !(Maybe Text)
+    , _drsLabel                  :: !(Maybe Text)
+    , _drsStatus                 :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeLunaClientResponse' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dlcrCertificate' @::@ 'Maybe' 'Text'
+-- * 'drsClientARN'
 --
--- * 'dlcrCertificateFingerprint' @::@ 'Maybe' 'Text'
+-- * 'drsCertificateFingerprint'
 --
--- * 'dlcrClientArn' @::@ 'Maybe' 'Text'
+-- * 'drsLastModifiedTimestamp'
 --
--- * 'dlcrLabel' @::@ 'Maybe' 'Text'
+-- * 'drsCertificate'
 --
--- * 'dlcrLastModifiedTimestamp' @::@ 'Maybe' 'Text'
+-- * 'drsLabel'
 --
-describeLunaClientResponse :: DescribeLunaClientResponse
-describeLunaClientResponse = DescribeLunaClientResponse
-    { _dlcrClientArn              = Nothing
-    , _dlcrCertificate            = Nothing
-    , _dlcrCertificateFingerprint = Nothing
-    , _dlcrLastModifiedTimestamp  = Nothing
-    , _dlcrLabel                  = Nothing
+-- * 'drsStatus'
+describeLunaClientResponse
+    :: Int -- ^ 'drsStatus'
+    -> DescribeLunaClientResponse
+describeLunaClientResponse pStatus_ =
+    DescribeLunaClientResponse'
+    { _drsClientARN = Nothing
+    , _drsCertificateFingerprint = Nothing
+    , _drsLastModifiedTimestamp = Nothing
+    , _drsCertificate = Nothing
+    , _drsLabel = Nothing
+    , _drsStatus = pStatus_
     }
 
--- | The certificate installed on the HSMs used by this client.
-dlcrCertificate :: Lens' DescribeLunaClientResponse (Maybe Text)
-dlcrCertificate = lens _dlcrCertificate (\s a -> s { _dlcrCertificate = a })
-
--- | The certificate fingerprint.
-dlcrCertificateFingerprint :: Lens' DescribeLunaClientResponse (Maybe Text)
-dlcrCertificateFingerprint =
-    lens _dlcrCertificateFingerprint
-        (\s a -> s { _dlcrCertificateFingerprint = a })
-
 -- | The ARN of the client.
-dlcrClientArn :: Lens' DescribeLunaClientResponse (Maybe Text)
-dlcrClientArn = lens _dlcrClientArn (\s a -> s { _dlcrClientArn = a })
+drsClientARN :: Lens' DescribeLunaClientResponse (Maybe Text)
+drsClientARN = lens _drsClientARN (\ s a -> s{_drsClientARN = a});
 
--- | The label of the client.
-dlcrLabel :: Lens' DescribeLunaClientResponse (Maybe Text)
-dlcrLabel = lens _dlcrLabel (\s a -> s { _dlcrLabel = a })
+-- | The certificate fingerprint.
+drsCertificateFingerprint :: Lens' DescribeLunaClientResponse (Maybe Text)
+drsCertificateFingerprint = lens _drsCertificateFingerprint (\ s a -> s{_drsCertificateFingerprint = a});
 
 -- | The date and time the client was last modified.
-dlcrLastModifiedTimestamp :: Lens' DescribeLunaClientResponse (Maybe Text)
-dlcrLastModifiedTimestamp =
-    lens _dlcrLastModifiedTimestamp
-        (\s a -> s { _dlcrLastModifiedTimestamp = a })
-
-instance ToPath DescribeLunaClient where
-    toPath = const "/"
-
-instance ToQuery DescribeLunaClient where
-    toQuery = const mempty
-
-instance ToHeaders DescribeLunaClient
-
-instance ToJSON DescribeLunaClient where
-    toJSON DescribeLunaClient{..} = object
-        [ "ClientArn"              .= _dlcClientArn
-        , "CertificateFingerprint" .= _dlcCertificateFingerprint
-        ]
+drsLastModifiedTimestamp :: Lens' DescribeLunaClientResponse (Maybe Text)
+drsLastModifiedTimestamp = lens _drsLastModifiedTimestamp (\ s a -> s{_drsLastModifiedTimestamp = a});
 
-instance AWSRequest DescribeLunaClient where
-    type Sv DescribeLunaClient = CloudHSM
-    type Rs DescribeLunaClient = DescribeLunaClientResponse
+-- | The certificate installed on the HSMs used by this client.
+drsCertificate :: Lens' DescribeLunaClientResponse (Maybe Text)
+drsCertificate = lens _drsCertificate (\ s a -> s{_drsCertificate = a});
 
-    request  = post "DescribeLunaClient"
-    response = jsonResponse
+-- | The label of the client.
+drsLabel :: Lens' DescribeLunaClientResponse (Maybe Text)
+drsLabel = lens _drsLabel (\ s a -> s{_drsLabel = a});
 
-instance FromJSON DescribeLunaClientResponse where
-    parseJSON = withObject "DescribeLunaClientResponse" $ \o -> DescribeLunaClientResponse
-        <$> o .:? "Certificate"
-        <*> o .:? "CertificateFingerprint"
-        <*> o .:? "ClientArn"
-        <*> o .:? "Label"
-        <*> o .:? "LastModifiedTimestamp"
+-- | The response status code.
+drsStatus :: Lens' DescribeLunaClientResponse Int
+drsStatus = lens _drsStatus (\ s a -> s{_drsStatus = a});
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
@@ -1,155 +1,169 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CloudHSM.GetConfig
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Gets the configuration files necessary to connect to all high availability
--- partition groups the client is associated with.
+-- Gets the configuration files necessary to connect to all high
+-- availability partition groups the client is associated with.
 --
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_GetConfig.html>
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_GetConfig.html AWS API Reference> for GetConfig.
 module Network.AWS.CloudHSM.GetConfig
     (
-    -- * Request
-      GetConfig
-    -- ** Request constructor
-    , getConfig
-    -- ** Request lenses
-    , gcClientArn
+    -- * Creating a Request
+      getConfig
+    , GetConfig
+    -- * Request Lenses
+    , gcClientARN
     , gcClientVersion
-    , gcHapgList
+    , gcHAPGList
 
-    -- * Response
-    , GetConfigResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getConfigResponse
-    -- ** Response lenses
-    , gcrConfigCred
-    , gcrConfigFile
-    , gcrConfigType
+    , GetConfigResponse
+    -- * Response Lenses
+    , gcrsConfigFile
+    , gcrsConfigCred
+    , gcrsConfigType
+    , gcrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data GetConfig = GetConfig
-    { _gcClientArn     :: Text
-    , _gcClientVersion :: ClientVersion
-    , _gcHapgList      :: List "HapgList" Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'getConfig' smart constructor.
+data GetConfig = GetConfig'
+    { _gcClientARN     :: !Text
+    , _gcClientVersion :: !ClientVersion
+    , _gcHAPGList      :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'GetConfig' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'GetConfig' with the minimum fields required to make a request.
 --
--- * 'gcClientArn' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gcClientVersion' @::@ 'ClientVersion'
+-- * 'gcClientARN'
 --
--- * 'gcHapgList' @::@ ['Text']
+-- * 'gcClientVersion'
 --
-getConfig :: Text -- ^ 'gcClientArn'
-          -> ClientVersion -- ^ 'gcClientVersion'
-          -> GetConfig
-getConfig p1 p2 = GetConfig
-    { _gcClientArn     = p1
-    , _gcClientVersion = p2
-    , _gcHapgList      = mempty
+-- * 'gcHAPGList'
+getConfig
+    :: Text -- ^ 'gcClientARN'
+    -> ClientVersion -- ^ 'gcClientVersion'
+    -> GetConfig
+getConfig pClientARN_ pClientVersion_ =
+    GetConfig'
+    { _gcClientARN = pClientARN_
+    , _gcClientVersion = pClientVersion_
+    , _gcHAPGList = mempty
     }
 
 -- | The ARN of the client.
-gcClientArn :: Lens' GetConfig Text
-gcClientArn = lens _gcClientArn (\s a -> s { _gcClientArn = a })
+gcClientARN :: Lens' GetConfig Text
+gcClientARN = lens _gcClientARN (\ s a -> s{_gcClientARN = a});
 
 -- | The client version.
 gcClientVersion :: Lens' GetConfig ClientVersion
-gcClientVersion = lens _gcClientVersion (\s a -> s { _gcClientVersion = a })
+gcClientVersion = lens _gcClientVersion (\ s a -> s{_gcClientVersion = a});
 
--- | A list of ARNs that identify the high-availability partition groups that are
--- associated with the client.
-gcHapgList :: Lens' GetConfig [Text]
-gcHapgList = lens _gcHapgList (\s a -> s { _gcHapgList = a }) . _List
+-- | A list of ARNs that identify the high-availability partition groups that
+-- are associated with the client.
+gcHAPGList :: Lens' GetConfig [Text]
+gcHAPGList = lens _gcHAPGList (\ s a -> s{_gcHAPGList = a}) . _Coerce;
 
-data GetConfigResponse = GetConfigResponse
-    { _gcrConfigCred :: Maybe Text
-    , _gcrConfigFile :: Maybe Text
-    , _gcrConfigType :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+instance AWSRequest GetConfig where
+        type Sv GetConfig = CloudHSM
+        type Rs GetConfig = GetConfigResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetConfigResponse' <$>
+                   (x .?> "ConfigFile") <*> (x .?> "ConfigCred") <*>
+                     (x .?> "ConfigType")
+                     <*> (pure (fromEnum s)))
 
--- | 'GetConfigResponse' constructor.
+instance ToHeaders GetConfig where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.GetConfig" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON GetConfig where
+        toJSON GetConfig'{..}
+          = object
+              ["ClientArn" .= _gcClientARN,
+               "ClientVersion" .= _gcClientVersion,
+               "HapgList" .= _gcHAPGList]
+
+instance ToPath GetConfig where
+        toPath = const "/"
+
+instance ToQuery GetConfig where
+        toQuery = const mempty
+
+-- | /See:/ 'getConfigResponse' smart constructor.
+data GetConfigResponse = GetConfigResponse'
+    { _gcrsConfigFile :: !(Maybe Text)
+    , _gcrsConfigCred :: !(Maybe Text)
+    , _gcrsConfigType :: !(Maybe Text)
+    , _gcrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetConfigResponse' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gcrConfigCred' @::@ 'Maybe' 'Text'
+-- * 'gcrsConfigFile'
 --
--- * 'gcrConfigFile' @::@ 'Maybe' 'Text'
+-- * 'gcrsConfigCred'
 --
--- * 'gcrConfigType' @::@ 'Maybe' 'Text'
+-- * 'gcrsConfigType'
 --
-getConfigResponse :: GetConfigResponse
-getConfigResponse = GetConfigResponse
-    { _gcrConfigType = Nothing
-    , _gcrConfigFile = Nothing
-    , _gcrConfigCred = Nothing
+-- * 'gcrsStatus'
+getConfigResponse
+    :: Int -- ^ 'gcrsStatus'
+    -> GetConfigResponse
+getConfigResponse pStatus_ =
+    GetConfigResponse'
+    { _gcrsConfigFile = Nothing
+    , _gcrsConfigCred = Nothing
+    , _gcrsConfigType = Nothing
+    , _gcrsStatus = pStatus_
     }
 
--- | The certificate file containing the server.pem files of the HSMs.
-gcrConfigCred :: Lens' GetConfigResponse (Maybe Text)
-gcrConfigCred = lens _gcrConfigCred (\s a -> s { _gcrConfigCred = a })
-
 -- | The chrystoki.conf configuration file.
-gcrConfigFile :: Lens' GetConfigResponse (Maybe Text)
-gcrConfigFile = lens _gcrConfigFile (\s a -> s { _gcrConfigFile = a })
-
--- | The type of credentials.
-gcrConfigType :: Lens' GetConfigResponse (Maybe Text)
-gcrConfigType = lens _gcrConfigType (\s a -> s { _gcrConfigType = a })
-
-instance ToPath GetConfig where
-    toPath = const "/"
-
-instance ToQuery GetConfig where
-    toQuery = const mempty
-
-instance ToHeaders GetConfig
-
-instance ToJSON GetConfig where
-    toJSON GetConfig{..} = object
-        [ "ClientArn"     .= _gcClientArn
-        , "ClientVersion" .= _gcClientVersion
-        , "HapgList"      .= _gcHapgList
-        ]
+gcrsConfigFile :: Lens' GetConfigResponse (Maybe Text)
+gcrsConfigFile = lens _gcrsConfigFile (\ s a -> s{_gcrsConfigFile = a});
 
-instance AWSRequest GetConfig where
-    type Sv GetConfig = CloudHSM
-    type Rs GetConfig = GetConfigResponse
+-- | The certificate file containing the server.pem files of the HSMs.
+gcrsConfigCred :: Lens' GetConfigResponse (Maybe Text)
+gcrsConfigCred = lens _gcrsConfigCred (\ s a -> s{_gcrsConfigCred = a});
 
-    request  = post "GetConfig"
-    response = jsonResponse
+-- | The type of credentials.
+gcrsConfigType :: Lens' GetConfigResponse (Maybe Text)
+gcrsConfigType = lens _gcrsConfigType (\ s a -> s{_gcrsConfigType = a});
 
-instance FromJSON GetConfigResponse where
-    parseJSON = withObject "GetConfigResponse" $ \o -> GetConfigResponse
-        <$> o .:? "ConfigCred"
-        <*> o .:? "ConfigFile"
-        <*> o .:? "ConfigType"
+-- | The response status code.
+gcrsStatus :: Lens' GetConfigResponse Int
+gcrsStatus = lens _gcrsStatus (\ s a -> s{_gcrsStatus = a});
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
@@ -1,101 +1,116 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CloudHSM.ListAvailableZones
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Lists the Availability Zones that have available AWS CloudHSM capacity.
+-- Lists the Availability Zones that have available AWS CloudHSM capacity.
 --
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_ListAvailableZones.html>
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_ListAvailableZones.html AWS API Reference> for ListAvailableZones.
 module Network.AWS.CloudHSM.ListAvailableZones
     (
-    -- * Request
-      ListAvailableZones
-    -- ** Request constructor
-    , listAvailableZones
+    -- * Creating a Request
+      listAvailableZones
+    , ListAvailableZones
 
-    -- * Response
-    , ListAvailableZonesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listAvailableZonesResponse
-    -- ** Response lenses
-    , lazrAZList
+    , ListAvailableZonesResponse
+    -- * Response Lenses
+    , lazrsAZList
+    , lazrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
-
-data ListAvailableZones = ListAvailableZones
-    deriving (Eq, Ord, Read, Show, Generic)
-
--- | 'ListAvailableZones' constructor.
-listAvailableZones :: ListAvailableZones
-listAvailableZones = ListAvailableZones
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype ListAvailableZonesResponse = ListAvailableZonesResponse
-    { _lazrAZList :: List "AZList" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
+-- | Contains the inputs for the ListAvailableZones action.
+--
+-- /See:/ 'listAvailableZones' smart constructor.
+data ListAvailableZones =
+    ListAvailableZones'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance GHC.Exts.IsList ListAvailableZonesResponse where
-    type Item ListAvailableZonesResponse = Text
+-- | Creates a value of 'ListAvailableZones' with the minimum fields required to make a request.
+--
+listAvailableZones
+    :: ListAvailableZones
+listAvailableZones = ListAvailableZones'
 
-    fromList = ListAvailableZonesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _lazrAZList
+instance AWSRequest ListAvailableZones where
+        type Sv ListAvailableZones = CloudHSM
+        type Rs ListAvailableZones =
+             ListAvailableZonesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListAvailableZonesResponse' <$>
+                   (x .?> "AZList" .!@ mempty) <*> (pure (fromEnum s)))
 
--- | 'ListAvailableZonesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lazrAZList' @::@ ['Text']
---
-listAvailableZonesResponse :: ListAvailableZonesResponse
-listAvailableZonesResponse = ListAvailableZonesResponse
-    { _lazrAZList = mempty
-    }
+instance ToHeaders ListAvailableZones where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.ListAvailableZones" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The list of Availability Zones that have available AWS CloudHSM capacity.
-lazrAZList :: Lens' ListAvailableZonesResponse [Text]
-lazrAZList = lens _lazrAZList (\s a -> s { _lazrAZList = a }) . _List
+instance ToJSON ListAvailableZones where
+        toJSON = const (Object mempty)
 
 instance ToPath ListAvailableZones where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ListAvailableZones where
-    toQuery = const mempty
-
-instance ToHeaders ListAvailableZones
+        toQuery = const mempty
 
-instance ToJSON ListAvailableZones where
-    toJSON = const (toJSON Empty)
+-- | /See:/ 'listAvailableZonesResponse' smart constructor.
+data ListAvailableZonesResponse = ListAvailableZonesResponse'
+    { _lazrsAZList :: !(Maybe [Text])
+    , _lazrsStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ListAvailableZones where
-    type Sv ListAvailableZones = CloudHSM
-    type Rs ListAvailableZones = ListAvailableZonesResponse
+-- | Creates a value of 'ListAvailableZonesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lazrsAZList'
+--
+-- * 'lazrsStatus'
+listAvailableZonesResponse
+    :: Int -- ^ 'lazrsStatus'
+    -> ListAvailableZonesResponse
+listAvailableZonesResponse pStatus_ =
+    ListAvailableZonesResponse'
+    { _lazrsAZList = Nothing
+    , _lazrsStatus = pStatus_
+    }
 
-    request  = post "ListAvailableZones"
-    response = jsonResponse
+-- | The list of Availability Zones that have available AWS CloudHSM
+-- capacity.
+lazrsAZList :: Lens' ListAvailableZonesResponse [Text]
+lazrsAZList = lens _lazrsAZList (\ s a -> s{_lazrsAZList = a}) . _Default . _Coerce;
 
-instance FromJSON ListAvailableZonesResponse where
-    parseJSON = withObject "ListAvailableZonesResponse" $ \o -> ListAvailableZonesResponse
-        <$> o .:? "AZList" .!= mempty
+-- | The response status code.
+lazrsStatus :: Lens' ListAvailableZonesResponse Int
+lazrsStatus = lens _lazrsStatus (\ s a -> s{_lazrsStatus = a});
diff --git a/gen/Network/AWS/CloudHSM/ListHAPGs.hs b/gen/Network/AWS/CloudHSM/ListHAPGs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudHSM/ListHAPGs.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudHSM.ListHAPGs
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the high-availability partition groups for the account.
+--
+-- This operation supports pagination with the use of the /NextToken/
+-- member. If more results are available, the /NextToken/ member of the
+-- response contains a token that you pass in the next call to ListHapgs to
+-- retrieve the next set of items.
+--
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_ListHAPGs.html AWS API Reference> for ListHAPGs.
+module Network.AWS.CloudHSM.ListHAPGs
+    (
+    -- * Creating a Request
+      listHAPGs
+    , ListHAPGs
+    -- * Request Lenses
+    , lhNextToken
+
+    -- * Destructuring the Response
+    , listHAPGsResponse
+    , ListHAPGsResponse
+    -- * Response Lenses
+    , lhrsNextToken
+    , lhrsStatus
+    , lhrsHAPGList
+    ) where
+
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'listHAPGs' smart constructor.
+newtype ListHAPGs = ListHAPGs'
+    { _lhNextToken :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListHAPGs' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lhNextToken'
+listHAPGs
+    :: ListHAPGs
+listHAPGs =
+    ListHAPGs'
+    { _lhNextToken = Nothing
+    }
+
+-- | The /NextToken/ value from a previous call to ListHapgs. Pass null if
+-- this is the first call.
+lhNextToken :: Lens' ListHAPGs (Maybe Text)
+lhNextToken = lens _lhNextToken (\ s a -> s{_lhNextToken = a});
+
+instance AWSRequest ListHAPGs where
+        type Sv ListHAPGs = CloudHSM
+        type Rs ListHAPGs = ListHAPGsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListHAPGsResponse' <$>
+                   (x .?> "NextToken") <*> (pure (fromEnum s)) <*>
+                     (x .?> "HapgList" .!@ mempty))
+
+instance ToHeaders ListHAPGs where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.ListHapgs" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListHAPGs where
+        toJSON ListHAPGs'{..}
+          = object ["NextToken" .= _lhNextToken]
+
+instance ToPath ListHAPGs where
+        toPath = const "/"
+
+instance ToQuery ListHAPGs where
+        toQuery = const mempty
+
+-- | /See:/ 'listHAPGsResponse' smart constructor.
+data ListHAPGsResponse = ListHAPGsResponse'
+    { _lhrsNextToken :: !(Maybe Text)
+    , _lhrsStatus    :: !Int
+    , _lhrsHAPGList  :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListHAPGsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lhrsNextToken'
+--
+-- * 'lhrsStatus'
+--
+-- * 'lhrsHAPGList'
+listHAPGsResponse
+    :: Int -- ^ 'lhrsStatus'
+    -> ListHAPGsResponse
+listHAPGsResponse pStatus_ =
+    ListHAPGsResponse'
+    { _lhrsNextToken = Nothing
+    , _lhrsStatus = pStatus_
+    , _lhrsHAPGList = mempty
+    }
+
+-- | If not null, more results are available. Pass this value to ListHapgs to
+-- retrieve the next set of items.
+lhrsNextToken :: Lens' ListHAPGsResponse (Maybe Text)
+lhrsNextToken = lens _lhrsNextToken (\ s a -> s{_lhrsNextToken = a});
+
+-- | The response status code.
+lhrsStatus :: Lens' ListHAPGsResponse Int
+lhrsStatus = lens _lhrsStatus (\ s a -> s{_lhrsStatus = a});
+
+-- | The list of high-availability partition groups.
+lhrsHAPGList :: Lens' ListHAPGsResponse [Text]
+lhrsHAPGList = lens _lhrsHAPGList (\ s a -> s{_lhrsHAPGList = a}) . _Coerce;
diff --git a/gen/Network/AWS/CloudHSM/ListHSMs.hs b/gen/Network/AWS/CloudHSM/ListHSMs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudHSM/ListHSMs.hs
@@ -0,0 +1,144 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudHSM.ListHSMs
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the identifiers of all of the HSMs provisioned for the current
+-- customer.
+--
+-- This operation supports pagination with the use of the /NextToken/
+-- member. If more results are available, the /NextToken/ member of the
+-- response contains a token that you pass in the next call to ListHsms to
+-- retrieve the next set of items.
+--
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_ListHSMs.html AWS API Reference> for ListHSMs.
+module Network.AWS.CloudHSM.ListHSMs
+    (
+    -- * Creating a Request
+      listHSMs
+    , ListHSMs
+    -- * Request Lenses
+    , lhsmNextToken
+
+    -- * Destructuring the Response
+    , listHSMsResponse
+    , ListHSMsResponse
+    -- * Response Lenses
+    , lhsmrsNextToken
+    , lhsmrsHSMList
+    , lhsmrsStatus
+    ) where
+
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'listHSMs' smart constructor.
+newtype ListHSMs = ListHSMs'
+    { _lhsmNextToken :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListHSMs' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lhsmNextToken'
+listHSMs
+    :: ListHSMs
+listHSMs =
+    ListHSMs'
+    { _lhsmNextToken = Nothing
+    }
+
+-- | The /NextToken/ value from a previous call to ListHsms. Pass null if
+-- this is the first call.
+lhsmNextToken :: Lens' ListHSMs (Maybe Text)
+lhsmNextToken = lens _lhsmNextToken (\ s a -> s{_lhsmNextToken = a});
+
+instance AWSRequest ListHSMs where
+        type Sv ListHSMs = CloudHSM
+        type Rs ListHSMs = ListHSMsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListHSMsResponse' <$>
+                   (x .?> "NextToken") <*> (x .?> "HsmList" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListHSMs where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.ListHsms" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListHSMs where
+        toJSON ListHSMs'{..}
+          = object ["NextToken" .= _lhsmNextToken]
+
+instance ToPath ListHSMs where
+        toPath = const "/"
+
+instance ToQuery ListHSMs where
+        toQuery = const mempty
+
+-- | Contains the output of the ListHsms action.
+--
+-- /See:/ 'listHSMsResponse' smart constructor.
+data ListHSMsResponse = ListHSMsResponse'
+    { _lhsmrsNextToken :: !(Maybe Text)
+    , _lhsmrsHSMList   :: !(Maybe [Text])
+    , _lhsmrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListHSMsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lhsmrsNextToken'
+--
+-- * 'lhsmrsHSMList'
+--
+-- * 'lhsmrsStatus'
+listHSMsResponse
+    :: Int -- ^ 'lhsmrsStatus'
+    -> ListHSMsResponse
+listHSMsResponse pStatus_ =
+    ListHSMsResponse'
+    { _lhsmrsNextToken = Nothing
+    , _lhsmrsHSMList = Nothing
+    , _lhsmrsStatus = pStatus_
+    }
+
+-- | If not null, more results are available. Pass this value to ListHsms to
+-- retrieve the next set of items.
+lhsmrsNextToken :: Lens' ListHSMsResponse (Maybe Text)
+lhsmrsNextToken = lens _lhsmrsNextToken (\ s a -> s{_lhsmrsNextToken = a});
+
+-- | The list of ARNs that identify the HSMs.
+lhsmrsHSMList :: Lens' ListHSMsResponse [Text]
+lhsmrsHSMList = lens _lhsmrsHSMList (\ s a -> s{_lhsmrsHSMList = a}) . _Default . _Coerce;
+
+-- | The response status code.
+lhsmrsStatus :: Lens' ListHSMsResponse Int
+lhsmrsStatus = lens _lhsmrsStatus (\ s a -> s{_lhsmrsStatus = a});
diff --git a/gen/Network/AWS/CloudHSM/ListHapgs.hs b/gen/Network/AWS/CloudHSM/ListHapgs.hs
deleted file mode 100644
--- a/gen/Network/AWS/CloudHSM/ListHapgs.hs
+++ /dev/null
@@ -1,128 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.CloudHSM.ListHapgs
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Lists the high-availability partition groups for the account.
---
--- This operation supports pagination with the use of the /NextToken/ member. If
--- more results are available, the /NextToken/ member of the response contains a
--- token that you pass in the next call to 'ListHapgs' to retrieve the next set of
--- items.
---
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_ListHapgs.html>
-module Network.AWS.CloudHSM.ListHapgs
-    (
-    -- * Request
-      ListHapgs
-    -- ** Request constructor
-    , listHapgs
-    -- ** Request lenses
-    , lhNextToken
-
-    -- * Response
-    , ListHapgsResponse
-    -- ** Response constructor
-    , listHapgsResponse
-    -- ** Response lenses
-    , lhr1HapgList
-    , lhr1NextToken
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
-
-newtype ListHapgs = ListHapgs
-    { _lhNextToken :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'ListHapgs' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lhNextToken' @::@ 'Maybe' 'Text'
---
-listHapgs :: ListHapgs
-listHapgs = ListHapgs
-    { _lhNextToken = Nothing
-    }
-
--- | The /NextToken/ value from a previous call to 'ListHapgs'. Pass null if this is
--- the first call.
-lhNextToken :: Lens' ListHapgs (Maybe Text)
-lhNextToken = lens _lhNextToken (\s a -> s { _lhNextToken = a })
-
-data ListHapgsResponse = ListHapgsResponse
-    { _lhr1HapgList  :: List "HapgList" Text
-    , _lhr1NextToken :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ListHapgsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lhr1HapgList' @::@ ['Text']
---
--- * 'lhr1NextToken' @::@ 'Maybe' 'Text'
---
-listHapgsResponse :: ListHapgsResponse
-listHapgsResponse = ListHapgsResponse
-    { _lhr1HapgList  = mempty
-    , _lhr1NextToken = Nothing
-    }
-
--- | The list of high-availability partition groups.
-lhr1HapgList :: Lens' ListHapgsResponse [Text]
-lhr1HapgList = lens _lhr1HapgList (\s a -> s { _lhr1HapgList = a }) . _List
-
--- | If not null, more results are available. Pass this value to 'ListHapgs' to
--- retrieve the next set of items.
-lhr1NextToken :: Lens' ListHapgsResponse (Maybe Text)
-lhr1NextToken = lens _lhr1NextToken (\s a -> s { _lhr1NextToken = a })
-
-instance ToPath ListHapgs where
-    toPath = const "/"
-
-instance ToQuery ListHapgs where
-    toQuery = const mempty
-
-instance ToHeaders ListHapgs
-
-instance ToJSON ListHapgs where
-    toJSON ListHapgs{..} = object
-        [ "NextToken" .= _lhNextToken
-        ]
-
-instance AWSRequest ListHapgs where
-    type Sv ListHapgs = CloudHSM
-    type Rs ListHapgs = ListHapgsResponse
-
-    request  = post "ListHapgs"
-    response = jsonResponse
-
-instance FromJSON ListHapgsResponse where
-    parseJSON = withObject "ListHapgsResponse" $ \o -> ListHapgsResponse
-        <$> o .:? "HapgList" .!= mempty
-        <*> o .:? "NextToken"
diff --git a/gen/Network/AWS/CloudHSM/ListHsms.hs b/gen/Network/AWS/CloudHSM/ListHsms.hs
deleted file mode 100644
--- a/gen/Network/AWS/CloudHSM/ListHsms.hs
+++ /dev/null
@@ -1,129 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.CloudHSM.ListHsms
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Retrieves the identifiers of all of the HSMs provisioned for the current
--- customer.
---
--- This operation supports pagination with the use of the /NextToken/ member. If
--- more results are available, the /NextToken/ member of the response contains a
--- token that you pass in the next call to 'ListHsms' to retrieve the next set of
--- items.
---
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_ListHsms.html>
-module Network.AWS.CloudHSM.ListHsms
-    (
-    -- * Request
-      ListHsms
-    -- ** Request constructor
-    , listHsms
-    -- ** Request lenses
-    , lh1NextToken
-
-    -- * Response
-    , ListHsmsResponse
-    -- ** Response constructor
-    , listHsmsResponse
-    -- ** Response lenses
-    , lhrHsmList
-    , lhrNextToken
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
-
-newtype ListHsms = ListHsms
-    { _lh1NextToken :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'ListHsms' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lh1NextToken' @::@ 'Maybe' 'Text'
---
-listHsms :: ListHsms
-listHsms = ListHsms
-    { _lh1NextToken = Nothing
-    }
-
--- | The /NextToken/ value from a previous call to 'ListHsms'. Pass null if this is
--- the first call.
-lh1NextToken :: Lens' ListHsms (Maybe Text)
-lh1NextToken = lens _lh1NextToken (\s a -> s { _lh1NextToken = a })
-
-data ListHsmsResponse = ListHsmsResponse
-    { _lhrHsmList   :: List "HsmList" Text
-    , _lhrNextToken :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ListHsmsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lhrHsmList' @::@ ['Text']
---
--- * 'lhrNextToken' @::@ 'Maybe' 'Text'
---
-listHsmsResponse :: ListHsmsResponse
-listHsmsResponse = ListHsmsResponse
-    { _lhrHsmList   = mempty
-    , _lhrNextToken = Nothing
-    }
-
--- | The list of ARNs that identify the HSMs.
-lhrHsmList :: Lens' ListHsmsResponse [Text]
-lhrHsmList = lens _lhrHsmList (\s a -> s { _lhrHsmList = a }) . _List
-
--- | If not null, more results are available. Pass this value to 'ListHsms' to
--- retrieve the next set of items.
-lhrNextToken :: Lens' ListHsmsResponse (Maybe Text)
-lhrNextToken = lens _lhrNextToken (\s a -> s { _lhrNextToken = a })
-
-instance ToPath ListHsms where
-    toPath = const "/"
-
-instance ToQuery ListHsms where
-    toQuery = const mempty
-
-instance ToHeaders ListHsms
-
-instance ToJSON ListHsms where
-    toJSON ListHsms{..} = object
-        [ "NextToken" .= _lh1NextToken
-        ]
-
-instance AWSRequest ListHsms where
-    type Sv ListHsms = CloudHSM
-    type Rs ListHsms = ListHsmsResponse
-
-    request  = post "ListHsms"
-    response = jsonResponse
-
-instance FromJSON ListHsmsResponse where
-    parseJSON = withObject "ListHsmsResponse" $ \o -> ListHsmsResponse
-        <$> o .:? "HsmList" .!= mempty
-        <*> o .:? "NextToken"
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
@@ -1,128 +1,142 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CloudHSM.ListLunaClients
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Lists all of the clients.
+-- Lists all of the clients.
 --
--- This operation supports pagination with the use of the /NextToken/ member. If
--- more results are available, the /NextToken/ member of the response contains a
--- token that you pass in the next call to 'ListLunaClients' to retrieve the next
--- set of items.
+-- This operation supports pagination with the use of the /NextToken/
+-- member. If more results are available, the /NextToken/ member of the
+-- response contains a token that you pass in the next call to
+-- ListLunaClients to retrieve the next set of items.
 --
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_ListLunaClients.html>
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_ListLunaClients.html AWS API Reference> for ListLunaClients.
 module Network.AWS.CloudHSM.ListLunaClients
     (
-    -- * Request
-      ListLunaClients
-    -- ** Request constructor
-    , listLunaClients
-    -- ** Request lenses
+    -- * Creating a Request
+      listLunaClients
+    , ListLunaClients
+    -- * Request Lenses
     , llcNextToken
 
-    -- * Response
-    , ListLunaClientsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listLunaClientsResponse
-    -- ** Response lenses
-    , llcrClientList
-    , llcrNextToken
+    , ListLunaClientsResponse
+    -- * Response Lenses
+    , llcrsNextToken
+    , llcrsStatus
+    , llcrsClientList
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype ListLunaClients = ListLunaClients
+-- | /See:/ 'listLunaClients' smart constructor.
+newtype ListLunaClients = ListLunaClients'
     { _llcNextToken :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ListLunaClients' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'ListLunaClients' with the minimum fields required to make a request.
 --
--- * 'llcNextToken' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-listLunaClients :: ListLunaClients
-listLunaClients = ListLunaClients
+-- * 'llcNextToken'
+listLunaClients
+    :: ListLunaClients
+listLunaClients =
+    ListLunaClients'
     { _llcNextToken = Nothing
     }
 
--- | The /NextToken/ value from a previous call to 'ListLunaClients'. Pass null if
--- this is the first call.
+-- | The /NextToken/ value from a previous call to ListLunaClients. Pass null
+-- if this is the first call.
 llcNextToken :: Lens' ListLunaClients (Maybe Text)
-llcNextToken = lens _llcNextToken (\s a -> s { _llcNextToken = a })
-
-data ListLunaClientsResponse = ListLunaClientsResponse
-    { _llcrClientList :: List "ClientList" Text
-    , _llcrNextToken  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+llcNextToken = lens _llcNextToken (\ s a -> s{_llcNextToken = a});
 
--- | 'ListLunaClientsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'llcrClientList' @::@ ['Text']
---
--- * 'llcrNextToken' @::@ 'Maybe' 'Text'
---
-listLunaClientsResponse :: ListLunaClientsResponse
-listLunaClientsResponse = ListLunaClientsResponse
-    { _llcrClientList = mempty
-    , _llcrNextToken  = Nothing
-    }
+instance AWSRequest ListLunaClients where
+        type Sv ListLunaClients = CloudHSM
+        type Rs ListLunaClients = ListLunaClientsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListLunaClientsResponse' <$>
+                   (x .?> "NextToken") <*> (pure (fromEnum s)) <*>
+                     (x .?> "ClientList" .!@ mempty))
 
--- | The list of clients.
-llcrClientList :: Lens' ListLunaClientsResponse [Text]
-llcrClientList = lens _llcrClientList (\s a -> s { _llcrClientList = a }) . _List
+instance ToHeaders ListLunaClients where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.ListLunaClients" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | If not null, more results are available. Pass this to 'ListLunaClients' to
--- retrieve the next set of items.
-llcrNextToken :: Lens' ListLunaClientsResponse (Maybe Text)
-llcrNextToken = lens _llcrNextToken (\s a -> s { _llcrNextToken = a })
+instance ToJSON ListLunaClients where
+        toJSON ListLunaClients'{..}
+          = object ["NextToken" .= _llcNextToken]
 
 instance ToPath ListLunaClients where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ListLunaClients where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders ListLunaClients
+-- | /See:/ 'listLunaClientsResponse' smart constructor.
+data ListLunaClientsResponse = ListLunaClientsResponse'
+    { _llcrsNextToken  :: !(Maybe Text)
+    , _llcrsStatus     :: !Int
+    , _llcrsClientList :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON ListLunaClients where
-    toJSON ListLunaClients{..} = object
-        [ "NextToken" .= _llcNextToken
-        ]
+-- | Creates a value of 'ListLunaClientsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llcrsNextToken'
+--
+-- * 'llcrsStatus'
+--
+-- * 'llcrsClientList'
+listLunaClientsResponse
+    :: Int -- ^ 'llcrsStatus'
+    -> ListLunaClientsResponse
+listLunaClientsResponse pStatus_ =
+    ListLunaClientsResponse'
+    { _llcrsNextToken = Nothing
+    , _llcrsStatus = pStatus_
+    , _llcrsClientList = mempty
+    }
 
-instance AWSRequest ListLunaClients where
-    type Sv ListLunaClients = CloudHSM
-    type Rs ListLunaClients = ListLunaClientsResponse
+-- | If not null, more results are available. Pass this to ListLunaClients to
+-- retrieve the next set of items.
+llcrsNextToken :: Lens' ListLunaClientsResponse (Maybe Text)
+llcrsNextToken = lens _llcrsNextToken (\ s a -> s{_llcrsNextToken = a});
 
-    request  = post "ListLunaClients"
-    response = jsonResponse
+-- | The response status code.
+llcrsStatus :: Lens' ListLunaClientsResponse Int
+llcrsStatus = lens _llcrsStatus (\ s a -> s{_llcrsStatus = a});
 
-instance FromJSON ListLunaClientsResponse where
-    parseJSON = withObject "ListLunaClientsResponse" $ \o -> ListLunaClientsResponse
-        <$> o .:? "ClientList" .!= mempty
-        <*> o .:? "NextToken"
+-- | The list of clients.
+llcrsClientList :: Lens' ListLunaClientsResponse [Text]
+llcrsClientList = lens _llcrsClientList (\ s a -> s{_llcrsClientList = a}) . _Coerce;
diff --git a/gen/Network/AWS/CloudHSM/ModifyHAPG.hs b/gen/Network/AWS/CloudHSM/ModifyHAPG.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudHSM/ModifyHAPG.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudHSM.ModifyHAPG
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies an existing high-availability partition group.
+--
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_ModifyHAPG.html AWS API Reference> for ModifyHAPG.
+module Network.AWS.CloudHSM.ModifyHAPG
+    (
+    -- * Creating a Request
+      modifyHAPG
+    , ModifyHAPG
+    -- * Request Lenses
+    , mhPartitionSerialList
+    , mhLabel
+    , mhHAPGARN
+
+    -- * Destructuring the Response
+    , modifyHAPGResponse
+    , ModifyHAPGResponse
+    -- * Response Lenses
+    , mhrsHAPGARN
+    , mhrsStatus
+    ) where
+
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'modifyHAPG' smart constructor.
+data ModifyHAPG = ModifyHAPG'
+    { _mhPartitionSerialList :: !(Maybe [Text])
+    , _mhLabel               :: !(Maybe Text)
+    , _mhHAPGARN             :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyHAPG' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mhPartitionSerialList'
+--
+-- * 'mhLabel'
+--
+-- * 'mhHAPGARN'
+modifyHAPG
+    :: Text -- ^ 'mhHAPGARN'
+    -> ModifyHAPG
+modifyHAPG pHAPGARN_ =
+    ModifyHAPG'
+    { _mhPartitionSerialList = Nothing
+    , _mhLabel = Nothing
+    , _mhHAPGARN = pHAPGARN_
+    }
+
+-- | The list of partition serial numbers to make members of the
+-- high-availability partition group.
+mhPartitionSerialList :: Lens' ModifyHAPG [Text]
+mhPartitionSerialList = lens _mhPartitionSerialList (\ s a -> s{_mhPartitionSerialList = a}) . _Default . _Coerce;
+
+-- | The new label for the high-availability partition group.
+mhLabel :: Lens' ModifyHAPG (Maybe Text)
+mhLabel = lens _mhLabel (\ s a -> s{_mhLabel = a});
+
+-- | The ARN of the high-availability partition group to modify.
+mhHAPGARN :: Lens' ModifyHAPG Text
+mhHAPGARN = lens _mhHAPGARN (\ s a -> s{_mhHAPGARN = a});
+
+instance AWSRequest ModifyHAPG where
+        type Sv ModifyHAPG = CloudHSM
+        type Rs ModifyHAPG = ModifyHAPGResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ModifyHAPGResponse' <$>
+                   (x .?> "HapgArn") <*> (pure (fromEnum s)))
+
+instance ToHeaders ModifyHAPG where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.ModifyHapg" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ModifyHAPG where
+        toJSON ModifyHAPG'{..}
+          = object
+              ["PartitionSerialList" .= _mhPartitionSerialList,
+               "Label" .= _mhLabel, "HapgArn" .= _mhHAPGARN]
+
+instance ToPath ModifyHAPG where
+        toPath = const "/"
+
+instance ToQuery ModifyHAPG where
+        toQuery = const mempty
+
+-- | /See:/ 'modifyHAPGResponse' smart constructor.
+data ModifyHAPGResponse = ModifyHAPGResponse'
+    { _mhrsHAPGARN :: !(Maybe Text)
+    , _mhrsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyHAPGResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mhrsHAPGARN'
+--
+-- * 'mhrsStatus'
+modifyHAPGResponse
+    :: Int -- ^ 'mhrsStatus'
+    -> ModifyHAPGResponse
+modifyHAPGResponse pStatus_ =
+    ModifyHAPGResponse'
+    { _mhrsHAPGARN = Nothing
+    , _mhrsStatus = pStatus_
+    }
+
+-- | The ARN of the high-availability partition group.
+mhrsHAPGARN :: Lens' ModifyHAPGResponse (Maybe Text)
+mhrsHAPGARN = lens _mhrsHAPGARN (\ s a -> s{_mhrsHAPGARN = a});
+
+-- | The response status code.
+mhrsStatus :: Lens' ModifyHAPGResponse Int
+mhrsStatus = lens _mhrsStatus (\ s a -> s{_mhrsStatus = a});
diff --git a/gen/Network/AWS/CloudHSM/ModifyHSM.hs b/gen/Network/AWS/CloudHSM/ModifyHSM.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudHSM/ModifyHSM.hs
@@ -0,0 +1,179 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudHSM.ModifyHSM
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies an HSM.
+--
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_ModifyHSM.html AWS API Reference> for ModifyHSM.
+module Network.AWS.CloudHSM.ModifyHSM
+    (
+    -- * Creating a Request
+      modifyHSM
+    , ModifyHSM
+    -- * Request Lenses
+    , mhIAMRoleARN
+    , mhSubnetId
+    , mhSyslogIP
+    , mhExternalId
+    , mhEniIP
+    , mhHSMARN
+
+    -- * Destructuring the Response
+    , modifyHSMResponse
+    , ModifyHSMResponse
+    -- * Response Lenses
+    , mhsmrsHSMARN
+    , mhsmrsStatus
+    ) where
+
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Contains the inputs for the ModifyHsm action.
+--
+-- /See:/ 'modifyHSM' smart constructor.
+data ModifyHSM = ModifyHSM'
+    { _mhIAMRoleARN :: !(Maybe Text)
+    , _mhSubnetId   :: !(Maybe Text)
+    , _mhSyslogIP   :: !(Maybe Text)
+    , _mhExternalId :: !(Maybe Text)
+    , _mhEniIP      :: !(Maybe Text)
+    , _mhHSMARN     :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyHSM' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mhIAMRoleARN'
+--
+-- * 'mhSubnetId'
+--
+-- * 'mhSyslogIP'
+--
+-- * 'mhExternalId'
+--
+-- * 'mhEniIP'
+--
+-- * 'mhHSMARN'
+modifyHSM
+    :: Text -- ^ 'mhHSMARN'
+    -> ModifyHSM
+modifyHSM pHSMARN_ =
+    ModifyHSM'
+    { _mhIAMRoleARN = Nothing
+    , _mhSubnetId = Nothing
+    , _mhSyslogIP = Nothing
+    , _mhExternalId = Nothing
+    , _mhEniIP = Nothing
+    , _mhHSMARN = pHSMARN_
+    }
+
+-- | The new IAM role ARN.
+mhIAMRoleARN :: Lens' ModifyHSM (Maybe Text)
+mhIAMRoleARN = lens _mhIAMRoleARN (\ s a -> s{_mhIAMRoleARN = a});
+
+-- | The new identifier of the subnet that the HSM is in.
+mhSubnetId :: Lens' ModifyHSM (Maybe Text)
+mhSubnetId = lens _mhSubnetId (\ s a -> s{_mhSubnetId = a});
+
+-- | The new IP address for the syslog monitoring server.
+mhSyslogIP :: Lens' ModifyHSM (Maybe Text)
+mhSyslogIP = lens _mhSyslogIP (\ s a -> s{_mhSyslogIP = a});
+
+-- | The new external ID.
+mhExternalId :: Lens' ModifyHSM (Maybe Text)
+mhExternalId = lens _mhExternalId (\ s a -> s{_mhExternalId = a});
+
+-- | The new IP address for the elastic network interface attached to the
+-- HSM.
+mhEniIP :: Lens' ModifyHSM (Maybe Text)
+mhEniIP = lens _mhEniIP (\ s a -> s{_mhEniIP = a});
+
+-- | The ARN of the HSM to modify.
+mhHSMARN :: Lens' ModifyHSM Text
+mhHSMARN = lens _mhHSMARN (\ s a -> s{_mhHSMARN = a});
+
+instance AWSRequest ModifyHSM where
+        type Sv ModifyHSM = CloudHSM
+        type Rs ModifyHSM = ModifyHSMResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ModifyHSMResponse' <$>
+                   (x .?> "HsmArn") <*> (pure (fromEnum s)))
+
+instance ToHeaders ModifyHSM where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.ModifyHsm" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ModifyHSM where
+        toJSON ModifyHSM'{..}
+          = object
+              ["IamRoleArn" .= _mhIAMRoleARN,
+               "SubnetId" .= _mhSubnetId, "SyslogIp" .= _mhSyslogIP,
+               "ExternalId" .= _mhExternalId, "EniIp" .= _mhEniIP,
+               "HsmArn" .= _mhHSMARN]
+
+instance ToPath ModifyHSM where
+        toPath = const "/"
+
+instance ToQuery ModifyHSM where
+        toQuery = const mempty
+
+-- | Contains the output of the ModifyHsm action.
+--
+-- /See:/ 'modifyHSMResponse' smart constructor.
+data ModifyHSMResponse = ModifyHSMResponse'
+    { _mhsmrsHSMARN :: !(Maybe Text)
+    , _mhsmrsStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyHSMResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mhsmrsHSMARN'
+--
+-- * 'mhsmrsStatus'
+modifyHSMResponse
+    :: Int -- ^ 'mhsmrsStatus'
+    -> ModifyHSMResponse
+modifyHSMResponse pStatus_ =
+    ModifyHSMResponse'
+    { _mhsmrsHSMARN = Nothing
+    , _mhsmrsStatus = pStatus_
+    }
+
+-- | The ARN of the HSM.
+mhsmrsHSMARN :: Lens' ModifyHSMResponse (Maybe Text)
+mhsmrsHSMARN = lens _mhsmrsHSMARN (\ s a -> s{_mhsmrsHSMARN = a});
+
+-- | The response status code.
+mhsmrsStatus :: Lens' ModifyHSMResponse Int
+mhsmrsStatus = lens _mhsmrsStatus (\ s a -> s{_mhsmrsStatus = a});
diff --git a/gen/Network/AWS/CloudHSM/ModifyHapg.hs b/gen/Network/AWS/CloudHSM/ModifyHapg.hs
deleted file mode 100644
--- a/gen/Network/AWS/CloudHSM/ModifyHapg.hs
+++ /dev/null
@@ -1,135 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.CloudHSM.ModifyHapg
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Modifies an existing high-availability partition group.
---
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_ModifyHapg.html>
-module Network.AWS.CloudHSM.ModifyHapg
-    (
-    -- * Request
-      ModifyHapg
-    -- ** Request constructor
-    , modifyHapg
-    -- ** Request lenses
-    , mhHapgArn
-    , mhLabel
-    , mhPartitionSerialList
-
-    -- * Response
-    , ModifyHapgResponse
-    -- ** Response constructor
-    , modifyHapgResponse
-    -- ** Response lenses
-    , mhrHapgArn
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
-
-data ModifyHapg = ModifyHapg
-    { _mhHapgArn             :: Text
-    , _mhLabel               :: Maybe Text
-    , _mhPartitionSerialList :: List "PartitionSerialList" Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ModifyHapg' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'mhHapgArn' @::@ 'Text'
---
--- * 'mhLabel' @::@ 'Maybe' 'Text'
---
--- * 'mhPartitionSerialList' @::@ ['Text']
---
-modifyHapg :: Text -- ^ 'mhHapgArn'
-           -> ModifyHapg
-modifyHapg p1 = ModifyHapg
-    { _mhHapgArn             = p1
-    , _mhLabel               = Nothing
-    , _mhPartitionSerialList = mempty
-    }
-
--- | The ARN of the high-availability partition group to modify.
-mhHapgArn :: Lens' ModifyHapg Text
-mhHapgArn = lens _mhHapgArn (\s a -> s { _mhHapgArn = a })
-
--- | The new label for the high-availability partition group.
-mhLabel :: Lens' ModifyHapg (Maybe Text)
-mhLabel = lens _mhLabel (\s a -> s { _mhLabel = a })
-
--- | The list of partition serial numbers to make members of the high-availability
--- partition group.
-mhPartitionSerialList :: Lens' ModifyHapg [Text]
-mhPartitionSerialList =
-    lens _mhPartitionSerialList (\s a -> s { _mhPartitionSerialList = a })
-        . _List
-
-newtype ModifyHapgResponse = ModifyHapgResponse
-    { _mhrHapgArn :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'ModifyHapgResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'mhrHapgArn' @::@ 'Maybe' 'Text'
---
-modifyHapgResponse :: ModifyHapgResponse
-modifyHapgResponse = ModifyHapgResponse
-    { _mhrHapgArn = Nothing
-    }
-
--- | The ARN of the high-availability partition group.
-mhrHapgArn :: Lens' ModifyHapgResponse (Maybe Text)
-mhrHapgArn = lens _mhrHapgArn (\s a -> s { _mhrHapgArn = a })
-
-instance ToPath ModifyHapg where
-    toPath = const "/"
-
-instance ToQuery ModifyHapg where
-    toQuery = const mempty
-
-instance ToHeaders ModifyHapg
-
-instance ToJSON ModifyHapg where
-    toJSON ModifyHapg{..} = object
-        [ "HapgArn"             .= _mhHapgArn
-        , "Label"               .= _mhLabel
-        , "PartitionSerialList" .= _mhPartitionSerialList
-        ]
-
-instance AWSRequest ModifyHapg where
-    type Sv ModifyHapg = CloudHSM
-    type Rs ModifyHapg = ModifyHapgResponse
-
-    request  = post "ModifyHapg"
-    response = jsonResponse
-
-instance FromJSON ModifyHapgResponse where
-    parseJSON = withObject "ModifyHapgResponse" $ \o -> ModifyHapgResponse
-        <$> o .:? "HapgArn"
diff --git a/gen/Network/AWS/CloudHSM/ModifyHsm.hs b/gen/Network/AWS/CloudHSM/ModifyHsm.hs
deleted file mode 100644
--- a/gen/Network/AWS/CloudHSM/ModifyHsm.hs
+++ /dev/null
@@ -1,162 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.CloudHSM.ModifyHsm
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Modifies an HSM.
---
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_ModifyHsm.html>
-module Network.AWS.CloudHSM.ModifyHsm
-    (
-    -- * Request
-      ModifyHsm
-    -- ** Request constructor
-    , modifyHsm
-    -- ** Request lenses
-    , mhEniIp
-    , mhExternalId
-    , mhHsmArn
-    , mhIamRoleArn
-    , mhSubnetId
-    , mhSyslogIp
-
-    -- * Response
-    , ModifyHsmResponse
-    -- ** Response constructor
-    , modifyHsmResponse
-    -- ** Response lenses
-    , mhrHsmArn
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
-
-data ModifyHsm = ModifyHsm
-    { _mhEniIp      :: Maybe Text
-    , _mhExternalId :: Maybe Text
-    , _mhHsmArn     :: Text
-    , _mhIamRoleArn :: Maybe Text
-    , _mhSubnetId   :: Maybe Text
-    , _mhSyslogIp   :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ModifyHsm' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'mhEniIp' @::@ 'Maybe' 'Text'
---
--- * 'mhExternalId' @::@ 'Maybe' 'Text'
---
--- * 'mhHsmArn' @::@ 'Text'
---
--- * 'mhIamRoleArn' @::@ 'Maybe' 'Text'
---
--- * 'mhSubnetId' @::@ 'Maybe' 'Text'
---
--- * 'mhSyslogIp' @::@ 'Maybe' 'Text'
---
-modifyHsm :: Text -- ^ 'mhHsmArn'
-          -> ModifyHsm
-modifyHsm p1 = ModifyHsm
-    { _mhHsmArn     = p1
-    , _mhSubnetId   = Nothing
-    , _mhEniIp      = Nothing
-    , _mhIamRoleArn = Nothing
-    , _mhExternalId = Nothing
-    , _mhSyslogIp   = Nothing
-    }
-
--- | The new IP address for the elastic network interface attached to the HSM.
-mhEniIp :: Lens' ModifyHsm (Maybe Text)
-mhEniIp = lens _mhEniIp (\s a -> s { _mhEniIp = a })
-
--- | The new external ID.
-mhExternalId :: Lens' ModifyHsm (Maybe Text)
-mhExternalId = lens _mhExternalId (\s a -> s { _mhExternalId = a })
-
--- | The ARN of the HSM to modify.
-mhHsmArn :: Lens' ModifyHsm Text
-mhHsmArn = lens _mhHsmArn (\s a -> s { _mhHsmArn = a })
-
--- | The new IAM role ARN.
-mhIamRoleArn :: Lens' ModifyHsm (Maybe Text)
-mhIamRoleArn = lens _mhIamRoleArn (\s a -> s { _mhIamRoleArn = a })
-
--- | The new identifier of the subnet that the HSM is in.
-mhSubnetId :: Lens' ModifyHsm (Maybe Text)
-mhSubnetId = lens _mhSubnetId (\s a -> s { _mhSubnetId = a })
-
--- | The new IP address for the syslog monitoring server.
-mhSyslogIp :: Lens' ModifyHsm (Maybe Text)
-mhSyslogIp = lens _mhSyslogIp (\s a -> s { _mhSyslogIp = a })
-
-newtype ModifyHsmResponse = ModifyHsmResponse
-    { _mhrHsmArn :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'ModifyHsmResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'mhrHsmArn' @::@ 'Maybe' 'Text'
---
-modifyHsmResponse :: ModifyHsmResponse
-modifyHsmResponse = ModifyHsmResponse
-    { _mhrHsmArn = Nothing
-    }
-
--- | The ARN of the HSM.
-mhrHsmArn :: Lens' ModifyHsmResponse (Maybe Text)
-mhrHsmArn = lens _mhrHsmArn (\s a -> s { _mhrHsmArn = a })
-
-instance ToPath ModifyHsm where
-    toPath = const "/"
-
-instance ToQuery ModifyHsm where
-    toQuery = const mempty
-
-instance ToHeaders ModifyHsm
-
-instance ToJSON ModifyHsm where
-    toJSON ModifyHsm{..} = object
-        [ "HsmArn"     .= _mhHsmArn
-        , "SubnetId"   .= _mhSubnetId
-        , "EniIp"      .= _mhEniIp
-        , "IamRoleArn" .= _mhIamRoleArn
-        , "ExternalId" .= _mhExternalId
-        , "SyslogIp"   .= _mhSyslogIp
-        ]
-
-instance AWSRequest ModifyHsm where
-    type Sv ModifyHsm = CloudHSM
-    type Rs ModifyHsm = ModifyHsmResponse
-
-    request  = post "ModifyHsm"
-    response = jsonResponse
-
-instance FromJSON ModifyHsmResponse where
-    parseJSON = withObject "ModifyHsmResponse" $ \o -> ModifyHsmResponse
-        <$> o .:? "HsmArn"
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
@@ -1,126 +1,141 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.CloudHSM.ModifyLunaClient
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Modifies the certificate used by the client.
+-- Modifies the certificate used by the client.
 --
--- This action can potentially start a workflow to install the new certificate
--- on the client's HSMs.
+-- This action can potentially start a workflow to install the new
+-- certificate on the client\'s HSMs.
 --
--- <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_ModifyLunaClient.html>
+-- /See:/ <http://docs.aws.amazon.com/cloudhsm/latest/dg/API_ModifyLunaClient.html AWS API Reference> for ModifyLunaClient.
 module Network.AWS.CloudHSM.ModifyLunaClient
     (
-    -- * Request
-      ModifyLunaClient
-    -- ** Request constructor
-    , modifyLunaClient
-    -- ** Request lenses
+    -- * Creating a Request
+      modifyLunaClient
+    , ModifyLunaClient
+    -- * Request Lenses
+    , mlcClientARN
     , mlcCertificate
-    , mlcClientArn
 
-    -- * Response
-    , ModifyLunaClientResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , modifyLunaClientResponse
-    -- ** Response lenses
-    , mlcrClientArn
+    , ModifyLunaClientResponse
+    -- * Response Lenses
+    , mlcrsClientARN
+    , mlcrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.CloudHSM.Types
-import qualified GHC.Exts
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data ModifyLunaClient = ModifyLunaClient
-    { _mlcCertificate :: Text
-    , _mlcClientArn   :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'modifyLunaClient' smart constructor.
+data ModifyLunaClient = ModifyLunaClient'
+    { _mlcClientARN   :: !Text
+    , _mlcCertificate :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ModifyLunaClient' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'ModifyLunaClient' with the minimum fields required to make a request.
 --
--- * 'mlcCertificate' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'mlcClientArn' @::@ 'Text'
+-- * 'mlcClientARN'
 --
-modifyLunaClient :: Text -- ^ 'mlcClientArn'
-                 -> Text -- ^ 'mlcCertificate'
-                 -> ModifyLunaClient
-modifyLunaClient p1 p2 = ModifyLunaClient
-    { _mlcClientArn   = p1
-    , _mlcCertificate = p2
+-- * 'mlcCertificate'
+modifyLunaClient
+    :: Text -- ^ 'mlcClientARN'
+    -> Text -- ^ 'mlcCertificate'
+    -> ModifyLunaClient
+modifyLunaClient pClientARN_ pCertificate_ =
+    ModifyLunaClient'
+    { _mlcClientARN = pClientARN_
+    , _mlcCertificate = pCertificate_
     }
 
+-- | The ARN of the client.
+mlcClientARN :: Lens' ModifyLunaClient Text
+mlcClientARN = lens _mlcClientARN (\ s a -> s{_mlcClientARN = a});
+
 -- | The new certificate for the client.
 mlcCertificate :: Lens' ModifyLunaClient Text
-mlcCertificate = lens _mlcCertificate (\s a -> s { _mlcCertificate = a })
-
--- | The ARN of the client.
-mlcClientArn :: Lens' ModifyLunaClient Text
-mlcClientArn = lens _mlcClientArn (\s a -> s { _mlcClientArn = a })
+mlcCertificate = lens _mlcCertificate (\ s a -> s{_mlcCertificate = a});
 
-newtype ModifyLunaClientResponse = ModifyLunaClientResponse
-    { _mlcrClientArn :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest ModifyLunaClient where
+        type Sv ModifyLunaClient = CloudHSM
+        type Rs ModifyLunaClient = ModifyLunaClientResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ModifyLunaClientResponse' <$>
+                   (x .?> "ClientArn") <*> (pure (fromEnum s)))
 
--- | 'ModifyLunaClientResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'mlcrClientArn' @::@ 'Maybe' 'Text'
---
-modifyLunaClientResponse :: ModifyLunaClientResponse
-modifyLunaClientResponse = ModifyLunaClientResponse
-    { _mlcrClientArn = Nothing
-    }
+instance ToHeaders ModifyLunaClient where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CloudHsmFrontendService.ModifyLunaClient" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The ARN of the client.
-mlcrClientArn :: Lens' ModifyLunaClientResponse (Maybe Text)
-mlcrClientArn = lens _mlcrClientArn (\s a -> s { _mlcrClientArn = a })
+instance ToJSON ModifyLunaClient where
+        toJSON ModifyLunaClient'{..}
+          = object
+              ["ClientArn" .= _mlcClientARN,
+               "Certificate" .= _mlcCertificate]
 
 instance ToPath ModifyLunaClient where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ModifyLunaClient where
-    toQuery = const mempty
-
-instance ToHeaders ModifyLunaClient
+        toQuery = const mempty
 
-instance ToJSON ModifyLunaClient where
-    toJSON ModifyLunaClient{..} = object
-        [ "ClientArn"   .= _mlcClientArn
-        , "Certificate" .= _mlcCertificate
-        ]
+-- | /See:/ 'modifyLunaClientResponse' smart constructor.
+data ModifyLunaClientResponse = ModifyLunaClientResponse'
+    { _mlcrsClientARN :: !(Maybe Text)
+    , _mlcrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ModifyLunaClient where
-    type Sv ModifyLunaClient = CloudHSM
-    type Rs ModifyLunaClient = ModifyLunaClientResponse
+-- | Creates a value of 'ModifyLunaClientResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mlcrsClientARN'
+--
+-- * 'mlcrsStatus'
+modifyLunaClientResponse
+    :: Int -- ^ 'mlcrsStatus'
+    -> ModifyLunaClientResponse
+modifyLunaClientResponse pStatus_ =
+    ModifyLunaClientResponse'
+    { _mlcrsClientARN = Nothing
+    , _mlcrsStatus = pStatus_
+    }
 
-    request  = post "ModifyLunaClient"
-    response = jsonResponse
+-- | The ARN of the client.
+mlcrsClientARN :: Lens' ModifyLunaClientResponse (Maybe Text)
+mlcrsClientARN = lens _mlcrsClientARN (\ s a -> s{_mlcrsClientARN = a});
 
-instance FromJSON ModifyLunaClientResponse where
-    parseJSON = withObject "ModifyLunaClientResponse" $ \o -> ModifyLunaClientResponse
-        <$> o .:? "ClientArn"
+-- | The response status code.
+mlcrsStatus :: Lens' ModifyLunaClientResponse Int
+mlcrsStatus = lens _mlcrsStatus (\ s a -> s{_mlcrsStatus = a});
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,219 +1,87 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-{-# LANGUAGE ViewPatterns                #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
 
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
 
+-- |
 -- Module      : Network.AWS.CloudHSM.Types
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
 module Network.AWS.CloudHSM.Types
     (
     -- * Service
       CloudHSM
-    -- ** Error
-    , JSONError
 
-    -- * CloudHsmObjectState
-    , CloudHsmObjectState (..)
-
-    -- * SubscriptionType
-    , SubscriptionType (..)
-
-    -- * HsmStatus
-    , HsmStatus (..)
+    -- * Errors
+    , _InvalidRequestException
+    , _CloudHSMServiceException
+    , _CloudHSMInternalException
 
     -- * ClientVersion
     , ClientVersion (..)
+
+    -- * CloudHSMObjectState
+    , CloudHSMObjectState (..)
+
+    -- * HSMStatus
+    , HSMStatus (..)
+
+    -- * SubscriptionType
+    , SubscriptionType (..)
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Signing
-import qualified GHC.Exts
+import           Network.AWS.CloudHSM.Types.Product
+import           Network.AWS.CloudHSM.Types.Sum
+import           Network.AWS.Prelude
+import           Network.AWS.Sign.V4
 
--- | Version @2014-05-30@ of the Amazon CloudHSM service.
+-- | Version @2014-05-30@ of the Amazon CloudHSM SDK.
 data CloudHSM
 
 instance AWSService CloudHSM where
     type Sg CloudHSM = V4
-    type Er CloudHSM = JSONError
-
-    service = service'
+    service = const svc
       where
-        service' :: Service CloudHSM
-        service' = Service
-            { _svcAbbrev       = "CloudHSM"
-            , _svcPrefix       = "cloudhsm"
-            , _svcVersion      = "2014-05-30"
-            , _svcTargetPrefix = Just "CloudHsmFrontendService"
-            , _svcJSONVersion  = Just "1.1"
-            , _svcHandle       = handle
-            , _svcRetry        = retry
+        svc =
+            Service
+            { _svcAbbrev = "CloudHSM"
+            , _svcPrefix = "cloudhsm"
+            , _svcVersion = "2014-05-30"
+            , _svcEndpoint = defaultEndpoint svc
+            , _svcTimeout = Just 70
+            , _svcStatus = statusSuccess
+            , _svcError = parseJSONError
+            , _svcRetry = retry
             }
-
-        handle :: Status
-               -> Maybe (LazyByteString -> ServiceError JSONError)
-        handle = jsonError statusSuccess service'
-
-        retry :: Retry CloudHSM
-        retry = Exponential
-            { _retryBase     = 0.05
-            , _retryGrowth   = 2
+        retry =
+            Exponential
+            { _retryBase = 5.0e-2
+            , _retryGrowth = 2
             , _retryAttempts = 5
-            , _retryCheck    = check
+            , _retryCheck = check
             }
-
-        check :: Status
-              -> JSONError
-              -> Bool
-        check (statusCode -> s) (awsErrorCode -> e)
-            | s == 500  = True -- General Server Error
-            | s == 509  = True -- Limit Exceeded
-            | s == 503  = True -- Service Unavailable
-            | otherwise = False
-
-data CloudHsmObjectState
-    = Degraded -- ^ DEGRADED
-    | Ready    -- ^ READY
-    | Updating -- ^ UPDATING
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable CloudHsmObjectState
-
-instance FromText CloudHsmObjectState where
-    parser = takeLowerText >>= \case
-        "degraded" -> pure Degraded
-        "ready"    -> pure Ready
-        "updating" -> pure Updating
-        e          -> fail $
-            "Failure parsing CloudHsmObjectState from " ++ show e
-
-instance ToText CloudHsmObjectState where
-    toText = \case
-        Degraded -> "DEGRADED"
-        Ready    -> "READY"
-        Updating -> "UPDATING"
-
-instance ToByteString CloudHsmObjectState
-instance ToHeader     CloudHsmObjectState
-instance ToQuery      CloudHsmObjectState
-
-instance FromJSON CloudHsmObjectState where
-    parseJSON = parseJSONText "CloudHsmObjectState"
-
-instance ToJSON CloudHsmObjectState where
-    toJSON = toJSONText
-
-data SubscriptionType
-    = Production -- ^ PRODUCTION
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable SubscriptionType
-
-instance FromText SubscriptionType where
-    parser = takeLowerText >>= \case
-        "production" -> pure Production
-        e            -> fail $
-            "Failure parsing SubscriptionType from " ++ show e
-
-instance ToText SubscriptionType where
-    toText Production = "PRODUCTION"
-
-instance ToByteString SubscriptionType
-instance ToHeader     SubscriptionType
-instance ToQuery      SubscriptionType
-
-instance FromJSON SubscriptionType where
-    parseJSON = parseJSONText "SubscriptionType"
-
-instance ToJSON SubscriptionType where
-    toJSON = toJSONText
-
-data HsmStatus
-    = HSDegraded    -- ^ DEGRADED
-    | HSPending     -- ^ PENDING
-    | HSRunning     -- ^ RUNNING
-    | HSSuspended   -- ^ SUSPENDED
-    | HSTerminated  -- ^ TERMINATED
-    | HSTerminating -- ^ TERMINATING
-    | HSUpdating    -- ^ UPDATING
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable HsmStatus
-
-instance FromText HsmStatus where
-    parser = takeLowerText >>= \case
-        "degraded"    -> pure HSDegraded
-        "pending"     -> pure HSPending
-        "running"     -> pure HSRunning
-        "suspended"   -> pure HSSuspended
-        "terminated"  -> pure HSTerminated
-        "terminating" -> pure HSTerminating
-        "updating"    -> pure HSUpdating
-        e             -> fail $
-            "Failure parsing HsmStatus from " ++ show e
-
-instance ToText HsmStatus where
-    toText = \case
-        HSDegraded    -> "DEGRADED"
-        HSPending     -> "PENDING"
-        HSRunning     -> "RUNNING"
-        HSSuspended   -> "SUSPENDED"
-        HSTerminated  -> "TERMINATED"
-        HSTerminating -> "TERMINATING"
-        HSUpdating    -> "UPDATING"
-
-instance ToByteString HsmStatus
-instance ToHeader     HsmStatus
-instance ToQuery      HsmStatus
-
-instance FromJSON HsmStatus where
-    parseJSON = parseJSONText "HsmStatus"
-
-instance ToJSON HsmStatus where
-    toJSON = toJSONText
-
-data ClientVersion
-    = V51 -- ^ 5.1
-    | V53 -- ^ 5.3
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable ClientVersion
-
-instance FromText ClientVersion where
-    parser = takeLowerText >>= \case
-        "5.1" -> pure V51
-        "5.3" -> pure V53
-        e     -> fail $
-            "Failure parsing ClientVersion from " ++ show e
-
-instance ToText ClientVersion where
-    toText = \case
-        V51 -> "5.1"
-        V53 -> "5.3"
+        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
 
-instance ToByteString ClientVersion
-instance ToHeader     ClientVersion
-instance ToQuery      ClientVersion
+-- | Indicates that one or more of the request parameters are not valid.
+_InvalidRequestException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidRequestException = _ServiceError . hasCode "InvalidRequestException"
 
-instance FromJSON ClientVersion where
-    parseJSON = parseJSONText "ClientVersion"
+-- | Indicates that an exception occurred in the AWS CloudHSM service.
+_CloudHSMServiceException :: AsError a => Getting (First ServiceError) a ServiceError
+_CloudHSMServiceException = _ServiceError . hasCode "CloudHsmServiceException"
 
-instance ToJSON ClientVersion where
-    toJSON = toJSONText
+-- | Indicates that an internal error occurred.
+_CloudHSMInternalException :: AsError a => Getting (First ServiceError) a ServiceError
+_CloudHSMInternalException =
+    _ServiceError . hasCode "CloudHsmInternalException"
diff --git a/gen/Network/AWS/CloudHSM/Types/Product.hs b/gen/Network/AWS/CloudHSM/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudHSM/Types/Product.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudHSM.Types.Product
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.CloudHSM.Types.Product where
+
+import           Network.AWS.CloudHSM.Types.Sum
+import           Network.AWS.Prelude
diff --git a/gen/Network/AWS/CloudHSM/Types/Sum.hs b/gen/Network/AWS/CloudHSM/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudHSM/Types/Sum.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudHSM.Types.Sum
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.CloudHSM.Types.Sum where
+
+import           Network.AWS.Prelude
+
+data ClientVersion
+    = V5_1
+    | V5_3
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText ClientVersion where
+    parser = takeLowerText >>= \case
+        "5.1" -> pure V5_1
+        "5.3" -> pure V5_3
+        e -> fromTextError $ "Failure parsing ClientVersion from value: '" <> e
+           <> "'. Accepted values: 5.1, 5.3"
+
+instance ToText ClientVersion where
+    toText = \case
+        V5_1 -> "5.1"
+        V5_3 -> "5.3"
+
+instance Hashable     ClientVersion
+instance ToByteString ClientVersion
+instance ToQuery      ClientVersion
+instance ToHeader     ClientVersion
+
+instance ToJSON ClientVersion where
+    toJSON = toJSONText
+
+data CloudHSMObjectState
+    = Degraded
+    | Ready
+    | Updating
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText CloudHSMObjectState where
+    parser = takeLowerText >>= \case
+        "degraded" -> pure Degraded
+        "ready" -> pure Ready
+        "updating" -> pure Updating
+        e -> fromTextError $ "Failure parsing CloudHSMObjectState from value: '" <> e
+           <> "'. Accepted values: degraded, ready, updating"
+
+instance ToText CloudHSMObjectState where
+    toText = \case
+        Degraded -> "degraded"
+        Ready -> "ready"
+        Updating -> "updating"
+
+instance Hashable     CloudHSMObjectState
+instance ToByteString CloudHSMObjectState
+instance ToQuery      CloudHSMObjectState
+instance ToHeader     CloudHSMObjectState
+
+instance FromJSON CloudHSMObjectState where
+    parseJSON = parseJSONText "CloudHSMObjectState"
+
+data HSMStatus
+    = HSDegraded
+    | HSPending
+    | HSRunning
+    | HSSuspended
+    | HSTerminated
+    | HSTerminating
+    | HSUpdating
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText HSMStatus where
+    parser = takeLowerText >>= \case
+        "degraded" -> pure HSDegraded
+        "pending" -> pure HSPending
+        "running" -> pure HSRunning
+        "suspended" -> pure HSSuspended
+        "terminated" -> pure HSTerminated
+        "terminating" -> pure HSTerminating
+        "updating" -> pure HSUpdating
+        e -> fromTextError $ "Failure parsing HSMStatus from value: '" <> e
+           <> "'. Accepted values: degraded, pending, running, suspended, terminated, terminating, updating"
+
+instance ToText HSMStatus where
+    toText = \case
+        HSDegraded -> "degraded"
+        HSPending -> "pending"
+        HSRunning -> "running"
+        HSSuspended -> "suspended"
+        HSTerminated -> "terminated"
+        HSTerminating -> "terminating"
+        HSUpdating -> "updating"
+
+instance Hashable     HSMStatus
+instance ToByteString HSMStatus
+instance ToQuery      HSMStatus
+instance ToHeader     HSMStatus
+
+instance FromJSON HSMStatus where
+    parseJSON = parseJSONText "HSMStatus"
+
+data SubscriptionType =
+    Production
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText SubscriptionType where
+    parser = takeLowerText >>= \case
+        "production" -> pure Production
+        e -> fromTextError $ "Failure parsing SubscriptionType from value: '" <> e
+           <> "'. Accepted values: production"
+
+instance ToText SubscriptionType where
+    toText = \case
+        Production -> "production"
+
+instance Hashable     SubscriptionType
+instance ToByteString SubscriptionType
+instance ToQuery      SubscriptionType
+instance ToHeader     SubscriptionType
+
+instance ToJSON SubscriptionType where
+    toJSON = toJSONText
+
+instance FromJSON SubscriptionType where
+    parseJSON = parseJSONText "SubscriptionType"
diff --git a/gen/Network/AWS/CloudHSM/Waiters.hs b/gen/Network/AWS/CloudHSM/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CloudHSM/Waiters.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CloudHSM.Waiters
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.CloudHSM.Waiters where
+
+import           Network.AWS.CloudHSM.Types
+import           Network.AWS.Prelude
+import           Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,21 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Main (main) where
+
+import Test.Tasty
+import Test.AWS.CloudHSM
+import Test.AWS.CloudHSM.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "CloudHSM"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/CloudHSM.hs b/test/Test/AWS/CloudHSM.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/CloudHSM.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Module      : Test.AWS.CloudHSM
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+
+module Test.AWS.CloudHSM
+    ( tests
+    , fixtures
+    ) where
+
+import           Network.AWS.CloudHSM
+import           Test.AWS.Gen.CloudHSM
+import           Test.Tasty
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/CloudHSM/Internal.hs b/test/Test/AWS/CloudHSM/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/CloudHSM/Internal.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.CloudHSM.Internal
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+
+module Test.AWS.CloudHSM.Internal where
+
+import Test.AWS.Prelude
diff --git a/test/Test/AWS/Gen/CloudHSM.hs b/test/Test/AWS/Gen/CloudHSM.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/CloudHSM.hs
@@ -0,0 +1,328 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans        #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.AWS.Gen.CloudHSM
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Test.AWS.Gen.CloudHSM where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.CloudHSM
+import Test.AWS.CloudHSM.Internal
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ testListHAPGs $
+--             listHAPGs
+--
+--         , testListHSMs $
+--             listHSMs
+--
+--         , testDeleteHAPG $
+--             deleteHAPG
+--
+--         , testModifyLunaClient $
+--             modifyLunaClient
+--
+--         , testDescribeLunaClient $
+--             describeLunaClient
+--
+--         , testCreateHSM $
+--             createHSM
+--
+--         , testCreateHAPG $
+--             createHAPG
+--
+--         , testCreateLunaClient $
+--             createLunaClient
+--
+--         , testDescribeHAPG $
+--             describeHAPG
+--
+--         , testListLunaClients $
+--             listLunaClients
+--
+--         , testGetConfig $
+--             getConfig
+--
+--         , testDeleteHSM $
+--             deleteHSM
+--
+--         , testDescribeHSM $
+--             describeHSM
+--
+--         , testModifyHAPG $
+--             modifyHAPG
+--
+--         , testListAvailableZones $
+--             listAvailableZones
+--
+--         , testModifyHSM $
+--             modifyHSM
+--
+--         , testDeleteLunaClient $
+--             deleteLunaClient
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testListHAPGsResponse $
+--             listHAPGsResponse
+--
+--         , testListHSMsResponse $
+--             listHSMsResponse
+--
+--         , testDeleteHAPGResponse $
+--             deleteHAPGResponse
+--
+--         , testModifyLunaClientResponse $
+--             modifyLunaClientResponse
+--
+--         , testDescribeLunaClientResponse $
+--             describeLunaClientResponse
+--
+--         , testCreateHSMResponse $
+--             createHSMResponse
+--
+--         , testCreateHAPGResponse $
+--             createHAPGResponse
+--
+--         , testCreateLunaClientResponse $
+--             createLunaClientResponse
+--
+--         , testDescribeHAPGResponse $
+--             describeHAPGResponse
+--
+--         , testListLunaClientsResponse $
+--             listLunaClientsResponse
+--
+--         , testGetConfigResponse $
+--             getConfigResponse
+--
+--         , testDeleteHSMResponse $
+--             deleteHSMResponse
+--
+--         , testDescribeHSMResponse $
+--             describeHSMResponse
+--
+--         , testModifyHAPGResponse $
+--             modifyHAPGResponse
+--
+--         , testListAvailableZonesResponse $
+--             listAvailableZonesResponse
+--
+--         , testModifyHSMResponse $
+--             modifyHSMResponse
+--
+--         , testDeleteLunaClientResponse $
+--             deleteLunaClientResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testListHAPGs :: ListHAPGs -> TestTree
+testListHAPGs = req
+    "ListHAPGs"
+    "fixture/ListHAPGs"
+
+testListHSMs :: ListHSMs -> TestTree
+testListHSMs = req
+    "ListHSMs"
+    "fixture/ListHSMs"
+
+testDeleteHAPG :: DeleteHAPG -> TestTree
+testDeleteHAPG = req
+    "DeleteHAPG"
+    "fixture/DeleteHAPG"
+
+testModifyLunaClient :: ModifyLunaClient -> TestTree
+testModifyLunaClient = req
+    "ModifyLunaClient"
+    "fixture/ModifyLunaClient"
+
+testDescribeLunaClient :: DescribeLunaClient -> TestTree
+testDescribeLunaClient = req
+    "DescribeLunaClient"
+    "fixture/DescribeLunaClient"
+
+testCreateHSM :: CreateHSM -> TestTree
+testCreateHSM = req
+    "CreateHSM"
+    "fixture/CreateHSM"
+
+testCreateHAPG :: CreateHAPG -> TestTree
+testCreateHAPG = req
+    "CreateHAPG"
+    "fixture/CreateHAPG"
+
+testCreateLunaClient :: CreateLunaClient -> TestTree
+testCreateLunaClient = req
+    "CreateLunaClient"
+    "fixture/CreateLunaClient"
+
+testDescribeHAPG :: DescribeHAPG -> TestTree
+testDescribeHAPG = req
+    "DescribeHAPG"
+    "fixture/DescribeHAPG"
+
+testListLunaClients :: ListLunaClients -> TestTree
+testListLunaClients = req
+    "ListLunaClients"
+    "fixture/ListLunaClients"
+
+testGetConfig :: GetConfig -> TestTree
+testGetConfig = req
+    "GetConfig"
+    "fixture/GetConfig"
+
+testDeleteHSM :: DeleteHSM -> TestTree
+testDeleteHSM = req
+    "DeleteHSM"
+    "fixture/DeleteHSM"
+
+testDescribeHSM :: DescribeHSM -> TestTree
+testDescribeHSM = req
+    "DescribeHSM"
+    "fixture/DescribeHSM"
+
+testModifyHAPG :: ModifyHAPG -> TestTree
+testModifyHAPG = req
+    "ModifyHAPG"
+    "fixture/ModifyHAPG"
+
+testListAvailableZones :: ListAvailableZones -> TestTree
+testListAvailableZones = req
+    "ListAvailableZones"
+    "fixture/ListAvailableZones"
+
+testModifyHSM :: ModifyHSM -> TestTree
+testModifyHSM = req
+    "ModifyHSM"
+    "fixture/ModifyHSM"
+
+testDeleteLunaClient :: DeleteLunaClient -> TestTree
+testDeleteLunaClient = req
+    "DeleteLunaClient"
+    "fixture/DeleteLunaClient"
+
+-- Responses
+
+testListHAPGsResponse :: ListHAPGsResponse -> TestTree
+testListHAPGsResponse = res
+    "ListHAPGsResponse"
+    "fixture/ListHAPGsResponse"
+    (Proxy :: Proxy ListHAPGs)
+
+testListHSMsResponse :: ListHSMsResponse -> TestTree
+testListHSMsResponse = res
+    "ListHSMsResponse"
+    "fixture/ListHSMsResponse"
+    (Proxy :: Proxy ListHSMs)
+
+testDeleteHAPGResponse :: DeleteHAPGResponse -> TestTree
+testDeleteHAPGResponse = res
+    "DeleteHAPGResponse"
+    "fixture/DeleteHAPGResponse"
+    (Proxy :: Proxy DeleteHAPG)
+
+testModifyLunaClientResponse :: ModifyLunaClientResponse -> TestTree
+testModifyLunaClientResponse = res
+    "ModifyLunaClientResponse"
+    "fixture/ModifyLunaClientResponse"
+    (Proxy :: Proxy ModifyLunaClient)
+
+testDescribeLunaClientResponse :: DescribeLunaClientResponse -> TestTree
+testDescribeLunaClientResponse = res
+    "DescribeLunaClientResponse"
+    "fixture/DescribeLunaClientResponse"
+    (Proxy :: Proxy DescribeLunaClient)
+
+testCreateHSMResponse :: CreateHSMResponse -> TestTree
+testCreateHSMResponse = res
+    "CreateHSMResponse"
+    "fixture/CreateHSMResponse"
+    (Proxy :: Proxy CreateHSM)
+
+testCreateHAPGResponse :: CreateHAPGResponse -> TestTree
+testCreateHAPGResponse = res
+    "CreateHAPGResponse"
+    "fixture/CreateHAPGResponse"
+    (Proxy :: Proxy CreateHAPG)
+
+testCreateLunaClientResponse :: CreateLunaClientResponse -> TestTree
+testCreateLunaClientResponse = res
+    "CreateLunaClientResponse"
+    "fixture/CreateLunaClientResponse"
+    (Proxy :: Proxy CreateLunaClient)
+
+testDescribeHAPGResponse :: DescribeHAPGResponse -> TestTree
+testDescribeHAPGResponse = res
+    "DescribeHAPGResponse"
+    "fixture/DescribeHAPGResponse"
+    (Proxy :: Proxy DescribeHAPG)
+
+testListLunaClientsResponse :: ListLunaClientsResponse -> TestTree
+testListLunaClientsResponse = res
+    "ListLunaClientsResponse"
+    "fixture/ListLunaClientsResponse"
+    (Proxy :: Proxy ListLunaClients)
+
+testGetConfigResponse :: GetConfigResponse -> TestTree
+testGetConfigResponse = res
+    "GetConfigResponse"
+    "fixture/GetConfigResponse"
+    (Proxy :: Proxy GetConfig)
+
+testDeleteHSMResponse :: DeleteHSMResponse -> TestTree
+testDeleteHSMResponse = res
+    "DeleteHSMResponse"
+    "fixture/DeleteHSMResponse"
+    (Proxy :: Proxy DeleteHSM)
+
+testDescribeHSMResponse :: DescribeHSMResponse -> TestTree
+testDescribeHSMResponse = res
+    "DescribeHSMResponse"
+    "fixture/DescribeHSMResponse"
+    (Proxy :: Proxy DescribeHSM)
+
+testModifyHAPGResponse :: ModifyHAPGResponse -> TestTree
+testModifyHAPGResponse = res
+    "ModifyHAPGResponse"
+    "fixture/ModifyHAPGResponse"
+    (Proxy :: Proxy ModifyHAPG)
+
+testListAvailableZonesResponse :: ListAvailableZonesResponse -> TestTree
+testListAvailableZonesResponse = res
+    "ListAvailableZonesResponse"
+    "fixture/ListAvailableZonesResponse"
+    (Proxy :: Proxy ListAvailableZones)
+
+testModifyHSMResponse :: ModifyHSMResponse -> TestTree
+testModifyHSMResponse = res
+    "ModifyHSMResponse"
+    "fixture/ModifyHSMResponse"
+    (Proxy :: Proxy ModifyHSM)
+
+testDeleteLunaClientResponse :: DeleteLunaClientResponse -> TestTree
+testDeleteLunaClientResponse = res
+    "DeleteLunaClientResponse"
+    "fixture/DeleteLunaClientResponse"
+    (Proxy :: Proxy DeleteLunaClient)
