diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,23 +1,51 @@
 # Amazon Direct Connect 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
 
-AWS Direct Connect links your internal network to an AWS Direct Connect
-location over a standard 1 gigabit or 10 gigabit Ethernet fiber-optic cable.
-One end of the cable is connected to your router, the other to an AWS Direct
-Connect router. With this connection in place, you can create virtual
-interfaces directly to the AWS cloud and Amazon Virtual Private Cloud,
-bypassing Internet service providers in your network path.
+AWS Direct Connect makes it easy to establish a dedicated network
+connection from your premises to Amazon Web Services (AWS). Using AWS
+Direct Connect, you can establish private connectivity between AWS and
+your data center, office, or colocation environment, which in many cases
+can reduce your network costs, increase bandwidth throughput, and
+provide a more consistent network experience than Internet-based
+connections.
 
+The AWS Direct Connect API Reference provides descriptions, syntax, and
+usage examples for each of the actions and data types for AWS Direct
+Connect. Use the following links to get started using the /AWS Direct
+Connect API Reference/:
+
+-   <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_Operations.html Actions>:
+    An alphabetical list of all AWS Direct Connect actions.
+-   <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_Types.html Data Types>:
+    An alphabetical list of all AWS Direct Connect data types.
+-   <http://docs.aws.amazon.com/directconnect/latest/APIReference/CommonParameters.html Common Query Parameters>:
+    Parameters that all Query actions can use.
+-   <http://docs.aws.amazon.com/directconnect/latest/APIReference/CommonErrors.html Common Errors>:
+    Client and server errors that all actions can return.
+
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-directconnect)
 and the [AWS API Reference](http://docs.aws.amazon.com/directconnect/latest/APIReference/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-directconnect.cabal b/amazonka-directconnect.cabal
--- a/amazonka-directconnect.cabal
+++ b/amazonka-directconnect.cabal
@@ -1,30 +1,53 @@
 name:                  amazonka-directconnect
-version:               0.3.6
+version:               1.0.0
 synopsis:              Amazon Direct Connect 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:
-    AWS Direct Connect links your internal network to an AWS Direct Connect
-    location over a standard 1 gigabit or 10 gigabit Ethernet fiber-optic cable.
-    One end of the cable is connected to your router, the other to an AWS Direct
-    Connect router. With this connection in place, you can create virtual
-    interfaces directly to the AWS cloud and Amazon Virtual Private Cloud,
-    bypassing Internet service providers in your network path.
+    AWS Direct Connect makes it easy to establish a dedicated network
+    connection from your premises to Amazon Web Services (AWS). Using AWS
+    Direct Connect, you can establish private connectivity between AWS and
+    your data center, office, or colocation environment, which in many cases
+    can reduce your network costs, increase bandwidth throughput, and
+    provide a more consistent network experience than Internet-based
+    connections.
 
+    The AWS Direct Connect API Reference provides descriptions, syntax, and
+    usage examples for each of the actions and data types for AWS Direct
+    Connect. Use the following links to get started using the /AWS Direct
+    Connect API Reference/:
+
+    -   <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_Operations.html Actions>:
+        An alphabetical list of all AWS Direct Connect actions.
+    -   <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_Types.html Data Types>:
+        An alphabetical list of all AWS Direct Connect data types.
+    -   <http://docs.aws.amazon.com/directconnect/latest/APIReference/CommonParameters.html Common Query Parameters>:
+        Parameters that all Query actions can use.
+    -   <http://docs.aws.amazon.com/directconnect/latest/APIReference/CommonErrors.html Common Errors>:
+        Client and server errors that all actions can return.
     .
-    /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/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.DirectConnect" and the <http://docs.aws.amazon.com/directconnect/latest/APIReference/Welcome.html AWS API Reference>
+    to get started.
 
 source-repository head
     type:     git
@@ -58,9 +81,40 @@
         , Network.AWS.DirectConnect.DescribeVirtualGateways
         , Network.AWS.DirectConnect.DescribeVirtualInterfaces
         , Network.AWS.DirectConnect.Types
+        , Network.AWS.DirectConnect.Waiters
 
     other-modules:
+          Network.AWS.DirectConnect.Types.Product
+        , Network.AWS.DirectConnect.Types.Sum
 
     build-depends:
-          amazonka-core == 0.3.6.*
+          amazonka-core == 1.0.0.*
         , base          >= 4.7     && < 5
+
+test-suite amazonka-directconnect-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.DirectConnect
+        , Test.AWS.Gen.DirectConnect
+        , Test.AWS.DirectConnect.Internal
+
+    build-depends:
+          amazonka-core == 1.0.0
+        , amazonka-test == 1.0.0
+        , amazonka-directconnect == 1.0.0
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
diff --git a/gen/Network/AWS/DirectConnect.hs b/gen/Network/AWS/DirectConnect.hs
--- a/gen/Network/AWS/DirectConnect.hs
+++ b/gen/Network/AWS/DirectConnect.hs
@@ -1,61 +1,283 @@
+{-# 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.DirectConnect
--- 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.
-
--- | AWS Direct Connect links your internal network to an AWS Direct Connect
--- location over a standard 1 gigabit or 10 gigabit Ethernet fiber-optic cable.
--- One end of the cable is connected to your router, the other to an AWS Direct
--- Connect router. With this connection in place, you can create virtual
--- interfaces directly to the AWS cloud and Amazon Virtual Private Cloud,
--- bypassing Internet service providers in your network path.
+-- AWS Direct Connect makes it easy to establish a dedicated network
+-- connection from your premises to Amazon Web Services (AWS). Using AWS
+-- Direct Connect, you can establish private connectivity between AWS and
+-- your data center, office, or colocation environment, which in many cases
+-- can reduce your network costs, increase bandwidth throughput, and
+-- provide a more consistent network experience than Internet-based
+-- connections.
+--
+-- The AWS Direct Connect API Reference provides descriptions, syntax, and
+-- usage examples for each of the actions and data types for AWS Direct
+-- Connect. Use the following links to get started using the /AWS Direct
+-- Connect API Reference/:
+--
+-- -   <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_Operations.html Actions>:
+--     An alphabetical list of all AWS Direct Connect actions.
+-- -   <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_Types.html Data Types>:
+--     An alphabetical list of all AWS Direct Connect data types.
+-- -   <http://docs.aws.amazon.com/directconnect/latest/APIReference/CommonParameters.html Common Query Parameters>:
+--     Parameters that all Query actions can use.
+-- -   <http://docs.aws.amazon.com/directconnect/latest/APIReference/CommonErrors.html Common Errors>:
+--     Client and server errors that all actions can return.
+--
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.DirectConnect
-    ( module Network.AWS.DirectConnect.AllocateConnectionOnInterconnect
-    , module Network.AWS.DirectConnect.AllocatePrivateVirtualInterface
-    , module Network.AWS.DirectConnect.AllocatePublicVirtualInterface
-    , module Network.AWS.DirectConnect.ConfirmConnection
-    , module Network.AWS.DirectConnect.ConfirmPrivateVirtualInterface
-    , module Network.AWS.DirectConnect.ConfirmPublicVirtualInterface
-    , module Network.AWS.DirectConnect.CreateConnection
-    , module Network.AWS.DirectConnect.CreateInterconnect
-    , module Network.AWS.DirectConnect.CreatePrivateVirtualInterface
-    , module Network.AWS.DirectConnect.CreatePublicVirtualInterface
+    (
+    -- * Service
+      DirectConnect
+
+    -- * Errors
+    -- $errors
+
+    -- ** DirectConnectClientException
+    , _DirectConnectClientException
+
+    -- ** DirectConnectServerException
+    , _DirectConnectServerException
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** DescribeInterconnects
+    , module Network.AWS.DirectConnect.DescribeInterconnects
+
+    -- ** DeleteConnection
     , module Network.AWS.DirectConnect.DeleteConnection
-    , module Network.AWS.DirectConnect.DeleteInterconnect
-    , module Network.AWS.DirectConnect.DeleteVirtualInterface
+
+    -- ** CreateConnection
+    , module Network.AWS.DirectConnect.CreateConnection
+
+    -- ** DescribeConnections
     , module Network.AWS.DirectConnect.DescribeConnections
+
+    -- ** DeleteInterconnect
+    , module Network.AWS.DirectConnect.DeleteInterconnect
+
+    -- ** ConfirmPrivateVirtualInterface
+    , module Network.AWS.DirectConnect.ConfirmPrivateVirtualInterface
+
+    -- ** DescribeConnectionsOnInterconnect
     , module Network.AWS.DirectConnect.DescribeConnectionsOnInterconnect
-    , module Network.AWS.DirectConnect.DescribeInterconnects
+
+    -- ** DescribeLocations
     , module Network.AWS.DirectConnect.DescribeLocations
+
+    -- ** CreatePublicVirtualInterface
+    , module Network.AWS.DirectConnect.CreatePublicVirtualInterface
+
+    -- ** AllocatePrivateVirtualInterface
+    , module Network.AWS.DirectConnect.AllocatePrivateVirtualInterface
+
+    -- ** ConfirmConnection
+    , module Network.AWS.DirectConnect.ConfirmConnection
+
+    -- ** DescribeVirtualGateways
     , module Network.AWS.DirectConnect.DescribeVirtualGateways
+
+    -- ** ConfirmPublicVirtualInterface
+    , module Network.AWS.DirectConnect.ConfirmPublicVirtualInterface
+
+    -- ** DescribeVirtualInterfaces
     , module Network.AWS.DirectConnect.DescribeVirtualInterfaces
-    , module Network.AWS.DirectConnect.Types
+
+    -- ** CreatePrivateVirtualInterface
+    , module Network.AWS.DirectConnect.CreatePrivateVirtualInterface
+
+    -- ** DeleteVirtualInterface
+    , module Network.AWS.DirectConnect.DeleteVirtualInterface
+
+    -- ** AllocatePublicVirtualInterface
+    , module Network.AWS.DirectConnect.AllocatePublicVirtualInterface
+
+    -- ** AllocateConnectionOnInterconnect
+    , module Network.AWS.DirectConnect.AllocateConnectionOnInterconnect
+
+    -- ** CreateInterconnect
+    , module Network.AWS.DirectConnect.CreateInterconnect
+
+    -- * Types
+
+    -- ** ConnectionState
+    , ConnectionState (..)
+
+    -- ** InterconnectState
+    , InterconnectState (..)
+
+    -- ** VirtualInterfaceState
+    , VirtualInterfaceState (..)
+
+    -- ** Connection
+    , Connection
+    , connection
+    , cVlan
+    , cLocation
+    , cConnectionId
+    , cConnectionName
+    , cPartnerName
+    , cBandwidth
+    , cRegion
+    , cOwnerAccount
+    , cConnectionState
+
+    -- ** Connections
+    , Connections
+    , connections
+    , cConnections
+
+    -- ** Interconnect
+    , Interconnect
+    , interconnect
+    , iInterconnectId
+    , iInterconnectName
+    , iLocation
+    , iBandwidth
+    , iInterconnectState
+    , iRegion
+
+    -- ** Location
+    , Location
+    , location
+    , lLocationName
+    , lLocationCode
+
+    -- ** NewPrivateVirtualInterface
+    , NewPrivateVirtualInterface
+    , newPrivateVirtualInterface
+    , nCustomerAddress
+    , nAmazonAddress
+    , nAuthKey
+    , nVirtualInterfaceName
+    , nVlan
+    , nAsn
+    , nVirtualGatewayId
+
+    -- ** NewPrivateVirtualInterfaceAllocation
+    , NewPrivateVirtualInterfaceAllocation
+    , newPrivateVirtualInterfaceAllocation
+    , npviaCustomerAddress
+    , npviaAmazonAddress
+    , npviaAuthKey
+    , npviaVirtualInterfaceName
+    , npviaVlan
+    , npviaAsn
+
+    -- ** NewPublicVirtualInterface
+    , NewPublicVirtualInterface
+    , newPublicVirtualInterface
+    , npviAuthKey
+    , npviVirtualInterfaceName
+    , npviVlan
+    , npviAsn
+    , npviAmazonAddress
+    , npviCustomerAddress
+    , npviRouteFilterPrefixes
+
+    -- ** NewPublicVirtualInterfaceAllocation
+    , NewPublicVirtualInterfaceAllocation
+    , newPublicVirtualInterfaceAllocation
+    , newAuthKey
+    , newVirtualInterfaceName
+    , newVlan
+    , newAsn
+    , newAmazonAddress
+    , newCustomerAddress
+    , newRouteFilterPrefixes
+
+    -- ** RouteFilterPrefix
+    , RouteFilterPrefix
+    , routeFilterPrefix
+    , rfpCidr
+
+    -- ** VirtualGateway
+    , VirtualGateway
+    , virtualGateway
+    , vgVirtualGatewayId
+    , vgVirtualGatewayState
+
+    -- ** VirtualInterface
+    , VirtualInterface
+    , virtualInterface
+    , viVirtualGatewayId
+    , viRouteFilterPrefixes
+    , viCustomerAddress
+    , viVlan
+    , viLocation
+    , viAmazonAddress
+    , viVirtualInterfaceState
+    , viConnectionId
+    , viAsn
+    , viVirtualInterfaceType
+    , viAuthKey
+    , viCustomerRouterConfig
+    , viOwnerAccount
+    , viVirtualInterfaceName
+    , viVirtualInterfaceId
     ) where
 
-import Network.AWS.DirectConnect.AllocateConnectionOnInterconnect
-import Network.AWS.DirectConnect.AllocatePrivateVirtualInterface
-import Network.AWS.DirectConnect.AllocatePublicVirtualInterface
-import Network.AWS.DirectConnect.ConfirmConnection
-import Network.AWS.DirectConnect.ConfirmPrivateVirtualInterface
-import Network.AWS.DirectConnect.ConfirmPublicVirtualInterface
-import Network.AWS.DirectConnect.CreateConnection
-import Network.AWS.DirectConnect.CreateInterconnect
-import Network.AWS.DirectConnect.CreatePrivateVirtualInterface
-import Network.AWS.DirectConnect.CreatePublicVirtualInterface
-import Network.AWS.DirectConnect.DeleteConnection
-import Network.AWS.DirectConnect.DeleteInterconnect
-import Network.AWS.DirectConnect.DeleteVirtualInterface
-import Network.AWS.DirectConnect.DescribeConnections
-import Network.AWS.DirectConnect.DescribeConnectionsOnInterconnect
-import Network.AWS.DirectConnect.DescribeInterconnects
-import Network.AWS.DirectConnect.DescribeLocations
-import Network.AWS.DirectConnect.DescribeVirtualGateways
-import Network.AWS.DirectConnect.DescribeVirtualInterfaces
-import Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.AllocateConnectionOnInterconnect
+import           Network.AWS.DirectConnect.AllocatePrivateVirtualInterface
+import           Network.AWS.DirectConnect.AllocatePublicVirtualInterface
+import           Network.AWS.DirectConnect.ConfirmConnection
+import           Network.AWS.DirectConnect.ConfirmPrivateVirtualInterface
+import           Network.AWS.DirectConnect.ConfirmPublicVirtualInterface
+import           Network.AWS.DirectConnect.CreateConnection
+import           Network.AWS.DirectConnect.CreateInterconnect
+import           Network.AWS.DirectConnect.CreatePrivateVirtualInterface
+import           Network.AWS.DirectConnect.CreatePublicVirtualInterface
+import           Network.AWS.DirectConnect.DeleteConnection
+import           Network.AWS.DirectConnect.DeleteInterconnect
+import           Network.AWS.DirectConnect.DeleteVirtualInterface
+import           Network.AWS.DirectConnect.DescribeConnections
+import           Network.AWS.DirectConnect.DescribeConnectionsOnInterconnect
+import           Network.AWS.DirectConnect.DescribeInterconnects
+import           Network.AWS.DirectConnect.DescribeLocations
+import           Network.AWS.DirectConnect.DescribeVirtualGateways
+import           Network.AWS.DirectConnect.DescribeVirtualInterfaces
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.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 'DirectConnect'.
+-}
+
+{- $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/DirectConnect/AllocateConnectionOnInterconnect.hs b/gen/Network/AWS/DirectConnect/AllocateConnectionOnInterconnect.hs
--- a/gen/Network/AWS/DirectConnect/AllocateConnectionOnInterconnect.hs
+++ b/gen/Network/AWS/DirectConnect/AllocateConnectionOnInterconnect.hs
@@ -1,129 +1,118 @@
-{-# 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.DirectConnect.AllocateConnectionOnInterconnect
--- 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 a hosted connection on an interconnect.
+-- Creates a hosted connection on an interconnect.
 --
 -- Allocates a VLAN number and a specified amount of bandwidth for use by a
 -- hosted connection on the given interconnect.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_AllocateConnectionOnInterconnect.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_AllocateConnectionOnInterconnect.html AWS API Reference> for AllocateConnectionOnInterconnect.
 module Network.AWS.DirectConnect.AllocateConnectionOnInterconnect
     (
-    -- * Request
-      AllocateConnectionOnInterconnect
-    -- ** Request constructor
-    , allocateConnectionOnInterconnect
-    -- ** Request lenses
+    -- * Creating a Request
+      allocateConnectionOnInterconnect
+    , AllocateConnectionOnInterconnect
+    -- * Request Lenses
     , acoiBandwidth
     , acoiConnectionName
-    , acoiInterconnectId
     , acoiOwnerAccount
+    , acoiInterconnectId
     , acoiVlan
 
-    -- * Response
-    , AllocateConnectionOnInterconnectResponse
-    -- ** Response constructor
-    , allocateConnectionOnInterconnectResponse
-    -- ** Response lenses
-    , acoirBandwidth
-    , acoirConnectionId
-    , acoirConnectionName
-    , acoirConnectionState
-    , acoirLocation
-    , acoirOwnerAccount
-    , acoirPartnerName
-    , acoirRegion
-    , acoirVlan
+    -- * Destructuring the Response
+    , connection
+    , Connection
+    -- * Response Lenses
+    , cVlan
+    , cLocation
+    , cConnectionId
+    , cConnectionName
+    , cPartnerName
+    , cBandwidth
+    , cRegion
+    , cOwnerAccount
+    , cConnectionState
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-data AllocateConnectionOnInterconnect = AllocateConnectionOnInterconnect
-    { _acoiBandwidth      :: Text
-    , _acoiConnectionName :: Text
-    , _acoiInterconnectId :: Text
-    , _acoiOwnerAccount   :: Text
-    , _acoiVlan           :: Int
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'AllocateConnectionOnInterconnect' constructor.
+-- | Container for the parameters to the AllocateConnectionOnInterconnect
+-- operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'allocateConnectionOnInterconnect' smart constructor.
+data AllocateConnectionOnInterconnect = AllocateConnectionOnInterconnect'
+    { _acoiBandwidth      :: !Text
+    , _acoiConnectionName :: !Text
+    , _acoiOwnerAccount   :: !Text
+    , _acoiInterconnectId :: !Text
+    , _acoiVlan           :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AllocateConnectionOnInterconnect' with the minimum fields required to make a request.
 --
--- * 'acoiBandwidth' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'acoiConnectionName' @::@ 'Text'
+-- * 'acoiBandwidth'
 --
--- * 'acoiInterconnectId' @::@ 'Text'
+-- * 'acoiConnectionName'
 --
--- * 'acoiOwnerAccount' @::@ 'Text'
+-- * 'acoiOwnerAccount'
 --
--- * 'acoiVlan' @::@ 'Int'
+-- * 'acoiInterconnectId'
 --
-allocateConnectionOnInterconnect :: Text -- ^ 'acoiBandwidth'
-                                 -> Text -- ^ 'acoiConnectionName'
-                                 -> Text -- ^ 'acoiOwnerAccount'
-                                 -> Text -- ^ 'acoiInterconnectId'
-                                 -> Int -- ^ 'acoiVlan'
-                                 -> AllocateConnectionOnInterconnect
-allocateConnectionOnInterconnect p1 p2 p3 p4 p5 = AllocateConnectionOnInterconnect
-    { _acoiBandwidth      = p1
-    , _acoiConnectionName = p2
-    , _acoiOwnerAccount   = p3
-    , _acoiInterconnectId = p4
-    , _acoiVlan           = p5
+-- * 'acoiVlan'
+allocateConnectionOnInterconnect
+    :: Text -- ^ 'acoiBandwidth'
+    -> Text -- ^ 'acoiConnectionName'
+    -> Text -- ^ 'acoiOwnerAccount'
+    -> Text -- ^ 'acoiInterconnectId'
+    -> Int -- ^ 'acoiVlan'
+    -> AllocateConnectionOnInterconnect
+allocateConnectionOnInterconnect pBandwidth_ pConnectionName_ pOwnerAccount_ pInterconnectId_ pVlan_ =
+    AllocateConnectionOnInterconnect'
+    { _acoiBandwidth = pBandwidth_
+    , _acoiConnectionName = pConnectionName_
+    , _acoiOwnerAccount = pOwnerAccount_
+    , _acoiInterconnectId = pInterconnectId_
+    , _acoiVlan = pVlan_
     }
 
 -- | Bandwidth of the connection.
 --
--- Example: "/500Mbps/"
+-- Example: \"/500Mbps/\"
 --
 -- Default: None
 acoiBandwidth :: Lens' AllocateConnectionOnInterconnect Text
-acoiBandwidth = lens _acoiBandwidth (\s a -> s { _acoiBandwidth = a })
+acoiBandwidth = lens _acoiBandwidth (\ s a -> s{_acoiBandwidth = a});
 
 -- | Name of the provisioned connection.
 --
--- Example: "/500M Connection to AWS/"
+-- Example: \"/500M Connection to AWS/\"
 --
 -- Default: None
 acoiConnectionName :: Lens' AllocateConnectionOnInterconnect Text
-acoiConnectionName =
-    lens _acoiConnectionName (\s a -> s { _acoiConnectionName = a })
-
--- | ID of the interconnect on which the connection will be provisioned.
---
--- Example: dxcon-456abc78
---
--- Default: None
-acoiInterconnectId :: Lens' AllocateConnectionOnInterconnect Text
-acoiInterconnectId =
-    lens _acoiInterconnectId (\s a -> s { _acoiInterconnectId = a })
+acoiConnectionName = lens _acoiConnectionName (\ s a -> s{_acoiConnectionName = a});
 
 -- | Numeric account Id of the customer for whom the connection will be
 -- provisioned.
@@ -132,131 +121,57 @@
 --
 -- Default: None
 acoiOwnerAccount :: Lens' AllocateConnectionOnInterconnect Text
-acoiOwnerAccount = lens _acoiOwnerAccount (\s a -> s { _acoiOwnerAccount = a })
+acoiOwnerAccount = lens _acoiOwnerAccount (\ s a -> s{_acoiOwnerAccount = a});
 
--- | The dedicated VLAN provisioned to the connection.
+-- | ID of the interconnect on which the connection will be provisioned.
 --
--- Example: 101
+-- Example: dxcon-456abc78
 --
 -- Default: None
-acoiVlan :: Lens' AllocateConnectionOnInterconnect Int
-acoiVlan = lens _acoiVlan (\s a -> s { _acoiVlan = a })
-
-data AllocateConnectionOnInterconnectResponse = AllocateConnectionOnInterconnectResponse
-    { _acoirBandwidth       :: Maybe Text
-    , _acoirConnectionId    :: Maybe Text
-    , _acoirConnectionName  :: Maybe Text
-    , _acoirConnectionState :: Maybe ConnectionState
-    , _acoirLocation        :: Maybe Text
-    , _acoirOwnerAccount    :: Maybe Text
-    , _acoirPartnerName     :: Maybe Text
-    , _acoirRegion          :: Maybe Text
-    , _acoirVlan            :: Maybe Int
-    } deriving (Eq, Read, Show)
-
--- | 'AllocateConnectionOnInterconnectResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'acoirBandwidth' @::@ 'Maybe' 'Text'
---
--- * 'acoirConnectionId' @::@ 'Maybe' 'Text'
---
--- * 'acoirConnectionName' @::@ 'Maybe' 'Text'
---
--- * 'acoirConnectionState' @::@ 'Maybe' 'ConnectionState'
---
--- * 'acoirLocation' @::@ 'Maybe' 'Text'
---
--- * 'acoirOwnerAccount' @::@ 'Maybe' 'Text'
---
--- * 'acoirPartnerName' @::@ 'Maybe' 'Text'
---
--- * 'acoirRegion' @::@ 'Maybe' 'Text'
---
--- * 'acoirVlan' @::@ 'Maybe' 'Int'
---
-allocateConnectionOnInterconnectResponse :: AllocateConnectionOnInterconnectResponse
-allocateConnectionOnInterconnectResponse = AllocateConnectionOnInterconnectResponse
-    { _acoirOwnerAccount    = Nothing
-    , _acoirConnectionId    = Nothing
-    , _acoirConnectionName  = Nothing
-    , _acoirConnectionState = Nothing
-    , _acoirRegion          = Nothing
-    , _acoirLocation        = Nothing
-    , _acoirBandwidth       = Nothing
-    , _acoirVlan            = Nothing
-    , _acoirPartnerName     = Nothing
-    }
+acoiInterconnectId :: Lens' AllocateConnectionOnInterconnect Text
+acoiInterconnectId = lens _acoiInterconnectId (\ s a -> s{_acoiInterconnectId = a});
 
--- | Bandwidth of the connection.
+-- | The dedicated VLAN provisioned to the connection.
 --
--- Example: 1Gbps (for regular connections), or 500Mbps (for hosted connections)
+-- Example: 101
 --
 -- Default: None
-acoirBandwidth :: Lens' AllocateConnectionOnInterconnectResponse (Maybe Text)
-acoirBandwidth = lens _acoirBandwidth (\s a -> s { _acoirBandwidth = a })
-
-acoirConnectionId :: Lens' AllocateConnectionOnInterconnectResponse (Maybe Text)
-acoirConnectionId =
-    lens _acoirConnectionId (\s a -> s { _acoirConnectionId = a })
-
-acoirConnectionName :: Lens' AllocateConnectionOnInterconnectResponse (Maybe Text)
-acoirConnectionName =
-    lens _acoirConnectionName (\s a -> s { _acoirConnectionName = a })
-
-acoirConnectionState :: Lens' AllocateConnectionOnInterconnectResponse (Maybe ConnectionState)
-acoirConnectionState =
-    lens _acoirConnectionState (\s a -> s { _acoirConnectionState = a })
-
-acoirLocation :: Lens' AllocateConnectionOnInterconnectResponse (Maybe Text)
-acoirLocation = lens _acoirLocation (\s a -> s { _acoirLocation = a })
-
-acoirOwnerAccount :: Lens' AllocateConnectionOnInterconnectResponse (Maybe Text)
-acoirOwnerAccount =
-    lens _acoirOwnerAccount (\s a -> s { _acoirOwnerAccount = a })
-
-acoirPartnerName :: Lens' AllocateConnectionOnInterconnectResponse (Maybe Text)
-acoirPartnerName = lens _acoirPartnerName (\s a -> s { _acoirPartnerName = a })
-
-acoirRegion :: Lens' AllocateConnectionOnInterconnectResponse (Maybe Text)
-acoirRegion = lens _acoirRegion (\s a -> s { _acoirRegion = a })
-
-acoirVlan :: Lens' AllocateConnectionOnInterconnectResponse (Maybe Int)
-acoirVlan = lens _acoirVlan (\s a -> s { _acoirVlan = a })
-
-instance ToPath AllocateConnectionOnInterconnect where
-    toPath = const "/"
+acoiVlan :: Lens' AllocateConnectionOnInterconnect Int
+acoiVlan = lens _acoiVlan (\ s a -> s{_acoiVlan = a});
 
-instance ToQuery AllocateConnectionOnInterconnect where
-    toQuery = const mempty
+instance AWSRequest AllocateConnectionOnInterconnect
+         where
+        type Sv AllocateConnectionOnInterconnect =
+             DirectConnect
+        type Rs AllocateConnectionOnInterconnect = Connection
+        request = postJSON
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders AllocateConnectionOnInterconnect
-
-instance ToJSON AllocateConnectionOnInterconnect where
-    toJSON AllocateConnectionOnInterconnect{..} = object
-        [ "bandwidth"      .= _acoiBandwidth
-        , "connectionName" .= _acoiConnectionName
-        , "ownerAccount"   .= _acoiOwnerAccount
-        , "interconnectId" .= _acoiInterconnectId
-        , "vlan"           .= _acoiVlan
-        ]
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.AllocateConnectionOnInterconnect"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-instance AWSRequest AllocateConnectionOnInterconnect where
-    type Sv AllocateConnectionOnInterconnect = DirectConnect
-    type Rs AllocateConnectionOnInterconnect = AllocateConnectionOnInterconnectResponse
+instance ToJSON AllocateConnectionOnInterconnect
+         where
+        toJSON AllocateConnectionOnInterconnect'{..}
+          = object
+              ["bandwidth" .= _acoiBandwidth,
+               "connectionName" .= _acoiConnectionName,
+               "ownerAccount" .= _acoiOwnerAccount,
+               "interconnectId" .= _acoiInterconnectId,
+               "vlan" .= _acoiVlan]
 
-    request  = post "AllocateConnectionOnInterconnect"
-    response = jsonResponse
+instance ToPath AllocateConnectionOnInterconnect
+         where
+        toPath = const "/"
 
-instance FromJSON AllocateConnectionOnInterconnectResponse where
-    parseJSON = withObject "AllocateConnectionOnInterconnectResponse" $ \o -> AllocateConnectionOnInterconnectResponse
-        <$> o .:? "bandwidth"
-        <*> o .:? "connectionId"
-        <*> o .:? "connectionName"
-        <*> o .:? "connectionState"
-        <*> o .:? "location"
-        <*> o .:? "ownerAccount"
-        <*> o .:? "partnerName"
-        <*> o .:? "region"
-        <*> o .:? "vlan"
+instance ToQuery AllocateConnectionOnInterconnect
+         where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/DirectConnect/AllocatePrivateVirtualInterface.hs b/gen/Network/AWS/DirectConnect/AllocatePrivateVirtualInterface.hs
--- a/gen/Network/AWS/DirectConnect/AllocatePrivateVirtualInterface.hs
+++ b/gen/Network/AWS/DirectConnect/AllocatePrivateVirtualInterface.hs
@@ -1,293 +1,153 @@
-{-# 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.DirectConnect.AllocatePrivateVirtualInterface
--- 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.
-
--- | Provisions a private virtual interface to be owned by a different customer.
+-- Provisions a private virtual interface to be owned by a different
+-- customer.
 --
--- The owner of a connection calls this function to provision a private virtual
--- interface which will be owned by another AWS customer.
+-- The owner of a connection calls this function to provision a private
+-- virtual interface which will be owned by another AWS customer.
 --
 -- Virtual interfaces created using this function must be confirmed by the
--- virtual interface owner by calling ConfirmPrivateVirtualInterface. Until this
--- step has been completed, the virtual interface will be in 'Confirming' state,
--- and will not be available for handling traffic.
+-- virtual interface owner by calling ConfirmPrivateVirtualInterface. Until
+-- this step has been completed, the virtual interface will be in
+-- \'Confirming\' state, and will not be available for handling traffic.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_AllocatePrivateVirtualInterface.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_AllocatePrivateVirtualInterface.html AWS API Reference> for AllocatePrivateVirtualInterface.
 module Network.AWS.DirectConnect.AllocatePrivateVirtualInterface
     (
-    -- * Request
-      AllocatePrivateVirtualInterface
-    -- ** Request constructor
-    , allocatePrivateVirtualInterface
-    -- ** Request lenses
+    -- * Creating a Request
+      allocatePrivateVirtualInterface
+    , AllocatePrivateVirtualInterface
+    -- * Request Lenses
     , apviConnectionId
-    , apviNewPrivateVirtualInterfaceAllocation
     , apviOwnerAccount
+    , apviNewPrivateVirtualInterfaceAllocation
 
-    -- * Response
-    , AllocatePrivateVirtualInterfaceResponse
-    -- ** Response constructor
-    , allocatePrivateVirtualInterfaceResponse
-    -- ** Response lenses
-    , apvirAmazonAddress
-    , apvirAsn
-    , apvirAuthKey
-    , apvirConnectionId
-    , apvirCustomerAddress
-    , apvirCustomerRouterConfig
-    , apvirLocation
-    , apvirOwnerAccount
-    , apvirRouteFilterPrefixes
-    , apvirVirtualGatewayId
-    , apvirVirtualInterfaceId
-    , apvirVirtualInterfaceName
-    , apvirVirtualInterfaceState
-    , apvirVirtualInterfaceType
-    , apvirVlan
+    -- * Destructuring the Response
+    , virtualInterface
+    , VirtualInterface
+    -- * Response Lenses
+    , viVirtualGatewayId
+    , viRouteFilterPrefixes
+    , viCustomerAddress
+    , viVlan
+    , viLocation
+    , viAmazonAddress
+    , viVirtualInterfaceState
+    , viConnectionId
+    , viAsn
+    , viVirtualInterfaceType
+    , viAuthKey
+    , viCustomerRouterConfig
+    , viOwnerAccount
+    , viVirtualInterfaceName
+    , viVirtualInterfaceId
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-data AllocatePrivateVirtualInterface = AllocatePrivateVirtualInterface
-    { _apviConnectionId                         :: Text
-    , _apviNewPrivateVirtualInterfaceAllocation :: NewPrivateVirtualInterfaceAllocation
-    , _apviOwnerAccount                         :: Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'AllocatePrivateVirtualInterface' constructor.
+-- | Container for the parameters to the AllocatePrivateVirtualInterface
+-- operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'allocatePrivateVirtualInterface' smart constructor.
+data AllocatePrivateVirtualInterface = AllocatePrivateVirtualInterface'
+    { _apviConnectionId                         :: !Text
+    , _apviOwnerAccount                         :: !Text
+    , _apviNewPrivateVirtualInterfaceAllocation :: !NewPrivateVirtualInterfaceAllocation
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AllocatePrivateVirtualInterface' with the minimum fields required to make a request.
 --
--- * 'apviConnectionId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'apviNewPrivateVirtualInterfaceAllocation' @::@ 'NewPrivateVirtualInterfaceAllocation'
+-- * 'apviConnectionId'
 --
--- * 'apviOwnerAccount' @::@ 'Text'
+-- * 'apviOwnerAccount'
 --
-allocatePrivateVirtualInterface :: Text -- ^ 'apviConnectionId'
-                                -> Text -- ^ 'apviOwnerAccount'
-                                -> NewPrivateVirtualInterfaceAllocation -- ^ 'apviNewPrivateVirtualInterfaceAllocation'
-                                -> AllocatePrivateVirtualInterface
-allocatePrivateVirtualInterface p1 p2 p3 = AllocatePrivateVirtualInterface
-    { _apviConnectionId                         = p1
-    , _apviOwnerAccount                         = p2
-    , _apviNewPrivateVirtualInterfaceAllocation = p3
+-- * 'apviNewPrivateVirtualInterfaceAllocation'
+allocatePrivateVirtualInterface
+    :: Text -- ^ 'apviConnectionId'
+    -> Text -- ^ 'apviOwnerAccount'
+    -> NewPrivateVirtualInterfaceAllocation -- ^ 'apviNewPrivateVirtualInterfaceAllocation'
+    -> AllocatePrivateVirtualInterface
+allocatePrivateVirtualInterface pConnectionId_ pOwnerAccount_ pNewPrivateVirtualInterfaceAllocation_ =
+    AllocatePrivateVirtualInterface'
+    { _apviConnectionId = pConnectionId_
+    , _apviOwnerAccount = pOwnerAccount_
+    , _apviNewPrivateVirtualInterfaceAllocation = pNewPrivateVirtualInterfaceAllocation_
     }
 
 -- | The connection ID on which the private virtual interface is provisioned.
 --
 -- Default: None
 apviConnectionId :: Lens' AllocatePrivateVirtualInterface Text
-apviConnectionId = lens _apviConnectionId (\s a -> s { _apviConnectionId = a })
-
--- | Detailed information for the private virtual interface to be provisioned.
---
--- Default: None
-apviNewPrivateVirtualInterfaceAllocation :: Lens' AllocatePrivateVirtualInterface NewPrivateVirtualInterfaceAllocation
-apviNewPrivateVirtualInterfaceAllocation =
-    lens _apviNewPrivateVirtualInterfaceAllocation
-        (\s a -> s { _apviNewPrivateVirtualInterfaceAllocation = a })
+apviConnectionId = lens _apviConnectionId (\ s a -> s{_apviConnectionId = a});
 
 -- | The AWS account that will own the new private virtual interface.
 --
 -- Default: None
 apviOwnerAccount :: Lens' AllocatePrivateVirtualInterface Text
-apviOwnerAccount = lens _apviOwnerAccount (\s a -> s { _apviOwnerAccount = a })
-
-data AllocatePrivateVirtualInterfaceResponse = AllocatePrivateVirtualInterfaceResponse
-    { _apvirAmazonAddress         :: Maybe Text
-    , _apvirAsn                   :: Maybe Int
-    , _apvirAuthKey               :: Maybe Text
-    , _apvirConnectionId          :: Maybe Text
-    , _apvirCustomerAddress       :: Maybe Text
-    , _apvirCustomerRouterConfig  :: Maybe Text
-    , _apvirLocation              :: Maybe Text
-    , _apvirOwnerAccount          :: Maybe Text
-    , _apvirRouteFilterPrefixes   :: List "routeFilterPrefixes" RouteFilterPrefix
-    , _apvirVirtualGatewayId      :: Maybe Text
-    , _apvirVirtualInterfaceId    :: Maybe Text
-    , _apvirVirtualInterfaceName  :: Maybe Text
-    , _apvirVirtualInterfaceState :: Maybe VirtualInterfaceState
-    , _apvirVirtualInterfaceType  :: Maybe Text
-    , _apvirVlan                  :: Maybe Int
-    } deriving (Eq, Read, Show)
+apviOwnerAccount = lens _apviOwnerAccount (\ s a -> s{_apviOwnerAccount = a});
 
--- | 'AllocatePrivateVirtualInterfaceResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'apvirAmazonAddress' @::@ 'Maybe' 'Text'
---
--- * 'apvirAsn' @::@ 'Maybe' 'Int'
---
--- * 'apvirAuthKey' @::@ 'Maybe' 'Text'
---
--- * 'apvirConnectionId' @::@ 'Maybe' 'Text'
---
--- * 'apvirCustomerAddress' @::@ 'Maybe' 'Text'
---
--- * 'apvirCustomerRouterConfig' @::@ 'Maybe' 'Text'
---
--- * 'apvirLocation' @::@ 'Maybe' 'Text'
---
--- * 'apvirOwnerAccount' @::@ 'Maybe' 'Text'
---
--- * 'apvirRouteFilterPrefixes' @::@ ['RouteFilterPrefix']
---
--- * 'apvirVirtualGatewayId' @::@ 'Maybe' 'Text'
---
--- * 'apvirVirtualInterfaceId' @::@ 'Maybe' 'Text'
---
--- * 'apvirVirtualInterfaceName' @::@ 'Maybe' 'Text'
---
--- * 'apvirVirtualInterfaceState' @::@ 'Maybe' 'VirtualInterfaceState'
---
--- * 'apvirVirtualInterfaceType' @::@ 'Maybe' 'Text'
---
--- * 'apvirVlan' @::@ 'Maybe' 'Int'
+-- | Detailed information for the private virtual interface to be
+-- provisioned.
 --
-allocatePrivateVirtualInterfaceResponse :: AllocatePrivateVirtualInterfaceResponse
-allocatePrivateVirtualInterfaceResponse = AllocatePrivateVirtualInterfaceResponse
-    { _apvirOwnerAccount          = Nothing
-    , _apvirVirtualInterfaceId    = Nothing
-    , _apvirLocation              = Nothing
-    , _apvirConnectionId          = Nothing
-    , _apvirVirtualInterfaceType  = Nothing
-    , _apvirVirtualInterfaceName  = Nothing
-    , _apvirVlan                  = Nothing
-    , _apvirAsn                   = Nothing
-    , _apvirAuthKey               = Nothing
-    , _apvirAmazonAddress         = Nothing
-    , _apvirCustomerAddress       = Nothing
-    , _apvirVirtualInterfaceState = Nothing
-    , _apvirCustomerRouterConfig  = Nothing
-    , _apvirVirtualGatewayId      = Nothing
-    , _apvirRouteFilterPrefixes   = mempty
-    }
-
-apvirAmazonAddress :: Lens' AllocatePrivateVirtualInterfaceResponse (Maybe Text)
-apvirAmazonAddress =
-    lens _apvirAmazonAddress (\s a -> s { _apvirAmazonAddress = a })
-
-apvirAsn :: Lens' AllocatePrivateVirtualInterfaceResponse (Maybe Int)
-apvirAsn = lens _apvirAsn (\s a -> s { _apvirAsn = a })
-
-apvirAuthKey :: Lens' AllocatePrivateVirtualInterfaceResponse (Maybe Text)
-apvirAuthKey = lens _apvirAuthKey (\s a -> s { _apvirAuthKey = a })
-
-apvirConnectionId :: Lens' AllocatePrivateVirtualInterfaceResponse (Maybe Text)
-apvirConnectionId =
-    lens _apvirConnectionId (\s a -> s { _apvirConnectionId = a })
-
-apvirCustomerAddress :: Lens' AllocatePrivateVirtualInterfaceResponse (Maybe Text)
-apvirCustomerAddress =
-    lens _apvirCustomerAddress (\s a -> s { _apvirCustomerAddress = a })
-
--- | Information for generating the customer router configuration.
-apvirCustomerRouterConfig :: Lens' AllocatePrivateVirtualInterfaceResponse (Maybe Text)
-apvirCustomerRouterConfig =
-    lens _apvirCustomerRouterConfig
-        (\s a -> s { _apvirCustomerRouterConfig = a })
-
-apvirLocation :: Lens' AllocatePrivateVirtualInterfaceResponse (Maybe Text)
-apvirLocation = lens _apvirLocation (\s a -> s { _apvirLocation = a })
-
-apvirOwnerAccount :: Lens' AllocatePrivateVirtualInterfaceResponse (Maybe Text)
-apvirOwnerAccount =
-    lens _apvirOwnerAccount (\s a -> s { _apvirOwnerAccount = a })
-
-apvirRouteFilterPrefixes :: Lens' AllocatePrivateVirtualInterfaceResponse [RouteFilterPrefix]
-apvirRouteFilterPrefixes =
-    lens _apvirRouteFilterPrefixes
-        (\s a -> s { _apvirRouteFilterPrefixes = a })
-            . _List
-
-apvirVirtualGatewayId :: Lens' AllocatePrivateVirtualInterfaceResponse (Maybe Text)
-apvirVirtualGatewayId =
-    lens _apvirVirtualGatewayId (\s a -> s { _apvirVirtualGatewayId = a })
-
-apvirVirtualInterfaceId :: Lens' AllocatePrivateVirtualInterfaceResponse (Maybe Text)
-apvirVirtualInterfaceId =
-    lens _apvirVirtualInterfaceId (\s a -> s { _apvirVirtualInterfaceId = a })
-
-apvirVirtualInterfaceName :: Lens' AllocatePrivateVirtualInterfaceResponse (Maybe Text)
-apvirVirtualInterfaceName =
-    lens _apvirVirtualInterfaceName
-        (\s a -> s { _apvirVirtualInterfaceName = a })
-
-apvirVirtualInterfaceState :: Lens' AllocatePrivateVirtualInterfaceResponse (Maybe VirtualInterfaceState)
-apvirVirtualInterfaceState =
-    lens _apvirVirtualInterfaceState
-        (\s a -> s { _apvirVirtualInterfaceState = a })
-
-apvirVirtualInterfaceType :: Lens' AllocatePrivateVirtualInterfaceResponse (Maybe Text)
-apvirVirtualInterfaceType =
-    lens _apvirVirtualInterfaceType
-        (\s a -> s { _apvirVirtualInterfaceType = a })
-
-apvirVlan :: Lens' AllocatePrivateVirtualInterfaceResponse (Maybe Int)
-apvirVlan = lens _apvirVlan (\s a -> s { _apvirVlan = a })
-
-instance ToPath AllocatePrivateVirtualInterface where
-    toPath = const "/"
+-- Default: None
+apviNewPrivateVirtualInterfaceAllocation :: Lens' AllocatePrivateVirtualInterface NewPrivateVirtualInterfaceAllocation
+apviNewPrivateVirtualInterfaceAllocation = lens _apviNewPrivateVirtualInterfaceAllocation (\ s a -> s{_apviNewPrivateVirtualInterfaceAllocation = a});
 
-instance ToQuery AllocatePrivateVirtualInterface where
-    toQuery = const mempty
+instance AWSRequest AllocatePrivateVirtualInterface
+         where
+        type Sv AllocatePrivateVirtualInterface =
+             DirectConnect
+        type Rs AllocatePrivateVirtualInterface =
+             VirtualInterface
+        request = postJSON
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders AllocatePrivateVirtualInterface
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.AllocatePrivateVirtualInterface" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON AllocatePrivateVirtualInterface where
-    toJSON AllocatePrivateVirtualInterface{..} = object
-        [ "connectionId"                         .= _apviConnectionId
-        , "ownerAccount"                         .= _apviOwnerAccount
-        , "newPrivateVirtualInterfaceAllocation" .= _apviNewPrivateVirtualInterfaceAllocation
-        ]
-
-instance AWSRequest AllocatePrivateVirtualInterface where
-    type Sv AllocatePrivateVirtualInterface = DirectConnect
-    type Rs AllocatePrivateVirtualInterface = AllocatePrivateVirtualInterfaceResponse
+        toJSON AllocatePrivateVirtualInterface'{..}
+          = object
+              ["connectionId" .= _apviConnectionId,
+               "ownerAccount" .= _apviOwnerAccount,
+               "newPrivateVirtualInterfaceAllocation" .=
+                 _apviNewPrivateVirtualInterfaceAllocation]
 
-    request  = post "AllocatePrivateVirtualInterface"
-    response = jsonResponse
+instance ToPath AllocatePrivateVirtualInterface where
+        toPath = const "/"
 
-instance FromJSON AllocatePrivateVirtualInterfaceResponse where
-    parseJSON = withObject "AllocatePrivateVirtualInterfaceResponse" $ \o -> AllocatePrivateVirtualInterfaceResponse
-        <$> o .:? "amazonAddress"
-        <*> o .:? "asn"
-        <*> o .:? "authKey"
-        <*> o .:? "connectionId"
-        <*> o .:? "customerAddress"
-        <*> o .:? "customerRouterConfig"
-        <*> o .:? "location"
-        <*> o .:? "ownerAccount"
-        <*> o .:? "routeFilterPrefixes" .!= mempty
-        <*> o .:? "virtualGatewayId"
-        <*> o .:? "virtualInterfaceId"
-        <*> o .:? "virtualInterfaceName"
-        <*> o .:? "virtualInterfaceState"
-        <*> o .:? "virtualInterfaceType"
-        <*> o .:? "vlan"
+instance ToQuery AllocatePrivateVirtualInterface
+         where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/DirectConnect/AllocatePublicVirtualInterface.hs b/gen/Network/AWS/DirectConnect/AllocatePublicVirtualInterface.hs
--- a/gen/Network/AWS/DirectConnect/AllocatePublicVirtualInterface.hs
+++ b/gen/Network/AWS/DirectConnect/AllocatePublicVirtualInterface.hs
@@ -1,296 +1,151 @@
-{-# 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.DirectConnect.AllocatePublicVirtualInterface
--- 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.
-
--- | Provisions a public virtual interface to be owned by a different customer.
+-- Provisions a public virtual interface to be owned by a different
+-- customer.
 --
--- The owner of a connection calls this function to provision a public virtual
--- interface which will be owned by another AWS customer.
+-- The owner of a connection calls this function to provision a public
+-- virtual interface which will be owned by another AWS customer.
 --
 -- Virtual interfaces created using this function must be confirmed by the
--- virtual interface owner by calling ConfirmPublicVirtualInterface. Until this
--- step has been completed, the virtual interface will be in 'Confirming' state,
--- and will not be available for handling traffic.
+-- virtual interface owner by calling ConfirmPublicVirtualInterface. Until
+-- this step has been completed, the virtual interface will be in
+-- \'Confirming\' state, and will not be available for handling traffic.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_AllocatePublicVirtualInterface.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_AllocatePublicVirtualInterface.html AWS API Reference> for AllocatePublicVirtualInterface.
 module Network.AWS.DirectConnect.AllocatePublicVirtualInterface
     (
-    -- * Request
-      AllocatePublicVirtualInterface
-    -- ** Request constructor
-    , allocatePublicVirtualInterface
-    -- ** Request lenses
-    , apvi1ConnectionId
-    , apvi1NewPublicVirtualInterfaceAllocation
-    , apvi1OwnerAccount
+    -- * Creating a Request
+      allocatePublicVirtualInterface
+    , AllocatePublicVirtualInterface
+    -- * Request Lenses
+    , aConnectionId
+    , aOwnerAccount
+    , aNewPublicVirtualInterfaceAllocation
 
-    -- * Response
-    , AllocatePublicVirtualInterfaceResponse
-    -- ** Response constructor
-    , allocatePublicVirtualInterfaceResponse
-    -- ** Response lenses
-    , apvir1AmazonAddress
-    , apvir1Asn
-    , apvir1AuthKey
-    , apvir1ConnectionId
-    , apvir1CustomerAddress
-    , apvir1CustomerRouterConfig
-    , apvir1Location
-    , apvir1OwnerAccount
-    , apvir1RouteFilterPrefixes
-    , apvir1VirtualGatewayId
-    , apvir1VirtualInterfaceId
-    , apvir1VirtualInterfaceName
-    , apvir1VirtualInterfaceState
-    , apvir1VirtualInterfaceType
-    , apvir1Vlan
+    -- * Destructuring the Response
+    , virtualInterface
+    , VirtualInterface
+    -- * Response Lenses
+    , viVirtualGatewayId
+    , viRouteFilterPrefixes
+    , viCustomerAddress
+    , viVlan
+    , viLocation
+    , viAmazonAddress
+    , viVirtualInterfaceState
+    , viConnectionId
+    , viAsn
+    , viVirtualInterfaceType
+    , viAuthKey
+    , viCustomerRouterConfig
+    , viOwnerAccount
+    , viVirtualInterfaceName
+    , viVirtualInterfaceId
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-data AllocatePublicVirtualInterface = AllocatePublicVirtualInterface
-    { _apvi1ConnectionId                        :: Text
-    , _apvi1NewPublicVirtualInterfaceAllocation :: NewPublicVirtualInterfaceAllocation
-    , _apvi1OwnerAccount                        :: Text
-    } deriving (Eq, Read, Show)
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'AllocatePublicVirtualInterface' constructor.
+-- | Container for the parameters to the AllocatePublicVirtualInterface
+-- operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'allocatePublicVirtualInterface' smart constructor.
+data AllocatePublicVirtualInterface = AllocatePublicVirtualInterface'
+    { _aConnectionId                        :: !Text
+    , _aOwnerAccount                        :: !Text
+    , _aNewPublicVirtualInterfaceAllocation :: !NewPublicVirtualInterfaceAllocation
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AllocatePublicVirtualInterface' with the minimum fields required to make a request.
 --
--- * 'apvi1ConnectionId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'apvi1NewPublicVirtualInterfaceAllocation' @::@ 'NewPublicVirtualInterfaceAllocation'
+-- * 'aConnectionId'
 --
--- * 'apvi1OwnerAccount' @::@ 'Text'
+-- * 'aOwnerAccount'
 --
-allocatePublicVirtualInterface :: Text -- ^ 'apvi1ConnectionId'
-                               -> Text -- ^ 'apvi1OwnerAccount'
-                               -> NewPublicVirtualInterfaceAllocation -- ^ 'apvi1NewPublicVirtualInterfaceAllocation'
-                               -> AllocatePublicVirtualInterface
-allocatePublicVirtualInterface p1 p2 p3 = AllocatePublicVirtualInterface
-    { _apvi1ConnectionId                        = p1
-    , _apvi1OwnerAccount                        = p2
-    , _apvi1NewPublicVirtualInterfaceAllocation = p3
+-- * 'aNewPublicVirtualInterfaceAllocation'
+allocatePublicVirtualInterface
+    :: Text -- ^ 'aConnectionId'
+    -> Text -- ^ 'aOwnerAccount'
+    -> NewPublicVirtualInterfaceAllocation -- ^ 'aNewPublicVirtualInterfaceAllocation'
+    -> AllocatePublicVirtualInterface
+allocatePublicVirtualInterface pConnectionId_ pOwnerAccount_ pNewPublicVirtualInterfaceAllocation_ =
+    AllocatePublicVirtualInterface'
+    { _aConnectionId = pConnectionId_
+    , _aOwnerAccount = pOwnerAccount_
+    , _aNewPublicVirtualInterfaceAllocation = pNewPublicVirtualInterfaceAllocation_
     }
 
 -- | The connection ID on which the public virtual interface is provisioned.
 --
 -- Default: None
-apvi1ConnectionId :: Lens' AllocatePublicVirtualInterface Text
-apvi1ConnectionId =
-    lens _apvi1ConnectionId (\s a -> s { _apvi1ConnectionId = a })
-
--- | Detailed information for the public virtual interface to be provisioned.
---
--- Default: None
-apvi1NewPublicVirtualInterfaceAllocation :: Lens' AllocatePublicVirtualInterface NewPublicVirtualInterfaceAllocation
-apvi1NewPublicVirtualInterfaceAllocation =
-    lens _apvi1NewPublicVirtualInterfaceAllocation
-        (\s a -> s { _apvi1NewPublicVirtualInterfaceAllocation = a })
+aConnectionId :: Lens' AllocatePublicVirtualInterface Text
+aConnectionId = lens _aConnectionId (\ s a -> s{_aConnectionId = a});
 
 -- | The AWS account that will own the new public virtual interface.
 --
 -- Default: None
-apvi1OwnerAccount :: Lens' AllocatePublicVirtualInterface Text
-apvi1OwnerAccount =
-    lens _apvi1OwnerAccount (\s a -> s { _apvi1OwnerAccount = a })
-
-data AllocatePublicVirtualInterfaceResponse = AllocatePublicVirtualInterfaceResponse
-    { _apvir1AmazonAddress         :: Maybe Text
-    , _apvir1Asn                   :: Maybe Int
-    , _apvir1AuthKey               :: Maybe Text
-    , _apvir1ConnectionId          :: Maybe Text
-    , _apvir1CustomerAddress       :: Maybe Text
-    , _apvir1CustomerRouterConfig  :: Maybe Text
-    , _apvir1Location              :: Maybe Text
-    , _apvir1OwnerAccount          :: Maybe Text
-    , _apvir1RouteFilterPrefixes   :: List "routeFilterPrefixes" RouteFilterPrefix
-    , _apvir1VirtualGatewayId      :: Maybe Text
-    , _apvir1VirtualInterfaceId    :: Maybe Text
-    , _apvir1VirtualInterfaceName  :: Maybe Text
-    , _apvir1VirtualInterfaceState :: Maybe VirtualInterfaceState
-    , _apvir1VirtualInterfaceType  :: Maybe Text
-    , _apvir1Vlan                  :: Maybe Int
-    } deriving (Eq, Read, Show)
+aOwnerAccount :: Lens' AllocatePublicVirtualInterface Text
+aOwnerAccount = lens _aOwnerAccount (\ s a -> s{_aOwnerAccount = a});
 
--- | 'AllocatePublicVirtualInterfaceResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'apvir1AmazonAddress' @::@ 'Maybe' 'Text'
---
--- * 'apvir1Asn' @::@ 'Maybe' 'Int'
---
--- * 'apvir1AuthKey' @::@ 'Maybe' 'Text'
---
--- * 'apvir1ConnectionId' @::@ 'Maybe' 'Text'
---
--- * 'apvir1CustomerAddress' @::@ 'Maybe' 'Text'
---
--- * 'apvir1CustomerRouterConfig' @::@ 'Maybe' 'Text'
---
--- * 'apvir1Location' @::@ 'Maybe' 'Text'
---
--- * 'apvir1OwnerAccount' @::@ 'Maybe' 'Text'
---
--- * 'apvir1RouteFilterPrefixes' @::@ ['RouteFilterPrefix']
---
--- * 'apvir1VirtualGatewayId' @::@ 'Maybe' 'Text'
---
--- * 'apvir1VirtualInterfaceId' @::@ 'Maybe' 'Text'
---
--- * 'apvir1VirtualInterfaceName' @::@ 'Maybe' 'Text'
---
--- * 'apvir1VirtualInterfaceState' @::@ 'Maybe' 'VirtualInterfaceState'
---
--- * 'apvir1VirtualInterfaceType' @::@ 'Maybe' 'Text'
---
--- * 'apvir1Vlan' @::@ 'Maybe' 'Int'
+-- | Detailed information for the public virtual interface to be provisioned.
 --
-allocatePublicVirtualInterfaceResponse :: AllocatePublicVirtualInterfaceResponse
-allocatePublicVirtualInterfaceResponse = AllocatePublicVirtualInterfaceResponse
-    { _apvir1OwnerAccount          = Nothing
-    , _apvir1VirtualInterfaceId    = Nothing
-    , _apvir1Location              = Nothing
-    , _apvir1ConnectionId          = Nothing
-    , _apvir1VirtualInterfaceType  = Nothing
-    , _apvir1VirtualInterfaceName  = Nothing
-    , _apvir1Vlan                  = Nothing
-    , _apvir1Asn                   = Nothing
-    , _apvir1AuthKey               = Nothing
-    , _apvir1AmazonAddress         = Nothing
-    , _apvir1CustomerAddress       = Nothing
-    , _apvir1VirtualInterfaceState = Nothing
-    , _apvir1CustomerRouterConfig  = Nothing
-    , _apvir1VirtualGatewayId      = Nothing
-    , _apvir1RouteFilterPrefixes   = mempty
-    }
-
-apvir1AmazonAddress :: Lens' AllocatePublicVirtualInterfaceResponse (Maybe Text)
-apvir1AmazonAddress =
-    lens _apvir1AmazonAddress (\s a -> s { _apvir1AmazonAddress = a })
-
-apvir1Asn :: Lens' AllocatePublicVirtualInterfaceResponse (Maybe Int)
-apvir1Asn = lens _apvir1Asn (\s a -> s { _apvir1Asn = a })
-
-apvir1AuthKey :: Lens' AllocatePublicVirtualInterfaceResponse (Maybe Text)
-apvir1AuthKey = lens _apvir1AuthKey (\s a -> s { _apvir1AuthKey = a })
-
-apvir1ConnectionId :: Lens' AllocatePublicVirtualInterfaceResponse (Maybe Text)
-apvir1ConnectionId =
-    lens _apvir1ConnectionId (\s a -> s { _apvir1ConnectionId = a })
-
-apvir1CustomerAddress :: Lens' AllocatePublicVirtualInterfaceResponse (Maybe Text)
-apvir1CustomerAddress =
-    lens _apvir1CustomerAddress (\s a -> s { _apvir1CustomerAddress = a })
-
--- | Information for generating the customer router configuration.
-apvir1CustomerRouterConfig :: Lens' AllocatePublicVirtualInterfaceResponse (Maybe Text)
-apvir1CustomerRouterConfig =
-    lens _apvir1CustomerRouterConfig
-        (\s a -> s { _apvir1CustomerRouterConfig = a })
-
-apvir1Location :: Lens' AllocatePublicVirtualInterfaceResponse (Maybe Text)
-apvir1Location = lens _apvir1Location (\s a -> s { _apvir1Location = a })
-
-apvir1OwnerAccount :: Lens' AllocatePublicVirtualInterfaceResponse (Maybe Text)
-apvir1OwnerAccount =
-    lens _apvir1OwnerAccount (\s a -> s { _apvir1OwnerAccount = a })
-
-apvir1RouteFilterPrefixes :: Lens' AllocatePublicVirtualInterfaceResponse [RouteFilterPrefix]
-apvir1RouteFilterPrefixes =
-    lens _apvir1RouteFilterPrefixes
-        (\s a -> s { _apvir1RouteFilterPrefixes = a })
-            . _List
-
-apvir1VirtualGatewayId :: Lens' AllocatePublicVirtualInterfaceResponse (Maybe Text)
-apvir1VirtualGatewayId =
-    lens _apvir1VirtualGatewayId (\s a -> s { _apvir1VirtualGatewayId = a })
-
-apvir1VirtualInterfaceId :: Lens' AllocatePublicVirtualInterfaceResponse (Maybe Text)
-apvir1VirtualInterfaceId =
-    lens _apvir1VirtualInterfaceId
-        (\s a -> s { _apvir1VirtualInterfaceId = a })
-
-apvir1VirtualInterfaceName :: Lens' AllocatePublicVirtualInterfaceResponse (Maybe Text)
-apvir1VirtualInterfaceName =
-    lens _apvir1VirtualInterfaceName
-        (\s a -> s { _apvir1VirtualInterfaceName = a })
-
-apvir1VirtualInterfaceState :: Lens' AllocatePublicVirtualInterfaceResponse (Maybe VirtualInterfaceState)
-apvir1VirtualInterfaceState =
-    lens _apvir1VirtualInterfaceState
-        (\s a -> s { _apvir1VirtualInterfaceState = a })
-
-apvir1VirtualInterfaceType :: Lens' AllocatePublicVirtualInterfaceResponse (Maybe Text)
-apvir1VirtualInterfaceType =
-    lens _apvir1VirtualInterfaceType
-        (\s a -> s { _apvir1VirtualInterfaceType = a })
-
-apvir1Vlan :: Lens' AllocatePublicVirtualInterfaceResponse (Maybe Int)
-apvir1Vlan = lens _apvir1Vlan (\s a -> s { _apvir1Vlan = a })
-
-instance ToPath AllocatePublicVirtualInterface where
-    toPath = const "/"
+-- Default: None
+aNewPublicVirtualInterfaceAllocation :: Lens' AllocatePublicVirtualInterface NewPublicVirtualInterfaceAllocation
+aNewPublicVirtualInterfaceAllocation = lens _aNewPublicVirtualInterfaceAllocation (\ s a -> s{_aNewPublicVirtualInterfaceAllocation = a});
 
-instance ToQuery AllocatePublicVirtualInterface where
-    toQuery = const mempty
+instance AWSRequest AllocatePublicVirtualInterface
+         where
+        type Sv AllocatePublicVirtualInterface =
+             DirectConnect
+        type Rs AllocatePublicVirtualInterface =
+             VirtualInterface
+        request = postJSON
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders AllocatePublicVirtualInterface
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.AllocatePublicVirtualInterface" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON AllocatePublicVirtualInterface where
-    toJSON AllocatePublicVirtualInterface{..} = object
-        [ "connectionId"                        .= _apvi1ConnectionId
-        , "ownerAccount"                        .= _apvi1OwnerAccount
-        , "newPublicVirtualInterfaceAllocation" .= _apvi1NewPublicVirtualInterfaceAllocation
-        ]
-
-instance AWSRequest AllocatePublicVirtualInterface where
-    type Sv AllocatePublicVirtualInterface = DirectConnect
-    type Rs AllocatePublicVirtualInterface = AllocatePublicVirtualInterfaceResponse
+        toJSON AllocatePublicVirtualInterface'{..}
+          = object
+              ["connectionId" .= _aConnectionId,
+               "ownerAccount" .= _aOwnerAccount,
+               "newPublicVirtualInterfaceAllocation" .=
+                 _aNewPublicVirtualInterfaceAllocation]
 
-    request  = post "AllocatePublicVirtualInterface"
-    response = jsonResponse
+instance ToPath AllocatePublicVirtualInterface where
+        toPath = const "/"
 
-instance FromJSON AllocatePublicVirtualInterfaceResponse where
-    parseJSON = withObject "AllocatePublicVirtualInterfaceResponse" $ \o -> AllocatePublicVirtualInterfaceResponse
-        <$> o .:? "amazonAddress"
-        <*> o .:? "asn"
-        <*> o .:? "authKey"
-        <*> o .:? "connectionId"
-        <*> o .:? "customerAddress"
-        <*> o .:? "customerRouterConfig"
-        <*> o .:? "location"
-        <*> o .:? "ownerAccount"
-        <*> o .:? "routeFilterPrefixes" .!= mempty
-        <*> o .:? "virtualGatewayId"
-        <*> o .:? "virtualInterfaceId"
-        <*> o .:? "virtualInterfaceName"
-        <*> o .:? "virtualInterfaceState"
-        <*> o .:? "virtualInterfaceType"
-        <*> o .:? "vlan"
+instance ToQuery AllocatePublicVirtualInterface where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/DirectConnect/ConfirmConnection.hs b/gen/Network/AWS/DirectConnect/ConfirmConnection.hs
--- a/gen/Network/AWS/DirectConnect/ConfirmConnection.hs
+++ b/gen/Network/AWS/DirectConnect/ConfirmConnection.hs
@@ -1,115 +1,133 @@
-{-# 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.DirectConnect.ConfirmConnection
--- 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.
-
--- | Confirm the creation of a hosted connection on an interconnect.
+-- Confirm the creation of a hosted connection on an interconnect.
 --
--- Upon creation, the hosted connection is initially in the 'Ordering' state,
--- and will remain in this state until the owner calls ConfirmConnection to
--- confirm creation of the hosted connection.
+-- Upon creation, the hosted connection is initially in the \'Ordering\'
+-- state, and will remain in this state until the owner calls
+-- ConfirmConnection to confirm creation of the hosted connection.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_ConfirmConnection.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_ConfirmConnection.html AWS API Reference> for ConfirmConnection.
 module Network.AWS.DirectConnect.ConfirmConnection
     (
-    -- * Request
-      ConfirmConnection
-    -- ** Request constructor
-    , confirmConnection
-    -- ** Request lenses
+    -- * Creating a Request
+      confirmConnection
+    , ConfirmConnection
+    -- * Request Lenses
     , ccConnectionId
 
-    -- * Response
-    , ConfirmConnectionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , confirmConnectionResponse
-    -- ** Response lenses
-    , ccr1ConnectionState
+    , ConfirmConnectionResponse
+    -- * Response Lenses
+    , ccrsConnectionState
+    , ccrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype ConfirmConnection = ConfirmConnection
+-- | Container for the parameters to the ConfirmConnection operation.
+--
+-- /See:/ 'confirmConnection' smart constructor.
+newtype ConfirmConnection = ConfirmConnection'
     { _ccConnectionId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ConfirmConnection' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'ConfirmConnection' with the minimum fields required to make a request.
 --
--- * 'ccConnectionId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-confirmConnection :: Text -- ^ 'ccConnectionId'
-                  -> ConfirmConnection
-confirmConnection p1 = ConfirmConnection
-    { _ccConnectionId = p1
+-- * 'ccConnectionId'
+confirmConnection
+    :: Text -- ^ 'ccConnectionId'
+    -> ConfirmConnection
+confirmConnection pConnectionId_ =
+    ConfirmConnection'
+    { _ccConnectionId = pConnectionId_
     }
 
+-- | Undocumented member.
 ccConnectionId :: Lens' ConfirmConnection Text
-ccConnectionId = lens _ccConnectionId (\s a -> s { _ccConnectionId = a })
+ccConnectionId = lens _ccConnectionId (\ s a -> s{_ccConnectionId = a});
 
-newtype ConfirmConnectionResponse = ConfirmConnectionResponse
-    { _ccr1ConnectionState :: Maybe ConnectionState
-    } deriving (Eq, Read, Show)
+instance AWSRequest ConfirmConnection where
+        type Sv ConfirmConnection = DirectConnect
+        type Rs ConfirmConnection = ConfirmConnectionResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ConfirmConnectionResponse' <$>
+                   (x .?> "connectionState") <*> (pure (fromEnum s)))
 
--- | 'ConfirmConnectionResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ccr1ConnectionState' @::@ 'Maybe' 'ConnectionState'
---
-confirmConnectionResponse :: ConfirmConnectionResponse
-confirmConnectionResponse = ConfirmConnectionResponse
-    { _ccr1ConnectionState = Nothing
-    }
+instance ToHeaders ConfirmConnection where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.ConfirmConnection" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-ccr1ConnectionState :: Lens' ConfirmConnectionResponse (Maybe ConnectionState)
-ccr1ConnectionState =
-    lens _ccr1ConnectionState (\s a -> s { _ccr1ConnectionState = a })
+instance ToJSON ConfirmConnection where
+        toJSON ConfirmConnection'{..}
+          = object ["connectionId" .= _ccConnectionId]
 
 instance ToPath ConfirmConnection where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ConfirmConnection where
-    toQuery = const mempty
-
-instance ToHeaders ConfirmConnection
+        toQuery = const mempty
 
-instance ToJSON ConfirmConnection where
-    toJSON ConfirmConnection{..} = object
-        [ "connectionId" .= _ccConnectionId
-        ]
+-- | The response received when ConfirmConnection is called.
+--
+-- /See:/ 'confirmConnectionResponse' smart constructor.
+data ConfirmConnectionResponse = ConfirmConnectionResponse'
+    { _ccrsConnectionState :: !(Maybe ConnectionState)
+    , _ccrsStatus          :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ConfirmConnection where
-    type Sv ConfirmConnection = DirectConnect
-    type Rs ConfirmConnection = ConfirmConnectionResponse
+-- | Creates a value of 'ConfirmConnectionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccrsConnectionState'
+--
+-- * 'ccrsStatus'
+confirmConnectionResponse
+    :: Int -- ^ 'ccrsStatus'
+    -> ConfirmConnectionResponse
+confirmConnectionResponse pStatus_ =
+    ConfirmConnectionResponse'
+    { _ccrsConnectionState = Nothing
+    , _ccrsStatus = pStatus_
+    }
 
-    request  = post "ConfirmConnection"
-    response = jsonResponse
+-- | Undocumented member.
+ccrsConnectionState :: Lens' ConfirmConnectionResponse (Maybe ConnectionState)
+ccrsConnectionState = lens _ccrsConnectionState (\ s a -> s{_ccrsConnectionState = a});
 
-instance FromJSON ConfirmConnectionResponse where
-    parseJSON = withObject "ConfirmConnectionResponse" $ \o -> ConfirmConnectionResponse
-        <$> o .:? "connectionState"
+-- | The response status code.
+ccrsStatus :: Lens' ConfirmConnectionResponse Int
+ccrsStatus = lens _ccrsStatus (\ s a -> s{_ccrsStatus = a});
diff --git a/gen/Network/AWS/DirectConnect/ConfirmPrivateVirtualInterface.hs b/gen/Network/AWS/DirectConnect/ConfirmPrivateVirtualInterface.hs
--- a/gen/Network/AWS/DirectConnect/ConfirmPrivateVirtualInterface.hs
+++ b/gen/Network/AWS/DirectConnect/ConfirmPrivateVirtualInterface.hs
@@ -1,135 +1,161 @@
-{-# 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.DirectConnect.ConfirmPrivateVirtualInterface
--- 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.
-
--- | Accept ownership of a private virtual interface created by another customer.
+-- Accept ownership of a private virtual interface created by another
+-- customer.
 --
--- After the virtual interface owner calls this function, the virtual interface
--- will be created and attached to the given virtual private gateway, and will
--- be available for handling traffic.
+-- After the virtual interface owner calls this function, the virtual
+-- interface will be created and attached to the given virtual private
+-- gateway, and will be available for handling traffic.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_ConfirmPrivateVirtualInterface.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_ConfirmPrivateVirtualInterface.html AWS API Reference> for ConfirmPrivateVirtualInterface.
 module Network.AWS.DirectConnect.ConfirmPrivateVirtualInterface
     (
-    -- * Request
-      ConfirmPrivateVirtualInterface
-    -- ** Request constructor
-    , confirmPrivateVirtualInterface
-    -- ** Request lenses
-    , cpviVirtualGatewayId
+    -- * Creating a Request
+      confirmPrivateVirtualInterface
+    , ConfirmPrivateVirtualInterface
+    -- * Request Lenses
     , cpviVirtualInterfaceId
+    , cpviVirtualGatewayId
 
-    -- * Response
-    , ConfirmPrivateVirtualInterfaceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , confirmPrivateVirtualInterfaceResponse
-    -- ** Response lenses
-    , cpvir1VirtualInterfaceState
+    , ConfirmPrivateVirtualInterfaceResponse
+    -- * Response Lenses
+    , cpvirsVirtualInterfaceState
+    , cpvirsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-data ConfirmPrivateVirtualInterface = ConfirmPrivateVirtualInterface
-    { _cpviVirtualGatewayId   :: Text
-    , _cpviVirtualInterfaceId :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ConfirmPrivateVirtualInterface' constructor.
+-- | Container for the parameters to the ConfirmPrivateVirtualInterface
+-- operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'confirmPrivateVirtualInterface' smart constructor.
+data ConfirmPrivateVirtualInterface = ConfirmPrivateVirtualInterface'
+    { _cpviVirtualInterfaceId :: !Text
+    , _cpviVirtualGatewayId   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConfirmPrivateVirtualInterface' with the minimum fields required to make a request.
 --
--- * 'cpviVirtualGatewayId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cpviVirtualInterfaceId' @::@ 'Text'
+-- * 'cpviVirtualInterfaceId'
 --
-confirmPrivateVirtualInterface :: Text -- ^ 'cpviVirtualInterfaceId'
-                               -> Text -- ^ 'cpviVirtualGatewayId'
-                               -> ConfirmPrivateVirtualInterface
-confirmPrivateVirtualInterface p1 p2 = ConfirmPrivateVirtualInterface
-    { _cpviVirtualInterfaceId = p1
-    , _cpviVirtualGatewayId   = p2
+-- * 'cpviVirtualGatewayId'
+confirmPrivateVirtualInterface
+    :: Text -- ^ 'cpviVirtualInterfaceId'
+    -> Text -- ^ 'cpviVirtualGatewayId'
+    -> ConfirmPrivateVirtualInterface
+confirmPrivateVirtualInterface pVirtualInterfaceId_ pVirtualGatewayId_ =
+    ConfirmPrivateVirtualInterface'
+    { _cpviVirtualInterfaceId = pVirtualInterfaceId_
+    , _cpviVirtualGatewayId = pVirtualGatewayId_
     }
 
+-- | Undocumented member.
+cpviVirtualInterfaceId :: Lens' ConfirmPrivateVirtualInterface Text
+cpviVirtualInterfaceId = lens _cpviVirtualInterfaceId (\ s a -> s{_cpviVirtualInterfaceId = a});
+
 -- | ID of the virtual private gateway that will be attached to the virtual
 -- interface.
 --
 -- A virtual private gateway can be managed via the Amazon Virtual Private
--- Cloud (VPC) console or the <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateVpnGateway.html EC2 CreateVpnGateway> action.
+-- Cloud (VPC) console or the
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateVpnGateway.html EC2 CreateVpnGateway>
+-- action.
 --
 -- Default: None
 cpviVirtualGatewayId :: Lens' ConfirmPrivateVirtualInterface Text
-cpviVirtualGatewayId =
-    lens _cpviVirtualGatewayId (\s a -> s { _cpviVirtualGatewayId = a })
-
-cpviVirtualInterfaceId :: Lens' ConfirmPrivateVirtualInterface Text
-cpviVirtualInterfaceId =
-    lens _cpviVirtualInterfaceId (\s a -> s { _cpviVirtualInterfaceId = a })
+cpviVirtualGatewayId = lens _cpviVirtualGatewayId (\ s a -> s{_cpviVirtualGatewayId = a});
 
-newtype ConfirmPrivateVirtualInterfaceResponse = ConfirmPrivateVirtualInterfaceResponse
-    { _cpvir1VirtualInterfaceState :: Maybe VirtualInterfaceState
-    } deriving (Eq, Read, Show)
+instance AWSRequest ConfirmPrivateVirtualInterface
+         where
+        type Sv ConfirmPrivateVirtualInterface =
+             DirectConnect
+        type Rs ConfirmPrivateVirtualInterface =
+             ConfirmPrivateVirtualInterfaceResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ConfirmPrivateVirtualInterfaceResponse' <$>
+                   (x .?> "virtualInterfaceState") <*>
+                     (pure (fromEnum s)))
 
--- | 'ConfirmPrivateVirtualInterfaceResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cpvir1VirtualInterfaceState' @::@ 'Maybe' 'VirtualInterfaceState'
---
-confirmPrivateVirtualInterfaceResponse :: ConfirmPrivateVirtualInterfaceResponse
-confirmPrivateVirtualInterfaceResponse = ConfirmPrivateVirtualInterfaceResponse
-    { _cpvir1VirtualInterfaceState = Nothing
-    }
+instance ToHeaders ConfirmPrivateVirtualInterface
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.ConfirmPrivateVirtualInterface" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-cpvir1VirtualInterfaceState :: Lens' ConfirmPrivateVirtualInterfaceResponse (Maybe VirtualInterfaceState)
-cpvir1VirtualInterfaceState =
-    lens _cpvir1VirtualInterfaceState
-        (\s a -> s { _cpvir1VirtualInterfaceState = a })
+instance ToJSON ConfirmPrivateVirtualInterface where
+        toJSON ConfirmPrivateVirtualInterface'{..}
+          = object
+              ["virtualInterfaceId" .= _cpviVirtualInterfaceId,
+               "virtualGatewayId" .= _cpviVirtualGatewayId]
 
 instance ToPath ConfirmPrivateVirtualInterface where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ConfirmPrivateVirtualInterface where
-    toQuery = const mempty
-
-instance ToHeaders ConfirmPrivateVirtualInterface
+        toQuery = const mempty
 
-instance ToJSON ConfirmPrivateVirtualInterface where
-    toJSON ConfirmPrivateVirtualInterface{..} = object
-        [ "virtualInterfaceId" .= _cpviVirtualInterfaceId
-        , "virtualGatewayId"   .= _cpviVirtualGatewayId
-        ]
+-- | The response received when ConfirmPrivateVirtualInterface is called.
+--
+-- /See:/ 'confirmPrivateVirtualInterfaceResponse' smart constructor.
+data ConfirmPrivateVirtualInterfaceResponse = ConfirmPrivateVirtualInterfaceResponse'
+    { _cpvirsVirtualInterfaceState :: !(Maybe VirtualInterfaceState)
+    , _cpvirsStatus                :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ConfirmPrivateVirtualInterface where
-    type Sv ConfirmPrivateVirtualInterface = DirectConnect
-    type Rs ConfirmPrivateVirtualInterface = ConfirmPrivateVirtualInterfaceResponse
+-- | Creates a value of 'ConfirmPrivateVirtualInterfaceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cpvirsVirtualInterfaceState'
+--
+-- * 'cpvirsStatus'
+confirmPrivateVirtualInterfaceResponse
+    :: Int -- ^ 'cpvirsStatus'
+    -> ConfirmPrivateVirtualInterfaceResponse
+confirmPrivateVirtualInterfaceResponse pStatus_ =
+    ConfirmPrivateVirtualInterfaceResponse'
+    { _cpvirsVirtualInterfaceState = Nothing
+    , _cpvirsStatus = pStatus_
+    }
 
-    request  = post "ConfirmPrivateVirtualInterface"
-    response = jsonResponse
+-- | Undocumented member.
+cpvirsVirtualInterfaceState :: Lens' ConfirmPrivateVirtualInterfaceResponse (Maybe VirtualInterfaceState)
+cpvirsVirtualInterfaceState = lens _cpvirsVirtualInterfaceState (\ s a -> s{_cpvirsVirtualInterfaceState = a});
 
-instance FromJSON ConfirmPrivateVirtualInterfaceResponse where
-    parseJSON = withObject "ConfirmPrivateVirtualInterfaceResponse" $ \o -> ConfirmPrivateVirtualInterfaceResponse
-        <$> o .:? "virtualInterfaceState"
+-- | The response status code.
+cpvirsStatus :: Lens' ConfirmPrivateVirtualInterfaceResponse Int
+cpvirsStatus = lens _cpvirsStatus (\ s a -> s{_cpvirsStatus = a});
diff --git a/gen/Network/AWS/DirectConnect/ConfirmPublicVirtualInterface.hs b/gen/Network/AWS/DirectConnect/ConfirmPublicVirtualInterface.hs
--- a/gen/Network/AWS/DirectConnect/ConfirmPublicVirtualInterface.hs
+++ b/gen/Network/AWS/DirectConnect/ConfirmPublicVirtualInterface.hs
@@ -1,116 +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.DirectConnect.ConfirmPublicVirtualInterface
--- 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.
-
--- | Accept ownership of a public virtual interface created by another customer.
+-- Accept ownership of a public virtual interface created by another
+-- customer.
 --
--- After the virtual interface owner calls this function, the specified virtual
--- interface will be created and made available for handling traffic.
+-- After the virtual interface owner calls this function, the specified
+-- virtual interface will be created and made available for handling
+-- traffic.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_ConfirmPublicVirtualInterface.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_ConfirmPublicVirtualInterface.html AWS API Reference> for ConfirmPublicVirtualInterface.
 module Network.AWS.DirectConnect.ConfirmPublicVirtualInterface
     (
-    -- * Request
-      ConfirmPublicVirtualInterface
-    -- ** Request constructor
-    , confirmPublicVirtualInterface
-    -- ** Request lenses
-    , cpvi1VirtualInterfaceId
+    -- * Creating a Request
+      confirmPublicVirtualInterface
+    , ConfirmPublicVirtualInterface
+    -- * Request Lenses
+    , cVirtualInterfaceId
 
-    -- * Response
-    , ConfirmPublicVirtualInterfaceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , confirmPublicVirtualInterfaceResponse
-    -- ** Response lenses
-    , cpvir3VirtualInterfaceState
+    , ConfirmPublicVirtualInterfaceResponse
+    -- * Response Lenses
+    , crsVirtualInterfaceState
+    , crsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-newtype ConfirmPublicVirtualInterface = ConfirmPublicVirtualInterface
-    { _cpvi1VirtualInterfaceId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ConfirmPublicVirtualInterface' constructor.
+-- | Container for the parameters to the ConfirmPublicVirtualInterface
+-- operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'confirmPublicVirtualInterface' smart constructor.
+newtype ConfirmPublicVirtualInterface = ConfirmPublicVirtualInterface'
+    { _cVirtualInterfaceId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConfirmPublicVirtualInterface' with the minimum fields required to make a request.
 --
--- * 'cpvi1VirtualInterfaceId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-confirmPublicVirtualInterface :: Text -- ^ 'cpvi1VirtualInterfaceId'
-                              -> ConfirmPublicVirtualInterface
-confirmPublicVirtualInterface p1 = ConfirmPublicVirtualInterface
-    { _cpvi1VirtualInterfaceId = p1
+-- * 'cVirtualInterfaceId'
+confirmPublicVirtualInterface
+    :: Text -- ^ 'cVirtualInterfaceId'
+    -> ConfirmPublicVirtualInterface
+confirmPublicVirtualInterface pVirtualInterfaceId_ =
+    ConfirmPublicVirtualInterface'
+    { _cVirtualInterfaceId = pVirtualInterfaceId_
     }
 
-cpvi1VirtualInterfaceId :: Lens' ConfirmPublicVirtualInterface Text
-cpvi1VirtualInterfaceId =
-    lens _cpvi1VirtualInterfaceId (\s a -> s { _cpvi1VirtualInterfaceId = a })
+-- | Undocumented member.
+cVirtualInterfaceId :: Lens' ConfirmPublicVirtualInterface Text
+cVirtualInterfaceId = lens _cVirtualInterfaceId (\ s a -> s{_cVirtualInterfaceId = a});
 
-newtype ConfirmPublicVirtualInterfaceResponse = ConfirmPublicVirtualInterfaceResponse
-    { _cpvir3VirtualInterfaceState :: Maybe VirtualInterfaceState
-    } deriving (Eq, Read, Show)
+instance AWSRequest ConfirmPublicVirtualInterface
+         where
+        type Sv ConfirmPublicVirtualInterface = DirectConnect
+        type Rs ConfirmPublicVirtualInterface =
+             ConfirmPublicVirtualInterfaceResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ConfirmPublicVirtualInterfaceResponse' <$>
+                   (x .?> "virtualInterfaceState") <*>
+                     (pure (fromEnum s)))
 
--- | 'ConfirmPublicVirtualInterfaceResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cpvir3VirtualInterfaceState' @::@ 'Maybe' 'VirtualInterfaceState'
---
-confirmPublicVirtualInterfaceResponse :: ConfirmPublicVirtualInterfaceResponse
-confirmPublicVirtualInterfaceResponse = ConfirmPublicVirtualInterfaceResponse
-    { _cpvir3VirtualInterfaceState = Nothing
-    }
+instance ToHeaders ConfirmPublicVirtualInterface
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.ConfirmPublicVirtualInterface" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-cpvir3VirtualInterfaceState :: Lens' ConfirmPublicVirtualInterfaceResponse (Maybe VirtualInterfaceState)
-cpvir3VirtualInterfaceState =
-    lens _cpvir3VirtualInterfaceState
-        (\s a -> s { _cpvir3VirtualInterfaceState = a })
+instance ToJSON ConfirmPublicVirtualInterface where
+        toJSON ConfirmPublicVirtualInterface'{..}
+          = object
+              ["virtualInterfaceId" .= _cVirtualInterfaceId]
 
 instance ToPath ConfirmPublicVirtualInterface where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ConfirmPublicVirtualInterface where
-    toQuery = const mempty
-
-instance ToHeaders ConfirmPublicVirtualInterface
+        toQuery = const mempty
 
-instance ToJSON ConfirmPublicVirtualInterface where
-    toJSON ConfirmPublicVirtualInterface{..} = object
-        [ "virtualInterfaceId" .= _cpvi1VirtualInterfaceId
-        ]
+-- | The response received when ConfirmPublicVirtualInterface is called.
+--
+-- /See:/ 'confirmPublicVirtualInterfaceResponse' smart constructor.
+data ConfirmPublicVirtualInterfaceResponse = ConfirmPublicVirtualInterfaceResponse'
+    { _crsVirtualInterfaceState :: !(Maybe VirtualInterfaceState)
+    , _crsStatus                :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ConfirmPublicVirtualInterface where
-    type Sv ConfirmPublicVirtualInterface = DirectConnect
-    type Rs ConfirmPublicVirtualInterface = ConfirmPublicVirtualInterfaceResponse
+-- | Creates a value of 'ConfirmPublicVirtualInterfaceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crsVirtualInterfaceState'
+--
+-- * 'crsStatus'
+confirmPublicVirtualInterfaceResponse
+    :: Int -- ^ 'crsStatus'
+    -> ConfirmPublicVirtualInterfaceResponse
+confirmPublicVirtualInterfaceResponse pStatus_ =
+    ConfirmPublicVirtualInterfaceResponse'
+    { _crsVirtualInterfaceState = Nothing
+    , _crsStatus = pStatus_
+    }
 
-    request  = post "ConfirmPublicVirtualInterface"
-    response = jsonResponse
+-- | Undocumented member.
+crsVirtualInterfaceState :: Lens' ConfirmPublicVirtualInterfaceResponse (Maybe VirtualInterfaceState)
+crsVirtualInterfaceState = lens _crsVirtualInterfaceState (\ s a -> s{_crsVirtualInterfaceState = a});
 
-instance FromJSON ConfirmPublicVirtualInterfaceResponse where
-    parseJSON = withObject "ConfirmPublicVirtualInterfaceResponse" $ \o -> ConfirmPublicVirtualInterfaceResponse
-        <$> o .:? "virtualInterfaceState"
+-- | The response status code.
+crsStatus :: Lens' ConfirmPublicVirtualInterfaceResponse Int
+crsStatus = lens _crsStatus (\ s a -> s{_crsStatus = a});
diff --git a/gen/Network/AWS/DirectConnect/CreateConnection.hs b/gen/Network/AWS/DirectConnect/CreateConnection.hs
--- a/gen/Network/AWS/DirectConnect/CreateConnection.hs
+++ b/gen/Network/AWS/DirectConnect/CreateConnection.hs
@@ -1,218 +1,133 @@
-{-# 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.DirectConnect.CreateConnection
--- 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 a new connection between the customer network and a specific AWS
+-- Creates a new connection between the customer network and a specific AWS
 -- Direct Connect location.
 --
--- A connection links your internal network to an AWS Direct Connect location
--- over a standard 1 gigabit or 10 gigabit Ethernet fiber-optic cable. One end
--- of the cable is connected to your router, the other to an AWS Direct Connect
--- router. An AWS Direct Connect location provides access to Amazon Web Services
--- in the region it is associated with. You can establish connections with AWS
--- Direct Connect locations in multiple regions, but a connection in one region
--- does not provide connectivity to other regions.
+-- A connection links your internal network to an AWS Direct Connect
+-- location over a standard 1 gigabit or 10 gigabit Ethernet fiber-optic
+-- cable. One end of the cable is connected to your router, the other to an
+-- AWS Direct Connect router. An AWS Direct Connect location provides
+-- access to Amazon Web Services in the region it is associated with. You
+-- can establish connections with AWS Direct Connect locations in multiple
+-- regions, but a connection in one region does not provide connectivity to
+-- other regions.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreateConnection.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreateConnection.html AWS API Reference> for CreateConnection.
 module Network.AWS.DirectConnect.CreateConnection
     (
-    -- * Request
-      CreateConnection
-    -- ** Request constructor
-    , createConnection
-    -- ** Request lenses
+    -- * Creating a Request
+      createConnection
+    , CreateConnection
+    -- * Request Lenses
+    , ccLocation
     , ccBandwidth
     , ccConnectionName
-    , ccLocation
 
-    -- * Response
-    , CreateConnectionResponse
-    -- ** Response constructor
-    , createConnectionResponse
-    -- ** Response lenses
-    , ccrBandwidth
-    , ccrConnectionId
-    , ccrConnectionName
-    , ccrConnectionState
-    , ccrLocation
-    , ccrOwnerAccount
-    , ccrPartnerName
-    , ccrRegion
-    , ccrVlan
+    -- * Destructuring the Response
+    , connection
+    , Connection
+    -- * Response Lenses
+    , cVlan
+    , cLocation
+    , cConnectionId
+    , cConnectionName
+    , cPartnerName
+    , cBandwidth
+    , cRegion
+    , cOwnerAccount
+    , cConnectionState
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-data CreateConnection = CreateConnection
-    { _ccBandwidth      :: Text
-    , _ccConnectionName :: Text
-    , _ccLocation       :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CreateConnection' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ccBandwidth' @::@ 'Text'
---
--- * 'ccConnectionName' @::@ 'Text'
---
--- * 'ccLocation' @::@ 'Text'
+-- | Container for the parameters to the CreateConnection operation.
 --
-createConnection :: Text -- ^ 'ccLocation'
-                 -> Text -- ^ 'ccBandwidth'
-                 -> Text -- ^ 'ccConnectionName'
-                 -> CreateConnection
-createConnection p1 p2 p3 = CreateConnection
-    { _ccLocation       = p1
-    , _ccBandwidth      = p2
-    , _ccConnectionName = p3
-    }
-
-ccBandwidth :: Lens' CreateConnection Text
-ccBandwidth = lens _ccBandwidth (\s a -> s { _ccBandwidth = a })
-
-ccConnectionName :: Lens' CreateConnection Text
-ccConnectionName = lens _ccConnectionName (\s a -> s { _ccConnectionName = a })
-
-ccLocation :: Lens' CreateConnection Text
-ccLocation = lens _ccLocation (\s a -> s { _ccLocation = a })
-
-data CreateConnectionResponse = CreateConnectionResponse
-    { _ccrBandwidth       :: Maybe Text
-    , _ccrConnectionId    :: Maybe Text
-    , _ccrConnectionName  :: Maybe Text
-    , _ccrConnectionState :: Maybe ConnectionState
-    , _ccrLocation        :: Maybe Text
-    , _ccrOwnerAccount    :: Maybe Text
-    , _ccrPartnerName     :: Maybe Text
-    , _ccrRegion          :: Maybe Text
-    , _ccrVlan            :: Maybe Int
-    } deriving (Eq, Read, Show)
+-- /See:/ 'createConnection' smart constructor.
+data CreateConnection = CreateConnection'
+    { _ccLocation       :: !Text
+    , _ccBandwidth      :: !Text
+    , _ccConnectionName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateConnectionResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ccrBandwidth' @::@ 'Maybe' 'Text'
---
--- * 'ccrConnectionId' @::@ 'Maybe' 'Text'
---
--- * 'ccrConnectionName' @::@ 'Maybe' 'Text'
---
--- * 'ccrConnectionState' @::@ 'Maybe' 'ConnectionState'
---
--- * 'ccrLocation' @::@ 'Maybe' 'Text'
---
--- * 'ccrOwnerAccount' @::@ 'Maybe' 'Text'
+-- | Creates a value of 'CreateConnection' with the minimum fields required to make a request.
 --
--- * 'ccrPartnerName' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ccrRegion' @::@ 'Maybe' 'Text'
+-- * 'ccLocation'
 --
--- * 'ccrVlan' @::@ 'Maybe' 'Int'
+-- * 'ccBandwidth'
 --
-createConnectionResponse :: CreateConnectionResponse
-createConnectionResponse = CreateConnectionResponse
-    { _ccrOwnerAccount    = Nothing
-    , _ccrConnectionId    = Nothing
-    , _ccrConnectionName  = Nothing
-    , _ccrConnectionState = Nothing
-    , _ccrRegion          = Nothing
-    , _ccrLocation        = Nothing
-    , _ccrBandwidth       = Nothing
-    , _ccrVlan            = Nothing
-    , _ccrPartnerName     = Nothing
+-- * 'ccConnectionName'
+createConnection
+    :: Text -- ^ 'ccLocation'
+    -> Text -- ^ 'ccBandwidth'
+    -> Text -- ^ 'ccConnectionName'
+    -> CreateConnection
+createConnection pLocation_ pBandwidth_ pConnectionName_ =
+    CreateConnection'
+    { _ccLocation = pLocation_
+    , _ccBandwidth = pBandwidth_
+    , _ccConnectionName = pConnectionName_
     }
 
--- | Bandwidth of the connection.
---
--- Example: 1Gbps (for regular connections), or 500Mbps (for hosted connections)
---
--- Default: None
-ccrBandwidth :: Lens' CreateConnectionResponse (Maybe Text)
-ccrBandwidth = lens _ccrBandwidth (\s a -> s { _ccrBandwidth = a })
-
-ccrConnectionId :: Lens' CreateConnectionResponse (Maybe Text)
-ccrConnectionId = lens _ccrConnectionId (\s a -> s { _ccrConnectionId = a })
-
-ccrConnectionName :: Lens' CreateConnectionResponse (Maybe Text)
-ccrConnectionName =
-    lens _ccrConnectionName (\s a -> s { _ccrConnectionName = a })
-
-ccrConnectionState :: Lens' CreateConnectionResponse (Maybe ConnectionState)
-ccrConnectionState =
-    lens _ccrConnectionState (\s a -> s { _ccrConnectionState = a })
+-- | Undocumented member.
+ccLocation :: Lens' CreateConnection Text
+ccLocation = lens _ccLocation (\ s a -> s{_ccLocation = a});
 
-ccrLocation :: Lens' CreateConnectionResponse (Maybe Text)
-ccrLocation = lens _ccrLocation (\s a -> s { _ccrLocation = a })
+-- | Undocumented member.
+ccBandwidth :: Lens' CreateConnection Text
+ccBandwidth = lens _ccBandwidth (\ s a -> s{_ccBandwidth = a});
 
-ccrOwnerAccount :: Lens' CreateConnectionResponse (Maybe Text)
-ccrOwnerAccount = lens _ccrOwnerAccount (\s a -> s { _ccrOwnerAccount = a })
+-- | Undocumented member.
+ccConnectionName :: Lens' CreateConnection Text
+ccConnectionName = lens _ccConnectionName (\ s a -> s{_ccConnectionName = a});
 
-ccrPartnerName :: Lens' CreateConnectionResponse (Maybe Text)
-ccrPartnerName = lens _ccrPartnerName (\s a -> s { _ccrPartnerName = a })
+instance AWSRequest CreateConnection where
+        type Sv CreateConnection = DirectConnect
+        type Rs CreateConnection = Connection
+        request = postJSON
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-ccrRegion :: Lens' CreateConnectionResponse (Maybe Text)
-ccrRegion = lens _ccrRegion (\s a -> s { _ccrRegion = a })
+instance ToHeaders CreateConnection where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.CreateConnection" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-ccrVlan :: Lens' CreateConnectionResponse (Maybe Int)
-ccrVlan = lens _ccrVlan (\s a -> s { _ccrVlan = a })
+instance ToJSON CreateConnection where
+        toJSON CreateConnection'{..}
+          = object
+              ["location" .= _ccLocation,
+               "bandwidth" .= _ccBandwidth,
+               "connectionName" .= _ccConnectionName]
 
 instance ToPath CreateConnection where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateConnection where
-    toQuery = const mempty
-
-instance ToHeaders CreateConnection
-
-instance ToJSON CreateConnection where
-    toJSON CreateConnection{..} = object
-        [ "location"       .= _ccLocation
-        , "bandwidth"      .= _ccBandwidth
-        , "connectionName" .= _ccConnectionName
-        ]
-
-instance AWSRequest CreateConnection where
-    type Sv CreateConnection = DirectConnect
-    type Rs CreateConnection = CreateConnectionResponse
-
-    request  = post "CreateConnection"
-    response = jsonResponse
-
-instance FromJSON CreateConnectionResponse where
-    parseJSON = withObject "CreateConnectionResponse" $ \o -> CreateConnectionResponse
-        <$> o .:? "bandwidth"
-        <*> o .:? "connectionId"
-        <*> o .:? "connectionName"
-        <*> o .:? "connectionState"
-        <*> o .:? "location"
-        <*> o .:? "ownerAccount"
-        <*> o .:? "partnerName"
-        <*> o .:? "region"
-        <*> o .:? "vlan"
+        toQuery = const mempty
diff --git a/gen/Network/AWS/DirectConnect/CreateInterconnect.hs b/gen/Network/AWS/DirectConnect/CreateInterconnect.hs
--- a/gen/Network/AWS/DirectConnect/CreateInterconnect.hs
+++ b/gen/Network/AWS/DirectConnect/CreateInterconnect.hs
@@ -1,101 +1,108 @@
-{-# 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.DirectConnect.CreateInterconnect
--- 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 a new interconnect between a AWS Direct Connect partner's network and
--- a specific AWS Direct Connect location.
+-- Creates a new interconnect between a AWS Direct Connect partner\'s
+-- network and a specific AWS Direct Connect location.
 --
 -- An interconnect is a connection which is capable of hosting other
 -- connections. The AWS Direct Connect partner can use an interconnect to
--- provide sub-1Gbps AWS Direct Connect service to tier 2 customers who do not
--- have their own connections. Like a standard connection, an interconnect links
--- the AWS Direct Connect partner's network to an AWS Direct Connect location
--- over a standard 1 Gbps or 10 Gbps Ethernet fiber-optic cable. One end is
--- connected to the partner's router, the other to an AWS Direct Connect router.
+-- provide sub-1Gbps AWS Direct Connect service to tier 2 customers who do
+-- not have their own connections. Like a standard connection, an
+-- interconnect links the AWS Direct Connect partner\'s network to an AWS
+-- Direct Connect location over a standard 1 Gbps or 10 Gbps Ethernet
+-- fiber-optic cable. One end is connected to the partner\'s router, the
+-- other to an AWS Direct Connect router.
 --
 -- For each end customer, the AWS Direct Connect partner provisions a
--- connection on their interconnect by calling AllocateConnectionOnInterconnect.
--- The end customer can then connect to AWS resources by creating a virtual
--- interface on their connection, using the VLAN assigned to them by the AWS
--- Direct Connect partner.
+-- connection on their interconnect by calling
+-- AllocateConnectionOnInterconnect. The end customer can then connect to
+-- AWS resources by creating a virtual interface on their connection, using
+-- the VLAN assigned to them by the AWS Direct Connect partner.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreateInterconnect.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreateInterconnect.html AWS API Reference> for CreateInterconnect.
 module Network.AWS.DirectConnect.CreateInterconnect
     (
-    -- * Request
-      CreateInterconnect
-    -- ** Request constructor
-    , createInterconnect
-    -- ** Request lenses
-    , ciBandwidth
+    -- * Creating a Request
+      createInterconnect
+    , CreateInterconnect
+    -- * Request Lenses
     , ciInterconnectName
+    , ciBandwidth
     , ciLocation
 
-    -- * Response
-    , CreateInterconnectResponse
-    -- ** Response constructor
-    , createInterconnectResponse
-    -- ** Response lenses
-    , cirBandwidth
-    , cirInterconnectId
-    , cirInterconnectName
-    , cirInterconnectState
-    , cirLocation
-    , cirRegion
+    -- * Destructuring the Response
+    , interconnect
+    , Interconnect
+    -- * Response Lenses
+    , iInterconnectId
+    , iInterconnectName
+    , iLocation
+    , iBandwidth
+    , iInterconnectState
+    , iRegion
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-data CreateInterconnect = CreateInterconnect
-    { _ciBandwidth        :: Text
-    , _ciInterconnectName :: Text
-    , _ciLocation         :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CreateInterconnect' constructor.
+-- | Container for the parameters to the CreateInterconnect operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createInterconnect' smart constructor.
+data CreateInterconnect = CreateInterconnect'
+    { _ciInterconnectName :: !Text
+    , _ciBandwidth        :: !Text
+    , _ciLocation         :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateInterconnect' with the minimum fields required to make a request.
 --
--- * 'ciBandwidth' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ciInterconnectName' @::@ 'Text'
+-- * 'ciInterconnectName'
 --
--- * 'ciLocation' @::@ 'Text'
+-- * 'ciBandwidth'
 --
-createInterconnect :: Text -- ^ 'ciInterconnectName'
-                   -> Text -- ^ 'ciBandwidth'
-                   -> Text -- ^ 'ciLocation'
-                   -> CreateInterconnect
-createInterconnect p1 p2 p3 = CreateInterconnect
-    { _ciInterconnectName = p1
-    , _ciBandwidth        = p2
-    , _ciLocation         = p3
+-- * 'ciLocation'
+createInterconnect
+    :: Text -- ^ 'ciInterconnectName'
+    -> Text -- ^ 'ciBandwidth'
+    -> Text -- ^ 'ciLocation'
+    -> CreateInterconnect
+createInterconnect pInterconnectName_ pBandwidth_ pLocation_ =
+    CreateInterconnect'
+    { _ciInterconnectName = pInterconnectName_
+    , _ciBandwidth = pBandwidth_
+    , _ciLocation = pLocation_
     }
 
+-- | The name of the interconnect.
+--
+-- Example: \"/1G Interconnect to AWS/\"
+--
+-- Default: None
+ciInterconnectName :: Lens' CreateInterconnect Text
+ciInterconnectName = lens _ciInterconnectName (\ s a -> s{_ciInterconnectName = a});
+
 -- | The port bandwidth
 --
 -- Example: 1Gbps
@@ -104,16 +111,7 @@
 --
 -- Available values: 1Gbps,10Gbps
 ciBandwidth :: Lens' CreateInterconnect Text
-ciBandwidth = lens _ciBandwidth (\s a -> s { _ciBandwidth = a })
-
--- | The name of the interconnect.
---
--- Example: "/1G Interconnect to AWS/"
---
--- Default: None
-ciInterconnectName :: Lens' CreateInterconnect Text
-ciInterconnectName =
-    lens _ciInterconnectName (\s a -> s { _ciInterconnectName = a })
+ciBandwidth = lens _ciBandwidth (\ s a -> s{_ciBandwidth = a});
 
 -- | Where the interconnect is located
 --
@@ -121,91 +119,32 @@
 --
 -- Default: None
 ciLocation :: Lens' CreateInterconnect Text
-ciLocation = lens _ciLocation (\s a -> s { _ciLocation = a })
-
-data CreateInterconnectResponse = CreateInterconnectResponse
-    { _cirBandwidth         :: Maybe Text
-    , _cirInterconnectId    :: Maybe Text
-    , _cirInterconnectName  :: Maybe Text
-    , _cirInterconnectState :: Maybe InterconnectState
-    , _cirLocation          :: Maybe Text
-    , _cirRegion            :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'CreateInterconnectResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cirBandwidth' @::@ 'Maybe' 'Text'
---
--- * 'cirInterconnectId' @::@ 'Maybe' 'Text'
---
--- * 'cirInterconnectName' @::@ 'Maybe' 'Text'
---
--- * 'cirInterconnectState' @::@ 'Maybe' 'InterconnectState'
---
--- * 'cirLocation' @::@ 'Maybe' 'Text'
---
--- * 'cirRegion' @::@ 'Maybe' 'Text'
---
-createInterconnectResponse :: CreateInterconnectResponse
-createInterconnectResponse = CreateInterconnectResponse
-    { _cirInterconnectId    = Nothing
-    , _cirInterconnectName  = Nothing
-    , _cirInterconnectState = Nothing
-    , _cirRegion            = Nothing
-    , _cirLocation          = Nothing
-    , _cirBandwidth         = Nothing
-    }
-
-cirBandwidth :: Lens' CreateInterconnectResponse (Maybe Text)
-cirBandwidth = lens _cirBandwidth (\s a -> s { _cirBandwidth = a })
-
-cirInterconnectId :: Lens' CreateInterconnectResponse (Maybe Text)
-cirInterconnectId =
-    lens _cirInterconnectId (\s a -> s { _cirInterconnectId = a })
-
-cirInterconnectName :: Lens' CreateInterconnectResponse (Maybe Text)
-cirInterconnectName =
-    lens _cirInterconnectName (\s a -> s { _cirInterconnectName = a })
+ciLocation = lens _ciLocation (\ s a -> s{_ciLocation = a});
 
-cirInterconnectState :: Lens' CreateInterconnectResponse (Maybe InterconnectState)
-cirInterconnectState =
-    lens _cirInterconnectState (\s a -> s { _cirInterconnectState = a })
+instance AWSRequest CreateInterconnect where
+        type Sv CreateInterconnect = DirectConnect
+        type Rs CreateInterconnect = Interconnect
+        request = postJSON
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-cirLocation :: Lens' CreateInterconnectResponse (Maybe Text)
-cirLocation = lens _cirLocation (\s a -> s { _cirLocation = a })
+instance ToHeaders CreateInterconnect where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.CreateInterconnect" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-cirRegion :: Lens' CreateInterconnectResponse (Maybe Text)
-cirRegion = lens _cirRegion (\s a -> s { _cirRegion = a })
+instance ToJSON CreateInterconnect where
+        toJSON CreateInterconnect'{..}
+          = object
+              ["interconnectName" .= _ciInterconnectName,
+               "bandwidth" .= _ciBandwidth,
+               "location" .= _ciLocation]
 
 instance ToPath CreateInterconnect where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateInterconnect where
-    toQuery = const mempty
-
-instance ToHeaders CreateInterconnect
-
-instance ToJSON CreateInterconnect where
-    toJSON CreateInterconnect{..} = object
-        [ "interconnectName" .= _ciInterconnectName
-        , "bandwidth"        .= _ciBandwidth
-        , "location"         .= _ciLocation
-        ]
-
-instance AWSRequest CreateInterconnect where
-    type Sv CreateInterconnect = DirectConnect
-    type Rs CreateInterconnect = CreateInterconnectResponse
-
-    request  = post "CreateInterconnect"
-    response = jsonResponse
-
-instance FromJSON CreateInterconnectResponse where
-    parseJSON = withObject "CreateInterconnectResponse" $ \o -> CreateInterconnectResponse
-        <$> o .:? "bandwidth"
-        <*> o .:? "interconnectId"
-        <*> o .:? "interconnectName"
-        <*> o .:? "interconnectState"
-        <*> o .:? "location"
-        <*> o .:? "region"
+        toQuery = const mempty
diff --git a/gen/Network/AWS/DirectConnect/CreatePrivateVirtualInterface.hs b/gen/Network/AWS/DirectConnect/CreatePrivateVirtualInterface.hs
--- a/gen/Network/AWS/DirectConnect/CreatePrivateVirtualInterface.hs
+++ b/gen/Network/AWS/DirectConnect/CreatePrivateVirtualInterface.hs
@@ -1,273 +1,128 @@
-{-# 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.DirectConnect.CreatePrivateVirtualInterface
--- 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 a new private virtual interface. A virtual interface is the VLAN that
--- transports AWS Direct Connect traffic. A private virtual interface supports
--- sending traffic to a single virtual private cloud (VPC).
+-- Creates a new private virtual interface. A virtual interface is the VLAN
+-- that transports AWS Direct Connect traffic. A private virtual interface
+-- supports sending traffic to a single virtual private cloud (VPC).
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreatePrivateVirtualInterface.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreatePrivateVirtualInterface.html AWS API Reference> for CreatePrivateVirtualInterface.
 module Network.AWS.DirectConnect.CreatePrivateVirtualInterface
     (
-    -- * Request
-      CreatePrivateVirtualInterface
-    -- ** Request constructor
-    , createPrivateVirtualInterface
-    -- ** Request lenses
-    , cpvi1ConnectionId
-    , cpvi1NewPrivateVirtualInterface
+    -- * Creating a Request
+      createPrivateVirtualInterface
+    , CreatePrivateVirtualInterface
+    -- * Request Lenses
+    , creConnectionId
+    , creNewPrivateVirtualInterface
 
-    -- * Response
-    , CreatePrivateVirtualInterfaceResponse
-    -- ** Response constructor
-    , createPrivateVirtualInterfaceResponse
-    -- ** Response lenses
-    , cpvir2AmazonAddress
-    , cpvir2Asn
-    , cpvir2AuthKey
-    , cpvir2ConnectionId
-    , cpvir2CustomerAddress
-    , cpvir2CustomerRouterConfig
-    , cpvir2Location
-    , cpvir2OwnerAccount
-    , cpvir2RouteFilterPrefixes
-    , cpvir2VirtualGatewayId
-    , cpvir2VirtualInterfaceId
-    , cpvir2VirtualInterfaceName
-    , cpvir2VirtualInterfaceState
-    , cpvir2VirtualInterfaceType
-    , cpvir2Vlan
+    -- * Destructuring the Response
+    , virtualInterface
+    , VirtualInterface
+    -- * Response Lenses
+    , viVirtualGatewayId
+    , viRouteFilterPrefixes
+    , viCustomerAddress
+    , viVlan
+    , viLocation
+    , viAmazonAddress
+    , viVirtualInterfaceState
+    , viConnectionId
+    , viAsn
+    , viVirtualInterfaceType
+    , viAuthKey
+    , viCustomerRouterConfig
+    , viOwnerAccount
+    , viVirtualInterfaceName
+    , viVirtualInterfaceId
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-data CreatePrivateVirtualInterface = CreatePrivateVirtualInterface
-    { _cpvi1ConnectionId               :: Text
-    , _cpvi1NewPrivateVirtualInterface :: NewPrivateVirtualInterface
-    } deriving (Eq, Read, Show)
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CreatePrivateVirtualInterface' constructor.
+-- | Container for the parameters to the CreatePrivateVirtualInterface
+-- operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createPrivateVirtualInterface' smart constructor.
+data CreatePrivateVirtualInterface = CreatePrivateVirtualInterface'
+    { _creConnectionId               :: !Text
+    , _creNewPrivateVirtualInterface :: !NewPrivateVirtualInterface
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreatePrivateVirtualInterface' with the minimum fields required to make a request.
 --
--- * 'cpvi1ConnectionId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cpvi1NewPrivateVirtualInterface' @::@ 'NewPrivateVirtualInterface'
+-- * 'creConnectionId'
 --
-createPrivateVirtualInterface :: Text -- ^ 'cpvi1ConnectionId'
-                              -> NewPrivateVirtualInterface -- ^ 'cpvi1NewPrivateVirtualInterface'
-                              -> CreatePrivateVirtualInterface
-createPrivateVirtualInterface p1 p2 = CreatePrivateVirtualInterface
-    { _cpvi1ConnectionId               = p1
-    , _cpvi1NewPrivateVirtualInterface = p2
+-- * 'creNewPrivateVirtualInterface'
+createPrivateVirtualInterface
+    :: Text -- ^ 'creConnectionId'
+    -> NewPrivateVirtualInterface -- ^ 'creNewPrivateVirtualInterface'
+    -> CreatePrivateVirtualInterface
+createPrivateVirtualInterface pConnectionId_ pNewPrivateVirtualInterface_ =
+    CreatePrivateVirtualInterface'
+    { _creConnectionId = pConnectionId_
+    , _creNewPrivateVirtualInterface = pNewPrivateVirtualInterface_
     }
 
-cpvi1ConnectionId :: Lens' CreatePrivateVirtualInterface Text
-cpvi1ConnectionId =
-    lens _cpvi1ConnectionId (\s a -> s { _cpvi1ConnectionId = a })
+-- | Undocumented member.
+creConnectionId :: Lens' CreatePrivateVirtualInterface Text
+creConnectionId = lens _creConnectionId (\ s a -> s{_creConnectionId = a});
 
 -- | Detailed information for the private virtual interface to be created.
 --
 -- Default: None
-cpvi1NewPrivateVirtualInterface :: Lens' CreatePrivateVirtualInterface NewPrivateVirtualInterface
-cpvi1NewPrivateVirtualInterface =
-    lens _cpvi1NewPrivateVirtualInterface
-        (\s a -> s { _cpvi1NewPrivateVirtualInterface = a })
-
-data CreatePrivateVirtualInterfaceResponse = CreatePrivateVirtualInterfaceResponse
-    { _cpvir2AmazonAddress         :: Maybe Text
-    , _cpvir2Asn                   :: Maybe Int
-    , _cpvir2AuthKey               :: Maybe Text
-    , _cpvir2ConnectionId          :: Maybe Text
-    , _cpvir2CustomerAddress       :: Maybe Text
-    , _cpvir2CustomerRouterConfig  :: Maybe Text
-    , _cpvir2Location              :: Maybe Text
-    , _cpvir2OwnerAccount          :: Maybe Text
-    , _cpvir2RouteFilterPrefixes   :: List "routeFilterPrefixes" RouteFilterPrefix
-    , _cpvir2VirtualGatewayId      :: Maybe Text
-    , _cpvir2VirtualInterfaceId    :: Maybe Text
-    , _cpvir2VirtualInterfaceName  :: Maybe Text
-    , _cpvir2VirtualInterfaceState :: Maybe VirtualInterfaceState
-    , _cpvir2VirtualInterfaceType  :: Maybe Text
-    , _cpvir2Vlan                  :: Maybe Int
-    } deriving (Eq, Read, Show)
-
--- | 'CreatePrivateVirtualInterfaceResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cpvir2AmazonAddress' @::@ 'Maybe' 'Text'
---
--- * 'cpvir2Asn' @::@ 'Maybe' 'Int'
---
--- * 'cpvir2AuthKey' @::@ 'Maybe' 'Text'
---
--- * 'cpvir2ConnectionId' @::@ 'Maybe' 'Text'
---
--- * 'cpvir2CustomerAddress' @::@ 'Maybe' 'Text'
---
--- * 'cpvir2CustomerRouterConfig' @::@ 'Maybe' 'Text'
---
--- * 'cpvir2Location' @::@ 'Maybe' 'Text'
---
--- * 'cpvir2OwnerAccount' @::@ 'Maybe' 'Text'
---
--- * 'cpvir2RouteFilterPrefixes' @::@ ['RouteFilterPrefix']
---
--- * 'cpvir2VirtualGatewayId' @::@ 'Maybe' 'Text'
---
--- * 'cpvir2VirtualInterfaceId' @::@ 'Maybe' 'Text'
---
--- * 'cpvir2VirtualInterfaceName' @::@ 'Maybe' 'Text'
---
--- * 'cpvir2VirtualInterfaceState' @::@ 'Maybe' 'VirtualInterfaceState'
---
--- * 'cpvir2VirtualInterfaceType' @::@ 'Maybe' 'Text'
---
--- * 'cpvir2Vlan' @::@ 'Maybe' 'Int'
---
-createPrivateVirtualInterfaceResponse :: CreatePrivateVirtualInterfaceResponse
-createPrivateVirtualInterfaceResponse = CreatePrivateVirtualInterfaceResponse
-    { _cpvir2OwnerAccount          = Nothing
-    , _cpvir2VirtualInterfaceId    = Nothing
-    , _cpvir2Location              = Nothing
-    , _cpvir2ConnectionId          = Nothing
-    , _cpvir2VirtualInterfaceType  = Nothing
-    , _cpvir2VirtualInterfaceName  = Nothing
-    , _cpvir2Vlan                  = Nothing
-    , _cpvir2Asn                   = Nothing
-    , _cpvir2AuthKey               = Nothing
-    , _cpvir2AmazonAddress         = Nothing
-    , _cpvir2CustomerAddress       = Nothing
-    , _cpvir2VirtualInterfaceState = Nothing
-    , _cpvir2CustomerRouterConfig  = Nothing
-    , _cpvir2VirtualGatewayId      = Nothing
-    , _cpvir2RouteFilterPrefixes   = mempty
-    }
-
-cpvir2AmazonAddress :: Lens' CreatePrivateVirtualInterfaceResponse (Maybe Text)
-cpvir2AmazonAddress =
-    lens _cpvir2AmazonAddress (\s a -> s { _cpvir2AmazonAddress = a })
-
-cpvir2Asn :: Lens' CreatePrivateVirtualInterfaceResponse (Maybe Int)
-cpvir2Asn = lens _cpvir2Asn (\s a -> s { _cpvir2Asn = a })
-
-cpvir2AuthKey :: Lens' CreatePrivateVirtualInterfaceResponse (Maybe Text)
-cpvir2AuthKey = lens _cpvir2AuthKey (\s a -> s { _cpvir2AuthKey = a })
-
-cpvir2ConnectionId :: Lens' CreatePrivateVirtualInterfaceResponse (Maybe Text)
-cpvir2ConnectionId =
-    lens _cpvir2ConnectionId (\s a -> s { _cpvir2ConnectionId = a })
-
-cpvir2CustomerAddress :: Lens' CreatePrivateVirtualInterfaceResponse (Maybe Text)
-cpvir2CustomerAddress =
-    lens _cpvir2CustomerAddress (\s a -> s { _cpvir2CustomerAddress = a })
-
--- | Information for generating the customer router configuration.
-cpvir2CustomerRouterConfig :: Lens' CreatePrivateVirtualInterfaceResponse (Maybe Text)
-cpvir2CustomerRouterConfig =
-    lens _cpvir2CustomerRouterConfig
-        (\s a -> s { _cpvir2CustomerRouterConfig = a })
-
-cpvir2Location :: Lens' CreatePrivateVirtualInterfaceResponse (Maybe Text)
-cpvir2Location = lens _cpvir2Location (\s a -> s { _cpvir2Location = a })
-
-cpvir2OwnerAccount :: Lens' CreatePrivateVirtualInterfaceResponse (Maybe Text)
-cpvir2OwnerAccount =
-    lens _cpvir2OwnerAccount (\s a -> s { _cpvir2OwnerAccount = a })
-
-cpvir2RouteFilterPrefixes :: Lens' CreatePrivateVirtualInterfaceResponse [RouteFilterPrefix]
-cpvir2RouteFilterPrefixes =
-    lens _cpvir2RouteFilterPrefixes
-        (\s a -> s { _cpvir2RouteFilterPrefixes = a })
-            . _List
-
-cpvir2VirtualGatewayId :: Lens' CreatePrivateVirtualInterfaceResponse (Maybe Text)
-cpvir2VirtualGatewayId =
-    lens _cpvir2VirtualGatewayId (\s a -> s { _cpvir2VirtualGatewayId = a })
-
-cpvir2VirtualInterfaceId :: Lens' CreatePrivateVirtualInterfaceResponse (Maybe Text)
-cpvir2VirtualInterfaceId =
-    lens _cpvir2VirtualInterfaceId
-        (\s a -> s { _cpvir2VirtualInterfaceId = a })
-
-cpvir2VirtualInterfaceName :: Lens' CreatePrivateVirtualInterfaceResponse (Maybe Text)
-cpvir2VirtualInterfaceName =
-    lens _cpvir2VirtualInterfaceName
-        (\s a -> s { _cpvir2VirtualInterfaceName = a })
-
-cpvir2VirtualInterfaceState :: Lens' CreatePrivateVirtualInterfaceResponse (Maybe VirtualInterfaceState)
-cpvir2VirtualInterfaceState =
-    lens _cpvir2VirtualInterfaceState
-        (\s a -> s { _cpvir2VirtualInterfaceState = a })
-
-cpvir2VirtualInterfaceType :: Lens' CreatePrivateVirtualInterfaceResponse (Maybe Text)
-cpvir2VirtualInterfaceType =
-    lens _cpvir2VirtualInterfaceType
-        (\s a -> s { _cpvir2VirtualInterfaceType = a })
-
-cpvir2Vlan :: Lens' CreatePrivateVirtualInterfaceResponse (Maybe Int)
-cpvir2Vlan = lens _cpvir2Vlan (\s a -> s { _cpvir2Vlan = a })
-
-instance ToPath CreatePrivateVirtualInterface where
-    toPath = const "/"
+creNewPrivateVirtualInterface :: Lens' CreatePrivateVirtualInterface NewPrivateVirtualInterface
+creNewPrivateVirtualInterface = lens _creNewPrivateVirtualInterface (\ s a -> s{_creNewPrivateVirtualInterface = a});
 
-instance ToQuery CreatePrivateVirtualInterface where
-    toQuery = const mempty
+instance AWSRequest CreatePrivateVirtualInterface
+         where
+        type Sv CreatePrivateVirtualInterface = DirectConnect
+        type Rs CreatePrivateVirtualInterface =
+             VirtualInterface
+        request = postJSON
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders CreatePrivateVirtualInterface
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.CreatePrivateVirtualInterface" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON CreatePrivateVirtualInterface where
-    toJSON CreatePrivateVirtualInterface{..} = object
-        [ "connectionId"               .= _cpvi1ConnectionId
-        , "newPrivateVirtualInterface" .= _cpvi1NewPrivateVirtualInterface
-        ]
-
-instance AWSRequest CreatePrivateVirtualInterface where
-    type Sv CreatePrivateVirtualInterface = DirectConnect
-    type Rs CreatePrivateVirtualInterface = CreatePrivateVirtualInterfaceResponse
+        toJSON CreatePrivateVirtualInterface'{..}
+          = object
+              ["connectionId" .= _creConnectionId,
+               "newPrivateVirtualInterface" .=
+                 _creNewPrivateVirtualInterface]
 
-    request  = post "CreatePrivateVirtualInterface"
-    response = jsonResponse
+instance ToPath CreatePrivateVirtualInterface where
+        toPath = const "/"
 
-instance FromJSON CreatePrivateVirtualInterfaceResponse where
-    parseJSON = withObject "CreatePrivateVirtualInterfaceResponse" $ \o -> CreatePrivateVirtualInterfaceResponse
-        <$> o .:? "amazonAddress"
-        <*> o .:? "asn"
-        <*> o .:? "authKey"
-        <*> o .:? "connectionId"
-        <*> o .:? "customerAddress"
-        <*> o .:? "customerRouterConfig"
-        <*> o .:? "location"
-        <*> o .:? "ownerAccount"
-        <*> o .:? "routeFilterPrefixes" .!= mempty
-        <*> o .:? "virtualGatewayId"
-        <*> o .:? "virtualInterfaceId"
-        <*> o .:? "virtualInterfaceName"
-        <*> o .:? "virtualInterfaceState"
-        <*> o .:? "virtualInterfaceType"
-        <*> o .:? "vlan"
+instance ToQuery CreatePrivateVirtualInterface where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/DirectConnect/CreatePublicVirtualInterface.hs b/gen/Network/AWS/DirectConnect/CreatePublicVirtualInterface.hs
--- a/gen/Network/AWS/DirectConnect/CreatePublicVirtualInterface.hs
+++ b/gen/Network/AWS/DirectConnect/CreatePublicVirtualInterface.hs
@@ -1,272 +1,128 @@
-{-# 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.DirectConnect.CreatePublicVirtualInterface
--- 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 a new public virtual interface. A virtual interface is the VLAN that
--- transports AWS Direct Connect traffic. A public virtual interface supports
--- sending traffic to public services of AWS such as Amazon Simple Storage
--- Service (Amazon S3).
+-- Creates a new public virtual interface. A virtual interface is the VLAN
+-- that transports AWS Direct Connect traffic. A public virtual interface
+-- supports sending traffic to public services of AWS such as Amazon Simple
+-- Storage Service (Amazon S3).
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreatePublicVirtualInterface.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreatePublicVirtualInterface.html AWS API Reference> for CreatePublicVirtualInterface.
 module Network.AWS.DirectConnect.CreatePublicVirtualInterface
     (
-    -- * Request
-      CreatePublicVirtualInterface
-    -- ** Request constructor
-    , createPublicVirtualInterface
-    -- ** Request lenses
+    -- * Creating a Request
+      createPublicVirtualInterface
+    , CreatePublicVirtualInterface
+    -- * Request Lenses
     , cpviConnectionId
     , cpviNewPublicVirtualInterface
 
-    -- * Response
-    , CreatePublicVirtualInterfaceResponse
-    -- ** Response constructor
-    , createPublicVirtualInterfaceResponse
-    -- ** Response lenses
-    , cpvirAmazonAddress
-    , cpvirAsn
-    , cpvirAuthKey
-    , cpvirConnectionId
-    , cpvirCustomerAddress
-    , cpvirCustomerRouterConfig
-    , cpvirLocation
-    , cpvirOwnerAccount
-    , cpvirRouteFilterPrefixes
-    , cpvirVirtualGatewayId
-    , cpvirVirtualInterfaceId
-    , cpvirVirtualInterfaceName
-    , cpvirVirtualInterfaceState
-    , cpvirVirtualInterfaceType
-    , cpvirVlan
+    -- * Destructuring the Response
+    , virtualInterface
+    , VirtualInterface
+    -- * Response Lenses
+    , viVirtualGatewayId
+    , viRouteFilterPrefixes
+    , viCustomerAddress
+    , viVlan
+    , viLocation
+    , viAmazonAddress
+    , viVirtualInterfaceState
+    , viConnectionId
+    , viAsn
+    , viVirtualInterfaceType
+    , viAuthKey
+    , viCustomerRouterConfig
+    , viOwnerAccount
+    , viVirtualInterfaceName
+    , viVirtualInterfaceId
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-data CreatePublicVirtualInterface = CreatePublicVirtualInterface
-    { _cpviConnectionId              :: Text
-    , _cpviNewPublicVirtualInterface :: NewPublicVirtualInterface
-    } deriving (Eq, Read, Show)
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CreatePublicVirtualInterface' constructor.
+-- | Container for the parameters to the CreatePublicVirtualInterface
+-- operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createPublicVirtualInterface' smart constructor.
+data CreatePublicVirtualInterface = CreatePublicVirtualInterface'
+    { _cpviConnectionId              :: !Text
+    , _cpviNewPublicVirtualInterface :: !NewPublicVirtualInterface
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreatePublicVirtualInterface' with the minimum fields required to make a request.
 --
--- * 'cpviConnectionId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cpviNewPublicVirtualInterface' @::@ 'NewPublicVirtualInterface'
+-- * 'cpviConnectionId'
 --
-createPublicVirtualInterface :: Text -- ^ 'cpviConnectionId'
-                             -> NewPublicVirtualInterface -- ^ 'cpviNewPublicVirtualInterface'
-                             -> CreatePublicVirtualInterface
-createPublicVirtualInterface p1 p2 = CreatePublicVirtualInterface
-    { _cpviConnectionId              = p1
-    , _cpviNewPublicVirtualInterface = p2
+-- * 'cpviNewPublicVirtualInterface'
+createPublicVirtualInterface
+    :: Text -- ^ 'cpviConnectionId'
+    -> NewPublicVirtualInterface -- ^ 'cpviNewPublicVirtualInterface'
+    -> CreatePublicVirtualInterface
+createPublicVirtualInterface pConnectionId_ pNewPublicVirtualInterface_ =
+    CreatePublicVirtualInterface'
+    { _cpviConnectionId = pConnectionId_
+    , _cpviNewPublicVirtualInterface = pNewPublicVirtualInterface_
     }
 
+-- | Undocumented member.
 cpviConnectionId :: Lens' CreatePublicVirtualInterface Text
-cpviConnectionId = lens _cpviConnectionId (\s a -> s { _cpviConnectionId = a })
+cpviConnectionId = lens _cpviConnectionId (\ s a -> s{_cpviConnectionId = a});
 
 -- | Detailed information for the public virtual interface to be created.
 --
 -- Default: None
 cpviNewPublicVirtualInterface :: Lens' CreatePublicVirtualInterface NewPublicVirtualInterface
-cpviNewPublicVirtualInterface =
-    lens _cpviNewPublicVirtualInterface
-        (\s a -> s { _cpviNewPublicVirtualInterface = a })
-
-data CreatePublicVirtualInterfaceResponse = CreatePublicVirtualInterfaceResponse
-    { _cpvirAmazonAddress         :: Maybe Text
-    , _cpvirAsn                   :: Maybe Int
-    , _cpvirAuthKey               :: Maybe Text
-    , _cpvirConnectionId          :: Maybe Text
-    , _cpvirCustomerAddress       :: Maybe Text
-    , _cpvirCustomerRouterConfig  :: Maybe Text
-    , _cpvirLocation              :: Maybe Text
-    , _cpvirOwnerAccount          :: Maybe Text
-    , _cpvirRouteFilterPrefixes   :: List "routeFilterPrefixes" RouteFilterPrefix
-    , _cpvirVirtualGatewayId      :: Maybe Text
-    , _cpvirVirtualInterfaceId    :: Maybe Text
-    , _cpvirVirtualInterfaceName  :: Maybe Text
-    , _cpvirVirtualInterfaceState :: Maybe VirtualInterfaceState
-    , _cpvirVirtualInterfaceType  :: Maybe Text
-    , _cpvirVlan                  :: Maybe Int
-    } deriving (Eq, Read, Show)
-
--- | 'CreatePublicVirtualInterfaceResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cpvirAmazonAddress' @::@ 'Maybe' 'Text'
---
--- * 'cpvirAsn' @::@ 'Maybe' 'Int'
---
--- * 'cpvirAuthKey' @::@ 'Maybe' 'Text'
---
--- * 'cpvirConnectionId' @::@ 'Maybe' 'Text'
---
--- * 'cpvirCustomerAddress' @::@ 'Maybe' 'Text'
---
--- * 'cpvirCustomerRouterConfig' @::@ 'Maybe' 'Text'
---
--- * 'cpvirLocation' @::@ 'Maybe' 'Text'
---
--- * 'cpvirOwnerAccount' @::@ 'Maybe' 'Text'
---
--- * 'cpvirRouteFilterPrefixes' @::@ ['RouteFilterPrefix']
---
--- * 'cpvirVirtualGatewayId' @::@ 'Maybe' 'Text'
---
--- * 'cpvirVirtualInterfaceId' @::@ 'Maybe' 'Text'
---
--- * 'cpvirVirtualInterfaceName' @::@ 'Maybe' 'Text'
---
--- * 'cpvirVirtualInterfaceState' @::@ 'Maybe' 'VirtualInterfaceState'
---
--- * 'cpvirVirtualInterfaceType' @::@ 'Maybe' 'Text'
---
--- * 'cpvirVlan' @::@ 'Maybe' 'Int'
---
-createPublicVirtualInterfaceResponse :: CreatePublicVirtualInterfaceResponse
-createPublicVirtualInterfaceResponse = CreatePublicVirtualInterfaceResponse
-    { _cpvirOwnerAccount          = Nothing
-    , _cpvirVirtualInterfaceId    = Nothing
-    , _cpvirLocation              = Nothing
-    , _cpvirConnectionId          = Nothing
-    , _cpvirVirtualInterfaceType  = Nothing
-    , _cpvirVirtualInterfaceName  = Nothing
-    , _cpvirVlan                  = Nothing
-    , _cpvirAsn                   = Nothing
-    , _cpvirAuthKey               = Nothing
-    , _cpvirAmazonAddress         = Nothing
-    , _cpvirCustomerAddress       = Nothing
-    , _cpvirVirtualInterfaceState = Nothing
-    , _cpvirCustomerRouterConfig  = Nothing
-    , _cpvirVirtualGatewayId      = Nothing
-    , _cpvirRouteFilterPrefixes   = mempty
-    }
-
-cpvirAmazonAddress :: Lens' CreatePublicVirtualInterfaceResponse (Maybe Text)
-cpvirAmazonAddress =
-    lens _cpvirAmazonAddress (\s a -> s { _cpvirAmazonAddress = a })
-
-cpvirAsn :: Lens' CreatePublicVirtualInterfaceResponse (Maybe Int)
-cpvirAsn = lens _cpvirAsn (\s a -> s { _cpvirAsn = a })
-
-cpvirAuthKey :: Lens' CreatePublicVirtualInterfaceResponse (Maybe Text)
-cpvirAuthKey = lens _cpvirAuthKey (\s a -> s { _cpvirAuthKey = a })
-
-cpvirConnectionId :: Lens' CreatePublicVirtualInterfaceResponse (Maybe Text)
-cpvirConnectionId =
-    lens _cpvirConnectionId (\s a -> s { _cpvirConnectionId = a })
-
-cpvirCustomerAddress :: Lens' CreatePublicVirtualInterfaceResponse (Maybe Text)
-cpvirCustomerAddress =
-    lens _cpvirCustomerAddress (\s a -> s { _cpvirCustomerAddress = a })
-
--- | Information for generating the customer router configuration.
-cpvirCustomerRouterConfig :: Lens' CreatePublicVirtualInterfaceResponse (Maybe Text)
-cpvirCustomerRouterConfig =
-    lens _cpvirCustomerRouterConfig
-        (\s a -> s { _cpvirCustomerRouterConfig = a })
-
-cpvirLocation :: Lens' CreatePublicVirtualInterfaceResponse (Maybe Text)
-cpvirLocation = lens _cpvirLocation (\s a -> s { _cpvirLocation = a })
-
-cpvirOwnerAccount :: Lens' CreatePublicVirtualInterfaceResponse (Maybe Text)
-cpvirOwnerAccount =
-    lens _cpvirOwnerAccount (\s a -> s { _cpvirOwnerAccount = a })
-
-cpvirRouteFilterPrefixes :: Lens' CreatePublicVirtualInterfaceResponse [RouteFilterPrefix]
-cpvirRouteFilterPrefixes =
-    lens _cpvirRouteFilterPrefixes
-        (\s a -> s { _cpvirRouteFilterPrefixes = a })
-            . _List
-
-cpvirVirtualGatewayId :: Lens' CreatePublicVirtualInterfaceResponse (Maybe Text)
-cpvirVirtualGatewayId =
-    lens _cpvirVirtualGatewayId (\s a -> s { _cpvirVirtualGatewayId = a })
-
-cpvirVirtualInterfaceId :: Lens' CreatePublicVirtualInterfaceResponse (Maybe Text)
-cpvirVirtualInterfaceId =
-    lens _cpvirVirtualInterfaceId (\s a -> s { _cpvirVirtualInterfaceId = a })
-
-cpvirVirtualInterfaceName :: Lens' CreatePublicVirtualInterfaceResponse (Maybe Text)
-cpvirVirtualInterfaceName =
-    lens _cpvirVirtualInterfaceName
-        (\s a -> s { _cpvirVirtualInterfaceName = a })
+cpviNewPublicVirtualInterface = lens _cpviNewPublicVirtualInterface (\ s a -> s{_cpviNewPublicVirtualInterface = a});
 
-cpvirVirtualInterfaceState :: Lens' CreatePublicVirtualInterfaceResponse (Maybe VirtualInterfaceState)
-cpvirVirtualInterfaceState =
-    lens _cpvirVirtualInterfaceState
-        (\s a -> s { _cpvirVirtualInterfaceState = a })
+instance AWSRequest CreatePublicVirtualInterface
+         where
+        type Sv CreatePublicVirtualInterface = DirectConnect
+        type Rs CreatePublicVirtualInterface =
+             VirtualInterface
+        request = postJSON
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-cpvirVirtualInterfaceType :: Lens' CreatePublicVirtualInterfaceResponse (Maybe Text)
-cpvirVirtualInterfaceType =
-    lens _cpvirVirtualInterfaceType
-        (\s a -> s { _cpvirVirtualInterfaceType = a })
+instance ToHeaders CreatePublicVirtualInterface where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.CreatePublicVirtualInterface" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-cpvirVlan :: Lens' CreatePublicVirtualInterfaceResponse (Maybe Int)
-cpvirVlan = lens _cpvirVlan (\s a -> s { _cpvirVlan = a })
+instance ToJSON CreatePublicVirtualInterface where
+        toJSON CreatePublicVirtualInterface'{..}
+          = object
+              ["connectionId" .= _cpviConnectionId,
+               "newPublicVirtualInterface" .=
+                 _cpviNewPublicVirtualInterface]
 
 instance ToPath CreatePublicVirtualInterface where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreatePublicVirtualInterface where
-    toQuery = const mempty
-
-instance ToHeaders CreatePublicVirtualInterface
-
-instance ToJSON CreatePublicVirtualInterface where
-    toJSON CreatePublicVirtualInterface{..} = object
-        [ "connectionId"              .= _cpviConnectionId
-        , "newPublicVirtualInterface" .= _cpviNewPublicVirtualInterface
-        ]
-
-instance AWSRequest CreatePublicVirtualInterface where
-    type Sv CreatePublicVirtualInterface = DirectConnect
-    type Rs CreatePublicVirtualInterface = CreatePublicVirtualInterfaceResponse
-
-    request  = post "CreatePublicVirtualInterface"
-    response = jsonResponse
-
-instance FromJSON CreatePublicVirtualInterfaceResponse where
-    parseJSON = withObject "CreatePublicVirtualInterfaceResponse" $ \o -> CreatePublicVirtualInterfaceResponse
-        <$> o .:? "amazonAddress"
-        <*> o .:? "asn"
-        <*> o .:? "authKey"
-        <*> o .:? "connectionId"
-        <*> o .:? "customerAddress"
-        <*> o .:? "customerRouterConfig"
-        <*> o .:? "location"
-        <*> o .:? "ownerAccount"
-        <*> o .:? "routeFilterPrefixes" .!= mempty
-        <*> o .:? "virtualGatewayId"
-        <*> o .:? "virtualInterfaceId"
-        <*> o .:? "virtualInterfaceName"
-        <*> o .:? "virtualInterfaceState"
-        <*> o .:? "virtualInterfaceType"
-        <*> o .:? "vlan"
+        toQuery = const mempty
diff --git a/gen/Network/AWS/DirectConnect/DeleteConnection.hs b/gen/Network/AWS/DirectConnect/DeleteConnection.hs
--- a/gen/Network/AWS/DirectConnect/DeleteConnection.hs
+++ b/gen/Network/AWS/DirectConnect/DeleteConnection.hs
@@ -1,194 +1,105 @@
-{-# 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.DirectConnect.DeleteConnection
--- 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 the connection.
+-- Deletes the connection.
 --
--- Deleting a connection only stops the AWS Direct Connect port hour and data
--- transfer charges. You need to cancel separately with the providers any
--- services or charges for cross-connects or network circuits that connect you
--- to the AWS Direct Connect location.
+-- Deleting a connection only stops the AWS Direct Connect port hour and
+-- data transfer charges. You need to cancel separately with the providers
+-- any services or charges for cross-connects or network circuits that
+-- connect you to the AWS Direct Connect location.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DeleteConnection.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DeleteConnection.html AWS API Reference> for DeleteConnection.
 module Network.AWS.DirectConnect.DeleteConnection
     (
-    -- * Request
-      DeleteConnection
-    -- ** Request constructor
-    , deleteConnection
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteConnection
+    , DeleteConnection
+    -- * Request Lenses
     , dcConnectionId
 
-    -- * Response
-    , DeleteConnectionResponse
-    -- ** Response constructor
-    , deleteConnectionResponse
-    -- ** Response lenses
-    , dcrBandwidth
-    , dcrConnectionId
-    , dcrConnectionName
-    , dcrConnectionState
-    , dcrLocation
-    , dcrOwnerAccount
-    , dcrPartnerName
-    , dcrRegion
-    , dcrVlan
+    -- * Destructuring the Response
+    , connection
+    , Connection
+    -- * Response Lenses
+    , cVlan
+    , cLocation
+    , cConnectionId
+    , cConnectionName
+    , cPartnerName
+    , cBandwidth
+    , cRegion
+    , cOwnerAccount
+    , cConnectionState
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DeleteConnection = DeleteConnection
+-- | Container for the parameters to the DeleteConnection operation.
+--
+-- /See:/ 'deleteConnection' smart constructor.
+newtype DeleteConnection = DeleteConnection'
     { _dcConnectionId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteConnection' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteConnection' with the minimum fields required to make a request.
 --
--- * 'dcConnectionId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteConnection :: Text -- ^ 'dcConnectionId'
-                 -> DeleteConnection
-deleteConnection p1 = DeleteConnection
-    { _dcConnectionId = p1
+-- * 'dcConnectionId'
+deleteConnection
+    :: Text -- ^ 'dcConnectionId'
+    -> DeleteConnection
+deleteConnection pConnectionId_ =
+    DeleteConnection'
+    { _dcConnectionId = pConnectionId_
     }
 
+-- | Undocumented member.
 dcConnectionId :: Lens' DeleteConnection Text
-dcConnectionId = lens _dcConnectionId (\s a -> s { _dcConnectionId = a })
-
-data DeleteConnectionResponse = DeleteConnectionResponse
-    { _dcrBandwidth       :: Maybe Text
-    , _dcrConnectionId    :: Maybe Text
-    , _dcrConnectionName  :: Maybe Text
-    , _dcrConnectionState :: Maybe ConnectionState
-    , _dcrLocation        :: Maybe Text
-    , _dcrOwnerAccount    :: Maybe Text
-    , _dcrPartnerName     :: Maybe Text
-    , _dcrRegion          :: Maybe Text
-    , _dcrVlan            :: Maybe Int
-    } deriving (Eq, Read, Show)
-
--- | 'DeleteConnectionResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dcrBandwidth' @::@ 'Maybe' 'Text'
---
--- * 'dcrConnectionId' @::@ 'Maybe' 'Text'
---
--- * 'dcrConnectionName' @::@ 'Maybe' 'Text'
---
--- * 'dcrConnectionState' @::@ 'Maybe' 'ConnectionState'
---
--- * 'dcrLocation' @::@ 'Maybe' 'Text'
---
--- * 'dcrOwnerAccount' @::@ 'Maybe' 'Text'
---
--- * 'dcrPartnerName' @::@ 'Maybe' 'Text'
---
--- * 'dcrRegion' @::@ 'Maybe' 'Text'
---
--- * 'dcrVlan' @::@ 'Maybe' 'Int'
---
-deleteConnectionResponse :: DeleteConnectionResponse
-deleteConnectionResponse = DeleteConnectionResponse
-    { _dcrOwnerAccount    = Nothing
-    , _dcrConnectionId    = Nothing
-    , _dcrConnectionName  = Nothing
-    , _dcrConnectionState = Nothing
-    , _dcrRegion          = Nothing
-    , _dcrLocation        = Nothing
-    , _dcrBandwidth       = Nothing
-    , _dcrVlan            = Nothing
-    , _dcrPartnerName     = Nothing
-    }
-
--- | Bandwidth of the connection.
---
--- Example: 1Gbps (for regular connections), or 500Mbps (for hosted connections)
---
--- Default: None
-dcrBandwidth :: Lens' DeleteConnectionResponse (Maybe Text)
-dcrBandwidth = lens _dcrBandwidth (\s a -> s { _dcrBandwidth = a })
-
-dcrConnectionId :: Lens' DeleteConnectionResponse (Maybe Text)
-dcrConnectionId = lens _dcrConnectionId (\s a -> s { _dcrConnectionId = a })
-
-dcrConnectionName :: Lens' DeleteConnectionResponse (Maybe Text)
-dcrConnectionName =
-    lens _dcrConnectionName (\s a -> s { _dcrConnectionName = a })
-
-dcrConnectionState :: Lens' DeleteConnectionResponse (Maybe ConnectionState)
-dcrConnectionState =
-    lens _dcrConnectionState (\s a -> s { _dcrConnectionState = a })
-
-dcrLocation :: Lens' DeleteConnectionResponse (Maybe Text)
-dcrLocation = lens _dcrLocation (\s a -> s { _dcrLocation = a })
-
-dcrOwnerAccount :: Lens' DeleteConnectionResponse (Maybe Text)
-dcrOwnerAccount = lens _dcrOwnerAccount (\s a -> s { _dcrOwnerAccount = a })
+dcConnectionId = lens _dcConnectionId (\ s a -> s{_dcConnectionId = a});
 
-dcrPartnerName :: Lens' DeleteConnectionResponse (Maybe Text)
-dcrPartnerName = lens _dcrPartnerName (\s a -> s { _dcrPartnerName = a })
+instance AWSRequest DeleteConnection where
+        type Sv DeleteConnection = DirectConnect
+        type Rs DeleteConnection = Connection
+        request = postJSON
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-dcrRegion :: Lens' DeleteConnectionResponse (Maybe Text)
-dcrRegion = lens _dcrRegion (\s a -> s { _dcrRegion = a })
+instance ToHeaders DeleteConnection where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.DeleteConnection" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-dcrVlan :: Lens' DeleteConnectionResponse (Maybe Int)
-dcrVlan = lens _dcrVlan (\s a -> s { _dcrVlan = a })
+instance ToJSON DeleteConnection where
+        toJSON DeleteConnection'{..}
+          = object ["connectionId" .= _dcConnectionId]
 
 instance ToPath DeleteConnection where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteConnection where
-    toQuery = const mempty
-
-instance ToHeaders DeleteConnection
-
-instance ToJSON DeleteConnection where
-    toJSON DeleteConnection{..} = object
-        [ "connectionId" .= _dcConnectionId
-        ]
-
-instance AWSRequest DeleteConnection where
-    type Sv DeleteConnection = DirectConnect
-    type Rs DeleteConnection = DeleteConnectionResponse
-
-    request  = post "DeleteConnection"
-    response = jsonResponse
-
-instance FromJSON DeleteConnectionResponse where
-    parseJSON = withObject "DeleteConnectionResponse" $ \o -> DeleteConnectionResponse
-        <$> o .:? "bandwidth"
-        <*> o .:? "connectionId"
-        <*> o .:? "connectionName"
-        <*> o .:? "connectionState"
-        <*> o .:? "location"
-        <*> o .:? "ownerAccount"
-        <*> o .:? "partnerName"
-        <*> o .:? "region"
-        <*> o .:? "vlan"
+        toQuery = const mempty
diff --git a/gen/Network/AWS/DirectConnect/DeleteInterconnect.hs b/gen/Network/AWS/DirectConnect/DeleteInterconnect.hs
--- a/gen/Network/AWS/DirectConnect/DeleteInterconnect.hs
+++ b/gen/Network/AWS/DirectConnect/DeleteInterconnect.hs
@@ -1,112 +1,130 @@
-{-# 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.DirectConnect.DeleteInterconnect
--- 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 the specified interconnect.
+-- Deletes the specified interconnect.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DeleteInterconnect.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DeleteInterconnect.html AWS API Reference> for DeleteInterconnect.
 module Network.AWS.DirectConnect.DeleteInterconnect
     (
-    -- * Request
-      DeleteInterconnect
-    -- ** Request constructor
-    , deleteInterconnect
-    -- ** Request lenses
-    , di1InterconnectId
+    -- * Creating a Request
+      deleteInterconnect
+    , DeleteInterconnect
+    -- * Request Lenses
+    , dInterconnectId
 
-    -- * Response
-    , DeleteInterconnectResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteInterconnectResponse
-    -- ** Response lenses
-    , dirInterconnectState
+    , DeleteInterconnectResponse
+    -- * Response Lenses
+    , drsInterconnectState
+    , drsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-newtype DeleteInterconnect = DeleteInterconnect
-    { _di1InterconnectId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DeleteInterconnect' constructor.
+-- | Container for the parameters to the DeleteInterconnect operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'deleteInterconnect' smart constructor.
+newtype DeleteInterconnect = DeleteInterconnect'
+    { _dInterconnectId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteInterconnect' with the minimum fields required to make a request.
 --
--- * 'di1InterconnectId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteInterconnect :: Text -- ^ 'di1InterconnectId'
-                   -> DeleteInterconnect
-deleteInterconnect p1 = DeleteInterconnect
-    { _di1InterconnectId = p1
+-- * 'dInterconnectId'
+deleteInterconnect
+    :: Text -- ^ 'dInterconnectId'
+    -> DeleteInterconnect
+deleteInterconnect pInterconnectId_ =
+    DeleteInterconnect'
+    { _dInterconnectId = pInterconnectId_
     }
 
-di1InterconnectId :: Lens' DeleteInterconnect Text
-di1InterconnectId =
-    lens _di1InterconnectId (\s a -> s { _di1InterconnectId = a })
+-- | Undocumented member.
+dInterconnectId :: Lens' DeleteInterconnect Text
+dInterconnectId = lens _dInterconnectId (\ s a -> s{_dInterconnectId = a});
 
-newtype DeleteInterconnectResponse = DeleteInterconnectResponse
-    { _dirInterconnectState :: Maybe InterconnectState
-    } deriving (Eq, Read, Show)
+instance AWSRequest DeleteInterconnect where
+        type Sv DeleteInterconnect = DirectConnect
+        type Rs DeleteInterconnect =
+             DeleteInterconnectResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteInterconnectResponse' <$>
+                   (x .?> "interconnectState") <*> (pure (fromEnum s)))
 
--- | 'DeleteInterconnectResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dirInterconnectState' @::@ 'Maybe' 'InterconnectState'
---
-deleteInterconnectResponse :: DeleteInterconnectResponse
-deleteInterconnectResponse = DeleteInterconnectResponse
-    { _dirInterconnectState = Nothing
-    }
+instance ToHeaders DeleteInterconnect where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.DeleteInterconnect" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-dirInterconnectState :: Lens' DeleteInterconnectResponse (Maybe InterconnectState)
-dirInterconnectState =
-    lens _dirInterconnectState (\s a -> s { _dirInterconnectState = a })
+instance ToJSON DeleteInterconnect where
+        toJSON DeleteInterconnect'{..}
+          = object ["interconnectId" .= _dInterconnectId]
 
 instance ToPath DeleteInterconnect where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteInterconnect where
-    toQuery = const mempty
-
-instance ToHeaders DeleteInterconnect
+        toQuery = const mempty
 
-instance ToJSON DeleteInterconnect where
-    toJSON DeleteInterconnect{..} = object
-        [ "interconnectId" .= _di1InterconnectId
-        ]
+-- | The response received when DeleteInterconnect is called.
+--
+-- /See:/ 'deleteInterconnectResponse' smart constructor.
+data DeleteInterconnectResponse = DeleteInterconnectResponse'
+    { _drsInterconnectState :: !(Maybe InterconnectState)
+    , _drsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteInterconnect where
-    type Sv DeleteInterconnect = DirectConnect
-    type Rs DeleteInterconnect = DeleteInterconnectResponse
+-- | Creates a value of 'DeleteInterconnectResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drsInterconnectState'
+--
+-- * 'drsStatus'
+deleteInterconnectResponse
+    :: Int -- ^ 'drsStatus'
+    -> DeleteInterconnectResponse
+deleteInterconnectResponse pStatus_ =
+    DeleteInterconnectResponse'
+    { _drsInterconnectState = Nothing
+    , _drsStatus = pStatus_
+    }
 
-    request  = post "DeleteInterconnect"
-    response = jsonResponse
+-- | Undocumented member.
+drsInterconnectState :: Lens' DeleteInterconnectResponse (Maybe InterconnectState)
+drsInterconnectState = lens _drsInterconnectState (\ s a -> s{_drsInterconnectState = a});
 
-instance FromJSON DeleteInterconnectResponse where
-    parseJSON = withObject "DeleteInterconnectResponse" $ \o -> DeleteInterconnectResponse
-        <$> o .:? "interconnectState"
+-- | The response status code.
+drsStatus :: Lens' DeleteInterconnectResponse Int
+drsStatus = lens _drsStatus (\ s a -> s{_drsStatus = a});
diff --git a/gen/Network/AWS/DirectConnect/DeleteVirtualInterface.hs b/gen/Network/AWS/DirectConnect/DeleteVirtualInterface.hs
--- a/gen/Network/AWS/DirectConnect/DeleteVirtualInterface.hs
+++ b/gen/Network/AWS/DirectConnect/DeleteVirtualInterface.hs
@@ -1,113 +1,133 @@
-{-# 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.DirectConnect.DeleteVirtualInterface
--- 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 virtual interface.
+-- Deletes a virtual interface.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DeleteVirtualInterface.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DeleteVirtualInterface.html AWS API Reference> for DeleteVirtualInterface.
 module Network.AWS.DirectConnect.DeleteVirtualInterface
     (
-    -- * Request
-      DeleteVirtualInterface
-    -- ** Request constructor
-    , deleteVirtualInterface
-    -- ** Request lenses
-    , dvi1VirtualInterfaceId
+    -- * Creating a Request
+      deleteVirtualInterface
+    , DeleteVirtualInterface
+    -- * Request Lenses
+    , dVirtualInterfaceId
 
-    -- * Response
-    , DeleteVirtualInterfaceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteVirtualInterfaceResponse
-    -- ** Response lenses
-    , dvirVirtualInterfaceState
+    , DeleteVirtualInterfaceResponse
+    -- * Response Lenses
+    , dvirsVirtualInterfaceState
+    , dvirsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-newtype DeleteVirtualInterface = DeleteVirtualInterface
-    { _dvi1VirtualInterfaceId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DeleteVirtualInterface' constructor.
+-- | Container for the parameters to the DeleteVirtualInterface operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'deleteVirtualInterface' smart constructor.
+newtype DeleteVirtualInterface = DeleteVirtualInterface'
+    { _dVirtualInterfaceId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteVirtualInterface' with the minimum fields required to make a request.
 --
--- * 'dvi1VirtualInterfaceId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteVirtualInterface :: Text -- ^ 'dvi1VirtualInterfaceId'
-                       -> DeleteVirtualInterface
-deleteVirtualInterface p1 = DeleteVirtualInterface
-    { _dvi1VirtualInterfaceId = p1
+-- * 'dVirtualInterfaceId'
+deleteVirtualInterface
+    :: Text -- ^ 'dVirtualInterfaceId'
+    -> DeleteVirtualInterface
+deleteVirtualInterface pVirtualInterfaceId_ =
+    DeleteVirtualInterface'
+    { _dVirtualInterfaceId = pVirtualInterfaceId_
     }
 
-dvi1VirtualInterfaceId :: Lens' DeleteVirtualInterface Text
-dvi1VirtualInterfaceId =
-    lens _dvi1VirtualInterfaceId (\s a -> s { _dvi1VirtualInterfaceId = a })
+-- | Undocumented member.
+dVirtualInterfaceId :: Lens' DeleteVirtualInterface Text
+dVirtualInterfaceId = lens _dVirtualInterfaceId (\ s a -> s{_dVirtualInterfaceId = a});
 
-newtype DeleteVirtualInterfaceResponse = DeleteVirtualInterfaceResponse
-    { _dvirVirtualInterfaceState :: Maybe VirtualInterfaceState
-    } deriving (Eq, Read, Show)
+instance AWSRequest DeleteVirtualInterface where
+        type Sv DeleteVirtualInterface = DirectConnect
+        type Rs DeleteVirtualInterface =
+             DeleteVirtualInterfaceResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteVirtualInterfaceResponse' <$>
+                   (x .?> "virtualInterfaceState") <*>
+                     (pure (fromEnum s)))
 
--- | 'DeleteVirtualInterfaceResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dvirVirtualInterfaceState' @::@ 'Maybe' 'VirtualInterfaceState'
---
-deleteVirtualInterfaceResponse :: DeleteVirtualInterfaceResponse
-deleteVirtualInterfaceResponse = DeleteVirtualInterfaceResponse
-    { _dvirVirtualInterfaceState = Nothing
-    }
+instance ToHeaders DeleteVirtualInterface where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.DeleteVirtualInterface" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-dvirVirtualInterfaceState :: Lens' DeleteVirtualInterfaceResponse (Maybe VirtualInterfaceState)
-dvirVirtualInterfaceState =
-    lens _dvirVirtualInterfaceState
-        (\s a -> s { _dvirVirtualInterfaceState = a })
+instance ToJSON DeleteVirtualInterface where
+        toJSON DeleteVirtualInterface'{..}
+          = object
+              ["virtualInterfaceId" .= _dVirtualInterfaceId]
 
 instance ToPath DeleteVirtualInterface where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteVirtualInterface where
-    toQuery = const mempty
-
-instance ToHeaders DeleteVirtualInterface
+        toQuery = const mempty
 
-instance ToJSON DeleteVirtualInterface where
-    toJSON DeleteVirtualInterface{..} = object
-        [ "virtualInterfaceId" .= _dvi1VirtualInterfaceId
-        ]
+-- | The response received when DeleteVirtualInterface is called.
+--
+-- /See:/ 'deleteVirtualInterfaceResponse' smart constructor.
+data DeleteVirtualInterfaceResponse = DeleteVirtualInterfaceResponse'
+    { _dvirsVirtualInterfaceState :: !(Maybe VirtualInterfaceState)
+    , _dvirsStatus                :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteVirtualInterface where
-    type Sv DeleteVirtualInterface = DirectConnect
-    type Rs DeleteVirtualInterface = DeleteVirtualInterfaceResponse
+-- | Creates a value of 'DeleteVirtualInterfaceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dvirsVirtualInterfaceState'
+--
+-- * 'dvirsStatus'
+deleteVirtualInterfaceResponse
+    :: Int -- ^ 'dvirsStatus'
+    -> DeleteVirtualInterfaceResponse
+deleteVirtualInterfaceResponse pStatus_ =
+    DeleteVirtualInterfaceResponse'
+    { _dvirsVirtualInterfaceState = Nothing
+    , _dvirsStatus = pStatus_
+    }
 
-    request  = post "DeleteVirtualInterface"
-    response = jsonResponse
+-- | Undocumented member.
+dvirsVirtualInterfaceState :: Lens' DeleteVirtualInterfaceResponse (Maybe VirtualInterfaceState)
+dvirsVirtualInterfaceState = lens _dvirsVirtualInterfaceState (\ s a -> s{_dvirsVirtualInterfaceState = a});
 
-instance FromJSON DeleteVirtualInterfaceResponse where
-    parseJSON = withObject "DeleteVirtualInterfaceResponse" $ \o -> DeleteVirtualInterfaceResponse
-        <$> o .:? "virtualInterfaceState"
+-- | The response status code.
+dvirsStatus :: Lens' DeleteVirtualInterfaceResponse Int
+dvirsStatus = lens _dvirsStatus (\ s a -> s{_dvirsStatus = a});
diff --git a/gen/Network/AWS/DirectConnect/DescribeConnections.hs b/gen/Network/AWS/DirectConnect/DescribeConnections.hs
--- a/gen/Network/AWS/DirectConnect/DescribeConnections.hs
+++ b/gen/Network/AWS/DirectConnect/DescribeConnections.hs
@@ -1,119 +1,95 @@
-{-# 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.DirectConnect.DescribeConnections
--- 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.
-
--- | Displays all connections in this region.
+-- Displays all connections in this region.
 --
 -- If a connection ID is provided, the call returns only that particular
 -- connection.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeConnections.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeConnections.html AWS API Reference> for DescribeConnections.
 module Network.AWS.DirectConnect.DescribeConnections
     (
-    -- * Request
-      DescribeConnections
-    -- ** Request constructor
-    , describeConnections
-    -- ** Request lenses
-    , dc1ConnectionId
+    -- * Creating a Request
+      describeConnections
+    , DescribeConnections
+    -- * Request Lenses
+    , dConnectionId
 
-    -- * Response
-    , DescribeConnectionsResponse
-    -- ** Response constructor
-    , describeConnectionsResponse
-    -- ** Response lenses
-    , dcrConnections
+    -- * Destructuring the Response
+    , connections
+    , Connections
+    -- * Response Lenses
+    , cConnections
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-newtype DescribeConnections = DescribeConnections
-    { _dc1ConnectionId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeConnections' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dc1ConnectionId' @::@ 'Maybe' 'Text'
+-- | Container for the parameters to the DescribeConnections operation.
 --
-describeConnections :: DescribeConnections
-describeConnections = DescribeConnections
-    { _dc1ConnectionId = Nothing
-    }
-
-dc1ConnectionId :: Lens' DescribeConnections (Maybe Text)
-dc1ConnectionId = lens _dc1ConnectionId (\s a -> s { _dc1ConnectionId = a })
-
-newtype DescribeConnectionsResponse = DescribeConnectionsResponse
-    { _dcrConnections :: List "connections" Connection
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeConnectionsResponse where
-    type Item DescribeConnectionsResponse = Connection
-
-    fromList = DescribeConnectionsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dcrConnections
+-- /See:/ 'describeConnections' smart constructor.
+newtype DescribeConnections = DescribeConnections'
+    { _dConnectionId :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeConnectionsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeConnections' with the minimum fields required to make a request.
 --
--- * 'dcrConnections' @::@ ['Connection']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeConnectionsResponse :: DescribeConnectionsResponse
-describeConnectionsResponse = DescribeConnectionsResponse
-    { _dcrConnections = mempty
+-- * 'dConnectionId'
+describeConnections
+    :: DescribeConnections
+describeConnections =
+    DescribeConnections'
+    { _dConnectionId = Nothing
     }
 
--- | A list of connections.
-dcrConnections :: Lens' DescribeConnectionsResponse [Connection]
-dcrConnections = lens _dcrConnections (\s a -> s { _dcrConnections = a }) . _List
-
-instance ToPath DescribeConnections where
-    toPath = const "/"
+-- | Undocumented member.
+dConnectionId :: Lens' DescribeConnections (Maybe Text)
+dConnectionId = lens _dConnectionId (\ s a -> s{_dConnectionId = a});
 
-instance ToQuery DescribeConnections where
-    toQuery = const mempty
+instance AWSRequest DescribeConnections where
+        type Sv DescribeConnections = DirectConnect
+        type Rs DescribeConnections = Connections
+        request = postJSON
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-instance ToHeaders DescribeConnections
+instance ToHeaders DescribeConnections where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.DescribeConnections" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON DescribeConnections where
-    toJSON DescribeConnections{..} = object
-        [ "connectionId" .= _dc1ConnectionId
-        ]
-
-instance AWSRequest DescribeConnections where
-    type Sv DescribeConnections = DirectConnect
-    type Rs DescribeConnections = DescribeConnectionsResponse
+        toJSON DescribeConnections'{..}
+          = object ["connectionId" .= _dConnectionId]
 
-    request  = post "DescribeConnections"
-    response = jsonResponse
+instance ToPath DescribeConnections where
+        toPath = const "/"
 
-instance FromJSON DescribeConnectionsResponse where
-    parseJSON = withObject "DescribeConnectionsResponse" $ \o -> DescribeConnectionsResponse
-        <$> o .:? "connections" .!= mempty
+instance ToQuery DescribeConnections where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/DirectConnect/DescribeConnectionsOnInterconnect.hs b/gen/Network/AWS/DirectConnect/DescribeConnectionsOnInterconnect.hs
--- a/gen/Network/AWS/DirectConnect/DescribeConnectionsOnInterconnect.hs
+++ b/gen/Network/AWS/DirectConnect/DescribeConnectionsOnInterconnect.hs
@@ -1,68 +1,67 @@
-{-# 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.DirectConnect.DescribeConnectionsOnInterconnect
--- 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.
-
--- | Return a list of connections that have been provisioned on the given
+-- Return a list of connections that have been provisioned on the given
 -- interconnect.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeConnectionsOnInterconnect.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeConnectionsOnInterconnect.html AWS API Reference> for DescribeConnectionsOnInterconnect.
 module Network.AWS.DirectConnect.DescribeConnectionsOnInterconnect
     (
-    -- * Request
-      DescribeConnectionsOnInterconnect
-    -- ** Request constructor
-    , describeConnectionsOnInterconnect
-    -- ** Request lenses
+    -- * Creating a Request
+      describeConnectionsOnInterconnect
+    , DescribeConnectionsOnInterconnect
+    -- * Request Lenses
     , dcoiInterconnectId
 
-    -- * Response
-    , DescribeConnectionsOnInterconnectResponse
-    -- ** Response constructor
-    , describeConnectionsOnInterconnectResponse
-    -- ** Response lenses
-    , dcoirConnections
+    -- * Destructuring the Response
+    , connections
+    , Connections
+    -- * Response Lenses
+    , cConnections
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DescribeConnectionsOnInterconnect = DescribeConnectionsOnInterconnect
+-- | Container for the parameters to the DescribeConnectionsOnInterconnect
+-- operation.
+--
+-- /See:/ 'describeConnectionsOnInterconnect' smart constructor.
+newtype DescribeConnectionsOnInterconnect = DescribeConnectionsOnInterconnect'
     { _dcoiInterconnectId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeConnectionsOnInterconnect' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeConnectionsOnInterconnect' with the minimum fields required to make a request.
 --
--- * 'dcoiInterconnectId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeConnectionsOnInterconnect :: Text -- ^ 'dcoiInterconnectId'
-                                  -> DescribeConnectionsOnInterconnect
-describeConnectionsOnInterconnect p1 = DescribeConnectionsOnInterconnect
-    { _dcoiInterconnectId = p1
+-- * 'dcoiInterconnectId'
+describeConnectionsOnInterconnect
+    :: Text -- ^ 'dcoiInterconnectId'
+    -> DescribeConnectionsOnInterconnect
+describeConnectionsOnInterconnect pInterconnectId_ =
+    DescribeConnectionsOnInterconnect'
+    { _dcoiInterconnectId = pInterconnectId_
     }
 
 -- | ID of the interconnect on which a list of connection is provisioned.
@@ -71,54 +70,37 @@
 --
 -- Default: None
 dcoiInterconnectId :: Lens' DescribeConnectionsOnInterconnect Text
-dcoiInterconnectId =
-    lens _dcoiInterconnectId (\s a -> s { _dcoiInterconnectId = a })
-
-newtype DescribeConnectionsOnInterconnectResponse = DescribeConnectionsOnInterconnectResponse
-    { _dcoirConnections :: List "connections" Connection
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeConnectionsOnInterconnectResponse where
-    type Item DescribeConnectionsOnInterconnectResponse = Connection
-
-    fromList = DescribeConnectionsOnInterconnectResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dcoirConnections
-
--- | 'DescribeConnectionsOnInterconnectResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dcoirConnections' @::@ ['Connection']
---
-describeConnectionsOnInterconnectResponse :: DescribeConnectionsOnInterconnectResponse
-describeConnectionsOnInterconnectResponse = DescribeConnectionsOnInterconnectResponse
-    { _dcoirConnections = mempty
-    }
-
--- | A list of connections.
-dcoirConnections :: Lens' DescribeConnectionsOnInterconnectResponse [Connection]
-dcoirConnections = lens _dcoirConnections (\s a -> s { _dcoirConnections = a }) . _List
-
-instance ToPath DescribeConnectionsOnInterconnect where
-    toPath = const "/"
+dcoiInterconnectId = lens _dcoiInterconnectId (\ s a -> s{_dcoiInterconnectId = a});
 
-instance ToQuery DescribeConnectionsOnInterconnect where
-    toQuery = const mempty
+instance AWSRequest DescribeConnectionsOnInterconnect
+         where
+        type Sv DescribeConnectionsOnInterconnect =
+             DirectConnect
+        type Rs DescribeConnectionsOnInterconnect =
+             Connections
+        request = postJSON
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders DescribeConnectionsOnInterconnect
-
-instance ToJSON DescribeConnectionsOnInterconnect where
-    toJSON DescribeConnectionsOnInterconnect{..} = object
-        [ "interconnectId" .= _dcoiInterconnectId
-        ]
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.DescribeConnectionsOnInterconnect"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-instance AWSRequest DescribeConnectionsOnInterconnect where
-    type Sv DescribeConnectionsOnInterconnect = DirectConnect
-    type Rs DescribeConnectionsOnInterconnect = DescribeConnectionsOnInterconnectResponse
+instance ToJSON DescribeConnectionsOnInterconnect
+         where
+        toJSON DescribeConnectionsOnInterconnect'{..}
+          = object ["interconnectId" .= _dcoiInterconnectId]
 
-    request  = post "DescribeConnectionsOnInterconnect"
-    response = jsonResponse
+instance ToPath DescribeConnectionsOnInterconnect
+         where
+        toPath = const "/"
 
-instance FromJSON DescribeConnectionsOnInterconnectResponse where
-    parseJSON = withObject "DescribeConnectionsOnInterconnectResponse" $ \o -> DescribeConnectionsOnInterconnectResponse
-        <$> o .:? "connections" .!= mempty
+instance ToQuery DescribeConnectionsOnInterconnect
+         where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/DirectConnect/DescribeInterconnects.hs b/gen/Network/AWS/DirectConnect/DescribeInterconnects.hs
--- a/gen/Network/AWS/DirectConnect/DescribeInterconnects.hs
+++ b/gen/Network/AWS/DirectConnect/DescribeInterconnects.hs
@@ -1,119 +1,134 @@
-{-# 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.DirectConnect.DescribeInterconnects
--- 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.
-
--- | Returns a list of interconnects owned by the AWS account.
+-- Returns a list of interconnects owned by the AWS account.
 --
 -- If an interconnect ID is provided, it will only return this particular
 -- interconnect.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeInterconnects.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeInterconnects.html AWS API Reference> for DescribeInterconnects.
 module Network.AWS.DirectConnect.DescribeInterconnects
     (
-    -- * Request
-      DescribeInterconnects
-    -- ** Request constructor
-    , describeInterconnects
-    -- ** Request lenses
+    -- * Creating a Request
+      describeInterconnects
+    , DescribeInterconnects
+    -- * Request Lenses
     , diInterconnectId
 
-    -- * Response
-    , DescribeInterconnectsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeInterconnectsResponse
-    -- ** Response lenses
-    , dirInterconnects
+    , DescribeInterconnectsResponse
+    -- * Response Lenses
+    , dirsInterconnects
+    , dirsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DescribeInterconnects = DescribeInterconnects
+-- | Container for the parameters to the DescribeInterconnects operation.
+--
+-- /See:/ 'describeInterconnects' smart constructor.
+newtype DescribeInterconnects = DescribeInterconnects'
     { _diInterconnectId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeInterconnects' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeInterconnects' with the minimum fields required to make a request.
 --
--- * 'diInterconnectId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeInterconnects :: DescribeInterconnects
-describeInterconnects = DescribeInterconnects
+-- * 'diInterconnectId'
+describeInterconnects
+    :: DescribeInterconnects
+describeInterconnects =
+    DescribeInterconnects'
     { _diInterconnectId = Nothing
     }
 
+-- | Undocumented member.
 diInterconnectId :: Lens' DescribeInterconnects (Maybe Text)
-diInterconnectId = lens _diInterconnectId (\s a -> s { _diInterconnectId = a })
-
-newtype DescribeInterconnectsResponse = DescribeInterconnectsResponse
-    { _dirInterconnects :: List "interconnects" Interconnect
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeInterconnectsResponse where
-    type Item DescribeInterconnectsResponse = Interconnect
+diInterconnectId = lens _diInterconnectId (\ s a -> s{_diInterconnectId = a});
 
-    fromList = DescribeInterconnectsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dirInterconnects
+instance AWSRequest DescribeInterconnects where
+        type Sv DescribeInterconnects = DirectConnect
+        type Rs DescribeInterconnects =
+             DescribeInterconnectsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeInterconnectsResponse' <$>
+                   (x .?> "interconnects" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeInterconnectsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dirInterconnects' @::@ ['Interconnect']
---
-describeInterconnectsResponse :: DescribeInterconnectsResponse
-describeInterconnectsResponse = DescribeInterconnectsResponse
-    { _dirInterconnects = mempty
-    }
+instance ToHeaders DescribeInterconnects where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.DescribeInterconnects" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A list of interconnects.
-dirInterconnects :: Lens' DescribeInterconnectsResponse [Interconnect]
-dirInterconnects = lens _dirInterconnects (\s a -> s { _dirInterconnects = a }) . _List
+instance ToJSON DescribeInterconnects where
+        toJSON DescribeInterconnects'{..}
+          = object ["interconnectId" .= _diInterconnectId]
 
 instance ToPath DescribeInterconnects where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeInterconnects where
-    toQuery = const mempty
-
-instance ToHeaders DescribeInterconnects
+        toQuery = const mempty
 
-instance ToJSON DescribeInterconnects where
-    toJSON DescribeInterconnects{..} = object
-        [ "interconnectId" .= _diInterconnectId
-        ]
+-- | A structure containing a list of interconnects.
+--
+-- /See:/ 'describeInterconnectsResponse' smart constructor.
+data DescribeInterconnectsResponse = DescribeInterconnectsResponse'
+    { _dirsInterconnects :: !(Maybe [Interconnect])
+    , _dirsStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeInterconnects where
-    type Sv DescribeInterconnects = DirectConnect
-    type Rs DescribeInterconnects = DescribeInterconnectsResponse
+-- | Creates a value of 'DescribeInterconnectsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dirsInterconnects'
+--
+-- * 'dirsStatus'
+describeInterconnectsResponse
+    :: Int -- ^ 'dirsStatus'
+    -> DescribeInterconnectsResponse
+describeInterconnectsResponse pStatus_ =
+    DescribeInterconnectsResponse'
+    { _dirsInterconnects = Nothing
+    , _dirsStatus = pStatus_
+    }
 
-    request  = post "DescribeInterconnects"
-    response = jsonResponse
+-- | A list of interconnects.
+dirsInterconnects :: Lens' DescribeInterconnectsResponse [Interconnect]
+dirsInterconnects = lens _dirsInterconnects (\ s a -> s{_dirsInterconnects = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeInterconnectsResponse where
-    parseJSON = withObject "DescribeInterconnectsResponse" $ \o -> DescribeInterconnectsResponse
-        <$> o .:? "interconnects" .!= mempty
+-- | The response status code.
+dirsStatus :: Lens' DescribeInterconnectsResponse Int
+dirsStatus = lens _dirsStatus (\ s a -> s{_dirsStatus = a});
diff --git a/gen/Network/AWS/DirectConnect/DescribeLocations.hs b/gen/Network/AWS/DirectConnect/DescribeLocations.hs
--- a/gen/Network/AWS/DirectConnect/DescribeLocations.hs
+++ b/gen/Network/AWS/DirectConnect/DescribeLocations.hs
@@ -1,102 +1,114 @@
-{-# 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.DirectConnect.DescribeLocations
--- 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.
-
--- | Returns the list of AWS Direct Connect locations in the current AWS region.
--- These are the locations that may be selected when calling CreateConnection or
--- CreateInterconnect.
+-- Returns the list of AWS Direct Connect locations in the current AWS
+-- region. These are the locations that may be selected when calling
+-- CreateConnection or CreateInterconnect.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeLocations.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeLocations.html AWS API Reference> for DescribeLocations.
 module Network.AWS.DirectConnect.DescribeLocations
     (
-    -- * Request
-      DescribeLocations
-    -- ** Request constructor
-    , describeLocations
+    -- * Creating a Request
+      describeLocations
+    , DescribeLocations
 
-    -- * Response
-    , DescribeLocationsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeLocationsResponse
-    -- ** Response lenses
-    , dlrLocations
+    , DescribeLocationsResponse
+    -- * Response Lenses
+    , dlrsLocations
+    , dlrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-data DescribeLocations = DescribeLocations
-    deriving (Eq, Ord, Read, Show, Generic)
-
--- | 'DescribeLocations' constructor.
-describeLocations :: DescribeLocations
-describeLocations = DescribeLocations
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DescribeLocationsResponse = DescribeLocationsResponse
-    { _dlrLocations :: List "locations" Location
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+-- | /See:/ 'describeLocations' smart constructor.
+data DescribeLocations =
+    DescribeLocations'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance GHC.Exts.IsList DescribeLocationsResponse where
-    type Item DescribeLocationsResponse = Location
+-- | Creates a value of 'DescribeLocations' with the minimum fields required to make a request.
+--
+describeLocations
+    :: DescribeLocations
+describeLocations = DescribeLocations'
 
-    fromList = DescribeLocationsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dlrLocations
+instance AWSRequest DescribeLocations where
+        type Sv DescribeLocations = DirectConnect
+        type Rs DescribeLocations = DescribeLocationsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeLocationsResponse' <$>
+                   (x .?> "locations" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeLocationsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dlrLocations' @::@ ['Location']
---
-describeLocationsResponse :: DescribeLocationsResponse
-describeLocationsResponse = DescribeLocationsResponse
-    { _dlrLocations = mempty
-    }
+instance ToHeaders DescribeLocations where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.DescribeLocations" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-dlrLocations :: Lens' DescribeLocationsResponse [Location]
-dlrLocations = lens _dlrLocations (\s a -> s { _dlrLocations = a }) . _List
+instance ToJSON DescribeLocations where
+        toJSON = const (Object mempty)
 
 instance ToPath DescribeLocations where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeLocations where
-    toQuery = const mempty
-
-instance ToHeaders DescribeLocations
+        toQuery = const mempty
 
-instance ToJSON DescribeLocations where
-    toJSON = const (toJSON Empty)
+-- | /See:/ 'describeLocationsResponse' smart constructor.
+data DescribeLocationsResponse = DescribeLocationsResponse'
+    { _dlrsLocations :: !(Maybe [Location])
+    , _dlrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeLocations where
-    type Sv DescribeLocations = DirectConnect
-    type Rs DescribeLocations = DescribeLocationsResponse
+-- | Creates a value of 'DescribeLocationsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlrsLocations'
+--
+-- * 'dlrsStatus'
+describeLocationsResponse
+    :: Int -- ^ 'dlrsStatus'
+    -> DescribeLocationsResponse
+describeLocationsResponse pStatus_ =
+    DescribeLocationsResponse'
+    { _dlrsLocations = Nothing
+    , _dlrsStatus = pStatus_
+    }
 
-    request  = post "DescribeLocations"
-    response = jsonResponse
+-- | Undocumented member.
+dlrsLocations :: Lens' DescribeLocationsResponse [Location]
+dlrsLocations = lens _dlrsLocations (\ s a -> s{_dlrsLocations = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeLocationsResponse where
-    parseJSON = withObject "DescribeLocationsResponse" $ \o -> DescribeLocationsResponse
-        <$> o .:? "locations" .!= mempty
+-- | The response status code.
+dlrsStatus :: Lens' DescribeLocationsResponse Int
+dlrsStatus = lens _dlrsStatus (\ s a -> s{_dlrsStatus = a});
diff --git a/gen/Network/AWS/DirectConnect/DescribeVirtualGateways.hs b/gen/Network/AWS/DirectConnect/DescribeVirtualGateways.hs
--- a/gen/Network/AWS/DirectConnect/DescribeVirtualGateways.hs
+++ b/gen/Network/AWS/DirectConnect/DescribeVirtualGateways.hs
@@ -1,107 +1,122 @@
-{-# 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.DirectConnect.DescribeVirtualGateways
--- 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.
-
--- | Returns a list of virtual private gateways owned by the AWS account.
+-- Returns a list of virtual private gateways owned by the AWS account.
 --
 -- You can create one or more AWS Direct Connect private virtual interfaces
 -- linking to a virtual private gateway. A virtual private gateway can be
--- managed via Amazon Virtual Private Cloud (VPC) console or the <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateVpnGateway.html EC2CreateVpnGateway> action.
+-- managed via Amazon Virtual Private Cloud (VPC) console or the
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateVpnGateway.html EC2 CreateVpnGateway>
+-- action.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeVirtualGateways.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeVirtualGateways.html AWS API Reference> for DescribeVirtualGateways.
 module Network.AWS.DirectConnect.DescribeVirtualGateways
     (
-    -- * Request
-      DescribeVirtualGateways
-    -- ** Request constructor
-    , describeVirtualGateways
+    -- * Creating a Request
+      describeVirtualGateways
+    , DescribeVirtualGateways
 
-    -- * Response
-    , DescribeVirtualGatewaysResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeVirtualGatewaysResponse
-    -- ** Response lenses
-    , dvgrVirtualGateways
+    , DescribeVirtualGatewaysResponse
+    -- * Response Lenses
+    , dvgrsVirtualGateways
+    , dvgrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-data DescribeVirtualGateways = DescribeVirtualGateways
-    deriving (Eq, Ord, Read, Show, Generic)
-
--- | 'DescribeVirtualGateways' constructor.
-describeVirtualGateways :: DescribeVirtualGateways
-describeVirtualGateways = DescribeVirtualGateways
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DescribeVirtualGatewaysResponse = DescribeVirtualGatewaysResponse
-    { _dvgrVirtualGateways :: List "virtualGateways" VirtualGateway
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+-- | /See:/ 'describeVirtualGateways' smart constructor.
+data DescribeVirtualGateways =
+    DescribeVirtualGateways'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance GHC.Exts.IsList DescribeVirtualGatewaysResponse where
-    type Item DescribeVirtualGatewaysResponse = VirtualGateway
+-- | Creates a value of 'DescribeVirtualGateways' with the minimum fields required to make a request.
+--
+describeVirtualGateways
+    :: DescribeVirtualGateways
+describeVirtualGateways = DescribeVirtualGateways'
 
-    fromList = DescribeVirtualGatewaysResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dvgrVirtualGateways
+instance AWSRequest DescribeVirtualGateways where
+        type Sv DescribeVirtualGateways = DirectConnect
+        type Rs DescribeVirtualGateways =
+             DescribeVirtualGatewaysResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeVirtualGatewaysResponse' <$>
+                   (x .?> "virtualGateways" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeVirtualGatewaysResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dvgrVirtualGateways' @::@ ['VirtualGateway']
---
-describeVirtualGatewaysResponse :: DescribeVirtualGatewaysResponse
-describeVirtualGatewaysResponse = DescribeVirtualGatewaysResponse
-    { _dvgrVirtualGateways = mempty
-    }
+instance ToHeaders DescribeVirtualGateways where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.DescribeVirtualGateways" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A list of virtual private gateways.
-dvgrVirtualGateways :: Lens' DescribeVirtualGatewaysResponse [VirtualGateway]
-dvgrVirtualGateways =
-    lens _dvgrVirtualGateways (\s a -> s { _dvgrVirtualGateways = a })
-        . _List
+instance ToJSON DescribeVirtualGateways where
+        toJSON = const (Object mempty)
 
 instance ToPath DescribeVirtualGateways where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeVirtualGateways where
-    toQuery = const mempty
-
-instance ToHeaders DescribeVirtualGateways
+        toQuery = const mempty
 
-instance ToJSON DescribeVirtualGateways where
-    toJSON = const (toJSON Empty)
+-- | A structure containing a list of virtual private gateways.
+--
+-- /See:/ 'describeVirtualGatewaysResponse' smart constructor.
+data DescribeVirtualGatewaysResponse = DescribeVirtualGatewaysResponse'
+    { _dvgrsVirtualGateways :: !(Maybe [VirtualGateway])
+    , _dvgrsStatus          :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeVirtualGateways where
-    type Sv DescribeVirtualGateways = DirectConnect
-    type Rs DescribeVirtualGateways = DescribeVirtualGatewaysResponse
+-- | Creates a value of 'DescribeVirtualGatewaysResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dvgrsVirtualGateways'
+--
+-- * 'dvgrsStatus'
+describeVirtualGatewaysResponse
+    :: Int -- ^ 'dvgrsStatus'
+    -> DescribeVirtualGatewaysResponse
+describeVirtualGatewaysResponse pStatus_ =
+    DescribeVirtualGatewaysResponse'
+    { _dvgrsVirtualGateways = Nothing
+    , _dvgrsStatus = pStatus_
+    }
 
-    request  = post "DescribeVirtualGateways"
-    response = jsonResponse
+-- | A list of virtual private gateways.
+dvgrsVirtualGateways :: Lens' DescribeVirtualGatewaysResponse [VirtualGateway]
+dvgrsVirtualGateways = lens _dvgrsVirtualGateways (\ s a -> s{_dvgrsVirtualGateways = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeVirtualGatewaysResponse where
-    parseJSON = withObject "DescribeVirtualGatewaysResponse" $ \o -> DescribeVirtualGatewaysResponse
-        <$> o .:? "virtualGateways" .!= mempty
+-- | The response status code.
+dvgrsStatus :: Lens' DescribeVirtualGatewaysResponse Int
+dvgrsStatus = lens _dvgrsStatus (\ s a -> s{_dvgrsStatus = a});
diff --git a/gen/Network/AWS/DirectConnect/DescribeVirtualInterfaces.hs b/gen/Network/AWS/DirectConnect/DescribeVirtualInterfaces.hs
--- a/gen/Network/AWS/DirectConnect/DescribeVirtualInterfaces.hs
+++ b/gen/Network/AWS/DirectConnect/DescribeVirtualInterfaces.hs
@@ -1,139 +1,154 @@
-{-# 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.DirectConnect.DescribeVirtualInterfaces
--- 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.
-
--- | Displays all virtual interfaces for an AWS account. Virtual interfaces
--- deleted fewer than 15 minutes before DescribeVirtualInterfaces is called are
--- also returned. If a connection ID is included then only virtual interfaces
--- associated with this connection will be returned. If a virtual interface ID
--- is included then only a single virtual interface will be returned.
+-- Displays all virtual interfaces for an AWS account. Virtual interfaces
+-- deleted fewer than 15 minutes before DescribeVirtualInterfaces is called
+-- are also returned. If a connection ID is included then only virtual
+-- interfaces associated with this connection will be returned. If a
+-- virtual interface ID is included then only a single virtual interface
+-- will be returned.
 --
 -- A virtual interface (VLAN) transmits the traffic between the AWS Direct
 -- Connect location and the customer.
 --
--- If a connection ID is provided, only virtual interfaces provisioned on the
--- specified connection will be returned. If a virtual interface ID is provided,
--- only this particular virtual interface will be returned.
+-- If a connection ID is provided, only virtual interfaces provisioned on
+-- the specified connection will be returned. If a virtual interface ID is
+-- provided, only this particular virtual interface will be returned.
 --
--- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeVirtualInterfaces.html>
+-- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeVirtualInterfaces.html AWS API Reference> for DescribeVirtualInterfaces.
 module Network.AWS.DirectConnect.DescribeVirtualInterfaces
     (
-    -- * Request
-      DescribeVirtualInterfaces
-    -- ** Request constructor
-    , describeVirtualInterfaces
-    -- ** Request lenses
+    -- * Creating a Request
+      describeVirtualInterfaces
+    , DescribeVirtualInterfaces
+    -- * Request Lenses
     , dviConnectionId
     , dviVirtualInterfaceId
 
-    -- * Response
-    , DescribeVirtualInterfacesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeVirtualInterfacesResponse
-    -- ** Response lenses
-    , dvirVirtualInterfaces
+    , DescribeVirtualInterfacesResponse
+    -- * Response Lenses
+    , dvisrsVirtualInterfaces
+    , dvisrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.DirectConnect.Types
-import qualified GHC.Exts
-
-data DescribeVirtualInterfaces = DescribeVirtualInterfaces
-    { _dviConnectionId       :: Maybe Text
-    , _dviVirtualInterfaceId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'DescribeVirtualInterfaces' constructor.
+-- | Container for the parameters to the DescribeVirtualInterfaces operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeVirtualInterfaces' smart constructor.
+data DescribeVirtualInterfaces = DescribeVirtualInterfaces'
+    { _dviConnectionId       :: !(Maybe Text)
+    , _dviVirtualInterfaceId :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeVirtualInterfaces' with the minimum fields required to make a request.
 --
--- * 'dviConnectionId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dviVirtualInterfaceId' @::@ 'Maybe' 'Text'
+-- * 'dviConnectionId'
 --
-describeVirtualInterfaces :: DescribeVirtualInterfaces
-describeVirtualInterfaces = DescribeVirtualInterfaces
-    { _dviConnectionId       = Nothing
+-- * 'dviVirtualInterfaceId'
+describeVirtualInterfaces
+    :: DescribeVirtualInterfaces
+describeVirtualInterfaces =
+    DescribeVirtualInterfaces'
+    { _dviConnectionId = Nothing
     , _dviVirtualInterfaceId = Nothing
     }
 
+-- | Undocumented member.
 dviConnectionId :: Lens' DescribeVirtualInterfaces (Maybe Text)
-dviConnectionId = lens _dviConnectionId (\s a -> s { _dviConnectionId = a })
+dviConnectionId = lens _dviConnectionId (\ s a -> s{_dviConnectionId = a});
 
+-- | Undocumented member.
 dviVirtualInterfaceId :: Lens' DescribeVirtualInterfaces (Maybe Text)
-dviVirtualInterfaceId =
-    lens _dviVirtualInterfaceId (\s a -> s { _dviVirtualInterfaceId = a })
-
-newtype DescribeVirtualInterfacesResponse = DescribeVirtualInterfacesResponse
-    { _dvirVirtualInterfaces :: List "virtualInterfaces" VirtualInterface
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeVirtualInterfacesResponse where
-    type Item DescribeVirtualInterfacesResponse = VirtualInterface
+dviVirtualInterfaceId = lens _dviVirtualInterfaceId (\ s a -> s{_dviVirtualInterfaceId = a});
 
-    fromList = DescribeVirtualInterfacesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dvirVirtualInterfaces
+instance AWSRequest DescribeVirtualInterfaces where
+        type Sv DescribeVirtualInterfaces = DirectConnect
+        type Rs DescribeVirtualInterfaces =
+             DescribeVirtualInterfacesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeVirtualInterfacesResponse' <$>
+                   (x .?> "virtualInterfaces" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeVirtualInterfacesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dvirVirtualInterfaces' @::@ ['VirtualInterface']
---
-describeVirtualInterfacesResponse :: DescribeVirtualInterfacesResponse
-describeVirtualInterfacesResponse = DescribeVirtualInterfacesResponse
-    { _dvirVirtualInterfaces = mempty
-    }
+instance ToHeaders DescribeVirtualInterfaces where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.DescribeVirtualInterfaces" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A list of virtual interfaces.
-dvirVirtualInterfaces :: Lens' DescribeVirtualInterfacesResponse [VirtualInterface]
-dvirVirtualInterfaces =
-    lens _dvirVirtualInterfaces (\s a -> s { _dvirVirtualInterfaces = a })
-        . _List
+instance ToJSON DescribeVirtualInterfaces where
+        toJSON DescribeVirtualInterfaces'{..}
+          = object
+              ["connectionId" .= _dviConnectionId,
+               "virtualInterfaceId" .= _dviVirtualInterfaceId]
 
 instance ToPath DescribeVirtualInterfaces where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeVirtualInterfaces where
-    toQuery = const mempty
-
-instance ToHeaders DescribeVirtualInterfaces
+        toQuery = const mempty
 
-instance ToJSON DescribeVirtualInterfaces where
-    toJSON DescribeVirtualInterfaces{..} = object
-        [ "connectionId"       .= _dviConnectionId
-        , "virtualInterfaceId" .= _dviVirtualInterfaceId
-        ]
+-- | A structure containing a list of virtual interfaces.
+--
+-- /See:/ 'describeVirtualInterfacesResponse' smart constructor.
+data DescribeVirtualInterfacesResponse = DescribeVirtualInterfacesResponse'
+    { _dvisrsVirtualInterfaces :: !(Maybe [VirtualInterface])
+    , _dvisrsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeVirtualInterfaces where
-    type Sv DescribeVirtualInterfaces = DirectConnect
-    type Rs DescribeVirtualInterfaces = DescribeVirtualInterfacesResponse
+-- | Creates a value of 'DescribeVirtualInterfacesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dvisrsVirtualInterfaces'
+--
+-- * 'dvisrsStatus'
+describeVirtualInterfacesResponse
+    :: Int -- ^ 'dvisrsStatus'
+    -> DescribeVirtualInterfacesResponse
+describeVirtualInterfacesResponse pStatus_ =
+    DescribeVirtualInterfacesResponse'
+    { _dvisrsVirtualInterfaces = Nothing
+    , _dvisrsStatus = pStatus_
+    }
 
-    request  = post "DescribeVirtualInterfaces"
-    response = jsonResponse
+-- | A list of virtual interfaces.
+dvisrsVirtualInterfaces :: Lens' DescribeVirtualInterfacesResponse [VirtualInterface]
+dvisrsVirtualInterfaces = lens _dvisrsVirtualInterfaces (\ s a -> s{_dvisrsVirtualInterfaces = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeVirtualInterfacesResponse where
-    parseJSON = withObject "DescribeVirtualInterfacesResponse" $ \o -> DescribeVirtualInterfacesResponse
-        <$> o .:? "virtualInterfaces" .!= mempty
+-- | The response status code.
+dvisrsStatus :: Lens' DescribeVirtualInterfacesResponse Int
+dvisrsStatus = lens _dvisrsStatus (\ s a -> s{_dvisrsStatus = a});
diff --git a/gen/Network/AWS/DirectConnect/Types.hs b/gen/Network/AWS/DirectConnect/Types.hs
--- a/gen/Network/AWS/DirectConnect/Types.hs
+++ b/gen/Network/AWS/DirectConnect/Types.hs
@@ -1,1163 +1,189 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-{-# LANGUAGE ViewPatterns                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.DirectConnect.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/.
--- 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.
-
-module Network.AWS.DirectConnect.Types
-    (
-    -- * Service
-      DirectConnect
-    -- ** Error
-    , JSONError
-
-    -- * VirtualInterface
-    , VirtualInterface
-    , virtualInterface
-    , viAmazonAddress
-    , viAsn
-    , viAuthKey
-    , viConnectionId
-    , viCustomerAddress
-    , viCustomerRouterConfig
-    , viLocation
-    , viOwnerAccount
-    , viRouteFilterPrefixes
-    , viVirtualGatewayId
-    , viVirtualInterfaceId
-    , viVirtualInterfaceName
-    , viVirtualInterfaceState
-    , viVirtualInterfaceType
-    , viVlan
-
-    -- * Location
-    , Location
-    , location
-    , lLocationCode
-    , lLocationName
-
-    -- * Connections
-    , Connections
-    , connections
-    , cConnections
-
-    -- * NewPrivateVirtualInterfaceAllocation
-    , NewPrivateVirtualInterfaceAllocation
-    , newPrivateVirtualInterfaceAllocation
-    , npviaAmazonAddress
-    , npviaAsn
-    , npviaAuthKey
-    , npviaCustomerAddress
-    , npviaVirtualInterfaceName
-    , npviaVlan
-
-    -- * VirtualInterfaceState
-    , VirtualInterfaceState (..)
-
-    -- * Connection
-    , Connection
-    , connection
-    , cBandwidth
-    , cConnectionId
-    , cConnectionName
-    , cConnectionState
-    , cLocation
-    , cOwnerAccount
-    , cPartnerName
-    , cRegion
-    , cVlan
-
-    -- * NewPublicVirtualInterface
-    , NewPublicVirtualInterface
-    , newPublicVirtualInterface
-    , npviAmazonAddress
-    , npviAsn
-    , npviAuthKey
-    , npviCustomerAddress
-    , npviRouteFilterPrefixes
-    , npviVirtualInterfaceName
-    , npviVlan
-
-    -- * Interconnect
-    , Interconnect
-    , interconnect
-    , iBandwidth
-    , iInterconnectId
-    , iInterconnectName
-    , iInterconnectState
-    , iLocation
-    , iRegion
-
-    -- * InterconnectState
-    , InterconnectState (..)
-
-    -- * NewPrivateVirtualInterface
-    , NewPrivateVirtualInterface
-    , newPrivateVirtualInterface
-    , npvi1AmazonAddress
-    , npvi1Asn
-    , npvi1AuthKey
-    , npvi1CustomerAddress
-    , npvi1VirtualGatewayId
-    , npvi1VirtualInterfaceName
-    , npvi1Vlan
-
-    -- * NewPublicVirtualInterfaceAllocation
-    , NewPublicVirtualInterfaceAllocation
-    , newPublicVirtualInterfaceAllocation
-    , npvia1AmazonAddress
-    , npvia1Asn
-    , npvia1AuthKey
-    , npvia1CustomerAddress
-    , npvia1RouteFilterPrefixes
-    , npvia1VirtualInterfaceName
-    , npvia1Vlan
-
-    -- * ConnectionState
-    , ConnectionState (..)
-
-    -- * VirtualGateway
-    , VirtualGateway
-    , virtualGateway
-    , vgVirtualGatewayId
-    , vgVirtualGatewayState
-
-    -- * RouteFilterPrefix
-    , RouteFilterPrefix
-    , routeFilterPrefix
-    , rfpCidr
-    ) where
-
-import Network.AWS.Prelude
-import Network.AWS.Signing
-import qualified GHC.Exts
-
--- | Version @2012-10-25@ of the Amazon Direct Connect service.
-data DirectConnect
-
-instance AWSService DirectConnect where
-    type Sg DirectConnect = V4
-    type Er DirectConnect = JSONError
-
-    service = service'
-      where
-        service' :: Service DirectConnect
-        service' = Service
-            { _svcAbbrev       = "DirectConnect"
-            , _svcPrefix       = "directconnect"
-            , _svcVersion      = "2012-10-25"
-            , _svcTargetPrefix = Just "OvertureService"
-            , _svcJSONVersion  = Just "1.1"
-            , _svcHandle       = handle
-            , _svcRetry        = retry
-            }
-
-        handle :: Status
-               -> Maybe (LazyByteString -> ServiceError JSONError)
-        handle = jsonError statusSuccess service'
-
-        retry :: Retry DirectConnect
-        retry = Exponential
-            { _retryBase     = 0.05
-            , _retryGrowth   = 2
-            , _retryAttempts = 5
-            , _retryCheck    = check
-            }
-
-        check :: Status
-              -> JSONError
-              -> Bool
-        check (statusCode -> s) (awsErrorCode -> e)
-            | s == 400 && (Just "Throttling") == e = True -- Throttling
-            | s == 500  = True -- General Server Error
-            | s == 509  = True -- Limit Exceeded
-            | s == 503  = True -- Service Unavailable
-            | otherwise = False
-
-data VirtualInterface = VirtualInterface
-    { _viAmazonAddress         :: Maybe Text
-    , _viAsn                   :: Maybe Int
-    , _viAuthKey               :: Maybe Text
-    , _viConnectionId          :: Maybe Text
-    , _viCustomerAddress       :: Maybe Text
-    , _viCustomerRouterConfig  :: Maybe Text
-    , _viLocation              :: Maybe Text
-    , _viOwnerAccount          :: Maybe Text
-    , _viRouteFilterPrefixes   :: List "routeFilterPrefixes" RouteFilterPrefix
-    , _viVirtualGatewayId      :: Maybe Text
-    , _viVirtualInterfaceId    :: Maybe Text
-    , _viVirtualInterfaceName  :: Maybe Text
-    , _viVirtualInterfaceState :: Maybe VirtualInterfaceState
-    , _viVirtualInterfaceType  :: Maybe Text
-    , _viVlan                  :: Maybe Int
-    } deriving (Eq, Read, Show)
-
--- | 'VirtualInterface' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'viAmazonAddress' @::@ 'Maybe' 'Text'
---
--- * 'viAsn' @::@ 'Maybe' 'Int'
---
--- * 'viAuthKey' @::@ 'Maybe' 'Text'
---
--- * 'viConnectionId' @::@ 'Maybe' 'Text'
---
--- * 'viCustomerAddress' @::@ 'Maybe' 'Text'
---
--- * 'viCustomerRouterConfig' @::@ 'Maybe' 'Text'
---
--- * 'viLocation' @::@ 'Maybe' 'Text'
---
--- * 'viOwnerAccount' @::@ 'Maybe' 'Text'
---
--- * 'viRouteFilterPrefixes' @::@ ['RouteFilterPrefix']
---
--- * 'viVirtualGatewayId' @::@ 'Maybe' 'Text'
---
--- * 'viVirtualInterfaceId' @::@ 'Maybe' 'Text'
---
--- * 'viVirtualInterfaceName' @::@ 'Maybe' 'Text'
---
--- * 'viVirtualInterfaceState' @::@ 'Maybe' 'VirtualInterfaceState'
---
--- * 'viVirtualInterfaceType' @::@ 'Maybe' 'Text'
---
--- * 'viVlan' @::@ 'Maybe' 'Int'
---
-virtualInterface :: VirtualInterface
-virtualInterface = VirtualInterface
-    { _viOwnerAccount          = Nothing
-    , _viVirtualInterfaceId    = Nothing
-    , _viLocation              = Nothing
-    , _viConnectionId          = Nothing
-    , _viVirtualInterfaceType  = Nothing
-    , _viVirtualInterfaceName  = Nothing
-    , _viVlan                  = Nothing
-    , _viAsn                   = Nothing
-    , _viAuthKey               = Nothing
-    , _viAmazonAddress         = Nothing
-    , _viCustomerAddress       = Nothing
-    , _viVirtualInterfaceState = Nothing
-    , _viCustomerRouterConfig  = Nothing
-    , _viVirtualGatewayId      = Nothing
-    , _viRouteFilterPrefixes   = mempty
-    }
-
-viAmazonAddress :: Lens' VirtualInterface (Maybe Text)
-viAmazonAddress = lens _viAmazonAddress (\s a -> s { _viAmazonAddress = a })
-
-viAsn :: Lens' VirtualInterface (Maybe Int)
-viAsn = lens _viAsn (\s a -> s { _viAsn = a })
-
-viAuthKey :: Lens' VirtualInterface (Maybe Text)
-viAuthKey = lens _viAuthKey (\s a -> s { _viAuthKey = a })
-
-viConnectionId :: Lens' VirtualInterface (Maybe Text)
-viConnectionId = lens _viConnectionId (\s a -> s { _viConnectionId = a })
-
-viCustomerAddress :: Lens' VirtualInterface (Maybe Text)
-viCustomerAddress =
-    lens _viCustomerAddress (\s a -> s { _viCustomerAddress = a })
-
--- | Information for generating the customer router configuration.
-viCustomerRouterConfig :: Lens' VirtualInterface (Maybe Text)
-viCustomerRouterConfig =
-    lens _viCustomerRouterConfig (\s a -> s { _viCustomerRouterConfig = a })
-
-viLocation :: Lens' VirtualInterface (Maybe Text)
-viLocation = lens _viLocation (\s a -> s { _viLocation = a })
-
-viOwnerAccount :: Lens' VirtualInterface (Maybe Text)
-viOwnerAccount = lens _viOwnerAccount (\s a -> s { _viOwnerAccount = a })
-
-viRouteFilterPrefixes :: Lens' VirtualInterface [RouteFilterPrefix]
-viRouteFilterPrefixes =
-    lens _viRouteFilterPrefixes (\s a -> s { _viRouteFilterPrefixes = a })
-        . _List
-
-viVirtualGatewayId :: Lens' VirtualInterface (Maybe Text)
-viVirtualGatewayId =
-    lens _viVirtualGatewayId (\s a -> s { _viVirtualGatewayId = a })
-
-viVirtualInterfaceId :: Lens' VirtualInterface (Maybe Text)
-viVirtualInterfaceId =
-    lens _viVirtualInterfaceId (\s a -> s { _viVirtualInterfaceId = a })
-
-viVirtualInterfaceName :: Lens' VirtualInterface (Maybe Text)
-viVirtualInterfaceName =
-    lens _viVirtualInterfaceName (\s a -> s { _viVirtualInterfaceName = a })
-
-viVirtualInterfaceState :: Lens' VirtualInterface (Maybe VirtualInterfaceState)
-viVirtualInterfaceState =
-    lens _viVirtualInterfaceState (\s a -> s { _viVirtualInterfaceState = a })
-
-viVirtualInterfaceType :: Lens' VirtualInterface (Maybe Text)
-viVirtualInterfaceType =
-    lens _viVirtualInterfaceType (\s a -> s { _viVirtualInterfaceType = a })
-
-viVlan :: Lens' VirtualInterface (Maybe Int)
-viVlan = lens _viVlan (\s a -> s { _viVlan = a })
-
-instance FromJSON VirtualInterface where
-    parseJSON = withObject "VirtualInterface" $ \o -> VirtualInterface
-        <$> o .:? "amazonAddress"
-        <*> o .:? "asn"
-        <*> o .:? "authKey"
-        <*> o .:? "connectionId"
-        <*> o .:? "customerAddress"
-        <*> o .:? "customerRouterConfig"
-        <*> o .:? "location"
-        <*> o .:? "ownerAccount"
-        <*> o .:? "routeFilterPrefixes" .!= mempty
-        <*> o .:? "virtualGatewayId"
-        <*> o .:? "virtualInterfaceId"
-        <*> o .:? "virtualInterfaceName"
-        <*> o .:? "virtualInterfaceState"
-        <*> o .:? "virtualInterfaceType"
-        <*> o .:? "vlan"
-
-instance ToJSON VirtualInterface where
-    toJSON VirtualInterface{..} = object
-        [ "ownerAccount"          .= _viOwnerAccount
-        , "virtualInterfaceId"    .= _viVirtualInterfaceId
-        , "location"              .= _viLocation
-        , "connectionId"          .= _viConnectionId
-        , "virtualInterfaceType"  .= _viVirtualInterfaceType
-        , "virtualInterfaceName"  .= _viVirtualInterfaceName
-        , "vlan"                  .= _viVlan
-        , "asn"                   .= _viAsn
-        , "authKey"               .= _viAuthKey
-        , "amazonAddress"         .= _viAmazonAddress
-        , "customerAddress"       .= _viCustomerAddress
-        , "virtualInterfaceState" .= _viVirtualInterfaceState
-        , "customerRouterConfig"  .= _viCustomerRouterConfig
-        , "virtualGatewayId"      .= _viVirtualGatewayId
-        , "routeFilterPrefixes"   .= _viRouteFilterPrefixes
-        ]
-
-data Location = Location
-    { _lLocationCode :: Maybe Text
-    , _lLocationName :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Location' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lLocationCode' @::@ 'Maybe' 'Text'
---
--- * 'lLocationName' @::@ 'Maybe' 'Text'
---
-location :: Location
-location = Location
-    { _lLocationCode = Nothing
-    , _lLocationName = Nothing
-    }
-
--- | The code used to indicate the AWS Direct Connect location.
-lLocationCode :: Lens' Location (Maybe Text)
-lLocationCode = lens _lLocationCode (\s a -> s { _lLocationCode = a })
-
--- | The name of the AWS Direct Connect location. The name includes the colocation
--- partner name and the physical site of the lit building.
-lLocationName :: Lens' Location (Maybe Text)
-lLocationName = lens _lLocationName (\s a -> s { _lLocationName = a })
-
-instance FromJSON Location where
-    parseJSON = withObject "Location" $ \o -> Location
-        <$> o .:? "locationCode"
-        <*> o .:? "locationName"
-
-instance ToJSON Location where
-    toJSON Location{..} = object
-        [ "locationCode" .= _lLocationCode
-        , "locationName" .= _lLocationName
-        ]
-
-newtype Connections = Connections
-    { _cConnections :: List "connections" Connection
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList Connections where
-    type Item Connections = Connection
-
-    fromList = Connections . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _cConnections
-
--- | 'Connections' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cConnections' @::@ ['Connection']
---
-connections :: Connections
-connections = Connections
-    { _cConnections = mempty
-    }
-
--- | A list of connections.
-cConnections :: Lens' Connections [Connection]
-cConnections = lens _cConnections (\s a -> s { _cConnections = a }) . _List
-
-instance FromJSON Connections where
-    parseJSON = withObject "Connections" $ \o -> Connections
-        <$> o .:? "connections" .!= mempty
-
-instance ToJSON Connections where
-    toJSON Connections{..} = object
-        [ "connections" .= _cConnections
-        ]
-
-data NewPrivateVirtualInterfaceAllocation = NewPrivateVirtualInterfaceAllocation
-    { _npviaAmazonAddress        :: Maybe Text
-    , _npviaAsn                  :: Int
-    , _npviaAuthKey              :: Maybe Text
-    , _npviaCustomerAddress      :: Maybe Text
-    , _npviaVirtualInterfaceName :: Text
-    , _npviaVlan                 :: Int
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'NewPrivateVirtualInterfaceAllocation' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'npviaAmazonAddress' @::@ 'Maybe' 'Text'
---
--- * 'npviaAsn' @::@ 'Int'
---
--- * 'npviaAuthKey' @::@ 'Maybe' 'Text'
---
--- * 'npviaCustomerAddress' @::@ 'Maybe' 'Text'
---
--- * 'npviaVirtualInterfaceName' @::@ 'Text'
---
--- * 'npviaVlan' @::@ 'Int'
---
-newPrivateVirtualInterfaceAllocation :: Text -- ^ 'npviaVirtualInterfaceName'
-                                     -> Int -- ^ 'npviaVlan'
-                                     -> Int -- ^ 'npviaAsn'
-                                     -> NewPrivateVirtualInterfaceAllocation
-newPrivateVirtualInterfaceAllocation p1 p2 p3 = NewPrivateVirtualInterfaceAllocation
-    { _npviaVirtualInterfaceName = p1
-    , _npviaVlan                 = p2
-    , _npviaAsn                  = p3
-    , _npviaAuthKey              = Nothing
-    , _npviaAmazonAddress        = Nothing
-    , _npviaCustomerAddress      = Nothing
-    }
-
-npviaAmazonAddress :: Lens' NewPrivateVirtualInterfaceAllocation (Maybe Text)
-npviaAmazonAddress =
-    lens _npviaAmazonAddress (\s a -> s { _npviaAmazonAddress = a })
-
-npviaAsn :: Lens' NewPrivateVirtualInterfaceAllocation Int
-npviaAsn = lens _npviaAsn (\s a -> s { _npviaAsn = a })
-
-npviaAuthKey :: Lens' NewPrivateVirtualInterfaceAllocation (Maybe Text)
-npviaAuthKey = lens _npviaAuthKey (\s a -> s { _npviaAuthKey = a })
-
-npviaCustomerAddress :: Lens' NewPrivateVirtualInterfaceAllocation (Maybe Text)
-npviaCustomerAddress =
-    lens _npviaCustomerAddress (\s a -> s { _npviaCustomerAddress = a })
-
-npviaVirtualInterfaceName :: Lens' NewPrivateVirtualInterfaceAllocation Text
-npviaVirtualInterfaceName =
-    lens _npviaVirtualInterfaceName
-        (\s a -> s { _npviaVirtualInterfaceName = a })
-
-npviaVlan :: Lens' NewPrivateVirtualInterfaceAllocation Int
-npviaVlan = lens _npviaVlan (\s a -> s { _npviaVlan = a })
-
-instance FromJSON NewPrivateVirtualInterfaceAllocation where
-    parseJSON = withObject "NewPrivateVirtualInterfaceAllocation" $ \o -> NewPrivateVirtualInterfaceAllocation
-        <$> o .:? "amazonAddress"
-        <*> o .:  "asn"
-        <*> o .:? "authKey"
-        <*> o .:? "customerAddress"
-        <*> o .:  "virtualInterfaceName"
-        <*> o .:  "vlan"
-
-instance ToJSON NewPrivateVirtualInterfaceAllocation where
-    toJSON NewPrivateVirtualInterfaceAllocation{..} = object
-        [ "virtualInterfaceName" .= _npviaVirtualInterfaceName
-        , "vlan"                 .= _npviaVlan
-        , "asn"                  .= _npviaAsn
-        , "authKey"              .= _npviaAuthKey
-        , "amazonAddress"        .= _npviaAmazonAddress
-        , "customerAddress"      .= _npviaCustomerAddress
-        ]
-
-data VirtualInterfaceState
-    = Available  -- ^ available
-    | Confirming -- ^ confirming
-    | Deleted    -- ^ deleted
-    | Deleting   -- ^ deleting
-    | Pending    -- ^ pending
-    | Rejected   -- ^ rejected
-    | Verifying  -- ^ verifying
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable VirtualInterfaceState
-
-instance FromText VirtualInterfaceState where
-    parser = takeLowerText >>= \case
-        "available"  -> pure Available
-        "confirming" -> pure Confirming
-        "deleted"    -> pure Deleted
-        "deleting"   -> pure Deleting
-        "pending"    -> pure Pending
-        "rejected"   -> pure Rejected
-        "verifying"  -> pure Verifying
-        e            -> fail $
-            "Failure parsing VirtualInterfaceState from " ++ show e
-
-instance ToText VirtualInterfaceState where
-    toText = \case
-        Available  -> "available"
-        Confirming -> "confirming"
-        Deleted    -> "deleted"
-        Deleting   -> "deleting"
-        Pending    -> "pending"
-        Rejected   -> "rejected"
-        Verifying  -> "verifying"
-
-instance ToByteString VirtualInterfaceState
-instance ToHeader     VirtualInterfaceState
-instance ToQuery      VirtualInterfaceState
-
-instance FromJSON VirtualInterfaceState where
-    parseJSON = parseJSONText "VirtualInterfaceState"
-
-instance ToJSON VirtualInterfaceState where
-    toJSON = toJSONText
-
-data Connection = Connection
-    { _cBandwidth       :: Maybe Text
-    , _cConnectionId    :: Maybe Text
-    , _cConnectionName  :: Maybe Text
-    , _cConnectionState :: Maybe ConnectionState
-    , _cLocation        :: Maybe Text
-    , _cOwnerAccount    :: Maybe Text
-    , _cPartnerName     :: Maybe Text
-    , _cRegion          :: Maybe Text
-    , _cVlan            :: Maybe Int
-    } deriving (Eq, Read, Show)
-
--- | 'Connection' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cBandwidth' @::@ 'Maybe' 'Text'
---
--- * 'cConnectionId' @::@ 'Maybe' 'Text'
---
--- * 'cConnectionName' @::@ 'Maybe' 'Text'
---
--- * 'cConnectionState' @::@ 'Maybe' 'ConnectionState'
---
--- * 'cLocation' @::@ 'Maybe' 'Text'
---
--- * 'cOwnerAccount' @::@ 'Maybe' 'Text'
---
--- * 'cPartnerName' @::@ 'Maybe' 'Text'
---
--- * 'cRegion' @::@ 'Maybe' 'Text'
---
--- * 'cVlan' @::@ 'Maybe' 'Int'
---
-connection :: Connection
-connection = Connection
-    { _cOwnerAccount    = Nothing
-    , _cConnectionId    = Nothing
-    , _cConnectionName  = Nothing
-    , _cConnectionState = Nothing
-    , _cRegion          = Nothing
-    , _cLocation        = Nothing
-    , _cBandwidth       = Nothing
-    , _cVlan            = Nothing
-    , _cPartnerName     = Nothing
-    }
-
--- | Bandwidth of the connection.
---
--- Example: 1Gbps (for regular connections), or 500Mbps (for hosted connections)
---
--- Default: None
-cBandwidth :: Lens' Connection (Maybe Text)
-cBandwidth = lens _cBandwidth (\s a -> s { _cBandwidth = a })
-
-cConnectionId :: Lens' Connection (Maybe Text)
-cConnectionId = lens _cConnectionId (\s a -> s { _cConnectionId = a })
-
-cConnectionName :: Lens' Connection (Maybe Text)
-cConnectionName = lens _cConnectionName (\s a -> s { _cConnectionName = a })
-
-cConnectionState :: Lens' Connection (Maybe ConnectionState)
-cConnectionState = lens _cConnectionState (\s a -> s { _cConnectionState = a })
-
-cLocation :: Lens' Connection (Maybe Text)
-cLocation = lens _cLocation (\s a -> s { _cLocation = a })
-
-cOwnerAccount :: Lens' Connection (Maybe Text)
-cOwnerAccount = lens _cOwnerAccount (\s a -> s { _cOwnerAccount = a })
-
-cPartnerName :: Lens' Connection (Maybe Text)
-cPartnerName = lens _cPartnerName (\s a -> s { _cPartnerName = a })
-
-cRegion :: Lens' Connection (Maybe Text)
-cRegion = lens _cRegion (\s a -> s { _cRegion = a })
-
-cVlan :: Lens' Connection (Maybe Int)
-cVlan = lens _cVlan (\s a -> s { _cVlan = a })
-
-instance FromJSON Connection where
-    parseJSON = withObject "Connection" $ \o -> Connection
-        <$> o .:? "bandwidth"
-        <*> o .:? "connectionId"
-        <*> o .:? "connectionName"
-        <*> o .:? "connectionState"
-        <*> o .:? "location"
-        <*> o .:? "ownerAccount"
-        <*> o .:? "partnerName"
-        <*> o .:? "region"
-        <*> o .:? "vlan"
-
-instance ToJSON Connection where
-    toJSON Connection{..} = object
-        [ "ownerAccount"    .= _cOwnerAccount
-        , "connectionId"    .= _cConnectionId
-        , "connectionName"  .= _cConnectionName
-        , "connectionState" .= _cConnectionState
-        , "region"          .= _cRegion
-        , "location"        .= _cLocation
-        , "bandwidth"       .= _cBandwidth
-        , "vlan"            .= _cVlan
-        , "partnerName"     .= _cPartnerName
-        ]
-
-data NewPublicVirtualInterface = NewPublicVirtualInterface
-    { _npviAmazonAddress        :: Text
-    , _npviAsn                  :: Int
-    , _npviAuthKey              :: Maybe Text
-    , _npviCustomerAddress      :: Text
-    , _npviRouteFilterPrefixes  :: List "routeFilterPrefixes" RouteFilterPrefix
-    , _npviVirtualInterfaceName :: Text
-    , _npviVlan                 :: Int
-    } deriving (Eq, Read, Show)
-
--- | 'NewPublicVirtualInterface' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'npviAmazonAddress' @::@ 'Text'
---
--- * 'npviAsn' @::@ 'Int'
---
--- * 'npviAuthKey' @::@ 'Maybe' 'Text'
---
--- * 'npviCustomerAddress' @::@ 'Text'
---
--- * 'npviRouteFilterPrefixes' @::@ ['RouteFilterPrefix']
---
--- * 'npviVirtualInterfaceName' @::@ 'Text'
---
--- * 'npviVlan' @::@ 'Int'
---
-newPublicVirtualInterface :: Text -- ^ 'npviVirtualInterfaceName'
-                          -> Int -- ^ 'npviVlan'
-                          -> Int -- ^ 'npviAsn'
-                          -> Text -- ^ 'npviAmazonAddress'
-                          -> Text -- ^ 'npviCustomerAddress'
-                          -> NewPublicVirtualInterface
-newPublicVirtualInterface p1 p2 p3 p4 p5 = NewPublicVirtualInterface
-    { _npviVirtualInterfaceName = p1
-    , _npviVlan                 = p2
-    , _npviAsn                  = p3
-    , _npviAmazonAddress        = p4
-    , _npviCustomerAddress      = p5
-    , _npviAuthKey              = Nothing
-    , _npviRouteFilterPrefixes  = mempty
-    }
-
-npviAmazonAddress :: Lens' NewPublicVirtualInterface Text
-npviAmazonAddress =
-    lens _npviAmazonAddress (\s a -> s { _npviAmazonAddress = a })
-
-npviAsn :: Lens' NewPublicVirtualInterface Int
-npviAsn = lens _npviAsn (\s a -> s { _npviAsn = a })
-
-npviAuthKey :: Lens' NewPublicVirtualInterface (Maybe Text)
-npviAuthKey = lens _npviAuthKey (\s a -> s { _npviAuthKey = a })
-
-npviCustomerAddress :: Lens' NewPublicVirtualInterface Text
-npviCustomerAddress =
-    lens _npviCustomerAddress (\s a -> s { _npviCustomerAddress = a })
-
-npviRouteFilterPrefixes :: Lens' NewPublicVirtualInterface [RouteFilterPrefix]
-npviRouteFilterPrefixes =
-    lens _npviRouteFilterPrefixes (\s a -> s { _npviRouteFilterPrefixes = a })
-        . _List
-
-npviVirtualInterfaceName :: Lens' NewPublicVirtualInterface Text
-npviVirtualInterfaceName =
-    lens _npviVirtualInterfaceName
-        (\s a -> s { _npviVirtualInterfaceName = a })
-
-npviVlan :: Lens' NewPublicVirtualInterface Int
-npviVlan = lens _npviVlan (\s a -> s { _npviVlan = a })
-
-instance FromJSON NewPublicVirtualInterface where
-    parseJSON = withObject "NewPublicVirtualInterface" $ \o -> NewPublicVirtualInterface
-        <$> o .:  "amazonAddress"
-        <*> o .:  "asn"
-        <*> o .:? "authKey"
-        <*> o .:  "customerAddress"
-        <*> o .:? "routeFilterPrefixes" .!= mempty
-        <*> o .:  "virtualInterfaceName"
-        <*> o .:  "vlan"
-
-instance ToJSON NewPublicVirtualInterface where
-    toJSON NewPublicVirtualInterface{..} = object
-        [ "virtualInterfaceName" .= _npviVirtualInterfaceName
-        , "vlan"                 .= _npviVlan
-        , "asn"                  .= _npviAsn
-        , "authKey"              .= _npviAuthKey
-        , "amazonAddress"        .= _npviAmazonAddress
-        , "customerAddress"      .= _npviCustomerAddress
-        , "routeFilterPrefixes"  .= _npviRouteFilterPrefixes
-        ]
-
-data Interconnect = Interconnect
-    { _iBandwidth         :: Maybe Text
-    , _iInterconnectId    :: Maybe Text
-    , _iInterconnectName  :: Maybe Text
-    , _iInterconnectState :: Maybe InterconnectState
-    , _iLocation          :: Maybe Text
-    , _iRegion            :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'Interconnect' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'iBandwidth' @::@ 'Maybe' 'Text'
---
--- * 'iInterconnectId' @::@ 'Maybe' 'Text'
---
--- * 'iInterconnectName' @::@ 'Maybe' 'Text'
---
--- * 'iInterconnectState' @::@ 'Maybe' 'InterconnectState'
---
--- * 'iLocation' @::@ 'Maybe' 'Text'
---
--- * 'iRegion' @::@ 'Maybe' 'Text'
---
-interconnect :: Interconnect
-interconnect = Interconnect
-    { _iInterconnectId    = Nothing
-    , _iInterconnectName  = Nothing
-    , _iInterconnectState = Nothing
-    , _iRegion            = Nothing
-    , _iLocation          = Nothing
-    , _iBandwidth         = Nothing
-    }
-
-iBandwidth :: Lens' Interconnect (Maybe Text)
-iBandwidth = lens _iBandwidth (\s a -> s { _iBandwidth = a })
-
-iInterconnectId :: Lens' Interconnect (Maybe Text)
-iInterconnectId = lens _iInterconnectId (\s a -> s { _iInterconnectId = a })
-
-iInterconnectName :: Lens' Interconnect (Maybe Text)
-iInterconnectName =
-    lens _iInterconnectName (\s a -> s { _iInterconnectName = a })
-
-iInterconnectState :: Lens' Interconnect (Maybe InterconnectState)
-iInterconnectState =
-    lens _iInterconnectState (\s a -> s { _iInterconnectState = a })
-
-iLocation :: Lens' Interconnect (Maybe Text)
-iLocation = lens _iLocation (\s a -> s { _iLocation = a })
-
-iRegion :: Lens' Interconnect (Maybe Text)
-iRegion = lens _iRegion (\s a -> s { _iRegion = a })
-
-instance FromJSON Interconnect where
-    parseJSON = withObject "Interconnect" $ \o -> Interconnect
-        <$> o .:? "bandwidth"
-        <*> o .:? "interconnectId"
-        <*> o .:? "interconnectName"
-        <*> o .:? "interconnectState"
-        <*> o .:? "location"
-        <*> o .:? "region"
-
-instance ToJSON Interconnect where
-    toJSON Interconnect{..} = object
-        [ "interconnectId"    .= _iInterconnectId
-        , "interconnectName"  .= _iInterconnectName
-        , "interconnectState" .= _iInterconnectState
-        , "region"            .= _iRegion
-        , "location"          .= _iLocation
-        , "bandwidth"         .= _iBandwidth
-        ]
-
-data InterconnectState
-    = ISAvailable -- ^ available
-    | ISDeleted   -- ^ deleted
-    | ISDeleting  -- ^ deleting
-    | ISDown      -- ^ down
-    | ISPending   -- ^ pending
-    | ISRequested -- ^ requested
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable InterconnectState
-
-instance FromText InterconnectState where
-    parser = takeLowerText >>= \case
-        "available" -> pure ISAvailable
-        "deleted"   -> pure ISDeleted
-        "deleting"  -> pure ISDeleting
-        "down"      -> pure ISDown
-        "pending"   -> pure ISPending
-        "requested" -> pure ISRequested
-        e           -> fail $
-            "Failure parsing InterconnectState from " ++ show e
-
-instance ToText InterconnectState where
-    toText = \case
-        ISAvailable -> "available"
-        ISDeleted   -> "deleted"
-        ISDeleting  -> "deleting"
-        ISDown      -> "down"
-        ISPending   -> "pending"
-        ISRequested -> "requested"
-
-instance ToByteString InterconnectState
-instance ToHeader     InterconnectState
-instance ToQuery      InterconnectState
-
-instance FromJSON InterconnectState where
-    parseJSON = parseJSONText "InterconnectState"
-
-instance ToJSON InterconnectState where
-    toJSON = toJSONText
-
-data NewPrivateVirtualInterface = NewPrivateVirtualInterface
-    { _npvi1AmazonAddress        :: Maybe Text
-    , _npvi1Asn                  :: Int
-    , _npvi1AuthKey              :: Maybe Text
-    , _npvi1CustomerAddress      :: Maybe Text
-    , _npvi1VirtualGatewayId     :: Text
-    , _npvi1VirtualInterfaceName :: Text
-    , _npvi1Vlan                 :: Int
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'NewPrivateVirtualInterface' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'npvi1AmazonAddress' @::@ 'Maybe' 'Text'
---
--- * 'npvi1Asn' @::@ 'Int'
---
--- * 'npvi1AuthKey' @::@ 'Maybe' 'Text'
---
--- * 'npvi1CustomerAddress' @::@ 'Maybe' 'Text'
---
--- * 'npvi1VirtualGatewayId' @::@ 'Text'
---
--- * 'npvi1VirtualInterfaceName' @::@ 'Text'
---
--- * 'npvi1Vlan' @::@ 'Int'
---
-newPrivateVirtualInterface :: Text -- ^ 'npvi1VirtualInterfaceName'
-                           -> Int -- ^ 'npvi1Vlan'
-                           -> Int -- ^ 'npvi1Asn'
-                           -> Text -- ^ 'npvi1VirtualGatewayId'
-                           -> NewPrivateVirtualInterface
-newPrivateVirtualInterface p1 p2 p3 p4 = NewPrivateVirtualInterface
-    { _npvi1VirtualInterfaceName = p1
-    , _npvi1Vlan                 = p2
-    , _npvi1Asn                  = p3
-    , _npvi1VirtualGatewayId     = p4
-    , _npvi1AuthKey              = Nothing
-    , _npvi1AmazonAddress        = Nothing
-    , _npvi1CustomerAddress      = Nothing
-    }
-
-npvi1AmazonAddress :: Lens' NewPrivateVirtualInterface (Maybe Text)
-npvi1AmazonAddress =
-    lens _npvi1AmazonAddress (\s a -> s { _npvi1AmazonAddress = a })
-
-npvi1Asn :: Lens' NewPrivateVirtualInterface Int
-npvi1Asn = lens _npvi1Asn (\s a -> s { _npvi1Asn = a })
-
-npvi1AuthKey :: Lens' NewPrivateVirtualInterface (Maybe Text)
-npvi1AuthKey = lens _npvi1AuthKey (\s a -> s { _npvi1AuthKey = a })
-
-npvi1CustomerAddress :: Lens' NewPrivateVirtualInterface (Maybe Text)
-npvi1CustomerAddress =
-    lens _npvi1CustomerAddress (\s a -> s { _npvi1CustomerAddress = a })
-
-npvi1VirtualGatewayId :: Lens' NewPrivateVirtualInterface Text
-npvi1VirtualGatewayId =
-    lens _npvi1VirtualGatewayId (\s a -> s { _npvi1VirtualGatewayId = a })
-
-npvi1VirtualInterfaceName :: Lens' NewPrivateVirtualInterface Text
-npvi1VirtualInterfaceName =
-    lens _npvi1VirtualInterfaceName
-        (\s a -> s { _npvi1VirtualInterfaceName = a })
-
-npvi1Vlan :: Lens' NewPrivateVirtualInterface Int
-npvi1Vlan = lens _npvi1Vlan (\s a -> s { _npvi1Vlan = a })
-
-instance FromJSON NewPrivateVirtualInterface where
-    parseJSON = withObject "NewPrivateVirtualInterface" $ \o -> NewPrivateVirtualInterface
-        <$> o .:? "amazonAddress"
-        <*> o .:  "asn"
-        <*> o .:? "authKey"
-        <*> o .:? "customerAddress"
-        <*> o .:  "virtualGatewayId"
-        <*> o .:  "virtualInterfaceName"
-        <*> o .:  "vlan"
-
-instance ToJSON NewPrivateVirtualInterface where
-    toJSON NewPrivateVirtualInterface{..} = object
-        [ "virtualInterfaceName" .= _npvi1VirtualInterfaceName
-        , "vlan"                 .= _npvi1Vlan
-        , "asn"                  .= _npvi1Asn
-        , "authKey"              .= _npvi1AuthKey
-        , "amazonAddress"        .= _npvi1AmazonAddress
-        , "customerAddress"      .= _npvi1CustomerAddress
-        , "virtualGatewayId"     .= _npvi1VirtualGatewayId
-        ]
-
-data NewPublicVirtualInterfaceAllocation = NewPublicVirtualInterfaceAllocation
-    { _npvia1AmazonAddress        :: Text
-    , _npvia1Asn                  :: Int
-    , _npvia1AuthKey              :: Maybe Text
-    , _npvia1CustomerAddress      :: Text
-    , _npvia1RouteFilterPrefixes  :: List "routeFilterPrefixes" RouteFilterPrefix
-    , _npvia1VirtualInterfaceName :: Text
-    , _npvia1Vlan                 :: Int
-    } deriving (Eq, Read, Show)
-
--- | 'NewPublicVirtualInterfaceAllocation' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'npvia1AmazonAddress' @::@ 'Text'
---
--- * 'npvia1Asn' @::@ 'Int'
---
--- * 'npvia1AuthKey' @::@ 'Maybe' 'Text'
---
--- * 'npvia1CustomerAddress' @::@ 'Text'
---
--- * 'npvia1RouteFilterPrefixes' @::@ ['RouteFilterPrefix']
---
--- * 'npvia1VirtualInterfaceName' @::@ 'Text'
---
--- * 'npvia1Vlan' @::@ 'Int'
---
-newPublicVirtualInterfaceAllocation :: Text -- ^ 'npvia1VirtualInterfaceName'
-                                    -> Int -- ^ 'npvia1Vlan'
-                                    -> Int -- ^ 'npvia1Asn'
-                                    -> Text -- ^ 'npvia1AmazonAddress'
-                                    -> Text -- ^ 'npvia1CustomerAddress'
-                                    -> NewPublicVirtualInterfaceAllocation
-newPublicVirtualInterfaceAllocation p1 p2 p3 p4 p5 = NewPublicVirtualInterfaceAllocation
-    { _npvia1VirtualInterfaceName = p1
-    , _npvia1Vlan                 = p2
-    , _npvia1Asn                  = p3
-    , _npvia1AmazonAddress        = p4
-    , _npvia1CustomerAddress      = p5
-    , _npvia1AuthKey              = Nothing
-    , _npvia1RouteFilterPrefixes  = mempty
-    }
-
-npvia1AmazonAddress :: Lens' NewPublicVirtualInterfaceAllocation Text
-npvia1AmazonAddress =
-    lens _npvia1AmazonAddress (\s a -> s { _npvia1AmazonAddress = a })
-
-npvia1Asn :: Lens' NewPublicVirtualInterfaceAllocation Int
-npvia1Asn = lens _npvia1Asn (\s a -> s { _npvia1Asn = a })
-
-npvia1AuthKey :: Lens' NewPublicVirtualInterfaceAllocation (Maybe Text)
-npvia1AuthKey = lens _npvia1AuthKey (\s a -> s { _npvia1AuthKey = a })
-
-npvia1CustomerAddress :: Lens' NewPublicVirtualInterfaceAllocation Text
-npvia1CustomerAddress =
-    lens _npvia1CustomerAddress (\s a -> s { _npvia1CustomerAddress = a })
-
-npvia1RouteFilterPrefixes :: Lens' NewPublicVirtualInterfaceAllocation [RouteFilterPrefix]
-npvia1RouteFilterPrefixes =
-    lens _npvia1RouteFilterPrefixes
-        (\s a -> s { _npvia1RouteFilterPrefixes = a })
-            . _List
-
-npvia1VirtualInterfaceName :: Lens' NewPublicVirtualInterfaceAllocation Text
-npvia1VirtualInterfaceName =
-    lens _npvia1VirtualInterfaceName
-        (\s a -> s { _npvia1VirtualInterfaceName = a })
-
-npvia1Vlan :: Lens' NewPublicVirtualInterfaceAllocation Int
-npvia1Vlan = lens _npvia1Vlan (\s a -> s { _npvia1Vlan = a })
-
-instance FromJSON NewPublicVirtualInterfaceAllocation where
-    parseJSON = withObject "NewPublicVirtualInterfaceAllocation" $ \o -> NewPublicVirtualInterfaceAllocation
-        <$> o .:  "amazonAddress"
-        <*> o .:  "asn"
-        <*> o .:? "authKey"
-        <*> o .:  "customerAddress"
-        <*> o .:? "routeFilterPrefixes" .!= mempty
-        <*> o .:  "virtualInterfaceName"
-        <*> o .:  "vlan"
-
-instance ToJSON NewPublicVirtualInterfaceAllocation where
-    toJSON NewPublicVirtualInterfaceAllocation{..} = object
-        [ "virtualInterfaceName" .= _npvia1VirtualInterfaceName
-        , "vlan"                 .= _npvia1Vlan
-        , "asn"                  .= _npvia1Asn
-        , "authKey"              .= _npvia1AuthKey
-        , "amazonAddress"        .= _npvia1AmazonAddress
-        , "customerAddress"      .= _npvia1CustomerAddress
-        , "routeFilterPrefixes"  .= _npvia1RouteFilterPrefixes
-        ]
-
-data ConnectionState
-    = CSAvailable -- ^ available
-    | CSDeleted   -- ^ deleted
-    | CSDeleting  -- ^ deleting
-    | CSDown      -- ^ down
-    | CSOrdering  -- ^ ordering
-    | CSPending   -- ^ pending
-    | CSRejected  -- ^ rejected
-    | CSRequested -- ^ requested
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable ConnectionState
-
-instance FromText ConnectionState where
-    parser = takeLowerText >>= \case
-        "available" -> pure CSAvailable
-        "deleted"   -> pure CSDeleted
-        "deleting"  -> pure CSDeleting
-        "down"      -> pure CSDown
-        "ordering"  -> pure CSOrdering
-        "pending"   -> pure CSPending
-        "rejected"  -> pure CSRejected
-        "requested" -> pure CSRequested
-        e           -> fail $
-            "Failure parsing ConnectionState from " ++ show e
-
-instance ToText ConnectionState where
-    toText = \case
-        CSAvailable -> "available"
-        CSDeleted   -> "deleted"
-        CSDeleting  -> "deleting"
-        CSDown      -> "down"
-        CSOrdering  -> "ordering"
-        CSPending   -> "pending"
-        CSRejected  -> "rejected"
-        CSRequested -> "requested"
-
-instance ToByteString ConnectionState
-instance ToHeader     ConnectionState
-instance ToQuery      ConnectionState
-
-instance FromJSON ConnectionState where
-    parseJSON = parseJSONText "ConnectionState"
-
-instance ToJSON ConnectionState where
-    toJSON = toJSONText
-
-data VirtualGateway = VirtualGateway
-    { _vgVirtualGatewayId    :: Maybe Text
-    , _vgVirtualGatewayState :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'VirtualGateway' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'vgVirtualGatewayId' @::@ 'Maybe' 'Text'
---
--- * 'vgVirtualGatewayState' @::@ 'Maybe' 'Text'
---
-virtualGateway :: VirtualGateway
-virtualGateway = VirtualGateway
-    { _vgVirtualGatewayId    = Nothing
-    , _vgVirtualGatewayState = Nothing
-    }
-
-vgVirtualGatewayId :: Lens' VirtualGateway (Maybe Text)
-vgVirtualGatewayId =
-    lens _vgVirtualGatewayId (\s a -> s { _vgVirtualGatewayId = a })
-
-vgVirtualGatewayState :: Lens' VirtualGateway (Maybe Text)
-vgVirtualGatewayState =
-    lens _vgVirtualGatewayState (\s a -> s { _vgVirtualGatewayState = a })
-
-instance FromJSON VirtualGateway where
-    parseJSON = withObject "VirtualGateway" $ \o -> VirtualGateway
-        <$> o .:? "virtualGatewayId"
-        <*> o .:? "virtualGatewayState"
-
-instance ToJSON VirtualGateway where
-    toJSON VirtualGateway{..} = object
-        [ "virtualGatewayId"    .= _vgVirtualGatewayId
-        , "virtualGatewayState" .= _vgVirtualGatewayState
-        ]
-
-newtype RouteFilterPrefix = RouteFilterPrefix
-    { _rfpCidr :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'RouteFilterPrefix' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rfpCidr' @::@ 'Maybe' 'Text'
---
-routeFilterPrefix :: RouteFilterPrefix
-routeFilterPrefix = RouteFilterPrefix
-    { _rfpCidr = Nothing
-    }
-
--- | CIDR notation for the advertised route. Multiple routes are separated by
--- commas.
---
--- Example: 10.10.10.0/24,10.10.11.0/24
-rfpCidr :: Lens' RouteFilterPrefix (Maybe Text)
-rfpCidr = lens _rfpCidr (\s a -> s { _rfpCidr = a })
-
-instance FromJSON RouteFilterPrefix where
-    parseJSON = withObject "RouteFilterPrefix" $ \o -> RouteFilterPrefix
-        <$> o .:? "cidr"
-
-instance ToJSON RouteFilterPrefix where
-    toJSON RouteFilterPrefix{..} = object
-        [ "cidr" .= _rfpCidr
-        ]
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DirectConnect.Types
+-- 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.DirectConnect.Types
+    (
+    -- * Service
+      DirectConnect
+
+    -- * Errors
+    , _DirectConnectClientException
+    , _DirectConnectServerException
+
+    -- * ConnectionState
+    , ConnectionState (..)
+
+    -- * InterconnectState
+    , InterconnectState (..)
+
+    -- * VirtualInterfaceState
+    , VirtualInterfaceState (..)
+
+    -- * Connection
+    , Connection
+    , connection
+    , cVlan
+    , cLocation
+    , cConnectionId
+    , cConnectionName
+    , cPartnerName
+    , cBandwidth
+    , cRegion
+    , cOwnerAccount
+    , cConnectionState
+
+    -- * Connections
+    , Connections
+    , connections
+    , cConnections
+
+    -- * Interconnect
+    , Interconnect
+    , interconnect
+    , iInterconnectId
+    , iInterconnectName
+    , iLocation
+    , iBandwidth
+    , iInterconnectState
+    , iRegion
+
+    -- * Location
+    , Location
+    , location
+    , lLocationName
+    , lLocationCode
+
+    -- * NewPrivateVirtualInterface
+    , NewPrivateVirtualInterface
+    , newPrivateVirtualInterface
+    , nCustomerAddress
+    , nAmazonAddress
+    , nAuthKey
+    , nVirtualInterfaceName
+    , nVlan
+    , nAsn
+    , nVirtualGatewayId
+
+    -- * NewPrivateVirtualInterfaceAllocation
+    , NewPrivateVirtualInterfaceAllocation
+    , newPrivateVirtualInterfaceAllocation
+    , npviaCustomerAddress
+    , npviaAmazonAddress
+    , npviaAuthKey
+    , npviaVirtualInterfaceName
+    , npviaVlan
+    , npviaAsn
+
+    -- * NewPublicVirtualInterface
+    , NewPublicVirtualInterface
+    , newPublicVirtualInterface
+    , npviAuthKey
+    , npviVirtualInterfaceName
+    , npviVlan
+    , npviAsn
+    , npviAmazonAddress
+    , npviCustomerAddress
+    , npviRouteFilterPrefixes
+
+    -- * NewPublicVirtualInterfaceAllocation
+    , NewPublicVirtualInterfaceAllocation
+    , newPublicVirtualInterfaceAllocation
+    , newAuthKey
+    , newVirtualInterfaceName
+    , newVlan
+    , newAsn
+    , newAmazonAddress
+    , newCustomerAddress
+    , newRouteFilterPrefixes
+
+    -- * RouteFilterPrefix
+    , RouteFilterPrefix
+    , routeFilterPrefix
+    , rfpCidr
+
+    -- * VirtualGateway
+    , VirtualGateway
+    , virtualGateway
+    , vgVirtualGatewayId
+    , vgVirtualGatewayState
+
+    -- * VirtualInterface
+    , VirtualInterface
+    , virtualInterface
+    , viVirtualGatewayId
+    , viRouteFilterPrefixes
+    , viCustomerAddress
+    , viVlan
+    , viLocation
+    , viAmazonAddress
+    , viVirtualInterfaceState
+    , viConnectionId
+    , viAsn
+    , viVirtualInterfaceType
+    , viAuthKey
+    , viCustomerRouterConfig
+    , viOwnerAccount
+    , viVirtualInterfaceName
+    , viVirtualInterfaceId
+    ) where
+
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.DirectConnect.Types.Sum
+import           Network.AWS.Prelude
+import           Network.AWS.Sign.V4
+
+-- | Version @2012-10-25@ of the Amazon Direct Connect SDK.
+data DirectConnect
+
+instance AWSService DirectConnect where
+    type Sg DirectConnect = V4
+    service = const svc
+      where
+        svc =
+            Service
+            { _svcAbbrev = "DirectConnect"
+            , _svcPrefix = "directconnect"
+            , _svcVersion = "2012-10-25"
+            , _svcEndpoint = defaultEndpoint svc
+            , _svcTimeout = Just 70
+            , _svcStatus = statusSuccess
+            , _svcError = parseJSONError
+            , _svcRetry = retry
+            }
+        retry =
+            Exponential
+            { _retryBase = 5.0e-2
+            , _retryGrowth = 2
+            , _retryAttempts = 5
+            , _retryCheck = check
+            }
+        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
+
+-- | The API was called with invalid parameters. The error message will
+-- contain additional details about the cause.
+_DirectConnectClientException :: AsError a => Getting (First ServiceError) a ServiceError
+_DirectConnectClientException =
+    _ServiceError . hasCode "DirectConnectClientException"
+
+-- | A server-side error occurred during the API call. The error message will
+-- contain additional details about the cause.
+_DirectConnectServerException :: AsError a => Getting (First ServiceError) a ServiceError
+_DirectConnectServerException =
+    _ServiceError . hasCode "DirectConnectServerException"
diff --git a/gen/Network/AWS/DirectConnect/Types/Product.hs b/gen/Network/AWS/DirectConnect/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DirectConnect/Types/Product.hs
@@ -0,0 +1,858 @@
+{-# 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.DirectConnect.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.DirectConnect.Types.Product where
+
+import           Network.AWS.DirectConnect.Types.Sum
+import           Network.AWS.Prelude
+
+-- | A connection represents the physical network connection between the AWS
+-- Direct Connect location and the customer.
+--
+-- /See:/ 'connection' smart constructor.
+data Connection = Connection'
+    { _cVlan            :: !(Maybe Int)
+    , _cLocation        :: !(Maybe Text)
+    , _cConnectionId    :: !(Maybe Text)
+    , _cConnectionName  :: !(Maybe Text)
+    , _cPartnerName     :: !(Maybe Text)
+    , _cBandwidth       :: !(Maybe Text)
+    , _cRegion          :: !(Maybe Text)
+    , _cOwnerAccount    :: !(Maybe Text)
+    , _cConnectionState :: !(Maybe ConnectionState)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Connection' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cVlan'
+--
+-- * 'cLocation'
+--
+-- * 'cConnectionId'
+--
+-- * 'cConnectionName'
+--
+-- * 'cPartnerName'
+--
+-- * 'cBandwidth'
+--
+-- * 'cRegion'
+--
+-- * 'cOwnerAccount'
+--
+-- * 'cConnectionState'
+connection
+    :: Connection
+connection =
+    Connection'
+    { _cVlan = Nothing
+    , _cLocation = Nothing
+    , _cConnectionId = Nothing
+    , _cConnectionName = Nothing
+    , _cPartnerName = Nothing
+    , _cBandwidth = Nothing
+    , _cRegion = Nothing
+    , _cOwnerAccount = Nothing
+    , _cConnectionState = Nothing
+    }
+
+-- | Undocumented member.
+cVlan :: Lens' Connection (Maybe Int)
+cVlan = lens _cVlan (\ s a -> s{_cVlan = a});
+
+-- | Undocumented member.
+cLocation :: Lens' Connection (Maybe Text)
+cLocation = lens _cLocation (\ s a -> s{_cLocation = a});
+
+-- | Undocumented member.
+cConnectionId :: Lens' Connection (Maybe Text)
+cConnectionId = lens _cConnectionId (\ s a -> s{_cConnectionId = a});
+
+-- | Undocumented member.
+cConnectionName :: Lens' Connection (Maybe Text)
+cConnectionName = lens _cConnectionName (\ s a -> s{_cConnectionName = a});
+
+-- | Undocumented member.
+cPartnerName :: Lens' Connection (Maybe Text)
+cPartnerName = lens _cPartnerName (\ s a -> s{_cPartnerName = a});
+
+-- | Bandwidth of the connection.
+--
+-- Example: 1Gbps (for regular connections), or 500Mbps (for hosted
+-- connections)
+--
+-- Default: None
+cBandwidth :: Lens' Connection (Maybe Text)
+cBandwidth = lens _cBandwidth (\ s a -> s{_cBandwidth = a});
+
+-- | Undocumented member.
+cRegion :: Lens' Connection (Maybe Text)
+cRegion = lens _cRegion (\ s a -> s{_cRegion = a});
+
+-- | Undocumented member.
+cOwnerAccount :: Lens' Connection (Maybe Text)
+cOwnerAccount = lens _cOwnerAccount (\ s a -> s{_cOwnerAccount = a});
+
+-- | Undocumented member.
+cConnectionState :: Lens' Connection (Maybe ConnectionState)
+cConnectionState = lens _cConnectionState (\ s a -> s{_cConnectionState = a});
+
+instance FromJSON Connection where
+        parseJSON
+          = withObject "Connection"
+              (\ x ->
+                 Connection' <$>
+                   (x .:? "vlan") <*> (x .:? "location") <*>
+                     (x .:? "connectionId")
+                     <*> (x .:? "connectionName")
+                     <*> (x .:? "partnerName")
+                     <*> (x .:? "bandwidth")
+                     <*> (x .:? "region")
+                     <*> (x .:? "ownerAccount")
+                     <*> (x .:? "connectionState"))
+
+-- | A structure containing a list of connections.
+--
+-- /See:/ 'connections' smart constructor.
+newtype Connections = Connections'
+    { _cConnections :: Maybe [Connection]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Connections' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cConnections'
+connections
+    :: Connections
+connections =
+    Connections'
+    { _cConnections = Nothing
+    }
+
+-- | A list of connections.
+cConnections :: Lens' Connections [Connection]
+cConnections = lens _cConnections (\ s a -> s{_cConnections = a}) . _Default . _Coerce;
+
+instance FromJSON Connections where
+        parseJSON
+          = withObject "Connections"
+              (\ x ->
+                 Connections' <$> (x .:? "connections" .!= mempty))
+
+-- | An interconnect is a connection that can host other connections.
+--
+-- Like a standard AWS Direct Connect connection, an interconnect
+-- represents the physical connection between an AWS Direct Connect
+-- partner\'s network and a specific Direct Connect location. An AWS Direct
+-- Connect partner who owns an interconnect can provision hosted
+-- connections on the interconnect for their end customers, thereby
+-- providing the end customers with connectivity to AWS services.
+--
+-- The resources of the interconnect, including bandwidth and VLAN numbers,
+-- are shared by all of the hosted connections on the interconnect, and the
+-- owner of the interconnect determines how these resources are assigned.
+--
+-- /See:/ 'interconnect' smart constructor.
+data Interconnect = Interconnect'
+    { _iInterconnectId    :: !(Maybe Text)
+    , _iInterconnectName  :: !(Maybe Text)
+    , _iLocation          :: !(Maybe Text)
+    , _iBandwidth         :: !(Maybe Text)
+    , _iInterconnectState :: !(Maybe InterconnectState)
+    , _iRegion            :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Interconnect' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iInterconnectId'
+--
+-- * 'iInterconnectName'
+--
+-- * 'iLocation'
+--
+-- * 'iBandwidth'
+--
+-- * 'iInterconnectState'
+--
+-- * 'iRegion'
+interconnect
+    :: Interconnect
+interconnect =
+    Interconnect'
+    { _iInterconnectId = Nothing
+    , _iInterconnectName = Nothing
+    , _iLocation = Nothing
+    , _iBandwidth = Nothing
+    , _iInterconnectState = Nothing
+    , _iRegion = Nothing
+    }
+
+-- | Undocumented member.
+iInterconnectId :: Lens' Interconnect (Maybe Text)
+iInterconnectId = lens _iInterconnectId (\ s a -> s{_iInterconnectId = a});
+
+-- | Undocumented member.
+iInterconnectName :: Lens' Interconnect (Maybe Text)
+iInterconnectName = lens _iInterconnectName (\ s a -> s{_iInterconnectName = a});
+
+-- | Undocumented member.
+iLocation :: Lens' Interconnect (Maybe Text)
+iLocation = lens _iLocation (\ s a -> s{_iLocation = a});
+
+-- | Undocumented member.
+iBandwidth :: Lens' Interconnect (Maybe Text)
+iBandwidth = lens _iBandwidth (\ s a -> s{_iBandwidth = a});
+
+-- | Undocumented member.
+iInterconnectState :: Lens' Interconnect (Maybe InterconnectState)
+iInterconnectState = lens _iInterconnectState (\ s a -> s{_iInterconnectState = a});
+
+-- | Undocumented member.
+iRegion :: Lens' Interconnect (Maybe Text)
+iRegion = lens _iRegion (\ s a -> s{_iRegion = a});
+
+instance FromJSON Interconnect where
+        parseJSON
+          = withObject "Interconnect"
+              (\ x ->
+                 Interconnect' <$>
+                   (x .:? "interconnectId") <*>
+                     (x .:? "interconnectName")
+                     <*> (x .:? "location")
+                     <*> (x .:? "bandwidth")
+                     <*> (x .:? "interconnectState")
+                     <*> (x .:? "region"))
+
+-- | An AWS Direct Connect location where connections and interconnects can
+-- be requested.
+--
+-- /See:/ 'location' smart constructor.
+data Location = Location'
+    { _lLocationName :: !(Maybe Text)
+    , _lLocationCode :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Location' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lLocationName'
+--
+-- * 'lLocationCode'
+location
+    :: Location
+location =
+    Location'
+    { _lLocationName = Nothing
+    , _lLocationCode = Nothing
+    }
+
+-- | The name of the AWS Direct Connect location. The name includes the
+-- colocation partner name and the physical site of the lit building.
+lLocationName :: Lens' Location (Maybe Text)
+lLocationName = lens _lLocationName (\ s a -> s{_lLocationName = a});
+
+-- | The code used to indicate the AWS Direct Connect location.
+lLocationCode :: Lens' Location (Maybe Text)
+lLocationCode = lens _lLocationCode (\ s a -> s{_lLocationCode = a});
+
+instance FromJSON Location where
+        parseJSON
+          = withObject "Location"
+              (\ x ->
+                 Location' <$>
+                   (x .:? "locationName") <*> (x .:? "locationCode"))
+
+-- | A structure containing information about a new private virtual
+-- interface.
+--
+-- /See:/ 'newPrivateVirtualInterface' smart constructor.
+data NewPrivateVirtualInterface = NewPrivateVirtualInterface'
+    { _nCustomerAddress      :: !(Maybe Text)
+    , _nAmazonAddress        :: !(Maybe Text)
+    , _nAuthKey              :: !(Maybe Text)
+    , _nVirtualInterfaceName :: !Text
+    , _nVlan                 :: !Int
+    , _nAsn                  :: !Int
+    , _nVirtualGatewayId     :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NewPrivateVirtualInterface' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nCustomerAddress'
+--
+-- * 'nAmazonAddress'
+--
+-- * 'nAuthKey'
+--
+-- * 'nVirtualInterfaceName'
+--
+-- * 'nVlan'
+--
+-- * 'nAsn'
+--
+-- * 'nVirtualGatewayId'
+newPrivateVirtualInterface
+    :: Text -- ^ 'nVirtualInterfaceName'
+    -> Int -- ^ 'nVlan'
+    -> Int -- ^ 'nAsn'
+    -> Text -- ^ 'nVirtualGatewayId'
+    -> NewPrivateVirtualInterface
+newPrivateVirtualInterface pVirtualInterfaceName_ pVlan_ pAsn_ pVirtualGatewayId_ =
+    NewPrivateVirtualInterface'
+    { _nCustomerAddress = Nothing
+    , _nAmazonAddress = Nothing
+    , _nAuthKey = Nothing
+    , _nVirtualInterfaceName = pVirtualInterfaceName_
+    , _nVlan = pVlan_
+    , _nAsn = pAsn_
+    , _nVirtualGatewayId = pVirtualGatewayId_
+    }
+
+-- | Undocumented member.
+nCustomerAddress :: Lens' NewPrivateVirtualInterface (Maybe Text)
+nCustomerAddress = lens _nCustomerAddress (\ s a -> s{_nCustomerAddress = a});
+
+-- | Undocumented member.
+nAmazonAddress :: Lens' NewPrivateVirtualInterface (Maybe Text)
+nAmazonAddress = lens _nAmazonAddress (\ s a -> s{_nAmazonAddress = a});
+
+-- | Undocumented member.
+nAuthKey :: Lens' NewPrivateVirtualInterface (Maybe Text)
+nAuthKey = lens _nAuthKey (\ s a -> s{_nAuthKey = a});
+
+-- | Undocumented member.
+nVirtualInterfaceName :: Lens' NewPrivateVirtualInterface Text
+nVirtualInterfaceName = lens _nVirtualInterfaceName (\ s a -> s{_nVirtualInterfaceName = a});
+
+-- | Undocumented member.
+nVlan :: Lens' NewPrivateVirtualInterface Int
+nVlan = lens _nVlan (\ s a -> s{_nVlan = a});
+
+-- | Undocumented member.
+nAsn :: Lens' NewPrivateVirtualInterface Int
+nAsn = lens _nAsn (\ s a -> s{_nAsn = a});
+
+-- | Undocumented member.
+nVirtualGatewayId :: Lens' NewPrivateVirtualInterface Text
+nVirtualGatewayId = lens _nVirtualGatewayId (\ s a -> s{_nVirtualGatewayId = a});
+
+instance ToJSON NewPrivateVirtualInterface where
+        toJSON NewPrivateVirtualInterface'{..}
+          = object
+              ["customerAddress" .= _nCustomerAddress,
+               "amazonAddress" .= _nAmazonAddress,
+               "authKey" .= _nAuthKey,
+               "virtualInterfaceName" .= _nVirtualInterfaceName,
+               "vlan" .= _nVlan, "asn" .= _nAsn,
+               "virtualGatewayId" .= _nVirtualGatewayId]
+
+-- | A structure containing information about a private virtual interface
+-- that will be provisioned on a connection.
+--
+-- /See:/ 'newPrivateVirtualInterfaceAllocation' smart constructor.
+data NewPrivateVirtualInterfaceAllocation = NewPrivateVirtualInterfaceAllocation'
+    { _npviaCustomerAddress      :: !(Maybe Text)
+    , _npviaAmazonAddress        :: !(Maybe Text)
+    , _npviaAuthKey              :: !(Maybe Text)
+    , _npviaVirtualInterfaceName :: !Text
+    , _npviaVlan                 :: !Int
+    , _npviaAsn                  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NewPrivateVirtualInterfaceAllocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'npviaCustomerAddress'
+--
+-- * 'npviaAmazonAddress'
+--
+-- * 'npviaAuthKey'
+--
+-- * 'npviaVirtualInterfaceName'
+--
+-- * 'npviaVlan'
+--
+-- * 'npviaAsn'
+newPrivateVirtualInterfaceAllocation
+    :: Text -- ^ 'npviaVirtualInterfaceName'
+    -> Int -- ^ 'npviaVlan'
+    -> Int -- ^ 'npviaAsn'
+    -> NewPrivateVirtualInterfaceAllocation
+newPrivateVirtualInterfaceAllocation pVirtualInterfaceName_ pVlan_ pAsn_ =
+    NewPrivateVirtualInterfaceAllocation'
+    { _npviaCustomerAddress = Nothing
+    , _npviaAmazonAddress = Nothing
+    , _npviaAuthKey = Nothing
+    , _npviaVirtualInterfaceName = pVirtualInterfaceName_
+    , _npviaVlan = pVlan_
+    , _npviaAsn = pAsn_
+    }
+
+-- | Undocumented member.
+npviaCustomerAddress :: Lens' NewPrivateVirtualInterfaceAllocation (Maybe Text)
+npviaCustomerAddress = lens _npviaCustomerAddress (\ s a -> s{_npviaCustomerAddress = a});
+
+-- | Undocumented member.
+npviaAmazonAddress :: Lens' NewPrivateVirtualInterfaceAllocation (Maybe Text)
+npviaAmazonAddress = lens _npviaAmazonAddress (\ s a -> s{_npviaAmazonAddress = a});
+
+-- | Undocumented member.
+npviaAuthKey :: Lens' NewPrivateVirtualInterfaceAllocation (Maybe Text)
+npviaAuthKey = lens _npviaAuthKey (\ s a -> s{_npviaAuthKey = a});
+
+-- | Undocumented member.
+npviaVirtualInterfaceName :: Lens' NewPrivateVirtualInterfaceAllocation Text
+npviaVirtualInterfaceName = lens _npviaVirtualInterfaceName (\ s a -> s{_npviaVirtualInterfaceName = a});
+
+-- | Undocumented member.
+npviaVlan :: Lens' NewPrivateVirtualInterfaceAllocation Int
+npviaVlan = lens _npviaVlan (\ s a -> s{_npviaVlan = a});
+
+-- | Undocumented member.
+npviaAsn :: Lens' NewPrivateVirtualInterfaceAllocation Int
+npviaAsn = lens _npviaAsn (\ s a -> s{_npviaAsn = a});
+
+instance ToJSON NewPrivateVirtualInterfaceAllocation
+         where
+        toJSON NewPrivateVirtualInterfaceAllocation'{..}
+          = object
+              ["customerAddress" .= _npviaCustomerAddress,
+               "amazonAddress" .= _npviaAmazonAddress,
+               "authKey" .= _npviaAuthKey,
+               "virtualInterfaceName" .= _npviaVirtualInterfaceName,
+               "vlan" .= _npviaVlan, "asn" .= _npviaAsn]
+
+-- | A structure containing information about a new public virtual interface.
+--
+-- /See:/ 'newPublicVirtualInterface' smart constructor.
+data NewPublicVirtualInterface = NewPublicVirtualInterface'
+    { _npviAuthKey              :: !(Maybe Text)
+    , _npviVirtualInterfaceName :: !Text
+    , _npviVlan                 :: !Int
+    , _npviAsn                  :: !Int
+    , _npviAmazonAddress        :: !Text
+    , _npviCustomerAddress      :: !Text
+    , _npviRouteFilterPrefixes  :: ![RouteFilterPrefix]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NewPublicVirtualInterface' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'npviAuthKey'
+--
+-- * 'npviVirtualInterfaceName'
+--
+-- * 'npviVlan'
+--
+-- * 'npviAsn'
+--
+-- * 'npviAmazonAddress'
+--
+-- * 'npviCustomerAddress'
+--
+-- * 'npviRouteFilterPrefixes'
+newPublicVirtualInterface
+    :: Text -- ^ 'npviVirtualInterfaceName'
+    -> Int -- ^ 'npviVlan'
+    -> Int -- ^ 'npviAsn'
+    -> Text -- ^ 'npviAmazonAddress'
+    -> Text -- ^ 'npviCustomerAddress'
+    -> NewPublicVirtualInterface
+newPublicVirtualInterface pVirtualInterfaceName_ pVlan_ pAsn_ pAmazonAddress_ pCustomerAddress_ =
+    NewPublicVirtualInterface'
+    { _npviAuthKey = Nothing
+    , _npviVirtualInterfaceName = pVirtualInterfaceName_
+    , _npviVlan = pVlan_
+    , _npviAsn = pAsn_
+    , _npviAmazonAddress = pAmazonAddress_
+    , _npviCustomerAddress = pCustomerAddress_
+    , _npviRouteFilterPrefixes = mempty
+    }
+
+-- | Undocumented member.
+npviAuthKey :: Lens' NewPublicVirtualInterface (Maybe Text)
+npviAuthKey = lens _npviAuthKey (\ s a -> s{_npviAuthKey = a});
+
+-- | Undocumented member.
+npviVirtualInterfaceName :: Lens' NewPublicVirtualInterface Text
+npviVirtualInterfaceName = lens _npviVirtualInterfaceName (\ s a -> s{_npviVirtualInterfaceName = a});
+
+-- | Undocumented member.
+npviVlan :: Lens' NewPublicVirtualInterface Int
+npviVlan = lens _npviVlan (\ s a -> s{_npviVlan = a});
+
+-- | Undocumented member.
+npviAsn :: Lens' NewPublicVirtualInterface Int
+npviAsn = lens _npviAsn (\ s a -> s{_npviAsn = a});
+
+-- | Undocumented member.
+npviAmazonAddress :: Lens' NewPublicVirtualInterface Text
+npviAmazonAddress = lens _npviAmazonAddress (\ s a -> s{_npviAmazonAddress = a});
+
+-- | Undocumented member.
+npviCustomerAddress :: Lens' NewPublicVirtualInterface Text
+npviCustomerAddress = lens _npviCustomerAddress (\ s a -> s{_npviCustomerAddress = a});
+
+-- | Undocumented member.
+npviRouteFilterPrefixes :: Lens' NewPublicVirtualInterface [RouteFilterPrefix]
+npviRouteFilterPrefixes = lens _npviRouteFilterPrefixes (\ s a -> s{_npviRouteFilterPrefixes = a}) . _Coerce;
+
+instance ToJSON NewPublicVirtualInterface where
+        toJSON NewPublicVirtualInterface'{..}
+          = object
+              ["authKey" .= _npviAuthKey,
+               "virtualInterfaceName" .= _npviVirtualInterfaceName,
+               "vlan" .= _npviVlan, "asn" .= _npviAsn,
+               "amazonAddress" .= _npviAmazonAddress,
+               "customerAddress" .= _npviCustomerAddress,
+               "routeFilterPrefixes" .= _npviRouteFilterPrefixes]
+
+-- | A structure containing information about a public virtual interface that
+-- will be provisioned on a connection.
+--
+-- /See:/ 'newPublicVirtualInterfaceAllocation' smart constructor.
+data NewPublicVirtualInterfaceAllocation = NewPublicVirtualInterfaceAllocation'
+    { _newAuthKey              :: !(Maybe Text)
+    , _newVirtualInterfaceName :: !Text
+    , _newVlan                 :: !Int
+    , _newAsn                  :: !Int
+    , _newAmazonAddress        :: !Text
+    , _newCustomerAddress      :: !Text
+    , _newRouteFilterPrefixes  :: ![RouteFilterPrefix]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NewPublicVirtualInterfaceAllocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'newAuthKey'
+--
+-- * 'newVirtualInterfaceName'
+--
+-- * 'newVlan'
+--
+-- * 'newAsn'
+--
+-- * 'newAmazonAddress'
+--
+-- * 'newCustomerAddress'
+--
+-- * 'newRouteFilterPrefixes'
+newPublicVirtualInterfaceAllocation
+    :: Text -- ^ 'newVirtualInterfaceName'
+    -> Int -- ^ 'newVlan'
+    -> Int -- ^ 'newAsn'
+    -> Text -- ^ 'newAmazonAddress'
+    -> Text -- ^ 'newCustomerAddress'
+    -> NewPublicVirtualInterfaceAllocation
+newPublicVirtualInterfaceAllocation pVirtualInterfaceName_ pVlan_ pAsn_ pAmazonAddress_ pCustomerAddress_ =
+    NewPublicVirtualInterfaceAllocation'
+    { _newAuthKey = Nothing
+    , _newVirtualInterfaceName = pVirtualInterfaceName_
+    , _newVlan = pVlan_
+    , _newAsn = pAsn_
+    , _newAmazonAddress = pAmazonAddress_
+    , _newCustomerAddress = pCustomerAddress_
+    , _newRouteFilterPrefixes = mempty
+    }
+
+-- | Undocumented member.
+newAuthKey :: Lens' NewPublicVirtualInterfaceAllocation (Maybe Text)
+newAuthKey = lens _newAuthKey (\ s a -> s{_newAuthKey = a});
+
+-- | Undocumented member.
+newVirtualInterfaceName :: Lens' NewPublicVirtualInterfaceAllocation Text
+newVirtualInterfaceName = lens _newVirtualInterfaceName (\ s a -> s{_newVirtualInterfaceName = a});
+
+-- | Undocumented member.
+newVlan :: Lens' NewPublicVirtualInterfaceAllocation Int
+newVlan = lens _newVlan (\ s a -> s{_newVlan = a});
+
+-- | Undocumented member.
+newAsn :: Lens' NewPublicVirtualInterfaceAllocation Int
+newAsn = lens _newAsn (\ s a -> s{_newAsn = a});
+
+-- | Undocumented member.
+newAmazonAddress :: Lens' NewPublicVirtualInterfaceAllocation Text
+newAmazonAddress = lens _newAmazonAddress (\ s a -> s{_newAmazonAddress = a});
+
+-- | Undocumented member.
+newCustomerAddress :: Lens' NewPublicVirtualInterfaceAllocation Text
+newCustomerAddress = lens _newCustomerAddress (\ s a -> s{_newCustomerAddress = a});
+
+-- | Undocumented member.
+newRouteFilterPrefixes :: Lens' NewPublicVirtualInterfaceAllocation [RouteFilterPrefix]
+newRouteFilterPrefixes = lens _newRouteFilterPrefixes (\ s a -> s{_newRouteFilterPrefixes = a}) . _Coerce;
+
+instance ToJSON NewPublicVirtualInterfaceAllocation
+         where
+        toJSON NewPublicVirtualInterfaceAllocation'{..}
+          = object
+              ["authKey" .= _newAuthKey,
+               "virtualInterfaceName" .= _newVirtualInterfaceName,
+               "vlan" .= _newVlan, "asn" .= _newAsn,
+               "amazonAddress" .= _newAmazonAddress,
+               "customerAddress" .= _newCustomerAddress,
+               "routeFilterPrefixes" .= _newRouteFilterPrefixes]
+
+-- | A route filter prefix that the customer can advertise through Border
+-- Gateway Protocol (BGP) over a public virtual interface.
+--
+-- /See:/ 'routeFilterPrefix' smart constructor.
+newtype RouteFilterPrefix = RouteFilterPrefix'
+    { _rfpCidr :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouteFilterPrefix' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rfpCidr'
+routeFilterPrefix
+    :: RouteFilterPrefix
+routeFilterPrefix =
+    RouteFilterPrefix'
+    { _rfpCidr = Nothing
+    }
+
+-- | CIDR notation for the advertised route. Multiple routes are separated by
+-- commas.
+--
+-- Example: 10.10.10.0\/24,10.10.11.0\/24
+rfpCidr :: Lens' RouteFilterPrefix (Maybe Text)
+rfpCidr = lens _rfpCidr (\ s a -> s{_rfpCidr = a});
+
+instance FromJSON RouteFilterPrefix where
+        parseJSON
+          = withObject "RouteFilterPrefix"
+              (\ x -> RouteFilterPrefix' <$> (x .:? "cidr"))
+
+instance ToJSON RouteFilterPrefix where
+        toJSON RouteFilterPrefix'{..}
+          = object ["cidr" .= _rfpCidr]
+
+-- | You can create one or more AWS Direct Connect private virtual interfaces
+-- linking to your virtual private gateway.
+--
+-- Virtual private gateways can be managed using the Amazon Virtual Private
+-- Cloud (Amazon VPC) console or the
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateVpnGateway.html Amazon EC2 CreateVpnGateway action>.
+--
+-- /See:/ 'virtualGateway' smart constructor.
+data VirtualGateway = VirtualGateway'
+    { _vgVirtualGatewayId    :: !(Maybe Text)
+    , _vgVirtualGatewayState :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VirtualGateway' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vgVirtualGatewayId'
+--
+-- * 'vgVirtualGatewayState'
+virtualGateway
+    :: VirtualGateway
+virtualGateway =
+    VirtualGateway'
+    { _vgVirtualGatewayId = Nothing
+    , _vgVirtualGatewayState = Nothing
+    }
+
+-- | Undocumented member.
+vgVirtualGatewayId :: Lens' VirtualGateway (Maybe Text)
+vgVirtualGatewayId = lens _vgVirtualGatewayId (\ s a -> s{_vgVirtualGatewayId = a});
+
+-- | Undocumented member.
+vgVirtualGatewayState :: Lens' VirtualGateway (Maybe Text)
+vgVirtualGatewayState = lens _vgVirtualGatewayState (\ s a -> s{_vgVirtualGatewayState = a});
+
+instance FromJSON VirtualGateway where
+        parseJSON
+          = withObject "VirtualGateway"
+              (\ x ->
+                 VirtualGateway' <$>
+                   (x .:? "virtualGatewayId") <*>
+                     (x .:? "virtualGatewayState"))
+
+-- | A virtual interface (VLAN) transmits the traffic between the AWS Direct
+-- Connect location and the customer.
+--
+-- /See:/ 'virtualInterface' smart constructor.
+data VirtualInterface = VirtualInterface'
+    { _viVirtualGatewayId      :: !(Maybe Text)
+    , _viRouteFilterPrefixes   :: !(Maybe [RouteFilterPrefix])
+    , _viCustomerAddress       :: !(Maybe Text)
+    , _viVlan                  :: !(Maybe Int)
+    , _viLocation              :: !(Maybe Text)
+    , _viAmazonAddress         :: !(Maybe Text)
+    , _viVirtualInterfaceState :: !(Maybe VirtualInterfaceState)
+    , _viConnectionId          :: !(Maybe Text)
+    , _viAsn                   :: !(Maybe Int)
+    , _viVirtualInterfaceType  :: !(Maybe Text)
+    , _viAuthKey               :: !(Maybe Text)
+    , _viCustomerRouterConfig  :: !(Maybe Text)
+    , _viOwnerAccount          :: !(Maybe Text)
+    , _viVirtualInterfaceName  :: !(Maybe Text)
+    , _viVirtualInterfaceId    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VirtualInterface' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'viVirtualGatewayId'
+--
+-- * 'viRouteFilterPrefixes'
+--
+-- * 'viCustomerAddress'
+--
+-- * 'viVlan'
+--
+-- * 'viLocation'
+--
+-- * 'viAmazonAddress'
+--
+-- * 'viVirtualInterfaceState'
+--
+-- * 'viConnectionId'
+--
+-- * 'viAsn'
+--
+-- * 'viVirtualInterfaceType'
+--
+-- * 'viAuthKey'
+--
+-- * 'viCustomerRouterConfig'
+--
+-- * 'viOwnerAccount'
+--
+-- * 'viVirtualInterfaceName'
+--
+-- * 'viVirtualInterfaceId'
+virtualInterface
+    :: VirtualInterface
+virtualInterface =
+    VirtualInterface'
+    { _viVirtualGatewayId = Nothing
+    , _viRouteFilterPrefixes = Nothing
+    , _viCustomerAddress = Nothing
+    , _viVlan = Nothing
+    , _viLocation = Nothing
+    , _viAmazonAddress = Nothing
+    , _viVirtualInterfaceState = Nothing
+    , _viConnectionId = Nothing
+    , _viAsn = Nothing
+    , _viVirtualInterfaceType = Nothing
+    , _viAuthKey = Nothing
+    , _viCustomerRouterConfig = Nothing
+    , _viOwnerAccount = Nothing
+    , _viVirtualInterfaceName = Nothing
+    , _viVirtualInterfaceId = Nothing
+    }
+
+-- | Undocumented member.
+viVirtualGatewayId :: Lens' VirtualInterface (Maybe Text)
+viVirtualGatewayId = lens _viVirtualGatewayId (\ s a -> s{_viVirtualGatewayId = a});
+
+-- | Undocumented member.
+viRouteFilterPrefixes :: Lens' VirtualInterface [RouteFilterPrefix]
+viRouteFilterPrefixes = lens _viRouteFilterPrefixes (\ s a -> s{_viRouteFilterPrefixes = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+viCustomerAddress :: Lens' VirtualInterface (Maybe Text)
+viCustomerAddress = lens _viCustomerAddress (\ s a -> s{_viCustomerAddress = a});
+
+-- | Undocumented member.
+viVlan :: Lens' VirtualInterface (Maybe Int)
+viVlan = lens _viVlan (\ s a -> s{_viVlan = a});
+
+-- | Undocumented member.
+viLocation :: Lens' VirtualInterface (Maybe Text)
+viLocation = lens _viLocation (\ s a -> s{_viLocation = a});
+
+-- | Undocumented member.
+viAmazonAddress :: Lens' VirtualInterface (Maybe Text)
+viAmazonAddress = lens _viAmazonAddress (\ s a -> s{_viAmazonAddress = a});
+
+-- | Undocumented member.
+viVirtualInterfaceState :: Lens' VirtualInterface (Maybe VirtualInterfaceState)
+viVirtualInterfaceState = lens _viVirtualInterfaceState (\ s a -> s{_viVirtualInterfaceState = a});
+
+-- | Undocumented member.
+viConnectionId :: Lens' VirtualInterface (Maybe Text)
+viConnectionId = lens _viConnectionId (\ s a -> s{_viConnectionId = a});
+
+-- | Undocumented member.
+viAsn :: Lens' VirtualInterface (Maybe Int)
+viAsn = lens _viAsn (\ s a -> s{_viAsn = a});
+
+-- | Undocumented member.
+viVirtualInterfaceType :: Lens' VirtualInterface (Maybe Text)
+viVirtualInterfaceType = lens _viVirtualInterfaceType (\ s a -> s{_viVirtualInterfaceType = a});
+
+-- | Undocumented member.
+viAuthKey :: Lens' VirtualInterface (Maybe Text)
+viAuthKey = lens _viAuthKey (\ s a -> s{_viAuthKey = a});
+
+-- | Information for generating the customer router configuration.
+viCustomerRouterConfig :: Lens' VirtualInterface (Maybe Text)
+viCustomerRouterConfig = lens _viCustomerRouterConfig (\ s a -> s{_viCustomerRouterConfig = a});
+
+-- | Undocumented member.
+viOwnerAccount :: Lens' VirtualInterface (Maybe Text)
+viOwnerAccount = lens _viOwnerAccount (\ s a -> s{_viOwnerAccount = a});
+
+-- | Undocumented member.
+viVirtualInterfaceName :: Lens' VirtualInterface (Maybe Text)
+viVirtualInterfaceName = lens _viVirtualInterfaceName (\ s a -> s{_viVirtualInterfaceName = a});
+
+-- | Undocumented member.
+viVirtualInterfaceId :: Lens' VirtualInterface (Maybe Text)
+viVirtualInterfaceId = lens _viVirtualInterfaceId (\ s a -> s{_viVirtualInterfaceId = a});
+
+instance FromJSON VirtualInterface where
+        parseJSON
+          = withObject "VirtualInterface"
+              (\ x ->
+                 VirtualInterface' <$>
+                   (x .:? "virtualGatewayId") <*>
+                     (x .:? "routeFilterPrefixes" .!= mempty)
+                     <*> (x .:? "customerAddress")
+                     <*> (x .:? "vlan")
+                     <*> (x .:? "location")
+                     <*> (x .:? "amazonAddress")
+                     <*> (x .:? "virtualInterfaceState")
+                     <*> (x .:? "connectionId")
+                     <*> (x .:? "asn")
+                     <*> (x .:? "virtualInterfaceType")
+                     <*> (x .:? "authKey")
+                     <*> (x .:? "customerRouterConfig")
+                     <*> (x .:? "ownerAccount")
+                     <*> (x .:? "virtualInterfaceName")
+                     <*> (x .:? "virtualInterfaceId"))
diff --git a/gen/Network/AWS/DirectConnect/Types/Sum.hs b/gen/Network/AWS/DirectConnect/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DirectConnect/Types/Sum.hs
@@ -0,0 +1,190 @@
+{-# 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.DirectConnect.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.DirectConnect.Types.Sum where
+
+import           Network.AWS.Prelude
+
+-- | State of the connection.
+--
+-- -   __Ordering__: The initial state of a hosted connection provisioned
+--     on an interconnect. The connection stays in the ordering state until
+--     the owner of the hosted connection confirms or declines the
+--     connection order.
+-- -   __Requested__: The initial state of a standard connection. The
+--     connection stays in the requested state until the Letter of
+--     Authorization (LOA) is sent to the customer.
+-- -   __Pending__: The connection has been approved, and is being
+--     initialized.
+-- -   __Available__: The network link is up, and the connection is ready
+--     for use.
+-- -   __Down__: The network link is down.
+-- -   __Deleted__: The connection has been deleted.
+-- -   __Rejected__: A hosted connection in the \'Ordering\' state will
+--     enter the \'Rejected\' state if it is deleted by the end customer.
+data ConnectionState
+    = CSAvailable
+    | CSDeleted
+    | CSDeleting
+    | CSDown
+    | CSOrdering
+    | CSPending
+    | CSRejected
+    | CSRequested
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText ConnectionState where
+    parser = takeLowerText >>= \case
+        "available" -> pure CSAvailable
+        "deleted" -> pure CSDeleted
+        "deleting" -> pure CSDeleting
+        "down" -> pure CSDown
+        "ordering" -> pure CSOrdering
+        "pending" -> pure CSPending
+        "rejected" -> pure CSRejected
+        "requested" -> pure CSRequested
+        e -> fromTextError $ "Failure parsing ConnectionState from value: '" <> e
+           <> "'. Accepted values: available, deleted, deleting, down, ordering, pending, rejected, requested"
+
+instance ToText ConnectionState where
+    toText = \case
+        CSAvailable -> "available"
+        CSDeleted -> "deleted"
+        CSDeleting -> "deleting"
+        CSDown -> "down"
+        CSOrdering -> "ordering"
+        CSPending -> "pending"
+        CSRejected -> "rejected"
+        CSRequested -> "requested"
+
+instance Hashable     ConnectionState
+instance ToByteString ConnectionState
+instance ToQuery      ConnectionState
+instance ToHeader     ConnectionState
+
+instance FromJSON ConnectionState where
+    parseJSON = parseJSONText "ConnectionState"
+
+-- | State of the interconnect.
+--
+-- -   __Requested__: The initial state of an interconnect. The
+--     interconnect stays in the requested state until the Letter of
+--     Authorization (LOA) is sent to the customer.
+-- -   __Pending__: The interconnect has been approved, and is being
+--     initialized.
+-- -   __Available__: The network link is up, and the interconnect is ready
+--     for use.
+-- -   __Down__: The network link is down.
+-- -   __Deleted__: The interconnect has been deleted.
+data InterconnectState
+    = ISAvailable
+    | ISDeleted
+    | ISDeleting
+    | ISDown
+    | ISPending
+    | ISRequested
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText InterconnectState where
+    parser = takeLowerText >>= \case
+        "available" -> pure ISAvailable
+        "deleted" -> pure ISDeleted
+        "deleting" -> pure ISDeleting
+        "down" -> pure ISDown
+        "pending" -> pure ISPending
+        "requested" -> pure ISRequested
+        e -> fromTextError $ "Failure parsing InterconnectState from value: '" <> e
+           <> "'. Accepted values: available, deleted, deleting, down, pending, requested"
+
+instance ToText InterconnectState where
+    toText = \case
+        ISAvailable -> "available"
+        ISDeleted -> "deleted"
+        ISDeleting -> "deleting"
+        ISDown -> "down"
+        ISPending -> "pending"
+        ISRequested -> "requested"
+
+instance Hashable     InterconnectState
+instance ToByteString InterconnectState
+instance ToQuery      InterconnectState
+instance ToHeader     InterconnectState
+
+instance FromJSON InterconnectState where
+    parseJSON = parseJSONText "InterconnectState"
+
+-- | State of the virtual interface.
+--
+-- -   __Confirming__: The creation of the virtual interface is pending
+--     confirmation from the virtual interface owner. If the owner of the
+--     virtual interface is different from the owner of the connection on
+--     which it is provisioned, then the virtual interface will remain in
+--     this state until it is confirmed by the virtual interface owner.
+-- -   __Verifying__: This state only applies to public virtual interfaces.
+--     Each public virtual interface needs validation before the virtual
+--     interface can be created.
+-- -   __Pending__: A virtual interface is in this state from the time that
+--     it is created until the virtual interface is ready to forward
+--     traffic.
+-- -   __Available__: A virtual interface that is able to forward traffic.
+-- -   __Deleting__: A virtual interface is in this state immediately after
+--     calling /DeleteVirtualInterface/ until it can no longer forward
+--     traffic.
+-- -   __Deleted__: A virtual interface that cannot forward traffic.
+-- -   __Rejected__: The virtual interface owner has declined creation of
+--     the virtual interface. If a virtual interface in the \'Confirming\'
+--     state is deleted by the virtual interface owner, the virtual
+--     interface will enter the \'Rejected\' state.
+data VirtualInterfaceState
+    = Available
+    | Confirming
+    | Deleted
+    | Deleting
+    | Pending
+    | Rejected
+    | Verifying
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText VirtualInterfaceState where
+    parser = takeLowerText >>= \case
+        "available" -> pure Available
+        "confirming" -> pure Confirming
+        "deleted" -> pure Deleted
+        "deleting" -> pure Deleting
+        "pending" -> pure Pending
+        "rejected" -> pure Rejected
+        "verifying" -> pure Verifying
+        e -> fromTextError $ "Failure parsing VirtualInterfaceState from value: '" <> e
+           <> "'. Accepted values: available, confirming, deleted, deleting, pending, rejected, verifying"
+
+instance ToText VirtualInterfaceState where
+    toText = \case
+        Available -> "available"
+        Confirming -> "confirming"
+        Deleted -> "deleted"
+        Deleting -> "deleting"
+        Pending -> "pending"
+        Rejected -> "rejected"
+        Verifying -> "verifying"
+
+instance Hashable     VirtualInterfaceState
+instance ToByteString VirtualInterfaceState
+instance ToQuery      VirtualInterfaceState
+instance ToHeader     VirtualInterfaceState
+
+instance FromJSON VirtualInterfaceState where
+    parseJSON = parseJSONText "VirtualInterfaceState"
diff --git a/gen/Network/AWS/DirectConnect/Waiters.hs b/gen/Network/AWS/DirectConnect/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DirectConnect/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.DirectConnect.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.DirectConnect.Waiters where
+
+import           Network.AWS.DirectConnect.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.DirectConnect
+import Test.AWS.DirectConnect.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "DirectConnect"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/DirectConnect.hs b/test/Test/AWS/DirectConnect.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/DirectConnect.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Module      : Test.AWS.DirectConnect
+-- 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.DirectConnect
+    ( tests
+    , fixtures
+    ) where
+
+import           Network.AWS.DirectConnect
+import           Test.AWS.Gen.DirectConnect
+import           Test.Tasty
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/DirectConnect/Internal.hs b/test/Test/AWS/DirectConnect/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/DirectConnect/Internal.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.DirectConnect.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.DirectConnect.Internal where
+
+import Test.AWS.Prelude
diff --git a/test/Test/AWS/Gen/DirectConnect.hs b/test/Test/AWS/Gen/DirectConnect.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/DirectConnect.hs
@@ -0,0 +1,362 @@
+{-# 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.DirectConnect
+-- 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.DirectConnect where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.DirectConnect
+import Test.AWS.DirectConnect.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"
+--         [ testDescribeInterconnects $
+--             describeInterconnects
+--
+--         , testDeleteConnection $
+--             deleteConnection
+--
+--         , testCreateConnection $
+--             createConnection
+--
+--         , testDescribeConnections $
+--             describeConnections
+--
+--         , testDeleteInterconnect $
+--             deleteInterconnect
+--
+--         , testConfirmPrivateVirtualInterface $
+--             confirmPrivateVirtualInterface
+--
+--         , testDescribeConnectionsOnInterconnect $
+--             describeConnectionsOnInterconnect
+--
+--         , testDescribeLocations $
+--             describeLocations
+--
+--         , testCreatePublicVirtualInterface $
+--             createPublicVirtualInterface
+--
+--         , testAllocatePrivateVirtualInterface $
+--             allocatePrivateVirtualInterface
+--
+--         , testConfirmConnection $
+--             confirmConnection
+--
+--         , testDescribeVirtualGateways $
+--             describeVirtualGateways
+--
+--         , testConfirmPublicVirtualInterface $
+--             confirmPublicVirtualInterface
+--
+--         , testDescribeVirtualInterfaces $
+--             describeVirtualInterfaces
+--
+--         , testCreatePrivateVirtualInterface $
+--             createPrivateVirtualInterface
+--
+--         , testDeleteVirtualInterface $
+--             deleteVirtualInterface
+--
+--         , testAllocatePublicVirtualInterface $
+--             allocatePublicVirtualInterface
+--
+--         , testAllocateConnectionOnInterconnect $
+--             allocateConnectionOnInterconnect
+--
+--         , testCreateInterconnect $
+--             createInterconnect
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testDescribeInterconnectsResponse $
+--             describeInterconnectsResponse
+--
+--         , testDeleteConnectionResponse $
+--             connection
+--
+--         , testCreateConnectionResponse $
+--             connection
+--
+--         , testDescribeConnectionsResponse $
+--             connections
+--
+--         , testDeleteInterconnectResponse $
+--             deleteInterconnectResponse
+--
+--         , testConfirmPrivateVirtualInterfaceResponse $
+--             confirmPrivateVirtualInterfaceResponse
+--
+--         , testDescribeConnectionsOnInterconnectResponse $
+--             connections
+--
+--         , testDescribeLocationsResponse $
+--             describeLocationsResponse
+--
+--         , testCreatePublicVirtualInterfaceResponse $
+--             virtualInterface
+--
+--         , testAllocatePrivateVirtualInterfaceResponse $
+--             virtualInterface
+--
+--         , testConfirmConnectionResponse $
+--             confirmConnectionResponse
+--
+--         , testDescribeVirtualGatewaysResponse $
+--             describeVirtualGatewaysResponse
+--
+--         , testConfirmPublicVirtualInterfaceResponse $
+--             confirmPublicVirtualInterfaceResponse
+--
+--         , testDescribeVirtualInterfacesResponse $
+--             describeVirtualInterfacesResponse
+--
+--         , testCreatePrivateVirtualInterfaceResponse $
+--             virtualInterface
+--
+--         , testDeleteVirtualInterfaceResponse $
+--             deleteVirtualInterfaceResponse
+--
+--         , testAllocatePublicVirtualInterfaceResponse $
+--             virtualInterface
+--
+--         , testAllocateConnectionOnInterconnectResponse $
+--             connection
+--
+--         , testCreateInterconnectResponse $
+--             interconnect
+--
+--           ]
+--     ]
+
+-- Requests
+
+testDescribeInterconnects :: DescribeInterconnects -> TestTree
+testDescribeInterconnects = req
+    "DescribeInterconnects"
+    "fixture/DescribeInterconnects"
+
+testDeleteConnection :: DeleteConnection -> TestTree
+testDeleteConnection = req
+    "DeleteConnection"
+    "fixture/DeleteConnection"
+
+testCreateConnection :: CreateConnection -> TestTree
+testCreateConnection = req
+    "CreateConnection"
+    "fixture/CreateConnection"
+
+testDescribeConnections :: DescribeConnections -> TestTree
+testDescribeConnections = req
+    "DescribeConnections"
+    "fixture/DescribeConnections"
+
+testDeleteInterconnect :: DeleteInterconnect -> TestTree
+testDeleteInterconnect = req
+    "DeleteInterconnect"
+    "fixture/DeleteInterconnect"
+
+testConfirmPrivateVirtualInterface :: ConfirmPrivateVirtualInterface -> TestTree
+testConfirmPrivateVirtualInterface = req
+    "ConfirmPrivateVirtualInterface"
+    "fixture/ConfirmPrivateVirtualInterface"
+
+testDescribeConnectionsOnInterconnect :: DescribeConnectionsOnInterconnect -> TestTree
+testDescribeConnectionsOnInterconnect = req
+    "DescribeConnectionsOnInterconnect"
+    "fixture/DescribeConnectionsOnInterconnect"
+
+testDescribeLocations :: DescribeLocations -> TestTree
+testDescribeLocations = req
+    "DescribeLocations"
+    "fixture/DescribeLocations"
+
+testCreatePublicVirtualInterface :: CreatePublicVirtualInterface -> TestTree
+testCreatePublicVirtualInterface = req
+    "CreatePublicVirtualInterface"
+    "fixture/CreatePublicVirtualInterface"
+
+testAllocatePrivateVirtualInterface :: AllocatePrivateVirtualInterface -> TestTree
+testAllocatePrivateVirtualInterface = req
+    "AllocatePrivateVirtualInterface"
+    "fixture/AllocatePrivateVirtualInterface"
+
+testConfirmConnection :: ConfirmConnection -> TestTree
+testConfirmConnection = req
+    "ConfirmConnection"
+    "fixture/ConfirmConnection"
+
+testDescribeVirtualGateways :: DescribeVirtualGateways -> TestTree
+testDescribeVirtualGateways = req
+    "DescribeVirtualGateways"
+    "fixture/DescribeVirtualGateways"
+
+testConfirmPublicVirtualInterface :: ConfirmPublicVirtualInterface -> TestTree
+testConfirmPublicVirtualInterface = req
+    "ConfirmPublicVirtualInterface"
+    "fixture/ConfirmPublicVirtualInterface"
+
+testDescribeVirtualInterfaces :: DescribeVirtualInterfaces -> TestTree
+testDescribeVirtualInterfaces = req
+    "DescribeVirtualInterfaces"
+    "fixture/DescribeVirtualInterfaces"
+
+testCreatePrivateVirtualInterface :: CreatePrivateVirtualInterface -> TestTree
+testCreatePrivateVirtualInterface = req
+    "CreatePrivateVirtualInterface"
+    "fixture/CreatePrivateVirtualInterface"
+
+testDeleteVirtualInterface :: DeleteVirtualInterface -> TestTree
+testDeleteVirtualInterface = req
+    "DeleteVirtualInterface"
+    "fixture/DeleteVirtualInterface"
+
+testAllocatePublicVirtualInterface :: AllocatePublicVirtualInterface -> TestTree
+testAllocatePublicVirtualInterface = req
+    "AllocatePublicVirtualInterface"
+    "fixture/AllocatePublicVirtualInterface"
+
+testAllocateConnectionOnInterconnect :: AllocateConnectionOnInterconnect -> TestTree
+testAllocateConnectionOnInterconnect = req
+    "AllocateConnectionOnInterconnect"
+    "fixture/AllocateConnectionOnInterconnect"
+
+testCreateInterconnect :: CreateInterconnect -> TestTree
+testCreateInterconnect = req
+    "CreateInterconnect"
+    "fixture/CreateInterconnect"
+
+-- Responses
+
+testDescribeInterconnectsResponse :: DescribeInterconnectsResponse -> TestTree
+testDescribeInterconnectsResponse = res
+    "DescribeInterconnectsResponse"
+    "fixture/DescribeInterconnectsResponse"
+    (Proxy :: Proxy DescribeInterconnects)
+
+testDeleteConnectionResponse :: Connection -> TestTree
+testDeleteConnectionResponse = res
+    "DeleteConnectionResponse"
+    "fixture/DeleteConnectionResponse"
+    (Proxy :: Proxy DeleteConnection)
+
+testCreateConnectionResponse :: Connection -> TestTree
+testCreateConnectionResponse = res
+    "CreateConnectionResponse"
+    "fixture/CreateConnectionResponse"
+    (Proxy :: Proxy CreateConnection)
+
+testDescribeConnectionsResponse :: Connections -> TestTree
+testDescribeConnectionsResponse = res
+    "DescribeConnectionsResponse"
+    "fixture/DescribeConnectionsResponse"
+    (Proxy :: Proxy DescribeConnections)
+
+testDeleteInterconnectResponse :: DeleteInterconnectResponse -> TestTree
+testDeleteInterconnectResponse = res
+    "DeleteInterconnectResponse"
+    "fixture/DeleteInterconnectResponse"
+    (Proxy :: Proxy DeleteInterconnect)
+
+testConfirmPrivateVirtualInterfaceResponse :: ConfirmPrivateVirtualInterfaceResponse -> TestTree
+testConfirmPrivateVirtualInterfaceResponse = res
+    "ConfirmPrivateVirtualInterfaceResponse"
+    "fixture/ConfirmPrivateVirtualInterfaceResponse"
+    (Proxy :: Proxy ConfirmPrivateVirtualInterface)
+
+testDescribeConnectionsOnInterconnectResponse :: Connections -> TestTree
+testDescribeConnectionsOnInterconnectResponse = res
+    "DescribeConnectionsOnInterconnectResponse"
+    "fixture/DescribeConnectionsOnInterconnectResponse"
+    (Proxy :: Proxy DescribeConnectionsOnInterconnect)
+
+testDescribeLocationsResponse :: DescribeLocationsResponse -> TestTree
+testDescribeLocationsResponse = res
+    "DescribeLocationsResponse"
+    "fixture/DescribeLocationsResponse"
+    (Proxy :: Proxy DescribeLocations)
+
+testCreatePublicVirtualInterfaceResponse :: VirtualInterface -> TestTree
+testCreatePublicVirtualInterfaceResponse = res
+    "CreatePublicVirtualInterfaceResponse"
+    "fixture/CreatePublicVirtualInterfaceResponse"
+    (Proxy :: Proxy CreatePublicVirtualInterface)
+
+testAllocatePrivateVirtualInterfaceResponse :: VirtualInterface -> TestTree
+testAllocatePrivateVirtualInterfaceResponse = res
+    "AllocatePrivateVirtualInterfaceResponse"
+    "fixture/AllocatePrivateVirtualInterfaceResponse"
+    (Proxy :: Proxy AllocatePrivateVirtualInterface)
+
+testConfirmConnectionResponse :: ConfirmConnectionResponse -> TestTree
+testConfirmConnectionResponse = res
+    "ConfirmConnectionResponse"
+    "fixture/ConfirmConnectionResponse"
+    (Proxy :: Proxy ConfirmConnection)
+
+testDescribeVirtualGatewaysResponse :: DescribeVirtualGatewaysResponse -> TestTree
+testDescribeVirtualGatewaysResponse = res
+    "DescribeVirtualGatewaysResponse"
+    "fixture/DescribeVirtualGatewaysResponse"
+    (Proxy :: Proxy DescribeVirtualGateways)
+
+testConfirmPublicVirtualInterfaceResponse :: ConfirmPublicVirtualInterfaceResponse -> TestTree
+testConfirmPublicVirtualInterfaceResponse = res
+    "ConfirmPublicVirtualInterfaceResponse"
+    "fixture/ConfirmPublicVirtualInterfaceResponse"
+    (Proxy :: Proxy ConfirmPublicVirtualInterface)
+
+testDescribeVirtualInterfacesResponse :: DescribeVirtualInterfacesResponse -> TestTree
+testDescribeVirtualInterfacesResponse = res
+    "DescribeVirtualInterfacesResponse"
+    "fixture/DescribeVirtualInterfacesResponse"
+    (Proxy :: Proxy DescribeVirtualInterfaces)
+
+testCreatePrivateVirtualInterfaceResponse :: VirtualInterface -> TestTree
+testCreatePrivateVirtualInterfaceResponse = res
+    "CreatePrivateVirtualInterfaceResponse"
+    "fixture/CreatePrivateVirtualInterfaceResponse"
+    (Proxy :: Proxy CreatePrivateVirtualInterface)
+
+testDeleteVirtualInterfaceResponse :: DeleteVirtualInterfaceResponse -> TestTree
+testDeleteVirtualInterfaceResponse = res
+    "DeleteVirtualInterfaceResponse"
+    "fixture/DeleteVirtualInterfaceResponse"
+    (Proxy :: Proxy DeleteVirtualInterface)
+
+testAllocatePublicVirtualInterfaceResponse :: VirtualInterface -> TestTree
+testAllocatePublicVirtualInterfaceResponse = res
+    "AllocatePublicVirtualInterfaceResponse"
+    "fixture/AllocatePublicVirtualInterfaceResponse"
+    (Proxy :: Proxy AllocatePublicVirtualInterface)
+
+testAllocateConnectionOnInterconnectResponse :: Connection -> TestTree
+testAllocateConnectionOnInterconnectResponse = res
+    "AllocateConnectionOnInterconnectResponse"
+    "fixture/AllocateConnectionOnInterconnectResponse"
+    (Proxy :: Proxy AllocateConnectionOnInterconnect)
+
+testCreateInterconnectResponse :: Interconnect -> TestTree
+testCreateInterconnectResponse = res
+    "CreateInterconnectResponse"
+    "fixture/CreateInterconnectResponse"
+    (Proxy :: Proxy CreateInterconnect)
