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-ds.cabal b/amazonka-ds.cabal
--- a/amazonka-ds.cabal
+++ b/amazonka-ds.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-ds
-version:               1.1.0
+version:               1.2.0
 synopsis:              Amazon Directory Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -70,7 +70,7 @@
         , Network.AWS.DirectoryService.Types.Sum
 
     build-depends:
-          amazonka-core == 1.1.0.*
+          amazonka-core == 1.2.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-ds-test
@@ -89,9 +89,9 @@
         , Test.AWS.DirectoryService.Internal
 
     build-depends:
-          amazonka-core == 1.1.0
-        , amazonka-test == 1.1.0
-        , amazonka-ds == 1.1.0
+          amazonka-core == 1.2.0
+        , amazonka-test == 1.2.0
+        , amazonka-ds == 1.2.0
         , base
         , bytestring
         , lens
diff --git a/gen/Network/AWS/DirectoryService.hs b/gen/Network/AWS/DirectoryService.hs
--- a/gen/Network/AWS/DirectoryService.hs
+++ b/gen/Network/AWS/DirectoryService.hs
@@ -20,8 +20,8 @@
 -- /See:/ <http://docs.aws.amazon.com/directoryservice/latest/devguide/welcome.html AWS API Reference>
 module Network.AWS.DirectoryService
     (
-    -- * Service
-      DirectoryService
+    -- * Service Configuration
+      directoryService
 
     -- * Errors
     -- $errors
diff --git a/gen/Network/AWS/DirectoryService/ConnectDirectory.hs b/gen/Network/AWS/DirectoryService/ConnectDirectory.hs
--- a/gen/Network/AWS/DirectoryService/ConnectDirectory.hs
+++ b/gen/Network/AWS/DirectoryService/ConnectDirectory.hs
@@ -118,9 +118,8 @@
 cdConnectSettings = lens _cdConnectSettings (\ s a -> s{_cdConnectSettings = a});
 
 instance AWSRequest ConnectDirectory where
-        type Sv ConnectDirectory = DirectoryService
         type Rs ConnectDirectory = ConnectDirectoryResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveJSON
               (\ s h x ->
@@ -140,10 +139,13 @@
 instance ToJSON ConnectDirectory where
         toJSON ConnectDirectory'{..}
           = object
-              ["ShortName" .= _cdShortName,
-               "Description" .= _cdDescription, "Name" .= _cdName,
-               "Password" .= _cdPassword, "Size" .= _cdSize,
-               "ConnectSettings" .= _cdConnectSettings]
+              (catMaybes
+                 [("ShortName" .=) <$> _cdShortName,
+                  ("Description" .=) <$> _cdDescription,
+                  Just ("Name" .= _cdName),
+                  Just ("Password" .= _cdPassword),
+                  Just ("Size" .= _cdSize),
+                  Just ("ConnectSettings" .= _cdConnectSettings)])
 
 instance ToPath ConnectDirectory where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/CreateAlias.hs b/gen/Network/AWS/DirectoryService/CreateAlias.hs
--- a/gen/Network/AWS/DirectoryService/CreateAlias.hs
+++ b/gen/Network/AWS/DirectoryService/CreateAlias.hs
@@ -87,9 +87,8 @@
 caAlias = lens _caAlias (\ s a -> s{_caAlias = a});
 
 instance AWSRequest CreateAlias where
-        type Sv CreateAlias = DirectoryService
         type Rs CreateAlias = CreateAliasResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveJSON
               (\ s h x ->
@@ -110,8 +109,9 @@
 instance ToJSON CreateAlias where
         toJSON CreateAlias'{..}
           = object
-              ["DirectoryId" .= _caDirectoryId,
-               "Alias" .= _caAlias]
+              (catMaybes
+                 [Just ("DirectoryId" .= _caDirectoryId),
+                  Just ("Alias" .= _caAlias)])
 
 instance ToPath CreateAlias where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/CreateComputer.hs b/gen/Network/AWS/DirectoryService/CreateComputer.hs
--- a/gen/Network/AWS/DirectoryService/CreateComputer.hs
+++ b/gen/Network/AWS/DirectoryService/CreateComputer.hs
@@ -110,9 +110,8 @@
 ccPassword = lens _ccPassword (\ s a -> s{_ccPassword = a}) . _Sensitive;
 
 instance AWSRequest CreateComputer where
-        type Sv CreateComputer = DirectoryService
         type Rs CreateComputer = CreateComputerResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveJSON
               (\ s h x ->
@@ -132,12 +131,13 @@
 instance ToJSON CreateComputer where
         toJSON CreateComputer'{..}
           = object
-              ["ComputerAttributes" .= _ccComputerAttributes,
-               "OrganizationalUnitDistinguishedName" .=
-                 _ccOrganizationalUnitDistinguishedName,
-               "DirectoryId" .= _ccDirectoryId,
-               "ComputerName" .= _ccComputerName,
-               "Password" .= _ccPassword]
+              (catMaybes
+                 [("ComputerAttributes" .=) <$> _ccComputerAttributes,
+                  ("OrganizationalUnitDistinguishedName" .=) <$>
+                    _ccOrganizationalUnitDistinguishedName,
+                  Just ("DirectoryId" .= _ccDirectoryId),
+                  Just ("ComputerName" .= _ccComputerName),
+                  Just ("Password" .= _ccPassword)])
 
 instance ToPath CreateComputer where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/CreateDirectory.hs b/gen/Network/AWS/DirectoryService/CreateDirectory.hs
--- a/gen/Network/AWS/DirectoryService/CreateDirectory.hs
+++ b/gen/Network/AWS/DirectoryService/CreateDirectory.hs
@@ -118,9 +118,8 @@
 cSize = lens _cSize (\ s a -> s{_cSize = a});
 
 instance AWSRequest CreateDirectory where
-        type Sv CreateDirectory = DirectoryService
         type Rs CreateDirectory = CreateDirectoryResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveJSON
               (\ s h x ->
@@ -140,10 +139,13 @@
 instance ToJSON CreateDirectory where
         toJSON CreateDirectory'{..}
           = object
-              ["ShortName" .= _cShortName,
-               "VpcSettings" .= _cVPCSettings,
-               "Description" .= _cDescription, "Name" .= _cName,
-               "Password" .= _cPassword, "Size" .= _cSize]
+              (catMaybes
+                 [("ShortName" .=) <$> _cShortName,
+                  ("VpcSettings" .=) <$> _cVPCSettings,
+                  ("Description" .=) <$> _cDescription,
+                  Just ("Name" .= _cName),
+                  Just ("Password" .= _cPassword),
+                  Just ("Size" .= _cSize)])
 
 instance ToPath CreateDirectory where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/CreateSnapshot.hs b/gen/Network/AWS/DirectoryService/CreateSnapshot.hs
--- a/gen/Network/AWS/DirectoryService/CreateSnapshot.hs
+++ b/gen/Network/AWS/DirectoryService/CreateSnapshot.hs
@@ -79,9 +79,8 @@
 csDirectoryId = lens _csDirectoryId (\ s a -> s{_csDirectoryId = a});
 
 instance AWSRequest CreateSnapshot where
-        type Sv CreateSnapshot = DirectoryService
         type Rs CreateSnapshot = CreateSnapshotResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveJSON
               (\ s h x ->
@@ -101,7 +100,9 @@
 instance ToJSON CreateSnapshot where
         toJSON CreateSnapshot'{..}
           = object
-              ["Name" .= _csName, "DirectoryId" .= _csDirectoryId]
+              (catMaybes
+                 [("Name" .=) <$> _csName,
+                  Just ("DirectoryId" .= _csDirectoryId)])
 
 instance ToPath CreateSnapshot where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/DeleteDirectory.hs b/gen/Network/AWS/DirectoryService/DeleteDirectory.hs
--- a/gen/Network/AWS/DirectoryService/DeleteDirectory.hs
+++ b/gen/Network/AWS/DirectoryService/DeleteDirectory.hs
@@ -68,9 +68,8 @@
 dDirectoryId = lens _dDirectoryId (\ s a -> s{_dDirectoryId = a});
 
 instance AWSRequest DeleteDirectory where
-        type Sv DeleteDirectory = DirectoryService
         type Rs DeleteDirectory = DeleteDirectoryResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveJSON
               (\ s h x ->
@@ -89,7 +88,8 @@
 
 instance ToJSON DeleteDirectory where
         toJSON DeleteDirectory'{..}
-          = object ["DirectoryId" .= _dDirectoryId]
+          = object
+              (catMaybes [Just ("DirectoryId" .= _dDirectoryId)])
 
 instance ToPath DeleteDirectory where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/DeleteSnapshot.hs b/gen/Network/AWS/DirectoryService/DeleteSnapshot.hs
--- a/gen/Network/AWS/DirectoryService/DeleteSnapshot.hs
+++ b/gen/Network/AWS/DirectoryService/DeleteSnapshot.hs
@@ -68,9 +68,8 @@
 dsSnapshotId = lens _dsSnapshotId (\ s a -> s{_dsSnapshotId = a});
 
 instance AWSRequest DeleteSnapshot where
-        type Sv DeleteSnapshot = DirectoryService
         type Rs DeleteSnapshot = DeleteSnapshotResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveJSON
               (\ s h x ->
@@ -89,7 +88,8 @@
 
 instance ToJSON DeleteSnapshot where
         toJSON DeleteSnapshot'{..}
-          = object ["SnapshotId" .= _dsSnapshotId]
+          = object
+              (catMaybes [Just ("SnapshotId" .= _dsSnapshotId)])
 
 instance ToPath DeleteSnapshot where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/DescribeDirectories.hs b/gen/Network/AWS/DirectoryService/DescribeDirectories.hs
--- a/gen/Network/AWS/DirectoryService/DescribeDirectories.hs
+++ b/gen/Network/AWS/DirectoryService/DescribeDirectories.hs
@@ -106,10 +106,9 @@
 ddLimit = lens _ddLimit (\ s a -> s{_ddLimit = a}) . mapping _Nat;
 
 instance AWSRequest DescribeDirectories where
-        type Sv DescribeDirectories = DirectoryService
         type Rs DescribeDirectories =
              DescribeDirectoriesResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveJSON
               (\ s h x ->
@@ -131,9 +130,10 @@
 instance ToJSON DescribeDirectories where
         toJSON DescribeDirectories'{..}
           = object
-              ["NextToken" .= _ddNextToken,
-               "DirectoryIds" .= _ddDirectoryIds,
-               "Limit" .= _ddLimit]
+              (catMaybes
+                 [("NextToken" .=) <$> _ddNextToken,
+                  ("DirectoryIds" .=) <$> _ddDirectoryIds,
+                  ("Limit" .=) <$> _ddLimit])
 
 instance ToPath DescribeDirectories where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/DescribeSnapshots.hs b/gen/Network/AWS/DirectoryService/DescribeSnapshots.hs
--- a/gen/Network/AWS/DirectoryService/DescribeSnapshots.hs
+++ b/gen/Network/AWS/DirectoryService/DescribeSnapshots.hs
@@ -107,9 +107,8 @@
 dsLimit = lens _dsLimit (\ s a -> s{_dsLimit = a}) . mapping _Nat;
 
 instance AWSRequest DescribeSnapshots where
-        type Sv DescribeSnapshots = DirectoryService
         type Rs DescribeSnapshots = DescribeSnapshotsResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveJSON
               (\ s h x ->
@@ -131,9 +130,11 @@
 instance ToJSON DescribeSnapshots where
         toJSON DescribeSnapshots'{..}
           = object
-              ["DirectoryId" .= _dsDirectoryId,
-               "NextToken" .= _dsNextToken,
-               "SnapshotIds" .= _dsSnapshotIds, "Limit" .= _dsLimit]
+              (catMaybes
+                 [("DirectoryId" .=) <$> _dsDirectoryId,
+                  ("NextToken" .=) <$> _dsNextToken,
+                  ("SnapshotIds" .=) <$> _dsSnapshotIds,
+                  ("Limit" .=) <$> _dsLimit])
 
 instance ToPath DescribeSnapshots where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/DisableRadius.hs b/gen/Network/AWS/DirectoryService/DisableRadius.hs
--- a/gen/Network/AWS/DirectoryService/DisableRadius.hs
+++ b/gen/Network/AWS/DirectoryService/DisableRadius.hs
@@ -68,9 +68,8 @@
 drDirectoryId = lens _drDirectoryId (\ s a -> s{_drDirectoryId = a});
 
 instance AWSRequest DisableRadius where
-        type Sv DisableRadius = DirectoryService
         type Rs DisableRadius = DisableRadiusResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveEmpty
               (\ s h x ->
@@ -88,7 +87,8 @@
 
 instance ToJSON DisableRadius where
         toJSON DisableRadius'{..}
-          = object ["DirectoryId" .= _drDirectoryId]
+          = object
+              (catMaybes [Just ("DirectoryId" .= _drDirectoryId)])
 
 instance ToPath DisableRadius where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/DisableSSO.hs b/gen/Network/AWS/DirectoryService/DisableSSO.hs
--- a/gen/Network/AWS/DirectoryService/DisableSSO.hs
+++ b/gen/Network/AWS/DirectoryService/DisableSSO.hs
@@ -95,9 +95,8 @@
 dssoDirectoryId = lens _dssoDirectoryId (\ s a -> s{_dssoDirectoryId = a});
 
 instance AWSRequest DisableSSO where
-        type Sv DisableSSO = DirectoryService
         type Rs DisableSSO = DisableSSOResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveEmpty
               (\ s h x ->
@@ -116,9 +115,10 @@
 instance ToJSON DisableSSO where
         toJSON DisableSSO'{..}
           = object
-              ["UserName" .= _dssoUserName,
-               "Password" .= _dssoPassword,
-               "DirectoryId" .= _dssoDirectoryId]
+              (catMaybes
+                 [("UserName" .=) <$> _dssoUserName,
+                  ("Password" .=) <$> _dssoPassword,
+                  Just ("DirectoryId" .= _dssoDirectoryId)])
 
 instance ToPath DisableSSO where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/EnableRadius.hs b/gen/Network/AWS/DirectoryService/EnableRadius.hs
--- a/gen/Network/AWS/DirectoryService/EnableRadius.hs
+++ b/gen/Network/AWS/DirectoryService/EnableRadius.hs
@@ -79,9 +79,8 @@
 erRadiusSettings = lens _erRadiusSettings (\ s a -> s{_erRadiusSettings = a});
 
 instance AWSRequest EnableRadius where
-        type Sv EnableRadius = DirectoryService
         type Rs EnableRadius = EnableRadiusResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveEmpty
               (\ s h x ->
@@ -100,8 +99,9 @@
 instance ToJSON EnableRadius where
         toJSON EnableRadius'{..}
           = object
-              ["DirectoryId" .= _erDirectoryId,
-               "RadiusSettings" .= _erRadiusSettings]
+              (catMaybes
+                 [Just ("DirectoryId" .= _erDirectoryId),
+                  Just ("RadiusSettings" .= _erRadiusSettings)])
 
 instance ToPath EnableRadius where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/EnableSSO.hs b/gen/Network/AWS/DirectoryService/EnableSSO.hs
--- a/gen/Network/AWS/DirectoryService/EnableSSO.hs
+++ b/gen/Network/AWS/DirectoryService/EnableSSO.hs
@@ -95,9 +95,8 @@
 esDirectoryId = lens _esDirectoryId (\ s a -> s{_esDirectoryId = a});
 
 instance AWSRequest EnableSSO where
-        type Sv EnableSSO = DirectoryService
         type Rs EnableSSO = EnableSSOResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveEmpty
               (\ s h x ->
@@ -116,9 +115,10 @@
 instance ToJSON EnableSSO where
         toJSON EnableSSO'{..}
           = object
-              ["UserName" .= _esUserName,
-               "Password" .= _esPassword,
-               "DirectoryId" .= _esDirectoryId]
+              (catMaybes
+                 [("UserName" .=) <$> _esUserName,
+                  ("Password" .=) <$> _esPassword,
+                  Just ("DirectoryId" .= _esDirectoryId)])
 
 instance ToPath EnableSSO where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/GetDirectoryLimits.hs b/gen/Network/AWS/DirectoryService/GetDirectoryLimits.hs
--- a/gen/Network/AWS/DirectoryService/GetDirectoryLimits.hs
+++ b/gen/Network/AWS/DirectoryService/GetDirectoryLimits.hs
@@ -55,10 +55,9 @@
 getDirectoryLimits = GetDirectoryLimits'
 
 instance AWSRequest GetDirectoryLimits where
-        type Sv GetDirectoryLimits = DirectoryService
         type Rs GetDirectoryLimits =
              GetDirectoryLimitsResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/DirectoryService/GetSnapshotLimits.hs b/gen/Network/AWS/DirectoryService/GetSnapshotLimits.hs
--- a/gen/Network/AWS/DirectoryService/GetSnapshotLimits.hs
+++ b/gen/Network/AWS/DirectoryService/GetSnapshotLimits.hs
@@ -68,9 +68,8 @@
 gslDirectoryId = lens _gslDirectoryId (\ s a -> s{_gslDirectoryId = a});
 
 instance AWSRequest GetSnapshotLimits where
-        type Sv GetSnapshotLimits = DirectoryService
         type Rs GetSnapshotLimits = GetSnapshotLimitsResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveJSON
               (\ s h x ->
@@ -89,7 +88,8 @@
 
 instance ToJSON GetSnapshotLimits where
         toJSON GetSnapshotLimits'{..}
-          = object ["DirectoryId" .= _gslDirectoryId]
+          = object
+              (catMaybes [Just ("DirectoryId" .= _gslDirectoryId)])
 
 instance ToPath GetSnapshotLimits where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/RestoreFromSnapshot.hs b/gen/Network/AWS/DirectoryService/RestoreFromSnapshot.hs
--- a/gen/Network/AWS/DirectoryService/RestoreFromSnapshot.hs
+++ b/gen/Network/AWS/DirectoryService/RestoreFromSnapshot.hs
@@ -76,10 +76,9 @@
 rfsSnapshotId = lens _rfsSnapshotId (\ s a -> s{_rfsSnapshotId = a});
 
 instance AWSRequest RestoreFromSnapshot where
-        type Sv RestoreFromSnapshot = DirectoryService
         type Rs RestoreFromSnapshot =
              RestoreFromSnapshotResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveEmpty
               (\ s h x ->
@@ -97,7 +96,8 @@
 
 instance ToJSON RestoreFromSnapshot where
         toJSON RestoreFromSnapshot'{..}
-          = object ["SnapshotId" .= _rfsSnapshotId]
+          = object
+              (catMaybes [Just ("SnapshotId" .= _rfsSnapshotId)])
 
 instance ToPath RestoreFromSnapshot where
         toPath = const "/"
diff --git a/gen/Network/AWS/DirectoryService/Types.hs b/gen/Network/AWS/DirectoryService/Types.hs
--- a/gen/Network/AWS/DirectoryService/Types.hs
+++ b/gen/Network/AWS/DirectoryService/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.DirectoryService.Types
     (
-    -- * Service
-      DirectoryService
+    -- * Service Configuration
+      directoryService
 
     -- * Errors
     , _AuthenticationFailedException
@@ -163,39 +162,36 @@
 import           Network.AWS.Prelude
 import           Network.AWS.Sign.V4
 
--- | Version @2015-04-16@ of the Amazon Directory Service SDK.
-data DirectoryService
-
-instance AWSService DirectoryService where
-    type Sg DirectoryService = V4
-    service = const svc
-      where
-        svc =
-            Service
-            { _svcAbbrev = "DirectoryService"
-            , _svcPrefix = "ds"
-            , _svcVersion = "2015-04-16"
-            , _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 '2015-04-16' of the Amazon Directory Service SDK configuration.
+directoryService :: Service
+directoryService =
+    Service
+    { _svcAbbrev = "DirectoryService"
+    , _svcSigner = v4
+    , _svcPrefix = "ds"
+    , _svcVersion = "2015-04-16"
+    , _svcEndpoint = defaultEndpoint directoryService
+    , _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
 
 -- | An authentication error occurred.
 _AuthenticationFailedException :: AsError a => Getting (First ServiceError) a ServiceError
diff --git a/gen/Network/AWS/DirectoryService/Types/Product.hs b/gen/Network/AWS/DirectoryService/Types/Product.hs
--- a/gen/Network/AWS/DirectoryService/Types/Product.hs
+++ b/gen/Network/AWS/DirectoryService/Types/Product.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE OverloadedStrings  #-}
 {-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
@@ -60,7 +59,9 @@
 
 instance ToJSON Attribute where
         toJSON Attribute'{..}
-          = object ["Value" .= _aValue, "Name" .= _aName]
+          = object
+              (catMaybes
+                 [("Value" .=) <$> _aValue, ("Name" .=) <$> _aName])
 
 -- | Contains information about a computer account in a directory.
 --
@@ -172,9 +173,11 @@
 instance ToJSON DirectoryConnectSettings where
         toJSON DirectoryConnectSettings'{..}
           = object
-              ["VpcId" .= _dcsVPCId, "SubnetIds" .= _dcsSubnetIds,
-               "CustomerDnsIps" .= _dcsCustomerDNSIPs,
-               "CustomerUserName" .= _dcsCustomerUserName]
+              (catMaybes
+                 [Just ("VpcId" .= _dcsVPCId),
+                  Just ("SubnetIds" .= _dcsSubnetIds),
+                  Just ("CustomerDnsIps" .= _dcsCustomerDNSIPs),
+                  Just ("CustomerUserName" .= _dcsCustomerUserName)])
 
 -- | Contains information about an AD Connector directory.
 --
@@ -558,7 +561,9 @@
 instance ToJSON DirectoryVPCSettings where
         toJSON DirectoryVPCSettings'{..}
           = object
-              ["VpcId" .= _dvsVPCId, "SubnetIds" .= _dvsSubnetIds]
+              (catMaybes
+                 [Just ("VpcId" .= _dvsVPCId),
+                  Just ("SubnetIds" .= _dvsSubnetIds)])
 
 -- | Contains information about a Simple AD directory.
 --
@@ -720,15 +725,16 @@
 instance ToJSON RadiusSettings where
         toJSON RadiusSettings'{..}
           = object
-              ["DisplayLabel" .= _rsDisplayLabel,
-               "RadiusServers" .= _rsRadiusServers,
-               "RadiusRetries" .= _rsRadiusRetries,
-               "AuthenticationProtocol" .=
-                 _rsAuthenticationProtocol,
-               "UseSameUsername" .= _rsUseSameUsername,
-               "SharedSecret" .= _rsSharedSecret,
-               "RadiusTimeout" .= _rsRadiusTimeout,
-               "RadiusPort" .= _rsRadiusPort]
+              (catMaybes
+                 [("DisplayLabel" .=) <$> _rsDisplayLabel,
+                  ("RadiusServers" .=) <$> _rsRadiusServers,
+                  ("RadiusRetries" .=) <$> _rsRadiusRetries,
+                  ("AuthenticationProtocol" .=) <$>
+                    _rsAuthenticationProtocol,
+                  ("UseSameUsername" .=) <$> _rsUseSameUsername,
+                  ("SharedSecret" .=) <$> _rsSharedSecret,
+                  ("RadiusTimeout" .=) <$> _rsRadiusTimeout,
+                  ("RadiusPort" .=) <$> _rsRadiusPort])
 
 -- | Describes a directory snapshot.
 --
diff --git a/gen/Network/AWS/DirectoryService/UpdateRadius.hs b/gen/Network/AWS/DirectoryService/UpdateRadius.hs
--- a/gen/Network/AWS/DirectoryService/UpdateRadius.hs
+++ b/gen/Network/AWS/DirectoryService/UpdateRadius.hs
@@ -80,9 +80,8 @@
 urRadiusSettings = lens _urRadiusSettings (\ s a -> s{_urRadiusSettings = a});
 
 instance AWSRequest UpdateRadius where
-        type Sv UpdateRadius = DirectoryService
         type Rs UpdateRadius = UpdateRadiusResponse
-        request = postJSON
+        request = postJSON directoryService
         response
           = receiveEmpty
               (\ s h x ->
@@ -101,8 +100,9 @@
 instance ToJSON UpdateRadius where
         toJSON UpdateRadius'{..}
           = object
-              ["DirectoryId" .= _urDirectoryId,
-               "RadiusSettings" .= _urRadiusSettings]
+              (catMaybes
+                 [Just ("DirectoryId" .= _urDirectoryId),
+                  Just ("RadiusSettings" .= _urRadiusSettings)])
 
 instance ToPath UpdateRadius where
         toPath = const "/"
diff --git a/test/Test/AWS/Gen/DirectoryService.hs b/test/Test/AWS/Gen/DirectoryService.hs
--- a/test/Test/AWS/Gen/DirectoryService.hs
+++ b/test/Test/AWS/Gen/DirectoryService.hs
@@ -229,100 +229,117 @@
 testGetSnapshotLimitsResponse = res
     "GetSnapshotLimitsResponse"
     "fixture/GetSnapshotLimitsResponse"
+    directoryService
     (Proxy :: Proxy GetSnapshotLimits)
 
 testConnectDirectoryResponse :: ConnectDirectoryResponse -> TestTree
 testConnectDirectoryResponse = res
     "ConnectDirectoryResponse"
     "fixture/ConnectDirectoryResponse"
+    directoryService
     (Proxy :: Proxy ConnectDirectory)
 
 testDescribeDirectoriesResponse :: DescribeDirectoriesResponse -> TestTree
 testDescribeDirectoriesResponse = res
     "DescribeDirectoriesResponse"
     "fixture/DescribeDirectoriesResponse"
+    directoryService
     (Proxy :: Proxy DescribeDirectories)
 
 testCreateAliasResponse :: CreateAliasResponse -> TestTree
 testCreateAliasResponse = res
     "CreateAliasResponse"
     "fixture/CreateAliasResponse"
+    directoryService
     (Proxy :: Proxy CreateAlias)
 
 testCreateDirectoryResponse :: CreateDirectoryResponse -> TestTree
 testCreateDirectoryResponse = res
     "CreateDirectoryResponse"
     "fixture/CreateDirectoryResponse"
+    directoryService
     (Proxy :: Proxy CreateDirectory)
 
 testEnableSSOResponse :: EnableSSOResponse -> TestTree
 testEnableSSOResponse = res
     "EnableSSOResponse"
     "fixture/EnableSSOResponse"
+    directoryService
     (Proxy :: Proxy EnableSSO)
 
 testEnableRadiusResponse :: EnableRadiusResponse -> TestTree
 testEnableRadiusResponse = res
     "EnableRadiusResponse"
     "fixture/EnableRadiusResponse"
+    directoryService
     (Proxy :: Proxy EnableRadius)
 
 testDisableRadiusResponse :: DisableRadiusResponse -> TestTree
 testDisableRadiusResponse = res
     "DisableRadiusResponse"
     "fixture/DisableRadiusResponse"
+    directoryService
     (Proxy :: Proxy DisableRadius)
 
 testDescribeSnapshotsResponse :: DescribeSnapshotsResponse -> TestTree
 testDescribeSnapshotsResponse = res
     "DescribeSnapshotsResponse"
     "fixture/DescribeSnapshotsResponse"
+    directoryService
     (Proxy :: Proxy DescribeSnapshots)
 
 testRestoreFromSnapshotResponse :: RestoreFromSnapshotResponse -> TestTree
 testRestoreFromSnapshotResponse = res
     "RestoreFromSnapshotResponse"
     "fixture/RestoreFromSnapshotResponse"
+    directoryService
     (Proxy :: Proxy RestoreFromSnapshot)
 
 testDeleteSnapshotResponse :: DeleteSnapshotResponse -> TestTree
 testDeleteSnapshotResponse = res
     "DeleteSnapshotResponse"
     "fixture/DeleteSnapshotResponse"
+    directoryService
     (Proxy :: Proxy DeleteSnapshot)
 
 testCreateSnapshotResponse :: CreateSnapshotResponse -> TestTree
 testCreateSnapshotResponse = res
     "CreateSnapshotResponse"
     "fixture/CreateSnapshotResponse"
+    directoryService
     (Proxy :: Proxy CreateSnapshot)
 
 testDeleteDirectoryResponse :: DeleteDirectoryResponse -> TestTree
 testDeleteDirectoryResponse = res
     "DeleteDirectoryResponse"
     "fixture/DeleteDirectoryResponse"
+    directoryService
     (Proxy :: Proxy DeleteDirectory)
 
 testDisableSSOResponse :: DisableSSOResponse -> TestTree
 testDisableSSOResponse = res
     "DisableSSOResponse"
     "fixture/DisableSSOResponse"
+    directoryService
     (Proxy :: Proxy DisableSSO)
 
 testCreateComputerResponse :: CreateComputerResponse -> TestTree
 testCreateComputerResponse = res
     "CreateComputerResponse"
     "fixture/CreateComputerResponse"
+    directoryService
     (Proxy :: Proxy CreateComputer)
 
 testGetDirectoryLimitsResponse :: GetDirectoryLimitsResponse -> TestTree
 testGetDirectoryLimitsResponse = res
     "GetDirectoryLimitsResponse"
     "fixture/GetDirectoryLimitsResponse"
+    directoryService
     (Proxy :: Proxy GetDirectoryLimits)
 
 testUpdateRadiusResponse :: UpdateRadiusResponse -> TestTree
 testUpdateRadiusResponse = res
     "UpdateRadiusResponse"
     "fixture/UpdateRadiusResponse"
+    directoryService
     (Proxy :: Proxy UpdateRadius)
