diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.0`
+`1.4.1`
 
 
 ## Description
diff --git a/amazonka-ds.cabal b/amazonka-ds.cabal
--- a/amazonka-ds.cabal
+++ b/amazonka-ds.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-ds
-version:               1.4.0
+version:               1.4.1
 synopsis:              Amazon Directory Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -48,14 +48,17 @@
         , Network.AWS.DirectoryService.ConnectDirectory
         , Network.AWS.DirectoryService.CreateAlias
         , Network.AWS.DirectoryService.CreateComputer
+        , Network.AWS.DirectoryService.CreateConditionalForwarder
         , Network.AWS.DirectoryService.CreateDirectory
         , Network.AWS.DirectoryService.CreateMicrosoftAD
         , Network.AWS.DirectoryService.CreateSnapshot
         , Network.AWS.DirectoryService.CreateTrust
+        , Network.AWS.DirectoryService.DeleteConditionalForwarder
         , Network.AWS.DirectoryService.DeleteDirectory
         , Network.AWS.DirectoryService.DeleteSnapshot
         , Network.AWS.DirectoryService.DeleteTrust
         , Network.AWS.DirectoryService.DeregisterEventTopic
+        , Network.AWS.DirectoryService.DescribeConditionalForwarders
         , Network.AWS.DirectoryService.DescribeDirectories
         , Network.AWS.DirectoryService.DescribeEventTopics
         , Network.AWS.DirectoryService.DescribeSnapshots
@@ -69,6 +72,7 @@
         , Network.AWS.DirectoryService.RegisterEventTopic
         , Network.AWS.DirectoryService.RestoreFromSnapshot
         , Network.AWS.DirectoryService.Types
+        , Network.AWS.DirectoryService.UpdateConditionalForwarder
         , Network.AWS.DirectoryService.UpdateRadius
         , Network.AWS.DirectoryService.VerifyTrust
         , Network.AWS.DirectoryService.Waiters
@@ -78,7 +82,7 @@
         , Network.AWS.DirectoryService.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.0.*
+          amazonka-core == 1.4.1.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-ds-test
@@ -98,9 +102,9 @@
         , Test.AWS.DirectoryService.Internal
 
     build-depends:
-          amazonka-core == 1.4.0.*
-        , amazonka-test == 1.4.0.*
-        , amazonka-ds == 1.4.0.*
+          amazonka-core == 1.4.1.*
+        , amazonka-test == 1.4.1.*
+        , amazonka-ds == 1.4.1.*
         , base
         , bytestring
         , tasty
diff --git a/fixture/CreateConditionalForwarder.yaml b/fixture/CreateConditionalForwarder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateConditionalForwarder.yaml
diff --git a/fixture/CreateConditionalForwarderResponse.proto b/fixture/CreateConditionalForwarderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateConditionalForwarderResponse.proto
diff --git a/fixture/DeleteConditionalForwarder.yaml b/fixture/DeleteConditionalForwarder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteConditionalForwarder.yaml
diff --git a/fixture/DeleteConditionalForwarderResponse.proto b/fixture/DeleteConditionalForwarderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteConditionalForwarderResponse.proto
diff --git a/fixture/DescribeConditionalForwarders.yaml b/fixture/DescribeConditionalForwarders.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeConditionalForwarders.yaml
diff --git a/fixture/DescribeConditionalForwardersResponse.proto b/fixture/DescribeConditionalForwardersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeConditionalForwardersResponse.proto
diff --git a/fixture/UpdateConditionalForwarder.yaml b/fixture/UpdateConditionalForwarder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateConditionalForwarder.yaml
diff --git a/fixture/UpdateConditionalForwarderResponse.proto b/fixture/UpdateConditionalForwarderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateConditionalForwarderResponse.proto
diff --git a/gen/Network/AWS/DirectoryService.hs b/gen/Network/AWS/DirectoryService.hs
--- a/gen/Network/AWS/DirectoryService.hs
+++ b/gen/Network/AWS/DirectoryService.hs
@@ -66,6 +66,9 @@
     -- * Operations
     -- $operations
 
+    -- ** DescribeConditionalForwarders
+    , module Network.AWS.DirectoryService.DescribeConditionalForwarders
+
     -- ** GetSnapshotLimits
     , module Network.AWS.DirectoryService.GetSnapshotLimits
 
@@ -99,6 +102,12 @@
     -- ** DescribeEventTopics
     , module Network.AWS.DirectoryService.DescribeEventTopics
 
+    -- ** UpdateConditionalForwarder
+    , module Network.AWS.DirectoryService.UpdateConditionalForwarder
+
+    -- ** DeleteConditionalForwarder
+    , module Network.AWS.DirectoryService.DeleteConditionalForwarder
+
     -- ** EnableSSO
     , module Network.AWS.DirectoryService.EnableSSO
 
@@ -135,6 +144,9 @@
     -- ** VerifyTrust
     , module Network.AWS.DirectoryService.VerifyTrust
 
+    -- ** CreateConditionalForwarder
+    , module Network.AWS.DirectoryService.CreateConditionalForwarder
+
     -- ** GetDirectoryLimits
     , module Network.AWS.DirectoryService.GetDirectoryLimits
 
@@ -158,6 +170,9 @@
     -- ** RadiusStatus
     , RadiusStatus (..)
 
+    -- ** ReplicationScope
+    , ReplicationScope (..)
+
     -- ** SnapshotStatus
     , SnapshotStatus (..)
 
@@ -189,6 +204,13 @@
     , cComputerAttributes
     , cComputerName
 
+    -- ** ConditionalForwarder
+    , ConditionalForwarder
+    , conditionalForwarder
+    , cfDNSIPAddrs
+    , cfRemoteDomainName
+    , cfReplicationScope
+
     -- ** DirectoryConnectSettings
     , DirectoryConnectSettings
     , directoryConnectSettings
@@ -303,6 +325,7 @@
     , tTrustDirection
     , tStateLastUpdatedDateTime
     , tTrustType
+    , tTrustStateReason
     , tRemoteDomainName
     , tTrustId
     , tCreatedDateTime
@@ -311,14 +334,17 @@
 import           Network.AWS.DirectoryService.ConnectDirectory
 import           Network.AWS.DirectoryService.CreateAlias
 import           Network.AWS.DirectoryService.CreateComputer
+import           Network.AWS.DirectoryService.CreateConditionalForwarder
 import           Network.AWS.DirectoryService.CreateDirectory
 import           Network.AWS.DirectoryService.CreateMicrosoftAD
 import           Network.AWS.DirectoryService.CreateSnapshot
 import           Network.AWS.DirectoryService.CreateTrust
+import           Network.AWS.DirectoryService.DeleteConditionalForwarder
 import           Network.AWS.DirectoryService.DeleteDirectory
 import           Network.AWS.DirectoryService.DeleteSnapshot
 import           Network.AWS.DirectoryService.DeleteTrust
 import           Network.AWS.DirectoryService.DeregisterEventTopic
+import           Network.AWS.DirectoryService.DescribeConditionalForwarders
 import           Network.AWS.DirectoryService.DescribeDirectories
 import           Network.AWS.DirectoryService.DescribeEventTopics
 import           Network.AWS.DirectoryService.DescribeSnapshots
@@ -332,6 +358,7 @@
 import           Network.AWS.DirectoryService.RegisterEventTopic
 import           Network.AWS.DirectoryService.RestoreFromSnapshot
 import           Network.AWS.DirectoryService.Types
+import           Network.AWS.DirectoryService.UpdateConditionalForwarder
 import           Network.AWS.DirectoryService.UpdateRadius
 import           Network.AWS.DirectoryService.VerifyTrust
 import           Network.AWS.DirectoryService.Waiters
diff --git a/gen/Network/AWS/DirectoryService/ConnectDirectory.hs b/gen/Network/AWS/DirectoryService/ConnectDirectory.hs
--- a/gen/Network/AWS/DirectoryService/ConnectDirectory.hs
+++ b/gen/Network/AWS/DirectoryService/ConnectDirectory.hs
@@ -127,6 +127,8 @@
 
 instance Hashable ConnectDirectory
 
+instance NFData ConnectDirectory
+
 instance ToHeaders ConnectDirectory where
         toHeaders
           = const
@@ -185,3 +187,5 @@
 -- | The response status code.
 cdrsResponseStatus :: Lens' ConnectDirectoryResponse Int
 cdrsResponseStatus = lens _cdrsResponseStatus (\ s a -> s{_cdrsResponseStatus = a});
+
+instance NFData ConnectDirectoryResponse
diff --git a/gen/Network/AWS/DirectoryService/CreateAlias.hs b/gen/Network/AWS/DirectoryService/CreateAlias.hs
--- a/gen/Network/AWS/DirectoryService/CreateAlias.hs
+++ b/gen/Network/AWS/DirectoryService/CreateAlias.hs
@@ -98,6 +98,8 @@
 
 instance Hashable CreateAlias
 
+instance NFData CreateAlias
+
 instance ToHeaders CreateAlias where
         toHeaders
           = const
@@ -160,3 +162,5 @@
 -- | The response status code.
 carsResponseStatus :: Lens' CreateAliasResponse Int
 carsResponseStatus = lens _carsResponseStatus (\ s a -> s{_carsResponseStatus = a});
+
+instance NFData CreateAliasResponse
diff --git a/gen/Network/AWS/DirectoryService/CreateComputer.hs b/gen/Network/AWS/DirectoryService/CreateComputer.hs
--- a/gen/Network/AWS/DirectoryService/CreateComputer.hs
+++ b/gen/Network/AWS/DirectoryService/CreateComputer.hs
@@ -119,6 +119,8 @@
 
 instance Hashable CreateComputer
 
+instance NFData CreateComputer
+
 instance ToHeaders CreateComputer where
         toHeaders
           = const
@@ -177,3 +179,5 @@
 -- | The response status code.
 ccrsResponseStatus :: Lens' CreateComputerResponse Int
 ccrsResponseStatus = lens _ccrsResponseStatus (\ s a -> s{_ccrsResponseStatus = a});
+
+instance NFData CreateComputerResponse
diff --git a/gen/Network/AWS/DirectoryService/CreateConditionalForwarder.hs b/gen/Network/AWS/DirectoryService/CreateConditionalForwarder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DirectoryService/CreateConditionalForwarder.hs
@@ -0,0 +1,155 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DirectoryService.CreateConditionalForwarder
+-- 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)
+--
+-- Creates a conditional forwarder associated with your AWS directory.
+-- Conditional forwarders are required in order to set up a trust
+-- relationship with another domain. The conditional forwarder points to
+-- the trusted domain.
+module Network.AWS.DirectoryService.CreateConditionalForwarder
+    (
+    -- * Creating a Request
+      createConditionalForwarder
+    , CreateConditionalForwarder
+    -- * Request Lenses
+    , ccfDirectoryId
+    , ccfRemoteDomainName
+    , ccfDNSIPAddrs
+
+    -- * Destructuring the Response
+    , createConditionalForwarderResponse
+    , CreateConditionalForwarderResponse
+    -- * Response Lenses
+    , ccfrsResponseStatus
+    ) where
+
+import           Network.AWS.DirectoryService.Types
+import           Network.AWS.DirectoryService.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Initiates the creation of a conditional forwarder for your AWS Directory
+-- Service for Microsoft Active Directory. Conditional forwarders are
+-- required in order to set up a trust relationship with another domain.
+--
+-- /See:/ 'createConditionalForwarder' smart constructor.
+data CreateConditionalForwarder = CreateConditionalForwarder'
+    { _ccfDirectoryId      :: !Text
+    , _ccfRemoteDomainName :: !Text
+    , _ccfDNSIPAddrs       :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateConditionalForwarder' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccfDirectoryId'
+--
+-- * 'ccfRemoteDomainName'
+--
+-- * 'ccfDNSIPAddrs'
+createConditionalForwarder
+    :: Text -- ^ 'ccfDirectoryId'
+    -> Text -- ^ 'ccfRemoteDomainName'
+    -> CreateConditionalForwarder
+createConditionalForwarder pDirectoryId_ pRemoteDomainName_ =
+    CreateConditionalForwarder'
+    { _ccfDirectoryId = pDirectoryId_
+    , _ccfRemoteDomainName = pRemoteDomainName_
+    , _ccfDNSIPAddrs = mempty
+    }
+
+-- | The directory ID of the AWS directory for which you are creating the
+-- conditional forwarder.
+ccfDirectoryId :: Lens' CreateConditionalForwarder Text
+ccfDirectoryId = lens _ccfDirectoryId (\ s a -> s{_ccfDirectoryId = a});
+
+-- | The fully qualified domain name (FQDN) of the remote domain with which
+-- you will set up a trust relationship.
+ccfRemoteDomainName :: Lens' CreateConditionalForwarder Text
+ccfRemoteDomainName = lens _ccfRemoteDomainName (\ s a -> s{_ccfRemoteDomainName = a});
+
+-- | The IP addresses of the remote DNS server associated with
+-- RemoteDomainName.
+ccfDNSIPAddrs :: Lens' CreateConditionalForwarder [Text]
+ccfDNSIPAddrs = lens _ccfDNSIPAddrs (\ s a -> s{_ccfDNSIPAddrs = a}) . _Coerce;
+
+instance AWSRequest CreateConditionalForwarder where
+        type Rs CreateConditionalForwarder =
+             CreateConditionalForwarderResponse
+        request = postJSON directoryService
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 CreateConditionalForwarderResponse' <$>
+                   (pure (fromEnum s)))
+
+instance Hashable CreateConditionalForwarder
+
+instance NFData CreateConditionalForwarder
+
+instance ToHeaders CreateConditionalForwarder where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DirectoryService_20150416.CreateConditionalForwarder"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON CreateConditionalForwarder where
+        toJSON CreateConditionalForwarder'{..}
+          = object
+              (catMaybes
+                 [Just ("DirectoryId" .= _ccfDirectoryId),
+                  Just ("RemoteDomainName" .= _ccfRemoteDomainName),
+                  Just ("DnsIpAddrs" .= _ccfDNSIPAddrs)])
+
+instance ToPath CreateConditionalForwarder where
+        toPath = const "/"
+
+instance ToQuery CreateConditionalForwarder where
+        toQuery = const mempty
+
+-- | /See:/ 'createConditionalForwarderResponse' smart constructor.
+newtype CreateConditionalForwarderResponse = CreateConditionalForwarderResponse'
+    { _ccfrsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateConditionalForwarderResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccfrsResponseStatus'
+createConditionalForwarderResponse
+    :: Int -- ^ 'ccfrsResponseStatus'
+    -> CreateConditionalForwarderResponse
+createConditionalForwarderResponse pResponseStatus_ =
+    CreateConditionalForwarderResponse'
+    { _ccfrsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+ccfrsResponseStatus :: Lens' CreateConditionalForwarderResponse Int
+ccfrsResponseStatus = lens _ccfrsResponseStatus (\ s a -> s{_ccfrsResponseStatus = a});
+
+instance NFData CreateConditionalForwarderResponse
diff --git a/gen/Network/AWS/DirectoryService/CreateDirectory.hs b/gen/Network/AWS/DirectoryService/CreateDirectory.hs
--- a/gen/Network/AWS/DirectoryService/CreateDirectory.hs
+++ b/gen/Network/AWS/DirectoryService/CreateDirectory.hs
@@ -127,6 +127,8 @@
 
 instance Hashable CreateDirectory
 
+instance NFData CreateDirectory
+
 instance ToHeaders CreateDirectory where
         toHeaders
           = const
@@ -185,3 +187,5 @@
 -- | The response status code.
 crsResponseStatus :: Lens' CreateDirectoryResponse Int
 crsResponseStatus = lens _crsResponseStatus (\ s a -> s{_crsResponseStatus = a});
+
+instance NFData CreateDirectoryResponse
diff --git a/gen/Network/AWS/DirectoryService/CreateMicrosoftAD.hs b/gen/Network/AWS/DirectoryService/CreateMicrosoftAD.hs
--- a/gen/Network/AWS/DirectoryService/CreateMicrosoftAD.hs
+++ b/gen/Network/AWS/DirectoryService/CreateMicrosoftAD.hs
@@ -121,6 +121,8 @@
 
 instance Hashable CreateMicrosoftAD
 
+instance NFData CreateMicrosoftAD
+
 instance ToHeaders CreateMicrosoftAD where
         toHeaders
           = const
@@ -176,3 +178,5 @@
 -- | The response status code.
 cmadrsResponseStatus :: Lens' CreateMicrosoftADResponse Int
 cmadrsResponseStatus = lens _cmadrsResponseStatus (\ s a -> s{_cmadrsResponseStatus = a});
+
+instance NFData CreateMicrosoftADResponse
diff --git a/gen/Network/AWS/DirectoryService/CreateSnapshot.hs b/gen/Network/AWS/DirectoryService/CreateSnapshot.hs
--- a/gen/Network/AWS/DirectoryService/CreateSnapshot.hs
+++ b/gen/Network/AWS/DirectoryService/CreateSnapshot.hs
@@ -89,6 +89,8 @@
 
 instance Hashable CreateSnapshot
 
+instance NFData CreateSnapshot
+
 instance ToHeaders CreateSnapshot where
         toHeaders
           = const
@@ -143,3 +145,5 @@
 -- | The response status code.
 csrsResponseStatus :: Lens' CreateSnapshotResponse Int
 csrsResponseStatus = lens _csrsResponseStatus (\ s a -> s{_csrsResponseStatus = a});
+
+instance NFData CreateSnapshotResponse
diff --git a/gen/Network/AWS/DirectoryService/CreateTrust.hs b/gen/Network/AWS/DirectoryService/CreateTrust.hs
--- a/gen/Network/AWS/DirectoryService/CreateTrust.hs
+++ b/gen/Network/AWS/DirectoryService/CreateTrust.hs
@@ -34,6 +34,7 @@
       createTrust
     , CreateTrust
     -- * Request Lenses
+    , ctConditionalForwarderIPAddrs
     , ctTrustType
     , ctDirectoryId
     , ctRemoteDomainName
@@ -68,17 +69,20 @@
 --
 -- /See:/ 'createTrust' smart constructor.
 data CreateTrust = CreateTrust'
-    { _ctTrustType        :: !(Maybe TrustType)
-    , _ctDirectoryId      :: !Text
-    , _ctRemoteDomainName :: !Text
-    , _ctTrustPassword    :: !(Sensitive Text)
-    , _ctTrustDirection   :: !TrustDirection
+    { _ctConditionalForwarderIPAddrs :: !(Maybe [Text])
+    , _ctTrustType                   :: !(Maybe TrustType)
+    , _ctDirectoryId                 :: !Text
+    , _ctRemoteDomainName            :: !Text
+    , _ctTrustPassword               :: !(Sensitive Text)
+    , _ctTrustDirection              :: !TrustDirection
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateTrust' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'ctConditionalForwarderIPAddrs'
+--
 -- * 'ctTrustType'
 --
 -- * 'ctDirectoryId'
@@ -96,13 +100,18 @@
     -> CreateTrust
 createTrust pDirectoryId_ pRemoteDomainName_ pTrustPassword_ pTrustDirection_ =
     CreateTrust'
-    { _ctTrustType = Nothing
+    { _ctConditionalForwarderIPAddrs = Nothing
+    , _ctTrustType = Nothing
     , _ctDirectoryId = pDirectoryId_
     , _ctRemoteDomainName = pRemoteDomainName_
     , _ctTrustPassword = _Sensitive # pTrustPassword_
     , _ctTrustDirection = pTrustDirection_
     }
 
+-- | Undocumented member.
+ctConditionalForwarderIPAddrs :: Lens' CreateTrust [Text]
+ctConditionalForwarderIPAddrs = lens _ctConditionalForwarderIPAddrs (\ s a -> s{_ctConditionalForwarderIPAddrs = a}) . _Default . _Coerce;
+
 -- | The trust relationship type.
 ctTrustType :: Lens' CreateTrust (Maybe TrustType)
 ctTrustType = lens _ctTrustType (\ s a -> s{_ctTrustType = a});
@@ -137,6 +146,8 @@
 
 instance Hashable CreateTrust
 
+instance NFData CreateTrust
+
 instance ToHeaders CreateTrust where
         toHeaders
           = const
@@ -151,7 +162,9 @@
         toJSON CreateTrust'{..}
           = object
               (catMaybes
-                 [("TrustType" .=) <$> _ctTrustType,
+                 [("ConditionalForwarderIpAddrs" .=) <$>
+                    _ctConditionalForwarderIPAddrs,
+                  ("TrustType" .=) <$> _ctTrustType,
                   Just ("DirectoryId" .= _ctDirectoryId),
                   Just ("RemoteDomainName" .= _ctRemoteDomainName),
                   Just ("TrustPassword" .= _ctTrustPassword),
@@ -192,3 +205,5 @@
 -- | The response status code.
 ctrsResponseStatus :: Lens' CreateTrustResponse Int
 ctrsResponseStatus = lens _ctrsResponseStatus (\ s a -> s{_ctrsResponseStatus = a});
+
+instance NFData CreateTrustResponse
diff --git a/gen/Network/AWS/DirectoryService/DeleteConditionalForwarder.hs b/gen/Network/AWS/DirectoryService/DeleteConditionalForwarder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DirectoryService/DeleteConditionalForwarder.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DirectoryService.DeleteConditionalForwarder
+-- 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)
+--
+-- Deletes a conditional forwarder that has been set up for your AWS
+-- directory.
+module Network.AWS.DirectoryService.DeleteConditionalForwarder
+    (
+    -- * Creating a Request
+      deleteConditionalForwarder
+    , DeleteConditionalForwarder
+    -- * Request Lenses
+    , delDirectoryId
+    , delRemoteDomainName
+
+    -- * Destructuring the Response
+    , deleteConditionalForwarderResponse
+    , DeleteConditionalForwarderResponse
+    -- * Response Lenses
+    , drsResponseStatus
+    ) where
+
+import           Network.AWS.DirectoryService.Types
+import           Network.AWS.DirectoryService.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'deleteConditionalForwarder' smart constructor.
+data DeleteConditionalForwarder = DeleteConditionalForwarder'
+    { _delDirectoryId      :: !Text
+    , _delRemoteDomainName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteConditionalForwarder' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'delDirectoryId'
+--
+-- * 'delRemoteDomainName'
+deleteConditionalForwarder
+    :: Text -- ^ 'delDirectoryId'
+    -> Text -- ^ 'delRemoteDomainName'
+    -> DeleteConditionalForwarder
+deleteConditionalForwarder pDirectoryId_ pRemoteDomainName_ =
+    DeleteConditionalForwarder'
+    { _delDirectoryId = pDirectoryId_
+    , _delRemoteDomainName = pRemoteDomainName_
+    }
+
+-- | The directory ID for which you are deleting the conditional forwarder.
+delDirectoryId :: Lens' DeleteConditionalForwarder Text
+delDirectoryId = lens _delDirectoryId (\ s a -> s{_delDirectoryId = a});
+
+-- | The fully qualified domain name (FQDN) of the remote domain with which
+-- you are deleting the conditional forwarder.
+delRemoteDomainName :: Lens' DeleteConditionalForwarder Text
+delRemoteDomainName = lens _delRemoteDomainName (\ s a -> s{_delRemoteDomainName = a});
+
+instance AWSRequest DeleteConditionalForwarder where
+        type Rs DeleteConditionalForwarder =
+             DeleteConditionalForwarderResponse
+        request = postJSON directoryService
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 DeleteConditionalForwarderResponse' <$>
+                   (pure (fromEnum s)))
+
+instance Hashable DeleteConditionalForwarder
+
+instance NFData DeleteConditionalForwarder
+
+instance ToHeaders DeleteConditionalForwarder where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DirectoryService_20150416.DeleteConditionalForwarder"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteConditionalForwarder where
+        toJSON DeleteConditionalForwarder'{..}
+          = object
+              (catMaybes
+                 [Just ("DirectoryId" .= _delDirectoryId),
+                  Just ("RemoteDomainName" .= _delRemoteDomainName)])
+
+instance ToPath DeleteConditionalForwarder where
+        toPath = const "/"
+
+instance ToQuery DeleteConditionalForwarder where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteConditionalForwarderResponse' smart constructor.
+newtype DeleteConditionalForwarderResponse = DeleteConditionalForwarderResponse'
+    { _drsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteConditionalForwarderResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drsResponseStatus'
+deleteConditionalForwarderResponse
+    :: Int -- ^ 'drsResponseStatus'
+    -> DeleteConditionalForwarderResponse
+deleteConditionalForwarderResponse pResponseStatus_ =
+    DeleteConditionalForwarderResponse'
+    { _drsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+drsResponseStatus :: Lens' DeleteConditionalForwarderResponse Int
+drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
+
+instance NFData DeleteConditionalForwarderResponse
diff --git a/gen/Network/AWS/DirectoryService/DeleteDirectory.hs b/gen/Network/AWS/DirectoryService/DeleteDirectory.hs
--- a/gen/Network/AWS/DirectoryService/DeleteDirectory.hs
+++ b/gen/Network/AWS/DirectoryService/DeleteDirectory.hs
@@ -25,14 +25,14 @@
       deleteDirectory
     , DeleteDirectory
     -- * Request Lenses
-    , delDirectoryId
+    , dddDirectoryId
 
     -- * Destructuring the Response
     , deleteDirectoryResponse
     , DeleteDirectoryResponse
     -- * Response Lenses
-    , drsDirectoryId
-    , drsResponseStatus
+    , delrsDirectoryId
+    , delrsResponseStatus
     ) where
 
 import           Network.AWS.DirectoryService.Types
@@ -46,25 +46,25 @@
 --
 -- /See:/ 'deleteDirectory' smart constructor.
 newtype DeleteDirectory = DeleteDirectory'
-    { _delDirectoryId :: Text
+    { _dddDirectoryId :: Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DeleteDirectory' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'delDirectoryId'
+-- * 'dddDirectoryId'
 deleteDirectory
-    :: Text -- ^ 'delDirectoryId'
+    :: Text -- ^ 'dddDirectoryId'
     -> DeleteDirectory
 deleteDirectory pDirectoryId_ =
     DeleteDirectory'
-    { _delDirectoryId = pDirectoryId_
+    { _dddDirectoryId = pDirectoryId_
     }
 
 -- | The identifier of the directory to delete.
-delDirectoryId :: Lens' DeleteDirectory Text
-delDirectoryId = lens _delDirectoryId (\ s a -> s{_delDirectoryId = a});
+dddDirectoryId :: Lens' DeleteDirectory Text
+dddDirectoryId = lens _dddDirectoryId (\ s a -> s{_dddDirectoryId = a});
 
 instance AWSRequest DeleteDirectory where
         type Rs DeleteDirectory = DeleteDirectoryResponse
@@ -77,6 +77,8 @@
 
 instance Hashable DeleteDirectory
 
+instance NFData DeleteDirectory
+
 instance ToHeaders DeleteDirectory where
         toHeaders
           = const
@@ -90,7 +92,7 @@
 instance ToJSON DeleteDirectory where
         toJSON DeleteDirectory'{..}
           = object
-              (catMaybes [Just ("DirectoryId" .= _delDirectoryId)])
+              (catMaybes [Just ("DirectoryId" .= _dddDirectoryId)])
 
 instance ToPath DeleteDirectory where
         toPath = const "/"
@@ -102,30 +104,32 @@
 --
 -- /See:/ 'deleteDirectoryResponse' smart constructor.
 data DeleteDirectoryResponse = DeleteDirectoryResponse'
-    { _drsDirectoryId    :: !(Maybe Text)
-    , _drsResponseStatus :: !Int
+    { _delrsDirectoryId    :: !(Maybe Text)
+    , _delrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DeleteDirectoryResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drsDirectoryId'
+-- * 'delrsDirectoryId'
 --
--- * 'drsResponseStatus'
+-- * 'delrsResponseStatus'
 deleteDirectoryResponse
-    :: Int -- ^ 'drsResponseStatus'
+    :: Int -- ^ 'delrsResponseStatus'
     -> DeleteDirectoryResponse
 deleteDirectoryResponse pResponseStatus_ =
     DeleteDirectoryResponse'
-    { _drsDirectoryId = Nothing
-    , _drsResponseStatus = pResponseStatus_
+    { _delrsDirectoryId = Nothing
+    , _delrsResponseStatus = pResponseStatus_
     }
 
 -- | The directory identifier.
-drsDirectoryId :: Lens' DeleteDirectoryResponse (Maybe Text)
-drsDirectoryId = lens _drsDirectoryId (\ s a -> s{_drsDirectoryId = a});
+delrsDirectoryId :: Lens' DeleteDirectoryResponse (Maybe Text)
+delrsDirectoryId = lens _delrsDirectoryId (\ s a -> s{_delrsDirectoryId = a});
 
 -- | The response status code.
-drsResponseStatus :: Lens' DeleteDirectoryResponse Int
-drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
+delrsResponseStatus :: Lens' DeleteDirectoryResponse Int
+delrsResponseStatus = lens _delrsResponseStatus (\ s a -> s{_delrsResponseStatus = a});
+
+instance NFData DeleteDirectoryResponse
diff --git a/gen/Network/AWS/DirectoryService/DeleteSnapshot.hs b/gen/Network/AWS/DirectoryService/DeleteSnapshot.hs
--- a/gen/Network/AWS/DirectoryService/DeleteSnapshot.hs
+++ b/gen/Network/AWS/DirectoryService/DeleteSnapshot.hs
@@ -77,6 +77,8 @@
 
 instance Hashable DeleteSnapshot
 
+instance NFData DeleteSnapshot
+
 instance ToHeaders DeleteSnapshot where
         toHeaders
           = const
@@ -129,3 +131,5 @@
 -- | The response status code.
 dsrsResponseStatus :: Lens' DeleteSnapshotResponse Int
 dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a});
+
+instance NFData DeleteSnapshotResponse
diff --git a/gen/Network/AWS/DirectoryService/DeleteTrust.hs b/gen/Network/AWS/DirectoryService/DeleteTrust.hs
--- a/gen/Network/AWS/DirectoryService/DeleteTrust.hs
+++ b/gen/Network/AWS/DirectoryService/DeleteTrust.hs
@@ -26,14 +26,15 @@
       deleteTrust
     , DeleteTrust
     -- * Request Lenses
+    , dtDeleteAssociatedConditionalForwarder
     , dtTrustId
 
     -- * Destructuring the Response
     , deleteTrustResponse
     , DeleteTrustResponse
     -- * Response Lenses
-    , delrsTrustId
-    , delrsResponseStatus
+    , dttrsTrustId
+    , dttrsResponseStatus
     ) where
 
 import           Network.AWS.DirectoryService.Types
@@ -47,23 +48,31 @@
 -- Microsoft AD in the AWS cloud and the external domain.
 --
 -- /See:/ 'deleteTrust' smart constructor.
-newtype DeleteTrust = DeleteTrust'
-    { _dtTrustId :: Text
+data DeleteTrust = DeleteTrust'
+    { _dtDeleteAssociatedConditionalForwarder :: !(Maybe Bool)
+    , _dtTrustId                              :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DeleteTrust' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'dtDeleteAssociatedConditionalForwarder'
+--
 -- * 'dtTrustId'
 deleteTrust
     :: Text -- ^ 'dtTrustId'
     -> DeleteTrust
 deleteTrust pTrustId_ =
     DeleteTrust'
-    { _dtTrustId = pTrustId_
+    { _dtDeleteAssociatedConditionalForwarder = Nothing
+    , _dtTrustId = pTrustId_
     }
 
+-- | Undocumented member.
+dtDeleteAssociatedConditionalForwarder :: Lens' DeleteTrust (Maybe Bool)
+dtDeleteAssociatedConditionalForwarder = lens _dtDeleteAssociatedConditionalForwarder (\ s a -> s{_dtDeleteAssociatedConditionalForwarder = a});
+
 -- | The Trust ID of the trust relationship to be deleted.
 dtTrustId :: Lens' DeleteTrust Text
 dtTrustId = lens _dtTrustId (\ s a -> s{_dtTrustId = a});
@@ -79,6 +88,8 @@
 
 instance Hashable DeleteTrust
 
+instance NFData DeleteTrust
+
 instance ToHeaders DeleteTrust where
         toHeaders
           = const
@@ -91,7 +102,11 @@
 
 instance ToJSON DeleteTrust where
         toJSON DeleteTrust'{..}
-          = object (catMaybes [Just ("TrustId" .= _dtTrustId)])
+          = object
+              (catMaybes
+                 [("DeleteAssociatedConditionalForwarder" .=) <$>
+                    _dtDeleteAssociatedConditionalForwarder,
+                  Just ("TrustId" .= _dtTrustId)])
 
 instance ToPath DeleteTrust where
         toPath = const "/"
@@ -101,30 +116,32 @@
 
 -- | /See:/ 'deleteTrustResponse' smart constructor.
 data DeleteTrustResponse = DeleteTrustResponse'
-    { _delrsTrustId        :: !(Maybe Text)
-    , _delrsResponseStatus :: !Int
+    { _dttrsTrustId        :: !(Maybe Text)
+    , _dttrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DeleteTrustResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'delrsTrustId'
+-- * 'dttrsTrustId'
 --
--- * 'delrsResponseStatus'
+-- * 'dttrsResponseStatus'
 deleteTrustResponse
-    :: Int -- ^ 'delrsResponseStatus'
+    :: Int -- ^ 'dttrsResponseStatus'
     -> DeleteTrustResponse
 deleteTrustResponse pResponseStatus_ =
     DeleteTrustResponse'
-    { _delrsTrustId = Nothing
-    , _delrsResponseStatus = pResponseStatus_
+    { _dttrsTrustId = Nothing
+    , _dttrsResponseStatus = pResponseStatus_
     }
 
 -- | The Trust ID of the trust relationship that was deleted.
-delrsTrustId :: Lens' DeleteTrustResponse (Maybe Text)
-delrsTrustId = lens _delrsTrustId (\ s a -> s{_delrsTrustId = a});
+dttrsTrustId :: Lens' DeleteTrustResponse (Maybe Text)
+dttrsTrustId = lens _dttrsTrustId (\ s a -> s{_dttrsTrustId = a});
 
 -- | The response status code.
-delrsResponseStatus :: Lens' DeleteTrustResponse Int
-delrsResponseStatus = lens _delrsResponseStatus (\ s a -> s{_delrsResponseStatus = a});
+dttrsResponseStatus :: Lens' DeleteTrustResponse Int
+dttrsResponseStatus = lens _dttrsResponseStatus (\ s a -> s{_dttrsResponseStatus = a});
+
+instance NFData DeleteTrustResponse
diff --git a/gen/Network/AWS/DirectoryService/DeregisterEventTopic.hs b/gen/Network/AWS/DirectoryService/DeregisterEventTopic.hs
--- a/gen/Network/AWS/DirectoryService/DeregisterEventTopic.hs
+++ b/gen/Network/AWS/DirectoryService/DeregisterEventTopic.hs
@@ -91,6 +91,8 @@
 
 instance Hashable DeregisterEventTopic
 
+instance NFData DeregisterEventTopic
+
 instance ToHeaders DeregisterEventTopic where
         toHeaders
           = const
@@ -135,3 +137,5 @@
 -- | The response status code.
 derrsResponseStatus :: Lens' DeregisterEventTopicResponse Int
 derrsResponseStatus = lens _derrsResponseStatus (\ s a -> s{_derrsResponseStatus = a});
+
+instance NFData DeregisterEventTopicResponse
diff --git a/gen/Network/AWS/DirectoryService/DescribeConditionalForwarders.hs b/gen/Network/AWS/DirectoryService/DescribeConditionalForwarders.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DirectoryService/DescribeConditionalForwarders.hs
@@ -0,0 +1,152 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DirectoryService.DescribeConditionalForwarders
+-- 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)
+--
+-- Obtains information about the conditional forwarders for this account.
+--
+-- If no input parameters are provided for RemoteDomainNames, this request
+-- describes all conditional forwarders for the specified directory ID.
+module Network.AWS.DirectoryService.DescribeConditionalForwarders
+    (
+    -- * Creating a Request
+      describeConditionalForwarders
+    , DescribeConditionalForwarders
+    -- * Request Lenses
+    , dcfRemoteDomainNames
+    , dcfDirectoryId
+
+    -- * Destructuring the Response
+    , describeConditionalForwardersResponse
+    , DescribeConditionalForwardersResponse
+    -- * Response Lenses
+    , dcfrsConditionalForwarders
+    , dcfrsResponseStatus
+    ) where
+
+import           Network.AWS.DirectoryService.Types
+import           Network.AWS.DirectoryService.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeConditionalForwarders' smart constructor.
+data DescribeConditionalForwarders = DescribeConditionalForwarders'
+    { _dcfRemoteDomainNames :: !(Maybe [Text])
+    , _dcfDirectoryId       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeConditionalForwarders' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcfRemoteDomainNames'
+--
+-- * 'dcfDirectoryId'
+describeConditionalForwarders
+    :: Text -- ^ 'dcfDirectoryId'
+    -> DescribeConditionalForwarders
+describeConditionalForwarders pDirectoryId_ =
+    DescribeConditionalForwarders'
+    { _dcfRemoteDomainNames = Nothing
+    , _dcfDirectoryId = pDirectoryId_
+    }
+
+-- | The fully qualified domain names (FQDN) of the remote domains for which
+-- to get the list of associated conditional forwarders. If this member is
+-- null, all conditional forwarders are returned.
+dcfRemoteDomainNames :: Lens' DescribeConditionalForwarders [Text]
+dcfRemoteDomainNames = lens _dcfRemoteDomainNames (\ s a -> s{_dcfRemoteDomainNames = a}) . _Default . _Coerce;
+
+-- | The directory ID for which to get the list of associated conditional
+-- forwarders.
+dcfDirectoryId :: Lens' DescribeConditionalForwarders Text
+dcfDirectoryId = lens _dcfDirectoryId (\ s a -> s{_dcfDirectoryId = a});
+
+instance AWSRequest DescribeConditionalForwarders
+         where
+        type Rs DescribeConditionalForwarders =
+             DescribeConditionalForwardersResponse
+        request = postJSON directoryService
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeConditionalForwardersResponse' <$>
+                   (x .?> "ConditionalForwarders" .!@ mempty) <*>
+                     (pure (fromEnum s)))
+
+instance Hashable DescribeConditionalForwarders
+
+instance NFData DescribeConditionalForwarders
+
+instance ToHeaders DescribeConditionalForwarders
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DirectoryService_20150416.DescribeConditionalForwarders"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeConditionalForwarders where
+        toJSON DescribeConditionalForwarders'{..}
+          = object
+              (catMaybes
+                 [("RemoteDomainNames" .=) <$> _dcfRemoteDomainNames,
+                  Just ("DirectoryId" .= _dcfDirectoryId)])
+
+instance ToPath DescribeConditionalForwarders where
+        toPath = const "/"
+
+instance ToQuery DescribeConditionalForwarders where
+        toQuery = const mempty
+
+-- | /See:/ 'describeConditionalForwardersResponse' smart constructor.
+data DescribeConditionalForwardersResponse = DescribeConditionalForwardersResponse'
+    { _dcfrsConditionalForwarders :: !(Maybe [ConditionalForwarder])
+    , _dcfrsResponseStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeConditionalForwardersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcfrsConditionalForwarders'
+--
+-- * 'dcfrsResponseStatus'
+describeConditionalForwardersResponse
+    :: Int -- ^ 'dcfrsResponseStatus'
+    -> DescribeConditionalForwardersResponse
+describeConditionalForwardersResponse pResponseStatus_ =
+    DescribeConditionalForwardersResponse'
+    { _dcfrsConditionalForwarders = Nothing
+    , _dcfrsResponseStatus = pResponseStatus_
+    }
+
+-- | The list of conditional forwarders that have been created.
+dcfrsConditionalForwarders :: Lens' DescribeConditionalForwardersResponse [ConditionalForwarder]
+dcfrsConditionalForwarders = lens _dcfrsConditionalForwarders (\ s a -> s{_dcfrsConditionalForwarders = a}) . _Default . _Coerce;
+
+-- | The response status code.
+dcfrsResponseStatus :: Lens' DescribeConditionalForwardersResponse Int
+dcfrsResponseStatus = lens _dcfrsResponseStatus (\ s a -> s{_dcfrsResponseStatus = a});
+
+instance NFData DescribeConditionalForwardersResponse
diff --git a/gen/Network/AWS/DirectoryService/DescribeDirectories.hs b/gen/Network/AWS/DirectoryService/DescribeDirectories.hs
--- a/gen/Network/AWS/DirectoryService/DescribeDirectories.hs
+++ b/gen/Network/AWS/DirectoryService/DescribeDirectories.hs
@@ -118,6 +118,8 @@
 
 instance Hashable DescribeDirectories
 
+instance NFData DescribeDirectories
+
 instance ToHeaders DescribeDirectories where
         toHeaders
           = const
@@ -188,3 +190,5 @@
 -- | The response status code.
 ddrsResponseStatus :: Lens' DescribeDirectoriesResponse Int
 ddrsResponseStatus = lens _ddrsResponseStatus (\ s a -> s{_ddrsResponseStatus = a});
+
+instance NFData DescribeDirectoriesResponse
diff --git a/gen/Network/AWS/DirectoryService/DescribeEventTopics.hs b/gen/Network/AWS/DirectoryService/DescribeEventTopics.hs
--- a/gen/Network/AWS/DirectoryService/DescribeEventTopics.hs
+++ b/gen/Network/AWS/DirectoryService/DescribeEventTopics.hs
@@ -94,6 +94,8 @@
 
 instance Hashable DescribeEventTopics
 
+instance NFData DescribeEventTopics
+
 instance ToHeaders DescribeEventTopics where
         toHeaders
           = const
@@ -147,3 +149,5 @@
 -- | The response status code.
 detrsResponseStatus :: Lens' DescribeEventTopicsResponse Int
 detrsResponseStatus = lens _detrsResponseStatus (\ s a -> s{_detrsResponseStatus = a});
+
+instance NFData DescribeEventTopicsResponse
diff --git a/gen/Network/AWS/DirectoryService/DescribeSnapshots.hs b/gen/Network/AWS/DirectoryService/DescribeSnapshots.hs
--- a/gen/Network/AWS/DirectoryService/DescribeSnapshots.hs
+++ b/gen/Network/AWS/DirectoryService/DescribeSnapshots.hs
@@ -119,6 +119,8 @@
 
 instance Hashable DescribeSnapshots
 
+instance NFData DescribeSnapshots
+
 instance ToHeaders DescribeSnapshots where
         toHeaders
           = const
@@ -189,3 +191,5 @@
 -- | The response status code.
 dssrsResponseStatus :: Lens' DescribeSnapshotsResponse Int
 dssrsResponseStatus = lens _dssrsResponseStatus (\ s a -> s{_dssrsResponseStatus = a});
+
+instance NFData DescribeSnapshotsResponse
diff --git a/gen/Network/AWS/DirectoryService/DescribeTrusts.hs b/gen/Network/AWS/DirectoryService/DescribeTrusts.hs
--- a/gen/Network/AWS/DirectoryService/DescribeTrusts.hs
+++ b/gen/Network/AWS/DirectoryService/DescribeTrusts.hs
@@ -117,6 +117,8 @@
 
 instance Hashable DescribeTrusts
 
+instance NFData DescribeTrusts
+
 instance ToHeaders DescribeTrusts where
         toHeaders
           = const
@@ -186,3 +188,5 @@
 -- | The response status code.
 dtrsResponseStatus :: Lens' DescribeTrustsResponse Int
 dtrsResponseStatus = lens _dtrsResponseStatus (\ s a -> s{_dtrsResponseStatus = a});
+
+instance NFData DescribeTrustsResponse
diff --git a/gen/Network/AWS/DirectoryService/DisableRadius.hs b/gen/Network/AWS/DirectoryService/DisableRadius.hs
--- a/gen/Network/AWS/DirectoryService/DisableRadius.hs
+++ b/gen/Network/AWS/DirectoryService/DisableRadius.hs
@@ -77,6 +77,8 @@
 
 instance Hashable DisableRadius
 
+instance NFData DisableRadius
+
 instance ToHeaders DisableRadius where
         toHeaders
           = const
@@ -121,3 +123,5 @@
 -- | The response status code.
 drrsResponseStatus :: Lens' DisableRadiusResponse Int
 drrsResponseStatus = lens _drrsResponseStatus (\ s a -> s{_drrsResponseStatus = a});
+
+instance NFData DisableRadiusResponse
diff --git a/gen/Network/AWS/DirectoryService/DisableSSO.hs b/gen/Network/AWS/DirectoryService/DisableSSO.hs
--- a/gen/Network/AWS/DirectoryService/DisableSSO.hs
+++ b/gen/Network/AWS/DirectoryService/DisableSSO.hs
@@ -103,6 +103,8 @@
 
 instance Hashable DisableSSO
 
+instance NFData DisableSSO
+
 instance ToHeaders DisableSSO where
         toHeaders
           = const
@@ -150,3 +152,5 @@
 -- | The response status code.
 dssorsResponseStatus :: Lens' DisableSSOResponse Int
 dssorsResponseStatus = lens _dssorsResponseStatus (\ s a -> s{_dssorsResponseStatus = a});
+
+instance NFData DisableSSOResponse
diff --git a/gen/Network/AWS/DirectoryService/EnableRadius.hs b/gen/Network/AWS/DirectoryService/EnableRadius.hs
--- a/gen/Network/AWS/DirectoryService/EnableRadius.hs
+++ b/gen/Network/AWS/DirectoryService/EnableRadius.hs
@@ -87,6 +87,8 @@
 
 instance Hashable EnableRadius
 
+instance NFData EnableRadius
+
 instance ToHeaders EnableRadius where
         toHeaders
           = const
@@ -133,3 +135,5 @@
 -- | The response status code.
 errsResponseStatus :: Lens' EnableRadiusResponse Int
 errsResponseStatus = lens _errsResponseStatus (\ s a -> s{_errsResponseStatus = a});
+
+instance NFData EnableRadiusResponse
diff --git a/gen/Network/AWS/DirectoryService/EnableSSO.hs b/gen/Network/AWS/DirectoryService/EnableSSO.hs
--- a/gen/Network/AWS/DirectoryService/EnableSSO.hs
+++ b/gen/Network/AWS/DirectoryService/EnableSSO.hs
@@ -103,6 +103,8 @@
 
 instance Hashable EnableSSO
 
+instance NFData EnableSSO
+
 instance ToHeaders EnableSSO where
         toHeaders
           = const
@@ -150,3 +152,5 @@
 -- | The response status code.
 esrsResponseStatus :: Lens' EnableSSOResponse Int
 esrsResponseStatus = lens _esrsResponseStatus (\ s a -> s{_esrsResponseStatus = a});
+
+instance NFData EnableSSOResponse
diff --git a/gen/Network/AWS/DirectoryService/GetDirectoryLimits.hs b/gen/Network/AWS/DirectoryService/GetDirectoryLimits.hs
--- a/gen/Network/AWS/DirectoryService/GetDirectoryLimits.hs
+++ b/gen/Network/AWS/DirectoryService/GetDirectoryLimits.hs
@@ -65,6 +65,8 @@
 
 instance Hashable GetDirectoryLimits
 
+instance NFData GetDirectoryLimits
+
 instance ToHeaders GetDirectoryLimits where
         toHeaders
           = const
@@ -116,3 +118,5 @@
 -- | The response status code.
 gdlrsResponseStatus :: Lens' GetDirectoryLimitsResponse Int
 gdlrsResponseStatus = lens _gdlrsResponseStatus (\ s a -> s{_gdlrsResponseStatus = a});
+
+instance NFData GetDirectoryLimitsResponse
diff --git a/gen/Network/AWS/DirectoryService/GetSnapshotLimits.hs b/gen/Network/AWS/DirectoryService/GetSnapshotLimits.hs
--- a/gen/Network/AWS/DirectoryService/GetSnapshotLimits.hs
+++ b/gen/Network/AWS/DirectoryService/GetSnapshotLimits.hs
@@ -77,6 +77,8 @@
 
 instance Hashable GetSnapshotLimits
 
+instance NFData GetSnapshotLimits
+
 instance ToHeaders GetSnapshotLimits where
         toHeaders
           = const
@@ -130,3 +132,5 @@
 -- | The response status code.
 gslrsResponseStatus :: Lens' GetSnapshotLimitsResponse Int
 gslrsResponseStatus = lens _gslrsResponseStatus (\ s a -> s{_gslrsResponseStatus = a});
+
+instance NFData GetSnapshotLimitsResponse
diff --git a/gen/Network/AWS/DirectoryService/RegisterEventTopic.hs b/gen/Network/AWS/DirectoryService/RegisterEventTopic.hs
--- a/gen/Network/AWS/DirectoryService/RegisterEventTopic.hs
+++ b/gen/Network/AWS/DirectoryService/RegisterEventTopic.hs
@@ -90,6 +90,8 @@
 
 instance Hashable RegisterEventTopic
 
+instance NFData RegisterEventTopic
+
 instance ToHeaders RegisterEventTopic where
         toHeaders
           = const
@@ -134,3 +136,5 @@
 -- | The response status code.
 retrsResponseStatus :: Lens' RegisterEventTopicResponse Int
 retrsResponseStatus = lens _retrsResponseStatus (\ s a -> s{_retrsResponseStatus = a});
+
+instance NFData RegisterEventTopicResponse
diff --git a/gen/Network/AWS/DirectoryService/RestoreFromSnapshot.hs b/gen/Network/AWS/DirectoryService/RestoreFromSnapshot.hs
--- a/gen/Network/AWS/DirectoryService/RestoreFromSnapshot.hs
+++ b/gen/Network/AWS/DirectoryService/RestoreFromSnapshot.hs
@@ -86,6 +86,8 @@
 
 instance Hashable RestoreFromSnapshot
 
+instance NFData RestoreFromSnapshot
+
 instance ToHeaders RestoreFromSnapshot where
         toHeaders
           = const
@@ -130,3 +132,5 @@
 -- | The response status code.
 rfsrsResponseStatus :: Lens' RestoreFromSnapshotResponse Int
 rfsrsResponseStatus = lens _rfsrsResponseStatus (\ s a -> s{_rfsrsResponseStatus = a});
+
+instance NFData RestoreFromSnapshotResponse
diff --git a/gen/Network/AWS/DirectoryService/Types.hs b/gen/Network/AWS/DirectoryService/Types.hs
--- a/gen/Network/AWS/DirectoryService/Types.hs
+++ b/gen/Network/AWS/DirectoryService/Types.hs
@@ -44,6 +44,9 @@
     -- * RadiusStatus
     , RadiusStatus (..)
 
+    -- * ReplicationScope
+    , ReplicationScope (..)
+
     -- * SnapshotStatus
     , SnapshotStatus (..)
 
@@ -75,6 +78,13 @@
     , cComputerAttributes
     , cComputerName
 
+    -- * ConditionalForwarder
+    , ConditionalForwarder
+    , conditionalForwarder
+    , cfDNSIPAddrs
+    , cfRemoteDomainName
+    , cfReplicationScope
+
     -- * DirectoryConnectSettings
     , DirectoryConnectSettings
     , directoryConnectSettings
@@ -189,6 +199,7 @@
     , tTrustDirection
     , tStateLastUpdatedDateTime
     , tTrustType
+    , tTrustStateReason
     , tRemoteDomainName
     , tTrustId
     , tCreatedDateTime
@@ -227,6 +238,8 @@
       | has (hasCode "ThrottlingException" . hasStatus 400) e =
           Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
+      | has (hasStatus 504) e = Just "gateway_timeout"
+      | has (hasStatus 502) e = Just "bad_gateway"
       | has (hasStatus 503) e = Just "service_unavailable"
       | has (hasStatus 500) e = Just "general_server_error"
       | has (hasStatus 509) e = Just "limit_exceeded"
diff --git a/gen/Network/AWS/DirectoryService/Types/Product.hs b/gen/Network/AWS/DirectoryService/Types/Product.hs
--- a/gen/Network/AWS/DirectoryService/Types/Product.hs
+++ b/gen/Network/AWS/DirectoryService/Types/Product.hs
@@ -60,6 +60,8 @@
 
 instance Hashable Attribute
 
+instance NFData Attribute
+
 instance ToJSON Attribute where
         toJSON Attribute'{..}
           = object
@@ -117,6 +119,67 @@
 
 instance Hashable Computer
 
+instance NFData Computer
+
+-- | Points to a remote domain with which you are setting up a trust
+-- relationship. Conditional forwarders are required in order to set up a
+-- trust relationship with another domain.
+--
+-- /See:/ 'conditionalForwarder' smart constructor.
+data ConditionalForwarder = ConditionalForwarder'
+    { _cfDNSIPAddrs       :: !(Maybe [Text])
+    , _cfRemoteDomainName :: !(Maybe Text)
+    , _cfReplicationScope :: !(Maybe ReplicationScope)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConditionalForwarder' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cfDNSIPAddrs'
+--
+-- * 'cfRemoteDomainName'
+--
+-- * 'cfReplicationScope'
+conditionalForwarder
+    :: ConditionalForwarder
+conditionalForwarder =
+    ConditionalForwarder'
+    { _cfDNSIPAddrs = Nothing
+    , _cfRemoteDomainName = Nothing
+    , _cfReplicationScope = Nothing
+    }
+
+-- | The IP addresses of the remote DNS server associated with
+-- RemoteDomainName. This is the IP address of the DNS server that your
+-- conditional forwarder points to.
+cfDNSIPAddrs :: Lens' ConditionalForwarder [Text]
+cfDNSIPAddrs = lens _cfDNSIPAddrs (\ s a -> s{_cfDNSIPAddrs = a}) . _Default . _Coerce;
+
+-- | The fully qualified domain name (FQDN) of the remote domains pointed to
+-- by the conditional forwarder.
+cfRemoteDomainName :: Lens' ConditionalForwarder (Maybe Text)
+cfRemoteDomainName = lens _cfRemoteDomainName (\ s a -> s{_cfRemoteDomainName = a});
+
+-- | The replication scope of the conditional forwarder. The only allowed
+-- value is 'Domain', which will replicate the conditional forwarder to all
+-- of the domain controllers for your AWS directory.
+cfReplicationScope :: Lens' ConditionalForwarder (Maybe ReplicationScope)
+cfReplicationScope = lens _cfReplicationScope (\ s a -> s{_cfReplicationScope = a});
+
+instance FromJSON ConditionalForwarder where
+        parseJSON
+          = withObject "ConditionalForwarder"
+              (\ x ->
+                 ConditionalForwarder' <$>
+                   (x .:? "DnsIpAddrs" .!= mempty) <*>
+                     (x .:? "RemoteDomainName")
+                     <*> (x .:? "ReplicationScope"))
+
+instance Hashable ConditionalForwarder
+
+instance NFData ConditionalForwarder
+
 -- | Contains information for the < ConnectDirectory> operation when an AD
 -- Connector directory is being created.
 --
@@ -177,6 +240,8 @@
 
 instance Hashable DirectoryConnectSettings
 
+instance NFData DirectoryConnectSettings
+
 instance ToJSON DirectoryConnectSettings where
         toJSON DirectoryConnectSettings'{..}
           = object
@@ -264,6 +329,8 @@
 
 instance Hashable DirectoryConnectSettingsDescription
 
+instance NFData DirectoryConnectSettingsDescription
+
 -- | Contains information about an AWS Directory Service directory.
 --
 -- /See:/ 'directoryDescription' smart constructor.
@@ -463,6 +530,8 @@
 
 instance Hashable DirectoryDescription
 
+instance NFData DirectoryDescription
+
 -- | Contains directory limit information for a region.
 --
 -- /See:/ 'directoryLimits' smart constructor.
@@ -567,6 +636,8 @@
 
 instance Hashable DirectoryLimits
 
+instance NFData DirectoryLimits
+
 -- | Contains VPC information for the < CreateDirectory> or
 -- < CreateMicrosoftAD> operation.
 --
@@ -604,6 +675,8 @@
 
 instance Hashable DirectoryVPCSettings
 
+instance NFData DirectoryVPCSettings
+
 instance ToJSON DirectoryVPCSettings where
         toJSON DirectoryVPCSettings'{..}
           = object
@@ -673,6 +746,8 @@
 
 instance Hashable DirectoryVPCSettingsDescription
 
+instance NFData DirectoryVPCSettingsDescription
+
 -- | Information about SNS topic and AWS Directory Service directory
 -- associations.
 --
@@ -744,6 +819,8 @@
 
 instance Hashable EventTopic
 
+instance NFData EventTopic
+
 -- | Contains information about a Remote Authentication Dial In User Service
 -- (RADIUS) server.
 --
@@ -845,6 +922,8 @@
 
 instance Hashable RadiusSettings
 
+instance NFData RadiusSettings
+
 instance ToJSON RadiusSettings where
         toJSON RadiusSettings'{..}
           = object
@@ -935,6 +1014,8 @@
 
 instance Hashable Snapshot
 
+instance NFData Snapshot
+
 -- | Contains manual snapshot limit information for a directory.
 --
 -- /See:/ 'snapshotLimits' smart constructor.
@@ -985,6 +1066,8 @@
 
 instance Hashable SnapshotLimits
 
+instance NFData SnapshotLimits
+
 -- | Describes a trust relationship between an Microsoft AD in the AWS cloud
 -- and an external domain.
 --
@@ -996,6 +1079,7 @@
     , _tTrustDirection           :: !(Maybe TrustDirection)
     , _tStateLastUpdatedDateTime :: !(Maybe POSIX)
     , _tTrustType                :: !(Maybe TrustType)
+    , _tTrustStateReason         :: !(Maybe Text)
     , _tRemoteDomainName         :: !(Maybe Text)
     , _tTrustId                  :: !(Maybe Text)
     , _tCreatedDateTime          :: !(Maybe POSIX)
@@ -1017,6 +1101,8 @@
 --
 -- * 'tTrustType'
 --
+-- * 'tTrustStateReason'
+--
 -- * 'tRemoteDomainName'
 --
 -- * 'tTrustId'
@@ -1032,6 +1118,7 @@
     , _tTrustDirection = Nothing
     , _tStateLastUpdatedDateTime = Nothing
     , _tTrustType = Nothing
+    , _tTrustStateReason = Nothing
     , _tRemoteDomainName = Nothing
     , _tTrustId = Nothing
     , _tCreatedDateTime = Nothing
@@ -1062,6 +1149,10 @@
 tTrustType :: Lens' Trust (Maybe TrustType)
 tTrustType = lens _tTrustType (\ s a -> s{_tTrustType = a});
 
+-- | The reason for the TrustState.
+tTrustStateReason :: Lens' Trust (Maybe Text)
+tTrustStateReason = lens _tTrustStateReason (\ s a -> s{_tTrustStateReason = a});
+
 -- | The Fully Qualified Domain Name (FQDN) of the external domain involved
 -- in the trust relationship.
 tRemoteDomainName :: Lens' Trust (Maybe Text)
@@ -1085,8 +1176,11 @@
                      <*> (x .:? "TrustDirection")
                      <*> (x .:? "StateLastUpdatedDateTime")
                      <*> (x .:? "TrustType")
+                     <*> (x .:? "TrustStateReason")
                      <*> (x .:? "RemoteDomainName")
                      <*> (x .:? "TrustId")
                      <*> (x .:? "CreatedDateTime"))
 
 instance Hashable Trust
+
+instance NFData Trust
diff --git a/gen/Network/AWS/DirectoryService/Types/Sum.hs b/gen/Network/AWS/DirectoryService/Types/Sum.hs
--- a/gen/Network/AWS/DirectoryService/Types/Sum.hs
+++ b/gen/Network/AWS/DirectoryService/Types/Sum.hs
@@ -37,6 +37,7 @@
         Small -> "Small"
 
 instance Hashable     DirectorySize
+instance NFData       DirectorySize
 instance ToByteString DirectorySize
 instance ToQuery      DirectorySize
 instance ToHeader     DirectorySize
@@ -92,6 +93,7 @@
         DSRestoring -> "Restoring"
 
 instance Hashable     DirectoryStage
+instance NFData       DirectoryStage
 instance ToByteString DirectoryStage
 instance ToQuery      DirectoryStage
 instance ToHeader     DirectoryStage
@@ -120,6 +122,7 @@
         SimpleAD -> "SimpleAD"
 
 instance Hashable     DirectoryType
+instance NFData       DirectoryType
 instance ToByteString DirectoryType
 instance ToQuery      DirectoryType
 instance ToHeader     DirectoryType
@@ -151,6 +154,7 @@
         Pap -> "PAP"
 
 instance Hashable     RadiusAuthenticationProtocol
+instance NFData       RadiusAuthenticationProtocol
 instance ToByteString RadiusAuthenticationProtocol
 instance ToQuery      RadiusAuthenticationProtocol
 instance ToHeader     RadiusAuthenticationProtocol
@@ -182,6 +186,7 @@
         Failed -> "Failed"
 
 instance Hashable     RadiusStatus
+instance NFData       RadiusStatus
 instance ToByteString RadiusStatus
 instance ToQuery      RadiusStatus
 instance ToHeader     RadiusStatus
@@ -189,6 +194,29 @@
 instance FromJSON RadiusStatus where
     parseJSON = parseJSONText "RadiusStatus"
 
+data ReplicationScope =
+    Domain
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText ReplicationScope where
+    parser = takeLowerText >>= \case
+        "domain" -> pure Domain
+        e -> fromTextError $ "Failure parsing ReplicationScope from value: '" <> e
+           <> "'. Accepted values: Domain"
+
+instance ToText ReplicationScope where
+    toText = \case
+        Domain -> "Domain"
+
+instance Hashable     ReplicationScope
+instance NFData       ReplicationScope
+instance ToByteString ReplicationScope
+instance ToQuery      ReplicationScope
+instance ToHeader     ReplicationScope
+
+instance FromJSON ReplicationScope where
+    parseJSON = parseJSONText "ReplicationScope"
+
 data SnapshotStatus
     = SSCompleted
     | SSCreating
@@ -210,6 +238,7 @@
         SSFailed -> "Failed"
 
 instance Hashable     SnapshotStatus
+instance NFData       SnapshotStatus
 instance ToByteString SnapshotStatus
 instance ToQuery      SnapshotStatus
 instance ToHeader     SnapshotStatus
@@ -235,6 +264,7 @@
         Manual -> "Manual"
 
 instance Hashable     SnapshotType
+instance NFData       SnapshotType
 instance ToByteString SnapshotType
 instance ToQuery      SnapshotType
 instance ToHeader     SnapshotType
@@ -266,6 +296,7 @@
         TTopicNotFound -> "Topic not found"
 
 instance Hashable     TopicStatus
+instance NFData       TopicStatus
 instance ToByteString TopicStatus
 instance ToQuery      TopicStatus
 instance ToHeader     TopicStatus
@@ -294,6 +325,7 @@
         TwoWay -> "Two-Way"
 
 instance Hashable     TrustDirection
+instance NFData       TrustDirection
 instance ToByteString TrustDirection
 instance ToQuery      TrustDirection
 instance ToHeader     TrustDirection
@@ -340,6 +372,7 @@
         TSVerifying -> "Verifying"
 
 instance Hashable     TrustState
+instance NFData       TrustState
 instance ToByteString TrustState
 instance ToQuery      TrustState
 instance ToHeader     TrustState
@@ -362,6 +395,7 @@
         Forest -> "Forest"
 
 instance Hashable     TrustType
+instance NFData       TrustType
 instance ToByteString TrustType
 instance ToQuery      TrustType
 instance ToHeader     TrustType
diff --git a/gen/Network/AWS/DirectoryService/UpdateConditionalForwarder.hs b/gen/Network/AWS/DirectoryService/UpdateConditionalForwarder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DirectoryService/UpdateConditionalForwarder.hs
@@ -0,0 +1,149 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DirectoryService.UpdateConditionalForwarder
+-- 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)
+--
+-- Updates a conditional forwarder that has been set up for your AWS
+-- directory.
+module Network.AWS.DirectoryService.UpdateConditionalForwarder
+    (
+    -- * Creating a Request
+      updateConditionalForwarder
+    , UpdateConditionalForwarder
+    -- * Request Lenses
+    , ucfDirectoryId
+    , ucfRemoteDomainName
+    , ucfDNSIPAddrs
+
+    -- * Destructuring the Response
+    , updateConditionalForwarderResponse
+    , UpdateConditionalForwarderResponse
+    -- * Response Lenses
+    , ucfrsResponseStatus
+    ) where
+
+import           Network.AWS.DirectoryService.Types
+import           Network.AWS.DirectoryService.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'updateConditionalForwarder' smart constructor.
+data UpdateConditionalForwarder = UpdateConditionalForwarder'
+    { _ucfDirectoryId      :: !Text
+    , _ucfRemoteDomainName :: !Text
+    , _ucfDNSIPAddrs       :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateConditionalForwarder' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ucfDirectoryId'
+--
+-- * 'ucfRemoteDomainName'
+--
+-- * 'ucfDNSIPAddrs'
+updateConditionalForwarder
+    :: Text -- ^ 'ucfDirectoryId'
+    -> Text -- ^ 'ucfRemoteDomainName'
+    -> UpdateConditionalForwarder
+updateConditionalForwarder pDirectoryId_ pRemoteDomainName_ =
+    UpdateConditionalForwarder'
+    { _ucfDirectoryId = pDirectoryId_
+    , _ucfRemoteDomainName = pRemoteDomainName_
+    , _ucfDNSIPAddrs = mempty
+    }
+
+-- | The directory ID of the AWS directory for which to update the
+-- conditional forwarder.
+ucfDirectoryId :: Lens' UpdateConditionalForwarder Text
+ucfDirectoryId = lens _ucfDirectoryId (\ s a -> s{_ucfDirectoryId = a});
+
+-- | The fully qualified domain name (FQDN) of the remote domain with which
+-- you will set up a trust relationship.
+ucfRemoteDomainName :: Lens' UpdateConditionalForwarder Text
+ucfRemoteDomainName = lens _ucfRemoteDomainName (\ s a -> s{_ucfRemoteDomainName = a});
+
+-- | The updated IP addresses of the remote DNS server associated with the
+-- conditional forwarder.
+ucfDNSIPAddrs :: Lens' UpdateConditionalForwarder [Text]
+ucfDNSIPAddrs = lens _ucfDNSIPAddrs (\ s a -> s{_ucfDNSIPAddrs = a}) . _Coerce;
+
+instance AWSRequest UpdateConditionalForwarder where
+        type Rs UpdateConditionalForwarder =
+             UpdateConditionalForwarderResponse
+        request = postJSON directoryService
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 UpdateConditionalForwarderResponse' <$>
+                   (pure (fromEnum s)))
+
+instance Hashable UpdateConditionalForwarder
+
+instance NFData UpdateConditionalForwarder
+
+instance ToHeaders UpdateConditionalForwarder where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DirectoryService_20150416.UpdateConditionalForwarder"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON UpdateConditionalForwarder where
+        toJSON UpdateConditionalForwarder'{..}
+          = object
+              (catMaybes
+                 [Just ("DirectoryId" .= _ucfDirectoryId),
+                  Just ("RemoteDomainName" .= _ucfRemoteDomainName),
+                  Just ("DnsIpAddrs" .= _ucfDNSIPAddrs)])
+
+instance ToPath UpdateConditionalForwarder where
+        toPath = const "/"
+
+instance ToQuery UpdateConditionalForwarder where
+        toQuery = const mempty
+
+-- | /See:/ 'updateConditionalForwarderResponse' smart constructor.
+newtype UpdateConditionalForwarderResponse = UpdateConditionalForwarderResponse'
+    { _ucfrsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateConditionalForwarderResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ucfrsResponseStatus'
+updateConditionalForwarderResponse
+    :: Int -- ^ 'ucfrsResponseStatus'
+    -> UpdateConditionalForwarderResponse
+updateConditionalForwarderResponse pResponseStatus_ =
+    UpdateConditionalForwarderResponse'
+    { _ucfrsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+ucfrsResponseStatus :: Lens' UpdateConditionalForwarderResponse Int
+ucfrsResponseStatus = lens _ucfrsResponseStatus (\ s a -> s{_ucfrsResponseStatus = a});
+
+instance NFData UpdateConditionalForwarderResponse
diff --git a/gen/Network/AWS/DirectoryService/UpdateRadius.hs b/gen/Network/AWS/DirectoryService/UpdateRadius.hs
--- a/gen/Network/AWS/DirectoryService/UpdateRadius.hs
+++ b/gen/Network/AWS/DirectoryService/UpdateRadius.hs
@@ -88,6 +88,8 @@
 
 instance Hashable UpdateRadius
 
+instance NFData UpdateRadius
+
 instance ToHeaders UpdateRadius where
         toHeaders
           = const
@@ -134,3 +136,5 @@
 -- | The response status code.
 urrsResponseStatus :: Lens' UpdateRadiusResponse Int
 urrsResponseStatus = lens _urrsResponseStatus (\ s a -> s{_urrsResponseStatus = a});
+
+instance NFData UpdateRadiusResponse
diff --git a/gen/Network/AWS/DirectoryService/VerifyTrust.hs b/gen/Network/AWS/DirectoryService/VerifyTrust.hs
--- a/gen/Network/AWS/DirectoryService/VerifyTrust.hs
+++ b/gen/Network/AWS/DirectoryService/VerifyTrust.hs
@@ -82,6 +82,8 @@
 
 instance Hashable VerifyTrust
 
+instance NFData VerifyTrust
+
 instance ToHeaders VerifyTrust where
         toHeaders
           = const
@@ -131,3 +133,5 @@
 -- | The response status code.
 vtrsResponseStatus :: Lens' VerifyTrustResponse Int
 vtrsResponseStatus = lens _vtrsResponseStatus (\ s a -> s{_vtrsResponseStatus = a});
+
+instance NFData VerifyTrustResponse
diff --git a/test/Test/AWS/Gen/DirectoryService.hs b/test/Test/AWS/Gen/DirectoryService.hs
--- a/test/Test/AWS/Gen/DirectoryService.hs
+++ b/test/Test/AWS/Gen/DirectoryService.hs
@@ -28,7 +28,10 @@
 -- fixtures :: TestTree
 -- fixtures =
 --     [ testGroup "request"
---         [ testGetSnapshotLimits $
+--         [ testDescribeConditionalForwarders $
+--             describeConditionalForwarders
+--
+--         , testGetSnapshotLimits $
 --             getSnapshotLimits
 --
 --         , testRegisterEventTopic $
@@ -61,6 +64,12 @@
 --         , testDescribeEventTopics $
 --             describeEventTopics
 --
+--         , testUpdateConditionalForwarder $
+--             updateConditionalForwarder
+--
+--         , testDeleteConditionalForwarder $
+--             deleteConditionalForwarder
+--
 --         , testEnableSSO $
 --             enableSSO
 --
@@ -97,6 +106,9 @@
 --         , testVerifyTrust $
 --             verifyTrust
 --
+--         , testCreateConditionalForwarder $
+--             createConditionalForwarder
+--
 --         , testGetDirectoryLimits $
 --             getDirectoryLimits
 --
@@ -106,7 +118,10 @@
 --           ]
 
 --     , testGroup "response"
---         [ testGetSnapshotLimitsResponse $
+--         [ testDescribeConditionalForwardersResponse $
+--             describeConditionalForwardersResponse
+--
+--         , testGetSnapshotLimitsResponse $
 --             getSnapshotLimitsResponse
 --
 --         , testRegisterEventTopicResponse $
@@ -139,6 +154,12 @@
 --         , testDescribeEventTopicsResponse $
 --             describeEventTopicsResponse
 --
+--         , testUpdateConditionalForwarderResponse $
+--             updateConditionalForwarderResponse
+--
+--         , testDeleteConditionalForwarderResponse $
+--             deleteConditionalForwarderResponse
+--
 --         , testEnableSSOResponse $
 --             enableSSOResponse
 --
@@ -175,6 +196,9 @@
 --         , testVerifyTrustResponse $
 --             verifyTrustResponse
 --
+--         , testCreateConditionalForwarderResponse $
+--             createConditionalForwarderResponse
+--
 --         , testGetDirectoryLimitsResponse $
 --             getDirectoryLimitsResponse
 --
@@ -186,6 +210,11 @@
 
 -- Requests
 
+testDescribeConditionalForwarders :: DescribeConditionalForwarders -> TestTree
+testDescribeConditionalForwarders = req
+    "DescribeConditionalForwarders"
+    "fixture/DescribeConditionalForwarders.yaml"
+
 testGetSnapshotLimits :: GetSnapshotLimits -> TestTree
 testGetSnapshotLimits = req
     "GetSnapshotLimits"
@@ -241,6 +270,16 @@
     "DescribeEventTopics"
     "fixture/DescribeEventTopics.yaml"
 
+testUpdateConditionalForwarder :: UpdateConditionalForwarder -> TestTree
+testUpdateConditionalForwarder = req
+    "UpdateConditionalForwarder"
+    "fixture/UpdateConditionalForwarder.yaml"
+
+testDeleteConditionalForwarder :: DeleteConditionalForwarder -> TestTree
+testDeleteConditionalForwarder = req
+    "DeleteConditionalForwarder"
+    "fixture/DeleteConditionalForwarder.yaml"
+
 testEnableSSO :: EnableSSO -> TestTree
 testEnableSSO = req
     "EnableSSO"
@@ -301,6 +340,11 @@
     "VerifyTrust"
     "fixture/VerifyTrust.yaml"
 
+testCreateConditionalForwarder :: CreateConditionalForwarder -> TestTree
+testCreateConditionalForwarder = req
+    "CreateConditionalForwarder"
+    "fixture/CreateConditionalForwarder.yaml"
+
 testGetDirectoryLimits :: GetDirectoryLimits -> TestTree
 testGetDirectoryLimits = req
     "GetDirectoryLimits"
@@ -313,6 +357,13 @@
 
 -- Responses
 
+testDescribeConditionalForwardersResponse :: DescribeConditionalForwardersResponse -> TestTree
+testDescribeConditionalForwardersResponse = res
+    "DescribeConditionalForwardersResponse"
+    "fixture/DescribeConditionalForwardersResponse.proto"
+    directoryService
+    (Proxy :: Proxy DescribeConditionalForwarders)
+
 testGetSnapshotLimitsResponse :: GetSnapshotLimitsResponse -> TestTree
 testGetSnapshotLimitsResponse = res
     "GetSnapshotLimitsResponse"
@@ -390,6 +441,20 @@
     directoryService
     (Proxy :: Proxy DescribeEventTopics)
 
+testUpdateConditionalForwarderResponse :: UpdateConditionalForwarderResponse -> TestTree
+testUpdateConditionalForwarderResponse = res
+    "UpdateConditionalForwarderResponse"
+    "fixture/UpdateConditionalForwarderResponse.proto"
+    directoryService
+    (Proxy :: Proxy UpdateConditionalForwarder)
+
+testDeleteConditionalForwarderResponse :: DeleteConditionalForwarderResponse -> TestTree
+testDeleteConditionalForwarderResponse = res
+    "DeleteConditionalForwarderResponse"
+    "fixture/DeleteConditionalForwarderResponse.proto"
+    directoryService
+    (Proxy :: Proxy DeleteConditionalForwarder)
+
 testEnableSSOResponse :: EnableSSOResponse -> TestTree
 testEnableSSOResponse = res
     "EnableSSOResponse"
@@ -473,6 +538,13 @@
     "fixture/VerifyTrustResponse.proto"
     directoryService
     (Proxy :: Proxy VerifyTrust)
+
+testCreateConditionalForwarderResponse :: CreateConditionalForwarderResponse -> TestTree
+testCreateConditionalForwarderResponse = res
+    "CreateConditionalForwarderResponse"
+    "fixture/CreateConditionalForwarderResponse.proto"
+    directoryService
+    (Proxy :: Proxy CreateConditionalForwarder)
 
 testGetDirectoryLimitsResponse :: GetDirectoryLimitsResponse -> TestTree
 testGetDirectoryLimitsResponse = res
