diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.1.0`
+`1.2.0`
 
 
 ## Description
diff --git a/amazonka-directconnect.cabal b/amazonka-directconnect.cabal
--- a/amazonka-directconnect.cabal
+++ b/amazonka-directconnect.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-directconnect
-version:               1.1.0
+version:               1.2.0
 synopsis:              Amazon Direct Connect SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -88,7 +88,7 @@
         , Network.AWS.DirectConnect.Types.Sum
 
     build-depends:
-          amazonka-core == 1.1.0.*
+          amazonka-core == 1.2.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-directconnect-test
@@ -107,9 +107,9 @@
         , Test.AWS.DirectConnect.Internal
 
     build-depends:
-          amazonka-core == 1.1.0
-        , amazonka-test == 1.1.0
-        , amazonka-directconnect == 1.1.0
+          amazonka-core == 1.2.0
+        , amazonka-test == 1.2.0
+        , amazonka-directconnect == 1.2.0
         , base
         , bytestring
         , lens
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
@@ -36,8 +36,8 @@
 -- /See:/ <http://docs.aws.amazon.com/directconnect/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.DirectConnect
     (
-    -- * Service
-      DirectConnect
+    -- * Service Configuration
+      directConnect
 
     -- * Errors
     -- $errors
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
@@ -141,10 +141,8 @@
 
 instance AWSRequest AllocateConnectionOnInterconnect
          where
-        type Sv AllocateConnectionOnInterconnect =
-             DirectConnect
         type Rs AllocateConnectionOnInterconnect = Connection
-        request = postJSON
+        request = postJSON directConnect
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders AllocateConnectionOnInterconnect
@@ -162,11 +160,12 @@
          where
         toJSON AllocateConnectionOnInterconnect'{..}
           = object
-              ["bandwidth" .= _acoiBandwidth,
-               "connectionName" .= _acoiConnectionName,
-               "ownerAccount" .= _acoiOwnerAccount,
-               "interconnectId" .= _acoiInterconnectId,
-               "vlan" .= _acoiVlan]
+              (catMaybes
+                 [Just ("bandwidth" .= _acoiBandwidth),
+                  Just ("connectionName" .= _acoiConnectionName),
+                  Just ("ownerAccount" .= _acoiOwnerAccount),
+                  Just ("interconnectId" .= _acoiInterconnectId),
+                  Just ("vlan" .= _acoiVlan)])
 
 instance ToPath AllocateConnectionOnInterconnect
          where
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
@@ -119,11 +119,9 @@
 
 instance AWSRequest AllocatePrivateVirtualInterface
          where
-        type Sv AllocatePrivateVirtualInterface =
-             DirectConnect
         type Rs AllocatePrivateVirtualInterface =
              VirtualInterface
-        request = postJSON
+        request = postJSON directConnect
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders AllocatePrivateVirtualInterface
@@ -140,10 +138,12 @@
 instance ToJSON AllocatePrivateVirtualInterface where
         toJSON AllocatePrivateVirtualInterface'{..}
           = object
-              ["connectionId" .= _apviConnectionId,
-               "ownerAccount" .= _apviOwnerAccount,
-               "newPrivateVirtualInterfaceAllocation" .=
-                 _apviNewPrivateVirtualInterfaceAllocation]
+              (catMaybes
+                 [Just ("connectionId" .= _apviConnectionId),
+                  Just ("ownerAccount" .= _apviOwnerAccount),
+                  Just
+                    ("newPrivateVirtualInterfaceAllocation" .=
+                       _apviNewPrivateVirtualInterfaceAllocation)])
 
 instance ToPath AllocatePrivateVirtualInterface where
         toPath = const "/"
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
@@ -118,11 +118,9 @@
 
 instance AWSRequest AllocatePublicVirtualInterface
          where
-        type Sv AllocatePublicVirtualInterface =
-             DirectConnect
         type Rs AllocatePublicVirtualInterface =
              VirtualInterface
-        request = postJSON
+        request = postJSON directConnect
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders AllocatePublicVirtualInterface
@@ -139,10 +137,12 @@
 instance ToJSON AllocatePublicVirtualInterface where
         toJSON AllocatePublicVirtualInterface'{..}
           = object
-              ["connectionId" .= _aConnectionId,
-               "ownerAccount" .= _aOwnerAccount,
-               "newPublicVirtualInterfaceAllocation" .=
-                 _aNewPublicVirtualInterfaceAllocation]
+              (catMaybes
+                 [Just ("connectionId" .= _aConnectionId),
+                  Just ("ownerAccount" .= _aOwnerAccount),
+                  Just
+                    ("newPublicVirtualInterfaceAllocation" .=
+                       _aNewPublicVirtualInterfaceAllocation)])
 
 instance ToPath AllocatePublicVirtualInterface where
         toPath = const "/"
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
@@ -72,9 +72,8 @@
 ccConnectionId = lens _ccConnectionId (\ s a -> s{_ccConnectionId = a});
 
 instance AWSRequest ConfirmConnection where
-        type Sv ConfirmConnection = DirectConnect
         type Rs ConfirmConnection = ConfirmConnectionResponse
-        request = postJSON
+        request = postJSON directConnect
         response
           = receiveJSON
               (\ s h x ->
@@ -92,7 +91,9 @@
 
 instance ToJSON ConfirmConnection where
         toJSON ConfirmConnection'{..}
-          = object ["connectionId" .= _ccConnectionId]
+          = object
+              (catMaybes
+                 [Just ("connectionId" .= _ccConnectionId)])
 
 instance ToPath ConfirmConnection where
         toPath = const "/"
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
@@ -93,11 +93,9 @@
 
 instance AWSRequest ConfirmPrivateVirtualInterface
          where
-        type Sv ConfirmPrivateVirtualInterface =
-             DirectConnect
         type Rs ConfirmPrivateVirtualInterface =
              ConfirmPrivateVirtualInterfaceResponse
-        request = postJSON
+        request = postJSON directConnect
         response
           = receiveJSON
               (\ s h x ->
@@ -119,8 +117,10 @@
 instance ToJSON ConfirmPrivateVirtualInterface where
         toJSON ConfirmPrivateVirtualInterface'{..}
           = object
-              ["virtualInterfaceId" .= _cpviVirtualInterfaceId,
-               "virtualGatewayId" .= _cpviVirtualGatewayId]
+              (catMaybes
+                 [Just
+                    ("virtualInterfaceId" .= _cpviVirtualInterfaceId),
+                  Just ("virtualGatewayId" .= _cpviVirtualGatewayId)])
 
 instance ToPath ConfirmPrivateVirtualInterface where
         toPath = const "/"
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
@@ -75,10 +75,9 @@
 
 instance AWSRequest ConfirmPublicVirtualInterface
          where
-        type Sv ConfirmPublicVirtualInterface = DirectConnect
         type Rs ConfirmPublicVirtualInterface =
              ConfirmPublicVirtualInterfaceResponse
-        request = postJSON
+        request = postJSON directConnect
         response
           = receiveJSON
               (\ s h x ->
@@ -100,7 +99,9 @@
 instance ToJSON ConfirmPublicVirtualInterface where
         toJSON ConfirmPublicVirtualInterface'{..}
           = object
-              ["virtualInterfaceId" .= _cVirtualInterfaceId]
+              (catMaybes
+                 [Just
+                    ("virtualInterfaceId" .= _cVirtualInterfaceId)])
 
 instance ToPath ConfirmPublicVirtualInterface where
         toPath = const "/"
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
@@ -105,9 +105,8 @@
 ccConnectionName = lens _ccConnectionName (\ s a -> s{_ccConnectionName = a});
 
 instance AWSRequest CreateConnection where
-        type Sv CreateConnection = DirectConnect
         type Rs CreateConnection = Connection
-        request = postJSON
+        request = postJSON directConnect
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders CreateConnection where
@@ -122,9 +121,10 @@
 instance ToJSON CreateConnection where
         toJSON CreateConnection'{..}
           = object
-              ["location" .= _ccLocation,
-               "bandwidth" .= _ccBandwidth,
-               "connectionName" .= _ccConnectionName]
+              (catMaybes
+                 [Just ("location" .= _ccLocation),
+                  Just ("bandwidth" .= _ccBandwidth),
+                  Just ("connectionName" .= _ccConnectionName)])
 
 instance ToPath CreateConnection where
         toPath = const "/"
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
@@ -122,9 +122,8 @@
 ciLocation = lens _ciLocation (\ s a -> s{_ciLocation = a});
 
 instance AWSRequest CreateInterconnect where
-        type Sv CreateInterconnect = DirectConnect
         type Rs CreateInterconnect = Interconnect
-        request = postJSON
+        request = postJSON directConnect
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders CreateInterconnect where
@@ -139,9 +138,10 @@
 instance ToJSON CreateInterconnect where
         toJSON CreateInterconnect'{..}
           = object
-              ["interconnectName" .= _ciInterconnectName,
-               "bandwidth" .= _ciBandwidth,
-               "location" .= _ciLocation]
+              (catMaybes
+                 [Just ("interconnectName" .= _ciInterconnectName),
+                  Just ("bandwidth" .= _ciBandwidth),
+                  Just ("location" .= _ciLocation)])
 
 instance ToPath CreateInterconnect where
         toPath = const "/"
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
@@ -97,10 +97,9 @@
 
 instance AWSRequest CreatePrivateVirtualInterface
          where
-        type Sv CreatePrivateVirtualInterface = DirectConnect
         type Rs CreatePrivateVirtualInterface =
              VirtualInterface
-        request = postJSON
+        request = postJSON directConnect
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders CreatePrivateVirtualInterface
@@ -117,9 +116,11 @@
 instance ToJSON CreatePrivateVirtualInterface where
         toJSON CreatePrivateVirtualInterface'{..}
           = object
-              ["connectionId" .= _creConnectionId,
-               "newPrivateVirtualInterface" .=
-                 _creNewPrivateVirtualInterface]
+              (catMaybes
+                 [Just ("connectionId" .= _creConnectionId),
+                  Just
+                    ("newPrivateVirtualInterface" .=
+                       _creNewPrivateVirtualInterface)])
 
 instance ToPath CreatePrivateVirtualInterface where
         toPath = const "/"
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
@@ -98,10 +98,9 @@
 
 instance AWSRequest CreatePublicVirtualInterface
          where
-        type Sv CreatePublicVirtualInterface = DirectConnect
         type Rs CreatePublicVirtualInterface =
              VirtualInterface
-        request = postJSON
+        request = postJSON directConnect
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders CreatePublicVirtualInterface where
@@ -117,9 +116,11 @@
 instance ToJSON CreatePublicVirtualInterface where
         toJSON CreatePublicVirtualInterface'{..}
           = object
-              ["connectionId" .= _cpviConnectionId,
-               "newPublicVirtualInterface" .=
-                 _cpviNewPublicVirtualInterface]
+              (catMaybes
+                 [Just ("connectionId" .= _cpviConnectionId),
+                  Just
+                    ("newPublicVirtualInterface" .=
+                       _cpviNewPublicVirtualInterface)])
 
 instance ToPath CreatePublicVirtualInterface where
         toPath = const "/"
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
@@ -80,9 +80,8 @@
 dcConnectionId = lens _dcConnectionId (\ s a -> s{_dcConnectionId = a});
 
 instance AWSRequest DeleteConnection where
-        type Sv DeleteConnection = DirectConnect
         type Rs DeleteConnection = Connection
-        request = postJSON
+        request = postJSON directConnect
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders DeleteConnection where
@@ -96,7 +95,9 @@
 
 instance ToJSON DeleteConnection where
         toJSON DeleteConnection'{..}
-          = object ["connectionId" .= _dcConnectionId]
+          = object
+              (catMaybes
+                 [Just ("connectionId" .= _dcConnectionId)])
 
 instance ToPath DeleteConnection where
         toPath = const "/"
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
@@ -68,10 +68,9 @@
 dInterconnectId = lens _dInterconnectId (\ s a -> s{_dInterconnectId = a});
 
 instance AWSRequest DeleteInterconnect where
-        type Sv DeleteInterconnect = DirectConnect
         type Rs DeleteInterconnect =
              DeleteInterconnectResponse
-        request = postJSON
+        request = postJSON directConnect
         response
           = receiveJSON
               (\ s h x ->
@@ -89,7 +88,9 @@
 
 instance ToJSON DeleteInterconnect where
         toJSON DeleteInterconnect'{..}
-          = object ["interconnectId" .= _dInterconnectId]
+          = object
+              (catMaybes
+                 [Just ("interconnectId" .= _dInterconnectId)])
 
 instance ToPath DeleteInterconnect where
         toPath = const "/"
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
@@ -68,10 +68,9 @@
 dVirtualInterfaceId = lens _dVirtualInterfaceId (\ s a -> s{_dVirtualInterfaceId = a});
 
 instance AWSRequest DeleteVirtualInterface where
-        type Sv DeleteVirtualInterface = DirectConnect
         type Rs DeleteVirtualInterface =
              DeleteVirtualInterfaceResponse
-        request = postJSON
+        request = postJSON directConnect
         response
           = receiveJSON
               (\ s h x ->
@@ -92,7 +91,9 @@
 instance ToJSON DeleteVirtualInterface where
         toJSON DeleteVirtualInterface'{..}
           = object
-              ["virtualInterfaceId" .= _dVirtualInterfaceId]
+              (catMaybes
+                 [Just
+                    ("virtualInterfaceId" .= _dVirtualInterfaceId)])
 
 instance ToPath DeleteVirtualInterface where
         toPath = const "/"
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
@@ -69,9 +69,8 @@
 dConnectionId = lens _dConnectionId (\ s a -> s{_dConnectionId = a});
 
 instance AWSRequest DescribeConnections where
-        type Sv DescribeConnections = DirectConnect
         type Rs DescribeConnections = Connections
-        request = postJSON
+        request = postJSON directConnect
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders DescribeConnections where
@@ -86,7 +85,8 @@
 
 instance ToJSON DescribeConnections where
         toJSON DescribeConnections'{..}
-          = object ["connectionId" .= _dConnectionId]
+          = object
+              (catMaybes [("connectionId" .=) <$> _dConnectionId])
 
 instance ToPath DescribeConnections where
         toPath = const "/"
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
@@ -74,11 +74,9 @@
 
 instance AWSRequest DescribeConnectionsOnInterconnect
          where
-        type Sv DescribeConnectionsOnInterconnect =
-             DirectConnect
         type Rs DescribeConnectionsOnInterconnect =
              Connections
-        request = postJSON
+        request = postJSON directConnect
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders DescribeConnectionsOnInterconnect
@@ -95,7 +93,9 @@
 instance ToJSON DescribeConnectionsOnInterconnect
          where
         toJSON DescribeConnectionsOnInterconnect'{..}
-          = object ["interconnectId" .= _dcoiInterconnectId]
+          = object
+              (catMaybes
+                 [Just ("interconnectId" .= _dcoiInterconnectId)])
 
 instance ToPath DescribeConnectionsOnInterconnect
          where
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
@@ -70,10 +70,9 @@
 diInterconnectId = lens _diInterconnectId (\ s a -> s{_diInterconnectId = a});
 
 instance AWSRequest DescribeInterconnects where
-        type Sv DescribeInterconnects = DirectConnect
         type Rs DescribeInterconnects =
              DescribeInterconnectsResponse
-        request = postJSON
+        request = postJSON directConnect
         response
           = receiveJSON
               (\ s h x ->
@@ -93,7 +92,9 @@
 
 instance ToJSON DescribeInterconnects where
         toJSON DescribeInterconnects'{..}
-          = object ["interconnectId" .= _diInterconnectId]
+          = object
+              (catMaybes
+                 [("interconnectId" .=) <$> _diInterconnectId])
 
 instance ToPath DescribeInterconnects where
         toPath = const "/"
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
@@ -55,9 +55,8 @@
 describeLocations = DescribeLocations'
 
 instance AWSRequest DescribeLocations where
-        type Sv DescribeLocations = DirectConnect
         type Rs DescribeLocations = DescribeLocationsResponse
-        request = postJSON
+        request = postJSON directConnect
         response
           = receiveJSON
               (\ s h x ->
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
@@ -59,10 +59,9 @@
 describeVirtualGateways = DescribeVirtualGateways'
 
 instance AWSRequest DescribeVirtualGateways where
-        type Sv DescribeVirtualGateways = DirectConnect
         type Rs DescribeVirtualGateways =
              DescribeVirtualGatewaysResponse
-        request = postJSON
+        request = postJSON directConnect
         response
           = receiveJSON
               (\ s h x ->
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
@@ -88,10 +88,9 @@
 dviVirtualInterfaceId = lens _dviVirtualInterfaceId (\ s a -> s{_dviVirtualInterfaceId = a});
 
 instance AWSRequest DescribeVirtualInterfaces where
-        type Sv DescribeVirtualInterfaces = DirectConnect
         type Rs DescribeVirtualInterfaces =
              DescribeVirtualInterfacesResponse
-        request = postJSON
+        request = postJSON directConnect
         response
           = receiveJSON
               (\ s h x ->
@@ -112,8 +111,10 @@
 instance ToJSON DescribeVirtualInterfaces where
         toJSON DescribeVirtualInterfaces'{..}
           = object
-              ["connectionId" .= _dviConnectionId,
-               "virtualInterfaceId" .= _dviVirtualInterfaceId]
+              (catMaybes
+                 [("connectionId" .=) <$> _dviConnectionId,
+                  ("virtualInterfaceId" .=) <$>
+                    _dviVirtualInterfaceId])
 
 instance ToPath DescribeVirtualInterfaces where
         toPath = const "/"
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,5 +1,4 @@
 {-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE TypeFamilies      #-}
 
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
@@ -13,8 +12,8 @@
 --
 module Network.AWS.DirectConnect.Types
     (
-    -- * Service
-      DirectConnect
+    -- * Service Configuration
+      directConnect
 
     -- * Errors
     , _DirectConnectClientException
@@ -142,39 +141,36 @@
 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
+-- | API version '2012-10-25' of the Amazon Direct Connect SDK configuration.
+directConnect :: Service
+directConnect =
+    Service
+    { _svcAbbrev = "DirectConnect"
+    , _svcSigner = v4
+    , _svcPrefix = "directconnect"
+    , _svcVersion = "2012-10-25"
+    , _svcEndpoint = defaultEndpoint directConnect
+    , _svcTimeout = Just 70
+    , _svcCheck = statusSuccess
+    , _svcError = parseJSONError
+    , _svcRetry = retry
+    }
+  where
+    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.
diff --git a/gen/Network/AWS/DirectConnect/Types/Product.hs b/gen/Network/AWS/DirectConnect/Types/Product.hs
--- a/gen/Network/AWS/DirectConnect/Types/Product.hs
+++ b/gen/Network/AWS/DirectConnect/Types/Product.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE OverloadedStrings  #-}
 {-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
@@ -362,12 +361,14 @@
 instance ToJSON NewPrivateVirtualInterface where
         toJSON NewPrivateVirtualInterface'{..}
           = object
-              ["customerAddress" .= _nCustomerAddress,
-               "amazonAddress" .= _nAmazonAddress,
-               "authKey" .= _nAuthKey,
-               "virtualInterfaceName" .= _nVirtualInterfaceName,
-               "vlan" .= _nVlan, "asn" .= _nAsn,
-               "virtualGatewayId" .= _nVirtualGatewayId]
+              (catMaybes
+                 [("customerAddress" .=) <$> _nCustomerAddress,
+                  ("amazonAddress" .=) <$> _nAmazonAddress,
+                  ("authKey" .=) <$> _nAuthKey,
+                  Just
+                    ("virtualInterfaceName" .= _nVirtualInterfaceName),
+                  Just ("vlan" .= _nVlan), Just ("asn" .= _nAsn),
+                  Just ("virtualGatewayId" .= _nVirtualGatewayId)])
 
 -- | A structure containing information about a private virtual interface
 -- that will be provisioned on a connection.
@@ -440,11 +441,15 @@
          where
         toJSON NewPrivateVirtualInterfaceAllocation'{..}
           = object
-              ["customerAddress" .= _npviaCustomerAddress,
-               "amazonAddress" .= _npviaAmazonAddress,
-               "authKey" .= _npviaAuthKey,
-               "virtualInterfaceName" .= _npviaVirtualInterfaceName,
-               "vlan" .= _npviaVlan, "asn" .= _npviaAsn]
+              (catMaybes
+                 [("customerAddress" .=) <$> _npviaCustomerAddress,
+                  ("amazonAddress" .=) <$> _npviaAmazonAddress,
+                  ("authKey" .=) <$> _npviaAuthKey,
+                  Just
+                    ("virtualInterfaceName" .=
+                       _npviaVirtualInterfaceName),
+                  Just ("vlan" .= _npviaVlan),
+                  Just ("asn" .= _npviaAsn)])
 
 -- | A structure containing information about a new public virtual interface.
 --
@@ -525,12 +530,16 @@
 instance ToJSON NewPublicVirtualInterface where
         toJSON NewPublicVirtualInterface'{..}
           = object
-              ["authKey" .= _npviAuthKey,
-               "virtualInterfaceName" .= _npviVirtualInterfaceName,
-               "vlan" .= _npviVlan, "asn" .= _npviAsn,
-               "amazonAddress" .= _npviAmazonAddress,
-               "customerAddress" .= _npviCustomerAddress,
-               "routeFilterPrefixes" .= _npviRouteFilterPrefixes]
+              (catMaybes
+                 [("authKey" .=) <$> _npviAuthKey,
+                  Just
+                    ("virtualInterfaceName" .=
+                       _npviVirtualInterfaceName),
+                  Just ("vlan" .= _npviVlan), Just ("asn" .= _npviAsn),
+                  Just ("amazonAddress" .= _npviAmazonAddress),
+                  Just ("customerAddress" .= _npviCustomerAddress),
+                  Just
+                    ("routeFilterPrefixes" .= _npviRouteFilterPrefixes)])
 
 -- | A structure containing information about a public virtual interface that
 -- will be provisioned on a connection.
@@ -613,12 +622,15 @@
          where
         toJSON NewPublicVirtualInterfaceAllocation'{..}
           = object
-              ["authKey" .= _newAuthKey,
-               "virtualInterfaceName" .= _newVirtualInterfaceName,
-               "vlan" .= _newVlan, "asn" .= _newAsn,
-               "amazonAddress" .= _newAmazonAddress,
-               "customerAddress" .= _newCustomerAddress,
-               "routeFilterPrefixes" .= _newRouteFilterPrefixes]
+              (catMaybes
+                 [("authKey" .=) <$> _newAuthKey,
+                  Just
+                    ("virtualInterfaceName" .= _newVirtualInterfaceName),
+                  Just ("vlan" .= _newVlan), Just ("asn" .= _newAsn),
+                  Just ("amazonAddress" .= _newAmazonAddress),
+                  Just ("customerAddress" .= _newCustomerAddress),
+                  Just
+                    ("routeFilterPrefixes" .= _newRouteFilterPrefixes)])
 
 -- | A route filter prefix that the customer can advertise through Border
 -- Gateway Protocol (BGP) over a public virtual interface.
@@ -654,7 +666,7 @@
 
 instance ToJSON RouteFilterPrefix where
         toJSON RouteFilterPrefix'{..}
-          = object ["cidr" .= _rfpCidr]
+          = object (catMaybes [("cidr" .=) <$> _rfpCidr])
 
 -- | You can create one or more AWS Direct Connect private virtual interfaces
 -- linking to your virtual private gateway.
diff --git a/test/Test/AWS/Gen/DirectConnect.hs b/test/Test/AWS/Gen/DirectConnect.hs
--- a/test/Test/AWS/Gen/DirectConnect.hs
+++ b/test/Test/AWS/Gen/DirectConnect.hs
@@ -251,112 +251,131 @@
 testDescribeInterconnectsResponse = res
     "DescribeInterconnectsResponse"
     "fixture/DescribeInterconnectsResponse"
+    directConnect
     (Proxy :: Proxy DescribeInterconnects)
 
 testDeleteConnectionResponse :: Connection -> TestTree
 testDeleteConnectionResponse = res
     "DeleteConnectionResponse"
     "fixture/DeleteConnectionResponse"
+    directConnect
     (Proxy :: Proxy DeleteConnection)
 
 testCreateConnectionResponse :: Connection -> TestTree
 testCreateConnectionResponse = res
     "CreateConnectionResponse"
     "fixture/CreateConnectionResponse"
+    directConnect
     (Proxy :: Proxy CreateConnection)
 
 testDescribeConnectionsResponse :: Connections -> TestTree
 testDescribeConnectionsResponse = res
     "DescribeConnectionsResponse"
     "fixture/DescribeConnectionsResponse"
+    directConnect
     (Proxy :: Proxy DescribeConnections)
 
 testDeleteInterconnectResponse :: DeleteInterconnectResponse -> TestTree
 testDeleteInterconnectResponse = res
     "DeleteInterconnectResponse"
     "fixture/DeleteInterconnectResponse"
+    directConnect
     (Proxy :: Proxy DeleteInterconnect)
 
 testConfirmPrivateVirtualInterfaceResponse :: ConfirmPrivateVirtualInterfaceResponse -> TestTree
 testConfirmPrivateVirtualInterfaceResponse = res
     "ConfirmPrivateVirtualInterfaceResponse"
     "fixture/ConfirmPrivateVirtualInterfaceResponse"
+    directConnect
     (Proxy :: Proxy ConfirmPrivateVirtualInterface)
 
 testDescribeConnectionsOnInterconnectResponse :: Connections -> TestTree
 testDescribeConnectionsOnInterconnectResponse = res
     "DescribeConnectionsOnInterconnectResponse"
     "fixture/DescribeConnectionsOnInterconnectResponse"
+    directConnect
     (Proxy :: Proxy DescribeConnectionsOnInterconnect)
 
 testDescribeLocationsResponse :: DescribeLocationsResponse -> TestTree
 testDescribeLocationsResponse = res
     "DescribeLocationsResponse"
     "fixture/DescribeLocationsResponse"
+    directConnect
     (Proxy :: Proxy DescribeLocations)
 
 testCreatePublicVirtualInterfaceResponse :: VirtualInterface -> TestTree
 testCreatePublicVirtualInterfaceResponse = res
     "CreatePublicVirtualInterfaceResponse"
     "fixture/CreatePublicVirtualInterfaceResponse"
+    directConnect
     (Proxy :: Proxy CreatePublicVirtualInterface)
 
 testAllocatePrivateVirtualInterfaceResponse :: VirtualInterface -> TestTree
 testAllocatePrivateVirtualInterfaceResponse = res
     "AllocatePrivateVirtualInterfaceResponse"
     "fixture/AllocatePrivateVirtualInterfaceResponse"
+    directConnect
     (Proxy :: Proxy AllocatePrivateVirtualInterface)
 
 testConfirmConnectionResponse :: ConfirmConnectionResponse -> TestTree
 testConfirmConnectionResponse = res
     "ConfirmConnectionResponse"
     "fixture/ConfirmConnectionResponse"
+    directConnect
     (Proxy :: Proxy ConfirmConnection)
 
 testDescribeVirtualGatewaysResponse :: DescribeVirtualGatewaysResponse -> TestTree
 testDescribeVirtualGatewaysResponse = res
     "DescribeVirtualGatewaysResponse"
     "fixture/DescribeVirtualGatewaysResponse"
+    directConnect
     (Proxy :: Proxy DescribeVirtualGateways)
 
 testConfirmPublicVirtualInterfaceResponse :: ConfirmPublicVirtualInterfaceResponse -> TestTree
 testConfirmPublicVirtualInterfaceResponse = res
     "ConfirmPublicVirtualInterfaceResponse"
     "fixture/ConfirmPublicVirtualInterfaceResponse"
+    directConnect
     (Proxy :: Proxy ConfirmPublicVirtualInterface)
 
 testDescribeVirtualInterfacesResponse :: DescribeVirtualInterfacesResponse -> TestTree
 testDescribeVirtualInterfacesResponse = res
     "DescribeVirtualInterfacesResponse"
     "fixture/DescribeVirtualInterfacesResponse"
+    directConnect
     (Proxy :: Proxy DescribeVirtualInterfaces)
 
 testCreatePrivateVirtualInterfaceResponse :: VirtualInterface -> TestTree
 testCreatePrivateVirtualInterfaceResponse = res
     "CreatePrivateVirtualInterfaceResponse"
     "fixture/CreatePrivateVirtualInterfaceResponse"
+    directConnect
     (Proxy :: Proxy CreatePrivateVirtualInterface)
 
 testDeleteVirtualInterfaceResponse :: DeleteVirtualInterfaceResponse -> TestTree
 testDeleteVirtualInterfaceResponse = res
     "DeleteVirtualInterfaceResponse"
     "fixture/DeleteVirtualInterfaceResponse"
+    directConnect
     (Proxy :: Proxy DeleteVirtualInterface)
 
 testAllocatePublicVirtualInterfaceResponse :: VirtualInterface -> TestTree
 testAllocatePublicVirtualInterfaceResponse = res
     "AllocatePublicVirtualInterfaceResponse"
     "fixture/AllocatePublicVirtualInterfaceResponse"
+    directConnect
     (Proxy :: Proxy AllocatePublicVirtualInterface)
 
 testAllocateConnectionOnInterconnectResponse :: Connection -> TestTree
 testAllocateConnectionOnInterconnectResponse = res
     "AllocateConnectionOnInterconnectResponse"
     "fixture/AllocateConnectionOnInterconnectResponse"
+    directConnect
     (Proxy :: Proxy AllocateConnectionOnInterconnect)
 
 testCreateInterconnectResponse :: Interconnect -> TestTree
 testCreateInterconnectResponse = res
     "CreateInterconnectResponse"
     "fixture/CreateInterconnectResponse"
+    directConnect
     (Proxy :: Proxy CreateInterconnect)
