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-redshift.cabal b/amazonka-redshift.cabal
--- a/amazonka-redshift.cabal
+++ b/amazonka-redshift.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-redshift
-version:               1.1.0
+version:               1.2.0
 synopsis:              Amazon Redshift SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -134,7 +134,7 @@
         , Network.AWS.Redshift.Types.Sum
 
     build-depends:
-          amazonka-core == 1.1.0.*
+          amazonka-core == 1.2.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-redshift-test
@@ -153,9 +153,9 @@
         , Test.AWS.Redshift.Internal
 
     build-depends:
-          amazonka-core == 1.1.0
-        , amazonka-test == 1.1.0
-        , amazonka-redshift == 1.1.0
+          amazonka-core == 1.2.0
+        , amazonka-test == 1.2.0
+        , amazonka-redshift == 1.2.0
         , base
         , bytestring
         , lens
diff --git a/gen/Network/AWS/Redshift.hs b/gen/Network/AWS/Redshift.hs
--- a/gen/Network/AWS/Redshift.hs
+++ b/gen/Network/AWS/Redshift.hs
@@ -42,8 +42,8 @@
 -- /See:/ <http://docs.aws.amazon.com/redshift/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.Redshift
     (
-    -- * Service
-      Redshift
+    -- * Service Configuration
+      redshift
 
     -- * Errors
     -- $errors
diff --git a/gen/Network/AWS/Redshift/AuthorizeClusterSecurityGroupIngress.hs b/gen/Network/AWS/Redshift/AuthorizeClusterSecurityGroupIngress.hs
--- a/gen/Network/AWS/Redshift/AuthorizeClusterSecurityGroupIngress.hs
+++ b/gen/Network/AWS/Redshift/AuthorizeClusterSecurityGroupIngress.hs
@@ -118,11 +118,9 @@
 
 instance AWSRequest
          AuthorizeClusterSecurityGroupIngress where
-        type Sv AuthorizeClusterSecurityGroupIngress =
-             Redshift
         type Rs AuthorizeClusterSecurityGroupIngress =
              AuthorizeClusterSecurityGroupIngressResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "AuthorizeClusterSecurityGroupIngressResult"
diff --git a/gen/Network/AWS/Redshift/AuthorizeSnapshotAccess.hs b/gen/Network/AWS/Redshift/AuthorizeSnapshotAccess.hs
--- a/gen/Network/AWS/Redshift/AuthorizeSnapshotAccess.hs
+++ b/gen/Network/AWS/Redshift/AuthorizeSnapshotAccess.hs
@@ -96,10 +96,9 @@
 asaAccountWithRestoreAccess = lens _asaAccountWithRestoreAccess (\ s a -> s{_asaAccountWithRestoreAccess = a});
 
 instance AWSRequest AuthorizeSnapshotAccess where
-        type Sv AuthorizeSnapshotAccess = Redshift
         type Rs AuthorizeSnapshotAccess =
              AuthorizeSnapshotAccessResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "AuthorizeSnapshotAccessResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/CopyClusterSnapshot.hs b/gen/Network/AWS/Redshift/CopyClusterSnapshot.hs
--- a/gen/Network/AWS/Redshift/CopyClusterSnapshot.hs
+++ b/gen/Network/AWS/Redshift/CopyClusterSnapshot.hs
@@ -120,10 +120,9 @@
 ccsTargetSnapshotIdentifier = lens _ccsTargetSnapshotIdentifier (\ s a -> s{_ccsTargetSnapshotIdentifier = a});
 
 instance AWSRequest CopyClusterSnapshot where
-        type Sv CopyClusterSnapshot = Redshift
         type Rs CopyClusterSnapshot =
              CopyClusterSnapshotResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "CopyClusterSnapshotResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/CreateCluster.hs b/gen/Network/AWS/Redshift/CreateCluster.hs
--- a/gen/Network/AWS/Redshift/CreateCluster.hs
+++ b/gen/Network/AWS/Redshift/CreateCluster.hs
@@ -444,9 +444,8 @@
 ccMasterUserPassword = lens _ccMasterUserPassword (\ s a -> s{_ccMasterUserPassword = a});
 
 instance AWSRequest CreateCluster where
-        type Sv CreateCluster = Redshift
         type Rs CreateCluster = CreateClusterResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "CreateClusterResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/CreateClusterParameterGroup.hs b/gen/Network/AWS/Redshift/CreateClusterParameterGroup.hs
--- a/gen/Network/AWS/Redshift/CreateClusterParameterGroup.hs
+++ b/gen/Network/AWS/Redshift/CreateClusterParameterGroup.hs
@@ -126,10 +126,9 @@
 ccpgDescription = lens _ccpgDescription (\ s a -> s{_ccpgDescription = a});
 
 instance AWSRequest CreateClusterParameterGroup where
-        type Sv CreateClusterParameterGroup = Redshift
         type Rs CreateClusterParameterGroup =
              CreateClusterParameterGroupResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "CreateClusterParameterGroupResult"
diff --git a/gen/Network/AWS/Redshift/CreateClusterSecurityGroup.hs b/gen/Network/AWS/Redshift/CreateClusterSecurityGroup.hs
--- a/gen/Network/AWS/Redshift/CreateClusterSecurityGroup.hs
+++ b/gen/Network/AWS/Redshift/CreateClusterSecurityGroup.hs
@@ -102,10 +102,9 @@
 creDescription = lens _creDescription (\ s a -> s{_creDescription = a});
 
 instance AWSRequest CreateClusterSecurityGroup where
-        type Sv CreateClusterSecurityGroup = Redshift
         type Rs CreateClusterSecurityGroup =
              CreateClusterSecurityGroupResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "CreateClusterSecurityGroupResult"
diff --git a/gen/Network/AWS/Redshift/CreateClusterSnapshot.hs b/gen/Network/AWS/Redshift/CreateClusterSnapshot.hs
--- a/gen/Network/AWS/Redshift/CreateClusterSnapshot.hs
+++ b/gen/Network/AWS/Redshift/CreateClusterSnapshot.hs
@@ -102,10 +102,9 @@
 ccsClusterIdentifier = lens _ccsClusterIdentifier (\ s a -> s{_ccsClusterIdentifier = a});
 
 instance AWSRequest CreateClusterSnapshot where
-        type Sv CreateClusterSnapshot = Redshift
         type Rs CreateClusterSnapshot =
              CreateClusterSnapshotResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "CreateClusterSnapshotResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/CreateClusterSubnetGroup.hs b/gen/Network/AWS/Redshift/CreateClusterSubnetGroup.hs
--- a/gen/Network/AWS/Redshift/CreateClusterSubnetGroup.hs
+++ b/gen/Network/AWS/Redshift/CreateClusterSubnetGroup.hs
@@ -113,10 +113,9 @@
 ccsgSubnetIds = lens _ccsgSubnetIds (\ s a -> s{_ccsgSubnetIds = a}) . _Coerce;
 
 instance AWSRequest CreateClusterSubnetGroup where
-        type Sv CreateClusterSubnetGroup = Redshift
         type Rs CreateClusterSubnetGroup =
              CreateClusterSubnetGroupResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "CreateClusterSubnetGroupResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/CreateEventSubscription.hs b/gen/Network/AWS/Redshift/CreateEventSubscription.hs
--- a/gen/Network/AWS/Redshift/CreateEventSubscription.hs
+++ b/gen/Network/AWS/Redshift/CreateEventSubscription.hs
@@ -186,10 +186,9 @@
 cesSNSTopicARN = lens _cesSNSTopicARN (\ s a -> s{_cesSNSTopicARN = a});
 
 instance AWSRequest CreateEventSubscription where
-        type Sv CreateEventSubscription = Redshift
         type Rs CreateEventSubscription =
              CreateEventSubscriptionResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "CreateEventSubscriptionResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/CreateHSMClientCertificate.hs b/gen/Network/AWS/Redshift/CreateHSMClientCertificate.hs
--- a/gen/Network/AWS/Redshift/CreateHSMClientCertificate.hs
+++ b/gen/Network/AWS/Redshift/CreateHSMClientCertificate.hs
@@ -89,10 +89,9 @@
 chccHSMClientCertificateIdentifier = lens _chccHSMClientCertificateIdentifier (\ s a -> s{_chccHSMClientCertificateIdentifier = a});
 
 instance AWSRequest CreateHSMClientCertificate where
-        type Sv CreateHSMClientCertificate = Redshift
         type Rs CreateHSMClientCertificate =
              CreateHSMClientCertificateResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "CreateHsmClientCertificateResult"
diff --git a/gen/Network/AWS/Redshift/CreateHSMConfiguration.hs b/gen/Network/AWS/Redshift/CreateHSMConfiguration.hs
--- a/gen/Network/AWS/Redshift/CreateHSMConfiguration.hs
+++ b/gen/Network/AWS/Redshift/CreateHSMConfiguration.hs
@@ -140,10 +140,9 @@
 chcHSMServerPublicCertificate = lens _chcHSMServerPublicCertificate (\ s a -> s{_chcHSMServerPublicCertificate = a});
 
 instance AWSRequest CreateHSMConfiguration where
-        type Sv CreateHSMConfiguration = Redshift
         type Rs CreateHSMConfiguration =
              CreateHSMConfigurationResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "CreateHsmConfigurationResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/CreateSnapshotCopyGrant.hs b/gen/Network/AWS/Redshift/CreateSnapshotCopyGrant.hs
--- a/gen/Network/AWS/Redshift/CreateSnapshotCopyGrant.hs
+++ b/gen/Network/AWS/Redshift/CreateSnapshotCopyGrant.hs
@@ -103,10 +103,9 @@
 cscgSnapshotCopyGrantName = lens _cscgSnapshotCopyGrantName (\ s a -> s{_cscgSnapshotCopyGrantName = a});
 
 instance AWSRequest CreateSnapshotCopyGrant where
-        type Sv CreateSnapshotCopyGrant = Redshift
         type Rs CreateSnapshotCopyGrant =
              CreateSnapshotCopyGrantResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "CreateSnapshotCopyGrantResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/CreateTags.hs b/gen/Network/AWS/Redshift/CreateTags.hs
--- a/gen/Network/AWS/Redshift/CreateTags.hs
+++ b/gen/Network/AWS/Redshift/CreateTags.hs
@@ -87,9 +87,8 @@
 ctTags = lens _ctTags (\ s a -> s{_ctTags = a}) . _Coerce;
 
 instance AWSRequest CreateTags where
-        type Sv CreateTags = Redshift
         type Rs CreateTags = CreateTagsResponse
-        request = postQuery
+        request = postQuery redshift
         response = receiveNull CreateTagsResponse'
 
 instance ToHeaders CreateTags where
diff --git a/gen/Network/AWS/Redshift/DeleteCluster.hs b/gen/Network/AWS/Redshift/DeleteCluster.hs
--- a/gen/Network/AWS/Redshift/DeleteCluster.hs
+++ b/gen/Network/AWS/Redshift/DeleteCluster.hs
@@ -127,9 +127,8 @@
 dClusterIdentifier = lens _dClusterIdentifier (\ s a -> s{_dClusterIdentifier = a});
 
 instance AWSRequest DeleteCluster where
-        type Sv DeleteCluster = Redshift
         type Rs DeleteCluster = DeleteClusterResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DeleteClusterResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/DeleteClusterParameterGroup.hs b/gen/Network/AWS/Redshift/DeleteClusterParameterGroup.hs
--- a/gen/Network/AWS/Redshift/DeleteClusterParameterGroup.hs
+++ b/gen/Network/AWS/Redshift/DeleteClusterParameterGroup.hs
@@ -71,10 +71,9 @@
 dParameterGroupName = lens _dParameterGroupName (\ s a -> s{_dParameterGroupName = a});
 
 instance AWSRequest DeleteClusterParameterGroup where
-        type Sv DeleteClusterParameterGroup = Redshift
         type Rs DeleteClusterParameterGroup =
              DeleteClusterParameterGroupResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveNull DeleteClusterParameterGroupResponse'
 
diff --git a/gen/Network/AWS/Redshift/DeleteClusterSecurityGroup.hs b/gen/Network/AWS/Redshift/DeleteClusterSecurityGroup.hs
--- a/gen/Network/AWS/Redshift/DeleteClusterSecurityGroup.hs
+++ b/gen/Network/AWS/Redshift/DeleteClusterSecurityGroup.hs
@@ -72,10 +72,9 @@
 dClusterSecurityGroupName = lens _dClusterSecurityGroupName (\ s a -> s{_dClusterSecurityGroupName = a});
 
 instance AWSRequest DeleteClusterSecurityGroup where
-        type Sv DeleteClusterSecurityGroup = Redshift
         type Rs DeleteClusterSecurityGroup =
              DeleteClusterSecurityGroupResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveNull DeleteClusterSecurityGroupResponse'
 
diff --git a/gen/Network/AWS/Redshift/DeleteClusterSnapshot.hs b/gen/Network/AWS/Redshift/DeleteClusterSnapshot.hs
--- a/gen/Network/AWS/Redshift/DeleteClusterSnapshot.hs
+++ b/gen/Network/AWS/Redshift/DeleteClusterSnapshot.hs
@@ -94,10 +94,9 @@
 dcsSnapshotIdentifier = lens _dcsSnapshotIdentifier (\ s a -> s{_dcsSnapshotIdentifier = a});
 
 instance AWSRequest DeleteClusterSnapshot where
-        type Sv DeleteClusterSnapshot = Redshift
         type Rs DeleteClusterSnapshot =
              DeleteClusterSnapshotResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DeleteClusterSnapshotResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/DeleteClusterSubnetGroup.hs b/gen/Network/AWS/Redshift/DeleteClusterSubnetGroup.hs
--- a/gen/Network/AWS/Redshift/DeleteClusterSubnetGroup.hs
+++ b/gen/Network/AWS/Redshift/DeleteClusterSubnetGroup.hs
@@ -63,10 +63,9 @@
 dcsgClusterSubnetGroupName = lens _dcsgClusterSubnetGroupName (\ s a -> s{_dcsgClusterSubnetGroupName = a});
 
 instance AWSRequest DeleteClusterSubnetGroup where
-        type Sv DeleteClusterSubnetGroup = Redshift
         type Rs DeleteClusterSubnetGroup =
              DeleteClusterSubnetGroupResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveNull DeleteClusterSubnetGroupResponse'
 
diff --git a/gen/Network/AWS/Redshift/DeleteEventSubscription.hs b/gen/Network/AWS/Redshift/DeleteEventSubscription.hs
--- a/gen/Network/AWS/Redshift/DeleteEventSubscription.hs
+++ b/gen/Network/AWS/Redshift/DeleteEventSubscription.hs
@@ -66,10 +66,9 @@
 desSubscriptionName = lens _desSubscriptionName (\ s a -> s{_desSubscriptionName = a});
 
 instance AWSRequest DeleteEventSubscription where
-        type Sv DeleteEventSubscription = Redshift
         type Rs DeleteEventSubscription =
              DeleteEventSubscriptionResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveNull DeleteEventSubscriptionResponse'
 
diff --git a/gen/Network/AWS/Redshift/DeleteHSMClientCertificate.hs b/gen/Network/AWS/Redshift/DeleteHSMClientCertificate.hs
--- a/gen/Network/AWS/Redshift/DeleteHSMClientCertificate.hs
+++ b/gen/Network/AWS/Redshift/DeleteHSMClientCertificate.hs
@@ -65,10 +65,9 @@
 dhsmccHSMClientCertificateIdentifier = lens _dhsmccHSMClientCertificateIdentifier (\ s a -> s{_dhsmccHSMClientCertificateIdentifier = a});
 
 instance AWSRequest DeleteHSMClientCertificate where
-        type Sv DeleteHSMClientCertificate = Redshift
         type Rs DeleteHSMClientCertificate =
              DeleteHSMClientCertificateResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveNull DeleteHSMClientCertificateResponse'
 
diff --git a/gen/Network/AWS/Redshift/DeleteHSMConfiguration.hs b/gen/Network/AWS/Redshift/DeleteHSMConfiguration.hs
--- a/gen/Network/AWS/Redshift/DeleteHSMConfiguration.hs
+++ b/gen/Network/AWS/Redshift/DeleteHSMConfiguration.hs
@@ -65,10 +65,9 @@
 dhcHSMConfigurationIdentifier = lens _dhcHSMConfigurationIdentifier (\ s a -> s{_dhcHSMConfigurationIdentifier = a});
 
 instance AWSRequest DeleteHSMConfiguration where
-        type Sv DeleteHSMConfiguration = Redshift
         type Rs DeleteHSMConfiguration =
              DeleteHSMConfigurationResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveNull DeleteHSMConfigurationResponse'
 
diff --git a/gen/Network/AWS/Redshift/DeleteSnapshotCopyGrant.hs b/gen/Network/AWS/Redshift/DeleteSnapshotCopyGrant.hs
--- a/gen/Network/AWS/Redshift/DeleteSnapshotCopyGrant.hs
+++ b/gen/Network/AWS/Redshift/DeleteSnapshotCopyGrant.hs
@@ -65,10 +65,9 @@
 dscgSnapshotCopyGrantName = lens _dscgSnapshotCopyGrantName (\ s a -> s{_dscgSnapshotCopyGrantName = a});
 
 instance AWSRequest DeleteSnapshotCopyGrant where
-        type Sv DeleteSnapshotCopyGrant = Redshift
         type Rs DeleteSnapshotCopyGrant =
              DeleteSnapshotCopyGrantResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveNull DeleteSnapshotCopyGrantResponse'
 
diff --git a/gen/Network/AWS/Redshift/DeleteTags.hs b/gen/Network/AWS/Redshift/DeleteTags.hs
--- a/gen/Network/AWS/Redshift/DeleteTags.hs
+++ b/gen/Network/AWS/Redshift/DeleteTags.hs
@@ -76,9 +76,8 @@
 dTagKeys = lens _dTagKeys (\ s a -> s{_dTagKeys = a}) . _Coerce;
 
 instance AWSRequest DeleteTags where
-        type Sv DeleteTags = Redshift
         type Rs DeleteTags = DeleteTagsResponse
-        request = postQuery
+        request = postQuery redshift
         response = receiveNull DeleteTagsResponse'
 
 instance ToHeaders DeleteTags where
diff --git a/gen/Network/AWS/Redshift/DescribeClusterParameterGroups.hs b/gen/Network/AWS/Redshift/DescribeClusterParameterGroups.hs
--- a/gen/Network/AWS/Redshift/DescribeClusterParameterGroups.hs
+++ b/gen/Network/AWS/Redshift/DescribeClusterParameterGroups.hs
@@ -162,10 +162,9 @@
 
 instance AWSRequest DescribeClusterParameterGroups
          where
-        type Sv DescribeClusterParameterGroups = Redshift
         type Rs DescribeClusterParameterGroups =
              DescribeClusterParameterGroupsResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "DescribeClusterParameterGroupsResult"
diff --git a/gen/Network/AWS/Redshift/DescribeClusterParameters.hs b/gen/Network/AWS/Redshift/DescribeClusterParameters.hs
--- a/gen/Network/AWS/Redshift/DescribeClusterParameters.hs
+++ b/gen/Network/AWS/Redshift/DescribeClusterParameters.hs
@@ -135,10 +135,9 @@
             Just $ rq & dcpsMarker .~ rs ^. dcprsMarker
 
 instance AWSRequest DescribeClusterParameters where
-        type Sv DescribeClusterParameters = Redshift
         type Rs DescribeClusterParameters =
              DescribeClusterParametersResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DescribeClusterParametersResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/DescribeClusterSecurityGroups.hs b/gen/Network/AWS/Redshift/DescribeClusterSecurityGroups.hs
--- a/gen/Network/AWS/Redshift/DescribeClusterSecurityGroups.hs
+++ b/gen/Network/AWS/Redshift/DescribeClusterSecurityGroups.hs
@@ -162,10 +162,9 @@
 
 instance AWSRequest DescribeClusterSecurityGroups
          where
-        type Sv DescribeClusterSecurityGroups = Redshift
         type Rs DescribeClusterSecurityGroups =
              DescribeClusterSecurityGroupsResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "DescribeClusterSecurityGroupsResult"
diff --git a/gen/Network/AWS/Redshift/DescribeClusterSnapshots.hs b/gen/Network/AWS/Redshift/DescribeClusterSnapshots.hs
--- a/gen/Network/AWS/Redshift/DescribeClusterSnapshots.hs
+++ b/gen/Network/AWS/Redshift/DescribeClusterSnapshots.hs
@@ -216,10 +216,9 @@
             Just $ rq & dcssMarker .~ rs ^. dcssrsMarker
 
 instance AWSRequest DescribeClusterSnapshots where
-        type Sv DescribeClusterSnapshots = Redshift
         type Rs DescribeClusterSnapshots =
              DescribeClusterSnapshotsResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DescribeClusterSnapshotsResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/DescribeClusterSubnetGroups.hs b/gen/Network/AWS/Redshift/DescribeClusterSubnetGroups.hs
--- a/gen/Network/AWS/Redshift/DescribeClusterSubnetGroups.hs
+++ b/gen/Network/AWS/Redshift/DescribeClusterSubnetGroups.hs
@@ -151,10 +151,9 @@
             Just $ rq & dcsgsMarker .~ rs ^. dcsgrsMarker
 
 instance AWSRequest DescribeClusterSubnetGroups where
-        type Sv DescribeClusterSubnetGroups = Redshift
         type Rs DescribeClusterSubnetGroups =
              DescribeClusterSubnetGroupsResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "DescribeClusterSubnetGroupsResult"
diff --git a/gen/Network/AWS/Redshift/DescribeClusterVersions.hs b/gen/Network/AWS/Redshift/DescribeClusterVersions.hs
--- a/gen/Network/AWS/Redshift/DescribeClusterVersions.hs
+++ b/gen/Network/AWS/Redshift/DescribeClusterVersions.hs
@@ -130,10 +130,9 @@
             Just $ rq & dcvMarker .~ rs ^. dcvrsMarker
 
 instance AWSRequest DescribeClusterVersions where
-        type Sv DescribeClusterVersions = Redshift
         type Rs DescribeClusterVersions =
              DescribeClusterVersionsResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DescribeClusterVersionsResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/DescribeClusters.hs b/gen/Network/AWS/Redshift/DescribeClusters.hs
--- a/gen/Network/AWS/Redshift/DescribeClusters.hs
+++ b/gen/Network/AWS/Redshift/DescribeClusters.hs
@@ -158,9 +158,8 @@
             Just $ rq & dcMarker .~ rs ^. dcrsMarker
 
 instance AWSRequest DescribeClusters where
-        type Sv DescribeClusters = Redshift
         type Rs DescribeClusters = DescribeClustersResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DescribeClustersResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/DescribeDefaultClusterParameters.hs b/gen/Network/AWS/Redshift/DescribeDefaultClusterParameters.hs
--- a/gen/Network/AWS/Redshift/DescribeDefaultClusterParameters.hs
+++ b/gen/Network/AWS/Redshift/DescribeDefaultClusterParameters.hs
@@ -126,10 +126,9 @@
 
 instance AWSRequest DescribeDefaultClusterParameters
          where
-        type Sv DescribeDefaultClusterParameters = Redshift
         type Rs DescribeDefaultClusterParameters =
              DescribeDefaultClusterParametersResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "DescribeDefaultClusterParametersResult"
diff --git a/gen/Network/AWS/Redshift/DescribeEventCategories.hs b/gen/Network/AWS/Redshift/DescribeEventCategories.hs
--- a/gen/Network/AWS/Redshift/DescribeEventCategories.hs
+++ b/gen/Network/AWS/Redshift/DescribeEventCategories.hs
@@ -73,10 +73,9 @@
 decSourceType = lens _decSourceType (\ s a -> s{_decSourceType = a});
 
 instance AWSRequest DescribeEventCategories where
-        type Sv DescribeEventCategories = Redshift
         type Rs DescribeEventCategories =
              DescribeEventCategoriesResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DescribeEventCategoriesResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/DescribeEventSubscriptions.hs b/gen/Network/AWS/Redshift/DescribeEventSubscriptions.hs
--- a/gen/Network/AWS/Redshift/DescribeEventSubscriptions.hs
+++ b/gen/Network/AWS/Redshift/DescribeEventSubscriptions.hs
@@ -112,10 +112,9 @@
             Just $ rq & dMarker .~ rs ^. desrsMarker
 
 instance AWSRequest DescribeEventSubscriptions where
-        type Sv DescribeEventSubscriptions = Redshift
         type Rs DescribeEventSubscriptions =
              DescribeEventSubscriptionsResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "DescribeEventSubscriptionsResult"
diff --git a/gen/Network/AWS/Redshift/DescribeEvents.hs b/gen/Network/AWS/Redshift/DescribeEvents.hs
--- a/gen/Network/AWS/Redshift/DescribeEvents.hs
+++ b/gen/Network/AWS/Redshift/DescribeEvents.hs
@@ -189,9 +189,8 @@
             Just $ rq & deMarker .~ rs ^. dersMarker
 
 instance AWSRequest DescribeEvents where
-        type Sv DescribeEvents = Redshift
         type Rs DescribeEvents = DescribeEventsResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DescribeEventsResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/DescribeHSMClientCertificates.hs b/gen/Network/AWS/Redshift/DescribeHSMClientCertificates.hs
--- a/gen/Network/AWS/Redshift/DescribeHSMClientCertificates.hs
+++ b/gen/Network/AWS/Redshift/DescribeHSMClientCertificates.hs
@@ -155,10 +155,9 @@
 
 instance AWSRequest DescribeHSMClientCertificates
          where
-        type Sv DescribeHSMClientCertificates = Redshift
         type Rs DescribeHSMClientCertificates =
              DescribeHSMClientCertificatesResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "DescribeHsmClientCertificatesResult"
diff --git a/gen/Network/AWS/Redshift/DescribeHSMConfigurations.hs b/gen/Network/AWS/Redshift/DescribeHSMConfigurations.hs
--- a/gen/Network/AWS/Redshift/DescribeHSMConfigurations.hs
+++ b/gen/Network/AWS/Redshift/DescribeHSMConfigurations.hs
@@ -153,10 +153,9 @@
             Just $ rq & dhsmcMarker .~ rs ^. dhcrsMarker
 
 instance AWSRequest DescribeHSMConfigurations where
-        type Sv DescribeHSMConfigurations = Redshift
         type Rs DescribeHSMConfigurations =
              DescribeHSMConfigurationsResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DescribeHsmConfigurationsResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/DescribeLoggingStatus.hs b/gen/Network/AWS/Redshift/DescribeLoggingStatus.hs
--- a/gen/Network/AWS/Redshift/DescribeLoggingStatus.hs
+++ b/gen/Network/AWS/Redshift/DescribeLoggingStatus.hs
@@ -75,9 +75,8 @@
 dlsClusterIdentifier = lens _dlsClusterIdentifier (\ s a -> s{_dlsClusterIdentifier = a});
 
 instance AWSRequest DescribeLoggingStatus where
-        type Sv DescribeLoggingStatus = Redshift
         type Rs DescribeLoggingStatus = LoggingStatus
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DescribeLoggingStatusResult"
               (\ s h x -> parseXML x)
diff --git a/gen/Network/AWS/Redshift/DescribeOrderableClusterOptions.hs b/gen/Network/AWS/Redshift/DescribeOrderableClusterOptions.hs
--- a/gen/Network/AWS/Redshift/DescribeOrderableClusterOptions.hs
+++ b/gen/Network/AWS/Redshift/DescribeOrderableClusterOptions.hs
@@ -138,10 +138,9 @@
 
 instance AWSRequest DescribeOrderableClusterOptions
          where
-        type Sv DescribeOrderableClusterOptions = Redshift
         type Rs DescribeOrderableClusterOptions =
              DescribeOrderableClusterOptionsResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "DescribeOrderableClusterOptionsResult"
diff --git a/gen/Network/AWS/Redshift/DescribeReservedNodeOfferings.hs b/gen/Network/AWS/Redshift/DescribeReservedNodeOfferings.hs
--- a/gen/Network/AWS/Redshift/DescribeReservedNodeOfferings.hs
+++ b/gen/Network/AWS/Redshift/DescribeReservedNodeOfferings.hs
@@ -120,10 +120,9 @@
 
 instance AWSRequest DescribeReservedNodeOfferings
          where
-        type Sv DescribeReservedNodeOfferings = Redshift
         type Rs DescribeReservedNodeOfferings =
              DescribeReservedNodeOfferingsResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "DescribeReservedNodeOfferingsResult"
diff --git a/gen/Network/AWS/Redshift/DescribeReservedNodes.hs b/gen/Network/AWS/Redshift/DescribeReservedNodes.hs
--- a/gen/Network/AWS/Redshift/DescribeReservedNodes.hs
+++ b/gen/Network/AWS/Redshift/DescribeReservedNodes.hs
@@ -109,10 +109,9 @@
             Just $ rq & drnMarker .~ rs ^. drnrsMarker
 
 instance AWSRequest DescribeReservedNodes where
-        type Sv DescribeReservedNodes = Redshift
         type Rs DescribeReservedNodes =
              DescribeReservedNodesResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DescribeReservedNodesResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/DescribeResize.hs b/gen/Network/AWS/Redshift/DescribeResize.hs
--- a/gen/Network/AWS/Redshift/DescribeResize.hs
+++ b/gen/Network/AWS/Redshift/DescribeResize.hs
@@ -89,9 +89,8 @@
 drClusterIdentifier = lens _drClusterIdentifier (\ s a -> s{_drClusterIdentifier = a});
 
 instance AWSRequest DescribeResize where
-        type Sv DescribeResize = Redshift
         type Rs DescribeResize = DescribeResizeResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DescribeResizeResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/DescribeSnapshotCopyGrants.hs b/gen/Network/AWS/Redshift/DescribeSnapshotCopyGrants.hs
--- a/gen/Network/AWS/Redshift/DescribeSnapshotCopyGrants.hs
+++ b/gen/Network/AWS/Redshift/DescribeSnapshotCopyGrants.hs
@@ -135,10 +135,9 @@
 dscgsSnapshotCopyGrantName = lens _dscgsSnapshotCopyGrantName (\ s a -> s{_dscgsSnapshotCopyGrantName = a});
 
 instance AWSRequest DescribeSnapshotCopyGrants where
-        type Sv DescribeSnapshotCopyGrants = Redshift
         type Rs DescribeSnapshotCopyGrants =
              DescribeSnapshotCopyGrantsResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "DescribeSnapshotCopyGrantsResult"
diff --git a/gen/Network/AWS/Redshift/DescribeTags.hs b/gen/Network/AWS/Redshift/DescribeTags.hs
--- a/gen/Network/AWS/Redshift/DescribeTags.hs
+++ b/gen/Network/AWS/Redshift/DescribeTags.hs
@@ -171,9 +171,8 @@
 dtMarker = lens _dtMarker (\ s a -> s{_dtMarker = a});
 
 instance AWSRequest DescribeTags where
-        type Sv DescribeTags = Redshift
         type Rs DescribeTags = DescribeTagsResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DescribeTagsResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/DisableLogging.hs b/gen/Network/AWS/Redshift/DisableLogging.hs
--- a/gen/Network/AWS/Redshift/DisableLogging.hs
+++ b/gen/Network/AWS/Redshift/DisableLogging.hs
@@ -75,9 +75,8 @@
 dlClusterIdentifier = lens _dlClusterIdentifier (\ s a -> s{_dlClusterIdentifier = a});
 
 instance AWSRequest DisableLogging where
-        type Sv DisableLogging = Redshift
         type Rs DisableLogging = LoggingStatus
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DisableLoggingResult"
               (\ s h x -> parseXML x)
diff --git a/gen/Network/AWS/Redshift/DisableSnapshotCopy.hs b/gen/Network/AWS/Redshift/DisableSnapshotCopy.hs
--- a/gen/Network/AWS/Redshift/DisableSnapshotCopy.hs
+++ b/gen/Network/AWS/Redshift/DisableSnapshotCopy.hs
@@ -78,10 +78,9 @@
 dscClusterIdentifier = lens _dscClusterIdentifier (\ s a -> s{_dscClusterIdentifier = a});
 
 instance AWSRequest DisableSnapshotCopy where
-        type Sv DisableSnapshotCopy = Redshift
         type Rs DisableSnapshotCopy =
              DisableSnapshotCopyResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "DisableSnapshotCopyResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/EnableLogging.hs b/gen/Network/AWS/Redshift/EnableLogging.hs
--- a/gen/Network/AWS/Redshift/EnableLogging.hs
+++ b/gen/Network/AWS/Redshift/EnableLogging.hs
@@ -111,9 +111,8 @@
 elBucketName = lens _elBucketName (\ s a -> s{_elBucketName = a});
 
 instance AWSRequest EnableLogging where
-        type Sv EnableLogging = Redshift
         type Rs EnableLogging = LoggingStatus
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "EnableLoggingResult"
               (\ s h x -> parseXML x)
diff --git a/gen/Network/AWS/Redshift/EnableSnapshotCopy.hs b/gen/Network/AWS/Redshift/EnableSnapshotCopy.hs
--- a/gen/Network/AWS/Redshift/EnableSnapshotCopy.hs
+++ b/gen/Network/AWS/Redshift/EnableSnapshotCopy.hs
@@ -111,10 +111,9 @@
 escDestinationRegion = lens _escDestinationRegion (\ s a -> s{_escDestinationRegion = a});
 
 instance AWSRequest EnableSnapshotCopy where
-        type Sv EnableSnapshotCopy = Redshift
         type Rs EnableSnapshotCopy =
              EnableSnapshotCopyResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "EnableSnapshotCopyResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/ModifyCluster.hs b/gen/Network/AWS/Redshift/ModifyCluster.hs
--- a/gen/Network/AWS/Redshift/ModifyCluster.hs
+++ b/gen/Network/AWS/Redshift/ModifyCluster.hs
@@ -331,9 +331,8 @@
 mcClusterIdentifier = lens _mcClusterIdentifier (\ s a -> s{_mcClusterIdentifier = a});
 
 instance AWSRequest ModifyCluster where
-        type Sv ModifyCluster = Redshift
         type Rs ModifyCluster = ModifyClusterResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "ModifyClusterResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/ModifyClusterParameterGroup.hs b/gen/Network/AWS/Redshift/ModifyClusterParameterGroup.hs
--- a/gen/Network/AWS/Redshift/ModifyClusterParameterGroup.hs
+++ b/gen/Network/AWS/Redshift/ModifyClusterParameterGroup.hs
@@ -89,10 +89,9 @@
 mcpgParameters = lens _mcpgParameters (\ s a -> s{_mcpgParameters = a}) . _Coerce;
 
 instance AWSRequest ModifyClusterParameterGroup where
-        type Sv ModifyClusterParameterGroup = Redshift
         type Rs ModifyClusterParameterGroup =
              ClusterParameterGroupNameMessage
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "ModifyClusterParameterGroupResult"
diff --git a/gen/Network/AWS/Redshift/ModifyClusterSubnetGroup.hs b/gen/Network/AWS/Redshift/ModifyClusterSubnetGroup.hs
--- a/gen/Network/AWS/Redshift/ModifyClusterSubnetGroup.hs
+++ b/gen/Network/AWS/Redshift/ModifyClusterSubnetGroup.hs
@@ -89,10 +89,9 @@
 mcsgSubnetIds = lens _mcsgSubnetIds (\ s a -> s{_mcsgSubnetIds = a}) . _Coerce;
 
 instance AWSRequest ModifyClusterSubnetGroup where
-        type Sv ModifyClusterSubnetGroup = Redshift
         type Rs ModifyClusterSubnetGroup =
              ModifyClusterSubnetGroupResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "ModifyClusterSubnetGroupResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/ModifyEventSubscription.hs b/gen/Network/AWS/Redshift/ModifyEventSubscription.hs
--- a/gen/Network/AWS/Redshift/ModifyEventSubscription.hs
+++ b/gen/Network/AWS/Redshift/ModifyEventSubscription.hs
@@ -146,10 +146,9 @@
 mesSubscriptionName = lens _mesSubscriptionName (\ s a -> s{_mesSubscriptionName = a});
 
 instance AWSRequest ModifyEventSubscription where
-        type Sv ModifyEventSubscription = Redshift
         type Rs ModifyEventSubscription =
              ModifyEventSubscriptionResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "ModifyEventSubscriptionResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/ModifySnapshotCopyRetentionPeriod.hs b/gen/Network/AWS/Redshift/ModifySnapshotCopyRetentionPeriod.hs
--- a/gen/Network/AWS/Redshift/ModifySnapshotCopyRetentionPeriod.hs
+++ b/gen/Network/AWS/Redshift/ModifySnapshotCopyRetentionPeriod.hs
@@ -93,10 +93,9 @@
 
 instance AWSRequest ModifySnapshotCopyRetentionPeriod
          where
-        type Sv ModifySnapshotCopyRetentionPeriod = Redshift
         type Rs ModifySnapshotCopyRetentionPeriod =
              ModifySnapshotCopyRetentionPeriodResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "ModifySnapshotCopyRetentionPeriodResult"
diff --git a/gen/Network/AWS/Redshift/PurchaseReservedNodeOffering.hs b/gen/Network/AWS/Redshift/PurchaseReservedNodeOffering.hs
--- a/gen/Network/AWS/Redshift/PurchaseReservedNodeOffering.hs
+++ b/gen/Network/AWS/Redshift/PurchaseReservedNodeOffering.hs
@@ -90,10 +90,9 @@
 
 instance AWSRequest PurchaseReservedNodeOffering
          where
-        type Sv PurchaseReservedNodeOffering = Redshift
         type Rs PurchaseReservedNodeOffering =
              PurchaseReservedNodeOfferingResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "PurchaseReservedNodeOfferingResult"
diff --git a/gen/Network/AWS/Redshift/RebootCluster.hs b/gen/Network/AWS/Redshift/RebootCluster.hs
--- a/gen/Network/AWS/Redshift/RebootCluster.hs
+++ b/gen/Network/AWS/Redshift/RebootCluster.hs
@@ -75,9 +75,8 @@
 rcClusterIdentifier = lens _rcClusterIdentifier (\ s a -> s{_rcClusterIdentifier = a});
 
 instance AWSRequest RebootCluster where
-        type Sv RebootCluster = Redshift
         type Rs RebootCluster = RebootClusterResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "RebootClusterResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/ResetClusterParameterGroup.hs b/gen/Network/AWS/Redshift/ResetClusterParameterGroup.hs
--- a/gen/Network/AWS/Redshift/ResetClusterParameterGroup.hs
+++ b/gen/Network/AWS/Redshift/ResetClusterParameterGroup.hs
@@ -97,10 +97,9 @@
 rcpgParameterGroupName = lens _rcpgParameterGroupName (\ s a -> s{_rcpgParameterGroupName = a});
 
 instance AWSRequest ResetClusterParameterGroup where
-        type Sv ResetClusterParameterGroup = Redshift
         type Rs ResetClusterParameterGroup =
              ClusterParameterGroupNameMessage
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "ResetClusterParameterGroupResult"
diff --git a/gen/Network/AWS/Redshift/RestoreFromClusterSnapshot.hs b/gen/Network/AWS/Redshift/RestoreFromClusterSnapshot.hs
--- a/gen/Network/AWS/Redshift/RestoreFromClusterSnapshot.hs
+++ b/gen/Network/AWS/Redshift/RestoreFromClusterSnapshot.hs
@@ -332,10 +332,9 @@
 rfcsSnapshotIdentifier = lens _rfcsSnapshotIdentifier (\ s a -> s{_rfcsSnapshotIdentifier = a});
 
 instance AWSRequest RestoreFromClusterSnapshot where
-        type Sv RestoreFromClusterSnapshot = Redshift
         type Rs RestoreFromClusterSnapshot =
              RestoreFromClusterSnapshotResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "RestoreFromClusterSnapshotResult"
diff --git a/gen/Network/AWS/Redshift/RevokeClusterSecurityGroupIngress.hs b/gen/Network/AWS/Redshift/RevokeClusterSecurityGroupIngress.hs
--- a/gen/Network/AWS/Redshift/RevokeClusterSecurityGroupIngress.hs
+++ b/gen/Network/AWS/Redshift/RevokeClusterSecurityGroupIngress.hs
@@ -112,10 +112,9 @@
 
 instance AWSRequest RevokeClusterSecurityGroupIngress
          where
-        type Sv RevokeClusterSecurityGroupIngress = Redshift
         type Rs RevokeClusterSecurityGroupIngress =
              RevokeClusterSecurityGroupIngressResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper
               "RevokeClusterSecurityGroupIngressResult"
diff --git a/gen/Network/AWS/Redshift/RevokeSnapshotAccess.hs b/gen/Network/AWS/Redshift/RevokeSnapshotAccess.hs
--- a/gen/Network/AWS/Redshift/RevokeSnapshotAccess.hs
+++ b/gen/Network/AWS/Redshift/RevokeSnapshotAccess.hs
@@ -97,10 +97,9 @@
 rsaAccountWithRestoreAccess = lens _rsaAccountWithRestoreAccess (\ s a -> s{_rsaAccountWithRestoreAccess = a});
 
 instance AWSRequest RevokeSnapshotAccess where
-        type Sv RevokeSnapshotAccess = Redshift
         type Rs RevokeSnapshotAccess =
              RevokeSnapshotAccessResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "RevokeSnapshotAccessResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/RotateEncryptionKey.hs b/gen/Network/AWS/Redshift/RotateEncryptionKey.hs
--- a/gen/Network/AWS/Redshift/RotateEncryptionKey.hs
+++ b/gen/Network/AWS/Redshift/RotateEncryptionKey.hs
@@ -72,10 +72,9 @@
 rekClusterIdentifier = lens _rekClusterIdentifier (\ s a -> s{_rekClusterIdentifier = a});
 
 instance AWSRequest RotateEncryptionKey where
-        type Sv RotateEncryptionKey = Redshift
         type Rs RotateEncryptionKey =
              RotateEncryptionKeyResponse
-        request = postQuery
+        request = postQuery redshift
         response
           = receiveXMLWrapper "RotateEncryptionKeyResult"
               (\ s h x ->
diff --git a/gen/Network/AWS/Redshift/Types.hs b/gen/Network/AWS/Redshift/Types.hs
--- a/gen/Network/AWS/Redshift/Types.hs
+++ b/gen/Network/AWS/Redshift/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.Redshift.Types
     (
-    -- * Service
-      Redshift
+    -- * Service Configuration
+      redshift
 
     -- * Errors
     , _LimitExceededFault
@@ -476,39 +475,36 @@
 import           Network.AWS.Redshift.Types.Sum
 import           Network.AWS.Sign.V4
 
--- | Version @2012-12-01@ of the Amazon Redshift SDK.
-data Redshift
-
-instance AWSService Redshift where
-    type Sg Redshift = V4
-    service = const svc
-      where
-        svc =
-            Service
-            { _svcAbbrev = "Redshift"
-            , _svcPrefix = "redshift"
-            , _svcVersion = "2012-12-01"
-            , _svcEndpoint = defaultEndpoint svc
-            , _svcTimeout = Just 70
-            , _svcStatus = statusSuccess
-            , _svcError = parseXMLError
-            , _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-12-01' of the Amazon Redshift SDK configuration.
+redshift :: Service
+redshift =
+    Service
+    { _svcAbbrev = "Redshift"
+    , _svcSigner = v4
+    , _svcPrefix = "redshift"
+    , _svcVersion = "2012-12-01"
+    , _svcEndpoint = defaultEndpoint redshift
+    , _svcTimeout = Just 70
+    , _svcCheck = statusSuccess
+    , _svcError = parseXMLError
+    , _svcRetry = retry
+    }
+  where
+    retry =
+        Exponential
+        { _retryBase = 5.0e-2
+        , _retryGrowth = 2
+        , _retryAttempts = 5
+        , _retryCheck = check
+        }
+    check e
+      | has (hasCode "ThrottlingException" . hasStatus 400) e =
+          Just "throttling_exception"
+      | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
+      | has (hasStatus 503) e = Just "service_unavailable"
+      | has (hasStatus 500) e = Just "general_server_error"
+      | has (hasStatus 509) e = Just "limit_exceeded"
+      | otherwise = Nothing
 
 -- | The encryption key has exceeded its grant limit in AWS KMS.
 _LimitExceededFault :: AsError a => Getting (First ServiceError) a ServiceError
diff --git a/gen/Network/AWS/Redshift/Types/Product.hs b/gen/Network/AWS/Redshift/Types/Product.hs
--- a/gen/Network/AWS/Redshift/Types/Product.hs
+++ b/gen/Network/AWS/Redshift/Types/Product.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE OverloadedStrings  #-}
 {-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
diff --git a/test/Test/AWS/Gen/Redshift.hs b/test/Test/AWS/Gen/Redshift.hs
--- a/test/Test/AWS/Gen/Redshift.hs
+++ b/test/Test/AWS/Gen/Redshift.hs
@@ -691,352 +691,411 @@
 testDescribeClustersResponse = res
     "DescribeClustersResponse"
     "fixture/DescribeClustersResponse"
+    redshift
     (Proxy :: Proxy DescribeClusters)
 
 testDescribeTagsResponse :: DescribeTagsResponse -> TestTree
 testDescribeTagsResponse = res
     "DescribeTagsResponse"
     "fixture/DescribeTagsResponse"
+    redshift
     (Proxy :: Proxy DescribeTags)
 
 testModifyEventSubscriptionResponse :: ModifyEventSubscriptionResponse -> TestTree
 testModifyEventSubscriptionResponse = res
     "ModifyEventSubscriptionResponse"
     "fixture/ModifyEventSubscriptionResponse"
+    redshift
     (Proxy :: Proxy ModifyEventSubscription)
 
 testDisableLoggingResponse :: LoggingStatus -> TestTree
 testDisableLoggingResponse = res
     "DisableLoggingResponse"
     "fixture/DisableLoggingResponse"
+    redshift
     (Proxy :: Proxy DisableLogging)
 
 testPurchaseReservedNodeOfferingResponse :: PurchaseReservedNodeOfferingResponse -> TestTree
 testPurchaseReservedNodeOfferingResponse = res
     "PurchaseReservedNodeOfferingResponse"
     "fixture/PurchaseReservedNodeOfferingResponse"
+    redshift
     (Proxy :: Proxy PurchaseReservedNodeOffering)
 
 testDeleteClusterSubnetGroupResponse :: DeleteClusterSubnetGroupResponse -> TestTree
 testDeleteClusterSubnetGroupResponse = res
     "DeleteClusterSubnetGroupResponse"
     "fixture/DeleteClusterSubnetGroupResponse"
+    redshift
     (Proxy :: Proxy DeleteClusterSubnetGroup)
 
 testDeleteClusterSnapshotResponse :: DeleteClusterSnapshotResponse -> TestTree
 testDeleteClusterSnapshotResponse = res
     "DeleteClusterSnapshotResponse"
     "fixture/DeleteClusterSnapshotResponse"
+    redshift
     (Proxy :: Proxy DeleteClusterSnapshot)
 
 testDescribeEventsResponse :: DescribeEventsResponse -> TestTree
 testDescribeEventsResponse = res
     "DescribeEventsResponse"
     "fixture/DescribeEventsResponse"
+    redshift
     (Proxy :: Proxy DescribeEvents)
 
 testDescribeReservedNodeOfferingsResponse :: DescribeReservedNodeOfferingsResponse -> TestTree
 testDescribeReservedNodeOfferingsResponse = res
     "DescribeReservedNodeOfferingsResponse"
     "fixture/DescribeReservedNodeOfferingsResponse"
+    redshift
     (Proxy :: Proxy DescribeReservedNodeOfferings)
 
 testDescribeClusterParameterGroupsResponse :: DescribeClusterParameterGroupsResponse -> TestTree
 testDescribeClusterParameterGroupsResponse = res
     "DescribeClusterParameterGroupsResponse"
     "fixture/DescribeClusterParameterGroupsResponse"
+    redshift
     (Proxy :: Proxy DescribeClusterParameterGroups)
 
 testCreateClusterSubnetGroupResponse :: CreateClusterSubnetGroupResponse -> TestTree
 testCreateClusterSubnetGroupResponse = res
     "CreateClusterSubnetGroupResponse"
     "fixture/CreateClusterSubnetGroupResponse"
+    redshift
     (Proxy :: Proxy CreateClusterSubnetGroup)
 
 testDescribeReservedNodesResponse :: DescribeReservedNodesResponse -> TestTree
 testDescribeReservedNodesResponse = res
     "DescribeReservedNodesResponse"
     "fixture/DescribeReservedNodesResponse"
+    redshift
     (Proxy :: Proxy DescribeReservedNodes)
 
 testEnableLoggingResponse :: LoggingStatus -> TestTree
 testEnableLoggingResponse = res
     "EnableLoggingResponse"
     "fixture/EnableLoggingResponse"
+    redshift
     (Proxy :: Proxy EnableLogging)
 
 testCreateTagsResponse :: CreateTagsResponse -> TestTree
 testCreateTagsResponse = res
     "CreateTagsResponse"
     "fixture/CreateTagsResponse"
+    redshift
     (Proxy :: Proxy CreateTags)
 
 testDescribeClusterSecurityGroupsResponse :: DescribeClusterSecurityGroupsResponse -> TestTree
 testDescribeClusterSecurityGroupsResponse = res
     "DescribeClusterSecurityGroupsResponse"
     "fixture/DescribeClusterSecurityGroupsResponse"
+    redshift
     (Proxy :: Proxy DescribeClusterSecurityGroups)
 
 testDeleteClusterParameterGroupResponse :: DeleteClusterParameterGroupResponse -> TestTree
 testDeleteClusterParameterGroupResponse = res
     "DeleteClusterParameterGroupResponse"
     "fixture/DeleteClusterParameterGroupResponse"
+    redshift
     (Proxy :: Proxy DeleteClusterParameterGroup)
 
 testDeleteTagsResponse :: DeleteTagsResponse -> TestTree
 testDeleteTagsResponse = res
     "DeleteTagsResponse"
     "fixture/DeleteTagsResponse"
+    redshift
     (Proxy :: Proxy DeleteTags)
 
 testEnableSnapshotCopyResponse :: EnableSnapshotCopyResponse -> TestTree
 testEnableSnapshotCopyResponse = res
     "EnableSnapshotCopyResponse"
     "fixture/EnableSnapshotCopyResponse"
+    redshift
     (Proxy :: Proxy EnableSnapshotCopy)
 
 testModifySnapshotCopyRetentionPeriodResponse :: ModifySnapshotCopyRetentionPeriodResponse -> TestTree
 testModifySnapshotCopyRetentionPeriodResponse = res
     "ModifySnapshotCopyRetentionPeriodResponse"
     "fixture/ModifySnapshotCopyRetentionPeriodResponse"
+    redshift
     (Proxy :: Proxy ModifySnapshotCopyRetentionPeriod)
 
 testDescribeClusterSnapshotsResponse :: DescribeClusterSnapshotsResponse -> TestTree
 testDescribeClusterSnapshotsResponse = res
     "DescribeClusterSnapshotsResponse"
     "fixture/DescribeClusterSnapshotsResponse"
+    redshift
     (Proxy :: Proxy DescribeClusterSnapshots)
 
 testDescribeClusterSubnetGroupsResponse :: DescribeClusterSubnetGroupsResponse -> TestTree
 testDescribeClusterSubnetGroupsResponse = res
     "DescribeClusterSubnetGroupsResponse"
     "fixture/DescribeClusterSubnetGroupsResponse"
+    redshift
     (Proxy :: Proxy DescribeClusterSubnetGroups)
 
 testAuthorizeSnapshotAccessResponse :: AuthorizeSnapshotAccessResponse -> TestTree
 testAuthorizeSnapshotAccessResponse = res
     "AuthorizeSnapshotAccessResponse"
     "fixture/AuthorizeSnapshotAccessResponse"
+    redshift
     (Proxy :: Proxy AuthorizeSnapshotAccess)
 
 testCreateEventSubscriptionResponse :: CreateEventSubscriptionResponse -> TestTree
 testCreateEventSubscriptionResponse = res
     "CreateEventSubscriptionResponse"
     "fixture/CreateEventSubscriptionResponse"
+    redshift
     (Proxy :: Proxy CreateEventSubscription)
 
 testRebootClusterResponse :: RebootClusterResponse -> TestTree
 testRebootClusterResponse = res
     "RebootClusterResponse"
     "fixture/RebootClusterResponse"
+    redshift
     (Proxy :: Proxy RebootCluster)
 
 testDescribeOrderableClusterOptionsResponse :: DescribeOrderableClusterOptionsResponse -> TestTree
 testDescribeOrderableClusterOptionsResponse = res
     "DescribeOrderableClusterOptionsResponse"
     "fixture/DescribeOrderableClusterOptionsResponse"
+    redshift
     (Proxy :: Proxy DescribeOrderableClusterOptions)
 
 testDeleteClusterResponse :: DeleteClusterResponse -> TestTree
 testDeleteClusterResponse = res
     "DeleteClusterResponse"
     "fixture/DeleteClusterResponse"
+    redshift
     (Proxy :: Proxy DeleteCluster)
 
 testDeleteEventSubscriptionResponse :: DeleteEventSubscriptionResponse -> TestTree
 testDeleteEventSubscriptionResponse = res
     "DeleteEventSubscriptionResponse"
     "fixture/DeleteEventSubscriptionResponse"
+    redshift
     (Proxy :: Proxy DeleteEventSubscription)
 
 testDescribeDefaultClusterParametersResponse :: DescribeDefaultClusterParametersResponse -> TestTree
 testDescribeDefaultClusterParametersResponse = res
     "DescribeDefaultClusterParametersResponse"
     "fixture/DescribeDefaultClusterParametersResponse"
+    redshift
     (Proxy :: Proxy DescribeDefaultClusterParameters)
 
 testCreateClusterResponse :: CreateClusterResponse -> TestTree
 testCreateClusterResponse = res
     "CreateClusterResponse"
     "fixture/CreateClusterResponse"
+    redshift
     (Proxy :: Proxy CreateCluster)
 
 testCreateHSMClientCertificateResponse :: CreateHSMClientCertificateResponse -> TestTree
 testCreateHSMClientCertificateResponse = res
     "CreateHSMClientCertificateResponse"
     "fixture/CreateHSMClientCertificateResponse"
+    redshift
     (Proxy :: Proxy CreateHSMClientCertificate)
 
 testResetClusterParameterGroupResponse :: ClusterParameterGroupNameMessage -> TestTree
 testResetClusterParameterGroupResponse = res
     "ResetClusterParameterGroupResponse"
     "fixture/ResetClusterParameterGroupResponse"
+    redshift
     (Proxy :: Proxy ResetClusterParameterGroup)
 
 testDescribeEventSubscriptionsResponse :: DescribeEventSubscriptionsResponse -> TestTree
 testDescribeEventSubscriptionsResponse = res
     "DescribeEventSubscriptionsResponse"
     "fixture/DescribeEventSubscriptionsResponse"
+    redshift
     (Proxy :: Proxy DescribeEventSubscriptions)
 
 testDescribeHSMClientCertificatesResponse :: DescribeHSMClientCertificatesResponse -> TestTree
 testDescribeHSMClientCertificatesResponse = res
     "DescribeHSMClientCertificatesResponse"
     "fixture/DescribeHSMClientCertificatesResponse"
+    redshift
     (Proxy :: Proxy DescribeHSMClientCertificates)
 
 testModifyClusterParameterGroupResponse :: ClusterParameterGroupNameMessage -> TestTree
 testModifyClusterParameterGroupResponse = res
     "ModifyClusterParameterGroupResponse"
     "fixture/ModifyClusterParameterGroupResponse"
+    redshift
     (Proxy :: Proxy ModifyClusterParameterGroup)
 
 testRevokeClusterSecurityGroupIngressResponse :: RevokeClusterSecurityGroupIngressResponse -> TestTree
 testRevokeClusterSecurityGroupIngressResponse = res
     "RevokeClusterSecurityGroupIngressResponse"
     "fixture/RevokeClusterSecurityGroupIngressResponse"
+    redshift
     (Proxy :: Proxy RevokeClusterSecurityGroupIngress)
 
 testAuthorizeClusterSecurityGroupIngressResponse :: AuthorizeClusterSecurityGroupIngressResponse -> TestTree
 testAuthorizeClusterSecurityGroupIngressResponse = res
     "AuthorizeClusterSecurityGroupIngressResponse"
     "fixture/AuthorizeClusterSecurityGroupIngressResponse"
+    redshift
     (Proxy :: Proxy AuthorizeClusterSecurityGroupIngress)
 
 testCreateClusterSecurityGroupResponse :: CreateClusterSecurityGroupResponse -> TestTree
 testCreateClusterSecurityGroupResponse = res
     "CreateClusterSecurityGroupResponse"
     "fixture/CreateClusterSecurityGroupResponse"
+    redshift
     (Proxy :: Proxy CreateClusterSecurityGroup)
 
 testDescribeResizeResponse :: DescribeResizeResponse -> TestTree
 testDescribeResizeResponse = res
     "DescribeResizeResponse"
     "fixture/DescribeResizeResponse"
+    redshift
     (Proxy :: Proxy DescribeResize)
 
 testDescribeEventCategoriesResponse :: DescribeEventCategoriesResponse -> TestTree
 testDescribeEventCategoriesResponse = res
     "DescribeEventCategoriesResponse"
     "fixture/DescribeEventCategoriesResponse"
+    redshift
     (Proxy :: Proxy DescribeEventCategories)
 
 testDeleteHSMConfigurationResponse :: DeleteHSMConfigurationResponse -> TestTree
 testDeleteHSMConfigurationResponse = res
     "DeleteHSMConfigurationResponse"
     "fixture/DeleteHSMConfigurationResponse"
+    redshift
     (Proxy :: Proxy DeleteHSMConfiguration)
 
 testDeleteClusterSecurityGroupResponse :: DeleteClusterSecurityGroupResponse -> TestTree
 testDeleteClusterSecurityGroupResponse = res
     "DeleteClusterSecurityGroupResponse"
     "fixture/DeleteClusterSecurityGroupResponse"
+    redshift
     (Proxy :: Proxy DeleteClusterSecurityGroup)
 
 testCreateHSMConfigurationResponse :: CreateHSMConfigurationResponse -> TestTree
 testCreateHSMConfigurationResponse = res
     "CreateHSMConfigurationResponse"
     "fixture/CreateHSMConfigurationResponse"
+    redshift
     (Proxy :: Proxy CreateHSMConfiguration)
 
 testModifyClusterResponse :: ModifyClusterResponse -> TestTree
 testModifyClusterResponse = res
     "ModifyClusterResponse"
     "fixture/ModifyClusterResponse"
+    redshift
     (Proxy :: Proxy ModifyCluster)
 
 testCreateClusterSnapshotResponse :: CreateClusterSnapshotResponse -> TestTree
 testCreateClusterSnapshotResponse = res
     "CreateClusterSnapshotResponse"
     "fixture/CreateClusterSnapshotResponse"
+    redshift
     (Proxy :: Proxy CreateClusterSnapshot)
 
 testDescribeLoggingStatusResponse :: LoggingStatus -> TestTree
 testDescribeLoggingStatusResponse = res
     "DescribeLoggingStatusResponse"
     "fixture/DescribeLoggingStatusResponse"
+    redshift
     (Proxy :: Proxy DescribeLoggingStatus)
 
 testDescribeClusterParametersResponse :: DescribeClusterParametersResponse -> TestTree
 testDescribeClusterParametersResponse = res
     "DescribeClusterParametersResponse"
     "fixture/DescribeClusterParametersResponse"
+    redshift
     (Proxy :: Proxy DescribeClusterParameters)
 
 testDisableSnapshotCopyResponse :: DisableSnapshotCopyResponse -> TestTree
 testDisableSnapshotCopyResponse = res
     "DisableSnapshotCopyResponse"
     "fixture/DisableSnapshotCopyResponse"
+    redshift
     (Proxy :: Proxy DisableSnapshotCopy)
 
 testRestoreFromClusterSnapshotResponse :: RestoreFromClusterSnapshotResponse -> TestTree
 testRestoreFromClusterSnapshotResponse = res
     "RestoreFromClusterSnapshotResponse"
     "fixture/RestoreFromClusterSnapshotResponse"
+    redshift
     (Proxy :: Proxy RestoreFromClusterSnapshot)
 
 testDescribeHSMConfigurationsResponse :: DescribeHSMConfigurationsResponse -> TestTree
 testDescribeHSMConfigurationsResponse = res
     "DescribeHSMConfigurationsResponse"
     "fixture/DescribeHSMConfigurationsResponse"
+    redshift
     (Proxy :: Proxy DescribeHSMConfigurations)
 
 testCreateClusterParameterGroupResponse :: CreateClusterParameterGroupResponse -> TestTree
 testCreateClusterParameterGroupResponse = res
     "CreateClusterParameterGroupResponse"
     "fixture/CreateClusterParameterGroupResponse"
+    redshift
     (Proxy :: Proxy CreateClusterParameterGroup)
 
 testRevokeSnapshotAccessResponse :: RevokeSnapshotAccessResponse -> TestTree
 testRevokeSnapshotAccessResponse = res
     "RevokeSnapshotAccessResponse"
     "fixture/RevokeSnapshotAccessResponse"
+    redshift
     (Proxy :: Proxy RevokeSnapshotAccess)
 
 testDeleteHSMClientCertificateResponse :: DeleteHSMClientCertificateResponse -> TestTree
 testDeleteHSMClientCertificateResponse = res
     "DeleteHSMClientCertificateResponse"
     "fixture/DeleteHSMClientCertificateResponse"
+    redshift
     (Proxy :: Proxy DeleteHSMClientCertificate)
 
 testCreateSnapshotCopyGrantResponse :: CreateSnapshotCopyGrantResponse -> TestTree
 testCreateSnapshotCopyGrantResponse = res
     "CreateSnapshotCopyGrantResponse"
     "fixture/CreateSnapshotCopyGrantResponse"
+    redshift
     (Proxy :: Proxy CreateSnapshotCopyGrant)
 
 testCopyClusterSnapshotResponse :: CopyClusterSnapshotResponse -> TestTree
 testCopyClusterSnapshotResponse = res
     "CopyClusterSnapshotResponse"
     "fixture/CopyClusterSnapshotResponse"
+    redshift
     (Proxy :: Proxy CopyClusterSnapshot)
 
 testDescribeClusterVersionsResponse :: DescribeClusterVersionsResponse -> TestTree
 testDescribeClusterVersionsResponse = res
     "DescribeClusterVersionsResponse"
     "fixture/DescribeClusterVersionsResponse"
+    redshift
     (Proxy :: Proxy DescribeClusterVersions)
 
 testModifyClusterSubnetGroupResponse :: ModifyClusterSubnetGroupResponse -> TestTree
 testModifyClusterSubnetGroupResponse = res
     "ModifyClusterSubnetGroupResponse"
     "fixture/ModifyClusterSubnetGroupResponse"
+    redshift
     (Proxy :: Proxy ModifyClusterSubnetGroup)
 
 testDeleteSnapshotCopyGrantResponse :: DeleteSnapshotCopyGrantResponse -> TestTree
 testDeleteSnapshotCopyGrantResponse = res
     "DeleteSnapshotCopyGrantResponse"
     "fixture/DeleteSnapshotCopyGrantResponse"
+    redshift
     (Proxy :: Proxy DeleteSnapshotCopyGrant)
 
 testDescribeSnapshotCopyGrantsResponse :: DescribeSnapshotCopyGrantsResponse -> TestTree
 testDescribeSnapshotCopyGrantsResponse = res
     "DescribeSnapshotCopyGrantsResponse"
     "fixture/DescribeSnapshotCopyGrantsResponse"
+    redshift
     (Proxy :: Proxy DescribeSnapshotCopyGrants)
 
 testRotateEncryptionKeyResponse :: RotateEncryptionKeyResponse -> TestTree
 testRotateEncryptionKeyResponse = res
     "RotateEncryptionKeyResponse"
     "fixture/RotateEncryptionKeyResponse"
+    redshift
     (Proxy :: Proxy RotateEncryptionKey)
