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-efs.cabal b/amazonka-efs.cabal
--- a/amazonka-efs.cabal
+++ b/amazonka-efs.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-efs
-version:               1.1.0
+version:               1.2.0
 synopsis:              Amazon Elastic File System SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -60,7 +60,7 @@
         , Network.AWS.EFS.Types.Sum
 
     build-depends:
-          amazonka-core == 1.1.0.*
+          amazonka-core == 1.2.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-efs-test
@@ -79,9 +79,9 @@
         , Test.AWS.EFS.Internal
 
     build-depends:
-          amazonka-core == 1.1.0
-        , amazonka-test == 1.1.0
-        , amazonka-efs == 1.1.0
+          amazonka-core == 1.2.0
+        , amazonka-test == 1.2.0
+        , amazonka-efs == 1.2.0
         , base
         , bytestring
         , lens
diff --git a/gen/Network/AWS/EFS.hs b/gen/Network/AWS/EFS.hs
--- a/gen/Network/AWS/EFS.hs
+++ b/gen/Network/AWS/EFS.hs
@@ -16,8 +16,8 @@
 -- /See:/ <http://docs.aws.amazon.com/elasticfilesystem/latest/devguide/welcome.html AWS API Reference>
 module Network.AWS.EFS
     (
-    -- * Service
-      EFS
+    -- * Service Configuration
+      eFS
 
     -- * Errors
     -- $errors
diff --git a/gen/Network/AWS/EFS/CreateFileSystem.hs b/gen/Network/AWS/EFS/CreateFileSystem.hs
--- a/gen/Network/AWS/EFS/CreateFileSystem.hs
+++ b/gen/Network/AWS/EFS/CreateFileSystem.hs
@@ -112,9 +112,8 @@
 cfsCreationToken = lens _cfsCreationToken (\ s a -> s{_cfsCreationToken = a});
 
 instance AWSRequest CreateFileSystem where
-        type Sv CreateFileSystem = EFS
         type Rs CreateFileSystem = FileSystemDescription
-        request = postJSON
+        request = postJSON eFS
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders CreateFileSystem where
@@ -122,7 +121,9 @@
 
 instance ToJSON CreateFileSystem where
         toJSON CreateFileSystem'{..}
-          = object ["CreationToken" .= _cfsCreationToken]
+          = object
+              (catMaybes
+                 [Just ("CreationToken" .= _cfsCreationToken)])
 
 instance ToPath CreateFileSystem where
         toPath = const "/2015-02-01/file-systems"
diff --git a/gen/Network/AWS/EFS/CreateMountTarget.hs b/gen/Network/AWS/EFS/CreateMountTarget.hs
--- a/gen/Network/AWS/EFS/CreateMountTarget.hs
+++ b/gen/Network/AWS/EFS/CreateMountTarget.hs
@@ -199,9 +199,8 @@
 cmtSubnetId = lens _cmtSubnetId (\ s a -> s{_cmtSubnetId = a});
 
 instance AWSRequest CreateMountTarget where
-        type Sv CreateMountTarget = EFS
         type Rs CreateMountTarget = MountTargetDescription
-        request = postJSON
+        request = postJSON eFS
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
 instance ToHeaders CreateMountTarget where
@@ -210,10 +209,11 @@
 instance ToJSON CreateMountTarget where
         toJSON CreateMountTarget'{..}
           = object
-              ["IpAddress" .= _cmtIPAddress,
-               "SecurityGroups" .= _cmtSecurityGroups,
-               "FileSystemId" .= _cmtFileSystemId,
-               "SubnetId" .= _cmtSubnetId]
+              (catMaybes
+                 [("IpAddress" .=) <$> _cmtIPAddress,
+                  ("SecurityGroups" .=) <$> _cmtSecurityGroups,
+                  Just ("FileSystemId" .= _cmtFileSystemId),
+                  Just ("SubnetId" .= _cmtSubnetId)])
 
 instance ToPath CreateMountTarget where
         toPath = const "/2015-02-01/mount-targets"
diff --git a/gen/Network/AWS/EFS/CreateTags.hs b/gen/Network/AWS/EFS/CreateTags.hs
--- a/gen/Network/AWS/EFS/CreateTags.hs
+++ b/gen/Network/AWS/EFS/CreateTags.hs
@@ -81,16 +81,16 @@
 ctTags = lens _ctTags (\ s a -> s{_ctTags = a}) . _Coerce;
 
 instance AWSRequest CreateTags where
-        type Sv CreateTags = EFS
         type Rs CreateTags = CreateTagsResponse
-        request = postJSON
+        request = postJSON eFS
         response = receiveNull CreateTagsResponse'
 
 instance ToHeaders CreateTags where
         toHeaders = const mempty
 
 instance ToJSON CreateTags where
-        toJSON CreateTags'{..} = object ["Tags" .= _ctTags]
+        toJSON CreateTags'{..}
+          = object (catMaybes [Just ("Tags" .= _ctTags)])
 
 instance ToPath CreateTags where
         toPath CreateTags'{..}
diff --git a/gen/Network/AWS/EFS/DeleteFileSystem.hs b/gen/Network/AWS/EFS/DeleteFileSystem.hs
--- a/gen/Network/AWS/EFS/DeleteFileSystem.hs
+++ b/gen/Network/AWS/EFS/DeleteFileSystem.hs
@@ -79,9 +79,8 @@
 delFileSystemId = lens _delFileSystemId (\ s a -> s{_delFileSystemId = a});
 
 instance AWSRequest DeleteFileSystem where
-        type Sv DeleteFileSystem = EFS
         type Rs DeleteFileSystem = DeleteFileSystemResponse
-        request = delete
+        request = delete eFS
         response = receiveNull DeleteFileSystemResponse'
 
 instance ToHeaders DeleteFileSystem where
diff --git a/gen/Network/AWS/EFS/DeleteMountTarget.hs b/gen/Network/AWS/EFS/DeleteMountTarget.hs
--- a/gen/Network/AWS/EFS/DeleteMountTarget.hs
+++ b/gen/Network/AWS/EFS/DeleteMountTarget.hs
@@ -88,9 +88,8 @@
 dmtMountTargetId = lens _dmtMountTargetId (\ s a -> s{_dmtMountTargetId = a});
 
 instance AWSRequest DeleteMountTarget where
-        type Sv DeleteMountTarget = EFS
         type Rs DeleteMountTarget = DeleteMountTargetResponse
-        request = delete
+        request = delete eFS
         response = receiveNull DeleteMountTargetResponse'
 
 instance ToHeaders DeleteMountTarget where
diff --git a/gen/Network/AWS/EFS/DeleteTags.hs b/gen/Network/AWS/EFS/DeleteTags.hs
--- a/gen/Network/AWS/EFS/DeleteTags.hs
+++ b/gen/Network/AWS/EFS/DeleteTags.hs
@@ -80,9 +80,8 @@
 dTagKeys = lens _dTagKeys (\ s a -> s{_dTagKeys = a}) . _Coerce;
 
 instance AWSRequest DeleteTags where
-        type Sv DeleteTags = EFS
         type Rs DeleteTags = DeleteTagsResponse
-        request = postJSON
+        request = postJSON eFS
         response = receiveNull DeleteTagsResponse'
 
 instance ToHeaders DeleteTags where
@@ -90,7 +89,7 @@
 
 instance ToJSON DeleteTags where
         toJSON DeleteTags'{..}
-          = object ["TagKeys" .= _dTagKeys]
+          = object (catMaybes [Just ("TagKeys" .= _dTagKeys)])
 
 instance ToPath DeleteTags where
         toPath DeleteTags'{..}
diff --git a/gen/Network/AWS/EFS/DescribeFileSystems.hs b/gen/Network/AWS/EFS/DescribeFileSystems.hs
--- a/gen/Network/AWS/EFS/DescribeFileSystems.hs
+++ b/gen/Network/AWS/EFS/DescribeFileSystems.hs
@@ -129,10 +129,9 @@
 dfsMarker = lens _dfsMarker (\ s a -> s{_dfsMarker = a});
 
 instance AWSRequest DescribeFileSystems where
-        type Sv DescribeFileSystems = EFS
         type Rs DescribeFileSystems =
              DescribeFileSystemsResponse
-        request = get
+        request = get eFS
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/EFS/DescribeMountTargetSecurityGroups.hs b/gen/Network/AWS/EFS/DescribeMountTargetSecurityGroups.hs
--- a/gen/Network/AWS/EFS/DescribeMountTargetSecurityGroups.hs
+++ b/gen/Network/AWS/EFS/DescribeMountTargetSecurityGroups.hs
@@ -77,10 +77,9 @@
 
 instance AWSRequest DescribeMountTargetSecurityGroups
          where
-        type Sv DescribeMountTargetSecurityGroups = EFS
         type Rs DescribeMountTargetSecurityGroups =
              DescribeMountTargetSecurityGroupsResponse
-        request = get
+        request = get eFS
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/EFS/DescribeMountTargets.hs b/gen/Network/AWS/EFS/DescribeMountTargets.hs
--- a/gen/Network/AWS/EFS/DescribeMountTargets.hs
+++ b/gen/Network/AWS/EFS/DescribeMountTargets.hs
@@ -94,10 +94,9 @@
 dmtFileSystemId = lens _dmtFileSystemId (\ s a -> s{_dmtFileSystemId = a});
 
 instance AWSRequest DescribeMountTargets where
-        type Sv DescribeMountTargets = EFS
         type Rs DescribeMountTargets =
              DescribeMountTargetsResponse
-        request = get
+        request = get eFS
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/EFS/DescribeTags.hs b/gen/Network/AWS/EFS/DescribeTags.hs
--- a/gen/Network/AWS/EFS/DescribeTags.hs
+++ b/gen/Network/AWS/EFS/DescribeTags.hs
@@ -95,9 +95,8 @@
 dtFileSystemId = lens _dtFileSystemId (\ s a -> s{_dtFileSystemId = a});
 
 instance AWSRequest DescribeTags where
-        type Sv DescribeTags = EFS
         type Rs DescribeTags = DescribeTagsResponse
-        request = get
+        request = get eFS
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/EFS/ModifyMountTargetSecurityGroups.hs b/gen/Network/AWS/EFS/ModifyMountTargetSecurityGroups.hs
--- a/gen/Network/AWS/EFS/ModifyMountTargetSecurityGroups.hs
+++ b/gen/Network/AWS/EFS/ModifyMountTargetSecurityGroups.hs
@@ -88,10 +88,9 @@
 
 instance AWSRequest ModifyMountTargetSecurityGroups
          where
-        type Sv ModifyMountTargetSecurityGroups = EFS
         type Rs ModifyMountTargetSecurityGroups =
              ModifyMountTargetSecurityGroupsResponse
-        request = putJSON
+        request = putJSON eFS
         response
           = receiveNull
               ModifyMountTargetSecurityGroupsResponse'
@@ -102,7 +101,9 @@
 
 instance ToJSON ModifyMountTargetSecurityGroups where
         toJSON ModifyMountTargetSecurityGroups'{..}
-          = object ["SecurityGroups" .= _mmtsgSecurityGroups]
+          = object
+              (catMaybes
+                 [("SecurityGroups" .=) <$> _mmtsgSecurityGroups])
 
 instance ToPath ModifyMountTargetSecurityGroups where
         toPath ModifyMountTargetSecurityGroups'{..}
diff --git a/gen/Network/AWS/EFS/Types.hs b/gen/Network/AWS/EFS/Types.hs
--- a/gen/Network/AWS/EFS/Types.hs
+++ b/gen/Network/AWS/EFS/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.EFS.Types
     (
-    -- * Service
-      EFS
+    -- * Service Configuration
+      eFS
 
     -- * Errors
     , _MountTargetNotFound
@@ -80,39 +79,36 @@
 import           Network.AWS.Prelude
 import           Network.AWS.Sign.V4
 
--- | Version @2015-02-01@ of the Amazon Elastic File System SDK.
-data EFS
-
-instance AWSService EFS where
-    type Sg EFS = V4
-    service = const svc
-      where
-        svc =
-            Service
-            { _svcAbbrev = "EFS"
-            , _svcPrefix = "elasticfilesystem"
-            , _svcVersion = "2015-02-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 '2015-02-01' of the Amazon Elastic File System SDK configuration.
+eFS :: Service
+eFS =
+    Service
+    { _svcAbbrev = "EFS"
+    , _svcSigner = v4
+    , _svcPrefix = "elasticfilesystem"
+    , _svcVersion = "2015-02-01"
+    , _svcEndpoint = defaultEndpoint eFS
+    , _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 there is no mount target with the specified ID is found in
 -- the caller\'s account.
diff --git a/gen/Network/AWS/EFS/Types/Product.hs b/gen/Network/AWS/EFS/Types/Product.hs
--- a/gen/Network/AWS/EFS/Types/Product.hs
+++ b/gen/Network/AWS/EFS/Types/Product.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE OverloadedStrings  #-}
 {-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
@@ -317,4 +316,7 @@
 
 instance ToJSON Tag where
         toJSON Tag'{..}
-          = object ["Key" .= _tagKey, "Value" .= _tagValue]
+          = object
+              (catMaybes
+                 [Just ("Key" .= _tagKey),
+                  Just ("Value" .= _tagValue)])
diff --git a/test/Test/AWS/Gen/EFS.hs b/test/Test/AWS/Gen/EFS.hs
--- a/test/Test/AWS/Gen/EFS.hs
+++ b/test/Test/AWS/Gen/EFS.hs
@@ -163,64 +163,75 @@
 testDescribeTagsResponse = res
     "DescribeTagsResponse"
     "fixture/DescribeTagsResponse"
+    eFS
     (Proxy :: Proxy DescribeTags)
 
 testDescribeMountTargetsResponse :: DescribeMountTargetsResponse -> TestTree
 testDescribeMountTargetsResponse = res
     "DescribeMountTargetsResponse"
     "fixture/DescribeMountTargetsResponse"
+    eFS
     (Proxy :: Proxy DescribeMountTargets)
 
 testDeleteMountTargetResponse :: DeleteMountTargetResponse -> TestTree
 testDeleteMountTargetResponse = res
     "DeleteMountTargetResponse"
     "fixture/DeleteMountTargetResponse"
+    eFS
     (Proxy :: Proxy DeleteMountTarget)
 
 testCreateTagsResponse :: CreateTagsResponse -> TestTree
 testCreateTagsResponse = res
     "CreateTagsResponse"
     "fixture/CreateTagsResponse"
+    eFS
     (Proxy :: Proxy CreateTags)
 
 testDescribeFileSystemsResponse :: DescribeFileSystemsResponse -> TestTree
 testDescribeFileSystemsResponse = res
     "DescribeFileSystemsResponse"
     "fixture/DescribeFileSystemsResponse"
+    eFS
     (Proxy :: Proxy DescribeFileSystems)
 
 testDeleteTagsResponse :: DeleteTagsResponse -> TestTree
 testDeleteTagsResponse = res
     "DeleteTagsResponse"
     "fixture/DeleteTagsResponse"
+    eFS
     (Proxy :: Proxy DeleteTags)
 
 testDescribeMountTargetSecurityGroupsResponse :: DescribeMountTargetSecurityGroupsResponse -> TestTree
 testDescribeMountTargetSecurityGroupsResponse = res
     "DescribeMountTargetSecurityGroupsResponse"
     "fixture/DescribeMountTargetSecurityGroupsResponse"
+    eFS
     (Proxy :: Proxy DescribeMountTargetSecurityGroups)
 
 testModifyMountTargetSecurityGroupsResponse :: ModifyMountTargetSecurityGroupsResponse -> TestTree
 testModifyMountTargetSecurityGroupsResponse = res
     "ModifyMountTargetSecurityGroupsResponse"
     "fixture/ModifyMountTargetSecurityGroupsResponse"
+    eFS
     (Proxy :: Proxy ModifyMountTargetSecurityGroups)
 
 testCreateFileSystemResponse :: FileSystemDescription -> TestTree
 testCreateFileSystemResponse = res
     "CreateFileSystemResponse"
     "fixture/CreateFileSystemResponse"
+    eFS
     (Proxy :: Proxy CreateFileSystem)
 
 testDeleteFileSystemResponse :: DeleteFileSystemResponse -> TestTree
 testDeleteFileSystemResponse = res
     "DeleteFileSystemResponse"
     "fixture/DeleteFileSystemResponse"
+    eFS
     (Proxy :: Proxy DeleteFileSystem)
 
 testCreateMountTargetResponse :: MountTargetDescription -> TestTree
 testCreateMountTargetResponse = res
     "CreateMountTargetResponse"
     "fixture/CreateMountTargetResponse"
+    eFS
     (Proxy :: Proxy CreateMountTarget)
