diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.3.7`
+`1.4.0`
 
 
 ## Description
@@ -29,7 +29,7 @@
 infrastructure.
 
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-ecs)
-and the [AWS API Reference](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/Welcome.html).
+and the [AWS API Reference](https://aws.amazon.com/documentation/).
 
 The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),
 which provides mechanisms for specifying AuthN/AuthZ information and sending requests.
diff --git a/amazonka-ecs.cabal b/amazonka-ecs.cabal
--- a/amazonka-ecs.cabal
+++ b/amazonka-ecs.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-ecs
-version:               1.3.7
+version:               1.4.0
 synopsis:              Amazon EC2 Container Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -7,7 +7,7 @@
 license-file:          LICENSE
 author:                Brendan Hay
 maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2013-2015 Brendan Hay
+copyright:             Copyright (c) 2013-2016 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
@@ -39,7 +39,7 @@
     such as <http://hackage.haskell.org/package/lens lens> or
     <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
     .
-    See "Network.AWS.ECS" and the <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/Welcome.html AWS API Reference>
+    See "Network.AWS.ECS" or <https://aws.amazon.com/documentation/ the AWS Documentation>
     to get started.
 
 source-repository head
@@ -89,7 +89,7 @@
         , Network.AWS.ECS.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.7.*
+          amazonka-core == 1.4.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-ecs-test
@@ -109,9 +109,9 @@
         , Test.AWS.ECS.Internal
 
     build-depends:
-          amazonka-core == 1.3.7.*
-        , amazonka-test == 1.3.7.*
-        , amazonka-ecs == 1.3.7.*
+          amazonka-core == 1.4.0.*
+        , amazonka-test == 1.4.0.*
+        , amazonka-ecs == 1.4.0.*
         , base
         , bytestring
         , tasty
diff --git a/gen/Network/AWS/ECS.hs b/gen/Network/AWS/ECS.hs
--- a/gen/Network/AWS/ECS.hs
+++ b/gen/Network/AWS/ECS.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -25,12 +25,10 @@
 -- need for you to operate your own cluster management and configuration
 -- management systems or worry about scaling your management
 -- infrastructure.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.ECS
     (
     -- * Service Configuration
-      eCS
+      ecs
 
     -- * Errors
     -- $errors
@@ -281,6 +279,7 @@
     , csServiceARN
     , csTaskDefinition
     , csRoleARN
+    , csDeploymentConfiguration
 
     -- ** Deployment
     , Deployment
@@ -293,6 +292,12 @@
     , dId
     , dUpdatedAt
     , dTaskDefinition
+
+    -- ** DeploymentConfiguration
+    , DeploymentConfiguration
+    , deploymentConfiguration
+    , dcMinimumHealthyPercent
+    , dcMaximumPercent
 
     -- ** Failure
     , Failure
diff --git a/gen/Network/AWS/ECS/CreateCluster.hs b/gen/Network/AWS/ECS/CreateCluster.hs
--- a/gen/Network/AWS/ECS/CreateCluster.hs
+++ b/gen/Network/AWS/ECS/CreateCluster.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.CreateCluster
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -22,8 +22,6 @@
 -- 'default' cluster when you launch your first container instance.
 -- However, you can create your own cluster with a unique name with the
 -- 'CreateCluster' action.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCluster.html AWS API Reference> for CreateCluster.
 module Network.AWS.ECS.CreateCluster
     (
     -- * Creating a Request
@@ -72,12 +70,14 @@
 
 instance AWSRequest CreateCluster where
         type Rs CreateCluster = CreateClusterResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  CreateClusterResponse' <$>
                    (x .?> "cluster") <*> (pure (fromEnum s)))
+
+instance Hashable CreateCluster
 
 instance ToHeaders CreateCluster where
         toHeaders
diff --git a/gen/Network/AWS/ECS/CreateService.hs b/gen/Network/AWS/ECS/CreateService.hs
--- a/gen/Network/AWS/ECS/CreateService.hs
+++ b/gen/Network/AWS/ECS/CreateService.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.CreateService
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -21,8 +21,35 @@
 -- Runs and maintains a desired number of tasks from a specified task
 -- definition. If the number of tasks running in a service drops below
 -- 'desiredCount', Amazon ECS spawns another instantiation of the task in
--- the specified cluster. To update an existing service, see UpdateService.
+-- the specified cluster. To update an existing service, see
+-- < UpdateService>.
 --
+-- You can optionally specify a deployment configuration for your service.
+-- During a deployment (which is triggered by changing the task definition
+-- of a service with an < UpdateService> operation), the service scheduler
+-- uses the 'minimumHealthyPercent' and 'maximumPercent' parameters to
+-- determine the deployment strategy.
+--
+-- If the 'minimumHealthyPercent' is below 100%, the scheduler can ignore
+-- the 'desiredCount' temporarily during a deployment. For example, if your
+-- service has a 'desiredCount' of four tasks, a 'minimumHealthyPercent' of
+-- 50% allows the scheduler to stop two existing tasks before starting two
+-- new tasks. Tasks for services that /do not/ use a load balancer are
+-- considered healthy if they are in the 'RUNNING' state; tasks for
+-- services that /do/ use a load balancer are considered healthy if they
+-- are in the 'RUNNING' state and the container instance it is hosted on is
+-- reported as healthy by the load balancer. The default value for
+-- 'minimumHealthyPercent' is 50% in the console and 100% for the AWS CLI,
+-- the AWS SDKs, and the APIs.
+--
+-- The 'maximumPercent' parameter represents an upper limit on the number
+-- of running tasks during a deployment, which enables you to define the
+-- deployment batch size. For example, if your service has a 'desiredCount'
+-- of four tasks, a 'maximumPercent' value of 200% starts four new tasks
+-- before stopping the four older tasks (provided that the cluster
+-- resources required to do this are available). The default value for
+-- 'maximumPercent' is 200%.
+--
 -- When the service scheduler launches new tasks, it attempts to balance
 -- them across the Availability Zones in your cluster with the following
 -- logic:
@@ -42,8 +69,6 @@
 --     container instances with the fewest number of running tasks for this
 --     service.
 --
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html AWS API Reference> for CreateService.
 module Network.AWS.ECS.CreateService
     (
     -- * Creating a Request
@@ -54,6 +79,7 @@
     , cClientToken
     , cLoadBalancers
     , cRole
+    , cDeploymentConfiguration
     , cServiceName
     , cTaskDefinition
     , cDesiredCount
@@ -75,13 +101,14 @@
 
 -- | /See:/ 'createService' smart constructor.
 data CreateService = CreateService'
-    { _cCluster        :: !(Maybe Text)
-    , _cClientToken    :: !(Maybe Text)
-    , _cLoadBalancers  :: !(Maybe [LoadBalancer])
-    , _cRole           :: !(Maybe Text)
-    , _cServiceName    :: !Text
-    , _cTaskDefinition :: !Text
-    , _cDesiredCount   :: !Int
+    { _cCluster                 :: !(Maybe Text)
+    , _cClientToken             :: !(Maybe Text)
+    , _cLoadBalancers           :: !(Maybe [LoadBalancer])
+    , _cRole                    :: !(Maybe Text)
+    , _cDeploymentConfiguration :: !(Maybe DeploymentConfiguration)
+    , _cServiceName             :: !Text
+    , _cTaskDefinition          :: !Text
+    , _cDesiredCount            :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateService' with the minimum fields required to make a request.
@@ -96,6 +123,8 @@
 --
 -- * 'cRole'
 --
+-- * 'cDeploymentConfiguration'
+--
 -- * 'cServiceName'
 --
 -- * 'cTaskDefinition'
@@ -112,6 +141,7 @@
     , _cClientToken = Nothing
     , _cLoadBalancers = Nothing
     , _cRole = Nothing
+    , _cDeploymentConfiguration = Nothing
     , _cServiceName = pServiceName_
     , _cTaskDefinition = pTaskDefinition_
     , _cDesiredCount = pDesiredCount_
@@ -141,6 +171,11 @@
 cRole :: Lens' CreateService (Maybe Text)
 cRole = lens _cRole (\ s a -> s{_cRole = a});
 
+-- | Optional deployment parameters that control how many tasks run during
+-- the deployment and the ordering of stopping and starting tasks.
+cDeploymentConfiguration :: Lens' CreateService (Maybe DeploymentConfiguration)
+cDeploymentConfiguration = lens _cDeploymentConfiguration (\ s a -> s{_cDeploymentConfiguration = a});
+
 -- | The name of your service. Up to 255 letters (uppercase and lowercase),
 -- numbers, hyphens, and underscores are allowed. Service names must be
 -- unique within a cluster, but you can have similarly named services in
@@ -161,13 +196,15 @@
 
 instance AWSRequest CreateService where
         type Rs CreateService = CreateServiceResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  CreateServiceResponse' <$>
                    (x .?> "service") <*> (pure (fromEnum s)))
 
+instance Hashable CreateService
+
 instance ToHeaders CreateService where
         toHeaders
           = const
@@ -186,6 +223,8 @@
                   ("clientToken" .=) <$> _cClientToken,
                   ("loadBalancers" .=) <$> _cLoadBalancers,
                   ("role" .=) <$> _cRole,
+                  ("deploymentConfiguration" .=) <$>
+                    _cDeploymentConfiguration,
                   Just ("serviceName" .= _cServiceName),
                   Just ("taskDefinition" .= _cTaskDefinition),
                   Just ("desiredCount" .= _cDesiredCount)])
diff --git a/gen/Network/AWS/ECS/DeleteCluster.hs b/gen/Network/AWS/ECS/DeleteCluster.hs
--- a/gen/Network/AWS/ECS/DeleteCluster.hs
+++ b/gen/Network/AWS/ECS/DeleteCluster.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.DeleteCluster
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,10 +20,8 @@
 --
 -- Deletes the specified cluster. You must deregister all container
 -- instances from this cluster before you may delete it. You can list the
--- container instances in a cluster with ListContainerInstances and
--- deregister them with DeregisterContainerInstance.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeleteCluster.html AWS API Reference> for DeleteCluster.
+-- container instances in a cluster with < ListContainerInstances> and
+-- deregister them with < DeregisterContainerInstance>.
 module Network.AWS.ECS.DeleteCluster
     (
     -- * Creating a Request
@@ -72,12 +70,14 @@
 
 instance AWSRequest DeleteCluster where
         type Rs DeleteCluster = DeleteClusterResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  DeleteClusterResponse' <$>
                    (x .?> "cluster") <*> (pure (fromEnum s)))
+
+instance Hashable DeleteCluster
 
 instance ToHeaders DeleteCluster where
         toHeaders
diff --git a/gen/Network/AWS/ECS/DeleteService.hs b/gen/Network/AWS/ECS/DeleteService.hs
--- a/gen/Network/AWS/ECS/DeleteService.hs
+++ b/gen/Network/AWS/ECS/DeleteService.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.DeleteService
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -22,19 +22,17 @@
 -- if you have no running tasks in it and the desired task count is zero.
 -- If the service is actively maintaining tasks, you cannot delete it, and
 -- you must update the service to a desired task count of zero. For more
--- information, see UpdateService.
+-- information, see < UpdateService>.
 --
 -- When you delete a service, if there are still running tasks that require
 -- cleanup, the service status moves from 'ACTIVE' to 'DRAINING', and the
--- service is no longer visible in the console or in ListServices API
+-- service is no longer visible in the console or in < ListServices> API
 -- operations. After the tasks have stopped, then the service status moves
 -- from 'DRAINING' to 'INACTIVE'. Services in the 'DRAINING' or 'INACTIVE'
--- status can still be viewed with DescribeServices API operations;
+-- status can still be viewed with < DescribeServices> API operations;
 -- however, in the future, 'INACTIVE' services may be cleaned up and purged
--- from Amazon ECS record keeping, and DescribeServices API operations on
--- those services will return a 'ServiceNotFoundException' error.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeleteService.html AWS API Reference> for DeleteService.
+-- from Amazon ECS record keeping, and < DescribeServices> API operations
+-- on those services will return a 'ServiceNotFoundException' error.
 module Network.AWS.ECS.DeleteService
     (
     -- * Creating a Request
@@ -92,12 +90,14 @@
 
 instance AWSRequest DeleteService where
         type Rs DeleteService = DeleteServiceResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  DeleteServiceResponse' <$>
                    (x .?> "service") <*> (pure (fromEnum s)))
+
+instance Hashable DeleteService
 
 instance ToHeaders DeleteService where
         toHeaders
diff --git a/gen/Network/AWS/ECS/DeregisterContainerInstance.hs b/gen/Network/AWS/ECS/DeregisterContainerInstance.hs
--- a/gen/Network/AWS/ECS/DeregisterContainerInstance.hs
+++ b/gen/Network/AWS/ECS/DeregisterContainerInstance.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.DeregisterContainerInstance
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -33,8 +33,6 @@
 --
 -- When you terminate a container instance, it is automatically
 -- deregistered from your cluster.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeregisterContainerInstance.html AWS API Reference> for DeregisterContainerInstance.
 module Network.AWS.ECS.DeregisterContainerInstance
     (
     -- * Creating a Request
@@ -116,12 +114,14 @@
 instance AWSRequest DeregisterContainerInstance where
         type Rs DeregisterContainerInstance =
              DeregisterContainerInstanceResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  DeregisterContainerInstanceResponse' <$>
                    (x .?> "containerInstance") <*> (pure (fromEnum s)))
+
+instance Hashable DeregisterContainerInstance
 
 instance ToHeaders DeregisterContainerInstance where
         toHeaders
diff --git a/gen/Network/AWS/ECS/DeregisterTaskDefinition.hs b/gen/Network/AWS/ECS/DeregisterTaskDefinition.hs
--- a/gen/Network/AWS/ECS/DeregisterTaskDefinition.hs
+++ b/gen/Network/AWS/ECS/DeregisterTaskDefinition.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.DeregisterTaskDefinition
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -30,8 +30,6 @@
 -- 'INACTIVE' task definition (although there may be up to a 10 minute
 -- window following deregistration where these restrictions have not yet
 -- taken effect).
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeregisterTaskDefinition.html AWS API Reference> for DeregisterTaskDefinition.
 module Network.AWS.ECS.DeregisterTaskDefinition
     (
     -- * Creating a Request
@@ -82,12 +80,14 @@
 instance AWSRequest DeregisterTaskDefinition where
         type Rs DeregisterTaskDefinition =
              DeregisterTaskDefinitionResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  DeregisterTaskDefinitionResponse' <$>
                    (x .?> "taskDefinition") <*> (pure (fromEnum s)))
+
+instance Hashable DeregisterTaskDefinition
 
 instance ToHeaders DeregisterTaskDefinition where
         toHeaders
diff --git a/gen/Network/AWS/ECS/DescribeClusters.hs b/gen/Network/AWS/ECS/DescribeClusters.hs
--- a/gen/Network/AWS/ECS/DescribeClusters.hs
+++ b/gen/Network/AWS/ECS/DescribeClusters.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.ECS.DescribeClusters
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 -- Describes one or more of your clusters.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeClusters.html AWS API Reference> for DescribeClusters.
 module Network.AWS.ECS.DescribeClusters
     (
     -- * Creating a Request
@@ -70,7 +68,7 @@
 
 instance AWSRequest DescribeClusters where
         type Rs DescribeClusters = DescribeClustersResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
@@ -78,6 +76,8 @@
                    (x .?> "failures" .!@ mempty) <*>
                      (x .?> "clusters" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable DescribeClusters
 
 instance ToHeaders DescribeClusters where
         toHeaders
diff --git a/gen/Network/AWS/ECS/DescribeContainerInstances.hs b/gen/Network/AWS/ECS/DescribeContainerInstances.hs
--- a/gen/Network/AWS/ECS/DescribeContainerInstances.hs
+++ b/gen/Network/AWS/ECS/DescribeContainerInstances.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.DescribeContainerInstances
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -21,8 +21,6 @@
 -- Describes Amazon EC2 Container Service container instances. Returns
 -- metadata about registered and remaining resources on each container
 -- instance requested.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeContainerInstances.html AWS API Reference> for DescribeContainerInstances.
 module Network.AWS.ECS.DescribeContainerInstances
     (
     -- * Creating a Request
@@ -83,7 +81,7 @@
 instance AWSRequest DescribeContainerInstances where
         type Rs DescribeContainerInstances =
              DescribeContainerInstancesResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
@@ -91,6 +89,8 @@
                    (x .?> "failures" .!@ mempty) <*>
                      (x .?> "containerInstances" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable DescribeContainerInstances
 
 instance ToHeaders DescribeContainerInstances where
         toHeaders
diff --git a/gen/Network/AWS/ECS/DescribeServices.hs b/gen/Network/AWS/ECS/DescribeServices.hs
--- a/gen/Network/AWS/ECS/DescribeServices.hs
+++ b/gen/Network/AWS/ECS/DescribeServices.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.ECS.DescribeServices
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 -- Describes the specified services running in your cluster.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeServices.html AWS API Reference> for DescribeServices.
 module Network.AWS.ECS.DescribeServices
     (
     -- * Creating a Request
@@ -78,7 +76,7 @@
 
 instance AWSRequest DescribeServices where
         type Rs DescribeServices = DescribeServicesResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
@@ -86,6 +84,8 @@
                    (x .?> "failures" .!@ mempty) <*>
                      (x .?> "services" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable DescribeServices
 
 instance ToHeaders DescribeServices where
         toHeaders
diff --git a/gen/Network/AWS/ECS/DescribeTaskDefinition.hs b/gen/Network/AWS/ECS/DescribeTaskDefinition.hs
--- a/gen/Network/AWS/ECS/DescribeTaskDefinition.hs
+++ b/gen/Network/AWS/ECS/DescribeTaskDefinition.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.DescribeTaskDefinition
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -24,8 +24,6 @@
 --
 -- You can only describe 'INACTIVE' task definitions while an active task
 -- or service references them.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTaskDefinition.html AWS API Reference> for DescribeTaskDefinition.
 module Network.AWS.ECS.DescribeTaskDefinition
     (
     -- * Creating a Request
@@ -76,12 +74,14 @@
 instance AWSRequest DescribeTaskDefinition where
         type Rs DescribeTaskDefinition =
              DescribeTaskDefinitionResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  DescribeTaskDefinitionResponse' <$>
                    (x .?> "taskDefinition") <*> (pure (fromEnum s)))
+
+instance Hashable DescribeTaskDefinition
 
 instance ToHeaders DescribeTaskDefinition where
         toHeaders
diff --git a/gen/Network/AWS/ECS/DescribeTasks.hs b/gen/Network/AWS/ECS/DescribeTasks.hs
--- a/gen/Network/AWS/ECS/DescribeTasks.hs
+++ b/gen/Network/AWS/ECS/DescribeTasks.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.ECS.DescribeTasks
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 -- Describes a specified task or tasks.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html AWS API Reference> for DescribeTasks.
 module Network.AWS.ECS.DescribeTasks
     (
     -- * Creating a Request
@@ -80,7 +78,7 @@
 
 instance AWSRequest DescribeTasks where
         type Rs DescribeTasks = DescribeTasksResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
@@ -88,6 +86,8 @@
                    (x .?> "failures" .!@ mempty) <*>
                      (x .?> "tasks" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable DescribeTasks
 
 instance ToHeaders DescribeTasks where
         toHeaders
diff --git a/gen/Network/AWS/ECS/DiscoverPollEndpoint.hs b/gen/Network/AWS/ECS/DiscoverPollEndpoint.hs
--- a/gen/Network/AWS/ECS/DiscoverPollEndpoint.hs
+++ b/gen/Network/AWS/ECS/DiscoverPollEndpoint.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.DiscoverPollEndpoint
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -23,8 +23,6 @@
 --
 -- Returns an endpoint for the Amazon EC2 Container Service agent to poll
 -- for updates.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DiscoverPollEndpoint.html AWS API Reference> for DiscoverPollEndpoint.
 module Network.AWS.ECS.DiscoverPollEndpoint
     (
     -- * Creating a Request
@@ -87,13 +85,15 @@
 instance AWSRequest DiscoverPollEndpoint where
         type Rs DiscoverPollEndpoint =
              DiscoverPollEndpointResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  DiscoverPollEndpointResponse' <$>
                    (x .?> "telemetryEndpoint") <*> (x .?> "endpoint")
                      <*> (pure (fromEnum s)))
+
+instance Hashable DiscoverPollEndpoint
 
 instance ToHeaders DiscoverPollEndpoint where
         toHeaders
diff --git a/gen/Network/AWS/ECS/ListClusters.hs b/gen/Network/AWS/ECS/ListClusters.hs
--- a/gen/Network/AWS/ECS/ListClusters.hs
+++ b/gen/Network/AWS/ECS/ListClusters.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.ListClusters
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,8 +20,6 @@
 --
 -- Returns a list of existing clusters.
 --
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListClusters.html AWS API Reference> for ListClusters.
---
 -- This operation returns paginated results.
 module Network.AWS.ECS.ListClusters
     (
@@ -98,7 +96,7 @@
 
 instance AWSRequest ListClusters where
         type Rs ListClusters = ListClustersResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
@@ -106,6 +104,8 @@
                    (x .?> "clusterArns" .!@ mempty) <*>
                      (x .?> "nextToken")
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListClusters
 
 instance ToHeaders ListClusters where
         toHeaders
diff --git a/gen/Network/AWS/ECS/ListContainerInstances.hs b/gen/Network/AWS/ECS/ListContainerInstances.hs
--- a/gen/Network/AWS/ECS/ListContainerInstances.hs
+++ b/gen/Network/AWS/ECS/ListContainerInstances.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.ListContainerInstances
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,8 +20,6 @@
 --
 -- Returns a list of container instances in a specified cluster.
 --
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListContainerInstances.html AWS API Reference> for ListContainerInstances.
---
 -- This operation returns paginated results.
 module Network.AWS.ECS.ListContainerInstances
     (
@@ -111,7 +109,7 @@
 instance AWSRequest ListContainerInstances where
         type Rs ListContainerInstances =
              ListContainerInstancesResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
@@ -119,6 +117,8 @@
                    (x .?> "containerInstanceArns" .!@ mempty) <*>
                      (x .?> "nextToken")
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListContainerInstances
 
 instance ToHeaders ListContainerInstances where
         toHeaders
diff --git a/gen/Network/AWS/ECS/ListServices.hs b/gen/Network/AWS/ECS/ListServices.hs
--- a/gen/Network/AWS/ECS/ListServices.hs
+++ b/gen/Network/AWS/ECS/ListServices.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.ListServices
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,8 +20,6 @@
 --
 -- Lists the services that are running in a specified cluster.
 --
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListServices.html AWS API Reference> for ListServices.
---
 -- This operation returns paginated results.
 module Network.AWS.ECS.ListServices
     (
@@ -109,7 +107,7 @@
 
 instance AWSRequest ListServices where
         type Rs ListServices = ListServicesResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
@@ -117,6 +115,8 @@
                    (x .?> "serviceArns" .!@ mempty) <*>
                      (x .?> "nextToken")
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListServices
 
 instance ToHeaders ListServices where
         toHeaders
diff --git a/gen/Network/AWS/ECS/ListTaskDefinitionFamilies.hs b/gen/Network/AWS/ECS/ListTaskDefinitionFamilies.hs
--- a/gen/Network/AWS/ECS/ListTaskDefinitionFamilies.hs
+++ b/gen/Network/AWS/ECS/ListTaskDefinitionFamilies.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.ListTaskDefinitionFamilies
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -23,8 +23,6 @@
 -- any 'ACTIVE' task definitions). You can filter the results with the
 -- 'familyPrefix' parameter.
 --
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListTaskDefinitionFamilies.html AWS API Reference> for ListTaskDefinitionFamilies.
---
 -- This operation returns paginated results.
 module Network.AWS.ECS.ListTaskDefinitionFamilies
     (
@@ -115,13 +113,15 @@
 instance AWSRequest ListTaskDefinitionFamilies where
         type Rs ListTaskDefinitionFamilies =
              ListTaskDefinitionFamiliesResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  ListTaskDefinitionFamiliesResponse' <$>
                    (x .?> "families" .!@ mempty) <*> (x .?> "nextToken")
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListTaskDefinitionFamilies
 
 instance ToHeaders ListTaskDefinitionFamilies where
         toHeaders
diff --git a/gen/Network/AWS/ECS/ListTaskDefinitions.hs b/gen/Network/AWS/ECS/ListTaskDefinitions.hs
--- a/gen/Network/AWS/ECS/ListTaskDefinitions.hs
+++ b/gen/Network/AWS/ECS/ListTaskDefinitions.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.ListTaskDefinitions
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -22,8 +22,6 @@
 -- You can filter the results by family name with the 'familyPrefix'
 -- parameter or by status with the 'status' parameter.
 --
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListTaskDefinitions.html AWS API Reference> for ListTaskDefinitions.
---
 -- This operation returns paginated results.
 module Network.AWS.ECS.ListTaskDefinitions
     (
@@ -141,7 +139,7 @@
 instance AWSRequest ListTaskDefinitions where
         type Rs ListTaskDefinitions =
              ListTaskDefinitionsResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
@@ -149,6 +147,8 @@
                    (x .?> "taskDefinitionArns" .!@ mempty) <*>
                      (x .?> "nextToken")
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListTaskDefinitions
 
 instance ToHeaders ListTaskDefinitions where
         toHeaders
diff --git a/gen/Network/AWS/ECS/ListTasks.hs b/gen/Network/AWS/ECS/ListTasks.hs
--- a/gen/Network/AWS/ECS/ListTasks.hs
+++ b/gen/Network/AWS/ECS/ListTasks.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.ListTasks
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -23,8 +23,6 @@
 -- desired status of the task with the 'family', 'containerInstance', and
 -- 'desiredStatus' parameters.
 --
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListTasks.html AWS API Reference> for ListTasks.
---
 -- This operation returns paginated results.
 module Network.AWS.ECS.ListTasks
     (
@@ -170,13 +168,15 @@
 
 instance AWSRequest ListTasks where
         type Rs ListTasks = ListTasksResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  ListTasksResponse' <$>
                    (x .?> "nextToken") <*> (x .?> "taskArns" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListTasks
 
 instance ToHeaders ListTasks where
         toHeaders
diff --git a/gen/Network/AWS/ECS/RegisterContainerInstance.hs b/gen/Network/AWS/ECS/RegisterContainerInstance.hs
--- a/gen/Network/AWS/ECS/RegisterContainerInstance.hs
+++ b/gen/Network/AWS/ECS/RegisterContainerInstance.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.RegisterContainerInstance
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -23,8 +23,6 @@
 --
 -- Registers an EC2 instance into the specified cluster. This instance
 -- becomes available to place containers on.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterContainerInstance.html AWS API Reference> for RegisterContainerInstance.
 module Network.AWS.ECS.RegisterContainerInstance
     (
     -- * Creating a Request
@@ -136,12 +134,14 @@
 instance AWSRequest RegisterContainerInstance where
         type Rs RegisterContainerInstance =
              RegisterContainerInstanceResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  RegisterContainerInstanceResponse' <$>
                    (x .?> "containerInstance") <*> (pure (fromEnum s)))
+
+instance Hashable RegisterContainerInstance
 
 instance ToHeaders RegisterContainerInstance where
         toHeaders
diff --git a/gen/Network/AWS/ECS/RegisterTaskDefinition.hs b/gen/Network/AWS/ECS/RegisterTaskDefinition.hs
--- a/gen/Network/AWS/ECS/RegisterTaskDefinition.hs
+++ b/gen/Network/AWS/ECS/RegisterTaskDefinition.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.RegisterTaskDefinition
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -24,8 +24,6 @@
 -- definition parameters and defaults, see
 -- <http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html Amazon ECS Task Definitions>
 -- in the /Amazon EC2 Container Service Developer Guide/.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterTaskDefinition.html AWS API Reference> for RegisterTaskDefinition.
 module Network.AWS.ECS.RegisterTaskDefinition
     (
     -- * Creating a Request
@@ -97,12 +95,14 @@
 instance AWSRequest RegisterTaskDefinition where
         type Rs RegisterTaskDefinition =
              RegisterTaskDefinitionResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  RegisterTaskDefinitionResponse' <$>
                    (x .?> "taskDefinition") <*> (pure (fromEnum s)))
+
+instance Hashable RegisterTaskDefinition
 
 instance ToHeaders RegisterTaskDefinition where
         toHeaders
diff --git a/gen/Network/AWS/ECS/RunTask.hs b/gen/Network/AWS/ECS/RunTask.hs
--- a/gen/Network/AWS/ECS/RunTask.hs
+++ b/gen/Network/AWS/ECS/RunTask.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.RunTask
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -23,8 +23,6 @@
 -- container instance, use 'StartTask' instead.
 --
 -- The 'count' parameter is limited to 10 tasks per call.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html AWS API Reference> for RunTask.
 module Network.AWS.ECS.RunTask
     (
     -- * Creating a Request
@@ -117,7 +115,7 @@
 -- automatically trigger a task to run a batch process job, you could apply
 -- a unique identifier for that job to your task with the 'startedBy'
 -- parameter. You can then identify which tasks belong to that job by
--- filtering the results of a ListTasks call with the 'startedBy' value.
+-- filtering the results of a < ListTasks> call with the 'startedBy' value.
 --
 -- If a task is started by an Amazon ECS service, then the 'startedBy'
 -- parameter contains the deployment ID of the service that starts it.
@@ -132,7 +130,7 @@
 
 instance AWSRequest RunTask where
         type Rs RunTask = RunTaskResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
@@ -140,6 +138,8 @@
                    (x .?> "failures" .!@ mempty) <*>
                      (x .?> "tasks" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable RunTask
 
 instance ToHeaders RunTask where
         toHeaders
diff --git a/gen/Network/AWS/ECS/StartTask.hs b/gen/Network/AWS/ECS/StartTask.hs
--- a/gen/Network/AWS/ECS/StartTask.hs
+++ b/gen/Network/AWS/ECS/StartTask.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.StartTask
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -23,8 +23,6 @@
 -- to place your task, use 'RunTask' instead.
 --
 -- The list of container instances to start tasks on is limited to 10.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_StartTask.html AWS API Reference> for StartTask.
 module Network.AWS.ECS.StartTask
     (
     -- * Creating a Request
@@ -110,7 +108,7 @@
 -- automatically trigger a task to run a batch process job, you could apply
 -- a unique identifier for that job to your task with the 'startedBy'
 -- parameter. You can then identify which tasks belong to that job by
--- filtering the results of a ListTasks call with the 'startedBy' value.
+-- filtering the results of a < ListTasks> call with the 'startedBy' value.
 --
 -- If a task is started by an Amazon ECS service, then the 'startedBy'
 -- parameter contains the deployment ID of the service that starts it.
@@ -132,7 +130,7 @@
 
 instance AWSRequest StartTask where
         type Rs StartTask = StartTaskResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
@@ -140,6 +138,8 @@
                    (x .?> "failures" .!@ mempty) <*>
                      (x .?> "tasks" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable StartTask
 
 instance ToHeaders StartTask where
         toHeaders
diff --git a/gen/Network/AWS/ECS/StopTask.hs b/gen/Network/AWS/ECS/StopTask.hs
--- a/gen/Network/AWS/ECS/StopTask.hs
+++ b/gen/Network/AWS/ECS/StopTask.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.StopTask
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,14 +20,12 @@
 --
 -- Stops a running task.
 --
--- When StopTask is called on a task, the equivalent of 'docker stop' is
+-- When < StopTask> is called on a task, the equivalent of 'docker stop' is
 -- issued to the containers running in the task. This results in a
 -- 'SIGTERM' and a 30-second timeout, after which 'SIGKILL' is sent and the
 -- containers are forcibly stopped. If the container handles the 'SIGTERM'
 -- gracefully and exits within 30 seconds from receiving it, no 'SIGKILL'
 -- is sent.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_StopTask.html AWS API Reference> for StopTask.
 module Network.AWS.ECS.StopTask
     (
     -- * Creating a Request
@@ -88,7 +86,7 @@
 -- | An optional message specified when a task is stopped. For example, if
 -- you are using a custom scheduler, you can use this parameter to specify
 -- the reason for stopping the task here, and the message will appear in
--- subsequent DescribeTasks API operations on this task. Up to 255
+-- subsequent < DescribeTasks> API operations on this task. Up to 255
 -- characters are allowed in this message.
 stReason :: Lens' StopTask (Maybe Text)
 stReason = lens _stReason (\ s a -> s{_stReason = a});
@@ -100,12 +98,14 @@
 
 instance AWSRequest StopTask where
         type Rs StopTask = StopTaskResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  StopTaskResponse' <$>
                    (x .?> "task") <*> (pure (fromEnum s)))
+
+instance Hashable StopTask
 
 instance ToHeaders StopTask where
         toHeaders
diff --git a/gen/Network/AWS/ECS/SubmitContainerStateChange.hs b/gen/Network/AWS/ECS/SubmitContainerStateChange.hs
--- a/gen/Network/AWS/ECS/SubmitContainerStateChange.hs
+++ b/gen/Network/AWS/ECS/SubmitContainerStateChange.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.SubmitContainerStateChange
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -22,8 +22,6 @@
 -- it is not intended for use outside of the agent.
 --
 -- Sent to acknowledge that a container changed states.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_SubmitContainerStateChange.html AWS API Reference> for SubmitContainerStateChange.
 module Network.AWS.ECS.SubmitContainerStateChange
     (
     -- * Creating a Request
@@ -127,12 +125,14 @@
 instance AWSRequest SubmitContainerStateChange where
         type Rs SubmitContainerStateChange =
              SubmitContainerStateChangeResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  SubmitContainerStateChangeResponse' <$>
                    (x .?> "acknowledgment") <*> (pure (fromEnum s)))
+
+instance Hashable SubmitContainerStateChange
 
 instance ToHeaders SubmitContainerStateChange where
         toHeaders
diff --git a/gen/Network/AWS/ECS/SubmitTaskStateChange.hs b/gen/Network/AWS/ECS/SubmitTaskStateChange.hs
--- a/gen/Network/AWS/ECS/SubmitTaskStateChange.hs
+++ b/gen/Network/AWS/ECS/SubmitTaskStateChange.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.SubmitTaskStateChange
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -22,8 +22,6 @@
 -- it is not intended for use outside of the agent.
 --
 -- Sent to acknowledge that a task changed states.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_SubmitTaskStateChange.html AWS API Reference> for SubmitTaskStateChange.
 module Network.AWS.ECS.SubmitTaskStateChange
     (
     -- * Creating a Request
@@ -100,12 +98,14 @@
 instance AWSRequest SubmitTaskStateChange where
         type Rs SubmitTaskStateChange =
              SubmitTaskStateChangeResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  SubmitTaskStateChangeResponse' <$>
                    (x .?> "acknowledgment") <*> (pure (fromEnum s)))
+
+instance Hashable SubmitTaskStateChange
 
 instance ToHeaders SubmitTaskStateChange where
         toHeaders
diff --git a/gen/Network/AWS/ECS/Types.hs b/gen/Network/AWS/ECS/Types.hs
--- a/gen/Network/AWS/ECS/Types.hs
+++ b/gen/Network/AWS/ECS/Types.hs
@@ -4,7 +4,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.Types
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -13,7 +13,7 @@
 module Network.AWS.ECS.Types
     (
     -- * Service Configuration
-      eCS
+      ecs
 
     -- * Errors
     , _InvalidParameterException
@@ -143,6 +143,7 @@
     , csServiceARN
     , csTaskDefinition
     , csRoleARN
+    , csDeploymentConfiguration
 
     -- * Deployment
     , Deployment
@@ -156,6 +157,12 @@
     , dUpdatedAt
     , dTaskDefinition
 
+    -- * DeploymentConfiguration
+    , DeploymentConfiguration
+    , deploymentConfiguration
+    , dcMinimumHealthyPercent
+    , dcMaximumPercent
+
     -- * Failure
     , Failure
     , failure
@@ -298,14 +305,14 @@
 import           Network.AWS.Sign.V4
 
 -- | API version '2014-11-13' of the Amazon EC2 Container Service SDK configuration.
-eCS :: Service
-eCS =
+ecs :: Service
+ecs =
     Service
     { _svcAbbrev = "ECS"
     , _svcSigner = v4
     , _svcPrefix = "ecs"
     , _svcVersion = "2014-11-13"
-    , _svcEndpoint = defaultEndpoint eCS
+    , _svcEndpoint = defaultEndpoint ecs
     , _svcTimeout = Just 70
     , _svcCheck = statusSuccess
     , _svcError = parseJSONError
@@ -320,6 +327,7 @@
         , _retryCheck = check
         }
     check e
+      | has (hasStatus 429) e = Just "too_many_requests"
       | has (hasCode "ThrottlingException" . hasStatus 400) e =
           Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
@@ -340,27 +348,28 @@
 
 -- | You cannot delete a cluster that contains services. You must first
 -- update the service to reduce its desired task count to 0 and then delete
--- the service. For more information, see UpdateService and DeleteService.
+-- the service. For more information, see < UpdateService> and
+-- < DeleteService>.
 _ClusterContainsServicesException :: AsError a => Getting (First ServiceError) a ServiceError
 _ClusterContainsServicesException =
     _ServiceError . hasCode "ClusterContainsServicesException"
 
 -- | You cannot delete a cluster that has registered container instances. You
 -- must first deregister the container instances before you can delete the
--- cluster. For more information, see DeregisterContainerInstance.
+-- cluster. For more information, see < DeregisterContainerInstance>.
 _ClusterContainsContainerInstancesException :: AsError a => Getting (First ServiceError) a ServiceError
 _ClusterContainsContainerInstancesException =
     _ServiceError . hasCode "ClusterContainsContainerInstancesException"
 
 -- | The specified service is not active. You cannot update a service that is
 -- not active. If you have previously deleted a service, you can re-create
--- it with CreateService.
+-- it with < CreateService>.
 _ServiceNotActiveException :: AsError a => Getting (First ServiceError) a ServiceError
 _ServiceNotActiveException =
     _ServiceError . hasCode "ServiceNotActiveException"
 
 -- | The specified cluster could not be found. You can view your available
--- clusters with ListClusters. Amazon ECS clusters are region-specific.
+-- clusters with < ListClusters>. Amazon ECS clusters are region-specific.
 _ClusterNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _ClusterNotFoundException = _ServiceError . hasCode "ClusterNotFoundException"
 
@@ -372,8 +381,8 @@
     _ServiceError . hasCode "NoUpdateAvailableException"
 
 -- | The specified service could not be found. You can view your available
--- services with ListServices. Amazon ECS services are cluster-specific and
--- region-specific.
+-- services with < ListServices>. Amazon ECS services are cluster-specific
+-- and region-specific.
 _ServiceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _ServiceNotFoundException = _ServiceError . hasCode "ServiceNotFoundException"
 
diff --git a/gen/Network/AWS/ECS/Types/Product.hs b/gen/Network/AWS/ECS/Types/Product.hs
--- a/gen/Network/AWS/ECS/Types/Product.hs
+++ b/gen/Network/AWS/ECS/Types/Product.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.Types.Product
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -45,7 +45,9 @@
     , _aName = pName_
     }
 
--- | The value of the container instance attribute.
+-- | The value of the container instance attribute (at this time, the value
+-- here is 'Null', but this could change in future revisions for
+-- expandability).
 aValue :: Lens' Attribute (Maybe Text)
 aValue = lens _aValue (\ s a -> s{_aValue = a});
 
@@ -59,6 +61,8 @@
               (\ x ->
                  Attribute' <$> (x .:? "value") <*> (x .: "name"))
 
+instance Hashable Attribute
+
 instance ToJSON Attribute where
         toJSON Attribute'{..}
           = object
@@ -143,7 +147,7 @@
 cClusterName = lens _cClusterName (\ s a -> s{_cClusterName = a});
 
 -- | The number of services that are running on the cluster in an 'ACTIVE'
--- state. You can view these services with ListServices.
+-- state. You can view these services with < ListServices>.
 cActiveServicesCount :: Lens' Cluster (Maybe Int)
 cActiveServicesCount = lens _cActiveServicesCount (\ s a -> s{_cActiveServicesCount = a});
 
@@ -159,6 +163,8 @@
                      <*> (x .:? "clusterName")
                      <*> (x .:? "activeServicesCount"))
 
+instance Hashable Cluster
+
 -- | A Docker container that is part of a task.
 --
 -- /See:/ 'container' smart constructor.
@@ -244,6 +250,8 @@
                      <*> (x .:? "name")
                      <*> (x .:? "exitCode"))
 
+instance Hashable Container
+
 -- | Container definitions are used in task definitions to describe the
 -- different containers that are launched as part of a task.
 --
@@ -372,6 +380,13 @@
 -- <https://docs.docker.com/reference/api/docker_remote_api_v1.19/ Docker Remote API>
 -- and the 'IMAGE' parameter of
 -- <https://docs.docker.com/reference/commandline/run/ docker run>.
+--
+-- -   Images in official repositories on Docker Hub use a single name (for
+--     example, 'ubuntu' or 'mongo').
+-- -   Images in other repositories on Docker Hub are qualified with an
+--     organization name (for example, 'amazon\/amazon-ecs-agent').
+-- -   Images in other online repositories are qualified further by a
+--     domain name (for example, 'quay.io\/assemblyline\/ubuntu').
 cdImage :: Lens' ContainerDefinition (Maybe Text)
 cdImage = lens _cdImage (\ s a -> s{_cdImage = a});
 
@@ -480,7 +495,7 @@
 -- <https://docs.docker.com/reference/api/docker_remote_api_v1.19/ Docker Remote API>
 -- and the '--ulimit' option to
 -- <https://docs.docker.com/reference/commandline/run/ docker run>. Valid
--- naming values are displayed in the Ulimit data type. This parameter
+-- naming values are displayed in the < Ulimit> data type. This parameter
 -- requires version 1.18 of the Docker Remote API or greater on your
 -- container instance. To check the Docker Remote API version on your
 -- container instance, log into your container instance and run the
@@ -507,6 +522,11 @@
 -- <https://docs.docker.com/reference/api/docker_remote_api_v1.19/ Docker Remote API>
 -- and the '--publish' option to
 -- <https://docs.docker.com/reference/commandline/run/ docker run>.
+--
+-- After a task reaches the 'RUNNING' status, manual and automatic host and
+-- container port assignments are visible in the __Network Bindings__
+-- section of a container description of a selected task in the Amazon ECS
+-- console, or the 'networkBindings' section < DescribeTasks> responses.
 cdPortMappings :: Lens' ContainerDefinition [PortMapping]
 cdPortMappings = lens _cdPortMappings (\ s a -> s{_cdPortMappings = a}) . _Default . _Coerce;
 
@@ -576,7 +596,7 @@
 -- <https://docs.docker.com/reference/api/docker_remote_api_v1.19/ Docker Remote API>
 -- and the '--log-driver' option to
 -- <https://docs.docker.com/reference/commandline/run/ docker run>. Valid
--- log drivers are displayed in the LogConfiguration data type. This
+-- log drivers are displayed in the < LogConfiguration> data type. This
 -- parameter requires version 1.18 of the Docker Remote API or greater on
 -- your container instance. To check the Docker Remote API version on your
 -- container instance, log into your container instance and run the
@@ -637,7 +657,7 @@
 -- section of the
 -- <https://docs.docker.com/reference/api/docker_remote_api_v1.19/ Docker Remote API>
 -- and the '--link' option to
--- <https://docs.docker.com/reference/commandline/run/ 'docker run'>.
+-- <https://docs.docker.com/reference/commandline/run/ docker run>.
 --
 -- Containers that are collocated on a single container instance may be
 -- able to communicate with each other without requiring links or host port
@@ -741,6 +761,8 @@
                      <*> (x .:? "essential")
                      <*> (x .:? "cpu"))
 
+instance Hashable ContainerDefinition
+
 instance ToJSON ContainerDefinition where
         toJSON ContainerDefinition'{..}
           = object
@@ -909,6 +931,8 @@
                      <*> (x .:? "pendingTasksCount")
                      <*> (x .:? "registeredResources" .!= mempty))
 
+instance Hashable ContainerInstance
+
 -- | The overrides that should be sent to a container.
 --
 -- /See:/ 'containerOverride' smart constructor.
@@ -961,6 +985,8 @@
                      (x .:? "environment" .!= mempty)
                      <*> (x .:? "name"))
 
+instance Hashable ContainerOverride
+
 instance ToJSON ContainerOverride where
         toJSON ContainerOverride'{..}
           = object
@@ -973,18 +999,19 @@
 --
 -- /See:/ 'containerService' smart constructor.
 data ContainerService = ContainerService'
-    { _csRunningCount   :: !(Maybe Int)
-    , _csStatus         :: !(Maybe Text)
-    , _csClusterARN     :: !(Maybe Text)
-    , _csDesiredCount   :: !(Maybe Int)
-    , _csLoadBalancers  :: !(Maybe [LoadBalancer])
-    , _csPendingCount   :: !(Maybe Int)
-    , _csEvents         :: !(Maybe [ServiceEvent])
-    , _csDeployments    :: !(Maybe [Deployment])
-    , _csServiceName    :: !(Maybe Text)
-    , _csServiceARN     :: !(Maybe Text)
-    , _csTaskDefinition :: !(Maybe Text)
-    , _csRoleARN        :: !(Maybe Text)
+    { _csRunningCount            :: !(Maybe Int)
+    , _csStatus                  :: !(Maybe Text)
+    , _csClusterARN              :: !(Maybe Text)
+    , _csDesiredCount            :: !(Maybe Int)
+    , _csLoadBalancers           :: !(Maybe [LoadBalancer])
+    , _csPendingCount            :: !(Maybe Int)
+    , _csEvents                  :: !(Maybe [ServiceEvent])
+    , _csDeployments             :: !(Maybe [Deployment])
+    , _csServiceName             :: !(Maybe Text)
+    , _csServiceARN              :: !(Maybe Text)
+    , _csTaskDefinition          :: !(Maybe Text)
+    , _csRoleARN                 :: !(Maybe Text)
+    , _csDeploymentConfiguration :: !(Maybe DeploymentConfiguration)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ContainerService' with the minimum fields required to make a request.
@@ -1014,6 +1041,8 @@
 -- * 'csTaskDefinition'
 --
 -- * 'csRoleARN'
+--
+-- * 'csDeploymentConfiguration'
 containerService
     :: ContainerService
 containerService =
@@ -1030,6 +1059,7 @@
     , _csServiceARN = Nothing
     , _csTaskDefinition = Nothing
     , _csRoleARN = Nothing
+    , _csDeploymentConfiguration = Nothing
     }
 
 -- | The number of tasks in the cluster that are in the 'RUNNING' state.
@@ -1048,7 +1078,8 @@
 
 -- | The desired number of instantiations of the task definition to keep
 -- running on the service. This value is specified when the service is
--- created with CreateService, and it can be modified with UpdateService.
+-- created with < CreateService>, and it can be modified with
+-- < UpdateService>.
 csDesiredCount :: Lens' ContainerService (Maybe Int)
 csDesiredCount = lens _csDesiredCount (\ s a -> s{_csDesiredCount = a});
 
@@ -1071,7 +1102,10 @@
 csDeployments :: Lens' ContainerService [Deployment]
 csDeployments = lens _csDeployments (\ s a -> s{_csDeployments = a}) . _Default . _Coerce;
 
--- | A user-generated string that you can use to identify your service.
+-- | The name of your service. Up to 255 letters (uppercase and lowercase),
+-- numbers, hyphens, and underscores are allowed. Service names must be
+-- unique within a cluster, but you can have similarly named services in
+-- multiple clusters within a region or across multiple regions.
 csServiceName :: Lens' ContainerService (Maybe Text)
 csServiceName = lens _csServiceName (\ s a -> s{_csServiceName = a});
 
@@ -1084,8 +1118,8 @@
 csServiceARN = lens _csServiceARN (\ s a -> s{_csServiceARN = a});
 
 -- | The task definition to use for tasks in the service. This value is
--- specified when the service is created with CreateService, and it can be
--- modified with UpdateService.
+-- specified when the service is created with < CreateService>, and it can
+-- be modified with < UpdateService>.
 csTaskDefinition :: Lens' ContainerService (Maybe Text)
 csTaskDefinition = lens _csTaskDefinition (\ s a -> s{_csTaskDefinition = a});
 
@@ -1095,6 +1129,11 @@
 csRoleARN :: Lens' ContainerService (Maybe Text)
 csRoleARN = lens _csRoleARN (\ s a -> s{_csRoleARN = a});
 
+-- | Optional deployment parameters that control how many tasks run during
+-- the deployment and the ordering of stopping and starting tasks.
+csDeploymentConfiguration :: Lens' ContainerService (Maybe DeploymentConfiguration)
+csDeploymentConfiguration = lens _csDeploymentConfiguration (\ s a -> s{_csDeploymentConfiguration = a});
+
 instance FromJSON ContainerService where
         parseJSON
           = withObject "ContainerService"
@@ -1110,8 +1149,11 @@
                      <*> (x .:? "serviceName")
                      <*> (x .:? "serviceArn")
                      <*> (x .:? "taskDefinition")
-                     <*> (x .:? "roleArn"))
+                     <*> (x .:? "roleArn")
+                     <*> (x .:? "deploymentConfiguration"))
 
+instance Hashable ContainerService
+
 -- | The details of an Amazon ECS service deployment.
 --
 -- /See:/ 'deployment' smart constructor.
@@ -1210,6 +1252,66 @@
                      <*> (x .:? "updatedAt")
                      <*> (x .:? "taskDefinition"))
 
+instance Hashable Deployment
+
+-- | Optional deployment parameters that control how many tasks run during
+-- the deployment and the ordering of stopping and starting tasks.
+--
+-- /See:/ 'deploymentConfiguration' smart constructor.
+data DeploymentConfiguration = DeploymentConfiguration'
+    { _dcMinimumHealthyPercent :: !(Maybe Int)
+    , _dcMaximumPercent        :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeploymentConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcMinimumHealthyPercent'
+--
+-- * 'dcMaximumPercent'
+deploymentConfiguration
+    :: DeploymentConfiguration
+deploymentConfiguration =
+    DeploymentConfiguration'
+    { _dcMinimumHealthyPercent = Nothing
+    , _dcMaximumPercent = Nothing
+    }
+
+-- | The lower limit (as a percentage of the service\'s 'desiredCount') of
+-- the number of running tasks that must remain running and healthy in a
+-- service during a deployment. The minimum healthy tasks during a
+-- deployment is the 'desiredCount' multiplied by the
+-- 'minimumHealthyPercent'\/100, rounded up to the nearest integer value.
+dcMinimumHealthyPercent :: Lens' DeploymentConfiguration (Maybe Int)
+dcMinimumHealthyPercent = lens _dcMinimumHealthyPercent (\ s a -> s{_dcMinimumHealthyPercent = a});
+
+-- | The upper limit (as a percentage of the service\'s 'desiredCount') of
+-- the number of running tasks that can be running in a service during a
+-- deployment. The maximum number of tasks during a deployment is the
+-- 'desiredCount' multiplied by the 'maximumPercent'\/100, rounded down to
+-- the nearest integer value.
+dcMaximumPercent :: Lens' DeploymentConfiguration (Maybe Int)
+dcMaximumPercent = lens _dcMaximumPercent (\ s a -> s{_dcMaximumPercent = a});
+
+instance FromJSON DeploymentConfiguration where
+        parseJSON
+          = withObject "DeploymentConfiguration"
+              (\ x ->
+                 DeploymentConfiguration' <$>
+                   (x .:? "minimumHealthyPercent") <*>
+                     (x .:? "maximumPercent"))
+
+instance Hashable DeploymentConfiguration
+
+instance ToJSON DeploymentConfiguration where
+        toJSON DeploymentConfiguration'{..}
+          = object
+              (catMaybes
+                 [("minimumHealthyPercent" .=) <$>
+                    _dcMinimumHealthyPercent,
+                  ("maximumPercent" .=) <$> _dcMaximumPercent])
+
 -- | A failed resource.
 --
 -- /See:/ 'failure' smart constructor.
@@ -1247,9 +1349,11 @@
               (\ x ->
                  Failure' <$> (x .:? "arn") <*> (x .:? "reason"))
 
+instance Hashable Failure
+
 -- | Hostnames and IP address entries that are added to the '\/etc\/hosts'
 -- file of a container via the 'extraHosts' parameter of its
--- ContainerDefinition.
+-- < ContainerDefinition>.
 --
 -- /See:/ 'hostEntry' smart constructor.
 data HostEntry = HostEntry'
@@ -1289,6 +1393,8 @@
                  HostEntry' <$>
                    (x .: "hostname") <*> (x .: "ipAddress"))
 
+instance Hashable HostEntry
+
 instance ToJSON HostEntry where
         toJSON HostEntry'{..}
           = object
@@ -1317,7 +1423,12 @@
 
 -- | The path on the host container instance that is presented to the
 -- container. If this parameter is empty, then the Docker daemon has
--- assigned a host path for you.
+-- assigned a host path for you. If the 'host' parameter contains a
+-- 'sourcePath' file location, then the data volume persists at the
+-- specified location on the host container instance until you delete it
+-- manually. If the 'sourcePath' value does not exist on the host container
+-- instance, the Docker daemon creates it. If the location does exist, the
+-- contents of the source path folder are exported.
 hvpSourcePath :: Lens' HostVolumeProperties (Maybe Text)
 hvpSourcePath = lens _hvpSourcePath (\ s a -> s{_hvpSourcePath = a});
 
@@ -1327,6 +1438,8 @@
               (\ x ->
                  HostVolumeProperties' <$> (x .:? "sourcePath"))
 
+instance Hashable HostVolumeProperties
+
 instance ToJSON HostVolumeProperties where
         toJSON HostVolumeProperties'{..}
           = object
@@ -1371,6 +1484,8 @@
               (\ x ->
                  KeyValuePair' <$> (x .:? "value") <*> (x .:? "name"))
 
+instance Hashable KeyValuePair
+
 instance ToJSON KeyValuePair where
         toJSON KeyValuePair'{..}
           = object
@@ -1409,7 +1524,8 @@
 lbLoadBalancerName :: Lens' LoadBalancer (Maybe Text)
 lbLoadBalancerName = lens _lbLoadBalancerName (\ s a -> s{_lbLoadBalancerName = a});
 
--- | The name of the container to associate with the load balancer.
+-- | The name of the container (as it appears in a container definition) to
+-- associate with the load balancer.
 lbContainerName :: Lens' LoadBalancer (Maybe Text)
 lbContainerName = lens _lbContainerName (\ s a -> s{_lbContainerName = a});
 
@@ -1429,6 +1545,8 @@
                      (x .:? "containerName")
                      <*> (x .:? "containerPort"))
 
+instance Hashable LoadBalancer
+
 instance ToJSON LoadBalancer where
         toJSON LoadBalancer'{..}
           = object
@@ -1485,6 +1603,8 @@
                  LogConfiguration' <$>
                    (x .:? "options" .!= mempty) <*> (x .: "logDriver"))
 
+instance Hashable LogConfiguration
+
 instance ToJSON LogConfiguration where
         toJSON LogConfiguration'{..}
           = object
@@ -1541,6 +1661,8 @@
                    (x .:? "containerPath") <*> (x .:? "sourceVolume")
                      <*> (x .:? "readOnly"))
 
+instance Hashable MountPoint
+
 instance ToJSON MountPoint where
         toJSON MountPoint'{..}
           = object
@@ -1552,7 +1674,7 @@
 -- | Details on the network bindings between a container and its host
 -- container instance. After a task reaches the 'RUNNING' status, manual
 -- and automatic host and container port assignments are visible in the
--- 'networkBindings' section of DescribeTasks API responses.
+-- 'networkBindings' section of < DescribeTasks> API responses.
 --
 -- /See:/ 'networkBinding' smart constructor.
 data NetworkBinding = NetworkBinding'
@@ -1609,6 +1731,8 @@
                      (x .:? "hostPort")
                      <*> (x .:? "containerPort"))
 
+instance Hashable NetworkBinding
+
 instance ToJSON NetworkBinding where
         toJSON NetworkBinding'{..}
           = object
@@ -1622,7 +1746,7 @@
 -- instance to send or receive traffic. Port mappings are specified as part
 -- of the container definition. After a task reaches the 'RUNNING' status,
 -- manual and automatic host and container port assignments are visible in
--- the 'networkBindings' section of DescribeTasks API responses.
+-- the 'networkBindings' section of < DescribeTasks> API responses.
 --
 -- /See:/ 'portMapping' smart constructor.
 data PortMapping = PortMapping'
@@ -1675,8 +1799,8 @@
 -- was previously specified in a running task is also reserved while the
 -- task is running (after a task stops, the host port is released).The
 -- current reserved ports are displayed in the 'remainingResources' of
--- DescribeContainerInstances output, and a container instance may have up
--- to 50 reserved ports at a time, including the default reserved ports
+-- < DescribeContainerInstances> output, and a container instance may have
+-- up to 50 reserved ports at a time, including the default reserved ports
 -- (automatically assigned ports do not count toward this limit).
 pmHostPort :: Lens' PortMapping (Maybe Int)
 pmHostPort = lens _pmHostPort (\ s a -> s{_pmHostPort = a});
@@ -1696,6 +1820,8 @@
                    (x .:? "protocol") <*> (x .:? "hostPort") <*>
                      (x .:? "containerPort"))
 
+instance Hashable PortMapping
+
 instance ToJSON PortMapping where
         toJSON PortMapping'{..}
           = object
@@ -1785,6 +1911,8 @@
                      <*> (x .:? "name")
                      <*> (x .:? "type"))
 
+instance Hashable Resource
+
 instance ToJSON Resource where
         toJSON Resource'{..}
           = object
@@ -1842,6 +1970,8 @@
                    (x .:? "createdAt") <*> (x .:? "id") <*>
                      (x .:? "message"))
 
+instance Hashable ServiceEvent
+
 -- | Details on a task in a cluster.
 --
 -- /See:/ 'task' smart constructor.
@@ -1987,6 +2117,8 @@
                      <*> (x .:? "stoppedReason")
                      <*> (x .:? "taskDefinitionArn"))
 
+instance Hashable Task
+
 -- | Details of a task definition.
 --
 -- /See:/ 'taskDefinition' smart constructor.
@@ -2082,6 +2214,8 @@
                      <*> (x .:? "volumes" .!= mempty)
                      <*> (x .:? "requiresAttributes" .!= mempty))
 
+instance Hashable TaskDefinition
+
 -- | The overrides associated with a task.
 --
 -- /See:/ 'taskOverride' smart constructor.
@@ -2112,6 +2246,8 @@
                  TaskOverride' <$>
                    (x .:? "containerOverrides" .!= mempty))
 
+instance Hashable TaskOverride
+
 instance ToJSON TaskOverride where
         toJSON TaskOverride'{..}
           = object
@@ -2169,6 +2305,8 @@
                    (x .: "name") <*> (x .: "softLimit") <*>
                      (x .: "hardLimit"))
 
+instance Hashable Ulimit
+
 instance ToJSON Ulimit where
         toJSON Ulimit'{..}
           = object
@@ -2227,6 +2365,8 @@
                    (x .:? "agentHash") <*> (x .:? "agentVersion") <*>
                      (x .:? "dockerVersion"))
 
+instance Hashable VersionInfo
+
 instance ToJSON VersionInfo where
         toJSON VersionInfo'{..}
           = object
@@ -2258,14 +2398,17 @@
     , _vHost = Nothing
     }
 
--- | The name of the volume. This name is referenced in the 'sourceVolume'
--- parameter of container definition 'mountPoints'.
+-- | The name of the volume. Up to 255 letters (uppercase and lowercase),
+-- numbers, hyphens, and underscores are allowed. This name is referenced
+-- in the 'sourceVolume' parameter of container definition 'mountPoints'.
 vName :: Lens' Volume (Maybe Text)
 vName = lens _vName (\ s a -> s{_vName = a});
 
--- | The path on the host container instance that is presented to the
--- containers which access the volume. If this parameter is empty, then the
--- Docker daemon assigns a host path for you.
+-- | The contents of the 'host' parameter determine whether your data volume
+-- persists on the host container instance and where it is stored. If the
+-- host parameter is empty, then the Docker daemon assigns a host path for
+-- your data volume, but the data is not guaranteed to persist after the
+-- containers associated with it stop running.
 vHost :: Lens' Volume (Maybe HostVolumeProperties)
 vHost = lens _vHost (\ s a -> s{_vHost = a});
 
@@ -2275,6 +2418,8 @@
               (\ x ->
                  Volume' <$> (x .:? "name") <*> (x .:? "host"))
 
+instance Hashable Volume
+
 instance ToJSON Volume where
         toJSON Volume'{..}
           = object
@@ -2320,6 +2465,8 @@
               (\ x ->
                  VolumeFrom' <$>
                    (x .:? "sourceContainer") <*> (x .:? "readOnly"))
+
+instance Hashable VolumeFrom
 
 instance ToJSON VolumeFrom where
         toJSON VolumeFrom'{..}
diff --git a/gen/Network/AWS/ECS/Types/Sum.hs b/gen/Network/AWS/ECS/Types/Sum.hs
--- a/gen/Network/AWS/ECS/Types/Sum.hs
+++ b/gen/Network/AWS/ECS/Types/Sum.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.Types.Sum
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
diff --git a/gen/Network/AWS/ECS/UpdateContainerAgent.hs b/gen/Network/AWS/ECS/UpdateContainerAgent.hs
--- a/gen/Network/AWS/ECS/UpdateContainerAgent.hs
+++ b/gen/Network/AWS/ECS/UpdateContainerAgent.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.UpdateContainerAgent
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -30,8 +30,6 @@
 -- updating the Amazon ECS container agent on other operating systems, see
 -- <http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html#manually_update_agent Manually Updating the Amazon ECS Container Agent>
 -- in the /Amazon EC2 Container Service Developer Guide/.
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateContainerAgent.html AWS API Reference> for UpdateContainerAgent.
 module Network.AWS.ECS.UpdateContainerAgent
     (
     -- * Creating a Request
@@ -93,12 +91,14 @@
 instance AWSRequest UpdateContainerAgent where
         type Rs UpdateContainerAgent =
              UpdateContainerAgentResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  UpdateContainerAgentResponse' <$>
                    (x .?> "containerInstance") <*> (pure (fromEnum s)))
+
+instance Hashable UpdateContainerAgent
 
 instance ToHeaders UpdateContainerAgent where
         toHeaders
diff --git a/gen/Network/AWS/ECS/UpdateService.hs b/gen/Network/AWS/ECS/UpdateService.hs
--- a/gen/Network/AWS/ECS/UpdateService.hs
+++ b/gen/Network/AWS/ECS/UpdateService.hs
@@ -12,31 +12,47 @@
 
 -- |
 -- Module      : Network.AWS.ECS.UpdateService
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Modify the desired count or task definition used in a service.
+-- Modifies the desired count, deployment configuration, or task definition
+-- used in a service.
 --
 -- You can add to or subtract from the number of instantiations of a task
 -- definition in a service by specifying the cluster that the service is
 -- running in and a new 'desiredCount' parameter.
 --
--- You can use 'UpdateService' to modify your task definition and deploy a
--- new version of your service, one task at a time. If you modify the task
--- definition with 'UpdateService', Amazon ECS spawns a task with the new
--- version of the task definition and then stops an old task after the new
--- version is running. Because 'UpdateService' starts a new version of the
--- task before stopping an old version, your cluster must have capacity to
--- support one more instantiation of the task when 'UpdateService' is run.
--- If your cluster cannot support another instantiation of the task used in
--- your service, you can reduce the desired count of your service by one
--- before modifying the task definition.
+-- You can use < UpdateService> to modify your task definition and deploy a
+-- new version of your service.
 --
--- When UpdateService replaces a task during an update, the equivalent of
--- 'docker stop' is issued to the containers running in the task. This
+-- You can also update the deployment configuration of a service. When a
+-- deployment is triggered by updating the task definition of a service,
+-- the service scheduler uses the deployment configuration parameters,
+-- 'minimumHealthyPercent' and 'maximumPercent', to determine the
+-- deployment strategy.
+--
+-- If the 'minimumHealthyPercent' is below 100%, the scheduler can ignore
+-- the 'desiredCount' temporarily during a deployment. For example, if your
+-- service has a 'desiredCount' of four tasks, a 'minimumHealthyPercent' of
+-- 50% allows the scheduler to stop two existing tasks before starting two
+-- new tasks. Tasks for services that /do not/ use a load balancer are
+-- considered healthy if they are in the 'RUNNING' state; tasks for
+-- services that /do/ use a load balancer are considered healthy if they
+-- are in the 'RUNNING' state and the container instance it is hosted on is
+-- reported as healthy by the load balancer.
+--
+-- The 'maximumPercent' parameter represents an upper limit on the number
+-- of running tasks during a deployment, which enables you to define the
+-- deployment batch size. For example, if your service has a 'desiredCount'
+-- of four tasks, a 'maximumPercent' value of 200% starts four new tasks
+-- before stopping the four older tasks (provided that the cluster
+-- resources required to do this are available).
+--
+-- When < UpdateService> stops a task during a deployment, the equivalent
+-- of 'docker stop' is issued to the containers running in the task. This
 -- results in a 'SIGTERM' and a 30-second timeout, after which 'SIGKILL' is
 -- sent and the containers are forcibly stopped. If the container handles
 -- the 'SIGTERM' gracefully and exits within 30 seconds from receiving it,
@@ -61,8 +77,6 @@
 --     container instances with the fewest number of running tasks for this
 --     service.
 --
---
--- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html AWS API Reference> for UpdateService.
 module Network.AWS.ECS.UpdateService
     (
     -- * Creating a Request
@@ -72,6 +86,7 @@
     , usCluster
     , usDesiredCount
     , usTaskDefinition
+    , usDeploymentConfiguration
     , usService
 
     -- * Destructuring the Response
@@ -91,10 +106,11 @@
 
 -- | /See:/ 'updateService' smart constructor.
 data UpdateService = UpdateService'
-    { _usCluster        :: !(Maybe Text)
-    , _usDesiredCount   :: !(Maybe Int)
-    , _usTaskDefinition :: !(Maybe Text)
-    , _usService        :: !Text
+    { _usCluster                 :: !(Maybe Text)
+    , _usDesiredCount            :: !(Maybe Int)
+    , _usTaskDefinition          :: !(Maybe Text)
+    , _usDeploymentConfiguration :: !(Maybe DeploymentConfiguration)
+    , _usService                 :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'UpdateService' with the minimum fields required to make a request.
@@ -107,6 +123,8 @@
 --
 -- * 'usTaskDefinition'
 --
+-- * 'usDeploymentConfiguration'
+--
 -- * 'usService'
 updateService
     :: Text -- ^ 'usService'
@@ -116,6 +134,7 @@
     { _usCluster = Nothing
     , _usDesiredCount = Nothing
     , _usTaskDefinition = Nothing
+    , _usDeploymentConfiguration = Nothing
     , _usService = pService_
     }
 
@@ -139,19 +158,26 @@
 usTaskDefinition :: Lens' UpdateService (Maybe Text)
 usTaskDefinition = lens _usTaskDefinition (\ s a -> s{_usTaskDefinition = a});
 
+-- | Optional deployment parameters that control how many tasks run during
+-- the deployment and the ordering of stopping and starting tasks.
+usDeploymentConfiguration :: Lens' UpdateService (Maybe DeploymentConfiguration)
+usDeploymentConfiguration = lens _usDeploymentConfiguration (\ s a -> s{_usDeploymentConfiguration = a});
+
 -- | The name of the service to update.
 usService :: Lens' UpdateService Text
 usService = lens _usService (\ s a -> s{_usService = a});
 
 instance AWSRequest UpdateService where
         type Rs UpdateService = UpdateServiceResponse
-        request = postJSON eCS
+        request = postJSON ecs
         response
           = receiveJSON
               (\ s h x ->
                  UpdateServiceResponse' <$>
                    (x .?> "service") <*> (pure (fromEnum s)))
 
+instance Hashable UpdateService
+
 instance ToHeaders UpdateService where
         toHeaders
           = const
@@ -169,6 +195,8 @@
                  [("cluster" .=) <$> _usCluster,
                   ("desiredCount" .=) <$> _usDesiredCount,
                   ("taskDefinition" .=) <$> _usTaskDefinition,
+                  ("deploymentConfiguration" .=) <$>
+                    _usDeploymentConfiguration,
                   Just ("service" .= _usService)])
 
 instance ToPath UpdateService where
diff --git a/gen/Network/AWS/ECS/Waiters.hs b/gen/Network/AWS/ECS/Waiters.hs
--- a/gen/Network/AWS/ECS/Waiters.hs
+++ b/gen/Network/AWS/ECS/Waiters.hs
@@ -7,7 +7,7 @@
 
 -- |
 -- Module      : Network.AWS.ECS.Waiters
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
diff --git a/test/Test/AWS/ECS.hs b/test/Test/AWS/ECS.hs
--- a/test/Test/AWS/ECS.hs
+++ b/test/Test/AWS/ECS.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 -- Module      : Test.AWS.ECS
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : This Source Code Form is subject to the terms of
 --               the Mozilla Public License, v. 2.0.
 --               A copy of the MPL can be found in the LICENSE file or
diff --git a/test/Test/AWS/ECS/Internal.hs b/test/Test/AWS/ECS/Internal.hs
--- a/test/Test/AWS/ECS/Internal.hs
+++ b/test/Test/AWS/ECS/Internal.hs
@@ -2,7 +2,7 @@
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
 -- Module      : Test.AWS.ECS.Internal
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : This Source Code Form is subject to the terms of
 --               the Mozilla Public License, v. 2.0.
 --               A copy of the MPL can be found in the LICENSE file or
diff --git a/test/Test/AWS/Gen/ECS.hs b/test/Test/AWS/Gen/ECS.hs
--- a/test/Test/AWS/Gen/ECS.hs
+++ b/test/Test/AWS/Gen/ECS.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Test.AWS.Gen.ECS
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -339,187 +339,187 @@
 testListServicesResponse = res
     "ListServicesResponse"
     "fixture/ListServicesResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy ListServices)
 
 testDescribeClustersResponse :: DescribeClustersResponse -> TestTree
 testDescribeClustersResponse = res
     "DescribeClustersResponse"
     "fixture/DescribeClustersResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy DescribeClusters)
 
 testDeleteServiceResponse :: DeleteServiceResponse -> TestTree
 testDeleteServiceResponse = res
     "DeleteServiceResponse"
     "fixture/DeleteServiceResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy DeleteService)
 
 testUpdateServiceResponse :: UpdateServiceResponse -> TestTree
 testUpdateServiceResponse = res
     "UpdateServiceResponse"
     "fixture/UpdateServiceResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy UpdateService)
 
 testDiscoverPollEndpointResponse :: DiscoverPollEndpointResponse -> TestTree
 testDiscoverPollEndpointResponse = res
     "DiscoverPollEndpointResponse"
     "fixture/DiscoverPollEndpointResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy DiscoverPollEndpoint)
 
 testSubmitContainerStateChangeResponse :: SubmitContainerStateChangeResponse -> TestTree
 testSubmitContainerStateChangeResponse = res
     "SubmitContainerStateChangeResponse"
     "fixture/SubmitContainerStateChangeResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy SubmitContainerStateChange)
 
 testStopTaskResponse :: StopTaskResponse -> TestTree
 testStopTaskResponse = res
     "StopTaskResponse"
     "fixture/StopTaskResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy StopTask)
 
 testDescribeTaskDefinitionResponse :: DescribeTaskDefinitionResponse -> TestTree
 testDescribeTaskDefinitionResponse = res
     "DescribeTaskDefinitionResponse"
     "fixture/DescribeTaskDefinitionResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy DescribeTaskDefinition)
 
 testSubmitTaskStateChangeResponse :: SubmitTaskStateChangeResponse -> TestTree
 testSubmitTaskStateChangeResponse = res
     "SubmitTaskStateChangeResponse"
     "fixture/SubmitTaskStateChangeResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy SubmitTaskStateChange)
 
 testDescribeContainerInstancesResponse :: DescribeContainerInstancesResponse -> TestTree
 testDescribeContainerInstancesResponse = res
     "DescribeContainerInstancesResponse"
     "fixture/DescribeContainerInstancesResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy DescribeContainerInstances)
 
 testDeleteClusterResponse :: DeleteClusterResponse -> TestTree
 testDeleteClusterResponse = res
     "DeleteClusterResponse"
     "fixture/DeleteClusterResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy DeleteCluster)
 
 testCreateClusterResponse :: CreateClusterResponse -> TestTree
 testCreateClusterResponse = res
     "CreateClusterResponse"
     "fixture/CreateClusterResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy CreateCluster)
 
 testListTaskDefinitionsResponse :: ListTaskDefinitionsResponse -> TestTree
 testListTaskDefinitionsResponse = res
     "ListTaskDefinitionsResponse"
     "fixture/ListTaskDefinitionsResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy ListTaskDefinitions)
 
 testRunTaskResponse :: RunTaskResponse -> TestTree
 testRunTaskResponse = res
     "RunTaskResponse"
     "fixture/RunTaskResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy RunTask)
 
 testListTasksResponse :: ListTasksResponse -> TestTree
 testListTasksResponse = res
     "ListTasksResponse"
     "fixture/ListTasksResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy ListTasks)
 
 testRegisterContainerInstanceResponse :: RegisterContainerInstanceResponse -> TestTree
 testRegisterContainerInstanceResponse = res
     "RegisterContainerInstanceResponse"
     "fixture/RegisterContainerInstanceResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy RegisterContainerInstance)
 
 testUpdateContainerAgentResponse :: UpdateContainerAgentResponse -> TestTree
 testUpdateContainerAgentResponse = res
     "UpdateContainerAgentResponse"
     "fixture/UpdateContainerAgentResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy UpdateContainerAgent)
 
 testListContainerInstancesResponse :: ListContainerInstancesResponse -> TestTree
 testListContainerInstancesResponse = res
     "ListContainerInstancesResponse"
     "fixture/ListContainerInstancesResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy ListContainerInstances)
 
 testListTaskDefinitionFamiliesResponse :: ListTaskDefinitionFamiliesResponse -> TestTree
 testListTaskDefinitionFamiliesResponse = res
     "ListTaskDefinitionFamiliesResponse"
     "fixture/ListTaskDefinitionFamiliesResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy ListTaskDefinitionFamilies)
 
 testStartTaskResponse :: StartTaskResponse -> TestTree
 testStartTaskResponse = res
     "StartTaskResponse"
     "fixture/StartTaskResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy StartTask)
 
 testDeregisterTaskDefinitionResponse :: DeregisterTaskDefinitionResponse -> TestTree
 testDeregisterTaskDefinitionResponse = res
     "DeregisterTaskDefinitionResponse"
     "fixture/DeregisterTaskDefinitionResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy DeregisterTaskDefinition)
 
 testDescribeTasksResponse :: DescribeTasksResponse -> TestTree
 testDescribeTasksResponse = res
     "DescribeTasksResponse"
     "fixture/DescribeTasksResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy DescribeTasks)
 
 testListClustersResponse :: ListClustersResponse -> TestTree
 testListClustersResponse = res
     "ListClustersResponse"
     "fixture/ListClustersResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy ListClusters)
 
 testDescribeServicesResponse :: DescribeServicesResponse -> TestTree
 testDescribeServicesResponse = res
     "DescribeServicesResponse"
     "fixture/DescribeServicesResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy DescribeServices)
 
 testDeregisterContainerInstanceResponse :: DeregisterContainerInstanceResponse -> TestTree
 testDeregisterContainerInstanceResponse = res
     "DeregisterContainerInstanceResponse"
     "fixture/DeregisterContainerInstanceResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy DeregisterContainerInstance)
 
 testRegisterTaskDefinitionResponse :: RegisterTaskDefinitionResponse -> TestTree
 testRegisterTaskDefinitionResponse = res
     "RegisterTaskDefinitionResponse"
     "fixture/RegisterTaskDefinitionResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy RegisterTaskDefinition)
 
 testCreateServiceResponse :: CreateServiceResponse -> TestTree
 testCreateServiceResponse = res
     "CreateServiceResponse"
     "fixture/CreateServiceResponse.proto"
-    eCS
+    ecs
     (Proxy :: Proxy CreateService)
