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-devicefarm.cabal b/amazonka-devicefarm.cabal
--- a/amazonka-devicefarm.cabal
+++ b/amazonka-devicefarm.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-devicefarm
-version:               1.1.0
+version:               1.2.0
 synopsis:              Amazon Device Farm SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -76,7 +76,7 @@
         , Network.AWS.DeviceFarm.Types.Sum
 
     build-depends:
-          amazonka-core == 1.1.0.*
+          amazonka-core == 1.2.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-devicefarm-test
@@ -95,9 +95,9 @@
         , Test.AWS.DeviceFarm.Internal
 
     build-depends:
-          amazonka-core == 1.1.0
-        , amazonka-test == 1.1.0
-        , amazonka-devicefarm == 1.1.0
+          amazonka-core == 1.2.0
+        , amazonka-test == 1.2.0
+        , amazonka-devicefarm == 1.2.0
         , base
         , bytestring
         , lens
diff --git a/gen/Network/AWS/DeviceFarm.hs b/gen/Network/AWS/DeviceFarm.hs
--- a/gen/Network/AWS/DeviceFarm.hs
+++ b/gen/Network/AWS/DeviceFarm.hs
@@ -18,8 +18,8 @@
 -- /See:/ <http://docs.aws.amazon.com/devicefarm/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.DeviceFarm
     (
-    -- * Service
-      DeviceFarm
+    -- * Service Configuration
+      deviceFarm
 
     -- * Errors
     -- $errors
diff --git a/gen/Network/AWS/DeviceFarm/CreateDevicePool.hs b/gen/Network/AWS/DeviceFarm/CreateDevicePool.hs
--- a/gen/Network/AWS/DeviceFarm/CreateDevicePool.hs
+++ b/gen/Network/AWS/DeviceFarm/CreateDevicePool.hs
@@ -96,9 +96,8 @@
 cdpRules = lens _cdpRules (\ s a -> s{_cdpRules = a}) . _Coerce;
 
 instance AWSRequest CreateDevicePool where
-        type Sv CreateDevicePool = DeviceFarm
         type Rs CreateDevicePool = CreateDevicePoolResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -118,9 +117,11 @@
 instance ToJSON CreateDevicePool where
         toJSON CreateDevicePool'{..}
           = object
-              ["description" .= _cdpDescription,
-               "projectArn" .= _cdpProjectARN, "name" .= _cdpName,
-               "rules" .= _cdpRules]
+              (catMaybes
+                 [("description" .=) <$> _cdpDescription,
+                  Just ("projectArn" .= _cdpProjectARN),
+                  Just ("name" .= _cdpName),
+                  Just ("rules" .= _cdpRules)])
 
 instance ToPath CreateDevicePool where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/CreateProject.hs b/gen/Network/AWS/DeviceFarm/CreateProject.hs
--- a/gen/Network/AWS/DeviceFarm/CreateProject.hs
+++ b/gen/Network/AWS/DeviceFarm/CreateProject.hs
@@ -68,9 +68,8 @@
 cpName = lens _cpName (\ s a -> s{_cpName = a});
 
 instance AWSRequest CreateProject where
-        type Sv CreateProject = DeviceFarm
         type Rs CreateProject = CreateProjectResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -88,7 +87,7 @@
 
 instance ToJSON CreateProject where
         toJSON CreateProject'{..}
-          = object ["name" .= _cpName]
+          = object (catMaybes [Just ("name" .= _cpName)])
 
 instance ToPath CreateProject where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/CreateUpload.hs b/gen/Network/AWS/DeviceFarm/CreateUpload.hs
--- a/gen/Network/AWS/DeviceFarm/CreateUpload.hs
+++ b/gen/Network/AWS/DeviceFarm/CreateUpload.hs
@@ -120,9 +120,8 @@
 cuType = lens _cuType (\ s a -> s{_cuType = a});
 
 instance AWSRequest CreateUpload where
-        type Sv CreateUpload = DeviceFarm
         type Rs CreateUpload = CreateUploadResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -141,9 +140,10 @@
 instance ToJSON CreateUpload where
         toJSON CreateUpload'{..}
           = object
-              ["contentType" .= _cuContentType,
-               "projectArn" .= _cuProjectARN, "name" .= _cuName,
-               "type" .= _cuType]
+              (catMaybes
+                 [("contentType" .=) <$> _cuContentType,
+                  Just ("projectArn" .= _cuProjectARN),
+                  Just ("name" .= _cuName), Just ("type" .= _cuType)])
 
 instance ToPath CreateUpload where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/GetAccountSettings.hs b/gen/Network/AWS/DeviceFarm/GetAccountSettings.hs
--- a/gen/Network/AWS/DeviceFarm/GetAccountSettings.hs
+++ b/gen/Network/AWS/DeviceFarm/GetAccountSettings.hs
@@ -54,10 +54,9 @@
 getAccountSettings = GetAccountSettings'
 
 instance AWSRequest GetAccountSettings where
-        type Sv GetAccountSettings = DeviceFarm
         type Rs GetAccountSettings =
              GetAccountSettingsResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
diff --git a/gen/Network/AWS/DeviceFarm/GetDevice.hs b/gen/Network/AWS/DeviceFarm/GetDevice.hs
--- a/gen/Network/AWS/DeviceFarm/GetDevice.hs
+++ b/gen/Network/AWS/DeviceFarm/GetDevice.hs
@@ -68,9 +68,8 @@
 gdArn = lens _gdArn (\ s a -> s{_gdArn = a});
 
 instance AWSRequest GetDevice where
-        type Sv GetDevice = DeviceFarm
         type Rs GetDevice = GetDeviceResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -87,7 +86,8 @@
                     ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON GetDevice where
-        toJSON GetDevice'{..} = object ["arn" .= _gdArn]
+        toJSON GetDevice'{..}
+          = object (catMaybes [Just ("arn" .= _gdArn)])
 
 instance ToPath GetDevice where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/GetDevicePool.hs b/gen/Network/AWS/DeviceFarm/GetDevicePool.hs
--- a/gen/Network/AWS/DeviceFarm/GetDevicePool.hs
+++ b/gen/Network/AWS/DeviceFarm/GetDevicePool.hs
@@ -68,9 +68,8 @@
 gdpArn = lens _gdpArn (\ s a -> s{_gdpArn = a});
 
 instance AWSRequest GetDevicePool where
-        type Sv GetDevicePool = DeviceFarm
         type Rs GetDevicePool = GetDevicePoolResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -87,7 +86,8 @@
                     ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON GetDevicePool where
-        toJSON GetDevicePool'{..} = object ["arn" .= _gdpArn]
+        toJSON GetDevicePool'{..}
+          = object (catMaybes [Just ("arn" .= _gdpArn)])
 
 instance ToPath GetDevicePool where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/GetDevicePoolCompatibility.hs b/gen/Network/AWS/DeviceFarm/GetDevicePoolCompatibility.hs
--- a/gen/Network/AWS/DeviceFarm/GetDevicePoolCompatibility.hs
+++ b/gen/Network/AWS/DeviceFarm/GetDevicePoolCompatibility.hs
@@ -111,10 +111,9 @@
 gdpcAppARN = lens _gdpcAppARN (\ s a -> s{_gdpcAppARN = a});
 
 instance AWSRequest GetDevicePoolCompatibility where
-        type Sv GetDevicePoolCompatibility = DeviceFarm
         type Rs GetDevicePoolCompatibility =
              GetDevicePoolCompatibilityResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -136,9 +135,10 @@
 instance ToJSON GetDevicePoolCompatibility where
         toJSON GetDevicePoolCompatibility'{..}
           = object
-              ["testType" .= _gdpcTestType,
-               "devicePoolArn" .= _gdpcDevicePoolARN,
-               "appArn" .= _gdpcAppARN]
+              (catMaybes
+                 [("testType" .=) <$> _gdpcTestType,
+                  Just ("devicePoolArn" .= _gdpcDevicePoolARN),
+                  Just ("appArn" .= _gdpcAppARN)])
 
 instance ToPath GetDevicePoolCompatibility where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/GetJob.hs b/gen/Network/AWS/DeviceFarm/GetJob.hs
--- a/gen/Network/AWS/DeviceFarm/GetJob.hs
+++ b/gen/Network/AWS/DeviceFarm/GetJob.hs
@@ -68,9 +68,8 @@
 gjArn = lens _gjArn (\ s a -> s{_gjArn = a});
 
 instance AWSRequest GetJob where
-        type Sv GetJob = DeviceFarm
         type Rs GetJob = GetJobResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -87,7 +86,8 @@
                     ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON GetJob where
-        toJSON GetJob'{..} = object ["arn" .= _gjArn]
+        toJSON GetJob'{..}
+          = object (catMaybes [Just ("arn" .= _gjArn)])
 
 instance ToPath GetJob where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/GetProject.hs b/gen/Network/AWS/DeviceFarm/GetProject.hs
--- a/gen/Network/AWS/DeviceFarm/GetProject.hs
+++ b/gen/Network/AWS/DeviceFarm/GetProject.hs
@@ -68,9 +68,8 @@
 gpArn = lens _gpArn (\ s a -> s{_gpArn = a});
 
 instance AWSRequest GetProject where
-        type Sv GetProject = DeviceFarm
         type Rs GetProject = GetProjectResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -87,7 +86,8 @@
                     ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON GetProject where
-        toJSON GetProject'{..} = object ["arn" .= _gpArn]
+        toJSON GetProject'{..}
+          = object (catMaybes [Just ("arn" .= _gpArn)])
 
 instance ToPath GetProject where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/GetRun.hs b/gen/Network/AWS/DeviceFarm/GetRun.hs
--- a/gen/Network/AWS/DeviceFarm/GetRun.hs
+++ b/gen/Network/AWS/DeviceFarm/GetRun.hs
@@ -68,9 +68,8 @@
 grArn = lens _grArn (\ s a -> s{_grArn = a});
 
 instance AWSRequest GetRun where
-        type Sv GetRun = DeviceFarm
         type Rs GetRun = GetRunResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -87,7 +86,8 @@
                     ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON GetRun where
-        toJSON GetRun'{..} = object ["arn" .= _grArn]
+        toJSON GetRun'{..}
+          = object (catMaybes [Just ("arn" .= _grArn)])
 
 instance ToPath GetRun where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/GetSuite.hs b/gen/Network/AWS/DeviceFarm/GetSuite.hs
--- a/gen/Network/AWS/DeviceFarm/GetSuite.hs
+++ b/gen/Network/AWS/DeviceFarm/GetSuite.hs
@@ -68,9 +68,8 @@
 gsArn = lens _gsArn (\ s a -> s{_gsArn = a});
 
 instance AWSRequest GetSuite where
-        type Sv GetSuite = DeviceFarm
         type Rs GetSuite = GetSuiteResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -87,7 +86,8 @@
                     ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON GetSuite where
-        toJSON GetSuite'{..} = object ["arn" .= _gsArn]
+        toJSON GetSuite'{..}
+          = object (catMaybes [Just ("arn" .= _gsArn)])
 
 instance ToPath GetSuite where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/GetTest.hs b/gen/Network/AWS/DeviceFarm/GetTest.hs
--- a/gen/Network/AWS/DeviceFarm/GetTest.hs
+++ b/gen/Network/AWS/DeviceFarm/GetTest.hs
@@ -68,9 +68,8 @@
 gtArn = lens _gtArn (\ s a -> s{_gtArn = a});
 
 instance AWSRequest GetTest where
-        type Sv GetTest = DeviceFarm
         type Rs GetTest = GetTestResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -87,7 +86,8 @@
                     ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON GetTest where
-        toJSON GetTest'{..} = object ["arn" .= _gtArn]
+        toJSON GetTest'{..}
+          = object (catMaybes [Just ("arn" .= _gtArn)])
 
 instance ToPath GetTest where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/GetUpload.hs b/gen/Network/AWS/DeviceFarm/GetUpload.hs
--- a/gen/Network/AWS/DeviceFarm/GetUpload.hs
+++ b/gen/Network/AWS/DeviceFarm/GetUpload.hs
@@ -68,9 +68,8 @@
 guArn = lens _guArn (\ s a -> s{_guArn = a});
 
 instance AWSRequest GetUpload where
-        type Sv GetUpload = DeviceFarm
         type Rs GetUpload = GetUploadResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -87,7 +86,8 @@
                     ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON GetUpload where
-        toJSON GetUpload'{..} = object ["arn" .= _guArn]
+        toJSON GetUpload'{..}
+          = object (catMaybes [Just ("arn" .= _guArn)])
 
 instance ToPath GetUpload where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/ListArtifacts.hs b/gen/Network/AWS/DeviceFarm/ListArtifacts.hs
--- a/gen/Network/AWS/DeviceFarm/ListArtifacts.hs
+++ b/gen/Network/AWS/DeviceFarm/ListArtifacts.hs
@@ -96,9 +96,8 @@
 laType = lens _laType (\ s a -> s{_laType = a});
 
 instance AWSRequest ListArtifacts where
-        type Sv ListArtifacts = DeviceFarm
         type Rs ListArtifacts = ListArtifactsResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -119,8 +118,9 @@
 instance ToJSON ListArtifacts where
         toJSON ListArtifacts'{..}
           = object
-              ["nextToken" .= _laNextToken, "arn" .= _laArn,
-               "type" .= _laType]
+              (catMaybes
+                 [("nextToken" .=) <$> _laNextToken,
+                  Just ("arn" .= _laArn), Just ("type" .= _laType)])
 
 instance ToPath ListArtifacts where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/ListDevicePools.hs b/gen/Network/AWS/DeviceFarm/ListDevicePools.hs
--- a/gen/Network/AWS/DeviceFarm/ListDevicePools.hs
+++ b/gen/Network/AWS/DeviceFarm/ListDevicePools.hs
@@ -98,9 +98,8 @@
 ldpArn = lens _ldpArn (\ s a -> s{_ldpArn = a});
 
 instance AWSRequest ListDevicePools where
-        type Sv ListDevicePools = DeviceFarm
         type Rs ListDevicePools = ListDevicePoolsResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -122,8 +121,9 @@
 instance ToJSON ListDevicePools where
         toJSON ListDevicePools'{..}
           = object
-              ["nextToken" .= _ldpNextToken, "type" .= _ldpType,
-               "arn" .= _ldpArn]
+              (catMaybes
+                 [("nextToken" .=) <$> _ldpNextToken,
+                  ("type" .=) <$> _ldpType, Just ("arn" .= _ldpArn)])
 
 instance ToPath ListDevicePools where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/ListDevices.hs b/gen/Network/AWS/DeviceFarm/ListDevices.hs
--- a/gen/Network/AWS/DeviceFarm/ListDevices.hs
+++ b/gen/Network/AWS/DeviceFarm/ListDevices.hs
@@ -79,9 +79,8 @@
 ldNextToken = lens _ldNextToken (\ s a -> s{_ldNextToken = a});
 
 instance AWSRequest ListDevices where
-        type Sv ListDevices = DeviceFarm
         type Rs ListDevices = ListDevicesResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -101,7 +100,9 @@
 instance ToJSON ListDevices where
         toJSON ListDevices'{..}
           = object
-              ["arn" .= _ldArn, "nextToken" .= _ldNextToken]
+              (catMaybes
+                 [("arn" .=) <$> _ldArn,
+                  ("nextToken" .=) <$> _ldNextToken])
 
 instance ToPath ListDevices where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/ListJobs.hs b/gen/Network/AWS/DeviceFarm/ListJobs.hs
--- a/gen/Network/AWS/DeviceFarm/ListJobs.hs
+++ b/gen/Network/AWS/DeviceFarm/ListJobs.hs
@@ -80,9 +80,8 @@
 ljArn = lens _ljArn (\ s a -> s{_ljArn = a});
 
 instance AWSRequest ListJobs where
-        type Sv ListJobs = DeviceFarm
         type Rs ListJobs = ListJobsResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -102,7 +101,9 @@
 instance ToJSON ListJobs where
         toJSON ListJobs'{..}
           = object
-              ["nextToken" .= _ljNextToken, "arn" .= _ljArn]
+              (catMaybes
+                 [("nextToken" .=) <$> _ljNextToken,
+                  Just ("arn" .= _ljArn)])
 
 instance ToPath ListJobs where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/ListProjects.hs b/gen/Network/AWS/DeviceFarm/ListProjects.hs
--- a/gen/Network/AWS/DeviceFarm/ListProjects.hs
+++ b/gen/Network/AWS/DeviceFarm/ListProjects.hs
@@ -79,9 +79,8 @@
 lpNextToken = lens _lpNextToken (\ s a -> s{_lpNextToken = a});
 
 instance AWSRequest ListProjects where
-        type Sv ListProjects = DeviceFarm
         type Rs ListProjects = ListProjectsResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -101,7 +100,9 @@
 instance ToJSON ListProjects where
         toJSON ListProjects'{..}
           = object
-              ["arn" .= _lpArn, "nextToken" .= _lpNextToken]
+              (catMaybes
+                 [("arn" .=) <$> _lpArn,
+                  ("nextToken" .=) <$> _lpNextToken])
 
 instance ToPath ListProjects where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/ListRuns.hs b/gen/Network/AWS/DeviceFarm/ListRuns.hs
--- a/gen/Network/AWS/DeviceFarm/ListRuns.hs
+++ b/gen/Network/AWS/DeviceFarm/ListRuns.hs
@@ -80,9 +80,8 @@
 lrArn = lens _lrArn (\ s a -> s{_lrArn = a});
 
 instance AWSRequest ListRuns where
-        type Sv ListRuns = DeviceFarm
         type Rs ListRuns = ListRunsResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -102,7 +101,9 @@
 instance ToJSON ListRuns where
         toJSON ListRuns'{..}
           = object
-              ["nextToken" .= _lrNextToken, "arn" .= _lrArn]
+              (catMaybes
+                 [("nextToken" .=) <$> _lrNextToken,
+                  Just ("arn" .= _lrArn)])
 
 instance ToPath ListRuns where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/ListSamples.hs b/gen/Network/AWS/DeviceFarm/ListSamples.hs
--- a/gen/Network/AWS/DeviceFarm/ListSamples.hs
+++ b/gen/Network/AWS/DeviceFarm/ListSamples.hs
@@ -80,9 +80,8 @@
 lsArn = lens _lsArn (\ s a -> s{_lsArn = a});
 
 instance AWSRequest ListSamples where
-        type Sv ListSamples = DeviceFarm
         type Rs ListSamples = ListSamplesResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -102,7 +101,9 @@
 instance ToJSON ListSamples where
         toJSON ListSamples'{..}
           = object
-              ["nextToken" .= _lsNextToken, "arn" .= _lsArn]
+              (catMaybes
+                 [("nextToken" .=) <$> _lsNextToken,
+                  Just ("arn" .= _lsArn)])
 
 instance ToPath ListSamples where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/ListSuites.hs b/gen/Network/AWS/DeviceFarm/ListSuites.hs
--- a/gen/Network/AWS/DeviceFarm/ListSuites.hs
+++ b/gen/Network/AWS/DeviceFarm/ListSuites.hs
@@ -80,9 +80,8 @@
 lArn = lens _lArn (\ s a -> s{_lArn = a});
 
 instance AWSRequest ListSuites where
-        type Sv ListSuites = DeviceFarm
         type Rs ListSuites = ListSuitesResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -101,7 +100,10 @@
 
 instance ToJSON ListSuites where
         toJSON ListSuites'{..}
-          = object ["nextToken" .= _lNextToken, "arn" .= _lArn]
+          = object
+              (catMaybes
+                 [("nextToken" .=) <$> _lNextToken,
+                  Just ("arn" .= _lArn)])
 
 instance ToPath ListSuites where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/ListTests.hs b/gen/Network/AWS/DeviceFarm/ListTests.hs
--- a/gen/Network/AWS/DeviceFarm/ListTests.hs
+++ b/gen/Network/AWS/DeviceFarm/ListTests.hs
@@ -80,9 +80,8 @@
 ltArn = lens _ltArn (\ s a -> s{_ltArn = a});
 
 instance AWSRequest ListTests where
-        type Sv ListTests = DeviceFarm
         type Rs ListTests = ListTestsResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -102,7 +101,9 @@
 instance ToJSON ListTests where
         toJSON ListTests'{..}
           = object
-              ["nextToken" .= _ltNextToken, "arn" .= _ltArn]
+              (catMaybes
+                 [("nextToken" .=) <$> _ltNextToken,
+                  Just ("arn" .= _ltArn)])
 
 instance ToPath ListTests where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/ListUniqueProblems.hs b/gen/Network/AWS/DeviceFarm/ListUniqueProblems.hs
--- a/gen/Network/AWS/DeviceFarm/ListUniqueProblems.hs
+++ b/gen/Network/AWS/DeviceFarm/ListUniqueProblems.hs
@@ -80,10 +80,9 @@
 lupArn = lens _lupArn (\ s a -> s{_lupArn = a});
 
 instance AWSRequest ListUniqueProblems where
-        type Sv ListUniqueProblems = DeviceFarm
         type Rs ListUniqueProblems =
              ListUniqueProblemsResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -105,7 +104,9 @@
 instance ToJSON ListUniqueProblems where
         toJSON ListUniqueProblems'{..}
           = object
-              ["nextToken" .= _lupNextToken, "arn" .= _lupArn]
+              (catMaybes
+                 [("nextToken" .=) <$> _lupNextToken,
+                  Just ("arn" .= _lupArn)])
 
 instance ToPath ListUniqueProblems where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/ListUploads.hs b/gen/Network/AWS/DeviceFarm/ListUploads.hs
--- a/gen/Network/AWS/DeviceFarm/ListUploads.hs
+++ b/gen/Network/AWS/DeviceFarm/ListUploads.hs
@@ -80,9 +80,8 @@
 luArn = lens _luArn (\ s a -> s{_luArn = a});
 
 instance AWSRequest ListUploads where
-        type Sv ListUploads = DeviceFarm
         type Rs ListUploads = ListUploadsResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -102,7 +101,9 @@
 instance ToJSON ListUploads where
         toJSON ListUploads'{..}
           = object
-              ["nextToken" .= _luNextToken, "arn" .= _luArn]
+              (catMaybes
+                 [("nextToken" .=) <$> _luNextToken,
+                  Just ("arn" .= _luArn)])
 
 instance ToPath ListUploads where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/ScheduleRun.hs b/gen/Network/AWS/DeviceFarm/ScheduleRun.hs
--- a/gen/Network/AWS/DeviceFarm/ScheduleRun.hs
+++ b/gen/Network/AWS/DeviceFarm/ScheduleRun.hs
@@ -116,9 +116,8 @@
 srTest = lens _srTest (\ s a -> s{_srTest = a});
 
 instance AWSRequest ScheduleRun where
-        type Sv ScheduleRun = DeviceFarm
         type Rs ScheduleRun = ScheduleRunResponse
-        request = postJSON
+        request = postJSON deviceFarm
         response
           = receiveJSON
               (\ s h x ->
@@ -137,11 +136,13 @@
 instance ToJSON ScheduleRun where
         toJSON ScheduleRun'{..}
           = object
-              ["name" .= _srName,
-               "configuration" .= _srConfiguration,
-               "projectArn" .= _srProjectARN, "appArn" .= _srAppARN,
-               "devicePoolArn" .= _srDevicePoolARN,
-               "test" .= _srTest]
+              (catMaybes
+                 [("name" .=) <$> _srName,
+                  ("configuration" .=) <$> _srConfiguration,
+                  Just ("projectArn" .= _srProjectARN),
+                  Just ("appArn" .= _srAppARN),
+                  Just ("devicePoolArn" .= _srDevicePoolARN),
+                  Just ("test" .= _srTest)])
 
 instance ToPath ScheduleRun where
         toPath = const "/"
diff --git a/gen/Network/AWS/DeviceFarm/Types.hs b/gen/Network/AWS/DeviceFarm/Types.hs
--- a/gen/Network/AWS/DeviceFarm/Types.hs
+++ b/gen/Network/AWS/DeviceFarm/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.DeviceFarm.Types
     (
-    -- * Service
-      DeviceFarm
+    -- * Service Configuration
+      deviceFarm
 
     -- * Errors
     , _IdempotencyException
@@ -301,39 +300,36 @@
 import           Network.AWS.Prelude
 import           Network.AWS.Sign.V4
 
--- | Version @2015-06-23@ of the Amazon Device Farm SDK.
-data DeviceFarm
-
-instance AWSService DeviceFarm where
-    type Sg DeviceFarm = V4
-    service = const svc
-      where
-        svc =
-            Service
-            { _svcAbbrev = "DeviceFarm"
-            , _svcPrefix = "devicefarm"
-            , _svcVersion = "2015-06-23"
-            , _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-06-23' of the Amazon Device Farm SDK configuration.
+deviceFarm :: Service
+deviceFarm =
+    Service
+    { _svcAbbrev = "DeviceFarm"
+    , _svcSigner = v4
+    , _svcPrefix = "devicefarm"
+    , _svcVersion = "2015-06-23"
+    , _svcEndpoint = defaultEndpoint deviceFarm
+    , _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 entity with the same name already exists.
 _IdempotencyException :: AsError a => Getting (First ServiceError) a ServiceError
diff --git a/gen/Network/AWS/DeviceFarm/Types/Product.hs b/gen/Network/AWS/DeviceFarm/Types/Product.hs
--- a/gen/Network/AWS/DeviceFarm/Types/Product.hs
+++ b/gen/Network/AWS/DeviceFarm/Types/Product.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE OverloadedStrings  #-}
 {-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
@@ -837,8 +836,9 @@
 instance ToJSON Location where
         toJSON Location'{..}
           = object
-              ["latitude" .= _lLatitude,
-               "longitude" .= _lLongitude]
+              (catMaybes
+                 [Just ("latitude" .= _lLatitude),
+                  Just ("longitude" .= _lLongitude)])
 
 -- | Represents a specific warning or failure.
 --
@@ -1077,8 +1077,10 @@
 instance ToJSON Radios where
         toJSON Radios'{..}
           = object
-              ["nfc" .= _rNfc, "gps" .= _rGps,
-               "bluetooth" .= _rBluetooth, "wifi" .= _rWifi]
+              (catMaybes
+                 [("nfc" .=) <$> _rNfc, ("gps" .=) <$> _rGps,
+                  ("bluetooth" .=) <$> _rBluetooth,
+                  ("wifi" .=) <$> _rWifi])
 
 -- | Represents the screen resolution of a device in height and width,
 -- expressed in pixels.
@@ -1190,8 +1192,10 @@
 instance ToJSON Rule where
         toJSON Rule'{..}
           = object
-              ["attribute" .= _rAttribute,
-               "operator" .= _rOperator, "value" .= _rValue]
+              (catMaybes
+                 [("attribute" .=) <$> _rAttribute,
+                  ("operator" .=) <$> _rOperator,
+                  ("value" .=) <$> _rValue])
 
 -- | Represents an app on a set of devices with a specific test and
 -- configuration.
@@ -1569,12 +1573,15 @@
 instance ToJSON ScheduleRunConfiguration where
         toJSON ScheduleRunConfiguration'{..}
           = object
-              ["billingMethod" .= _srcBillingMethod,
-               "radios" .= _srcRadios, "location" .= _srcLocation,
-               "locale" .= _srcLocale,
-               "networkProfileArn" .= _srcNetworkProfileARN,
-               "extraDataPackageArn" .= _srcExtraDataPackageARN,
-               "auxiliaryApps" .= _srcAuxiliaryApps]
+              (catMaybes
+                 [("billingMethod" .=) <$> _srcBillingMethod,
+                  ("radios" .=) <$> _srcRadios,
+                  ("location" .=) <$> _srcLocation,
+                  ("locale" .=) <$> _srcLocale,
+                  ("networkProfileArn" .=) <$> _srcNetworkProfileARN,
+                  ("extraDataPackageArn" .=) <$>
+                    _srcExtraDataPackageARN,
+                  ("auxiliaryApps" .=) <$> _srcAuxiliaryApps])
 
 -- | Represents additional test settings.
 --
@@ -1651,9 +1658,11 @@
 instance ToJSON ScheduleRunTest where
         toJSON ScheduleRunTest'{..}
           = object
-              ["testPackageArn" .= _srtTestPackageARN,
-               "parameters" .= _srtParameters,
-               "filter" .= _srtFilter, "type" .= _srtType]
+              (catMaybes
+                 [("testPackageArn" .=) <$> _srtTestPackageARN,
+                  ("parameters" .=) <$> _srtParameters,
+                  ("filter" .=) <$> _srtFilter,
+                  Just ("type" .= _srtType)])
 
 -- | Represents a collection of one or more tests.
 --
diff --git a/test/Test/AWS/Gen/DeviceFarm.hs b/test/Test/AWS/Gen/DeviceFarm.hs
--- a/test/Test/AWS/Gen/DeviceFarm.hs
+++ b/test/Test/AWS/Gen/DeviceFarm.hs
@@ -317,148 +317,173 @@
 testListProjectsResponse = res
     "ListProjectsResponse"
     "fixture/ListProjectsResponse"
+    deviceFarm
     (Proxy :: Proxy ListProjects)
 
 testGetDevicePoolCompatibilityResponse :: GetDevicePoolCompatibilityResponse -> TestTree
 testGetDevicePoolCompatibilityResponse = res
     "GetDevicePoolCompatibilityResponse"
     "fixture/GetDevicePoolCompatibilityResponse"
+    deviceFarm
     (Proxy :: Proxy GetDevicePoolCompatibility)
 
 testListTestsResponse :: ListTestsResponse -> TestTree
 testListTestsResponse = res
     "ListTestsResponse"
     "fixture/ListTestsResponse"
+    deviceFarm
     (Proxy :: Proxy ListTests)
 
 testCreateUploadResponse :: CreateUploadResponse -> TestTree
 testCreateUploadResponse = res
     "CreateUploadResponse"
     "fixture/CreateUploadResponse"
+    deviceFarm
     (Proxy :: Proxy CreateUpload)
 
 testListArtifactsResponse :: ListArtifactsResponse -> TestTree
 testListArtifactsResponse = res
     "ListArtifactsResponse"
     "fixture/ListArtifactsResponse"
+    deviceFarm
     (Proxy :: Proxy ListArtifacts)
 
 testGetDevicePoolResponse :: GetDevicePoolResponse -> TestTree
 testGetDevicePoolResponse = res
     "GetDevicePoolResponse"
     "fixture/GetDevicePoolResponse"
+    deviceFarm
     (Proxy :: Proxy GetDevicePool)
 
 testGetUploadResponse :: GetUploadResponse -> TestTree
 testGetUploadResponse = res
     "GetUploadResponse"
     "fixture/GetUploadResponse"
+    deviceFarm
     (Proxy :: Proxy GetUpload)
 
 testListDevicePoolsResponse :: ListDevicePoolsResponse -> TestTree
 testListDevicePoolsResponse = res
     "ListDevicePoolsResponse"
     "fixture/ListDevicePoolsResponse"
+    deviceFarm
     (Proxy :: Proxy ListDevicePools)
 
 testGetTestResponse :: GetTestResponse -> TestTree
 testGetTestResponse = res
     "GetTestResponse"
     "fixture/GetTestResponse"
+    deviceFarm
     (Proxy :: Proxy GetTest)
 
 testCreateDevicePoolResponse :: CreateDevicePoolResponse -> TestTree
 testCreateDevicePoolResponse = res
     "CreateDevicePoolResponse"
     "fixture/CreateDevicePoolResponse"
+    deviceFarm
     (Proxy :: Proxy CreateDevicePool)
 
 testListRunsResponse :: ListRunsResponse -> TestTree
 testListRunsResponse = res
     "ListRunsResponse"
     "fixture/ListRunsResponse"
+    deviceFarm
     (Proxy :: Proxy ListRuns)
 
 testListJobsResponse :: ListJobsResponse -> TestTree
 testListJobsResponse = res
     "ListJobsResponse"
     "fixture/ListJobsResponse"
+    deviceFarm
     (Proxy :: Proxy ListJobs)
 
 testGetDeviceResponse :: GetDeviceResponse -> TestTree
 testGetDeviceResponse = res
     "GetDeviceResponse"
     "fixture/GetDeviceResponse"
+    deviceFarm
     (Proxy :: Proxy GetDevice)
 
 testGetJobResponse :: GetJobResponse -> TestTree
 testGetJobResponse = res
     "GetJobResponse"
     "fixture/GetJobResponse"
+    deviceFarm
     (Proxy :: Proxy GetJob)
 
 testScheduleRunResponse :: ScheduleRunResponse -> TestTree
 testScheduleRunResponse = res
     "ScheduleRunResponse"
     "fixture/ScheduleRunResponse"
+    deviceFarm
     (Proxy :: Proxy ScheduleRun)
 
 testGetRunResponse :: GetRunResponse -> TestTree
 testGetRunResponse = res
     "GetRunResponse"
     "fixture/GetRunResponse"
+    deviceFarm
     (Proxy :: Proxy GetRun)
 
 testListSamplesResponse :: ListSamplesResponse -> TestTree
 testListSamplesResponse = res
     "ListSamplesResponse"
     "fixture/ListSamplesResponse"
+    deviceFarm
     (Proxy :: Proxy ListSamples)
 
 testListSuitesResponse :: ListSuitesResponse -> TestTree
 testListSuitesResponse = res
     "ListSuitesResponse"
     "fixture/ListSuitesResponse"
+    deviceFarm
     (Proxy :: Proxy ListSuites)
 
 testGetAccountSettingsResponse :: GetAccountSettingsResponse -> TestTree
 testGetAccountSettingsResponse = res
     "GetAccountSettingsResponse"
     "fixture/GetAccountSettingsResponse"
+    deviceFarm
     (Proxy :: Proxy GetAccountSettings)
 
 testListUploadsResponse :: ListUploadsResponse -> TestTree
 testListUploadsResponse = res
     "ListUploadsResponse"
     "fixture/ListUploadsResponse"
+    deviceFarm
     (Proxy :: Proxy ListUploads)
 
 testGetSuiteResponse :: GetSuiteResponse -> TestTree
 testGetSuiteResponse = res
     "GetSuiteResponse"
     "fixture/GetSuiteResponse"
+    deviceFarm
     (Proxy :: Proxy GetSuite)
 
 testGetProjectResponse :: GetProjectResponse -> TestTree
 testGetProjectResponse = res
     "GetProjectResponse"
     "fixture/GetProjectResponse"
+    deviceFarm
     (Proxy :: Proxy GetProject)
 
 testListDevicesResponse :: ListDevicesResponse -> TestTree
 testListDevicesResponse = res
     "ListDevicesResponse"
     "fixture/ListDevicesResponse"
+    deviceFarm
     (Proxy :: Proxy ListDevices)
 
 testListUniqueProblemsResponse :: ListUniqueProblemsResponse -> TestTree
 testListUniqueProblemsResponse = res
     "ListUniqueProblemsResponse"
     "fixture/ListUniqueProblemsResponse"
+    deviceFarm
     (Proxy :: Proxy ListUniqueProblems)
 
 testCreateProjectResponse :: CreateProjectResponse -> TestTree
 testCreateProjectResponse = res
     "CreateProjectResponse"
     "fixture/CreateProjectResponse"
+    deviceFarm
     (Proxy :: Proxy CreateProject)
