diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Change Log
 
+## 0.8.0
+
+* Update resource specification document (no version given in doc)
+* GHC 8.2.1 compatibility
+
 ## 0.7.1
 
 * Add `Export` field to the `Output` type. This allows you to declare
diff --git a/examples/apigw-lambda-dynamodb.hs b/examples/apigw-lambda-dynamodb.hs
--- a/examples/apigw-lambda-dynamodb.hs
+++ b/examples/apigw-lambda-dynamodb.hs
@@ -58,8 +58,9 @@
   ApiGatewayMethodProperties $
   apiGatewayMethod
     (Literal GET)
+    (toRef apiGWResource)
+    (toRef apiGWRestApi)
     & agmeAuthorizationType ?~ Literal NONE
-    & agmeResourceId ?~ toRef apiGWResource
     & agmeAuthorizerId ?~ toRef apiGWRestApi
     & agmeIntegration ?~ integration
     & agmeMethodResponses ?~ [ methodResponse ]
@@ -83,13 +84,12 @@
 
     integrationResponse =
       apiGatewayMethodIntegrationResponse
+      "200"
       & agmirResponseTemplates ?~ [ ("application/json", "$input.json('$.body')") ]
-      & agmirStatusCode ?~ "200"
 
     methodResponse =
       apiGatewayMethodMethodResponse
-      & agmmrStatusCode ?~ "200"
-
+      "200"
 
 postMethod :: Resource
 postMethod = (
@@ -97,8 +97,9 @@
   ApiGatewayMethodProperties $
   apiGatewayMethod
     (Literal POST)
+    (toRef apiGWResource)
+    (toRef apiGWRestApi)
     & agmeAuthorizationType ?~ Literal NONE
-    & agmeResourceId ?~ toRef apiGWResource
     & agmeAuthorizerId ?~ toRef apiGWRestApi
     & agmeIntegration ?~ integration
     & agmeMethodResponses ?~ [ methodResponse ]
@@ -122,12 +123,12 @@
 
     integrationResponse =
       apiGatewayMethodIntegrationResponse
+      "200"
       & agmirResponseTemplates ?~ [ ("application/json", "$input.json('$.body')") ]
-      & agmirStatusCode ?~ "200"
 
     methodResponse =
       apiGatewayMethodMethodResponse
-      & agmmrStatusCode ?~ "200"
+      "200"
 
 apiGWDeployment :: Resource
 apiGWDeployment = (resource "ApiGWDeployment" $
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentMethodSetting.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentMethodSetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentMethodSetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentMethodSetting.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html
 
 module Stratosphere.ResourceProperties.ApiGatewayDeploymentMethodSetting where
 
@@ -80,42 +80,42 @@
   , _apiGatewayDeploymentMethodSettingThrottlingRateLimit = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-cachedataencrypted
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-cachedataencrypted
 agdmsCacheDataEncrypted :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Bool))
 agdmsCacheDataEncrypted = lens _apiGatewayDeploymentMethodSettingCacheDataEncrypted (\s a -> s { _apiGatewayDeploymentMethodSettingCacheDataEncrypted = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-cachettlinseconds
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-cachettlinseconds
 agdmsCacheTtlInSeconds :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Integer))
 agdmsCacheTtlInSeconds = lens _apiGatewayDeploymentMethodSettingCacheTtlInSeconds (\s a -> s { _apiGatewayDeploymentMethodSettingCacheTtlInSeconds = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-cachingenabled
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-cachingenabled
 agdmsCachingEnabled :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Bool))
 agdmsCachingEnabled = lens _apiGatewayDeploymentMethodSettingCachingEnabled (\s a -> s { _apiGatewayDeploymentMethodSettingCachingEnabled = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-datatraceenabled
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-datatraceenabled
 agdmsDataTraceEnabled :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Bool))
 agdmsDataTraceEnabled = lens _apiGatewayDeploymentMethodSettingDataTraceEnabled (\s a -> s { _apiGatewayDeploymentMethodSettingDataTraceEnabled = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-httpmethod
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-httpmethod
 agdmsHttpMethod :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val HttpMethod))
 agdmsHttpMethod = lens _apiGatewayDeploymentMethodSettingHttpMethod (\s a -> s { _apiGatewayDeploymentMethodSettingHttpMethod = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-logginglevel
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-logginglevel
 agdmsLoggingLevel :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val LoggingLevel))
 agdmsLoggingLevel = lens _apiGatewayDeploymentMethodSettingLoggingLevel (\s a -> s { _apiGatewayDeploymentMethodSettingLoggingLevel = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-metricsenabled
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-metricsenabled
 agdmsMetricsEnabled :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Bool))
 agdmsMetricsEnabled = lens _apiGatewayDeploymentMethodSettingMetricsEnabled (\s a -> s { _apiGatewayDeploymentMethodSettingMetricsEnabled = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-resourcepath
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-resourcepath
 agdmsResourcePath :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Text))
 agdmsResourcePath = lens _apiGatewayDeploymentMethodSettingResourcePath (\s a -> s { _apiGatewayDeploymentMethodSettingResourcePath = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-throttlingburstlimit
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-throttlingburstlimit
 agdmsThrottlingBurstLimit :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Integer))
 agdmsThrottlingBurstLimit = lens _apiGatewayDeploymentMethodSettingThrottlingBurstLimit (\s a -> s { _apiGatewayDeploymentMethodSettingThrottlingBurstLimit = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-throttlingratelimit
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-throttlingratelimit
 agdmsThrottlingRateLimit :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Double))
 agdmsThrottlingRateLimit = lens _apiGatewayDeploymentMethodSettingThrottlingRateLimit (\s a -> s { _apiGatewayDeploymentMethodSettingThrottlingRateLimit = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentStageDescription.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentStageDescription.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentStageDescription.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentStageDescription.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html
 
 module Stratosphere.ResourceProperties.ApiGatewayDeploymentStageDescription where
 
@@ -28,6 +28,7 @@
   , _apiGatewayDeploymentStageDescriptionClientCertificateId :: Maybe (Val Text)
   , _apiGatewayDeploymentStageDescriptionDataTraceEnabled :: Maybe (Val Bool)
   , _apiGatewayDeploymentStageDescriptionDescription :: Maybe (Val Text)
+  , _apiGatewayDeploymentStageDescriptionDocumentationVersion :: Maybe (Val Text)
   , _apiGatewayDeploymentStageDescriptionLoggingLevel :: Maybe (Val LoggingLevel)
   , _apiGatewayDeploymentStageDescriptionMethodSettings :: Maybe [ApiGatewayDeploymentMethodSetting]
   , _apiGatewayDeploymentStageDescriptionMetricsEnabled :: Maybe (Val Bool)
@@ -49,6 +50,7 @@
     , fmap (("ClientCertificateId",) . toJSON) _apiGatewayDeploymentStageDescriptionClientCertificateId
     , fmap (("DataTraceEnabled",) . toJSON . fmap Bool') _apiGatewayDeploymentStageDescriptionDataTraceEnabled
     , fmap (("Description",) . toJSON) _apiGatewayDeploymentStageDescriptionDescription
+    , fmap (("DocumentationVersion",) . toJSON) _apiGatewayDeploymentStageDescriptionDocumentationVersion
     , fmap (("LoggingLevel",) . toJSON) _apiGatewayDeploymentStageDescriptionLoggingLevel
     , fmap (("MethodSettings",) . toJSON) _apiGatewayDeploymentStageDescriptionMethodSettings
     , fmap (("MetricsEnabled",) . toJSON . fmap Bool') _apiGatewayDeploymentStageDescriptionMetricsEnabled
@@ -69,6 +71,7 @@
       (obj .:? "ClientCertificateId") <*>
       fmap (fmap (fmap unBool')) (obj .:? "DataTraceEnabled") <*>
       (obj .:? "Description") <*>
+      (obj .:? "DocumentationVersion") <*>
       (obj .:? "LoggingLevel") <*>
       (obj .:? "MethodSettings") <*>
       fmap (fmap (fmap unBool')) (obj .:? "MetricsEnabled") <*>
@@ -92,6 +95,7 @@
   , _apiGatewayDeploymentStageDescriptionClientCertificateId = Nothing
   , _apiGatewayDeploymentStageDescriptionDataTraceEnabled = Nothing
   , _apiGatewayDeploymentStageDescriptionDescription = Nothing
+  , _apiGatewayDeploymentStageDescriptionDocumentationVersion = Nothing
   , _apiGatewayDeploymentStageDescriptionLoggingLevel = Nothing
   , _apiGatewayDeploymentStageDescriptionMethodSettings = Nothing
   , _apiGatewayDeploymentStageDescriptionMetricsEnabled = Nothing
@@ -101,62 +105,66 @@
   , _apiGatewayDeploymentStageDescriptionVariables = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cacheclusterenabled
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cacheclusterenabled
 agdsdCacheClusterEnabled :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool))
 agdsdCacheClusterEnabled = lens _apiGatewayDeploymentStageDescriptionCacheClusterEnabled (\s a -> s { _apiGatewayDeploymentStageDescriptionCacheClusterEnabled = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cacheclustersize
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cacheclustersize
 agdsdCacheClusterSize :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Text))
 agdsdCacheClusterSize = lens _apiGatewayDeploymentStageDescriptionCacheClusterSize (\s a -> s { _apiGatewayDeploymentStageDescriptionCacheClusterSize = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cachedataencrypted
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cachedataencrypted
 agdsdCacheDataEncrypted :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool))
 agdsdCacheDataEncrypted = lens _apiGatewayDeploymentStageDescriptionCacheDataEncrypted (\s a -> s { _apiGatewayDeploymentStageDescriptionCacheDataEncrypted = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cachettlinseconds
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cachettlinseconds
 agdsdCacheTtlInSeconds :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Integer))
 agdsdCacheTtlInSeconds = lens _apiGatewayDeploymentStageDescriptionCacheTtlInSeconds (\s a -> s { _apiGatewayDeploymentStageDescriptionCacheTtlInSeconds = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cachingenabled
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cachingenabled
 agdsdCachingEnabled :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool))
 agdsdCachingEnabled = lens _apiGatewayDeploymentStageDescriptionCachingEnabled (\s a -> s { _apiGatewayDeploymentStageDescriptionCachingEnabled = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-clientcertificateid
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-clientcertificateid
 agdsdClientCertificateId :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Text))
 agdsdClientCertificateId = lens _apiGatewayDeploymentStageDescriptionClientCertificateId (\s a -> s { _apiGatewayDeploymentStageDescriptionClientCertificateId = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-datatraceenabled
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-datatraceenabled
 agdsdDataTraceEnabled :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool))
 agdsdDataTraceEnabled = lens _apiGatewayDeploymentStageDescriptionDataTraceEnabled (\s a -> s { _apiGatewayDeploymentStageDescriptionDataTraceEnabled = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-description
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-description
 agdsdDescription :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Text))
 agdsdDescription = lens _apiGatewayDeploymentStageDescriptionDescription (\s a -> s { _apiGatewayDeploymentStageDescriptionDescription = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-logginglevel
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-documentationversion
+agdsdDocumentationVersion :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Text))
+agdsdDocumentationVersion = lens _apiGatewayDeploymentStageDescriptionDocumentationVersion (\s a -> s { _apiGatewayDeploymentStageDescriptionDocumentationVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-logginglevel
 agdsdLoggingLevel :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val LoggingLevel))
 agdsdLoggingLevel = lens _apiGatewayDeploymentStageDescriptionLoggingLevel (\s a -> s { _apiGatewayDeploymentStageDescriptionLoggingLevel = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-methodsettings
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-methodsettings
 agdsdMethodSettings :: Lens' ApiGatewayDeploymentStageDescription (Maybe [ApiGatewayDeploymentMethodSetting])
 agdsdMethodSettings = lens _apiGatewayDeploymentStageDescriptionMethodSettings (\s a -> s { _apiGatewayDeploymentStageDescriptionMethodSettings = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-metricsenabled
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-metricsenabled
 agdsdMetricsEnabled :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool))
 agdsdMetricsEnabled = lens _apiGatewayDeploymentStageDescriptionMetricsEnabled (\s a -> s { _apiGatewayDeploymentStageDescriptionMetricsEnabled = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-stagename
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-stagename
 agdsdStageName :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Text))
 agdsdStageName = lens _apiGatewayDeploymentStageDescriptionStageName (\s a -> s { _apiGatewayDeploymentStageDescriptionStageName = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-throttlingburstlimit
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-throttlingburstlimit
 agdsdThrottlingBurstLimit :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Integer))
 agdsdThrottlingBurstLimit = lens _apiGatewayDeploymentStageDescriptionThrottlingBurstLimit (\s a -> s { _apiGatewayDeploymentStageDescriptionThrottlingBurstLimit = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-throttlingratelimit
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-throttlingratelimit
 agdsdThrottlingRateLimit :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Double))
 agdsdThrottlingRateLimit = lens _apiGatewayDeploymentStageDescriptionThrottlingRateLimit (\s a -> s { _apiGatewayDeploymentStageDescriptionThrottlingRateLimit = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-variables
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-variables
 agdsdVariables :: Lens' ApiGatewayDeploymentStageDescription (Maybe Object)
 agdsdVariables = lens _apiGatewayDeploymentStageDescriptionVariables (\s a -> s { _apiGatewayDeploymentStageDescriptionVariables = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDocumentationPartLocation.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDocumentationPartLocation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDocumentationPartLocation.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-documentationpart-location.html
+
+module Stratosphere.ResourceProperties.ApiGatewayDocumentationPartLocation where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for ApiGatewayDocumentationPartLocation. See
+-- 'apiGatewayDocumentationPartLocation' for a more convenient constructor.
+data ApiGatewayDocumentationPartLocation =
+  ApiGatewayDocumentationPartLocation
+  { _apiGatewayDocumentationPartLocationMethod :: Maybe (Val Text)
+  , _apiGatewayDocumentationPartLocationName :: Maybe (Val Text)
+  , _apiGatewayDocumentationPartLocationPath :: Maybe (Val Text)
+  , _apiGatewayDocumentationPartLocationStatusCode :: Maybe (Val Text)
+  , _apiGatewayDocumentationPartLocationType :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ApiGatewayDocumentationPartLocation where
+  toJSON ApiGatewayDocumentationPartLocation{..} =
+    object $
+    catMaybes
+    [ fmap (("Method",) . toJSON) _apiGatewayDocumentationPartLocationMethod
+    , fmap (("Name",) . toJSON) _apiGatewayDocumentationPartLocationName
+    , fmap (("Path",) . toJSON) _apiGatewayDocumentationPartLocationPath
+    , fmap (("StatusCode",) . toJSON) _apiGatewayDocumentationPartLocationStatusCode
+    , fmap (("Type",) . toJSON) _apiGatewayDocumentationPartLocationType
+    ]
+
+instance FromJSON ApiGatewayDocumentationPartLocation where
+  parseJSON (Object obj) =
+    ApiGatewayDocumentationPartLocation <$>
+      (obj .:? "Method") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Path") <*>
+      (obj .:? "StatusCode") <*>
+      (obj .:? "Type")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ApiGatewayDocumentationPartLocation' containing required
+-- fields as arguments.
+apiGatewayDocumentationPartLocation
+  :: ApiGatewayDocumentationPartLocation
+apiGatewayDocumentationPartLocation  =
+  ApiGatewayDocumentationPartLocation
+  { _apiGatewayDocumentationPartLocationMethod = Nothing
+  , _apiGatewayDocumentationPartLocationName = Nothing
+  , _apiGatewayDocumentationPartLocationPath = Nothing
+  , _apiGatewayDocumentationPartLocationStatusCode = Nothing
+  , _apiGatewayDocumentationPartLocationType = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-documentationpart-location.html#cfn-apigateway-documentationpart-location-method
+agdplMethod :: Lens' ApiGatewayDocumentationPartLocation (Maybe (Val Text))
+agdplMethod = lens _apiGatewayDocumentationPartLocationMethod (\s a -> s { _apiGatewayDocumentationPartLocationMethod = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-documentationpart-location.html#cfn-apigateway-documentationpart-location-name
+agdplName :: Lens' ApiGatewayDocumentationPartLocation (Maybe (Val Text))
+agdplName = lens _apiGatewayDocumentationPartLocationName (\s a -> s { _apiGatewayDocumentationPartLocationName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-documentationpart-location.html#cfn-apigateway-documentationpart-location-path
+agdplPath :: Lens' ApiGatewayDocumentationPartLocation (Maybe (Val Text))
+agdplPath = lens _apiGatewayDocumentationPartLocationPath (\s a -> s { _apiGatewayDocumentationPartLocationPath = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-documentationpart-location.html#cfn-apigateway-documentationpart-location-statuscode
+agdplStatusCode :: Lens' ApiGatewayDocumentationPartLocation (Maybe (Val Text))
+agdplStatusCode = lens _apiGatewayDocumentationPartLocationStatusCode (\s a -> s { _apiGatewayDocumentationPartLocationStatusCode = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-documentationpart-location.html#cfn-apigateway-documentationpart-location-type
+agdplType :: Lens' ApiGatewayDocumentationPartLocation (Maybe (Val Text))
+agdplType = lens _apiGatewayDocumentationPartLocationType (\s a -> s { _apiGatewayDocumentationPartLocationType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegrationResponse.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegrationResponse.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegrationResponse.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegrationResponse.hs
@@ -22,7 +22,7 @@
   { _apiGatewayMethodIntegrationResponseResponseParameters :: Maybe Object
   , _apiGatewayMethodIntegrationResponseResponseTemplates :: Maybe Object
   , _apiGatewayMethodIntegrationResponseSelectionPattern :: Maybe (Val Text)
-  , _apiGatewayMethodIntegrationResponseStatusCode :: Maybe (Val Text)
+  , _apiGatewayMethodIntegrationResponseStatusCode :: Val Text
   } deriving (Show, Eq)
 
 instance ToJSON ApiGatewayMethodIntegrationResponse where
@@ -32,7 +32,7 @@
     [ fmap (("ResponseParameters",) . toJSON) _apiGatewayMethodIntegrationResponseResponseParameters
     , fmap (("ResponseTemplates",) . toJSON) _apiGatewayMethodIntegrationResponseResponseTemplates
     , fmap (("SelectionPattern",) . toJSON) _apiGatewayMethodIntegrationResponseSelectionPattern
-    , fmap (("StatusCode",) . toJSON) _apiGatewayMethodIntegrationResponseStatusCode
+    , (Just . ("StatusCode",) . toJSON) _apiGatewayMethodIntegrationResponseStatusCode
     ]
 
 instance FromJSON ApiGatewayMethodIntegrationResponse where
@@ -41,19 +41,20 @@
       (obj .:? "ResponseParameters") <*>
       (obj .:? "ResponseTemplates") <*>
       (obj .:? "SelectionPattern") <*>
-      (obj .:? "StatusCode")
+      (obj .: "StatusCode")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayMethodIntegrationResponse' containing required
 -- fields as arguments.
 apiGatewayMethodIntegrationResponse
-  :: ApiGatewayMethodIntegrationResponse
-apiGatewayMethodIntegrationResponse  =
+  :: Val Text -- ^ 'agmirStatusCode'
+  -> ApiGatewayMethodIntegrationResponse
+apiGatewayMethodIntegrationResponse statusCodearg =
   ApiGatewayMethodIntegrationResponse
   { _apiGatewayMethodIntegrationResponseResponseParameters = Nothing
   , _apiGatewayMethodIntegrationResponseResponseTemplates = Nothing
   , _apiGatewayMethodIntegrationResponseSelectionPattern = Nothing
-  , _apiGatewayMethodIntegrationResponseStatusCode = Nothing
+  , _apiGatewayMethodIntegrationResponseStatusCode = statusCodearg
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration-integrationresponse.html#cfn-apigateway-method-integration-integrationresponse-responseparameters
@@ -69,5 +70,5 @@
 agmirSelectionPattern = lens _apiGatewayMethodIntegrationResponseSelectionPattern (\s a -> s { _apiGatewayMethodIntegrationResponseSelectionPattern = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration-integrationresponse.html#cfn-apigateway-method-integration-integrationresponse-statuscode
-agmirStatusCode :: Lens' ApiGatewayMethodIntegrationResponse (Maybe (Val Text))
+agmirStatusCode :: Lens' ApiGatewayMethodIntegrationResponse (Val Text)
 agmirStatusCode = lens _apiGatewayMethodIntegrationResponseStatusCode (\s a -> s { _apiGatewayMethodIntegrationResponseStatusCode = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodMethodResponse.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodMethodResponse.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodMethodResponse.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodMethodResponse.hs
@@ -21,7 +21,7 @@
   ApiGatewayMethodMethodResponse
   { _apiGatewayMethodMethodResponseResponseModels :: Maybe Object
   , _apiGatewayMethodMethodResponseResponseParameters :: Maybe Object
-  , _apiGatewayMethodMethodResponseStatusCode :: Maybe (Val Text)
+  , _apiGatewayMethodMethodResponseStatusCode :: Val Text
   } deriving (Show, Eq)
 
 instance ToJSON ApiGatewayMethodMethodResponse where
@@ -30,7 +30,7 @@
     catMaybes
     [ fmap (("ResponseModels",) . toJSON) _apiGatewayMethodMethodResponseResponseModels
     , fmap (("ResponseParameters",) . toJSON) _apiGatewayMethodMethodResponseResponseParameters
-    , fmap (("StatusCode",) . toJSON) _apiGatewayMethodMethodResponseStatusCode
+    , (Just . ("StatusCode",) . toJSON) _apiGatewayMethodMethodResponseStatusCode
     ]
 
 instance FromJSON ApiGatewayMethodMethodResponse where
@@ -38,18 +38,19 @@
     ApiGatewayMethodMethodResponse <$>
       (obj .:? "ResponseModels") <*>
       (obj .:? "ResponseParameters") <*>
-      (obj .:? "StatusCode")
+      (obj .: "StatusCode")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayMethodMethodResponse' containing required
 -- fields as arguments.
 apiGatewayMethodMethodResponse
-  :: ApiGatewayMethodMethodResponse
-apiGatewayMethodMethodResponse  =
+  :: Val Text -- ^ 'agmmrStatusCode'
+  -> ApiGatewayMethodMethodResponse
+apiGatewayMethodMethodResponse statusCodearg =
   ApiGatewayMethodMethodResponse
   { _apiGatewayMethodMethodResponseResponseModels = Nothing
   , _apiGatewayMethodMethodResponseResponseParameters = Nothing
-  , _apiGatewayMethodMethodResponseStatusCode = Nothing
+  , _apiGatewayMethodMethodResponseStatusCode = statusCodearg
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-methodresponse.html#cfn-apigateway-method-methodresponse-responsemodels
@@ -61,5 +62,5 @@
 agmmrResponseParameters = lens _apiGatewayMethodMethodResponseResponseParameters (\s a -> s { _apiGatewayMethodMethodResponseResponseParameters = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-methodresponse.html#cfn-apigateway-method-methodresponse-statuscode
-agmmrStatusCode :: Lens' ApiGatewayMethodMethodResponse (Maybe (Val Text))
+agmmrStatusCode :: Lens' ApiGatewayMethodMethodResponse (Val Text)
 agmmrStatusCode = lens _apiGatewayMethodMethodResponseStatusCode (\s a -> s { _apiGatewayMethodMethodResponseStatusCode = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyCustomizedMetricSpecification.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyCustomizedMetricSpecification.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyCustomizedMetricSpecification.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html
+
+module Stratosphere.ResourceProperties.AutoScalingScalingPolicyCustomizedMetricSpecification where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.AutoScalingScalingPolicyMetricDimension
+
+-- | Full data type definition for
+-- AutoScalingScalingPolicyCustomizedMetricSpecification. See
+-- 'autoScalingScalingPolicyCustomizedMetricSpecification' for a more
+-- convenient constructor.
+data AutoScalingScalingPolicyCustomizedMetricSpecification =
+  AutoScalingScalingPolicyCustomizedMetricSpecification
+  { _autoScalingScalingPolicyCustomizedMetricSpecificationDimensions :: Maybe [AutoScalingScalingPolicyMetricDimension]
+  , _autoScalingScalingPolicyCustomizedMetricSpecificationMetricName :: Val Text
+  , _autoScalingScalingPolicyCustomizedMetricSpecificationNamespace :: Val Text
+  , _autoScalingScalingPolicyCustomizedMetricSpecificationStatistic :: Val Text
+  , _autoScalingScalingPolicyCustomizedMetricSpecificationUnit :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingScalingPolicyCustomizedMetricSpecification where
+  toJSON AutoScalingScalingPolicyCustomizedMetricSpecification{..} =
+    object $
+    catMaybes
+    [ fmap (("Dimensions",) . toJSON) _autoScalingScalingPolicyCustomizedMetricSpecificationDimensions
+    , (Just . ("MetricName",) . toJSON) _autoScalingScalingPolicyCustomizedMetricSpecificationMetricName
+    , (Just . ("Namespace",) . toJSON) _autoScalingScalingPolicyCustomizedMetricSpecificationNamespace
+    , (Just . ("Statistic",) . toJSON) _autoScalingScalingPolicyCustomizedMetricSpecificationStatistic
+    , fmap (("Unit",) . toJSON) _autoScalingScalingPolicyCustomizedMetricSpecificationUnit
+    ]
+
+instance FromJSON AutoScalingScalingPolicyCustomizedMetricSpecification where
+  parseJSON (Object obj) =
+    AutoScalingScalingPolicyCustomizedMetricSpecification <$>
+      (obj .:? "Dimensions") <*>
+      (obj .: "MetricName") <*>
+      (obj .: "Namespace") <*>
+      (obj .: "Statistic") <*>
+      (obj .:? "Unit")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingScalingPolicyCustomizedMetricSpecification'
+-- containing required fields as arguments.
+autoScalingScalingPolicyCustomizedMetricSpecification
+  :: Val Text -- ^ 'asspcmsMetricName'
+  -> Val Text -- ^ 'asspcmsNamespace'
+  -> Val Text -- ^ 'asspcmsStatistic'
+  -> AutoScalingScalingPolicyCustomizedMetricSpecification
+autoScalingScalingPolicyCustomizedMetricSpecification metricNamearg namespacearg statisticarg =
+  AutoScalingScalingPolicyCustomizedMetricSpecification
+  { _autoScalingScalingPolicyCustomizedMetricSpecificationDimensions = Nothing
+  , _autoScalingScalingPolicyCustomizedMetricSpecificationMetricName = metricNamearg
+  , _autoScalingScalingPolicyCustomizedMetricSpecificationNamespace = namespacearg
+  , _autoScalingScalingPolicyCustomizedMetricSpecificationStatistic = statisticarg
+  , _autoScalingScalingPolicyCustomizedMetricSpecificationUnit = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-dimensions
+asspcmsDimensions :: Lens' AutoScalingScalingPolicyCustomizedMetricSpecification (Maybe [AutoScalingScalingPolicyMetricDimension])
+asspcmsDimensions = lens _autoScalingScalingPolicyCustomizedMetricSpecificationDimensions (\s a -> s { _autoScalingScalingPolicyCustomizedMetricSpecificationDimensions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-metricname
+asspcmsMetricName :: Lens' AutoScalingScalingPolicyCustomizedMetricSpecification (Val Text)
+asspcmsMetricName = lens _autoScalingScalingPolicyCustomizedMetricSpecificationMetricName (\s a -> s { _autoScalingScalingPolicyCustomizedMetricSpecificationMetricName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-namespace
+asspcmsNamespace :: Lens' AutoScalingScalingPolicyCustomizedMetricSpecification (Val Text)
+asspcmsNamespace = lens _autoScalingScalingPolicyCustomizedMetricSpecificationNamespace (\s a -> s { _autoScalingScalingPolicyCustomizedMetricSpecificationNamespace = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-statistic
+asspcmsStatistic :: Lens' AutoScalingScalingPolicyCustomizedMetricSpecification (Val Text)
+asspcmsStatistic = lens _autoScalingScalingPolicyCustomizedMetricSpecificationStatistic (\s a -> s { _autoScalingScalingPolicyCustomizedMetricSpecificationStatistic = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-unit
+asspcmsUnit :: Lens' AutoScalingScalingPolicyCustomizedMetricSpecification (Maybe (Val Text))
+asspcmsUnit = lens _autoScalingScalingPolicyCustomizedMetricSpecificationUnit (\s a -> s { _autoScalingScalingPolicyCustomizedMetricSpecificationUnit = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyMetricDimension.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyMetricDimension.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyMetricDimension.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdimension.html
+
+module Stratosphere.ResourceProperties.AutoScalingScalingPolicyMetricDimension where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for AutoScalingScalingPolicyMetricDimension.
+-- See 'autoScalingScalingPolicyMetricDimension' for a more convenient
+-- constructor.
+data AutoScalingScalingPolicyMetricDimension =
+  AutoScalingScalingPolicyMetricDimension
+  { _autoScalingScalingPolicyMetricDimensionName :: Val Text
+  , _autoScalingScalingPolicyMetricDimensionValue :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingScalingPolicyMetricDimension where
+  toJSON AutoScalingScalingPolicyMetricDimension{..} =
+    object $
+    catMaybes
+    [ (Just . ("Name",) . toJSON) _autoScalingScalingPolicyMetricDimensionName
+    , (Just . ("Value",) . toJSON) _autoScalingScalingPolicyMetricDimensionValue
+    ]
+
+instance FromJSON AutoScalingScalingPolicyMetricDimension where
+  parseJSON (Object obj) =
+    AutoScalingScalingPolicyMetricDimension <$>
+      (obj .: "Name") <*>
+      (obj .: "Value")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingScalingPolicyMetricDimension' containing
+-- required fields as arguments.
+autoScalingScalingPolicyMetricDimension
+  :: Val Text -- ^ 'asspmdName'
+  -> Val Text -- ^ 'asspmdValue'
+  -> AutoScalingScalingPolicyMetricDimension
+autoScalingScalingPolicyMetricDimension namearg valuearg =
+  AutoScalingScalingPolicyMetricDimension
+  { _autoScalingScalingPolicyMetricDimensionName = namearg
+  , _autoScalingScalingPolicyMetricDimensionValue = valuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdimension.html#cfn-autoscaling-scalingpolicy-metricdimension-name
+asspmdName :: Lens' AutoScalingScalingPolicyMetricDimension (Val Text)
+asspmdName = lens _autoScalingScalingPolicyMetricDimensionName (\s a -> s { _autoScalingScalingPolicyMetricDimensionName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdimension.html#cfn-autoscaling-scalingpolicy-metricdimension-value
+asspmdValue :: Lens' AutoScalingScalingPolicyMetricDimension (Val Text)
+asspmdValue = lens _autoScalingScalingPolicyMetricDimensionValue (\s a -> s { _autoScalingScalingPolicyMetricDimensionValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyPredefinedMetricSpecification.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyPredefinedMetricSpecification.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyPredefinedMetricSpecification.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predefinedmetricspecification.html
+
+module Stratosphere.ResourceProperties.AutoScalingScalingPolicyPredefinedMetricSpecification where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- AutoScalingScalingPolicyPredefinedMetricSpecification. See
+-- 'autoScalingScalingPolicyPredefinedMetricSpecification' for a more
+-- convenient constructor.
+data AutoScalingScalingPolicyPredefinedMetricSpecification =
+  AutoScalingScalingPolicyPredefinedMetricSpecification
+  { _autoScalingScalingPolicyPredefinedMetricSpecificationPredefinedMetricType :: Val Text
+  , _autoScalingScalingPolicyPredefinedMetricSpecificationResourceLabel :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingScalingPolicyPredefinedMetricSpecification where
+  toJSON AutoScalingScalingPolicyPredefinedMetricSpecification{..} =
+    object $
+    catMaybes
+    [ (Just . ("PredefinedMetricType",) . toJSON) _autoScalingScalingPolicyPredefinedMetricSpecificationPredefinedMetricType
+    , fmap (("ResourceLabel",) . toJSON) _autoScalingScalingPolicyPredefinedMetricSpecificationResourceLabel
+    ]
+
+instance FromJSON AutoScalingScalingPolicyPredefinedMetricSpecification where
+  parseJSON (Object obj) =
+    AutoScalingScalingPolicyPredefinedMetricSpecification <$>
+      (obj .: "PredefinedMetricType") <*>
+      (obj .:? "ResourceLabel")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingScalingPolicyPredefinedMetricSpecification'
+-- containing required fields as arguments.
+autoScalingScalingPolicyPredefinedMetricSpecification
+  :: Val Text -- ^ 'assppmsPredefinedMetricType'
+  -> AutoScalingScalingPolicyPredefinedMetricSpecification
+autoScalingScalingPolicyPredefinedMetricSpecification predefinedMetricTypearg =
+  AutoScalingScalingPolicyPredefinedMetricSpecification
+  { _autoScalingScalingPolicyPredefinedMetricSpecificationPredefinedMetricType = predefinedMetricTypearg
+  , _autoScalingScalingPolicyPredefinedMetricSpecificationResourceLabel = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predefinedmetricspecification.html#cfn-autoscaling-scalingpolicy-predefinedmetricspecification-predefinedmetrictype
+assppmsPredefinedMetricType :: Lens' AutoScalingScalingPolicyPredefinedMetricSpecification (Val Text)
+assppmsPredefinedMetricType = lens _autoScalingScalingPolicyPredefinedMetricSpecificationPredefinedMetricType (\s a -> s { _autoScalingScalingPolicyPredefinedMetricSpecificationPredefinedMetricType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predefinedmetricspecification.html#cfn-autoscaling-scalingpolicy-predefinedmetricspecification-resourcelabel
+assppmsResourceLabel :: Lens' AutoScalingScalingPolicyPredefinedMetricSpecification (Maybe (Val Text))
+assppmsResourceLabel = lens _autoScalingScalingPolicyPredefinedMetricSpecificationResourceLabel (\s a -> s { _autoScalingScalingPolicyPredefinedMetricSpecificationResourceLabel = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyTargetTrackingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyTargetTrackingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyTargetTrackingConfiguration.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html
+
+module Stratosphere.ResourceProperties.AutoScalingScalingPolicyTargetTrackingConfiguration where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.AutoScalingScalingPolicyCustomizedMetricSpecification
+import Stratosphere.ResourceProperties.AutoScalingScalingPolicyPredefinedMetricSpecification
+
+-- | Full data type definition for
+-- AutoScalingScalingPolicyTargetTrackingConfiguration. See
+-- 'autoScalingScalingPolicyTargetTrackingConfiguration' for a more
+-- convenient constructor.
+data AutoScalingScalingPolicyTargetTrackingConfiguration =
+  AutoScalingScalingPolicyTargetTrackingConfiguration
+  { _autoScalingScalingPolicyTargetTrackingConfigurationCustomizedMetricSpecification :: Maybe AutoScalingScalingPolicyCustomizedMetricSpecification
+  , _autoScalingScalingPolicyTargetTrackingConfigurationDisableScaleIn :: Maybe (Val Bool)
+  , _autoScalingScalingPolicyTargetTrackingConfigurationPredefinedMetricSpecification :: Maybe AutoScalingScalingPolicyPredefinedMetricSpecification
+  , _autoScalingScalingPolicyTargetTrackingConfigurationTargetValue :: Val Double
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingScalingPolicyTargetTrackingConfiguration where
+  toJSON AutoScalingScalingPolicyTargetTrackingConfiguration{..} =
+    object $
+    catMaybes
+    [ fmap (("CustomizedMetricSpecification",) . toJSON) _autoScalingScalingPolicyTargetTrackingConfigurationCustomizedMetricSpecification
+    , fmap (("DisableScaleIn",) . toJSON . fmap Bool') _autoScalingScalingPolicyTargetTrackingConfigurationDisableScaleIn
+    , fmap (("PredefinedMetricSpecification",) . toJSON) _autoScalingScalingPolicyTargetTrackingConfigurationPredefinedMetricSpecification
+    , (Just . ("TargetValue",) . toJSON . fmap Double') _autoScalingScalingPolicyTargetTrackingConfigurationTargetValue
+    ]
+
+instance FromJSON AutoScalingScalingPolicyTargetTrackingConfiguration where
+  parseJSON (Object obj) =
+    AutoScalingScalingPolicyTargetTrackingConfiguration <$>
+      (obj .:? "CustomizedMetricSpecification") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DisableScaleIn") <*>
+      (obj .:? "PredefinedMetricSpecification") <*>
+      fmap (fmap unDouble') (obj .: "TargetValue")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingScalingPolicyTargetTrackingConfiguration'
+-- containing required fields as arguments.
+autoScalingScalingPolicyTargetTrackingConfiguration
+  :: Val Double -- ^ 'asspttcTargetValue'
+  -> AutoScalingScalingPolicyTargetTrackingConfiguration
+autoScalingScalingPolicyTargetTrackingConfiguration targetValuearg =
+  AutoScalingScalingPolicyTargetTrackingConfiguration
+  { _autoScalingScalingPolicyTargetTrackingConfigurationCustomizedMetricSpecification = Nothing
+  , _autoScalingScalingPolicyTargetTrackingConfigurationDisableScaleIn = Nothing
+  , _autoScalingScalingPolicyTargetTrackingConfigurationPredefinedMetricSpecification = Nothing
+  , _autoScalingScalingPolicyTargetTrackingConfigurationTargetValue = targetValuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration-customizedmetricspecification
+asspttcCustomizedMetricSpecification :: Lens' AutoScalingScalingPolicyTargetTrackingConfiguration (Maybe AutoScalingScalingPolicyCustomizedMetricSpecification)
+asspttcCustomizedMetricSpecification = lens _autoScalingScalingPolicyTargetTrackingConfigurationCustomizedMetricSpecification (\s a -> s { _autoScalingScalingPolicyTargetTrackingConfigurationCustomizedMetricSpecification = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration-disablescalein
+asspttcDisableScaleIn :: Lens' AutoScalingScalingPolicyTargetTrackingConfiguration (Maybe (Val Bool))
+asspttcDisableScaleIn = lens _autoScalingScalingPolicyTargetTrackingConfigurationDisableScaleIn (\s a -> s { _autoScalingScalingPolicyTargetTrackingConfigurationDisableScaleIn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration-predefinedmetricspecification
+asspttcPredefinedMetricSpecification :: Lens' AutoScalingScalingPolicyTargetTrackingConfiguration (Maybe AutoScalingScalingPolicyPredefinedMetricSpecification)
+asspttcPredefinedMetricSpecification = lens _autoScalingScalingPolicyTargetTrackingConfigurationPredefinedMetricSpecification (\s a -> s { _autoScalingScalingPolicyTargetTrackingConfigurationPredefinedMetricSpecification = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration-targetvalue
+asspttcTargetValue :: Lens' AutoScalingScalingPolicyTargetTrackingConfiguration (Val Double)
+asspttcTargetValue = lens _autoScalingScalingPolicyTargetTrackingConfigurationTargetValue (\s a -> s { _autoScalingScalingPolicyTargetTrackingConfigurationTargetValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudTrailTrailDataResource.hs b/library-gen/Stratosphere/ResourceProperties/CloudTrailTrailDataResource.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CloudTrailTrailDataResource.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-dataresource.html
+
+module Stratosphere.ResourceProperties.CloudTrailTrailDataResource where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for CloudTrailTrailDataResource. See
+-- 'cloudTrailTrailDataResource' for a more convenient constructor.
+data CloudTrailTrailDataResource =
+  CloudTrailTrailDataResource
+  { _cloudTrailTrailDataResourceType :: Val Text
+  , _cloudTrailTrailDataResourceValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON CloudTrailTrailDataResource where
+  toJSON CloudTrailTrailDataResource{..} =
+    object $
+    catMaybes
+    [ (Just . ("Type",) . toJSON) _cloudTrailTrailDataResourceType
+    , fmap (("Values",) . toJSON) _cloudTrailTrailDataResourceValues
+    ]
+
+instance FromJSON CloudTrailTrailDataResource where
+  parseJSON (Object obj) =
+    CloudTrailTrailDataResource <$>
+      (obj .: "Type") <*>
+      (obj .:? "Values")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CloudTrailTrailDataResource' containing required fields
+-- as arguments.
+cloudTrailTrailDataResource
+  :: Val Text -- ^ 'cttdrType'
+  -> CloudTrailTrailDataResource
+cloudTrailTrailDataResource typearg =
+  CloudTrailTrailDataResource
+  { _cloudTrailTrailDataResourceType = typearg
+  , _cloudTrailTrailDataResourceValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-dataresource.html#cfn-cloudtrail-trail-dataresource-type
+cttdrType :: Lens' CloudTrailTrailDataResource (Val Text)
+cttdrType = lens _cloudTrailTrailDataResourceType (\s a -> s { _cloudTrailTrailDataResourceType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-dataresource.html#cfn-cloudtrail-trail-dataresource-values
+cttdrValues :: Lens' CloudTrailTrailDataResource (Maybe (ValList Text))
+cttdrValues = lens _cloudTrailTrailDataResourceValues (\s a -> s { _cloudTrailTrailDataResourceValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudTrailTrailEventSelector.hs b/library-gen/Stratosphere/ResourceProperties/CloudTrailTrailEventSelector.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CloudTrailTrailEventSelector.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-eventselector.html
+
+module Stratosphere.ResourceProperties.CloudTrailTrailEventSelector where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.CloudTrailTrailDataResource
+
+-- | Full data type definition for CloudTrailTrailEventSelector. See
+-- 'cloudTrailTrailEventSelector' for a more convenient constructor.
+data CloudTrailTrailEventSelector =
+  CloudTrailTrailEventSelector
+  { _cloudTrailTrailEventSelectorDataResources :: Maybe [CloudTrailTrailDataResource]
+  , _cloudTrailTrailEventSelectorIncludeManagementEvents :: Maybe (Val Bool)
+  , _cloudTrailTrailEventSelectorReadWriteType :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON CloudTrailTrailEventSelector where
+  toJSON CloudTrailTrailEventSelector{..} =
+    object $
+    catMaybes
+    [ fmap (("DataResources",) . toJSON) _cloudTrailTrailEventSelectorDataResources
+    , fmap (("IncludeManagementEvents",) . toJSON . fmap Bool') _cloudTrailTrailEventSelectorIncludeManagementEvents
+    , fmap (("ReadWriteType",) . toJSON) _cloudTrailTrailEventSelectorReadWriteType
+    ]
+
+instance FromJSON CloudTrailTrailEventSelector where
+  parseJSON (Object obj) =
+    CloudTrailTrailEventSelector <$>
+      (obj .:? "DataResources") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IncludeManagementEvents") <*>
+      (obj .:? "ReadWriteType")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CloudTrailTrailEventSelector' containing required fields
+-- as arguments.
+cloudTrailTrailEventSelector
+  :: CloudTrailTrailEventSelector
+cloudTrailTrailEventSelector  =
+  CloudTrailTrailEventSelector
+  { _cloudTrailTrailEventSelectorDataResources = Nothing
+  , _cloudTrailTrailEventSelectorIncludeManagementEvents = Nothing
+  , _cloudTrailTrailEventSelectorReadWriteType = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-eventselector.html#cfn-cloudtrail-trail-eventselector-dataresources
+cttesDataResources :: Lens' CloudTrailTrailEventSelector (Maybe [CloudTrailTrailDataResource])
+cttesDataResources = lens _cloudTrailTrailEventSelectorDataResources (\s a -> s { _cloudTrailTrailEventSelectorDataResources = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-eventselector.html#cfn-cloudtrail-trail-eventselector-includemanagementevents
+cttesIncludeManagementEvents :: Lens' CloudTrailTrailEventSelector (Maybe (Val Bool))
+cttesIncludeManagementEvents = lens _cloudTrailTrailEventSelectorIncludeManagementEvents (\s a -> s { _cloudTrailTrailEventSelectorIncludeManagementEvents = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-eventselector.html#cfn-cloudtrail-trail-eventselector-readwritetype
+cttesReadWriteType :: Lens' CloudTrailTrailEventSelector (Maybe (Val Text))
+cttesReadWriteType = lens _cloudTrailTrailEventSelectorReadWriteType (\s a -> s { _cloudTrailTrailEventSelectorReadWriteType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetRequestConfigData.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetRequestConfigData.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetRequestConfigData.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetRequestConfigData.hs
@@ -24,9 +24,11 @@
   , _eC2SpotFleetSpotFleetRequestConfigDataExcessCapacityTerminationPolicy :: Maybe (Val Text)
   , _eC2SpotFleetSpotFleetRequestConfigDataIamFleetRole :: Val Text
   , _eC2SpotFleetSpotFleetRequestConfigDataLaunchSpecifications :: [EC2SpotFleetSpotFleetLaunchSpecification]
+  , _eC2SpotFleetSpotFleetRequestConfigDataReplaceUnhealthyInstances :: Maybe (Val Bool)
   , _eC2SpotFleetSpotFleetRequestConfigDataSpotPrice :: Val Text
   , _eC2SpotFleetSpotFleetRequestConfigDataTargetCapacity :: Val Integer
   , _eC2SpotFleetSpotFleetRequestConfigDataTerminateInstancesWithExpiration :: Maybe (Val Bool)
+  , _eC2SpotFleetSpotFleetRequestConfigDataType :: Maybe (Val Text)
   , _eC2SpotFleetSpotFleetRequestConfigDataValidFrom :: Maybe (Val Text)
   , _eC2SpotFleetSpotFleetRequestConfigDataValidUntil :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -39,9 +41,11 @@
     , fmap (("ExcessCapacityTerminationPolicy",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataExcessCapacityTerminationPolicy
     , (Just . ("IamFleetRole",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataIamFleetRole
     , (Just . ("LaunchSpecifications",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataLaunchSpecifications
+    , fmap (("ReplaceUnhealthyInstances",) . toJSON . fmap Bool') _eC2SpotFleetSpotFleetRequestConfigDataReplaceUnhealthyInstances
     , (Just . ("SpotPrice",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataSpotPrice
     , (Just . ("TargetCapacity",) . toJSON . fmap Integer') _eC2SpotFleetSpotFleetRequestConfigDataTargetCapacity
     , fmap (("TerminateInstancesWithExpiration",) . toJSON . fmap Bool') _eC2SpotFleetSpotFleetRequestConfigDataTerminateInstancesWithExpiration
+    , fmap (("Type",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataType
     , fmap (("ValidFrom",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataValidFrom
     , fmap (("ValidUntil",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataValidUntil
     ]
@@ -53,9 +57,11 @@
       (obj .:? "ExcessCapacityTerminationPolicy") <*>
       (obj .: "IamFleetRole") <*>
       (obj .: "LaunchSpecifications") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "ReplaceUnhealthyInstances") <*>
       (obj .: "SpotPrice") <*>
       fmap (fmap unInteger') (obj .: "TargetCapacity") <*>
       fmap (fmap (fmap unBool')) (obj .:? "TerminateInstancesWithExpiration") <*>
+      (obj .:? "Type") <*>
       (obj .:? "ValidFrom") <*>
       (obj .:? "ValidUntil")
   parseJSON _ = mempty
@@ -74,9 +80,11 @@
   , _eC2SpotFleetSpotFleetRequestConfigDataExcessCapacityTerminationPolicy = Nothing
   , _eC2SpotFleetSpotFleetRequestConfigDataIamFleetRole = iamFleetRolearg
   , _eC2SpotFleetSpotFleetRequestConfigDataLaunchSpecifications = launchSpecificationsarg
+  , _eC2SpotFleetSpotFleetRequestConfigDataReplaceUnhealthyInstances = Nothing
   , _eC2SpotFleetSpotFleetRequestConfigDataSpotPrice = spotPricearg
   , _eC2SpotFleetSpotFleetRequestConfigDataTargetCapacity = targetCapacityarg
   , _eC2SpotFleetSpotFleetRequestConfigDataTerminateInstancesWithExpiration = Nothing
+  , _eC2SpotFleetSpotFleetRequestConfigDataType = Nothing
   , _eC2SpotFleetSpotFleetRequestConfigDataValidFrom = Nothing
   , _eC2SpotFleetSpotFleetRequestConfigDataValidUntil = Nothing
   }
@@ -97,6 +105,10 @@
 ecsfsfrcdLaunchSpecifications :: Lens' EC2SpotFleetSpotFleetRequestConfigData [EC2SpotFleetSpotFleetLaunchSpecification]
 ecsfsfrcdLaunchSpecifications = lens _eC2SpotFleetSpotFleetRequestConfigDataLaunchSpecifications (\s a -> s { _eC2SpotFleetSpotFleetRequestConfigDataLaunchSpecifications = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-replaceunhealthyinstances
+ecsfsfrcdReplaceUnhealthyInstances :: Lens' EC2SpotFleetSpotFleetRequestConfigData (Maybe (Val Bool))
+ecsfsfrcdReplaceUnhealthyInstances = lens _eC2SpotFleetSpotFleetRequestConfigDataReplaceUnhealthyInstances (\s a -> s { _eC2SpotFleetSpotFleetRequestConfigDataReplaceUnhealthyInstances = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-spotprice
 ecsfsfrcdSpotPrice :: Lens' EC2SpotFleetSpotFleetRequestConfigData (Val Text)
 ecsfsfrcdSpotPrice = lens _eC2SpotFleetSpotFleetRequestConfigDataSpotPrice (\s a -> s { _eC2SpotFleetSpotFleetRequestConfigDataSpotPrice = a })
@@ -108,6 +120,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-terminateinstanceswithexpiration
 ecsfsfrcdTerminateInstancesWithExpiration :: Lens' EC2SpotFleetSpotFleetRequestConfigData (Maybe (Val Bool))
 ecsfsfrcdTerminateInstancesWithExpiration = lens _eC2SpotFleetSpotFleetRequestConfigDataTerminateInstancesWithExpiration (\s a -> s { _eC2SpotFleetSpotFleetRequestConfigDataTerminateInstancesWithExpiration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-type
+ecsfsfrcdType :: Lens' EC2SpotFleetSpotFleetRequestConfigData (Maybe (Val Text))
+ecsfsfrcdType = lens _eC2SpotFleetSpotFleetRequestConfigDataType (\s a -> s { _eC2SpotFleetSpotFleetRequestConfigDataType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-validfrom
 ecsfsfrcdValidFrom :: Lens' EC2SpotFleetSpotFleetRequestConfigData (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleDynamoDBAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleDynamoDBAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleDynamoDBAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleDynamoDBAction.hs
@@ -20,9 +20,11 @@
 data IoTTopicRuleDynamoDBAction =
   IoTTopicRuleDynamoDBAction
   { _ioTTopicRuleDynamoDBActionHashKeyField :: Val Text
+  , _ioTTopicRuleDynamoDBActionHashKeyType :: Maybe (Val Text)
   , _ioTTopicRuleDynamoDBActionHashKeyValue :: Val Text
   , _ioTTopicRuleDynamoDBActionPayloadField :: Maybe (Val Text)
   , _ioTTopicRuleDynamoDBActionRangeKeyField :: Val Text
+  , _ioTTopicRuleDynamoDBActionRangeKeyType :: Maybe (Val Text)
   , _ioTTopicRuleDynamoDBActionRangeKeyValue :: Val Text
   , _ioTTopicRuleDynamoDBActionRoleArn :: Val Text
   , _ioTTopicRuleDynamoDBActionTableName :: Val Text
@@ -33,9 +35,11 @@
     object $
     catMaybes
     [ (Just . ("HashKeyField",) . toJSON) _ioTTopicRuleDynamoDBActionHashKeyField
+    , fmap (("HashKeyType",) . toJSON) _ioTTopicRuleDynamoDBActionHashKeyType
     , (Just . ("HashKeyValue",) . toJSON) _ioTTopicRuleDynamoDBActionHashKeyValue
     , fmap (("PayloadField",) . toJSON) _ioTTopicRuleDynamoDBActionPayloadField
     , (Just . ("RangeKeyField",) . toJSON) _ioTTopicRuleDynamoDBActionRangeKeyField
+    , fmap (("RangeKeyType",) . toJSON) _ioTTopicRuleDynamoDBActionRangeKeyType
     , (Just . ("RangeKeyValue",) . toJSON) _ioTTopicRuleDynamoDBActionRangeKeyValue
     , (Just . ("RoleArn",) . toJSON) _ioTTopicRuleDynamoDBActionRoleArn
     , (Just . ("TableName",) . toJSON) _ioTTopicRuleDynamoDBActionTableName
@@ -45,9 +49,11 @@
   parseJSON (Object obj) =
     IoTTopicRuleDynamoDBAction <$>
       (obj .: "HashKeyField") <*>
+      (obj .:? "HashKeyType") <*>
       (obj .: "HashKeyValue") <*>
       (obj .:? "PayloadField") <*>
       (obj .: "RangeKeyField") <*>
+      (obj .:? "RangeKeyType") <*>
       (obj .: "RangeKeyValue") <*>
       (obj .: "RoleArn") <*>
       (obj .: "TableName")
@@ -66,9 +72,11 @@
 ioTTopicRuleDynamoDBAction hashKeyFieldarg hashKeyValuearg rangeKeyFieldarg rangeKeyValuearg roleArnarg tableNamearg =
   IoTTopicRuleDynamoDBAction
   { _ioTTopicRuleDynamoDBActionHashKeyField = hashKeyFieldarg
+  , _ioTTopicRuleDynamoDBActionHashKeyType = Nothing
   , _ioTTopicRuleDynamoDBActionHashKeyValue = hashKeyValuearg
   , _ioTTopicRuleDynamoDBActionPayloadField = Nothing
   , _ioTTopicRuleDynamoDBActionRangeKeyField = rangeKeyFieldarg
+  , _ioTTopicRuleDynamoDBActionRangeKeyType = Nothing
   , _ioTTopicRuleDynamoDBActionRangeKeyValue = rangeKeyValuearg
   , _ioTTopicRuleDynamoDBActionRoleArn = roleArnarg
   , _ioTTopicRuleDynamoDBActionTableName = tableNamearg
@@ -78,6 +86,10 @@
 ittrddbaHashKeyField :: Lens' IoTTopicRuleDynamoDBAction (Val Text)
 ittrddbaHashKeyField = lens _ioTTopicRuleDynamoDBActionHashKeyField (\s a -> s { _ioTTopicRuleDynamoDBActionHashKeyField = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-dynamodb.html#cfn-iot-dynamodb-hashkeytype
+ittrddbaHashKeyType :: Lens' IoTTopicRuleDynamoDBAction (Maybe (Val Text))
+ittrddbaHashKeyType = lens _ioTTopicRuleDynamoDBActionHashKeyType (\s a -> s { _ioTTopicRuleDynamoDBActionHashKeyType = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-dynamodb.html#cfn-iot-dynamodb-hashkeyvalue
 ittrddbaHashKeyValue :: Lens' IoTTopicRuleDynamoDBAction (Val Text)
 ittrddbaHashKeyValue = lens _ioTTopicRuleDynamoDBActionHashKeyValue (\s a -> s { _ioTTopicRuleDynamoDBActionHashKeyValue = a })
@@ -89,6 +101,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-dynamodb.html#cfn-iot-dynamodb-rangekeyfield
 ittrddbaRangeKeyField :: Lens' IoTTopicRuleDynamoDBAction (Val Text)
 ittrddbaRangeKeyField = lens _ioTTopicRuleDynamoDBActionRangeKeyField (\s a -> s { _ioTTopicRuleDynamoDBActionRangeKeyField = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-dynamodb.html#cfn-iot-dynamodb-rangeKeytype
+ittrddbaRangeKeyType :: Lens' IoTTopicRuleDynamoDBAction (Maybe (Val Text))
+ittrddbaRangeKeyType = lens _ioTTopicRuleDynamoDBActionRangeKeyType (\s a -> s { _ioTTopicRuleDynamoDBActionRangeKeyType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-dynamodb.html#cfn-iot-dynamodb-rangekeyvalue
 ittrddbaRangeKeyValue :: Lens' IoTTopicRuleDynamoDBAction (Val Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationCSVMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationCSVMappingParameters.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationCSVMappingParameters.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-csvmappingparameters.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationCSVMappingParameters where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationCSVMappingParameters. See
+-- 'kinesisAnalyticsApplicationCSVMappingParameters' for a more convenient
+-- constructor.
+data KinesisAnalyticsApplicationCSVMappingParameters =
+  KinesisAnalyticsApplicationCSVMappingParameters
+  { _kinesisAnalyticsApplicationCSVMappingParametersRecordColumnDelimiter :: Val Text
+  , _kinesisAnalyticsApplicationCSVMappingParametersRecordRowDelimiter :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationCSVMappingParameters where
+  toJSON KinesisAnalyticsApplicationCSVMappingParameters{..} =
+    object $
+    catMaybes
+    [ (Just . ("RecordColumnDelimiter",) . toJSON) _kinesisAnalyticsApplicationCSVMappingParametersRecordColumnDelimiter
+    , (Just . ("RecordRowDelimiter",) . toJSON) _kinesisAnalyticsApplicationCSVMappingParametersRecordRowDelimiter
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationCSVMappingParameters where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationCSVMappingParameters <$>
+      (obj .: "RecordColumnDelimiter") <*>
+      (obj .: "RecordRowDelimiter")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationCSVMappingParameters'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationCSVMappingParameters
+  :: Val Text -- ^ 'kaacsvmpRecordColumnDelimiter'
+  -> Val Text -- ^ 'kaacsvmpRecordRowDelimiter'
+  -> KinesisAnalyticsApplicationCSVMappingParameters
+kinesisAnalyticsApplicationCSVMappingParameters recordColumnDelimiterarg recordRowDelimiterarg =
+  KinesisAnalyticsApplicationCSVMappingParameters
+  { _kinesisAnalyticsApplicationCSVMappingParametersRecordColumnDelimiter = recordColumnDelimiterarg
+  , _kinesisAnalyticsApplicationCSVMappingParametersRecordRowDelimiter = recordRowDelimiterarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-csvmappingparameters.html#cfn-kinesisanalytics-application-csvmappingparameters-recordcolumndelimiter
+kaacsvmpRecordColumnDelimiter :: Lens' KinesisAnalyticsApplicationCSVMappingParameters (Val Text)
+kaacsvmpRecordColumnDelimiter = lens _kinesisAnalyticsApplicationCSVMappingParametersRecordColumnDelimiter (\s a -> s { _kinesisAnalyticsApplicationCSVMappingParametersRecordColumnDelimiter = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-csvmappingparameters.html#cfn-kinesisanalytics-application-csvmappingparameters-recordrowdelimiter
+kaacsvmpRecordRowDelimiter :: Lens' KinesisAnalyticsApplicationCSVMappingParameters (Val Text)
+kaacsvmpRecordRowDelimiter = lens _kinesisAnalyticsApplicationCSVMappingParametersRecordRowDelimiter (\s a -> s { _kinesisAnalyticsApplicationCSVMappingParametersRecordRowDelimiter = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInput.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInput.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInput where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputParallelism
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputSchema
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationKinesisFirehoseInput
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationKinesisStreamsInput
+
+-- | Full data type definition for KinesisAnalyticsApplicationInput. See
+-- 'kinesisAnalyticsApplicationInput' for a more convenient constructor.
+data KinesisAnalyticsApplicationInput =
+  KinesisAnalyticsApplicationInput
+  { _kinesisAnalyticsApplicationInputInputParallelism :: Maybe KinesisAnalyticsApplicationInputParallelism
+  , _kinesisAnalyticsApplicationInputInputSchema :: KinesisAnalyticsApplicationInputSchema
+  , _kinesisAnalyticsApplicationInputKinesisFirehoseInput :: Maybe KinesisAnalyticsApplicationKinesisFirehoseInput
+  , _kinesisAnalyticsApplicationInputKinesisStreamsInput :: Maybe KinesisAnalyticsApplicationKinesisStreamsInput
+  , _kinesisAnalyticsApplicationInputNamePrefix :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationInput where
+  toJSON KinesisAnalyticsApplicationInput{..} =
+    object $
+    catMaybes
+    [ fmap (("InputParallelism",) . toJSON) _kinesisAnalyticsApplicationInputInputParallelism
+    , (Just . ("InputSchema",) . toJSON) _kinesisAnalyticsApplicationInputInputSchema
+    , fmap (("KinesisFirehoseInput",) . toJSON) _kinesisAnalyticsApplicationInputKinesisFirehoseInput
+    , fmap (("KinesisStreamsInput",) . toJSON) _kinesisAnalyticsApplicationInputKinesisStreamsInput
+    , (Just . ("NamePrefix",) . toJSON) _kinesisAnalyticsApplicationInputNamePrefix
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationInput where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationInput <$>
+      (obj .:? "InputParallelism") <*>
+      (obj .: "InputSchema") <*>
+      (obj .:? "KinesisFirehoseInput") <*>
+      (obj .:? "KinesisStreamsInput") <*>
+      (obj .: "NamePrefix")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationInput' containing required
+-- fields as arguments.
+kinesisAnalyticsApplicationInput
+  :: KinesisAnalyticsApplicationInputSchema -- ^ 'kaaiInputSchema'
+  -> Val Text -- ^ 'kaaiNamePrefix'
+  -> KinesisAnalyticsApplicationInput
+kinesisAnalyticsApplicationInput inputSchemaarg namePrefixarg =
+  KinesisAnalyticsApplicationInput
+  { _kinesisAnalyticsApplicationInputInputParallelism = Nothing
+  , _kinesisAnalyticsApplicationInputInputSchema = inputSchemaarg
+  , _kinesisAnalyticsApplicationInputKinesisFirehoseInput = Nothing
+  , _kinesisAnalyticsApplicationInputKinesisStreamsInput = Nothing
+  , _kinesisAnalyticsApplicationInputNamePrefix = namePrefixarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html#cfn-kinesisanalytics-application-input-inputparallelism
+kaaiInputParallelism :: Lens' KinesisAnalyticsApplicationInput (Maybe KinesisAnalyticsApplicationInputParallelism)
+kaaiInputParallelism = lens _kinesisAnalyticsApplicationInputInputParallelism (\s a -> s { _kinesisAnalyticsApplicationInputInputParallelism = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html#cfn-kinesisanalytics-application-input-inputschema
+kaaiInputSchema :: Lens' KinesisAnalyticsApplicationInput KinesisAnalyticsApplicationInputSchema
+kaaiInputSchema = lens _kinesisAnalyticsApplicationInputInputSchema (\s a -> s { _kinesisAnalyticsApplicationInputInputSchema = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html#cfn-kinesisanalytics-application-input-kinesisfirehoseinput
+kaaiKinesisFirehoseInput :: Lens' KinesisAnalyticsApplicationInput (Maybe KinesisAnalyticsApplicationKinesisFirehoseInput)
+kaaiKinesisFirehoseInput = lens _kinesisAnalyticsApplicationInputKinesisFirehoseInput (\s a -> s { _kinesisAnalyticsApplicationInputKinesisFirehoseInput = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html#cfn-kinesisanalytics-application-input-kinesisstreamsinput
+kaaiKinesisStreamsInput :: Lens' KinesisAnalyticsApplicationInput (Maybe KinesisAnalyticsApplicationKinesisStreamsInput)
+kaaiKinesisStreamsInput = lens _kinesisAnalyticsApplicationInputKinesisStreamsInput (\s a -> s { _kinesisAnalyticsApplicationInputKinesisStreamsInput = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html#cfn-kinesisanalytics-application-input-nameprefix
+kaaiNamePrefix :: Lens' KinesisAnalyticsApplicationInput (Val Text)
+kaaiNamePrefix = lens _kinesisAnalyticsApplicationInputNamePrefix (\s a -> s { _kinesisAnalyticsApplicationInputNamePrefix = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputParallelism.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputParallelism.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputParallelism.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputparallelism.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputParallelism where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationInputParallelism. See
+-- 'kinesisAnalyticsApplicationInputParallelism' for a more convenient
+-- constructor.
+data KinesisAnalyticsApplicationInputParallelism =
+  KinesisAnalyticsApplicationInputParallelism
+  { _kinesisAnalyticsApplicationInputParallelismCount :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationInputParallelism where
+  toJSON KinesisAnalyticsApplicationInputParallelism{..} =
+    object $
+    catMaybes
+    [ fmap (("Count",) . toJSON . fmap Integer') _kinesisAnalyticsApplicationInputParallelismCount
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationInputParallelism where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationInputParallelism <$>
+      fmap (fmap (fmap unInteger')) (obj .:? "Count")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationInputParallelism' containing
+-- required fields as arguments.
+kinesisAnalyticsApplicationInputParallelism
+  :: KinesisAnalyticsApplicationInputParallelism
+kinesisAnalyticsApplicationInputParallelism  =
+  KinesisAnalyticsApplicationInputParallelism
+  { _kinesisAnalyticsApplicationInputParallelismCount = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputparallelism.html#cfn-kinesisanalytics-application-inputparallelism-count
+kaaipCount :: Lens' KinesisAnalyticsApplicationInputParallelism (Maybe (Val Integer))
+kaaipCount = lens _kinesisAnalyticsApplicationInputParallelismCount (\s a -> s { _kinesisAnalyticsApplicationInputParallelismCount = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputSchema.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputSchema.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputSchema.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputschema.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputSchema where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationRecordColumn
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationRecordFormat
+
+-- | Full data type definition for KinesisAnalyticsApplicationInputSchema. See
+-- 'kinesisAnalyticsApplicationInputSchema' for a more convenient
+-- constructor.
+data KinesisAnalyticsApplicationInputSchema =
+  KinesisAnalyticsApplicationInputSchema
+  { _kinesisAnalyticsApplicationInputSchemaRecordColumns :: [KinesisAnalyticsApplicationRecordColumn]
+  , _kinesisAnalyticsApplicationInputSchemaRecordEncoding :: Maybe (Val Text)
+  , _kinesisAnalyticsApplicationInputSchemaRecordFormat :: KinesisAnalyticsApplicationRecordFormat
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationInputSchema where
+  toJSON KinesisAnalyticsApplicationInputSchema{..} =
+    object $
+    catMaybes
+    [ (Just . ("RecordColumns",) . toJSON) _kinesisAnalyticsApplicationInputSchemaRecordColumns
+    , fmap (("RecordEncoding",) . toJSON) _kinesisAnalyticsApplicationInputSchemaRecordEncoding
+    , (Just . ("RecordFormat",) . toJSON) _kinesisAnalyticsApplicationInputSchemaRecordFormat
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationInputSchema where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationInputSchema <$>
+      (obj .: "RecordColumns") <*>
+      (obj .:? "RecordEncoding") <*>
+      (obj .: "RecordFormat")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationInputSchema' containing
+-- required fields as arguments.
+kinesisAnalyticsApplicationInputSchema
+  :: [KinesisAnalyticsApplicationRecordColumn] -- ^ 'kaaisRecordColumns'
+  -> KinesisAnalyticsApplicationRecordFormat -- ^ 'kaaisRecordFormat'
+  -> KinesisAnalyticsApplicationInputSchema
+kinesisAnalyticsApplicationInputSchema recordColumnsarg recordFormatarg =
+  KinesisAnalyticsApplicationInputSchema
+  { _kinesisAnalyticsApplicationInputSchemaRecordColumns = recordColumnsarg
+  , _kinesisAnalyticsApplicationInputSchemaRecordEncoding = Nothing
+  , _kinesisAnalyticsApplicationInputSchemaRecordFormat = recordFormatarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputschema.html#cfn-kinesisanalytics-application-inputschema-recordcolumns
+kaaisRecordColumns :: Lens' KinesisAnalyticsApplicationInputSchema [KinesisAnalyticsApplicationRecordColumn]
+kaaisRecordColumns = lens _kinesisAnalyticsApplicationInputSchemaRecordColumns (\s a -> s { _kinesisAnalyticsApplicationInputSchemaRecordColumns = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputschema.html#cfn-kinesisanalytics-application-inputschema-recordencoding
+kaaisRecordEncoding :: Lens' KinesisAnalyticsApplicationInputSchema (Maybe (Val Text))
+kaaisRecordEncoding = lens _kinesisAnalyticsApplicationInputSchemaRecordEncoding (\s a -> s { _kinesisAnalyticsApplicationInputSchemaRecordEncoding = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputschema.html#cfn-kinesisanalytics-application-inputschema-recordformat
+kaaisRecordFormat :: Lens' KinesisAnalyticsApplicationInputSchema KinesisAnalyticsApplicationRecordFormat
+kaaisRecordFormat = lens _kinesisAnalyticsApplicationInputSchemaRecordFormat (\s a -> s { _kinesisAnalyticsApplicationInputSchemaRecordFormat = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationJSONMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationJSONMappingParameters.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationJSONMappingParameters.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-jsonmappingparameters.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationJSONMappingParameters where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationJSONMappingParameters. See
+-- 'kinesisAnalyticsApplicationJSONMappingParameters' for a more convenient
+-- constructor.
+data KinesisAnalyticsApplicationJSONMappingParameters =
+  KinesisAnalyticsApplicationJSONMappingParameters
+  { _kinesisAnalyticsApplicationJSONMappingParametersRecordRowPath :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationJSONMappingParameters where
+  toJSON KinesisAnalyticsApplicationJSONMappingParameters{..} =
+    object $
+    catMaybes
+    [ (Just . ("RecordRowPath",) . toJSON) _kinesisAnalyticsApplicationJSONMappingParametersRecordRowPath
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationJSONMappingParameters where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationJSONMappingParameters <$>
+      (obj .: "RecordRowPath")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationJSONMappingParameters'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationJSONMappingParameters
+  :: Val Text -- ^ 'kaajsonmpRecordRowPath'
+  -> KinesisAnalyticsApplicationJSONMappingParameters
+kinesisAnalyticsApplicationJSONMappingParameters recordRowPatharg =
+  KinesisAnalyticsApplicationJSONMappingParameters
+  { _kinesisAnalyticsApplicationJSONMappingParametersRecordRowPath = recordRowPatharg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-jsonmappingparameters.html#cfn-kinesisanalytics-application-jsonmappingparameters-recordrowpath
+kaajsonmpRecordRowPath :: Lens' KinesisAnalyticsApplicationJSONMappingParameters (Val Text)
+kaajsonmpRecordRowPath = lens _kinesisAnalyticsApplicationJSONMappingParametersRecordRowPath (\s a -> s { _kinesisAnalyticsApplicationJSONMappingParametersRecordRowPath = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationKinesisFirehoseInput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationKinesisFirehoseInput.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationKinesisFirehoseInput.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-kinesisfirehoseinput.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationKinesisFirehoseInput where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationKinesisFirehoseInput. See
+-- 'kinesisAnalyticsApplicationKinesisFirehoseInput' for a more convenient
+-- constructor.
+data KinesisAnalyticsApplicationKinesisFirehoseInput =
+  KinesisAnalyticsApplicationKinesisFirehoseInput
+  { _kinesisAnalyticsApplicationKinesisFirehoseInputResourceARN :: Val Text
+  , _kinesisAnalyticsApplicationKinesisFirehoseInputRoleARN :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationKinesisFirehoseInput where
+  toJSON KinesisAnalyticsApplicationKinesisFirehoseInput{..} =
+    object $
+    catMaybes
+    [ (Just . ("ResourceARN",) . toJSON) _kinesisAnalyticsApplicationKinesisFirehoseInputResourceARN
+    , (Just . ("RoleARN",) . toJSON) _kinesisAnalyticsApplicationKinesisFirehoseInputRoleARN
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationKinesisFirehoseInput where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationKinesisFirehoseInput <$>
+      (obj .: "ResourceARN") <*>
+      (obj .: "RoleARN")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationKinesisFirehoseInput'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationKinesisFirehoseInput
+  :: Val Text -- ^ 'kaakfiResourceARN'
+  -> Val Text -- ^ 'kaakfiRoleARN'
+  -> KinesisAnalyticsApplicationKinesisFirehoseInput
+kinesisAnalyticsApplicationKinesisFirehoseInput resourceARNarg roleARNarg =
+  KinesisAnalyticsApplicationKinesisFirehoseInput
+  { _kinesisAnalyticsApplicationKinesisFirehoseInputResourceARN = resourceARNarg
+  , _kinesisAnalyticsApplicationKinesisFirehoseInputRoleARN = roleARNarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-kinesisfirehoseinput.html#cfn-kinesisanalytics-application-kinesisfirehoseinput-resourcearn
+kaakfiResourceARN :: Lens' KinesisAnalyticsApplicationKinesisFirehoseInput (Val Text)
+kaakfiResourceARN = lens _kinesisAnalyticsApplicationKinesisFirehoseInputResourceARN (\s a -> s { _kinesisAnalyticsApplicationKinesisFirehoseInputResourceARN = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-kinesisfirehoseinput.html#cfn-kinesisanalytics-application-kinesisfirehoseinput-rolearn
+kaakfiRoleARN :: Lens' KinesisAnalyticsApplicationKinesisFirehoseInput (Val Text)
+kaakfiRoleARN = lens _kinesisAnalyticsApplicationKinesisFirehoseInputRoleARN (\s a -> s { _kinesisAnalyticsApplicationKinesisFirehoseInputRoleARN = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationKinesisStreamsInput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationKinesisStreamsInput.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationKinesisStreamsInput.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-kinesisstreamsinput.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationKinesisStreamsInput where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationKinesisStreamsInput. See
+-- 'kinesisAnalyticsApplicationKinesisStreamsInput' for a more convenient
+-- constructor.
+data KinesisAnalyticsApplicationKinesisStreamsInput =
+  KinesisAnalyticsApplicationKinesisStreamsInput
+  { _kinesisAnalyticsApplicationKinesisStreamsInputResourceARN :: Val Text
+  , _kinesisAnalyticsApplicationKinesisStreamsInputRoleARN :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationKinesisStreamsInput where
+  toJSON KinesisAnalyticsApplicationKinesisStreamsInput{..} =
+    object $
+    catMaybes
+    [ (Just . ("ResourceARN",) . toJSON) _kinesisAnalyticsApplicationKinesisStreamsInputResourceARN
+    , (Just . ("RoleARN",) . toJSON) _kinesisAnalyticsApplicationKinesisStreamsInputRoleARN
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationKinesisStreamsInput where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationKinesisStreamsInput <$>
+      (obj .: "ResourceARN") <*>
+      (obj .: "RoleARN")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationKinesisStreamsInput'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationKinesisStreamsInput
+  :: Val Text -- ^ 'kaaksiResourceARN'
+  -> Val Text -- ^ 'kaaksiRoleARN'
+  -> KinesisAnalyticsApplicationKinesisStreamsInput
+kinesisAnalyticsApplicationKinesisStreamsInput resourceARNarg roleARNarg =
+  KinesisAnalyticsApplicationKinesisStreamsInput
+  { _kinesisAnalyticsApplicationKinesisStreamsInputResourceARN = resourceARNarg
+  , _kinesisAnalyticsApplicationKinesisStreamsInputRoleARN = roleARNarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-kinesisstreamsinput.html#cfn-kinesisanalytics-application-kinesisstreamsinput-resourcearn
+kaaksiResourceARN :: Lens' KinesisAnalyticsApplicationKinesisStreamsInput (Val Text)
+kaaksiResourceARN = lens _kinesisAnalyticsApplicationKinesisStreamsInputResourceARN (\s a -> s { _kinesisAnalyticsApplicationKinesisStreamsInputResourceARN = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-kinesisstreamsinput.html#cfn-kinesisanalytics-application-kinesisstreamsinput-rolearn
+kaaksiRoleARN :: Lens' KinesisAnalyticsApplicationKinesisStreamsInput (Val Text)
+kaaksiRoleARN = lens _kinesisAnalyticsApplicationKinesisStreamsInputRoleARN (\s a -> s { _kinesisAnalyticsApplicationKinesisStreamsInputRoleARN = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationMappingParameters.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationMappingParameters.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-mappingparameters.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationMappingParameters where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationCSVMappingParameters
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationJSONMappingParameters
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationMappingParameters. See
+-- 'kinesisAnalyticsApplicationMappingParameters' for a more convenient
+-- constructor.
+data KinesisAnalyticsApplicationMappingParameters =
+  KinesisAnalyticsApplicationMappingParameters
+  { _kinesisAnalyticsApplicationMappingParametersCSVMappingParameters :: Maybe KinesisAnalyticsApplicationCSVMappingParameters
+  , _kinesisAnalyticsApplicationMappingParametersJSONMappingParameters :: Maybe KinesisAnalyticsApplicationJSONMappingParameters
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationMappingParameters where
+  toJSON KinesisAnalyticsApplicationMappingParameters{..} =
+    object $
+    catMaybes
+    [ fmap (("CSVMappingParameters",) . toJSON) _kinesisAnalyticsApplicationMappingParametersCSVMappingParameters
+    , fmap (("JSONMappingParameters",) . toJSON) _kinesisAnalyticsApplicationMappingParametersJSONMappingParameters
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationMappingParameters where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationMappingParameters <$>
+      (obj .:? "CSVMappingParameters") <*>
+      (obj .:? "JSONMappingParameters")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationMappingParameters' containing
+-- required fields as arguments.
+kinesisAnalyticsApplicationMappingParameters
+  :: KinesisAnalyticsApplicationMappingParameters
+kinesisAnalyticsApplicationMappingParameters  =
+  KinesisAnalyticsApplicationMappingParameters
+  { _kinesisAnalyticsApplicationMappingParametersCSVMappingParameters = Nothing
+  , _kinesisAnalyticsApplicationMappingParametersJSONMappingParameters = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-mappingparameters.html#cfn-kinesisanalytics-application-mappingparameters-csvmappingparameters
+kaampCSVMappingParameters :: Lens' KinesisAnalyticsApplicationMappingParameters (Maybe KinesisAnalyticsApplicationCSVMappingParameters)
+kaampCSVMappingParameters = lens _kinesisAnalyticsApplicationMappingParametersCSVMappingParameters (\s a -> s { _kinesisAnalyticsApplicationMappingParametersCSVMappingParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-mappingparameters.html#cfn-kinesisanalytics-application-mappingparameters-jsonmappingparameters
+kaampJSONMappingParameters :: Lens' KinesisAnalyticsApplicationMappingParameters (Maybe KinesisAnalyticsApplicationJSONMappingParameters)
+kaampJSONMappingParameters = lens _kinesisAnalyticsApplicationMappingParametersJSONMappingParameters (\s a -> s { _kinesisAnalyticsApplicationMappingParametersJSONMappingParameters = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputDestinationSchema.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputDestinationSchema.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputDestinationSchema.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-destinationschema.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputDestinationSchema where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationOutputDestinationSchema. See
+-- 'kinesisAnalyticsApplicationOutputDestinationSchema' for a more
+-- convenient constructor.
+data KinesisAnalyticsApplicationOutputDestinationSchema =
+  KinesisAnalyticsApplicationOutputDestinationSchema
+  { _kinesisAnalyticsApplicationOutputDestinationSchemaRecordFormatType :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationOutputDestinationSchema where
+  toJSON KinesisAnalyticsApplicationOutputDestinationSchema{..} =
+    object $
+    catMaybes
+    [ fmap (("RecordFormatType",) . toJSON) _kinesisAnalyticsApplicationOutputDestinationSchemaRecordFormatType
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationOutputDestinationSchema where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationOutputDestinationSchema <$>
+      (obj .:? "RecordFormatType")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationOutputDestinationSchema'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationOutputDestinationSchema
+  :: KinesisAnalyticsApplicationOutputDestinationSchema
+kinesisAnalyticsApplicationOutputDestinationSchema  =
+  KinesisAnalyticsApplicationOutputDestinationSchema
+  { _kinesisAnalyticsApplicationOutputDestinationSchemaRecordFormatType = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-destinationschema.html#cfn-kinesisanalytics-applicationoutput-destinationschema-recordformattype
+kaaodsRecordFormatType :: Lens' KinesisAnalyticsApplicationOutputDestinationSchema (Maybe (Val Text))
+kaaodsRecordFormatType = lens _kinesisAnalyticsApplicationOutputDestinationSchemaRecordFormatType (\s a -> s { _kinesisAnalyticsApplicationOutputDestinationSchemaRecordFormatType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputKinesisFirehoseOutput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputKinesisFirehoseOutput.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputKinesisFirehoseOutput.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-kinesisfirehoseoutput.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputKinesisFirehoseOutput where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationOutputKinesisFirehoseOutput. See
+-- 'kinesisAnalyticsApplicationOutputKinesisFirehoseOutput' for a more
+-- convenient constructor.
+data KinesisAnalyticsApplicationOutputKinesisFirehoseOutput =
+  KinesisAnalyticsApplicationOutputKinesisFirehoseOutput
+  { _kinesisAnalyticsApplicationOutputKinesisFirehoseOutputResourceARN :: Val Text
+  , _kinesisAnalyticsApplicationOutputKinesisFirehoseOutputRoleARN :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationOutputKinesisFirehoseOutput where
+  toJSON KinesisAnalyticsApplicationOutputKinesisFirehoseOutput{..} =
+    object $
+    catMaybes
+    [ (Just . ("ResourceARN",) . toJSON) _kinesisAnalyticsApplicationOutputKinesisFirehoseOutputResourceARN
+    , (Just . ("RoleARN",) . toJSON) _kinesisAnalyticsApplicationOutputKinesisFirehoseOutputRoleARN
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationOutputKinesisFirehoseOutput where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationOutputKinesisFirehoseOutput <$>
+      (obj .: "ResourceARN") <*>
+      (obj .: "RoleARN")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationOutputKinesisFirehoseOutput'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationOutputKinesisFirehoseOutput
+  :: Val Text -- ^ 'kaaokfoResourceARN'
+  -> Val Text -- ^ 'kaaokfoRoleARN'
+  -> KinesisAnalyticsApplicationOutputKinesisFirehoseOutput
+kinesisAnalyticsApplicationOutputKinesisFirehoseOutput resourceARNarg roleARNarg =
+  KinesisAnalyticsApplicationOutputKinesisFirehoseOutput
+  { _kinesisAnalyticsApplicationOutputKinesisFirehoseOutputResourceARN = resourceARNarg
+  , _kinesisAnalyticsApplicationOutputKinesisFirehoseOutputRoleARN = roleARNarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-kinesisfirehoseoutput.html#cfn-kinesisanalytics-applicationoutput-kinesisfirehoseoutput-resourcearn
+kaaokfoResourceARN :: Lens' KinesisAnalyticsApplicationOutputKinesisFirehoseOutput (Val Text)
+kaaokfoResourceARN = lens _kinesisAnalyticsApplicationOutputKinesisFirehoseOutputResourceARN (\s a -> s { _kinesisAnalyticsApplicationOutputKinesisFirehoseOutputResourceARN = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-kinesisfirehoseoutput.html#cfn-kinesisanalytics-applicationoutput-kinesisfirehoseoutput-rolearn
+kaaokfoRoleARN :: Lens' KinesisAnalyticsApplicationOutputKinesisFirehoseOutput (Val Text)
+kaaokfoRoleARN = lens _kinesisAnalyticsApplicationOutputKinesisFirehoseOutputRoleARN (\s a -> s { _kinesisAnalyticsApplicationOutputKinesisFirehoseOutputRoleARN = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputKinesisStreamsOutput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputKinesisStreamsOutput.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputKinesisStreamsOutput.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-kinesisstreamsoutput.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputKinesisStreamsOutput where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationOutputKinesisStreamsOutput. See
+-- 'kinesisAnalyticsApplicationOutputKinesisStreamsOutput' for a more
+-- convenient constructor.
+data KinesisAnalyticsApplicationOutputKinesisStreamsOutput =
+  KinesisAnalyticsApplicationOutputKinesisStreamsOutput
+  { _kinesisAnalyticsApplicationOutputKinesisStreamsOutputResourceARN :: Val Text
+  , _kinesisAnalyticsApplicationOutputKinesisStreamsOutputRoleARN :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationOutputKinesisStreamsOutput where
+  toJSON KinesisAnalyticsApplicationOutputKinesisStreamsOutput{..} =
+    object $
+    catMaybes
+    [ (Just . ("ResourceARN",) . toJSON) _kinesisAnalyticsApplicationOutputKinesisStreamsOutputResourceARN
+    , (Just . ("RoleARN",) . toJSON) _kinesisAnalyticsApplicationOutputKinesisStreamsOutputRoleARN
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationOutputKinesisStreamsOutput where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationOutputKinesisStreamsOutput <$>
+      (obj .: "ResourceARN") <*>
+      (obj .: "RoleARN")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationOutputKinesisStreamsOutput'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationOutputKinesisStreamsOutput
+  :: Val Text -- ^ 'kaaoksoResourceARN'
+  -> Val Text -- ^ 'kaaoksoRoleARN'
+  -> KinesisAnalyticsApplicationOutputKinesisStreamsOutput
+kinesisAnalyticsApplicationOutputKinesisStreamsOutput resourceARNarg roleARNarg =
+  KinesisAnalyticsApplicationOutputKinesisStreamsOutput
+  { _kinesisAnalyticsApplicationOutputKinesisStreamsOutputResourceARN = resourceARNarg
+  , _kinesisAnalyticsApplicationOutputKinesisStreamsOutputRoleARN = roleARNarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-kinesisstreamsoutput.html#cfn-kinesisanalytics-applicationoutput-kinesisstreamsoutput-resourcearn
+kaaoksoResourceARN :: Lens' KinesisAnalyticsApplicationOutputKinesisStreamsOutput (Val Text)
+kaaoksoResourceARN = lens _kinesisAnalyticsApplicationOutputKinesisStreamsOutputResourceARN (\s a -> s { _kinesisAnalyticsApplicationOutputKinesisStreamsOutputResourceARN = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-kinesisstreamsoutput.html#cfn-kinesisanalytics-applicationoutput-kinesisstreamsoutput-rolearn
+kaaoksoRoleARN :: Lens' KinesisAnalyticsApplicationOutputKinesisStreamsOutput (Val Text)
+kaaoksoRoleARN = lens _kinesisAnalyticsApplicationOutputKinesisStreamsOutputRoleARN (\s a -> s { _kinesisAnalyticsApplicationOutputKinesisStreamsOutputRoleARN = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputOutput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputOutput.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputOutput.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-output.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputOutput where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputDestinationSchema
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputKinesisFirehoseOutput
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputKinesisStreamsOutput
+
+-- | Full data type definition for KinesisAnalyticsApplicationOutputOutput.
+-- See 'kinesisAnalyticsApplicationOutputOutput' for a more convenient
+-- constructor.
+data KinesisAnalyticsApplicationOutputOutput =
+  KinesisAnalyticsApplicationOutputOutput
+  { _kinesisAnalyticsApplicationOutputOutputDestinationSchema :: KinesisAnalyticsApplicationOutputDestinationSchema
+  , _kinesisAnalyticsApplicationOutputOutputKinesisFirehoseOutput :: Maybe KinesisAnalyticsApplicationOutputKinesisFirehoseOutput
+  , _kinesisAnalyticsApplicationOutputOutputKinesisStreamsOutput :: Maybe KinesisAnalyticsApplicationOutputKinesisStreamsOutput
+  , _kinesisAnalyticsApplicationOutputOutputName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationOutputOutput where
+  toJSON KinesisAnalyticsApplicationOutputOutput{..} =
+    object $
+    catMaybes
+    [ (Just . ("DestinationSchema",) . toJSON) _kinesisAnalyticsApplicationOutputOutputDestinationSchema
+    , fmap (("KinesisFirehoseOutput",) . toJSON) _kinesisAnalyticsApplicationOutputOutputKinesisFirehoseOutput
+    , fmap (("KinesisStreamsOutput",) . toJSON) _kinesisAnalyticsApplicationOutputOutputKinesisStreamsOutput
+    , fmap (("Name",) . toJSON) _kinesisAnalyticsApplicationOutputOutputName
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationOutputOutput where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationOutputOutput <$>
+      (obj .: "DestinationSchema") <*>
+      (obj .:? "KinesisFirehoseOutput") <*>
+      (obj .:? "KinesisStreamsOutput") <*>
+      (obj .:? "Name")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationOutputOutput' containing
+-- required fields as arguments.
+kinesisAnalyticsApplicationOutputOutput
+  :: KinesisAnalyticsApplicationOutputDestinationSchema -- ^ 'kaaooDestinationSchema'
+  -> KinesisAnalyticsApplicationOutputOutput
+kinesisAnalyticsApplicationOutputOutput destinationSchemaarg =
+  KinesisAnalyticsApplicationOutputOutput
+  { _kinesisAnalyticsApplicationOutputOutputDestinationSchema = destinationSchemaarg
+  , _kinesisAnalyticsApplicationOutputOutputKinesisFirehoseOutput = Nothing
+  , _kinesisAnalyticsApplicationOutputOutputKinesisStreamsOutput = Nothing
+  , _kinesisAnalyticsApplicationOutputOutputName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-output.html#cfn-kinesisanalytics-applicationoutput-output-destinationschema
+kaaooDestinationSchema :: Lens' KinesisAnalyticsApplicationOutputOutput KinesisAnalyticsApplicationOutputDestinationSchema
+kaaooDestinationSchema = lens _kinesisAnalyticsApplicationOutputOutputDestinationSchema (\s a -> s { _kinesisAnalyticsApplicationOutputOutputDestinationSchema = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-output.html#cfn-kinesisanalytics-applicationoutput-output-kinesisfirehoseoutput
+kaaooKinesisFirehoseOutput :: Lens' KinesisAnalyticsApplicationOutputOutput (Maybe KinesisAnalyticsApplicationOutputKinesisFirehoseOutput)
+kaaooKinesisFirehoseOutput = lens _kinesisAnalyticsApplicationOutputOutputKinesisFirehoseOutput (\s a -> s { _kinesisAnalyticsApplicationOutputOutputKinesisFirehoseOutput = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-output.html#cfn-kinesisanalytics-applicationoutput-output-kinesisstreamsoutput
+kaaooKinesisStreamsOutput :: Lens' KinesisAnalyticsApplicationOutputOutput (Maybe KinesisAnalyticsApplicationOutputKinesisStreamsOutput)
+kaaooKinesisStreamsOutput = lens _kinesisAnalyticsApplicationOutputOutputKinesisStreamsOutput (\s a -> s { _kinesisAnalyticsApplicationOutputOutputKinesisStreamsOutput = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-output.html#cfn-kinesisanalytics-applicationoutput-output-name
+kaaooName :: Lens' KinesisAnalyticsApplicationOutputOutput (Maybe (Val Text))
+kaaooName = lens _kinesisAnalyticsApplicationOutputOutputName (\s a -> s { _kinesisAnalyticsApplicationOutputOutputName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationRecordColumn.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationRecordColumn.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationRecordColumn.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordcolumn.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationRecordColumn where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for KinesisAnalyticsApplicationRecordColumn.
+-- See 'kinesisAnalyticsApplicationRecordColumn' for a more convenient
+-- constructor.
+data KinesisAnalyticsApplicationRecordColumn =
+  KinesisAnalyticsApplicationRecordColumn
+  { _kinesisAnalyticsApplicationRecordColumnMapping :: Maybe (Val Text)
+  , _kinesisAnalyticsApplicationRecordColumnName :: Val Text
+  , _kinesisAnalyticsApplicationRecordColumnSqlType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationRecordColumn where
+  toJSON KinesisAnalyticsApplicationRecordColumn{..} =
+    object $
+    catMaybes
+    [ fmap (("Mapping",) . toJSON) _kinesisAnalyticsApplicationRecordColumnMapping
+    , (Just . ("Name",) . toJSON) _kinesisAnalyticsApplicationRecordColumnName
+    , (Just . ("SqlType",) . toJSON) _kinesisAnalyticsApplicationRecordColumnSqlType
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationRecordColumn where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationRecordColumn <$>
+      (obj .:? "Mapping") <*>
+      (obj .: "Name") <*>
+      (obj .: "SqlType")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationRecordColumn' containing
+-- required fields as arguments.
+kinesisAnalyticsApplicationRecordColumn
+  :: Val Text -- ^ 'kaarcName'
+  -> Val Text -- ^ 'kaarcSqlType'
+  -> KinesisAnalyticsApplicationRecordColumn
+kinesisAnalyticsApplicationRecordColumn namearg sqlTypearg =
+  KinesisAnalyticsApplicationRecordColumn
+  { _kinesisAnalyticsApplicationRecordColumnMapping = Nothing
+  , _kinesisAnalyticsApplicationRecordColumnName = namearg
+  , _kinesisAnalyticsApplicationRecordColumnSqlType = sqlTypearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordcolumn.html#cfn-kinesisanalytics-application-recordcolumn-mapping
+kaarcMapping :: Lens' KinesisAnalyticsApplicationRecordColumn (Maybe (Val Text))
+kaarcMapping = lens _kinesisAnalyticsApplicationRecordColumnMapping (\s a -> s { _kinesisAnalyticsApplicationRecordColumnMapping = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordcolumn.html#cfn-kinesisanalytics-application-recordcolumn-name
+kaarcName :: Lens' KinesisAnalyticsApplicationRecordColumn (Val Text)
+kaarcName = lens _kinesisAnalyticsApplicationRecordColumnName (\s a -> s { _kinesisAnalyticsApplicationRecordColumnName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordcolumn.html#cfn-kinesisanalytics-application-recordcolumn-sqltype
+kaarcSqlType :: Lens' KinesisAnalyticsApplicationRecordColumn (Val Text)
+kaarcSqlType = lens _kinesisAnalyticsApplicationRecordColumnSqlType (\s a -> s { _kinesisAnalyticsApplicationRecordColumnSqlType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationRecordFormat.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationRecordFormat.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationRecordFormat.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordformat.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationRecordFormat where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationMappingParameters
+
+-- | Full data type definition for KinesisAnalyticsApplicationRecordFormat.
+-- See 'kinesisAnalyticsApplicationRecordFormat' for a more convenient
+-- constructor.
+data KinesisAnalyticsApplicationRecordFormat =
+  KinesisAnalyticsApplicationRecordFormat
+  { _kinesisAnalyticsApplicationRecordFormatMappingParameters :: Maybe KinesisAnalyticsApplicationMappingParameters
+  , _kinesisAnalyticsApplicationRecordFormatRecordFormatType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationRecordFormat where
+  toJSON KinesisAnalyticsApplicationRecordFormat{..} =
+    object $
+    catMaybes
+    [ fmap (("MappingParameters",) . toJSON) _kinesisAnalyticsApplicationRecordFormatMappingParameters
+    , (Just . ("RecordFormatType",) . toJSON) _kinesisAnalyticsApplicationRecordFormatRecordFormatType
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationRecordFormat where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationRecordFormat <$>
+      (obj .:? "MappingParameters") <*>
+      (obj .: "RecordFormatType")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationRecordFormat' containing
+-- required fields as arguments.
+kinesisAnalyticsApplicationRecordFormat
+  :: Val Text -- ^ 'kaarfRecordFormatType'
+  -> KinesisAnalyticsApplicationRecordFormat
+kinesisAnalyticsApplicationRecordFormat recordFormatTypearg =
+  KinesisAnalyticsApplicationRecordFormat
+  { _kinesisAnalyticsApplicationRecordFormatMappingParameters = Nothing
+  , _kinesisAnalyticsApplicationRecordFormatRecordFormatType = recordFormatTypearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordformat.html#cfn-kinesisanalytics-application-recordformat-mappingparameters
+kaarfMappingParameters :: Lens' KinesisAnalyticsApplicationRecordFormat (Maybe KinesisAnalyticsApplicationMappingParameters)
+kaarfMappingParameters = lens _kinesisAnalyticsApplicationRecordFormatMappingParameters (\s a -> s { _kinesisAnalyticsApplicationRecordFormatMappingParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordformat.html#cfn-kinesisanalytics-application-recordformat-recordformattype
+kaarfRecordFormatType :: Lens' KinesisAnalyticsApplicationRecordFormat (Val Text)
+kaarfRecordFormatType = lens _kinesisAnalyticsApplicationRecordFormatRecordFormatType (\s a -> s { _kinesisAnalyticsApplicationRecordFormatRecordFormatType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters.hs
@@ -0,0 +1,62 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-csvmappingparameters.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters. See
+-- 'kinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters' for
+-- a more convenient constructor.
+data KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters =
+  KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters
+  { _kinesisAnalyticsApplicationReferenceDataSourceCSVMappingParametersRecordColumnDelimiter :: Val Text
+  , _kinesisAnalyticsApplicationReferenceDataSourceCSVMappingParametersRecordRowDelimiter :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters where
+  toJSON KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters{..} =
+    object $
+    catMaybes
+    [ (Just . ("RecordColumnDelimiter",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceCSVMappingParametersRecordColumnDelimiter
+    , (Just . ("RecordRowDelimiter",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceCSVMappingParametersRecordRowDelimiter
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters <$>
+      (obj .: "RecordColumnDelimiter") <*>
+      (obj .: "RecordRowDelimiter")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters
+  :: Val Text -- ^ 'kaardscsvmpRecordColumnDelimiter'
+  -> Val Text -- ^ 'kaardscsvmpRecordRowDelimiter'
+  -> KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters
+kinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters recordColumnDelimiterarg recordRowDelimiterarg =
+  KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters
+  { _kinesisAnalyticsApplicationReferenceDataSourceCSVMappingParametersRecordColumnDelimiter = recordColumnDelimiterarg
+  , _kinesisAnalyticsApplicationReferenceDataSourceCSVMappingParametersRecordRowDelimiter = recordRowDelimiterarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-csvmappingparameters.html#cfn-kinesisanalytics-applicationreferencedatasource-csvmappingparameters-recordcolumndelimiter
+kaardscsvmpRecordColumnDelimiter :: Lens' KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters (Val Text)
+kaardscsvmpRecordColumnDelimiter = lens _kinesisAnalyticsApplicationReferenceDataSourceCSVMappingParametersRecordColumnDelimiter (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceCSVMappingParametersRecordColumnDelimiter = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-csvmappingparameters.html#cfn-kinesisanalytics-applicationreferencedatasource-csvmappingparameters-recordrowdelimiter
+kaardscsvmpRecordRowDelimiter :: Lens' KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters (Val Text)
+kaardscsvmpRecordRowDelimiter = lens _kinesisAnalyticsApplicationReferenceDataSourceCSVMappingParametersRecordRowDelimiter (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceCSVMappingParametersRecordRowDelimiter = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-jsonmappingparameters.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters. See
+-- 'kinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters' for
+-- a more convenient constructor.
+data KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters =
+  KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters
+  { _kinesisAnalyticsApplicationReferenceDataSourceJSONMappingParametersRecordRowPath :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters where
+  toJSON KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters{..} =
+    object $
+    catMaybes
+    [ (Just . ("RecordRowPath",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceJSONMappingParametersRecordRowPath
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters <$>
+      (obj .: "RecordRowPath")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters
+  :: Val Text -- ^ 'kaardsjsonmpRecordRowPath'
+  -> KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters
+kinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters recordRowPatharg =
+  KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters
+  { _kinesisAnalyticsApplicationReferenceDataSourceJSONMappingParametersRecordRowPath = recordRowPatharg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-jsonmappingparameters.html#cfn-kinesisanalytics-applicationreferencedatasource-jsonmappingparameters-recordrowpath
+kaardsjsonmpRecordRowPath :: Lens' KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters (Val Text)
+kaardsjsonmpRecordRowPath = lens _kinesisAnalyticsApplicationReferenceDataSourceJSONMappingParametersRecordRowPath (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceJSONMappingParametersRecordRowPath = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceMappingParameters.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceMappingParameters.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-mappingparameters.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceMappingParameters where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationReferenceDataSourceMappingParameters. See
+-- 'kinesisAnalyticsApplicationReferenceDataSourceMappingParameters' for a
+-- more convenient constructor.
+data KinesisAnalyticsApplicationReferenceDataSourceMappingParameters =
+  KinesisAnalyticsApplicationReferenceDataSourceMappingParameters
+  { _kinesisAnalyticsApplicationReferenceDataSourceMappingParametersCSVMappingParameters :: Maybe KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters
+  , _kinesisAnalyticsApplicationReferenceDataSourceMappingParametersJSONMappingParameters :: Maybe KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationReferenceDataSourceMappingParameters where
+  toJSON KinesisAnalyticsApplicationReferenceDataSourceMappingParameters{..} =
+    object $
+    catMaybes
+    [ fmap (("CSVMappingParameters",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceMappingParametersCSVMappingParameters
+    , fmap (("JSONMappingParameters",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceMappingParametersJSONMappingParameters
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationReferenceDataSourceMappingParameters where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationReferenceDataSourceMappingParameters <$>
+      (obj .:? "CSVMappingParameters") <*>
+      (obj .:? "JSONMappingParameters")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'KinesisAnalyticsApplicationReferenceDataSourceMappingParameters'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationReferenceDataSourceMappingParameters
+  :: KinesisAnalyticsApplicationReferenceDataSourceMappingParameters
+kinesisAnalyticsApplicationReferenceDataSourceMappingParameters  =
+  KinesisAnalyticsApplicationReferenceDataSourceMappingParameters
+  { _kinesisAnalyticsApplicationReferenceDataSourceMappingParametersCSVMappingParameters = Nothing
+  , _kinesisAnalyticsApplicationReferenceDataSourceMappingParametersJSONMappingParameters = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-mappingparameters.html#cfn-kinesisanalytics-applicationreferencedatasource-mappingparameters-csvmappingparameters
+kaardsmpCSVMappingParameters :: Lens' KinesisAnalyticsApplicationReferenceDataSourceMappingParameters (Maybe KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters)
+kaardsmpCSVMappingParameters = lens _kinesisAnalyticsApplicationReferenceDataSourceMappingParametersCSVMappingParameters (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceMappingParametersCSVMappingParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-mappingparameters.html#cfn-kinesisanalytics-applicationreferencedatasource-mappingparameters-jsonmappingparameters
+kaardsmpJSONMappingParameters :: Lens' KinesisAnalyticsApplicationReferenceDataSourceMappingParameters (Maybe KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters)
+kaardsmpJSONMappingParameters = lens _kinesisAnalyticsApplicationReferenceDataSourceMappingParametersJSONMappingParameters (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceMappingParametersJSONMappingParameters = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceRecordColumn.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceRecordColumn.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceRecordColumn.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordcolumn.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceRecordColumn where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationReferenceDataSourceRecordColumn. See
+-- 'kinesisAnalyticsApplicationReferenceDataSourceRecordColumn' for a more
+-- convenient constructor.
+data KinesisAnalyticsApplicationReferenceDataSourceRecordColumn =
+  KinesisAnalyticsApplicationReferenceDataSourceRecordColumn
+  { _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnMapping :: Maybe (Val Text)
+  , _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnName :: Val Text
+  , _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnSqlType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationReferenceDataSourceRecordColumn where
+  toJSON KinesisAnalyticsApplicationReferenceDataSourceRecordColumn{..} =
+    object $
+    catMaybes
+    [ fmap (("Mapping",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnMapping
+    , (Just . ("Name",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnName
+    , (Just . ("SqlType",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnSqlType
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationReferenceDataSourceRecordColumn where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationReferenceDataSourceRecordColumn <$>
+      (obj .:? "Mapping") <*>
+      (obj .: "Name") <*>
+      (obj .: "SqlType")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'KinesisAnalyticsApplicationReferenceDataSourceRecordColumn' containing
+-- required fields as arguments.
+kinesisAnalyticsApplicationReferenceDataSourceRecordColumn
+  :: Val Text -- ^ 'kaardsrcName'
+  -> Val Text -- ^ 'kaardsrcSqlType'
+  -> KinesisAnalyticsApplicationReferenceDataSourceRecordColumn
+kinesisAnalyticsApplicationReferenceDataSourceRecordColumn namearg sqlTypearg =
+  KinesisAnalyticsApplicationReferenceDataSourceRecordColumn
+  { _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnMapping = Nothing
+  , _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnName = namearg
+  , _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnSqlType = sqlTypearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordcolumn.html#cfn-kinesisanalytics-applicationreferencedatasource-recordcolumn-mapping
+kaardsrcMapping :: Lens' KinesisAnalyticsApplicationReferenceDataSourceRecordColumn (Maybe (Val Text))
+kaardsrcMapping = lens _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnMapping (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnMapping = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordcolumn.html#cfn-kinesisanalytics-applicationreferencedatasource-recordcolumn-name
+kaardsrcName :: Lens' KinesisAnalyticsApplicationReferenceDataSourceRecordColumn (Val Text)
+kaardsrcName = lens _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnName (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordcolumn.html#cfn-kinesisanalytics-applicationreferencedatasource-recordcolumn-sqltype
+kaardsrcSqlType :: Lens' KinesisAnalyticsApplicationReferenceDataSourceRecordColumn (Val Text)
+kaardsrcSqlType = lens _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnSqlType (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceRecordColumnSqlType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceRecordFormat.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceRecordFormat.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceRecordFormat.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordformat.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceRecordFormat where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceMappingParameters
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationReferenceDataSourceRecordFormat. See
+-- 'kinesisAnalyticsApplicationReferenceDataSourceRecordFormat' for a more
+-- convenient constructor.
+data KinesisAnalyticsApplicationReferenceDataSourceRecordFormat =
+  KinesisAnalyticsApplicationReferenceDataSourceRecordFormat
+  { _kinesisAnalyticsApplicationReferenceDataSourceRecordFormatMappingParameters :: Maybe KinesisAnalyticsApplicationReferenceDataSourceMappingParameters
+  , _kinesisAnalyticsApplicationReferenceDataSourceRecordFormatRecordFormatType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationReferenceDataSourceRecordFormat where
+  toJSON KinesisAnalyticsApplicationReferenceDataSourceRecordFormat{..} =
+    object $
+    catMaybes
+    [ fmap (("MappingParameters",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceRecordFormatMappingParameters
+    , (Just . ("RecordFormatType",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceRecordFormatRecordFormatType
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationReferenceDataSourceRecordFormat where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationReferenceDataSourceRecordFormat <$>
+      (obj .:? "MappingParameters") <*>
+      (obj .: "RecordFormatType")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'KinesisAnalyticsApplicationReferenceDataSourceRecordFormat' containing
+-- required fields as arguments.
+kinesisAnalyticsApplicationReferenceDataSourceRecordFormat
+  :: Val Text -- ^ 'kaardsrfRecordFormatType'
+  -> KinesisAnalyticsApplicationReferenceDataSourceRecordFormat
+kinesisAnalyticsApplicationReferenceDataSourceRecordFormat recordFormatTypearg =
+  KinesisAnalyticsApplicationReferenceDataSourceRecordFormat
+  { _kinesisAnalyticsApplicationReferenceDataSourceRecordFormatMappingParameters = Nothing
+  , _kinesisAnalyticsApplicationReferenceDataSourceRecordFormatRecordFormatType = recordFormatTypearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordformat.html#cfn-kinesisanalytics-applicationreferencedatasource-recordformat-mappingparameters
+kaardsrfMappingParameters :: Lens' KinesisAnalyticsApplicationReferenceDataSourceRecordFormat (Maybe KinesisAnalyticsApplicationReferenceDataSourceMappingParameters)
+kaardsrfMappingParameters = lens _kinesisAnalyticsApplicationReferenceDataSourceRecordFormatMappingParameters (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceRecordFormatMappingParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordformat.html#cfn-kinesisanalytics-applicationreferencedatasource-recordformat-recordformattype
+kaardsrfRecordFormatType :: Lens' KinesisAnalyticsApplicationReferenceDataSourceRecordFormat (Val Text)
+kaardsrfRecordFormatType = lens _kinesisAnalyticsApplicationReferenceDataSourceRecordFormatRecordFormatType (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceRecordFormatRecordFormatType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referencedatasource.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource. See
+-- 'kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource' for a
+-- more convenient constructor.
+data KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource =
+  KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource
+  { _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceReferenceSchema :: KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema
+  , _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceS3ReferenceDataSource :: Maybe KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource
+  , _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceTableName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource where
+  toJSON KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource{..} =
+    object $
+    catMaybes
+    [ (Just . ("ReferenceSchema",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceReferenceSchema
+    , fmap (("S3ReferenceDataSource",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceS3ReferenceDataSource
+    , fmap (("TableName",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceTableName
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource <$>
+      (obj .: "ReferenceSchema") <*>
+      (obj .:? "S3ReferenceDataSource") <*>
+      (obj .:? "TableName")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource
+  :: KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema -- ^ 'kaardsrdsReferenceSchema'
+  -> KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource
+kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource referenceSchemaarg =
+  KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource
+  { _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceReferenceSchema = referenceSchemaarg
+  , _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceS3ReferenceDataSource = Nothing
+  , _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceTableName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-referencedatasource-referenceschema
+kaardsrdsReferenceSchema :: Lens' KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema
+kaardsrdsReferenceSchema = lens _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceReferenceSchema (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceReferenceSchema = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-referencedatasource-s3referencedatasource
+kaardsrdsS3ReferenceDataSource :: Lens' KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource (Maybe KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource)
+kaardsrdsS3ReferenceDataSource = lens _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceS3ReferenceDataSource (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceS3ReferenceDataSource = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-referencedatasource-tablename
+kaardsrdsTableName :: Lens' KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource (Maybe (Val Text))
+kaardsrdsTableName = lens _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceTableName (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSourceTableName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referenceschema.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceRecordColumn
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceRecordFormat
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema. See
+-- 'kinesisAnalyticsApplicationReferenceDataSourceReferenceSchema' for a
+-- more convenient constructor.
+data KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema =
+  KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema
+  { _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordColumns :: [KinesisAnalyticsApplicationReferenceDataSourceRecordColumn]
+  , _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordEncoding :: Maybe (Val Text)
+  , _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordFormat :: KinesisAnalyticsApplicationReferenceDataSourceRecordFormat
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema where
+  toJSON KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema{..} =
+    object $
+    catMaybes
+    [ (Just . ("RecordColumns",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordColumns
+    , fmap (("RecordEncoding",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordEncoding
+    , (Just . ("RecordFormat",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordFormat
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema <$>
+      (obj .: "RecordColumns") <*>
+      (obj .:? "RecordEncoding") <*>
+      (obj .: "RecordFormat")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationReferenceDataSourceReferenceSchema
+  :: [KinesisAnalyticsApplicationReferenceDataSourceRecordColumn] -- ^ 'kaardsrsRecordColumns'
+  -> KinesisAnalyticsApplicationReferenceDataSourceRecordFormat -- ^ 'kaardsrsRecordFormat'
+  -> KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema
+kinesisAnalyticsApplicationReferenceDataSourceReferenceSchema recordColumnsarg recordFormatarg =
+  KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema
+  { _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordColumns = recordColumnsarg
+  , _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordEncoding = Nothing
+  , _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordFormat = recordFormatarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referenceschema.html#cfn-kinesisanalytics-applicationreferencedatasource-referenceschema-recordcolumns
+kaardsrsRecordColumns :: Lens' KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema [KinesisAnalyticsApplicationReferenceDataSourceRecordColumn]
+kaardsrsRecordColumns = lens _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordColumns (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordColumns = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referenceschema.html#cfn-kinesisanalytics-applicationreferencedatasource-referenceschema-recordencoding
+kaardsrsRecordEncoding :: Lens' KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema (Maybe (Val Text))
+kaardsrsRecordEncoding = lens _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordEncoding (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordEncoding = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referenceschema.html#cfn-kinesisanalytics-applicationreferencedatasource-referenceschema-recordformat
+kaardsrsRecordFormat :: Lens' KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema KinesisAnalyticsApplicationReferenceDataSourceRecordFormat
+kaardsrsRecordFormat = lens _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordFormat (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceReferenceSchemaRecordFormat = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-s3referencedatasource.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource. See
+-- 'kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource' for
+-- a more convenient constructor.
+data KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource =
+  KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource
+  { _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceBucketARN :: Val Text
+  , _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceFileKey :: Val Text
+  , _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceReferenceRoleARN :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource where
+  toJSON KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource{..} =
+    object $
+    catMaybes
+    [ (Just . ("BucketARN",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceBucketARN
+    , (Just . ("FileKey",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceFileKey
+    , (Just . ("ReferenceRoleARN",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceReferenceRoleARN
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource <$>
+      (obj .: "BucketARN") <*>
+      (obj .: "FileKey") <*>
+      (obj .: "ReferenceRoleARN")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource
+  :: Val Text -- ^ 'kaardssrdsBucketARN'
+  -> Val Text -- ^ 'kaardssrdsFileKey'
+  -> Val Text -- ^ 'kaardssrdsReferenceRoleARN'
+  -> KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource
+kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource bucketARNarg fileKeyarg referenceRoleARNarg =
+  KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource
+  { _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceBucketARN = bucketARNarg
+  , _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceFileKey = fileKeyarg
+  , _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceReferenceRoleARN = referenceRoleARNarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-s3referencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-s3referencedatasource-bucketarn
+kaardssrdsBucketARN :: Lens' KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource (Val Text)
+kaardssrdsBucketARN = lens _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceBucketARN (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceBucketARN = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-s3referencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-s3referencedatasource-filekey
+kaardssrdsFileKey :: Lens' KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource (Val Text)
+kaardssrdsFileKey = lens _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceFileKey (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceFileKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-s3referencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-s3referencedatasource-referencerolearn
+kaardssrdsReferenceRoleARN :: Lens' KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource (Val Text)
+kaardssrdsReferenceRoleARN = lens _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceReferenceRoleARN (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSourceReferenceRoleARN = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration.hs
@@ -16,6 +16,7 @@
 import Stratosphere.Types
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchBufferingHints
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessingConfiguration
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchRetryOptions
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration
 
@@ -30,6 +31,7 @@
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationDomainARN :: Val Text
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationIndexName :: Val Text
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationIndexRotationPeriod :: Val Text
+  , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationProcessingConfiguration :: Maybe KinesisFirehoseDeliveryStreamProcessingConfiguration
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationRetryOptions :: KinesisFirehoseDeliveryStreamElasticsearchRetryOptions
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationRoleARN :: Val Text
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationS3BackupMode :: Val KinesisFirehoseElasticsearchS3BackupMode
@@ -46,6 +48,7 @@
     , (Just . ("DomainARN",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationDomainARN
     , (Just . ("IndexName",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationIndexName
     , (Just . ("IndexRotationPeriod",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationIndexRotationPeriod
+    , fmap (("ProcessingConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationProcessingConfiguration
     , (Just . ("RetryOptions",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationRetryOptions
     , (Just . ("RoleARN",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationRoleARN
     , (Just . ("S3BackupMode",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationS3BackupMode
@@ -61,6 +64,7 @@
       (obj .: "DomainARN") <*>
       (obj .: "IndexName") <*>
       (obj .: "IndexRotationPeriod") <*>
+      (obj .:? "ProcessingConfiguration") <*>
       (obj .: "RetryOptions") <*>
       (obj .: "RoleARN") <*>
       (obj .: "S3BackupMode") <*>
@@ -89,6 +93,7 @@
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationDomainARN = domainARNarg
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationIndexName = indexNamearg
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationIndexRotationPeriod = indexRotationPeriodarg
+  , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationProcessingConfiguration = Nothing
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationRetryOptions = retryOptionsarg
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationRoleARN = roleARNarg
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationS3BackupMode = s3BackupModearg
@@ -115,6 +120,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-elasticsearchdestinationconfiguration-indexrotationperiod
 kfdsedcIndexRotationPeriod :: Lens' KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration (Val Text)
 kfdsedcIndexRotationPeriod = lens _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationIndexRotationPeriod (\s a -> s { _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationIndexRotationPeriod = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-processingconfiguration
+kfdsedcProcessingConfiguration :: Lens' KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration (Maybe KinesisFirehoseDeliveryStreamProcessingConfiguration)
+kfdsedcProcessingConfiguration = lens _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationProcessingConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationProcessingConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-elasticsearchdestinationconfiguration-retryoptions
 kfdsedcRetryOptions :: Lens' KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration KinesisFirehoseDeliveryStreamElasticsearchRetryOptions
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-extendeds3destinationconfiguration.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamBufferingHints
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamEncryptionConfiguration
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessingConfiguration
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration
+
+-- | Full data type definition for
+-- KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration. See
+-- 'kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration' for a
+-- more convenient constructor.
+data KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration =
+  KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
+  { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationBucketARN :: Val Text
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationBufferingHints :: KinesisFirehoseDeliveryStreamBufferingHints
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCloudWatchLoggingOptions :: Maybe KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCompressionFormat :: Val Text
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationEncryptionConfiguration :: Maybe KinesisFirehoseDeliveryStreamEncryptionConfiguration
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationPrefix :: Val Text
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationProcessingConfiguration :: Maybe KinesisFirehoseDeliveryStreamProcessingConfiguration
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationRoleARN :: Val Text
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationS3BackupConfiguration :: Maybe KinesisFirehoseDeliveryStreamS3DestinationConfiguration
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationS3BackupMode :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration where
+  toJSON KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("BucketARN",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationBucketARN
+    , (Just . ("BufferingHints",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationBufferingHints
+    , fmap (("CloudWatchLoggingOptions",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCloudWatchLoggingOptions
+    , (Just . ("CompressionFormat",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCompressionFormat
+    , fmap (("EncryptionConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationEncryptionConfiguration
+    , (Just . ("Prefix",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationPrefix
+    , fmap (("ProcessingConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationProcessingConfiguration
+    , (Just . ("RoleARN",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationRoleARN
+    , fmap (("S3BackupConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationS3BackupConfiguration
+    , fmap (("S3BackupMode",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationS3BackupMode
+    ]
+
+instance FromJSON KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration where
+  parseJSON (Object obj) =
+    KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration <$>
+      (obj .: "BucketARN") <*>
+      (obj .: "BufferingHints") <*>
+      (obj .:? "CloudWatchLoggingOptions") <*>
+      (obj .: "CompressionFormat") <*>
+      (obj .:? "EncryptionConfiguration") <*>
+      (obj .: "Prefix") <*>
+      (obj .:? "ProcessingConfiguration") <*>
+      (obj .: "RoleARN") <*>
+      (obj .:? "S3BackupConfiguration") <*>
+      (obj .:? "S3BackupMode")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration'
+-- containing required fields as arguments.
+kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
+  :: Val Text -- ^ 'kfdsesdcBucketARN'
+  -> KinesisFirehoseDeliveryStreamBufferingHints -- ^ 'kfdsesdcBufferingHints'
+  -> Val Text -- ^ 'kfdsesdcCompressionFormat'
+  -> Val Text -- ^ 'kfdsesdcPrefix'
+  -> Val Text -- ^ 'kfdsesdcRoleARN'
+  -> KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
+kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration bucketARNarg bufferingHintsarg compressionFormatarg prefixarg roleARNarg =
+  KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
+  { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationBucketARN = bucketARNarg
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationBufferingHints = bufferingHintsarg
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCloudWatchLoggingOptions = Nothing
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCompressionFormat = compressionFormatarg
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationEncryptionConfiguration = Nothing
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationPrefix = prefixarg
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationProcessingConfiguration = Nothing
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationRoleARN = roleARNarg
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationS3BackupConfiguration = Nothing
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationS3BackupMode = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration-bucketarn
+kfdsesdcBucketARN :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Val Text)
+kfdsesdcBucketARN = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationBucketARN (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationBucketARN = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration-bufferinghints
+kfdsesdcBufferingHints :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration KinesisFirehoseDeliveryStreamBufferingHints
+kfdsesdcBufferingHints = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationBufferingHints (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationBufferingHints = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration-cloudwatchloggingoptions
+kfdsesdcCloudWatchLoggingOptions :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Maybe KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions)
+kfdsesdcCloudWatchLoggingOptions = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCloudWatchLoggingOptions (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCloudWatchLoggingOptions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration-compressionformat
+kfdsesdcCompressionFormat :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Val Text)
+kfdsesdcCompressionFormat = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCompressionFormat (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCompressionFormat = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration-encryptionconfiguration
+kfdsesdcEncryptionConfiguration :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Maybe KinesisFirehoseDeliveryStreamEncryptionConfiguration)
+kfdsesdcEncryptionConfiguration = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationEncryptionConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationEncryptionConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration-prefix
+kfdsesdcPrefix :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Val Text)
+kfdsesdcPrefix = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationPrefix (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationPrefix = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-processingconfiguration
+kfdsesdcProcessingConfiguration :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Maybe KinesisFirehoseDeliveryStreamProcessingConfiguration)
+kfdsesdcProcessingConfiguration = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationProcessingConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationProcessingConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration-rolearn
+kfdsesdcRoleARN :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Val Text)
+kfdsesdcRoleARN = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationRoleARN (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationRoleARN = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration
+kfdsesdcS3BackupConfiguration :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Maybe KinesisFirehoseDeliveryStreamS3DestinationConfiguration)
+kfdsesdcS3BackupConfiguration = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationS3BackupConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationS3BackupConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-s3backupmode
+kfdsesdcS3BackupMode :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Maybe (Val Text))
+kfdsesdcS3BackupMode = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationS3BackupMode (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationS3BackupMode = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessingConfiguration.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-processingconfiguration.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessingConfiguration where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessor
+
+-- | Full data type definition for
+-- KinesisFirehoseDeliveryStreamProcessingConfiguration. See
+-- 'kinesisFirehoseDeliveryStreamProcessingConfiguration' for a more
+-- convenient constructor.
+data KinesisFirehoseDeliveryStreamProcessingConfiguration =
+  KinesisFirehoseDeliveryStreamProcessingConfiguration
+  { _kinesisFirehoseDeliveryStreamProcessingConfigurationEnabled :: Val Bool
+  , _kinesisFirehoseDeliveryStreamProcessingConfigurationProcessors :: [KinesisFirehoseDeliveryStreamProcessor]
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamProcessingConfiguration where
+  toJSON KinesisFirehoseDeliveryStreamProcessingConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("Enabled",) . toJSON . fmap Bool') _kinesisFirehoseDeliveryStreamProcessingConfigurationEnabled
+    , (Just . ("Processors",) . toJSON) _kinesisFirehoseDeliveryStreamProcessingConfigurationProcessors
+    ]
+
+instance FromJSON KinesisFirehoseDeliveryStreamProcessingConfiguration where
+  parseJSON (Object obj) =
+    KinesisFirehoseDeliveryStreamProcessingConfiguration <$>
+      fmap (fmap unBool') (obj .: "Enabled") <*>
+      (obj .: "Processors")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisFirehoseDeliveryStreamProcessingConfiguration'
+-- containing required fields as arguments.
+kinesisFirehoseDeliveryStreamProcessingConfiguration
+  :: Val Bool -- ^ 'kfdspcEnabled'
+  -> [KinesisFirehoseDeliveryStreamProcessor] -- ^ 'kfdspcProcessors'
+  -> KinesisFirehoseDeliveryStreamProcessingConfiguration
+kinesisFirehoseDeliveryStreamProcessingConfiguration enabledarg processorsarg =
+  KinesisFirehoseDeliveryStreamProcessingConfiguration
+  { _kinesisFirehoseDeliveryStreamProcessingConfigurationEnabled = enabledarg
+  , _kinesisFirehoseDeliveryStreamProcessingConfigurationProcessors = processorsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-processingconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-processingconfiguration-enabled
+kfdspcEnabled :: Lens' KinesisFirehoseDeliveryStreamProcessingConfiguration (Val Bool)
+kfdspcEnabled = lens _kinesisFirehoseDeliveryStreamProcessingConfigurationEnabled (\s a -> s { _kinesisFirehoseDeliveryStreamProcessingConfigurationEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-processingconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-processingconfiguration-processors
+kfdspcProcessors :: Lens' KinesisFirehoseDeliveryStreamProcessingConfiguration [KinesisFirehoseDeliveryStreamProcessor]
+kfdspcProcessors = lens _kinesisFirehoseDeliveryStreamProcessingConfigurationProcessors (\s a -> s { _kinesisFirehoseDeliveryStreamProcessingConfigurationProcessors = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessor.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessor.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessor.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-processingConfiguration-processor.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessor where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessorParameter
+
+-- | Full data type definition for KinesisFirehoseDeliveryStreamProcessor. See
+-- 'kinesisFirehoseDeliveryStreamProcessor' for a more convenient
+-- constructor.
+data KinesisFirehoseDeliveryStreamProcessor =
+  KinesisFirehoseDeliveryStreamProcessor
+  { _kinesisFirehoseDeliveryStreamProcessorParameters :: [KinesisFirehoseDeliveryStreamProcessorParameter]
+  , _kinesisFirehoseDeliveryStreamProcessorType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamProcessor where
+  toJSON KinesisFirehoseDeliveryStreamProcessor{..} =
+    object $
+    catMaybes
+    [ (Just . ("Parameters",) . toJSON) _kinesisFirehoseDeliveryStreamProcessorParameters
+    , (Just . ("Type",) . toJSON) _kinesisFirehoseDeliveryStreamProcessorType
+    ]
+
+instance FromJSON KinesisFirehoseDeliveryStreamProcessor where
+  parseJSON (Object obj) =
+    KinesisFirehoseDeliveryStreamProcessor <$>
+      (obj .: "Parameters") <*>
+      (obj .: "Type")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisFirehoseDeliveryStreamProcessor' containing
+-- required fields as arguments.
+kinesisFirehoseDeliveryStreamProcessor
+  :: [KinesisFirehoseDeliveryStreamProcessorParameter] -- ^ 'kfdspParameters'
+  -> Val Text -- ^ 'kfdspType'
+  -> KinesisFirehoseDeliveryStreamProcessor
+kinesisFirehoseDeliveryStreamProcessor parametersarg typearg =
+  KinesisFirehoseDeliveryStreamProcessor
+  { _kinesisFirehoseDeliveryStreamProcessorParameters = parametersarg
+  , _kinesisFirehoseDeliveryStreamProcessorType = typearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-processingConfiguration-processor.html#cfn-kinesisfirehose-kinesisdeliverystream-processingconfiguration-processor-parameter
+kfdspParameters :: Lens' KinesisFirehoseDeliveryStreamProcessor [KinesisFirehoseDeliveryStreamProcessorParameter]
+kfdspParameters = lens _kinesisFirehoseDeliveryStreamProcessorParameters (\s a -> s { _kinesisFirehoseDeliveryStreamProcessorParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-processingConfiguration-processor.html#cfn-kinesisfirehose-kinesisdeliverystream-processingConfiguration-processor-type
+kfdspType :: Lens' KinesisFirehoseDeliveryStreamProcessor (Val Text)
+kfdspType = lens _kinesisFirehoseDeliveryStreamProcessorType (\s a -> s { _kinesisFirehoseDeliveryStreamProcessorType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessorParameter.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessorParameter.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessorParameter.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-ProcessingConfiguration.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessorParameter where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- KinesisFirehoseDeliveryStreamProcessorParameter. See
+-- 'kinesisFirehoseDeliveryStreamProcessorParameter' for a more convenient
+-- constructor.
+data KinesisFirehoseDeliveryStreamProcessorParameter =
+  KinesisFirehoseDeliveryStreamProcessorParameter
+  { _kinesisFirehoseDeliveryStreamProcessorParameterParameterName :: Val Text
+  , _kinesisFirehoseDeliveryStreamProcessorParameterParameterValue :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamProcessorParameter where
+  toJSON KinesisFirehoseDeliveryStreamProcessorParameter{..} =
+    object $
+    catMaybes
+    [ (Just . ("ParameterName",) . toJSON) _kinesisFirehoseDeliveryStreamProcessorParameterParameterName
+    , (Just . ("ParameterValue",) . toJSON) _kinesisFirehoseDeliveryStreamProcessorParameterParameterValue
+    ]
+
+instance FromJSON KinesisFirehoseDeliveryStreamProcessorParameter where
+  parseJSON (Object obj) =
+    KinesisFirehoseDeliveryStreamProcessorParameter <$>
+      (obj .: "ParameterName") <*>
+      (obj .: "ParameterValue")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisFirehoseDeliveryStreamProcessorParameter'
+-- containing required fields as arguments.
+kinesisFirehoseDeliveryStreamProcessorParameter
+  :: Val Text -- ^ 'kfdsppParameterName'
+  -> Val Text -- ^ 'kfdsppParameterValue'
+  -> KinesisFirehoseDeliveryStreamProcessorParameter
+kinesisFirehoseDeliveryStreamProcessorParameter parameterNamearg parameterValuearg =
+  KinesisFirehoseDeliveryStreamProcessorParameter
+  { _kinesisFirehoseDeliveryStreamProcessorParameterParameterName = parameterNamearg
+  , _kinesisFirehoseDeliveryStreamProcessorParameterParameterValue = parameterValuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-ProcessingConfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-processingconfiguration-processor-parameter-parameterName
+kfdsppParameterName :: Lens' KinesisFirehoseDeliveryStreamProcessorParameter (Val Text)
+kfdsppParameterName = lens _kinesisFirehoseDeliveryStreamProcessorParameterParameterName (\s a -> s { _kinesisFirehoseDeliveryStreamProcessorParameterParameterName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-ProcessingConfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-processingconfiguration-processor-parameter-parameterValue
+kfdsppParameterValue :: Lens' KinesisFirehoseDeliveryStreamProcessorParameter (Val Text)
+kfdsppParameterValue = lens _kinesisFirehoseDeliveryStreamProcessorParameterParameterValue (\s a -> s { _kinesisFirehoseDeliveryStreamProcessorParameterParameterValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration.hs
@@ -15,6 +15,7 @@
 import Stratosphere.Values
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCopyCommand
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessingConfiguration
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration
 
 -- | Full data type definition for
@@ -27,6 +28,7 @@
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationClusterJDBCURL :: Val Text
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationCopyCommand :: KinesisFirehoseDeliveryStreamCopyCommand
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationPassword :: Val Text
+  , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationProcessingConfiguration :: Maybe KinesisFirehoseDeliveryStreamProcessingConfiguration
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationRoleARN :: Val Text
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationS3Configuration :: KinesisFirehoseDeliveryStreamS3DestinationConfiguration
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationUsername :: Val Text
@@ -40,6 +42,7 @@
     , (Just . ("ClusterJDBCURL",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationClusterJDBCURL
     , (Just . ("CopyCommand",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationCopyCommand
     , (Just . ("Password",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationPassword
+    , fmap (("ProcessingConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationProcessingConfiguration
     , (Just . ("RoleARN",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationRoleARN
     , (Just . ("S3Configuration",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationS3Configuration
     , (Just . ("Username",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationUsername
@@ -52,6 +55,7 @@
       (obj .: "ClusterJDBCURL") <*>
       (obj .: "CopyCommand") <*>
       (obj .: "Password") <*>
+      (obj .:? "ProcessingConfiguration") <*>
       (obj .: "RoleARN") <*>
       (obj .: "S3Configuration") <*>
       (obj .: "Username")
@@ -74,6 +78,7 @@
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationClusterJDBCURL = clusterJDBCURLarg
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationCopyCommand = copyCommandarg
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationPassword = passwordarg
+  , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationProcessingConfiguration = Nothing
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationRoleARN = roleARNarg
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationS3Configuration = s3Configurationarg
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationUsername = usernamearg
@@ -94,6 +99,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-redshiftdestinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-redshiftdestinationconfiguration-password
 kfdsrdcPassword :: Lens' KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration (Val Text)
 kfdsrdcPassword = lens _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationPassword (\s a -> s { _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationPassword = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-redshiftdestinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-processingconfiguration
+kfdsrdcProcessingConfiguration :: Lens' KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration (Maybe KinesisFirehoseDeliveryStreamProcessingConfiguration)
+kfdsrdcProcessingConfiguration = lens _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationProcessingConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationProcessingConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-redshiftdestinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-redshiftdestinationconfiguration-rolearn
 kfdsrdcRoleARN :: Lens' KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration (Val Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketAbortIncompleteMultipartUpload.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketAbortIncompleteMultipartUpload.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketAbortIncompleteMultipartUpload.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-abortincompletemultipartupload.html
+
+module Stratosphere.ResourceProperties.S3BucketAbortIncompleteMultipartUpload where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for S3BucketAbortIncompleteMultipartUpload. See
+-- 's3BucketAbortIncompleteMultipartUpload' for a more convenient
+-- constructor.
+data S3BucketAbortIncompleteMultipartUpload =
+  S3BucketAbortIncompleteMultipartUpload
+  { _s3BucketAbortIncompleteMultipartUploadDaysAfterInitiation :: Val Integer
+  } deriving (Show, Eq)
+
+instance ToJSON S3BucketAbortIncompleteMultipartUpload where
+  toJSON S3BucketAbortIncompleteMultipartUpload{..} =
+    object $
+    catMaybes
+    [ (Just . ("DaysAfterInitiation",) . toJSON . fmap Integer') _s3BucketAbortIncompleteMultipartUploadDaysAfterInitiation
+    ]
+
+instance FromJSON S3BucketAbortIncompleteMultipartUpload where
+  parseJSON (Object obj) =
+    S3BucketAbortIncompleteMultipartUpload <$>
+      fmap (fmap unInteger') (obj .: "DaysAfterInitiation")
+  parseJSON _ = mempty
+
+-- | Constructor for 'S3BucketAbortIncompleteMultipartUpload' containing
+-- required fields as arguments.
+s3BucketAbortIncompleteMultipartUpload
+  :: Val Integer -- ^ 'sbaimuDaysAfterInitiation'
+  -> S3BucketAbortIncompleteMultipartUpload
+s3BucketAbortIncompleteMultipartUpload daysAfterInitiationarg =
+  S3BucketAbortIncompleteMultipartUpload
+  { _s3BucketAbortIncompleteMultipartUploadDaysAfterInitiation = daysAfterInitiationarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-abortincompletemultipartupload.html#cfn-s3-bucket-abortincompletemultipartupload-daysafterinitiation
+sbaimuDaysAfterInitiation :: Lens' S3BucketAbortIncompleteMultipartUpload (Val Integer)
+sbaimuDaysAfterInitiation = lens _s3BucketAbortIncompleteMultipartUploadDaysAfterInitiation (\s a -> s { _s3BucketAbortIncompleteMultipartUploadDaysAfterInitiation = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketAccelerateConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketAccelerateConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketAccelerateConfiguration.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accelerateconfiguration.html
+
+module Stratosphere.ResourceProperties.S3BucketAccelerateConfiguration where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for S3BucketAccelerateConfiguration. See
+-- 's3BucketAccelerateConfiguration' for a more convenient constructor.
+data S3BucketAccelerateConfiguration =
+  S3BucketAccelerateConfiguration
+  { _s3BucketAccelerateConfigurationAccelerationStatus :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON S3BucketAccelerateConfiguration where
+  toJSON S3BucketAccelerateConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("AccelerationStatus",) . toJSON) _s3BucketAccelerateConfigurationAccelerationStatus
+    ]
+
+instance FromJSON S3BucketAccelerateConfiguration where
+  parseJSON (Object obj) =
+    S3BucketAccelerateConfiguration <$>
+      (obj .: "AccelerationStatus")
+  parseJSON _ = mempty
+
+-- | Constructor for 'S3BucketAccelerateConfiguration' containing required
+-- fields as arguments.
+s3BucketAccelerateConfiguration
+  :: Val Text -- ^ 'sbacAccelerationStatus'
+  -> S3BucketAccelerateConfiguration
+s3BucketAccelerateConfiguration accelerationStatusarg =
+  S3BucketAccelerateConfiguration
+  { _s3BucketAccelerateConfigurationAccelerationStatus = accelerationStatusarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accelerateconfiguration.html#cfn-s3-bucket-accelerateconfiguration-accelerationstatus
+sbacAccelerationStatus :: Lens' S3BucketAccelerateConfiguration (Val Text)
+sbacAccelerationStatus = lens _s3BucketAccelerateConfigurationAccelerationStatus (\s a -> s { _s3BucketAccelerateConfigurationAccelerationStatus = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketRule.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketRule.hs
@@ -13,30 +13,35 @@
 import Data.Text
 
 import Stratosphere.Values
+import Stratosphere.ResourceProperties.S3BucketAbortIncompleteMultipartUpload
 import Stratosphere.ResourceProperties.S3BucketNoncurrentVersionTransition
+import Stratosphere.ResourceProperties.S3BucketTagFilter
 import Stratosphere.ResourceProperties.S3BucketTransition
 
 -- | Full data type definition for S3BucketRule. See 's3BucketRule' for a more
 -- convenient constructor.
 data S3BucketRule =
   S3BucketRule
-  { _s3BucketRuleExpirationDate :: Maybe (Val Text)
+  { _s3BucketRuleAbortIncompleteMultipartUpload :: Maybe S3BucketAbortIncompleteMultipartUpload
+  , _s3BucketRuleExpirationDate :: Maybe (Val Text)
   , _s3BucketRuleExpirationInDays :: Maybe (Val Integer)
   , _s3BucketRuleId :: Maybe (Val Text)
   , _s3BucketRuleNoncurrentVersionExpirationInDays :: Maybe (Val Integer)
   , _s3BucketRuleNoncurrentVersionTransition :: Maybe S3BucketNoncurrentVersionTransition
-  , _s3BucketRuleNoncurrentVersionTransitions :: Maybe S3BucketNoncurrentVersionTransition
+  , _s3BucketRuleNoncurrentVersionTransitions :: Maybe [S3BucketNoncurrentVersionTransition]
   , _s3BucketRulePrefix :: Maybe (Val Text)
   , _s3BucketRuleStatus :: Val Text
+  , _s3BucketRuleTagFilters :: Maybe [S3BucketTagFilter]
   , _s3BucketRuleTransition :: Maybe S3BucketTransition
-  , _s3BucketRuleTransitions :: Maybe S3BucketTransition
+  , _s3BucketRuleTransitions :: Maybe [S3BucketTransition]
   } deriving (Show, Eq)
 
 instance ToJSON S3BucketRule where
   toJSON S3BucketRule{..} =
     object $
     catMaybes
-    [ fmap (("ExpirationDate",) . toJSON) _s3BucketRuleExpirationDate
+    [ fmap (("AbortIncompleteMultipartUpload",) . toJSON) _s3BucketRuleAbortIncompleteMultipartUpload
+    , fmap (("ExpirationDate",) . toJSON) _s3BucketRuleExpirationDate
     , fmap (("ExpirationInDays",) . toJSON . fmap Integer') _s3BucketRuleExpirationInDays
     , fmap (("Id",) . toJSON) _s3BucketRuleId
     , fmap (("NoncurrentVersionExpirationInDays",) . toJSON . fmap Integer') _s3BucketRuleNoncurrentVersionExpirationInDays
@@ -44,6 +49,7 @@
     , fmap (("NoncurrentVersionTransitions",) . toJSON) _s3BucketRuleNoncurrentVersionTransitions
     , fmap (("Prefix",) . toJSON) _s3BucketRulePrefix
     , (Just . ("Status",) . toJSON) _s3BucketRuleStatus
+    , fmap (("TagFilters",) . toJSON) _s3BucketRuleTagFilters
     , fmap (("Transition",) . toJSON) _s3BucketRuleTransition
     , fmap (("Transitions",) . toJSON) _s3BucketRuleTransitions
     ]
@@ -51,6 +57,7 @@
 instance FromJSON S3BucketRule where
   parseJSON (Object obj) =
     S3BucketRule <$>
+      (obj .:? "AbortIncompleteMultipartUpload") <*>
       (obj .:? "ExpirationDate") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "ExpirationInDays") <*>
       (obj .:? "Id") <*>
@@ -59,6 +66,7 @@
       (obj .:? "NoncurrentVersionTransitions") <*>
       (obj .:? "Prefix") <*>
       (obj .: "Status") <*>
+      (obj .:? "TagFilters") <*>
       (obj .:? "Transition") <*>
       (obj .:? "Transitions")
   parseJSON _ = mempty
@@ -69,7 +77,8 @@
   -> S3BucketRule
 s3BucketRule statusarg =
   S3BucketRule
-  { _s3BucketRuleExpirationDate = Nothing
+  { _s3BucketRuleAbortIncompleteMultipartUpload = Nothing
+  , _s3BucketRuleExpirationDate = Nothing
   , _s3BucketRuleExpirationInDays = Nothing
   , _s3BucketRuleId = Nothing
   , _s3BucketRuleNoncurrentVersionExpirationInDays = Nothing
@@ -77,10 +86,15 @@
   , _s3BucketRuleNoncurrentVersionTransitions = Nothing
   , _s3BucketRulePrefix = Nothing
   , _s3BucketRuleStatus = statusarg
+  , _s3BucketRuleTagFilters = Nothing
   , _s3BucketRuleTransition = Nothing
   , _s3BucketRuleTransitions = Nothing
   }
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-rule-abortincompletemultipartupload
+sbrAbortIncompleteMultipartUpload :: Lens' S3BucketRule (Maybe S3BucketAbortIncompleteMultipartUpload)
+sbrAbortIncompleteMultipartUpload = lens _s3BucketRuleAbortIncompleteMultipartUpload (\s a -> s { _s3BucketRuleAbortIncompleteMultipartUpload = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-expirationdate
 sbrExpirationDate :: Lens' S3BucketRule (Maybe (Val Text))
 sbrExpirationDate = lens _s3BucketRuleExpirationDate (\s a -> s { _s3BucketRuleExpirationDate = a })
@@ -102,7 +116,7 @@
 sbrNoncurrentVersionTransition = lens _s3BucketRuleNoncurrentVersionTransition (\s a -> s { _s3BucketRuleNoncurrentVersionTransition = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-noncurrentversiontransitions
-sbrNoncurrentVersionTransitions :: Lens' S3BucketRule (Maybe S3BucketNoncurrentVersionTransition)
+sbrNoncurrentVersionTransitions :: Lens' S3BucketRule (Maybe [S3BucketNoncurrentVersionTransition])
 sbrNoncurrentVersionTransitions = lens _s3BucketRuleNoncurrentVersionTransitions (\s a -> s { _s3BucketRuleNoncurrentVersionTransitions = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-prefix
@@ -113,10 +127,14 @@
 sbrStatus :: Lens' S3BucketRule (Val Text)
 sbrStatus = lens _s3BucketRuleStatus (\s a -> s { _s3BucketRuleStatus = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-rule-tagfilters
+sbrTagFilters :: Lens' S3BucketRule (Maybe [S3BucketTagFilter])
+sbrTagFilters = lens _s3BucketRuleTagFilters (\s a -> s { _s3BucketRuleTagFilters = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-transition
 sbrTransition :: Lens' S3BucketRule (Maybe S3BucketTransition)
 sbrTransition = lens _s3BucketRuleTransition (\s a -> s { _s3BucketRuleTransition = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-transitions
-sbrTransitions :: Lens' S3BucketRule (Maybe S3BucketTransition)
+sbrTransitions :: Lens' S3BucketRule (Maybe [S3BucketTransition])
 sbrTransitions = lens _s3BucketRuleTransitions (\s a -> s { _s3BucketRuleTransitions = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketTagFilter.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketTagFilter.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketTagFilter.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-tagfilter.html
+
+module Stratosphere.ResourceProperties.S3BucketTagFilter where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for S3BucketTagFilter. See 's3BucketTagFilter'
+-- for a more convenient constructor.
+data S3BucketTagFilter =
+  S3BucketTagFilter
+  { _s3BucketTagFilterKey :: Val Text
+  , _s3BucketTagFilterValue :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON S3BucketTagFilter where
+  toJSON S3BucketTagFilter{..} =
+    object $
+    catMaybes
+    [ (Just . ("Key",) . toJSON) _s3BucketTagFilterKey
+    , (Just . ("Value",) . toJSON) _s3BucketTagFilterValue
+    ]
+
+instance FromJSON S3BucketTagFilter where
+  parseJSON (Object obj) =
+    S3BucketTagFilter <$>
+      (obj .: "Key") <*>
+      (obj .: "Value")
+  parseJSON _ = mempty
+
+-- | Constructor for 'S3BucketTagFilter' containing required fields as
+-- arguments.
+s3BucketTagFilter
+  :: Val Text -- ^ 'sbtfKey'
+  -> Val Text -- ^ 'sbtfValue'
+  -> S3BucketTagFilter
+s3BucketTagFilter keyarg valuearg =
+  S3BucketTagFilter
+  { _s3BucketTagFilterKey = keyarg
+  , _s3BucketTagFilterValue = valuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-tagfilter.html#cfn-s3-bucket-tagfilter-key
+sbtfKey :: Lens' S3BucketTagFilter (Val Text)
+sbtfKey = lens _s3BucketTagFilterKey (\s a -> s { _s3BucketTagFilterKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-tagfilter.html#cfn-s3-bucket-tagfilter-value
+sbtfValue :: Lens' S3BucketTagFilter (Val Text)
+sbtfValue = lens _s3BucketTagFilterValue (\s a -> s { _s3BucketTagFilterValue = a })
diff --git a/library-gen/Stratosphere/Resources.hs b/library-gen/Stratosphere/Resources.hs
--- a/library-gen/Stratosphere/Resources.hs
+++ b/library-gen/Stratosphere/Resources.hs
@@ -51,9 +51,12 @@
 import Stratosphere.Resources.ApiGatewayBasePathMapping as X
 import Stratosphere.Resources.ApiGatewayClientCertificate as X
 import Stratosphere.Resources.ApiGatewayDeployment as X
+import Stratosphere.Resources.ApiGatewayDocumentationPart as X
+import Stratosphere.Resources.ApiGatewayDocumentationVersion as X
 import Stratosphere.Resources.ApiGatewayDomainName as X
 import Stratosphere.Resources.ApiGatewayMethod as X
 import Stratosphere.Resources.ApiGatewayModel as X
+import Stratosphere.Resources.ApiGatewayRequestValidator as X
 import Stratosphere.Resources.ApiGatewayResource as X
 import Stratosphere.Resources.ApiGatewayRestApi as X
 import Stratosphere.Resources.ApiGatewayStage as X
@@ -189,6 +192,9 @@
 import Stratosphere.Resources.KMSAlias as X
 import Stratosphere.Resources.KMSKey as X
 import Stratosphere.Resources.KinesisStream as X
+import Stratosphere.Resources.KinesisAnalyticsApplication as X
+import Stratosphere.Resources.KinesisAnalyticsApplicationOutput as X
+import Stratosphere.Resources.KinesisAnalyticsApplicationReferenceDataSource as X
 import Stratosphere.Resources.KinesisFirehoseDeliveryStream as X
 import Stratosphere.Resources.LambdaAlias as X
 import Stratosphere.Resources.LambdaEventSourceMapping as X
@@ -257,6 +263,7 @@
 import Stratosphere.ResourceProperties.ApiGatewayApiKeyStageKey as X
 import Stratosphere.ResourceProperties.ApiGatewayDeploymentMethodSetting as X
 import Stratosphere.ResourceProperties.ApiGatewayDeploymentStageDescription as X
+import Stratosphere.ResourceProperties.ApiGatewayDocumentationPartLocation as X
 import Stratosphere.ResourceProperties.ApiGatewayMethodIntegration as X
 import Stratosphere.ResourceProperties.ApiGatewayMethodIntegrationResponse as X
 import Stratosphere.ResourceProperties.ApiGatewayMethodMethodResponse as X
@@ -276,7 +283,11 @@
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupTagProperty as X
 import Stratosphere.ResourceProperties.AutoScalingLaunchConfigurationBlockDevice as X
 import Stratosphere.ResourceProperties.AutoScalingLaunchConfigurationBlockDeviceMapping as X
+import Stratosphere.ResourceProperties.AutoScalingScalingPolicyCustomizedMetricSpecification as X
+import Stratosphere.ResourceProperties.AutoScalingScalingPolicyMetricDimension as X
+import Stratosphere.ResourceProperties.AutoScalingScalingPolicyPredefinedMetricSpecification as X
 import Stratosphere.ResourceProperties.AutoScalingScalingPolicyStepAdjustment as X
+import Stratosphere.ResourceProperties.AutoScalingScalingPolicyTargetTrackingConfiguration as X
 import Stratosphere.ResourceProperties.CertificateManagerCertificateDomainValidationOption as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionCacheBehavior as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionCookies as X
@@ -292,6 +303,8 @@
 import Stratosphere.ResourceProperties.CloudFrontDistributionRestrictions as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionS3OriginConfig as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionViewerCertificate as X
+import Stratosphere.ResourceProperties.CloudTrailTrailDataResource as X
+import Stratosphere.ResourceProperties.CloudTrailTrailEventSelector as X
 import Stratosphere.ResourceProperties.CloudWatchAlarmDimension as X
 import Stratosphere.ResourceProperties.CodeBuildProjectArtifacts as X
 import Stratosphere.ResourceProperties.CodeBuildProjectEnvironment as X
@@ -494,6 +507,28 @@
 import Stratosphere.ResourceProperties.IoTTopicRuleSnsAction as X
 import Stratosphere.ResourceProperties.IoTTopicRuleSqsAction as X
 import Stratosphere.ResourceProperties.IoTTopicRuleTopicRulePayload as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationCSVMappingParameters as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputParallelism as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputSchema as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationJSONMappingParameters as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationKinesisFirehoseInput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationKinesisStreamsInput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationMappingParameters as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationRecordColumn as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationRecordFormat as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputDestinationSchema as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputKinesisFirehoseOutput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputKinesisStreamsOutput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputOutput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceMappingParameters as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceRecordColumn as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceRecordFormat as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamBufferingHints as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCopyCommand as X
@@ -501,7 +536,11 @@
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchRetryOptions as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamEncryptionConfiguration as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamKMSEncryptionConfig as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessingConfiguration as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessor as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessorParameter as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration as X
 import Stratosphere.ResourceProperties.LambdaFunctionCode as X
@@ -544,6 +583,8 @@
 import Stratosphere.ResourceProperties.Route53RecordSetGroupAliasTarget as X
 import Stratosphere.ResourceProperties.Route53RecordSetGroupGeoLocation as X
 import Stratosphere.ResourceProperties.Route53RecordSetGroupRecordSet as X
+import Stratosphere.ResourceProperties.S3BucketAbortIncompleteMultipartUpload as X
+import Stratosphere.ResourceProperties.S3BucketAccelerateConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketCorsConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketCorsRule as X
 import Stratosphere.ResourceProperties.S3BucketFilterRule as X
@@ -563,6 +604,7 @@
 import Stratosphere.ResourceProperties.S3BucketRoutingRuleCondition as X
 import Stratosphere.ResourceProperties.S3BucketRule as X
 import Stratosphere.ResourceProperties.S3BucketS3KeyFilter as X
+import Stratosphere.ResourceProperties.S3BucketTagFilter as X
 import Stratosphere.ResourceProperties.S3BucketTopicConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketTransition as X
 import Stratosphere.ResourceProperties.S3BucketVersioningConfiguration as X
@@ -612,9 +654,12 @@
   | ApiGatewayBasePathMappingProperties ApiGatewayBasePathMapping
   | ApiGatewayClientCertificateProperties ApiGatewayClientCertificate
   | ApiGatewayDeploymentProperties ApiGatewayDeployment
+  | ApiGatewayDocumentationPartProperties ApiGatewayDocumentationPart
+  | ApiGatewayDocumentationVersionProperties ApiGatewayDocumentationVersion
   | ApiGatewayDomainNameProperties ApiGatewayDomainName
   | ApiGatewayMethodProperties ApiGatewayMethod
   | ApiGatewayModelProperties ApiGatewayModel
+  | ApiGatewayRequestValidatorProperties ApiGatewayRequestValidator
   | ApiGatewayResourceProperties ApiGatewayResource
   | ApiGatewayRestApiProperties ApiGatewayRestApi
   | ApiGatewayStageProperties ApiGatewayStage
@@ -750,6 +795,9 @@
   | KMSAliasProperties KMSAlias
   | KMSKeyProperties KMSKey
   | KinesisStreamProperties KinesisStream
+  | KinesisAnalyticsApplicationProperties KinesisAnalyticsApplication
+  | KinesisAnalyticsApplicationOutputProperties KinesisAnalyticsApplicationOutput
+  | KinesisAnalyticsApplicationReferenceDataSourceProperties KinesisAnalyticsApplicationReferenceDataSource
   | KinesisFirehoseDeliveryStreamProperties KinesisFirehoseDeliveryStream
   | LambdaAliasProperties LambdaAlias
   | LambdaEventSourceMappingProperties LambdaEventSourceMapping
@@ -879,12 +927,18 @@
   [ "Type" .= ("AWS::ApiGateway::ClientCertificate" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ApiGatewayDeploymentProperties x) =
   [ "Type" .= ("AWS::ApiGateway::Deployment" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ApiGatewayDocumentationPartProperties x) =
+  [ "Type" .= ("AWS::ApiGateway::DocumentationPart" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ApiGatewayDocumentationVersionProperties x) =
+  [ "Type" .= ("AWS::ApiGateway::DocumentationVersion" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ApiGatewayDomainNameProperties x) =
   [ "Type" .= ("AWS::ApiGateway::DomainName" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ApiGatewayMethodProperties x) =
   [ "Type" .= ("AWS::ApiGateway::Method" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ApiGatewayModelProperties x) =
   [ "Type" .= ("AWS::ApiGateway::Model" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ApiGatewayRequestValidatorProperties x) =
+  [ "Type" .= ("AWS::ApiGateway::RequestValidator" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ApiGatewayResourceProperties x) =
   [ "Type" .= ("AWS::ApiGateway::Resource" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ApiGatewayRestApiProperties x) =
@@ -1155,6 +1209,12 @@
   [ "Type" .= ("AWS::KMS::Key" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (KinesisStreamProperties x) =
   [ "Type" .= ("AWS::Kinesis::Stream" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (KinesisAnalyticsApplicationProperties x) =
+  [ "Type" .= ("AWS::KinesisAnalytics::Application" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (KinesisAnalyticsApplicationOutputProperties x) =
+  [ "Type" .= ("AWS::KinesisAnalytics::ApplicationOutput" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (KinesisAnalyticsApplicationReferenceDataSourceProperties x) =
+  [ "Type" .= ("AWS::KinesisAnalytics::ApplicationReferenceDataSource" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (KinesisFirehoseDeliveryStreamProperties x) =
   [ "Type" .= ("AWS::KinesisFirehose::DeliveryStream" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (LambdaAliasProperties x) =
@@ -1297,9 +1357,12 @@
          "AWS::ApiGateway::BasePathMapping" -> ApiGatewayBasePathMappingProperties <$> (o .: "Properties")
          "AWS::ApiGateway::ClientCertificate" -> ApiGatewayClientCertificateProperties <$> (o .: "Properties")
          "AWS::ApiGateway::Deployment" -> ApiGatewayDeploymentProperties <$> (o .: "Properties")
+         "AWS::ApiGateway::DocumentationPart" -> ApiGatewayDocumentationPartProperties <$> (o .: "Properties")
+         "AWS::ApiGateway::DocumentationVersion" -> ApiGatewayDocumentationVersionProperties <$> (o .: "Properties")
          "AWS::ApiGateway::DomainName" -> ApiGatewayDomainNameProperties <$> (o .: "Properties")
          "AWS::ApiGateway::Method" -> ApiGatewayMethodProperties <$> (o .: "Properties")
          "AWS::ApiGateway::Model" -> ApiGatewayModelProperties <$> (o .: "Properties")
+         "AWS::ApiGateway::RequestValidator" -> ApiGatewayRequestValidatorProperties <$> (o .: "Properties")
          "AWS::ApiGateway::Resource" -> ApiGatewayResourceProperties <$> (o .: "Properties")
          "AWS::ApiGateway::RestApi" -> ApiGatewayRestApiProperties <$> (o .: "Properties")
          "AWS::ApiGateway::Stage" -> ApiGatewayStageProperties <$> (o .: "Properties")
@@ -1435,6 +1498,9 @@
          "AWS::KMS::Alias" -> KMSAliasProperties <$> (o .: "Properties")
          "AWS::KMS::Key" -> KMSKeyProperties <$> (o .: "Properties")
          "AWS::Kinesis::Stream" -> KinesisStreamProperties <$> (o .: "Properties")
+         "AWS::KinesisAnalytics::Application" -> KinesisAnalyticsApplicationProperties <$> (o .: "Properties")
+         "AWS::KinesisAnalytics::ApplicationOutput" -> KinesisAnalyticsApplicationOutputProperties <$> (o .: "Properties")
+         "AWS::KinesisAnalytics::ApplicationReferenceDataSource" -> KinesisAnalyticsApplicationReferenceDataSourceProperties <$> (o .: "Properties")
          "AWS::KinesisFirehose::DeliveryStream" -> KinesisFirehoseDeliveryStreamProperties <$> (o .: "Properties")
          "AWS::Lambda::Alias" -> LambdaAliasProperties <$> (o .: "Properties")
          "AWS::Lambda::EventSourceMapping" -> LambdaEventSourceMappingProperties <$> (o .: "Properties")
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayAuthorizer.hs b/library-gen/Stratosphere/Resources/ApiGatewayAuthorizer.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayAuthorizer.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayAuthorizer.hs
@@ -26,7 +26,7 @@
   , _apiGatewayAuthorizerIdentityValidationExpression :: Maybe (Val Text)
   , _apiGatewayAuthorizerName :: Maybe (Val Text)
   , _apiGatewayAuthorizerProviderARNs :: Maybe (ValList Text)
-  , _apiGatewayAuthorizerRestApiId :: Maybe (Val Text)
+  , _apiGatewayAuthorizerRestApiId :: Val Text
   , _apiGatewayAuthorizerType :: Maybe (Val AuthorizerType)
   } deriving (Show, Eq)
 
@@ -41,7 +41,7 @@
     , fmap (("IdentityValidationExpression",) . toJSON) _apiGatewayAuthorizerIdentityValidationExpression
     , fmap (("Name",) . toJSON) _apiGatewayAuthorizerName
     , fmap (("ProviderARNs",) . toJSON) _apiGatewayAuthorizerProviderARNs
-    , fmap (("RestApiId",) . toJSON) _apiGatewayAuthorizerRestApiId
+    , (Just . ("RestApiId",) . toJSON) _apiGatewayAuthorizerRestApiId
     , fmap (("Type",) . toJSON) _apiGatewayAuthorizerType
     ]
 
@@ -55,15 +55,16 @@
       (obj .:? "IdentityValidationExpression") <*>
       (obj .:? "Name") <*>
       (obj .:? "ProviderARNs") <*>
-      (obj .:? "RestApiId") <*>
+      (obj .: "RestApiId") <*>
       (obj .:? "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayAuthorizer' containing required fields as
 -- arguments.
 apiGatewayAuthorizer
-  :: ApiGatewayAuthorizer
-apiGatewayAuthorizer  =
+  :: Val Text -- ^ 'agaRestApiId'
+  -> ApiGatewayAuthorizer
+apiGatewayAuthorizer restApiIdarg =
   ApiGatewayAuthorizer
   { _apiGatewayAuthorizerAuthorizerCredentials = Nothing
   , _apiGatewayAuthorizerAuthorizerResultTtlInSeconds = Nothing
@@ -72,7 +73,7 @@
   , _apiGatewayAuthorizerIdentityValidationExpression = Nothing
   , _apiGatewayAuthorizerName = Nothing
   , _apiGatewayAuthorizerProviderARNs = Nothing
-  , _apiGatewayAuthorizerRestApiId = Nothing
+  , _apiGatewayAuthorizerRestApiId = restApiIdarg
   , _apiGatewayAuthorizerType = Nothing
   }
 
@@ -105,7 +106,7 @@
 agaProviderARNs = lens _apiGatewayAuthorizerProviderARNs (\s a -> s { _apiGatewayAuthorizerProviderARNs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-restapiid
-agaRestApiId :: Lens' ApiGatewayAuthorizer (Maybe (Val Text))
+agaRestApiId :: Lens' ApiGatewayAuthorizer (Val Text)
 agaRestApiId = lens _apiGatewayAuthorizerRestApiId (\s a -> s { _apiGatewayAuthorizerRestApiId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-type
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayBasePathMapping.hs b/library-gen/Stratosphere/Resources/ApiGatewayBasePathMapping.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayBasePathMapping.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayBasePathMapping.hs
@@ -20,7 +20,7 @@
 data ApiGatewayBasePathMapping =
   ApiGatewayBasePathMapping
   { _apiGatewayBasePathMappingBasePath :: Maybe (Val Text)
-  , _apiGatewayBasePathMappingDomainName :: Maybe (Val Text)
+  , _apiGatewayBasePathMappingDomainName :: Val Text
   , _apiGatewayBasePathMappingRestApiId :: Maybe (Val Text)
   , _apiGatewayBasePathMappingStage :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -30,7 +30,7 @@
     object $
     catMaybes
     [ fmap (("BasePath",) . toJSON) _apiGatewayBasePathMappingBasePath
-    , fmap (("DomainName",) . toJSON) _apiGatewayBasePathMappingDomainName
+    , (Just . ("DomainName",) . toJSON) _apiGatewayBasePathMappingDomainName
     , fmap (("RestApiId",) . toJSON) _apiGatewayBasePathMappingRestApiId
     , fmap (("Stage",) . toJSON) _apiGatewayBasePathMappingStage
     ]
@@ -39,7 +39,7 @@
   parseJSON (Object obj) =
     ApiGatewayBasePathMapping <$>
       (obj .:? "BasePath") <*>
-      (obj .:? "DomainName") <*>
+      (obj .: "DomainName") <*>
       (obj .:? "RestApiId") <*>
       (obj .:? "Stage")
   parseJSON _ = mempty
@@ -47,11 +47,12 @@
 -- | Constructor for 'ApiGatewayBasePathMapping' containing required fields as
 -- arguments.
 apiGatewayBasePathMapping
-  :: ApiGatewayBasePathMapping
-apiGatewayBasePathMapping  =
+  :: Val Text -- ^ 'agbpmDomainName'
+  -> ApiGatewayBasePathMapping
+apiGatewayBasePathMapping domainNamearg =
   ApiGatewayBasePathMapping
   { _apiGatewayBasePathMappingBasePath = Nothing
-  , _apiGatewayBasePathMappingDomainName = Nothing
+  , _apiGatewayBasePathMappingDomainName = domainNamearg
   , _apiGatewayBasePathMappingRestApiId = Nothing
   , _apiGatewayBasePathMappingStage = Nothing
   }
@@ -61,7 +62,7 @@
 agbpmBasePath = lens _apiGatewayBasePathMappingBasePath (\s a -> s { _apiGatewayBasePathMappingBasePath = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-basepathmapping.html#cfn-apigateway-basepathmapping-domainname
-agbpmDomainName :: Lens' ApiGatewayBasePathMapping (Maybe (Val Text))
+agbpmDomainName :: Lens' ApiGatewayBasePathMapping (Val Text)
 agbpmDomainName = lens _apiGatewayBasePathMappingDomainName (\s a -> s { _apiGatewayBasePathMappingDomainName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-basepathmapping.html#cfn-apigateway-basepathmapping-restapiid
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayDocumentationPart.hs b/library-gen/Stratosphere/Resources/ApiGatewayDocumentationPart.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ApiGatewayDocumentationPart.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationpart.html
+
+module Stratosphere.Resources.ApiGatewayDocumentationPart where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.ApiGatewayDocumentationPartLocation
+
+-- | Full data type definition for ApiGatewayDocumentationPart. See
+-- 'apiGatewayDocumentationPart' for a more convenient constructor.
+data ApiGatewayDocumentationPart =
+  ApiGatewayDocumentationPart
+  { _apiGatewayDocumentationPartLocation :: ApiGatewayDocumentationPartLocation
+  , _apiGatewayDocumentationPartProperties :: Val Text
+  , _apiGatewayDocumentationPartRestApiId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ApiGatewayDocumentationPart where
+  toJSON ApiGatewayDocumentationPart{..} =
+    object $
+    catMaybes
+    [ (Just . ("Location",) . toJSON) _apiGatewayDocumentationPartLocation
+    , (Just . ("Properties",) . toJSON) _apiGatewayDocumentationPartProperties
+    , (Just . ("RestApiId",) . toJSON) _apiGatewayDocumentationPartRestApiId
+    ]
+
+instance FromJSON ApiGatewayDocumentationPart where
+  parseJSON (Object obj) =
+    ApiGatewayDocumentationPart <$>
+      (obj .: "Location") <*>
+      (obj .: "Properties") <*>
+      (obj .: "RestApiId")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ApiGatewayDocumentationPart' containing required fields
+-- as arguments.
+apiGatewayDocumentationPart
+  :: ApiGatewayDocumentationPartLocation -- ^ 'agdpLocation'
+  -> Val Text -- ^ 'agdpProperties'
+  -> Val Text -- ^ 'agdpRestApiId'
+  -> ApiGatewayDocumentationPart
+apiGatewayDocumentationPart locationarg propertiesarg restApiIdarg =
+  ApiGatewayDocumentationPart
+  { _apiGatewayDocumentationPartLocation = locationarg
+  , _apiGatewayDocumentationPartProperties = propertiesarg
+  , _apiGatewayDocumentationPartRestApiId = restApiIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationpart.html#cfn-apigateway-documentationpart-location
+agdpLocation :: Lens' ApiGatewayDocumentationPart ApiGatewayDocumentationPartLocation
+agdpLocation = lens _apiGatewayDocumentationPartLocation (\s a -> s { _apiGatewayDocumentationPartLocation = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationpart.html#cfn-apigateway-documentationpart-properties
+agdpProperties :: Lens' ApiGatewayDocumentationPart (Val Text)
+agdpProperties = lens _apiGatewayDocumentationPartProperties (\s a -> s { _apiGatewayDocumentationPartProperties = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationpart.html#cfn-apigateway-documentationpart-restapiid
+agdpRestApiId :: Lens' ApiGatewayDocumentationPart (Val Text)
+agdpRestApiId = lens _apiGatewayDocumentationPartRestApiId (\s a -> s { _apiGatewayDocumentationPartRestApiId = a })
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayDocumentationVersion.hs b/library-gen/Stratosphere/Resources/ApiGatewayDocumentationVersion.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ApiGatewayDocumentationVersion.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationversion.html
+
+module Stratosphere.Resources.ApiGatewayDocumentationVersion where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for ApiGatewayDocumentationVersion. See
+-- 'apiGatewayDocumentationVersion' for a more convenient constructor.
+data ApiGatewayDocumentationVersion =
+  ApiGatewayDocumentationVersion
+  { _apiGatewayDocumentationVersionDescription :: Maybe (Val Text)
+  , _apiGatewayDocumentationVersionDocumentationVersion :: Val Text
+  , _apiGatewayDocumentationVersionRestApiId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ApiGatewayDocumentationVersion where
+  toJSON ApiGatewayDocumentationVersion{..} =
+    object $
+    catMaybes
+    [ fmap (("Description",) . toJSON) _apiGatewayDocumentationVersionDescription
+    , (Just . ("DocumentationVersion",) . toJSON) _apiGatewayDocumentationVersionDocumentationVersion
+    , (Just . ("RestApiId",) . toJSON) _apiGatewayDocumentationVersionRestApiId
+    ]
+
+instance FromJSON ApiGatewayDocumentationVersion where
+  parseJSON (Object obj) =
+    ApiGatewayDocumentationVersion <$>
+      (obj .:? "Description") <*>
+      (obj .: "DocumentationVersion") <*>
+      (obj .: "RestApiId")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ApiGatewayDocumentationVersion' containing required
+-- fields as arguments.
+apiGatewayDocumentationVersion
+  :: Val Text -- ^ 'agdvDocumentationVersion'
+  -> Val Text -- ^ 'agdvRestApiId'
+  -> ApiGatewayDocumentationVersion
+apiGatewayDocumentationVersion documentationVersionarg restApiIdarg =
+  ApiGatewayDocumentationVersion
+  { _apiGatewayDocumentationVersionDescription = Nothing
+  , _apiGatewayDocumentationVersionDocumentationVersion = documentationVersionarg
+  , _apiGatewayDocumentationVersionRestApiId = restApiIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationversion.html#cfn-apigateway-documentationversion-description
+agdvDescription :: Lens' ApiGatewayDocumentationVersion (Maybe (Val Text))
+agdvDescription = lens _apiGatewayDocumentationVersionDescription (\s a -> s { _apiGatewayDocumentationVersionDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationversion.html#cfn-apigateway-documentationversion-documentationversion
+agdvDocumentationVersion :: Lens' ApiGatewayDocumentationVersion (Val Text)
+agdvDocumentationVersion = lens _apiGatewayDocumentationVersionDocumentationVersion (\s a -> s { _apiGatewayDocumentationVersionDocumentationVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationversion.html#cfn-apigateway-documentationversion-restapiid
+agdvRestApiId :: Lens' ApiGatewayDocumentationVersion (Val Text)
+agdvRestApiId = lens _apiGatewayDocumentationVersionRestApiId (\s a -> s { _apiGatewayDocumentationVersionRestApiId = a })
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayMethod.hs b/library-gen/Stratosphere/Resources/ApiGatewayMethod.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayMethod.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayMethod.hs
@@ -29,8 +29,8 @@
   , _apiGatewayMethodMethodResponses :: Maybe [ApiGatewayMethodMethodResponse]
   , _apiGatewayMethodRequestModels :: Maybe Object
   , _apiGatewayMethodRequestParameters :: Maybe Object
-  , _apiGatewayMethodResourceId :: Maybe (Val Text)
-  , _apiGatewayMethodRestApiId :: Maybe (Val Text)
+  , _apiGatewayMethodResourceId :: Val Text
+  , _apiGatewayMethodRestApiId :: Val Text
   } deriving (Show, Eq)
 
 instance ToJSON ApiGatewayMethod where
@@ -45,8 +45,8 @@
     , fmap (("MethodResponses",) . toJSON) _apiGatewayMethodMethodResponses
     , fmap (("RequestModels",) . toJSON) _apiGatewayMethodRequestModels
     , fmap (("RequestParameters",) . toJSON) _apiGatewayMethodRequestParameters
-    , fmap (("ResourceId",) . toJSON) _apiGatewayMethodResourceId
-    , fmap (("RestApiId",) . toJSON) _apiGatewayMethodRestApiId
+    , (Just . ("ResourceId",) . toJSON) _apiGatewayMethodResourceId
+    , (Just . ("RestApiId",) . toJSON) _apiGatewayMethodRestApiId
     ]
 
 instance FromJSON ApiGatewayMethod where
@@ -60,16 +60,18 @@
       (obj .:? "MethodResponses") <*>
       (obj .:? "RequestModels") <*>
       (obj .:? "RequestParameters") <*>
-      (obj .:? "ResourceId") <*>
-      (obj .:? "RestApiId")
+      (obj .: "ResourceId") <*>
+      (obj .: "RestApiId")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayMethod' containing required fields as
 -- arguments.
 apiGatewayMethod
   :: Val HttpMethod -- ^ 'agmeHttpMethod'
+  -> Val Text -- ^ 'agmeResourceId'
+  -> Val Text -- ^ 'agmeRestApiId'
   -> ApiGatewayMethod
-apiGatewayMethod httpMethodarg =
+apiGatewayMethod httpMethodarg resourceIdarg restApiIdarg =
   ApiGatewayMethod
   { _apiGatewayMethodApiKeyRequired = Nothing
   , _apiGatewayMethodAuthorizationType = Nothing
@@ -79,8 +81,8 @@
   , _apiGatewayMethodMethodResponses = Nothing
   , _apiGatewayMethodRequestModels = Nothing
   , _apiGatewayMethodRequestParameters = Nothing
-  , _apiGatewayMethodResourceId = Nothing
-  , _apiGatewayMethodRestApiId = Nothing
+  , _apiGatewayMethodResourceId = resourceIdarg
+  , _apiGatewayMethodRestApiId = restApiIdarg
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-apikeyrequired
@@ -116,9 +118,9 @@
 agmeRequestParameters = lens _apiGatewayMethodRequestParameters (\s a -> s { _apiGatewayMethodRequestParameters = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-resourceid
-agmeResourceId :: Lens' ApiGatewayMethod (Maybe (Val Text))
+agmeResourceId :: Lens' ApiGatewayMethod (Val Text)
 agmeResourceId = lens _apiGatewayMethodResourceId (\s a -> s { _apiGatewayMethodResourceId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-restapiid
-agmeRestApiId :: Lens' ApiGatewayMethod (Maybe (Val Text))
+agmeRestApiId :: Lens' ApiGatewayMethod (Val Text)
 agmeRestApiId = lens _apiGatewayMethodRestApiId (\s a -> s { _apiGatewayMethodRestApiId = a })
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayRequestValidator.hs b/library-gen/Stratosphere/Resources/ApiGatewayRequestValidator.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ApiGatewayRequestValidator.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-requestvalidator.html
+
+module Stratosphere.Resources.ApiGatewayRequestValidator where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for ApiGatewayRequestValidator. See
+-- 'apiGatewayRequestValidator' for a more convenient constructor.
+data ApiGatewayRequestValidator =
+  ApiGatewayRequestValidator
+  { _apiGatewayRequestValidatorName :: Maybe (Val Text)
+  , _apiGatewayRequestValidatorRestApiId :: Val Text
+  , _apiGatewayRequestValidatorValidateRequestBody :: Maybe (Val Bool)
+  , _apiGatewayRequestValidatorValidateRequestParameters :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON ApiGatewayRequestValidator where
+  toJSON ApiGatewayRequestValidator{..} =
+    object $
+    catMaybes
+    [ fmap (("Name",) . toJSON) _apiGatewayRequestValidatorName
+    , (Just . ("RestApiId",) . toJSON) _apiGatewayRequestValidatorRestApiId
+    , fmap (("ValidateRequestBody",) . toJSON . fmap Bool') _apiGatewayRequestValidatorValidateRequestBody
+    , fmap (("ValidateRequestParameters",) . toJSON . fmap Bool') _apiGatewayRequestValidatorValidateRequestParameters
+    ]
+
+instance FromJSON ApiGatewayRequestValidator where
+  parseJSON (Object obj) =
+    ApiGatewayRequestValidator <$>
+      (obj .:? "Name") <*>
+      (obj .: "RestApiId") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "ValidateRequestBody") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "ValidateRequestParameters")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ApiGatewayRequestValidator' containing required fields
+-- as arguments.
+apiGatewayRequestValidator
+  :: Val Text -- ^ 'agrvRestApiId'
+  -> ApiGatewayRequestValidator
+apiGatewayRequestValidator restApiIdarg =
+  ApiGatewayRequestValidator
+  { _apiGatewayRequestValidatorName = Nothing
+  , _apiGatewayRequestValidatorRestApiId = restApiIdarg
+  , _apiGatewayRequestValidatorValidateRequestBody = Nothing
+  , _apiGatewayRequestValidatorValidateRequestParameters = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-requestvalidator.html#cfn-apigateway-requestvalidator-name
+agrvName :: Lens' ApiGatewayRequestValidator (Maybe (Val Text))
+agrvName = lens _apiGatewayRequestValidatorName (\s a -> s { _apiGatewayRequestValidatorName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-requestvalidator.html#cfn-apigateway-requestvalidator-restapiid
+agrvRestApiId :: Lens' ApiGatewayRequestValidator (Val Text)
+agrvRestApiId = lens _apiGatewayRequestValidatorRestApiId (\s a -> s { _apiGatewayRequestValidatorRestApiId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-requestvalidator.html#cfn-apigateway-requestvalidator-validaterequestbody
+agrvValidateRequestBody :: Lens' ApiGatewayRequestValidator (Maybe (Val Bool))
+agrvValidateRequestBody = lens _apiGatewayRequestValidatorValidateRequestBody (\s a -> s { _apiGatewayRequestValidatorValidateRequestBody = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-requestvalidator.html#cfn-apigateway-requestvalidator-validaterequestparameters
+agrvValidateRequestParameters :: Lens' ApiGatewayRequestValidator (Maybe (Val Bool))
+agrvValidateRequestParameters = lens _apiGatewayRequestValidatorValidateRequestParameters (\s a -> s { _apiGatewayRequestValidatorValidateRequestParameters = a })
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayStage.hs b/library-gen/Stratosphere/Resources/ApiGatewayStage.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayStage.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayStage.hs
@@ -24,8 +24,9 @@
   , _apiGatewayStageClientCertificateId :: Maybe (Val Text)
   , _apiGatewayStageDeploymentId :: Maybe (Val Text)
   , _apiGatewayStageDescription :: Maybe (Val Text)
+  , _apiGatewayStageDocumentationVersion :: Maybe (Val Text)
   , _apiGatewayStageMethodSettings :: Maybe [ApiGatewayStageMethodSetting]
-  , _apiGatewayStageRestApiId :: Maybe (Val Text)
+  , _apiGatewayStageRestApiId :: Val Text
   , _apiGatewayStageStageName :: Maybe (Val Text)
   , _apiGatewayStageVariables :: Maybe Object
   } deriving (Show, Eq)
@@ -39,8 +40,9 @@
     , fmap (("ClientCertificateId",) . toJSON) _apiGatewayStageClientCertificateId
     , fmap (("DeploymentId",) . toJSON) _apiGatewayStageDeploymentId
     , fmap (("Description",) . toJSON) _apiGatewayStageDescription
+    , fmap (("DocumentationVersion",) . toJSON) _apiGatewayStageDocumentationVersion
     , fmap (("MethodSettings",) . toJSON) _apiGatewayStageMethodSettings
-    , fmap (("RestApiId",) . toJSON) _apiGatewayStageRestApiId
+    , (Just . ("RestApiId",) . toJSON) _apiGatewayStageRestApiId
     , fmap (("StageName",) . toJSON) _apiGatewayStageStageName
     , fmap (("Variables",) . toJSON) _apiGatewayStageVariables
     ]
@@ -53,8 +55,9 @@
       (obj .:? "ClientCertificateId") <*>
       (obj .:? "DeploymentId") <*>
       (obj .:? "Description") <*>
+      (obj .:? "DocumentationVersion") <*>
       (obj .:? "MethodSettings") <*>
-      (obj .:? "RestApiId") <*>
+      (obj .: "RestApiId") <*>
       (obj .:? "StageName") <*>
       (obj .:? "Variables")
   parseJSON _ = mempty
@@ -62,16 +65,18 @@
 -- | Constructor for 'ApiGatewayStage' containing required fields as
 -- arguments.
 apiGatewayStage
-  :: ApiGatewayStage
-apiGatewayStage  =
+  :: Val Text -- ^ 'agsRestApiId'
+  -> ApiGatewayStage
+apiGatewayStage restApiIdarg =
   ApiGatewayStage
   { _apiGatewayStageCacheClusterEnabled = Nothing
   , _apiGatewayStageCacheClusterSize = Nothing
   , _apiGatewayStageClientCertificateId = Nothing
   , _apiGatewayStageDeploymentId = Nothing
   , _apiGatewayStageDescription = Nothing
+  , _apiGatewayStageDocumentationVersion = Nothing
   , _apiGatewayStageMethodSettings = Nothing
-  , _apiGatewayStageRestApiId = Nothing
+  , _apiGatewayStageRestApiId = restApiIdarg
   , _apiGatewayStageStageName = Nothing
   , _apiGatewayStageVariables = Nothing
   }
@@ -96,12 +101,16 @@
 agsDescription :: Lens' ApiGatewayStage (Maybe (Val Text))
 agsDescription = lens _apiGatewayStageDescription (\s a -> s { _apiGatewayStageDescription = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-documentationversion
+agsDocumentationVersion :: Lens' ApiGatewayStage (Maybe (Val Text))
+agsDocumentationVersion = lens _apiGatewayStageDocumentationVersion (\s a -> s { _apiGatewayStageDocumentationVersion = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-methodsettings
 agsMethodSettings :: Lens' ApiGatewayStage (Maybe [ApiGatewayStageMethodSetting])
 agsMethodSettings = lens _apiGatewayStageMethodSettings (\s a -> s { _apiGatewayStageMethodSettings = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-restapiid
-agsRestApiId :: Lens' ApiGatewayStage (Maybe (Val Text))
+agsRestApiId :: Lens' ApiGatewayStage (Val Text)
 agsRestApiId = lens _apiGatewayStageRestApiId (\s a -> s { _apiGatewayStageRestApiId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-stagename
diff --git a/library-gen/Stratosphere/Resources/AutoScalingScalingPolicy.hs b/library-gen/Stratosphere/Resources/AutoScalingScalingPolicy.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingScalingPolicy.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingScalingPolicy.hs
@@ -14,12 +14,13 @@
 
 import Stratosphere.Values
 import Stratosphere.ResourceProperties.AutoScalingScalingPolicyStepAdjustment
+import Stratosphere.ResourceProperties.AutoScalingScalingPolicyTargetTrackingConfiguration
 
 -- | Full data type definition for AutoScalingScalingPolicy. See
 -- 'autoScalingScalingPolicy' for a more convenient constructor.
 data AutoScalingScalingPolicy =
   AutoScalingScalingPolicy
-  { _autoScalingScalingPolicyAdjustmentType :: Val Text
+  { _autoScalingScalingPolicyAdjustmentType :: Maybe (Val Text)
   , _autoScalingScalingPolicyAutoScalingGroupName :: Val Text
   , _autoScalingScalingPolicyCooldown :: Maybe (Val Text)
   , _autoScalingScalingPolicyEstimatedInstanceWarmup :: Maybe (Val Integer)
@@ -28,13 +29,14 @@
   , _autoScalingScalingPolicyPolicyType :: Maybe (Val Text)
   , _autoScalingScalingPolicyScalingAdjustment :: Maybe (Val Integer)
   , _autoScalingScalingPolicyStepAdjustments :: Maybe [AutoScalingScalingPolicyStepAdjustment]
+  , _autoScalingScalingPolicyTargetTrackingConfiguration :: Maybe AutoScalingScalingPolicyTargetTrackingConfiguration
   } deriving (Show, Eq)
 
 instance ToJSON AutoScalingScalingPolicy where
   toJSON AutoScalingScalingPolicy{..} =
     object $
     catMaybes
-    [ (Just . ("AdjustmentType",) . toJSON) _autoScalingScalingPolicyAdjustmentType
+    [ fmap (("AdjustmentType",) . toJSON) _autoScalingScalingPolicyAdjustmentType
     , (Just . ("AutoScalingGroupName",) . toJSON) _autoScalingScalingPolicyAutoScalingGroupName
     , fmap (("Cooldown",) . toJSON) _autoScalingScalingPolicyCooldown
     , fmap (("EstimatedInstanceWarmup",) . toJSON . fmap Integer') _autoScalingScalingPolicyEstimatedInstanceWarmup
@@ -43,12 +45,13 @@
     , fmap (("PolicyType",) . toJSON) _autoScalingScalingPolicyPolicyType
     , fmap (("ScalingAdjustment",) . toJSON . fmap Integer') _autoScalingScalingPolicyScalingAdjustment
     , fmap (("StepAdjustments",) . toJSON) _autoScalingScalingPolicyStepAdjustments
+    , fmap (("TargetTrackingConfiguration",) . toJSON) _autoScalingScalingPolicyTargetTrackingConfiguration
     ]
 
 instance FromJSON AutoScalingScalingPolicy where
   parseJSON (Object obj) =
     AutoScalingScalingPolicy <$>
-      (obj .: "AdjustmentType") <*>
+      (obj .:? "AdjustmentType") <*>
       (obj .: "AutoScalingGroupName") <*>
       (obj .:? "Cooldown") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "EstimatedInstanceWarmup") <*>
@@ -56,18 +59,18 @@
       fmap (fmap (fmap unInteger')) (obj .:? "MinAdjustmentMagnitude") <*>
       (obj .:? "PolicyType") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "ScalingAdjustment") <*>
-      (obj .:? "StepAdjustments")
+      (obj .:? "StepAdjustments") <*>
+      (obj .:? "TargetTrackingConfiguration")
   parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingScalingPolicy' containing required fields as
 -- arguments.
 autoScalingScalingPolicy
-  :: Val Text -- ^ 'asspAdjustmentType'
-  -> Val Text -- ^ 'asspAutoScalingGroupName'
+  :: Val Text -- ^ 'asspAutoScalingGroupName'
   -> AutoScalingScalingPolicy
-autoScalingScalingPolicy adjustmentTypearg autoScalingGroupNamearg =
+autoScalingScalingPolicy autoScalingGroupNamearg =
   AutoScalingScalingPolicy
-  { _autoScalingScalingPolicyAdjustmentType = adjustmentTypearg
+  { _autoScalingScalingPolicyAdjustmentType = Nothing
   , _autoScalingScalingPolicyAutoScalingGroupName = autoScalingGroupNamearg
   , _autoScalingScalingPolicyCooldown = Nothing
   , _autoScalingScalingPolicyEstimatedInstanceWarmup = Nothing
@@ -76,10 +79,11 @@
   , _autoScalingScalingPolicyPolicyType = Nothing
   , _autoScalingScalingPolicyScalingAdjustment = Nothing
   , _autoScalingScalingPolicyStepAdjustments = Nothing
+  , _autoScalingScalingPolicyTargetTrackingConfiguration = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-adjustmenttype
-asspAdjustmentType :: Lens' AutoScalingScalingPolicy (Val Text)
+asspAdjustmentType :: Lens' AutoScalingScalingPolicy (Maybe (Val Text))
 asspAdjustmentType = lens _autoScalingScalingPolicyAdjustmentType (\s a -> s { _autoScalingScalingPolicyAdjustmentType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-autoscalinggroupname
@@ -113,3 +117,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-stepadjustments
 asspStepAdjustments :: Lens' AutoScalingScalingPolicy (Maybe [AutoScalingScalingPolicyStepAdjustment])
 asspStepAdjustments = lens _autoScalingScalingPolicyStepAdjustments (\s a -> s { _autoScalingScalingPolicyStepAdjustments = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration
+asspTargetTrackingConfiguration :: Lens' AutoScalingScalingPolicy (Maybe AutoScalingScalingPolicyTargetTrackingConfiguration)
+asspTargetTrackingConfiguration = lens _autoScalingScalingPolicyTargetTrackingConfiguration (\s a -> s { _autoScalingScalingPolicyTargetTrackingConfiguration = a })
diff --git a/library-gen/Stratosphere/Resources/CloudTrailTrail.hs b/library-gen/Stratosphere/Resources/CloudTrailTrail.hs
--- a/library-gen/Stratosphere/Resources/CloudTrailTrail.hs
+++ b/library-gen/Stratosphere/Resources/CloudTrailTrail.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html
 
 module Stratosphere.Resources.CloudTrailTrail where
 
@@ -13,6 +13,7 @@
 import Data.Text
 
 import Stratosphere.Values
+import Stratosphere.ResourceProperties.CloudTrailTrailEventSelector
 import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for CloudTrailTrail. See 'cloudTrailTrail' for
@@ -22,6 +23,7 @@
   { _cloudTrailTrailCloudWatchLogsLogGroupArn :: Maybe (Val Text)
   , _cloudTrailTrailCloudWatchLogsRoleArn :: Maybe (Val Text)
   , _cloudTrailTrailEnableLogFileValidation :: Maybe (Val Bool)
+  , _cloudTrailTrailEventSelectors :: Maybe [CloudTrailTrailEventSelector]
   , _cloudTrailTrailIncludeGlobalServiceEvents :: Maybe (Val Bool)
   , _cloudTrailTrailIsLogging :: Val Bool
   , _cloudTrailTrailIsMultiRegionTrail :: Maybe (Val Bool)
@@ -40,6 +42,7 @@
     [ fmap (("CloudWatchLogsLogGroupArn",) . toJSON) _cloudTrailTrailCloudWatchLogsLogGroupArn
     , fmap (("CloudWatchLogsRoleArn",) . toJSON) _cloudTrailTrailCloudWatchLogsRoleArn
     , fmap (("EnableLogFileValidation",) . toJSON . fmap Bool') _cloudTrailTrailEnableLogFileValidation
+    , fmap (("EventSelectors",) . toJSON) _cloudTrailTrailEventSelectors
     , fmap (("IncludeGlobalServiceEvents",) . toJSON . fmap Bool') _cloudTrailTrailIncludeGlobalServiceEvents
     , (Just . ("IsLogging",) . toJSON . fmap Bool') _cloudTrailTrailIsLogging
     , fmap (("IsMultiRegionTrail",) . toJSON . fmap Bool') _cloudTrailTrailIsMultiRegionTrail
@@ -57,6 +60,7 @@
       (obj .:? "CloudWatchLogsLogGroupArn") <*>
       (obj .:? "CloudWatchLogsRoleArn") <*>
       fmap (fmap (fmap unBool')) (obj .:? "EnableLogFileValidation") <*>
+      (obj .:? "EventSelectors") <*>
       fmap (fmap (fmap unBool')) (obj .:? "IncludeGlobalServiceEvents") <*>
       fmap (fmap unBool') (obj .: "IsLogging") <*>
       fmap (fmap (fmap unBool')) (obj .:? "IsMultiRegionTrail") <*>
@@ -79,6 +83,7 @@
   { _cloudTrailTrailCloudWatchLogsLogGroupArn = Nothing
   , _cloudTrailTrailCloudWatchLogsRoleArn = Nothing
   , _cloudTrailTrailEnableLogFileValidation = Nothing
+  , _cloudTrailTrailEventSelectors = Nothing
   , _cloudTrailTrailIncludeGlobalServiceEvents = Nothing
   , _cloudTrailTrailIsLogging = isLoggingarg
   , _cloudTrailTrailIsMultiRegionTrail = Nothing
@@ -90,50 +95,54 @@
   , _cloudTrailTrailTrailName = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-cloudwatchlogsloggroupaem
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-cloudwatchlogsloggrouparn
 cttCloudWatchLogsLogGroupArn :: Lens' CloudTrailTrail (Maybe (Val Text))
 cttCloudWatchLogsLogGroupArn = lens _cloudTrailTrailCloudWatchLogsLogGroupArn (\s a -> s { _cloudTrailTrailCloudWatchLogsLogGroupArn = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-cloudwatchlogsrolearn
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-cloudwatchlogsrolearn
 cttCloudWatchLogsRoleArn :: Lens' CloudTrailTrail (Maybe (Val Text))
 cttCloudWatchLogsRoleArn = lens _cloudTrailTrailCloudWatchLogsRoleArn (\s a -> s { _cloudTrailTrailCloudWatchLogsRoleArn = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-enablelogfilevalidation
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-enablelogfilevalidation
 cttEnableLogFileValidation :: Lens' CloudTrailTrail (Maybe (Val Bool))
 cttEnableLogFileValidation = lens _cloudTrailTrailEnableLogFileValidation (\s a -> s { _cloudTrailTrailEnableLogFileValidation = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-includeglobalserviceevents
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-eventselectors
+cttEventSelectors :: Lens' CloudTrailTrail (Maybe [CloudTrailTrailEventSelector])
+cttEventSelectors = lens _cloudTrailTrailEventSelectors (\s a -> s { _cloudTrailTrailEventSelectors = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-includeglobalserviceevents
 cttIncludeGlobalServiceEvents :: Lens' CloudTrailTrail (Maybe (Val Bool))
 cttIncludeGlobalServiceEvents = lens _cloudTrailTrailIncludeGlobalServiceEvents (\s a -> s { _cloudTrailTrailIncludeGlobalServiceEvents = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-islogging
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-islogging
 cttIsLogging :: Lens' CloudTrailTrail (Val Bool)
 cttIsLogging = lens _cloudTrailTrailIsLogging (\s a -> s { _cloudTrailTrailIsLogging = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-ismultiregiontrail
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-ismultiregiontrail
 cttIsMultiRegionTrail :: Lens' CloudTrailTrail (Maybe (Val Bool))
 cttIsMultiRegionTrail = lens _cloudTrailTrailIsMultiRegionTrail (\s a -> s { _cloudTrailTrailIsMultiRegionTrail = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-kmskeyid
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-kmskeyid
 cttKMSKeyId :: Lens' CloudTrailTrail (Maybe (Val Text))
 cttKMSKeyId = lens _cloudTrailTrailKMSKeyId (\s a -> s { _cloudTrailTrailKMSKeyId = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-s3bucketname
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-s3bucketname
 cttS3BucketName :: Lens' CloudTrailTrail (Val Text)
 cttS3BucketName = lens _cloudTrailTrailS3BucketName (\s a -> s { _cloudTrailTrailS3BucketName = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-s3keyprefix
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-s3keyprefix
 cttS3KeyPrefix :: Lens' CloudTrailTrail (Maybe (Val Text))
 cttS3KeyPrefix = lens _cloudTrailTrailS3KeyPrefix (\s a -> s { _cloudTrailTrailS3KeyPrefix = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-snstopicname
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-snstopicname
 cttSnsTopicName :: Lens' CloudTrailTrail (Maybe (Val Text))
 cttSnsTopicName = lens _cloudTrailTrailSnsTopicName (\s a -> s { _cloudTrailTrailSnsTopicName = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#cfn-cloudtrail-trail-tags
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-tags
 cttTags :: Lens' CloudTrailTrail (Maybe [Tag])
 cttTags = lens _cloudTrailTrailTags (\s a -> s { _cloudTrailTrailTags = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-trailname
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-trailname
 cttTrailName :: Lens' CloudTrailTrail (Maybe (Val Text))
 cttTrailName = lens _cloudTrailTrailTrailName (\s a -> s { _cloudTrailTrailTrailName = a })
diff --git a/library-gen/Stratosphere/Resources/EC2Subnet.hs b/library-gen/Stratosphere/Resources/EC2Subnet.hs
--- a/library-gen/Stratosphere/Resources/EC2Subnet.hs
+++ b/library-gen/Stratosphere/Resources/EC2Subnet.hs
@@ -19,8 +19,10 @@
 -- convenient constructor.
 data EC2Subnet =
   EC2Subnet
-  { _eC2SubnetAvailabilityZone :: Maybe (Val Text)
+  { _eC2SubnetAssignIpv6AddressOnCreation :: Maybe (Val Bool)
+  , _eC2SubnetAvailabilityZone :: Maybe (Val Text)
   , _eC2SubnetCidrBlock :: Val Text
+  , _eC2SubnetIpv6CidrBlock :: Maybe (Val Text)
   , _eC2SubnetMapPublicIpOnLaunch :: Maybe (Val Bool)
   , _eC2SubnetTags :: Maybe [Tag]
   , _eC2SubnetVpcId :: Val Text
@@ -30,8 +32,10 @@
   toJSON EC2Subnet{..} =
     object $
     catMaybes
-    [ fmap (("AvailabilityZone",) . toJSON) _eC2SubnetAvailabilityZone
+    [ fmap (("AssignIpv6AddressOnCreation",) . toJSON . fmap Bool') _eC2SubnetAssignIpv6AddressOnCreation
+    , fmap (("AvailabilityZone",) . toJSON) _eC2SubnetAvailabilityZone
     , (Just . ("CidrBlock",) . toJSON) _eC2SubnetCidrBlock
+    , fmap (("Ipv6CidrBlock",) . toJSON) _eC2SubnetIpv6CidrBlock
     , fmap (("MapPublicIpOnLaunch",) . toJSON . fmap Bool') _eC2SubnetMapPublicIpOnLaunch
     , fmap (("Tags",) . toJSON) _eC2SubnetTags
     , (Just . ("VpcId",) . toJSON) _eC2SubnetVpcId
@@ -40,8 +44,10 @@
 instance FromJSON EC2Subnet where
   parseJSON (Object obj) =
     EC2Subnet <$>
+      fmap (fmap (fmap unBool')) (obj .:? "AssignIpv6AddressOnCreation") <*>
       (obj .:? "AvailabilityZone") <*>
       (obj .: "CidrBlock") <*>
+      (obj .:? "Ipv6CidrBlock") <*>
       fmap (fmap (fmap unBool')) (obj .:? "MapPublicIpOnLaunch") <*>
       (obj .:? "Tags") <*>
       (obj .: "VpcId")
@@ -54,13 +60,19 @@
   -> EC2Subnet
 ec2Subnet cidrBlockarg vpcIdarg =
   EC2Subnet
-  { _eC2SubnetAvailabilityZone = Nothing
+  { _eC2SubnetAssignIpv6AddressOnCreation = Nothing
+  , _eC2SubnetAvailabilityZone = Nothing
   , _eC2SubnetCidrBlock = cidrBlockarg
+  , _eC2SubnetIpv6CidrBlock = Nothing
   , _eC2SubnetMapPublicIpOnLaunch = Nothing
   , _eC2SubnetTags = Nothing
   , _eC2SubnetVpcId = vpcIdarg
   }
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-assignipv6addressoncreation
+ecsAssignIpv6AddressOnCreation :: Lens' EC2Subnet (Maybe (Val Bool))
+ecsAssignIpv6AddressOnCreation = lens _eC2SubnetAssignIpv6AddressOnCreation (\s a -> s { _eC2SubnetAssignIpv6AddressOnCreation = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-availabilityzone
 ecsAvailabilityZone :: Lens' EC2Subnet (Maybe (Val Text))
 ecsAvailabilityZone = lens _eC2SubnetAvailabilityZone (\s a -> s { _eC2SubnetAvailabilityZone = a })
@@ -68,6 +80,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-cidrblock
 ecsCidrBlock :: Lens' EC2Subnet (Val Text)
 ecsCidrBlock = lens _eC2SubnetCidrBlock (\s a -> s { _eC2SubnetCidrBlock = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-ipv6cidrblock
+ecsIpv6CidrBlock :: Lens' EC2Subnet (Maybe (Val Text))
+ecsIpv6CidrBlock = lens _eC2SubnetIpv6CidrBlock (\s a -> s { _eC2SubnetIpv6CidrBlock = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-mappubliciponlaunch
 ecsMapPublicIpOnLaunch :: Lens' EC2Subnet (Maybe (Val Bool))
diff --git a/library-gen/Stratosphere/Resources/KinesisAnalyticsApplication.hs b/library-gen/Stratosphere/Resources/KinesisAnalyticsApplication.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/KinesisAnalyticsApplication.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-application.html
+
+module Stratosphere.Resources.KinesisAnalyticsApplication where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInput
+
+-- | Full data type definition for KinesisAnalyticsApplication. See
+-- 'kinesisAnalyticsApplication' for a more convenient constructor.
+data KinesisAnalyticsApplication =
+  KinesisAnalyticsApplication
+  { _kinesisAnalyticsApplicationApplicationCode :: Maybe (Val Text)
+  , _kinesisAnalyticsApplicationApplicationDescription :: Maybe (Val Text)
+  , _kinesisAnalyticsApplicationApplicationName :: Maybe (Val Text)
+  , _kinesisAnalyticsApplicationInputs :: [KinesisAnalyticsApplicationInput]
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplication where
+  toJSON KinesisAnalyticsApplication{..} =
+    object $
+    catMaybes
+    [ fmap (("ApplicationCode",) . toJSON) _kinesisAnalyticsApplicationApplicationCode
+    , fmap (("ApplicationDescription",) . toJSON) _kinesisAnalyticsApplicationApplicationDescription
+    , fmap (("ApplicationName",) . toJSON) _kinesisAnalyticsApplicationApplicationName
+    , (Just . ("Inputs",) . toJSON) _kinesisAnalyticsApplicationInputs
+    ]
+
+instance FromJSON KinesisAnalyticsApplication where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplication <$>
+      (obj .:? "ApplicationCode") <*>
+      (obj .:? "ApplicationDescription") <*>
+      (obj .:? "ApplicationName") <*>
+      (obj .: "Inputs")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplication' containing required fields
+-- as arguments.
+kinesisAnalyticsApplication
+  :: [KinesisAnalyticsApplicationInput] -- ^ 'kaaInputs'
+  -> KinesisAnalyticsApplication
+kinesisAnalyticsApplication inputsarg =
+  KinesisAnalyticsApplication
+  { _kinesisAnalyticsApplicationApplicationCode = Nothing
+  , _kinesisAnalyticsApplicationApplicationDescription = Nothing
+  , _kinesisAnalyticsApplicationApplicationName = Nothing
+  , _kinesisAnalyticsApplicationInputs = inputsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-application.html#cfn-kinesisanalytics-application-applicationcode
+kaaApplicationCode :: Lens' KinesisAnalyticsApplication (Maybe (Val Text))
+kaaApplicationCode = lens _kinesisAnalyticsApplicationApplicationCode (\s a -> s { _kinesisAnalyticsApplicationApplicationCode = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-application.html#cfn-kinesisanalytics-application-applicationdescription
+kaaApplicationDescription :: Lens' KinesisAnalyticsApplication (Maybe (Val Text))
+kaaApplicationDescription = lens _kinesisAnalyticsApplicationApplicationDescription (\s a -> s { _kinesisAnalyticsApplicationApplicationDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-application.html#cfn-kinesisanalytics-application-applicationname
+kaaApplicationName :: Lens' KinesisAnalyticsApplication (Maybe (Val Text))
+kaaApplicationName = lens _kinesisAnalyticsApplicationApplicationName (\s a -> s { _kinesisAnalyticsApplicationApplicationName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-application.html#cfn-kinesisanalytics-application-inputs
+kaaInputs :: Lens' KinesisAnalyticsApplication [KinesisAnalyticsApplicationInput]
+kaaInputs = lens _kinesisAnalyticsApplicationInputs (\s a -> s { _kinesisAnalyticsApplicationInputs = a })
diff --git a/library-gen/Stratosphere/Resources/KinesisAnalyticsApplicationOutput.hs b/library-gen/Stratosphere/Resources/KinesisAnalyticsApplicationOutput.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/KinesisAnalyticsApplicationOutput.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationoutput.html
+
+module Stratosphere.Resources.KinesisAnalyticsApplicationOutput where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputOutput
+
+-- | Full data type definition for KinesisAnalyticsApplicationOutput. See
+-- 'kinesisAnalyticsApplicationOutput' for a more convenient constructor.
+data KinesisAnalyticsApplicationOutput =
+  KinesisAnalyticsApplicationOutput
+  { _kinesisAnalyticsApplicationOutputApplicationName :: Val Text
+  , _kinesisAnalyticsApplicationOutputOutput :: KinesisAnalyticsApplicationOutputOutput
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationOutput where
+  toJSON KinesisAnalyticsApplicationOutput{..} =
+    object $
+    catMaybes
+    [ (Just . ("ApplicationName",) . toJSON) _kinesisAnalyticsApplicationOutputApplicationName
+    , (Just . ("Output",) . toJSON) _kinesisAnalyticsApplicationOutputOutput
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationOutput where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationOutput <$>
+      (obj .: "ApplicationName") <*>
+      (obj .: "Output")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationOutput' containing required
+-- fields as arguments.
+kinesisAnalyticsApplicationOutput
+  :: Val Text -- ^ 'kaaoApplicationName'
+  -> KinesisAnalyticsApplicationOutputOutput -- ^ 'kaaoOutput'
+  -> KinesisAnalyticsApplicationOutput
+kinesisAnalyticsApplicationOutput applicationNamearg outputarg =
+  KinesisAnalyticsApplicationOutput
+  { _kinesisAnalyticsApplicationOutputApplicationName = applicationNamearg
+  , _kinesisAnalyticsApplicationOutputOutput = outputarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationoutput.html#cfn-kinesisanalytics-applicationoutput-applicationname
+kaaoApplicationName :: Lens' KinesisAnalyticsApplicationOutput (Val Text)
+kaaoApplicationName = lens _kinesisAnalyticsApplicationOutputApplicationName (\s a -> s { _kinesisAnalyticsApplicationOutputApplicationName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationoutput.html#cfn-kinesisanalytics-applicationoutput-output
+kaaoOutput :: Lens' KinesisAnalyticsApplicationOutput KinesisAnalyticsApplicationOutputOutput
+kaaoOutput = lens _kinesisAnalyticsApplicationOutputOutput (\s a -> s { _kinesisAnalyticsApplicationOutputOutput = a })
diff --git a/library-gen/Stratosphere/Resources/KinesisAnalyticsApplicationReferenceDataSource.hs b/library-gen/Stratosphere/Resources/KinesisAnalyticsApplicationReferenceDataSource.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/KinesisAnalyticsApplicationReferenceDataSource.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationreferencedatasource.html
+
+module Stratosphere.Resources.KinesisAnalyticsApplicationReferenceDataSource where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationReferenceDataSource. See
+-- 'kinesisAnalyticsApplicationReferenceDataSource' for a more convenient
+-- constructor.
+data KinesisAnalyticsApplicationReferenceDataSource =
+  KinesisAnalyticsApplicationReferenceDataSource
+  { _kinesisAnalyticsApplicationReferenceDataSourceApplicationName :: Val Text
+  , _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource :: KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationReferenceDataSource where
+  toJSON KinesisAnalyticsApplicationReferenceDataSource{..} =
+    object $
+    catMaybes
+    [ (Just . ("ApplicationName",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceApplicationName
+    , (Just . ("ReferenceDataSource",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationReferenceDataSource where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationReferenceDataSource <$>
+      (obj .: "ApplicationName") <*>
+      (obj .: "ReferenceDataSource")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationReferenceDataSource'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationReferenceDataSource
+  :: Val Text -- ^ 'kaardsApplicationName'
+  -> KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource -- ^ 'kaardsReferenceDataSource'
+  -> KinesisAnalyticsApplicationReferenceDataSource
+kinesisAnalyticsApplicationReferenceDataSource applicationNamearg referenceDataSourcearg =
+  KinesisAnalyticsApplicationReferenceDataSource
+  { _kinesisAnalyticsApplicationReferenceDataSourceApplicationName = applicationNamearg
+  , _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource = referenceDataSourcearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationreferencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-applicationname
+kaardsApplicationName :: Lens' KinesisAnalyticsApplicationReferenceDataSource (Val Text)
+kaardsApplicationName = lens _kinesisAnalyticsApplicationReferenceDataSourceApplicationName (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceApplicationName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationreferencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-referencedatasource
+kaardsReferenceDataSource :: Lens' KinesisAnalyticsApplicationReferenceDataSource KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource
+kaardsReferenceDataSource = lens _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource (\s a -> s { _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource = a })
diff --git a/library-gen/Stratosphere/Resources/KinesisFirehoseDeliveryStream.hs b/library-gen/Stratosphere/Resources/KinesisFirehoseDeliveryStream.hs
--- a/library-gen/Stratosphere/Resources/KinesisFirehoseDeliveryStream.hs
+++ b/library-gen/Stratosphere/Resources/KinesisFirehoseDeliveryStream.hs
@@ -14,6 +14,7 @@
 
 import Stratosphere.Values
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration
 
@@ -23,6 +24,7 @@
   KinesisFirehoseDeliveryStream
   { _kinesisFirehoseDeliveryStreamDeliveryStreamName :: Maybe (Val Text)
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration :: Maybe KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration :: Maybe KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration :: Maybe KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
   , _kinesisFirehoseDeliveryStreamS3DestinationConfiguration :: Maybe KinesisFirehoseDeliveryStreamS3DestinationConfiguration
   } deriving (Show, Eq)
@@ -33,6 +35,7 @@
     catMaybes
     [ fmap (("DeliveryStreamName",) . toJSON) _kinesisFirehoseDeliveryStreamDeliveryStreamName
     , fmap (("ElasticsearchDestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration
+    , fmap (("ExtendedS3DestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
     , fmap (("RedshiftDestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
     , fmap (("S3DestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfiguration
     ]
@@ -42,6 +45,7 @@
     KinesisFirehoseDeliveryStream <$>
       (obj .:? "DeliveryStreamName") <*>
       (obj .:? "ElasticsearchDestinationConfiguration") <*>
+      (obj .:? "ExtendedS3DestinationConfiguration") <*>
       (obj .:? "RedshiftDestinationConfiguration") <*>
       (obj .:? "S3DestinationConfiguration")
   parseJSON _ = mempty
@@ -54,6 +58,7 @@
   KinesisFirehoseDeliveryStream
   { _kinesisFirehoseDeliveryStreamDeliveryStreamName = Nothing
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration = Nothing
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration = Nothing
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration = Nothing
   , _kinesisFirehoseDeliveryStreamS3DestinationConfiguration = Nothing
   }
@@ -65,6 +70,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverstream-elasticsearchdestinationconfiguration
 kfdsElasticsearchDestinationConfiguration :: Lens' KinesisFirehoseDeliveryStream (Maybe KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration)
 kfdsElasticsearchDestinationConfiguration = lens _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration
+kfdsExtendedS3DestinationConfiguration :: Lens' KinesisFirehoseDeliveryStream (Maybe KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration)
+kfdsExtendedS3DestinationConfiguration = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-redshiftdestinationconfiguration
 kfdsRedshiftDestinationConfiguration :: Lens' KinesisFirehoseDeliveryStream (Maybe KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration)
diff --git a/library-gen/Stratosphere/Resources/S3Bucket.hs b/library-gen/Stratosphere/Resources/S3Bucket.hs
--- a/library-gen/Stratosphere/Resources/S3Bucket.hs
+++ b/library-gen/Stratosphere/Resources/S3Bucket.hs
@@ -14,6 +14,7 @@
 
 import Stratosphere.Values
 import Stratosphere.Types
+import Stratosphere.ResourceProperties.S3BucketAccelerateConfiguration
 import Stratosphere.ResourceProperties.S3BucketCorsConfiguration
 import Stratosphere.ResourceProperties.S3BucketLifecycleConfiguration
 import Stratosphere.ResourceProperties.S3BucketLoggingConfiguration
@@ -27,7 +28,8 @@
 -- convenient constructor.
 data S3Bucket =
   S3Bucket
-  { _s3BucketAccessControl :: Maybe (Val CannedACL)
+  { _s3BucketAccelerateConfiguration :: Maybe S3BucketAccelerateConfiguration
+  , _s3BucketAccessControl :: Maybe (Val CannedACL)
   , _s3BucketBucketName :: Maybe (Val Text)
   , _s3BucketCorsConfiguration :: Maybe S3BucketCorsConfiguration
   , _s3BucketLifecycleConfiguration :: Maybe S3BucketLifecycleConfiguration
@@ -43,7 +45,8 @@
   toJSON S3Bucket{..} =
     object $
     catMaybes
-    [ fmap (("AccessControl",) . toJSON) _s3BucketAccessControl
+    [ fmap (("AccelerateConfiguration",) . toJSON) _s3BucketAccelerateConfiguration
+    , fmap (("AccessControl",) . toJSON) _s3BucketAccessControl
     , fmap (("BucketName",) . toJSON) _s3BucketBucketName
     , fmap (("CorsConfiguration",) . toJSON) _s3BucketCorsConfiguration
     , fmap (("LifecycleConfiguration",) . toJSON) _s3BucketLifecycleConfiguration
@@ -58,6 +61,7 @@
 instance FromJSON S3Bucket where
   parseJSON (Object obj) =
     S3Bucket <$>
+      (obj .:? "AccelerateConfiguration") <*>
       (obj .:? "AccessControl") <*>
       (obj .:? "BucketName") <*>
       (obj .:? "CorsConfiguration") <*>
@@ -75,7 +79,8 @@
   :: S3Bucket
 s3Bucket  =
   S3Bucket
-  { _s3BucketAccessControl = Nothing
+  { _s3BucketAccelerateConfiguration = Nothing
+  , _s3BucketAccessControl = Nothing
   , _s3BucketBucketName = Nothing
   , _s3BucketCorsConfiguration = Nothing
   , _s3BucketLifecycleConfiguration = Nothing
@@ -86,6 +91,10 @@
   , _s3BucketVersioningConfiguration = Nothing
   , _s3BucketWebsiteConfiguration = Nothing
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-accelerateconfiguration
+sbAccelerateConfiguration :: Lens' S3Bucket (Maybe S3BucketAccelerateConfiguration)
+sbAccelerateConfiguration = lens _s3BucketAccelerateConfiguration (\s a -> s { _s3BucketAccelerateConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-accesscontrol
 sbAccessControl :: Lens' S3Bucket (Maybe (Val CannedACL))
diff --git a/library-gen/Stratosphere/Resources/S3BucketPolicy.hs b/library-gen/Stratosphere/Resources/S3BucketPolicy.hs
--- a/library-gen/Stratosphere/Resources/S3BucketPolicy.hs
+++ b/library-gen/Stratosphere/Resources/S3BucketPolicy.hs
@@ -49,10 +49,10 @@
   , _s3BucketPolicyPolicyDocument = policyDocumentarg
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html#cfn-s3-bucketpolicy-bucket
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html#aws-properties-s3-policy-bucket
 sbpBucket :: Lens' S3BucketPolicy (Val Text)
 sbpBucket = lens _s3BucketPolicyBucket (\s a -> s { _s3BucketPolicyBucket = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html#cfn-s3-bucketpolicy-policydocument
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html#aws-properties-s3-policy-policydocument
 sbpPolicyDocument :: Lens' S3BucketPolicy Object
 sbpPolicyDocument = lens _s3BucketPolicyPolicyDocument (\s a -> s { _s3BucketPolicyPolicyDocument = a })
diff --git a/library-gen/Stratosphere/Resources/SQSQueue.hs b/library-gen/Stratosphere/Resources/SQSQueue.hs
--- a/library-gen/Stratosphere/Resources/SQSQueue.hs
+++ b/library-gen/Stratosphere/Resources/SQSQueue.hs
@@ -22,6 +22,8 @@
   { _sQSQueueContentBasedDeduplication :: Maybe (Val Bool)
   , _sQSQueueDelaySeconds :: Maybe (Val Integer)
   , _sQSQueueFifoQueue :: Maybe (Val Bool)
+  , _sQSQueueKmsDataKeyReusePeriodSeconds :: Maybe (Val Integer)
+  , _sQSQueueKmsMasterKeyId :: Maybe (Val Text)
   , _sQSQueueMaximumMessageSize :: Maybe (Val Integer)
   , _sQSQueueMessageRetentionPeriod :: Maybe (Val Integer)
   , _sQSQueueQueueName :: Maybe (Val Text)
@@ -37,6 +39,8 @@
     [ fmap (("ContentBasedDeduplication",) . toJSON . fmap Bool') _sQSQueueContentBasedDeduplication
     , fmap (("DelaySeconds",) . toJSON . fmap Integer') _sQSQueueDelaySeconds
     , fmap (("FifoQueue",) . toJSON . fmap Bool') _sQSQueueFifoQueue
+    , fmap (("KmsDataKeyReusePeriodSeconds",) . toJSON . fmap Integer') _sQSQueueKmsDataKeyReusePeriodSeconds
+    , fmap (("KmsMasterKeyId",) . toJSON) _sQSQueueKmsMasterKeyId
     , fmap (("MaximumMessageSize",) . toJSON . fmap Integer') _sQSQueueMaximumMessageSize
     , fmap (("MessageRetentionPeriod",) . toJSON . fmap Integer') _sQSQueueMessageRetentionPeriod
     , fmap (("QueueName",) . toJSON) _sQSQueueQueueName
@@ -51,6 +55,8 @@
       fmap (fmap (fmap unBool')) (obj .:? "ContentBasedDeduplication") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "DelaySeconds") <*>
       fmap (fmap (fmap unBool')) (obj .:? "FifoQueue") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "KmsDataKeyReusePeriodSeconds") <*>
+      (obj .:? "KmsMasterKeyId") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "MaximumMessageSize") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "MessageRetentionPeriod") <*>
       (obj .:? "QueueName") <*>
@@ -67,6 +73,8 @@
   { _sQSQueueContentBasedDeduplication = Nothing
   , _sQSQueueDelaySeconds = Nothing
   , _sQSQueueFifoQueue = Nothing
+  , _sQSQueueKmsDataKeyReusePeriodSeconds = Nothing
+  , _sQSQueueKmsMasterKeyId = Nothing
   , _sQSQueueMaximumMessageSize = Nothing
   , _sQSQueueMessageRetentionPeriod = Nothing
   , _sQSQueueQueueName = Nothing
@@ -86,6 +94,14 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-fifoqueue
 sqsqFifoQueue :: Lens' SQSQueue (Maybe (Val Bool))
 sqsqFifoQueue = lens _sQSQueueFifoQueue (\s a -> s { _sQSQueueFifoQueue = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-kmsdatakeyreuseperiodseconds
+sqsqKmsDataKeyReusePeriodSeconds :: Lens' SQSQueue (Maybe (Val Integer))
+sqsqKmsDataKeyReusePeriodSeconds = lens _sQSQueueKmsDataKeyReusePeriodSeconds (\s a -> s { _sQSQueueKmsDataKeyReusePeriodSeconds = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-kmsmasterkeyid
+sqsqKmsMasterKeyId :: Lens' SQSQueue (Maybe (Val Text))
+sqsqKmsMasterKeyId = lens _sQSQueueKmsMasterKeyId (\s a -> s { _sQSQueueKmsMasterKeyId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-maxmesgsize
 sqsqMaximumMessageSize :: Lens' SQSQueue (Maybe (Val Integer))
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,4 +1,3 @@
-resolver: nightly-2017-05-15
+resolver: nightly-2017-07-31
 packages:
   - '.'
-extra-deps: []
diff --git a/stratosphere.cabal b/stratosphere.cabal
--- a/stratosphere.cabal
+++ b/stratosphere.cabal
@@ -3,7 +3,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           stratosphere
-version:        0.7.1
+version:        0.8.0
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
@@ -63,6 +63,7 @@
       Stratosphere.ResourceProperties.ApiGatewayApiKeyStageKey
       Stratosphere.ResourceProperties.ApiGatewayDeploymentMethodSetting
       Stratosphere.ResourceProperties.ApiGatewayDeploymentStageDescription
+      Stratosphere.ResourceProperties.ApiGatewayDocumentationPartLocation
       Stratosphere.ResourceProperties.ApiGatewayMethodIntegration
       Stratosphere.ResourceProperties.ApiGatewayMethodIntegrationResponse
       Stratosphere.ResourceProperties.ApiGatewayMethodMethodResponse
@@ -82,7 +83,11 @@
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupTagProperty
       Stratosphere.ResourceProperties.AutoScalingLaunchConfigurationBlockDevice
       Stratosphere.ResourceProperties.AutoScalingLaunchConfigurationBlockDeviceMapping
+      Stratosphere.ResourceProperties.AutoScalingScalingPolicyCustomizedMetricSpecification
+      Stratosphere.ResourceProperties.AutoScalingScalingPolicyMetricDimension
+      Stratosphere.ResourceProperties.AutoScalingScalingPolicyPredefinedMetricSpecification
       Stratosphere.ResourceProperties.AutoScalingScalingPolicyStepAdjustment
+      Stratosphere.ResourceProperties.AutoScalingScalingPolicyTargetTrackingConfiguration
       Stratosphere.ResourceProperties.CertificateManagerCertificateDomainValidationOption
       Stratosphere.ResourceProperties.CloudFrontDistributionCacheBehavior
       Stratosphere.ResourceProperties.CloudFrontDistributionCookies
@@ -98,6 +103,8 @@
       Stratosphere.ResourceProperties.CloudFrontDistributionRestrictions
       Stratosphere.ResourceProperties.CloudFrontDistributionS3OriginConfig
       Stratosphere.ResourceProperties.CloudFrontDistributionViewerCertificate
+      Stratosphere.ResourceProperties.CloudTrailTrailDataResource
+      Stratosphere.ResourceProperties.CloudTrailTrailEventSelector
       Stratosphere.ResourceProperties.CloudWatchAlarmDimension
       Stratosphere.ResourceProperties.CodeBuildProjectArtifacts
       Stratosphere.ResourceProperties.CodeBuildProjectEnvironment
@@ -300,6 +307,28 @@
       Stratosphere.ResourceProperties.IoTTopicRuleSnsAction
       Stratosphere.ResourceProperties.IoTTopicRuleSqsAction
       Stratosphere.ResourceProperties.IoTTopicRuleTopicRulePayload
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationCSVMappingParameters
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInput
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputParallelism
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputSchema
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationJSONMappingParameters
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationKinesisFirehoseInput
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationKinesisStreamsInput
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationMappingParameters
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputDestinationSchema
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputKinesisFirehoseOutput
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputKinesisStreamsOutput
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationOutputOutput
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationRecordColumn
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationRecordFormat
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceMappingParameters
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceRecordColumn
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceRecordFormat
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamBufferingHints
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCopyCommand
@@ -307,7 +336,11 @@
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchRetryOptions
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamEncryptionConfiguration
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamKMSEncryptionConfig
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessingConfiguration
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessor
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessorParameter
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration
       Stratosphere.ResourceProperties.LambdaFunctionCode
@@ -350,6 +383,8 @@
       Stratosphere.ResourceProperties.Route53RecordSetGroupAliasTarget
       Stratosphere.ResourceProperties.Route53RecordSetGroupGeoLocation
       Stratosphere.ResourceProperties.Route53RecordSetGroupRecordSet
+      Stratosphere.ResourceProperties.S3BucketAbortIncompleteMultipartUpload
+      Stratosphere.ResourceProperties.S3BucketAccelerateConfiguration
       Stratosphere.ResourceProperties.S3BucketCorsConfiguration
       Stratosphere.ResourceProperties.S3BucketCorsRule
       Stratosphere.ResourceProperties.S3BucketFilterRule
@@ -369,6 +404,7 @@
       Stratosphere.ResourceProperties.S3BucketRoutingRuleCondition
       Stratosphere.ResourceProperties.S3BucketRule
       Stratosphere.ResourceProperties.S3BucketS3KeyFilter
+      Stratosphere.ResourceProperties.S3BucketTagFilter
       Stratosphere.ResourceProperties.S3BucketTopicConfiguration
       Stratosphere.ResourceProperties.S3BucketTransition
       Stratosphere.ResourceProperties.S3BucketVersioningConfiguration
@@ -408,9 +444,12 @@
       Stratosphere.Resources.ApiGatewayBasePathMapping
       Stratosphere.Resources.ApiGatewayClientCertificate
       Stratosphere.Resources.ApiGatewayDeployment
+      Stratosphere.Resources.ApiGatewayDocumentationPart
+      Stratosphere.Resources.ApiGatewayDocumentationVersion
       Stratosphere.Resources.ApiGatewayDomainName
       Stratosphere.Resources.ApiGatewayMethod
       Stratosphere.Resources.ApiGatewayModel
+      Stratosphere.Resources.ApiGatewayRequestValidator
       Stratosphere.Resources.ApiGatewayResource
       Stratosphere.Resources.ApiGatewayRestApi
       Stratosphere.Resources.ApiGatewayStage
@@ -543,6 +582,9 @@
       Stratosphere.Resources.IoTThing
       Stratosphere.Resources.IoTThingPrincipalAttachment
       Stratosphere.Resources.IoTTopicRule
+      Stratosphere.Resources.KinesisAnalyticsApplication
+      Stratosphere.Resources.KinesisAnalyticsApplicationOutput
+      Stratosphere.Resources.KinesisAnalyticsApplicationReferenceDataSource
       Stratosphere.Resources.KinesisFirehoseDeliveryStream
       Stratosphere.Resources.KinesisStream
       Stratosphere.Resources.KMSAlias
@@ -753,29 +795,5 @@
     , hspec
     , hspec-discover
   other-modules:
-      HLint
-      Stratosphere.ValuesSpec
-  default-language: Haskell2010
-
-test-suite style
-  type: exitcode-stdio-1.0
-  main-is: HLint.hs
-  hs-source-dirs:
-      tests
-  build-depends:
-      base >= 4.8 && < 5
-    , aeson >= 0.11
-    , aeson-pretty >= 0.8
-    , bytestring
-    , hashable
-    , lens >= 4.5
-    , template-haskell >= 2.0
-    , text >= 1.1
-    , unordered-containers >= 0.2
-    , base
-    , directory
-    , hlint
-  other-modules:
-      Spec
       Stratosphere.ValuesSpec
   default-language: Haskell2010
diff --git a/tests/HLint.hs b/tests/HLint.hs
deleted file mode 100644
--- a/tests/HLint.hs
+++ /dev/null
@@ -1,19 +0,0 @@
-module Main (main) where
-
-import Language.Haskell.HLint (hlint)
-import System.Exit (exitFailure, exitSuccess)
-
-arguments :: [String]
-arguments =
-  [ "library"
-  , "library-gen"
-  , "tests"
-  , "-i", "Use newtype instead of data"
-  , "-i", "Unused LANGUAGE pragma"
-  , "-i", "Redundant do"
-  ]
-
-main :: IO ()
-main = do
-  hints <- hlint arguments
-  if null hints then exitSuccess else exitFailure
