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-glacier.cabal b/amazonka-glacier.cabal
--- a/amazonka-glacier.cabal
+++ b/amazonka-glacier.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-glacier
-version:               1.1.0
+version:               1.2.0
 synopsis:              Amazon Glacier SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -113,7 +113,7 @@
         , Network.AWS.Glacier.Types.Sum
 
     build-depends:
-          amazonka-core == 1.1.0.*
+          amazonka-core == 1.2.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-glacier-test
@@ -132,9 +132,9 @@
         , Test.AWS.Glacier.Internal
 
     build-depends:
-          amazonka-core == 1.1.0
-        , amazonka-test == 1.1.0
-        , amazonka-glacier == 1.1.0
+          amazonka-core == 1.2.0
+        , amazonka-test == 1.2.0
+        , amazonka-glacier == 1.2.0
         , base
         , bytestring
         , lens
diff --git a/gen/Network/AWS/Glacier.hs b/gen/Network/AWS/Glacier.hs
--- a/gen/Network/AWS/Glacier.hs
+++ b/gen/Network/AWS/Glacier.hs
@@ -50,8 +50,8 @@
 -- /See:/ <http://docs.aws.amazon.com/amazonglacier/latest/dev/introduction.html AWS API Reference>
 module Network.AWS.Glacier
     (
-    -- * Service
-      Glacier
+    -- * Service Configuration
+      glacier
 
     -- * Errors
     -- $errors
diff --git a/gen/Network/AWS/Glacier/AbortMultipartUpload.hs b/gen/Network/AWS/Glacier/AbortMultipartUpload.hs
--- a/gen/Network/AWS/Glacier/AbortMultipartUpload.hs
+++ b/gen/Network/AWS/Glacier/AbortMultipartUpload.hs
@@ -116,10 +116,9 @@
 amuUploadId = lens _amuUploadId (\ s a -> s{_amuUploadId = a});
 
 instance AWSRequest AbortMultipartUpload where
-        type Sv AbortMultipartUpload = Glacier
         type Rs AbortMultipartUpload =
              AbortMultipartUploadResponse
-        request = delete
+        request = delete glacier
         response = receiveNull AbortMultipartUploadResponse'
 
 instance ToHeaders AbortMultipartUpload where
diff --git a/gen/Network/AWS/Glacier/AbortVaultLock.hs b/gen/Network/AWS/Glacier/AbortVaultLock.hs
--- a/gen/Network/AWS/Glacier/AbortVaultLock.hs
+++ b/gen/Network/AWS/Glacier/AbortVaultLock.hs
@@ -98,9 +98,8 @@
 avlVaultName = lens _avlVaultName (\ s a -> s{_avlVaultName = a});
 
 instance AWSRequest AbortVaultLock where
-        type Sv AbortVaultLock = Glacier
         type Rs AbortVaultLock = AbortVaultLockResponse
-        request = delete
+        request = delete glacier
         response = receiveNull AbortVaultLockResponse'
 
 instance ToHeaders AbortVaultLock where
diff --git a/gen/Network/AWS/Glacier/AddTagsToVault.hs b/gen/Network/AWS/Glacier/AddTagsToVault.hs
--- a/gen/Network/AWS/Glacier/AddTagsToVault.hs
+++ b/gen/Network/AWS/Glacier/AddTagsToVault.hs
@@ -95,9 +95,8 @@
 attvVaultName = lens _attvVaultName (\ s a -> s{_attvVaultName = a});
 
 instance AWSRequest AddTagsToVault where
-        type Sv AddTagsToVault = Glacier
         type Rs AddTagsToVault = AddTagsToVaultResponse
-        request = postJSON
+        request = postJSON glacier
         response = receiveNull AddTagsToVaultResponse'
 
 instance ToHeaders AddTagsToVault where
@@ -105,7 +104,7 @@
 
 instance ToJSON AddTagsToVault where
         toJSON AddTagsToVault'{..}
-          = object ["Tags" .= _attvTags]
+          = object (catMaybes [("Tags" .=) <$> _attvTags])
 
 instance ToPath AddTagsToVault where
         toPath AddTagsToVault'{..}
diff --git a/gen/Network/AWS/Glacier/CompleteMultipartUpload.hs b/gen/Network/AWS/Glacier/CompleteMultipartUpload.hs
--- a/gen/Network/AWS/Glacier/CompleteMultipartUpload.hs
+++ b/gen/Network/AWS/Glacier/CompleteMultipartUpload.hs
@@ -166,10 +166,9 @@
 cmuUploadId = lens _cmuUploadId (\ s a -> s{_cmuUploadId = a});
 
 instance AWSRequest CompleteMultipartUpload where
-        type Sv CompleteMultipartUpload = Glacier
         type Rs CompleteMultipartUpload =
              ArchiveCreationOutput
-        request = postJSON
+        request = postJSON glacier
         response
           = receiveEmpty
               (\ s h x ->
diff --git a/gen/Network/AWS/Glacier/CompleteVaultLock.hs b/gen/Network/AWS/Glacier/CompleteVaultLock.hs
--- a/gen/Network/AWS/Glacier/CompleteVaultLock.hs
+++ b/gen/Network/AWS/Glacier/CompleteVaultLock.hs
@@ -108,9 +108,8 @@
 cvlLockId = lens _cvlLockId (\ s a -> s{_cvlLockId = a});
 
 instance AWSRequest CompleteVaultLock where
-        type Sv CompleteVaultLock = Glacier
         type Rs CompleteVaultLock = CompleteVaultLockResponse
-        request = postJSON
+        request = postJSON glacier
         response = receiveNull CompleteVaultLockResponse'
 
 instance ToHeaders CompleteVaultLock where
diff --git a/gen/Network/AWS/Glacier/CreateVault.hs b/gen/Network/AWS/Glacier/CreateVault.hs
--- a/gen/Network/AWS/Glacier/CreateVault.hs
+++ b/gen/Network/AWS/Glacier/CreateVault.hs
@@ -108,9 +108,8 @@
 cvVaultName = lens _cvVaultName (\ s a -> s{_cvVaultName = a});
 
 instance AWSRequest CreateVault where
-        type Sv CreateVault = Glacier
         type Rs CreateVault = CreateVaultResponse
-        request = putJSON
+        request = putJSON glacier
         response
           = receiveEmpty
               (\ s h x ->
diff --git a/gen/Network/AWS/Glacier/DeleteArchive.hs b/gen/Network/AWS/Glacier/DeleteArchive.hs
--- a/gen/Network/AWS/Glacier/DeleteArchive.hs
+++ b/gen/Network/AWS/Glacier/DeleteArchive.hs
@@ -114,9 +114,8 @@
 daArchiveId = lens _daArchiveId (\ s a -> s{_daArchiveId = a});
 
 instance AWSRequest DeleteArchive where
-        type Sv DeleteArchive = Glacier
         type Rs DeleteArchive = DeleteArchiveResponse
-        request = delete
+        request = delete glacier
         response = receiveNull DeleteArchiveResponse'
 
 instance ToHeaders DeleteArchive where
diff --git a/gen/Network/AWS/Glacier/DeleteVault.hs b/gen/Network/AWS/Glacier/DeleteVault.hs
--- a/gen/Network/AWS/Glacier/DeleteVault.hs
+++ b/gen/Network/AWS/Glacier/DeleteVault.hs
@@ -103,9 +103,8 @@
 dVaultName = lens _dVaultName (\ s a -> s{_dVaultName = a});
 
 instance AWSRequest DeleteVault where
-        type Sv DeleteVault = Glacier
         type Rs DeleteVault = DeleteVaultResponse
-        request = delete
+        request = delete glacier
         response = receiveNull DeleteVaultResponse'
 
 instance ToHeaders DeleteVault where
diff --git a/gen/Network/AWS/Glacier/DeleteVaultAccessPolicy.hs b/gen/Network/AWS/Glacier/DeleteVaultAccessPolicy.hs
--- a/gen/Network/AWS/Glacier/DeleteVaultAccessPolicy.hs
+++ b/gen/Network/AWS/Glacier/DeleteVaultAccessPolicy.hs
@@ -88,10 +88,9 @@
 dvapVaultName = lens _dvapVaultName (\ s a -> s{_dvapVaultName = a});
 
 instance AWSRequest DeleteVaultAccessPolicy where
-        type Sv DeleteVaultAccessPolicy = Glacier
         type Rs DeleteVaultAccessPolicy =
              DeleteVaultAccessPolicyResponse
-        request = delete
+        request = delete glacier
         response
           = receiveNull DeleteVaultAccessPolicyResponse'
 
diff --git a/gen/Network/AWS/Glacier/DeleteVaultNotifications.hs b/gen/Network/AWS/Glacier/DeleteVaultNotifications.hs
--- a/gen/Network/AWS/Glacier/DeleteVaultNotifications.hs
+++ b/gen/Network/AWS/Glacier/DeleteVaultNotifications.hs
@@ -96,10 +96,9 @@
 dvnVaultName = lens _dvnVaultName (\ s a -> s{_dvnVaultName = a});
 
 instance AWSRequest DeleteVaultNotifications where
-        type Sv DeleteVaultNotifications = Glacier
         type Rs DeleteVaultNotifications =
              DeleteVaultNotificationsResponse
-        request = delete
+        request = delete glacier
         response
           = receiveNull DeleteVaultNotificationsResponse'
 
diff --git a/gen/Network/AWS/Glacier/DescribeJob.hs b/gen/Network/AWS/Glacier/DescribeJob.hs
--- a/gen/Network/AWS/Glacier/DescribeJob.hs
+++ b/gen/Network/AWS/Glacier/DescribeJob.hs
@@ -129,9 +129,8 @@
 djJobId = lens _djJobId (\ s a -> s{_djJobId = a});
 
 instance AWSRequest DescribeJob where
-        type Sv DescribeJob = Glacier
         type Rs DescribeJob = GlacierJobDescription
-        request = get
+        request = get glacier
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders DescribeJob where
diff --git a/gen/Network/AWS/Glacier/DescribeVault.hs b/gen/Network/AWS/Glacier/DescribeVault.hs
--- a/gen/Network/AWS/Glacier/DescribeVault.hs
+++ b/gen/Network/AWS/Glacier/DescribeVault.hs
@@ -108,9 +108,8 @@
 dvVaultName = lens _dvVaultName (\ s a -> s{_dvVaultName = a});
 
 instance AWSRequest DescribeVault where
-        type Sv DescribeVault = Glacier
         type Rs DescribeVault = DescribeVaultOutput
-        request = get
+        request = get glacier
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders DescribeVault where
diff --git a/gen/Network/AWS/Glacier/GetDataRetrievalPolicy.hs b/gen/Network/AWS/Glacier/GetDataRetrievalPolicy.hs
--- a/gen/Network/AWS/Glacier/GetDataRetrievalPolicy.hs
+++ b/gen/Network/AWS/Glacier/GetDataRetrievalPolicy.hs
@@ -77,10 +77,9 @@
 gdrpAccountId = lens _gdrpAccountId (\ s a -> s{_gdrpAccountId = a});
 
 instance AWSRequest GetDataRetrievalPolicy where
-        type Sv GetDataRetrievalPolicy = Glacier
         type Rs GetDataRetrievalPolicy =
              GetDataRetrievalPolicyResponse
-        request = get
+        request = get glacier
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/Glacier/GetJobOutput.hs b/gen/Network/AWS/Glacier/GetJobOutput.hs
--- a/gen/Network/AWS/Glacier/GetJobOutput.hs
+++ b/gen/Network/AWS/Glacier/GetJobOutput.hs
@@ -155,9 +155,8 @@
 gjoJobId = lens _gjoJobId (\ s a -> s{_gjoJobId = a});
 
 instance AWSRequest GetJobOutput where
-        type Sv GetJobOutput = Glacier
         type Rs GetJobOutput = GetJobOutputResponse
-        request = get
+        request = get glacier
         response
           = receiveBody
               (\ s h x ->
diff --git a/gen/Network/AWS/Glacier/GetVaultAccessPolicy.hs b/gen/Network/AWS/Glacier/GetVaultAccessPolicy.hs
--- a/gen/Network/AWS/Glacier/GetVaultAccessPolicy.hs
+++ b/gen/Network/AWS/Glacier/GetVaultAccessPolicy.hs
@@ -88,10 +88,9 @@
 gvapVaultName = lens _gvapVaultName (\ s a -> s{_gvapVaultName = a});
 
 instance AWSRequest GetVaultAccessPolicy where
-        type Sv GetVaultAccessPolicy = Glacier
         type Rs GetVaultAccessPolicy =
              GetVaultAccessPolicyResponse
-        request = get
+        request = get glacier
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/Glacier/GetVaultLock.hs b/gen/Network/AWS/Glacier/GetVaultLock.hs
--- a/gen/Network/AWS/Glacier/GetVaultLock.hs
+++ b/gen/Network/AWS/Glacier/GetVaultLock.hs
@@ -108,9 +108,8 @@
 gvlVaultName = lens _gvlVaultName (\ s a -> s{_gvlVaultName = a});
 
 instance AWSRequest GetVaultLock where
-        type Sv GetVaultLock = Glacier
         type Rs GetVaultLock = GetVaultLockResponse
-        request = get
+        request = get glacier
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/Glacier/GetVaultNotifications.hs b/gen/Network/AWS/Glacier/GetVaultNotifications.hs
--- a/gen/Network/AWS/Glacier/GetVaultNotifications.hs
+++ b/gen/Network/AWS/Glacier/GetVaultNotifications.hs
@@ -102,10 +102,9 @@
 gvnVaultName = lens _gvnVaultName (\ s a -> s{_gvnVaultName = a});
 
 instance AWSRequest GetVaultNotifications where
-        type Sv GetVaultNotifications = Glacier
         type Rs GetVaultNotifications =
              GetVaultNotificationsResponse
-        request = get
+        request = get glacier
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/Glacier/InitiateJob.hs b/gen/Network/AWS/Glacier/InitiateJob.hs
--- a/gen/Network/AWS/Glacier/InitiateJob.hs
+++ b/gen/Network/AWS/Glacier/InitiateJob.hs
@@ -219,9 +219,8 @@
 ijVaultName = lens _ijVaultName (\ s a -> s{_ijVaultName = a});
 
 instance AWSRequest InitiateJob where
-        type Sv InitiateJob = Glacier
         type Rs InitiateJob = InitiateJobResponse
-        request = postJSON
+        request = postJSON glacier
         response
           = receiveEmpty
               (\ s h x ->
@@ -234,7 +233,9 @@
 
 instance ToJSON InitiateJob where
         toJSON InitiateJob'{..}
-          = object ["jobParameters" .= _ijJobParameters]
+          = object
+              (catMaybes
+                 [("jobParameters" .=) <$> _ijJobParameters])
 
 instance ToPath InitiateJob where
         toPath InitiateJob'{..}
diff --git a/gen/Network/AWS/Glacier/InitiateMultipartUpload.hs b/gen/Network/AWS/Glacier/InitiateMultipartUpload.hs
--- a/gen/Network/AWS/Glacier/InitiateMultipartUpload.hs
+++ b/gen/Network/AWS/Glacier/InitiateMultipartUpload.hs
@@ -144,10 +144,9 @@
 imuVaultName = lens _imuVaultName (\ s a -> s{_imuVaultName = a});
 
 instance AWSRequest InitiateMultipartUpload where
-        type Sv InitiateMultipartUpload = Glacier
         type Rs InitiateMultipartUpload =
              InitiateMultipartUploadResponse
-        request = postJSON
+        request = postJSON glacier
         response
           = receiveEmpty
               (\ s h x ->
diff --git a/gen/Network/AWS/Glacier/InitiateVaultLock.hs b/gen/Network/AWS/Glacier/InitiateVaultLock.hs
--- a/gen/Network/AWS/Glacier/InitiateVaultLock.hs
+++ b/gen/Network/AWS/Glacier/InitiateVaultLock.hs
@@ -126,9 +126,8 @@
 ivlVaultName = lens _ivlVaultName (\ s a -> s{_ivlVaultName = a});
 
 instance AWSRequest InitiateVaultLock where
-        type Sv InitiateVaultLock = Glacier
         type Rs InitiateVaultLock = InitiateVaultLockResponse
-        request = postJSON
+        request = postJSON glacier
         response
           = receiveEmpty
               (\ s h x ->
@@ -140,7 +139,7 @@
 
 instance ToJSON InitiateVaultLock where
         toJSON InitiateVaultLock'{..}
-          = object ["policy" .= _ivlPolicy]
+          = object (catMaybes [("policy" .=) <$> _ivlPolicy])
 
 instance ToPath InitiateVaultLock where
         toPath InitiateVaultLock'{..}
diff --git a/gen/Network/AWS/Glacier/ListJobs.hs b/gen/Network/AWS/Glacier/ListJobs.hs
--- a/gen/Network/AWS/Glacier/ListJobs.hs
+++ b/gen/Network/AWS/Glacier/ListJobs.hs
@@ -170,9 +170,8 @@
 ljVaultName = lens _ljVaultName (\ s a -> s{_ljVaultName = a});
 
 instance AWSRequest ListJobs where
-        type Sv ListJobs = Glacier
         type Rs ListJobs = ListJobsResponse
-        request = get
+        request = get glacier
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/Glacier/ListMultipartUploads.hs b/gen/Network/AWS/Glacier/ListMultipartUploads.hs
--- a/gen/Network/AWS/Glacier/ListMultipartUploads.hs
+++ b/gen/Network/AWS/Glacier/ListMultipartUploads.hs
@@ -140,10 +140,9 @@
 lmuVaultName = lens _lmuVaultName (\ s a -> s{_lmuVaultName = a});
 
 instance AWSRequest ListMultipartUploads where
-        type Sv ListMultipartUploads = Glacier
         type Rs ListMultipartUploads =
              ListMultipartUploadsResponse
-        request = get
+        request = get glacier
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/Glacier/ListParts.hs b/gen/Network/AWS/Glacier/ListParts.hs
--- a/gen/Network/AWS/Glacier/ListParts.hs
+++ b/gen/Network/AWS/Glacier/ListParts.hs
@@ -149,9 +149,8 @@
 lpUploadId = lens _lpUploadId (\ s a -> s{_lpUploadId = a});
 
 instance AWSRequest ListParts where
-        type Sv ListParts = Glacier
         type Rs ListParts = ListPartsResponse
-        request = get
+        request = get glacier
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/Glacier/ListTagsForVault.hs b/gen/Network/AWS/Glacier/ListTagsForVault.hs
--- a/gen/Network/AWS/Glacier/ListTagsForVault.hs
+++ b/gen/Network/AWS/Glacier/ListTagsForVault.hs
@@ -85,9 +85,8 @@
 ltfvVaultName = lens _ltfvVaultName (\ s a -> s{_ltfvVaultName = a});
 
 instance AWSRequest ListTagsForVault where
-        type Sv ListTagsForVault = Glacier
         type Rs ListTagsForVault = ListTagsForVaultResponse
-        request = get
+        request = get glacier
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/Glacier/ListVaults.hs b/gen/Network/AWS/Glacier/ListVaults.hs
--- a/gen/Network/AWS/Glacier/ListVaults.hs
+++ b/gen/Network/AWS/Glacier/ListVaults.hs
@@ -118,9 +118,8 @@
 lvAccountId = lens _lvAccountId (\ s a -> s{_lvAccountId = a});
 
 instance AWSRequest ListVaults where
-        type Sv ListVaults = Glacier
         type Rs ListVaults = ListVaultsResponse
-        request = get
+        request = get glacier
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/Glacier/RemoveTagsFromVault.hs b/gen/Network/AWS/Glacier/RemoveTagsFromVault.hs
--- a/gen/Network/AWS/Glacier/RemoveTagsFromVault.hs
+++ b/gen/Network/AWS/Glacier/RemoveTagsFromVault.hs
@@ -92,10 +92,9 @@
 rtfvVaultName = lens _rtfvVaultName (\ s a -> s{_rtfvVaultName = a});
 
 instance AWSRequest RemoveTagsFromVault where
-        type Sv RemoveTagsFromVault = Glacier
         type Rs RemoveTagsFromVault =
              RemoveTagsFromVaultResponse
-        request = postJSON
+        request = postJSON glacier
         response = receiveNull RemoveTagsFromVaultResponse'
 
 instance ToHeaders RemoveTagsFromVault where
@@ -103,7 +102,8 @@
 
 instance ToJSON RemoveTagsFromVault where
         toJSON RemoveTagsFromVault'{..}
-          = object ["TagKeys" .= _rtfvTagKeys]
+          = object
+              (catMaybes [("TagKeys" .=) <$> _rtfvTagKeys])
 
 instance ToPath RemoveTagsFromVault where
         toPath RemoveTagsFromVault'{..}
diff --git a/gen/Network/AWS/Glacier/SetDataRetrievalPolicy.hs b/gen/Network/AWS/Glacier/SetDataRetrievalPolicy.hs
--- a/gen/Network/AWS/Glacier/SetDataRetrievalPolicy.hs
+++ b/gen/Network/AWS/Glacier/SetDataRetrievalPolicy.hs
@@ -88,10 +88,9 @@
 sdrpAccountId = lens _sdrpAccountId (\ s a -> s{_sdrpAccountId = a});
 
 instance AWSRequest SetDataRetrievalPolicy where
-        type Sv SetDataRetrievalPolicy = Glacier
         type Rs SetDataRetrievalPolicy =
              SetDataRetrievalPolicyResponse
-        request = putJSON
+        request = putJSON glacier
         response
           = receiveNull SetDataRetrievalPolicyResponse'
 
@@ -100,7 +99,7 @@
 
 instance ToJSON SetDataRetrievalPolicy where
         toJSON SetDataRetrievalPolicy'{..}
-          = object ["Policy" .= _sdrpPolicy]
+          = object (catMaybes [("Policy" .=) <$> _sdrpPolicy])
 
 instance ToPath SetDataRetrievalPolicy where
         toPath SetDataRetrievalPolicy'{..}
diff --git a/gen/Network/AWS/Glacier/SetVaultAccessPolicy.hs b/gen/Network/AWS/Glacier/SetVaultAccessPolicy.hs
--- a/gen/Network/AWS/Glacier/SetVaultAccessPolicy.hs
+++ b/gen/Network/AWS/Glacier/SetVaultAccessPolicy.hs
@@ -94,10 +94,9 @@
 svapVaultName = lens _svapVaultName (\ s a -> s{_svapVaultName = a});
 
 instance AWSRequest SetVaultAccessPolicy where
-        type Sv SetVaultAccessPolicy = Glacier
         type Rs SetVaultAccessPolicy =
              SetVaultAccessPolicyResponse
-        request = putJSON
+        request = putJSON glacier
         response = receiveNull SetVaultAccessPolicyResponse'
 
 instance ToHeaders SetVaultAccessPolicy where
@@ -105,7 +104,7 @@
 
 instance ToJSON SetVaultAccessPolicy where
         toJSON SetVaultAccessPolicy'{..}
-          = object ["policy" .= _svapPolicy]
+          = object (catMaybes [("policy" .=) <$> _svapPolicy])
 
 instance ToPath SetVaultAccessPolicy where
         toPath SetVaultAccessPolicy'{..}
diff --git a/gen/Network/AWS/Glacier/SetVaultNotifications.hs b/gen/Network/AWS/Glacier/SetVaultNotifications.hs
--- a/gen/Network/AWS/Glacier/SetVaultNotifications.hs
+++ b/gen/Network/AWS/Glacier/SetVaultNotifications.hs
@@ -123,10 +123,9 @@
 svnVaultName = lens _svnVaultName (\ s a -> s{_svnVaultName = a});
 
 instance AWSRequest SetVaultNotifications where
-        type Sv SetVaultNotifications = Glacier
         type Rs SetVaultNotifications =
              SetVaultNotificationsResponse
-        request = putJSON
+        request = putJSON glacier
         response = receiveNull SetVaultNotificationsResponse'
 
 instance ToHeaders SetVaultNotifications where
@@ -135,8 +134,9 @@
 instance ToJSON SetVaultNotifications where
         toJSON SetVaultNotifications'{..}
           = object
-              ["vaultNotificationConfig" .=
-                 _svnVaultNotificationConfig]
+              (catMaybes
+                 [("vaultNotificationConfig" .=) <$>
+                    _svnVaultNotificationConfig])
 
 instance ToPath SetVaultNotifications where
         toPath SetVaultNotifications'{..}
diff --git a/gen/Network/AWS/Glacier/Types.hs b/gen/Network/AWS/Glacier/Types.hs
--- a/gen/Network/AWS/Glacier/Types.hs
+++ b/gen/Network/AWS/Glacier/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.Glacier.Types
     (
-    -- * Service
-      Glacier
+    -- * Service Configuration
+      glacier
 
     -- * Errors
     , _PolicyEnforcedException
@@ -145,39 +144,36 @@
 import           Network.AWS.Prelude
 import           Network.AWS.Sign.V4
 
--- | Version @2012-06-01@ of the Amazon Glacier SDK.
-data Glacier
-
-instance AWSService Glacier where
-    type Sg Glacier = V4
-    service = const svc
-      where
-        svc =
-            Service
-            { _svcAbbrev = "Glacier"
-            , _svcPrefix = "glacier"
-            , _svcVersion = "2012-06-01"
-            , _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-06-01' of the Amazon Glacier SDK configuration.
+glacier :: Service
+glacier =
+    Service
+    { _svcAbbrev = "Glacier"
+    , _svcSigner = v4
+    , _svcPrefix = "glacier"
+    , _svcVersion = "2012-06-01"
+    , _svcEndpoint = defaultEndpoint glacier
+    , _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
 
 -- | Returned if a retrieval job would exceed the current data policy\'s
 -- retrieval rate limit. For more information about data retrieval
diff --git a/gen/Network/AWS/Glacier/Types/Product.hs b/gen/Network/AWS/Glacier/Types/Product.hs
--- a/gen/Network/AWS/Glacier/Types/Product.hs
+++ b/gen/Network/AWS/Glacier/Types/Product.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE OverloadedStrings  #-}
 {-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
@@ -108,7 +107,7 @@
 
 instance ToJSON DataRetrievalPolicy where
         toJSON DataRetrievalPolicy'{..}
-          = object ["Rules" .= _drpRules]
+          = object (catMaybes [("Rules" .=) <$> _drpRules])
 
 -- | Data retrieval policy rule.
 --
@@ -157,8 +156,9 @@
 instance ToJSON DataRetrievalRule where
         toJSON DataRetrievalRule'{..}
           = object
-              ["Strategy" .= _drrStrategy,
-               "BytesPerHour" .= _drrBytesPerHour]
+              (catMaybes
+                 [("Strategy" .=) <$> _drrStrategy,
+                  ("BytesPerHour" .=) <$> _drrBytesPerHour])
 
 -- | Contains the Amazon Glacier response to your request.
 --
@@ -586,9 +586,11 @@
 instance ToJSON InventoryRetrievalJobInput where
         toJSON InventoryRetrievalJobInput'{..}
           = object
-              ["EndDate" .= _irjiEndDate,
-               "StartDate" .= _irjiStartDate,
-               "Marker" .= _irjiMarker, "Limit" .= _irjiLimit]
+              (catMaybes
+                 [("EndDate" .=) <$> _irjiEndDate,
+                  ("StartDate" .=) <$> _irjiStartDate,
+                  ("Marker" .=) <$> _irjiMarker,
+                  ("Limit" .=) <$> _irjiLimit])
 
 -- | Provides options for defining a job.
 --
@@ -687,13 +689,15 @@
 instance ToJSON JobParameters where
         toJSON JobParameters'{..}
           = object
-              ["ArchiveId" .= _jpArchiveId,
-               "RetrievalByteRange" .= _jpRetrievalByteRange,
-               "Format" .= _jpFormat,
-               "InventoryRetrievalParameters" .=
-                 _jpInventoryRetrievalParameters,
-               "SNSTopic" .= _jpSNSTopic, "Type" .= _jpType,
-               "Description" .= _jpDescription]
+              (catMaybes
+                 [("ArchiveId" .=) <$> _jpArchiveId,
+                  ("RetrievalByteRange" .=) <$> _jpRetrievalByteRange,
+                  ("Format" .=) <$> _jpFormat,
+                  ("InventoryRetrievalParameters" .=) <$>
+                    _jpInventoryRetrievalParameters,
+                  ("SNSTopic" .=) <$> _jpSNSTopic,
+                  ("Type" .=) <$> _jpType,
+                  ("Description" .=) <$> _jpDescription])
 
 -- | A list of the part sizes of the multipart upload.
 --
@@ -833,7 +837,7 @@
 
 instance ToJSON VaultAccessPolicy where
         toJSON VaultAccessPolicy'{..}
-          = object ["Policy" .= _vapPolicy]
+          = object (catMaybes [("Policy" .=) <$> _vapPolicy])
 
 -- | Contains the vault lock policy.
 --
@@ -860,7 +864,7 @@
 
 instance ToJSON VaultLockPolicy where
         toJSON VaultLockPolicy'{..}
-          = object ["Policy" .= _vlpPolicy]
+          = object (catMaybes [("Policy" .=) <$> _vlpPolicy])
 
 -- | Represents a vault\'s notification configuration.
 --
@@ -905,4 +909,6 @@
 instance ToJSON VaultNotificationConfig where
         toJSON VaultNotificationConfig'{..}
           = object
-              ["SNSTopic" .= _vncSNSTopic, "Events" .= _vncEvents]
+              (catMaybes
+                 [("SNSTopic" .=) <$> _vncSNSTopic,
+                  ("Events" .=) <$> _vncEvents])
diff --git a/gen/Network/AWS/Glacier/UploadArchive.hs b/gen/Network/AWS/Glacier/UploadArchive.hs
--- a/gen/Network/AWS/Glacier/UploadArchive.hs
+++ b/gen/Network/AWS/Glacier/UploadArchive.hs
@@ -151,9 +151,8 @@
 uaBody = lens _uaBody (\ s a -> s{_uaBody = a});
 
 instance AWSRequest UploadArchive where
-        type Sv UploadArchive = Glacier
         type Rs UploadArchive = ArchiveCreationOutput
-        request = postBody
+        request = postBody glacier
         response
           = receiveEmpty
               (\ s h x ->
diff --git a/gen/Network/AWS/Glacier/UploadMultipartPart.hs b/gen/Network/AWS/Glacier/UploadMultipartPart.hs
--- a/gen/Network/AWS/Glacier/UploadMultipartPart.hs
+++ b/gen/Network/AWS/Glacier/UploadMultipartPart.hs
@@ -171,10 +171,9 @@
 umpBody = lens _umpBody (\ s a -> s{_umpBody = a});
 
 instance AWSRequest UploadMultipartPart where
-        type Sv UploadMultipartPart = Glacier
         type Rs UploadMultipartPart =
              UploadMultipartPartResponse
-        request = putBody
+        request = putBody glacier
         response
           = receiveEmpty
               (\ s h x ->
diff --git a/test/Test/AWS/Gen/Glacier.hs b/test/Test/AWS/Gen/Glacier.hs
--- a/test/Test/AWS/Gen/Glacier.hs
+++ b/test/Test/AWS/Gen/Glacier.hs
@@ -373,178 +373,208 @@
 testSetVaultAccessPolicyResponse = res
     "SetVaultAccessPolicyResponse"
     "fixture/SetVaultAccessPolicyResponse"
+    glacier
     (Proxy :: Proxy SetVaultAccessPolicy)
 
 testInitiateJobResponse :: InitiateJobResponse -> TestTree
 testInitiateJobResponse = res
     "InitiateJobResponse"
     "fixture/InitiateJobResponse"
+    glacier
     (Proxy :: Proxy InitiateJob)
 
 testSetDataRetrievalPolicyResponse :: SetDataRetrievalPolicyResponse -> TestTree
 testSetDataRetrievalPolicyResponse = res
     "SetDataRetrievalPolicyResponse"
     "fixture/SetDataRetrievalPolicyResponse"
+    glacier
     (Proxy :: Proxy SetDataRetrievalPolicy)
 
 testDeleteVaultAccessPolicyResponse :: DeleteVaultAccessPolicyResponse -> TestTree
 testDeleteVaultAccessPolicyResponse = res
     "DeleteVaultAccessPolicyResponse"
     "fixture/DeleteVaultAccessPolicyResponse"
+    glacier
     (Proxy :: Proxy DeleteVaultAccessPolicy)
 
 testListTagsForVaultResponse :: ListTagsForVaultResponse -> TestTree
 testListTagsForVaultResponse = res
     "ListTagsForVaultResponse"
     "fixture/ListTagsForVaultResponse"
+    glacier
     (Proxy :: Proxy ListTagsForVault)
 
 testGetVaultNotificationsResponse :: GetVaultNotificationsResponse -> TestTree
 testGetVaultNotificationsResponse = res
     "GetVaultNotificationsResponse"
     "fixture/GetVaultNotificationsResponse"
+    glacier
     (Proxy :: Proxy GetVaultNotifications)
 
 testUploadMultipartPartResponse :: UploadMultipartPartResponse -> TestTree
 testUploadMultipartPartResponse = res
     "UploadMultipartPartResponse"
     "fixture/UploadMultipartPartResponse"
+    glacier
     (Proxy :: Proxy UploadMultipartPart)
 
 testDeleteVaultNotificationsResponse :: DeleteVaultNotificationsResponse -> TestTree
 testDeleteVaultNotificationsResponse = res
     "DeleteVaultNotificationsResponse"
     "fixture/DeleteVaultNotificationsResponse"
+    glacier
     (Proxy :: Proxy DeleteVaultNotifications)
 
 testCompleteVaultLockResponse :: CompleteVaultLockResponse -> TestTree
 testCompleteVaultLockResponse = res
     "CompleteVaultLockResponse"
     "fixture/CompleteVaultLockResponse"
+    glacier
     (Proxy :: Proxy CompleteVaultLock)
 
 testAbortVaultLockResponse :: AbortVaultLockResponse -> TestTree
 testAbortVaultLockResponse = res
     "AbortVaultLockResponse"
     "fixture/AbortVaultLockResponse"
+    glacier
     (Proxy :: Proxy AbortVaultLock)
 
 testListVaultsResponse :: ListVaultsResponse -> TestTree
 testListVaultsResponse = res
     "ListVaultsResponse"
     "fixture/ListVaultsResponse"
+    glacier
     (Proxy :: Proxy ListVaults)
 
 testListJobsResponse :: ListJobsResponse -> TestTree
 testListJobsResponse = res
     "ListJobsResponse"
     "fixture/ListJobsResponse"
+    glacier
     (Proxy :: Proxy ListJobs)
 
 testSetVaultNotificationsResponse :: SetVaultNotificationsResponse -> TestTree
 testSetVaultNotificationsResponse = res
     "SetVaultNotificationsResponse"
     "fixture/SetVaultNotificationsResponse"
+    glacier
     (Proxy :: Proxy SetVaultNotifications)
 
 testCompleteMultipartUploadResponse :: ArchiveCreationOutput -> TestTree
 testCompleteMultipartUploadResponse = res
     "CompleteMultipartUploadResponse"
     "fixture/CompleteMultipartUploadResponse"
+    glacier
     (Proxy :: Proxy CompleteMultipartUpload)
 
 testListMultipartUploadsResponse :: ListMultipartUploadsResponse -> TestTree
 testListMultipartUploadsResponse = res
     "ListMultipartUploadsResponse"
     "fixture/ListMultipartUploadsResponse"
+    glacier
     (Proxy :: Proxy ListMultipartUploads)
 
 testDescribeVaultResponse :: DescribeVaultOutput -> TestTree
 testDescribeVaultResponse = res
     "DescribeVaultResponse"
     "fixture/DescribeVaultResponse"
+    glacier
     (Proxy :: Proxy DescribeVault)
 
 testAbortMultipartUploadResponse :: AbortMultipartUploadResponse -> TestTree
 testAbortMultipartUploadResponse = res
     "AbortMultipartUploadResponse"
     "fixture/AbortMultipartUploadResponse"
+    glacier
     (Proxy :: Proxy AbortMultipartUpload)
 
 testGetVaultLockResponse :: GetVaultLockResponse -> TestTree
 testGetVaultLockResponse = res
     "GetVaultLockResponse"
     "fixture/GetVaultLockResponse"
+    glacier
     (Proxy :: Proxy GetVaultLock)
 
 testDescribeJobResponse :: GlacierJobDescription -> TestTree
 testDescribeJobResponse = res
     "DescribeJobResponse"
     "fixture/DescribeJobResponse"
+    glacier
     (Proxy :: Proxy DescribeJob)
 
 testInitiateVaultLockResponse :: InitiateVaultLockResponse -> TestTree
 testInitiateVaultLockResponse = res
     "InitiateVaultLockResponse"
     "fixture/InitiateVaultLockResponse"
+    glacier
     (Proxy :: Proxy InitiateVaultLock)
 
 testGetVaultAccessPolicyResponse :: GetVaultAccessPolicyResponse -> TestTree
 testGetVaultAccessPolicyResponse = res
     "GetVaultAccessPolicyResponse"
     "fixture/GetVaultAccessPolicyResponse"
+    glacier
     (Proxy :: Proxy GetVaultAccessPolicy)
 
 testGetDataRetrievalPolicyResponse :: GetDataRetrievalPolicyResponse -> TestTree
 testGetDataRetrievalPolicyResponse = res
     "GetDataRetrievalPolicyResponse"
     "fixture/GetDataRetrievalPolicyResponse"
+    glacier
     (Proxy :: Proxy GetDataRetrievalPolicy)
 
 testRemoveTagsFromVaultResponse :: RemoveTagsFromVaultResponse -> TestTree
 testRemoveTagsFromVaultResponse = res
     "RemoveTagsFromVaultResponse"
     "fixture/RemoveTagsFromVaultResponse"
+    glacier
     (Proxy :: Proxy RemoveTagsFromVault)
 
 testDeleteArchiveResponse :: DeleteArchiveResponse -> TestTree
 testDeleteArchiveResponse = res
     "DeleteArchiveResponse"
     "fixture/DeleteArchiveResponse"
+    glacier
     (Proxy :: Proxy DeleteArchive)
 
 testDeleteVaultResponse :: DeleteVaultResponse -> TestTree
 testDeleteVaultResponse = res
     "DeleteVaultResponse"
     "fixture/DeleteVaultResponse"
+    glacier
     (Proxy :: Proxy DeleteVault)
 
 testInitiateMultipartUploadResponse :: InitiateMultipartUploadResponse -> TestTree
 testInitiateMultipartUploadResponse = res
     "InitiateMultipartUploadResponse"
     "fixture/InitiateMultipartUploadResponse"
+    glacier
     (Proxy :: Proxy InitiateMultipartUpload)
 
 testListPartsResponse :: ListPartsResponse -> TestTree
 testListPartsResponse = res
     "ListPartsResponse"
     "fixture/ListPartsResponse"
+    glacier
     (Proxy :: Proxy ListParts)
 
 testCreateVaultResponse :: CreateVaultResponse -> TestTree
 testCreateVaultResponse = res
     "CreateVaultResponse"
     "fixture/CreateVaultResponse"
+    glacier
     (Proxy :: Proxy CreateVault)
 
 testAddTagsToVaultResponse :: AddTagsToVaultResponse -> TestTree
 testAddTagsToVaultResponse = res
     "AddTagsToVaultResponse"
     "fixture/AddTagsToVaultResponse"
+    glacier
     (Proxy :: Proxy AddTagsToVault)
 
 testUploadArchiveResponse :: ArchiveCreationOutput -> TestTree
 testUploadArchiveResponse = res
     "UploadArchiveResponse"
     "fixture/UploadArchiveResponse"
+    glacier
     (Proxy :: Proxy UploadArchive)
