diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,27 @@
 # Change Log
 
+## 0.33.0
+
+* **BREAKING CHANGE**: We nuked the huge `ResourceProperties` sum type, which
+  greatly reduced compile times, memory usage, and binary sizes for programs
+  that depend on `stratosphere`. See:
+  - https://github.com/frontrowed/stratosphere/issues/95
+  - https://github.com/frontrowed/stratosphere/pull/121
+
+  To migrate to this version, you should just have to remove any uses of the
+  old `ResourceProperties` sum type and pass your resource configuration
+  directly into `Resource`:
+
+  ```diff
+  @@ -32,7 +32,6 @@ dbTemplate =
+   rdsMaster :: Resource
+   rdsMaster =
+     resource "RDSMaster" $
+  -  RDSDBInstanceProperties $
+     rdsdbInstance
+     "db.t2.micro"
+  ```
+
 ## 0.32.0
 
 * **BREAKING CHANGE**: We removed all `FromJSON` instances to reduce compile
diff --git a/examples/auto-scaling-group.hs b/examples/auto-scaling-group.hs
--- a/examples/auto-scaling-group.hs
+++ b/examples/auto-scaling-group.hs
@@ -31,7 +31,6 @@
 asgResource :: Resource
 asgResource =
   resource "AutoScalingGroup" $
-  AutoScalingAutoScalingGroupProperties $
   autoScalingAutoScalingGroup
   "1"
   "4"
@@ -68,7 +67,6 @@
 launchConfigResource :: Resource
 launchConfigResource =
   resource "LaunchConfig" $
-  AutoScalingLaunchConfigurationProperties $
   autoScalingLaunchConfiguration
   "ami-16d18a7e"
   "t2.micro"
diff --git a/examples/rds-master-replica.hs b/examples/rds-master-replica.hs
--- a/examples/rds-master-replica.hs
+++ b/examples/rds-master-replica.hs
@@ -32,7 +32,6 @@
 rdsMaster :: Resource
 rdsMaster =
   resource "RDSMaster" $
-  RDSDBInstanceProperties $
   rdsdbInstance
   "db.t2.micro"
   -- DBInstanceIdentifier is not present in the new schema for some reason
@@ -57,7 +56,6 @@
 rdsReplica :: Resource
 rdsReplica =
   resource "RDSReplica" $
-  RDSDBInstanceProperties $
   rdsdbInstance
   "db.t2.micro"
   -- DBInstanceIdentifier is not present in the new schema for some reason
@@ -71,7 +69,6 @@
 rdsParamGroup :: Resource
 rdsParamGroup =
   resource "RDSParamGroup" $
-  RDSDBParameterGroupProperties $
   rdsdbParameterGroup
   "Parameter group for RDS instances"
   "postgres9.3"
diff --git a/examples/s3-copy.hs b/examples/s3-copy.hs
--- a/examples/s3-copy.hs
+++ b/examples/s3-copy.hs
@@ -27,7 +27,6 @@
 lambda :: Resource
 lambda = (
   resource "CopyS3ObjectLambda" $
-  LambdaFunctionProperties $
   lambdaFunction
     lambdaCode
     "index.handler"
@@ -60,7 +59,6 @@
 role' :: Resource
 role' =
   resource "IAMRole" $
-  IAMRoleProperties $
   iamRole
   rolePolicyDocumentObject
   & iamrPolicies ?~ [ executePolicy ]
@@ -109,7 +107,6 @@
 incomingS3Bucket :: Resource
 incomingS3Bucket = (
   resource "IncomingBucket" $
-  S3BucketProperties $
   s3Bucket
   & sbBucketName ?~ "stratosphere-s3-copy-incoming"
   & sbNotificationConfiguration ?~ config
@@ -127,14 +124,13 @@
       (GetAtt "CopyS3ObjectLambda" "Arn")
 
 outgoingS3Bucket :: Resource
-outgoingS3Bucket = resource "OutgoingBucket" $
-  S3BucketProperties $
+outgoingS3Bucket =
+  resource "OutgoingBucket" $
   s3Bucket
   & sbBucketName ?~ "stratosphere-s3-copy-outgoing"
 
 permission :: Resource
 permission = resource "LambdaPermission" $
-  LambdaPermissionProperties $
   lambdaPermission
     "lambda:*"
     (GetAtt "CopyS3ObjectLambda" "Arn")
diff --git a/examples/simple-lambda.hs b/examples/simple-lambda.hs
--- a/examples/simple-lambda.hs
+++ b/examples/simple-lambda.hs
@@ -22,7 +22,6 @@
 lambda :: Resource
 lambda = (
   resource "LambdaFunction" $
-  LambdaFunctionProperties $
   lambdaFunction
     lambdaCode
     "index.handler"
@@ -48,7 +47,6 @@
 role' :: Resource
 role' =
   resource "IAMRole" $
-  IAMRoleProperties $
   iamRole
   rolePolicyDocumentObject
   & iamrPolicies ?~ [ executePolicy ]
diff --git a/library-gen/Stratosphere/ResourceProperties/ASKSkillAuthenticationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ASKSkillAuthenticationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ASKSkillAuthenticationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ASKSkillAuthenticationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-authenticationconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ASKSkillOverrides.hs b/library-gen/Stratosphere/ResourceProperties/ASKSkillOverrides.hs
--- a/library-gen/Stratosphere/ResourceProperties/ASKSkillOverrides.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ASKSkillOverrides.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-overrides.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ASKSkillSkillPackage.hs b/library-gen/Stratosphere/ResourceProperties/ASKSkillSkillPackage.hs
--- a/library-gen/Stratosphere/ResourceProperties/ASKSkillSkillPackage.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ASKSkillSkillPackage.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-skillpackage.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerConfigurationId.hs b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerConfigurationId.hs
--- a/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerConfigurationId.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerConfigurationId.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-configurationid.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerLogList.hs b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerLogList.hs
--- a/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerLogList.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerLogList.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-loglist.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerMaintenanceWindow.hs b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerMaintenanceWindow.hs
--- a/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerMaintenanceWindow.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerMaintenanceWindow.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-maintenancewindow.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerTagsEntry.hs b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerTagsEntry.hs
--- a/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerTagsEntry.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerTagsEntry.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-tagsentry.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerUser.hs b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerUser.hs
--- a/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerUser.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerUser.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AmazonMQConfigurationAssociationConfigurationId.hs b/library-gen/Stratosphere/ResourceProperties/AmazonMQConfigurationAssociationConfigurationId.hs
--- a/library-gen/Stratosphere/ResourceProperties/AmazonMQConfigurationAssociationConfigurationId.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AmazonMQConfigurationAssociationConfigurationId.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-configurationassociation-configurationid.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AmazonMQConfigurationTagsEntry.hs b/library-gen/Stratosphere/ResourceProperties/AmazonMQConfigurationTagsEntry.hs
--- a/library-gen/Stratosphere/ResourceProperties/AmazonMQConfigurationTagsEntry.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AmazonMQConfigurationTagsEntry.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-configuration-tagsentry.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayApiKeyStageKey.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayApiKeyStageKey.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayApiKeyStageKey.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayApiKeyStageKey.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-apikey-stagekey.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentAccessLogSetting.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentAccessLogSetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentAccessLogSetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentAccessLogSetting.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-accesslogsetting.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentCanarySetting.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentCanarySetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentCanarySetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentCanarySetting.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-canarysetting.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentDeploymentCanarySettings.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentDeploymentCanarySettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentDeploymentCanarySettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentDeploymentCanarySettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-deploymentcanarysettings.html
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDocumentationPartLocation.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDocumentationPartLocation.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDocumentationPartLocation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDocumentationPartLocation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-documentationpart-location.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDomainNameEndpointConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDomainNameEndpointConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDomainNameEndpointConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDomainNameEndpointConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-domainname-endpointconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegration.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration-integrationresponse.html
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-methodresponse.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayRestApiEndpointConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayRestApiEndpointConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayRestApiEndpointConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayRestApiEndpointConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-restapi-endpointconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayRestApiS3Location.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayRestApiS3Location.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayRestApiS3Location.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayRestApiS3Location.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-restapi-s3location.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageAccessLogSetting.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageAccessLogSetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageAccessLogSetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageAccessLogSetting.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-stage-accesslogsetting.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageCanarySetting.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageCanarySetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageCanarySetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageCanarySetting.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-stage-canarysetting.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageMethodSetting.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageMethodSetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageMethodSetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageMethodSetting.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanApiStage.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanApiStage.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanApiStage.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanApiStage.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-apistage.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanQuotaSettings.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanQuotaSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanQuotaSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanQuotaSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-quotasettings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanThrottleSettings.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanThrottleSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanThrottleSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanThrottleSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-throttlesettings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2RouteParameterConstraints.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2RouteParameterConstraints.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2RouteParameterConstraints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2RouteParameterConstraints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-route-parameterconstraints.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2RouteResponseParameterConstraints.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2RouteResponseParameterConstraints.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2RouteResponseParameterConstraints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2RouteResponseParameterConstraints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routeresponse-parameterconstraints.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2StageAccessLogSettings.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2StageAccessLogSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2StageAccessLogSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2StageAccessLogSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-stage-accesslogsettings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2StageRouteSettings.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2StageRouteSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2StageRouteSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayV2StageRouteSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-stage-routesettings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppStreamDirectoryConfigServiceAccountCredentials.hs b/library-gen/Stratosphere/ResourceProperties/AppStreamDirectoryConfigServiceAccountCredentials.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppStreamDirectoryConfigServiceAccountCredentials.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppStreamDirectoryConfigServiceAccountCredentials.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-directoryconfig-serviceaccountcredentials.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppStreamFleetComputeCapacity.hs b/library-gen/Stratosphere/ResourceProperties/AppStreamFleetComputeCapacity.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppStreamFleetComputeCapacity.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppStreamFleetComputeCapacity.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-fleet-computecapacity.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppStreamFleetDomainJoinInfo.hs b/library-gen/Stratosphere/ResourceProperties/AppStreamFleetDomainJoinInfo.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppStreamFleetDomainJoinInfo.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppStreamFleetDomainJoinInfo.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-fleet-domainjoininfo.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppStreamFleetVpcConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppStreamFleetVpcConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppStreamFleetVpcConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppStreamFleetVpcConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-fleet-vpcconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppStreamImageBuilderDomainJoinInfo.hs b/library-gen/Stratosphere/ResourceProperties/AppStreamImageBuilderDomainJoinInfo.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppStreamImageBuilderDomainJoinInfo.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppStreamImageBuilderDomainJoinInfo.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-imagebuilder-domainjoininfo.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppStreamImageBuilderVpcConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppStreamImageBuilderVpcConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppStreamImageBuilderVpcConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppStreamImageBuilderVpcConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-imagebuilder-vpcconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppStreamStackApplicationSettings.hs b/library-gen/Stratosphere/ResourceProperties/AppStreamStackApplicationSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppStreamStackApplicationSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppStreamStackApplicationSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-stack-applicationsettings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppStreamStackStorageConnector.hs b/library-gen/Stratosphere/ResourceProperties/AppStreamStackStorageConnector.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppStreamStackStorageConnector.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppStreamStackStorageConnector.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-stack-storageconnector.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppStreamStackUserSetting.hs b/library-gen/Stratosphere/ResourceProperties/AppStreamStackUserSetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppStreamStackUserSetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppStreamStackUserSetting.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-stack-usersetting.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceAuthorizationConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceAuthorizationConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceAuthorizationConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceAuthorizationConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-authorizationconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceAwsIamConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceAwsIamConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceAwsIamConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceAwsIamConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-awsiamconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceDynamoDBConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceDynamoDBConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceDynamoDBConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceDynamoDBConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceElasticsearchConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceElasticsearchConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceElasticsearchConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceElasticsearchConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-elasticsearchconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceHttpConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceHttpConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceHttpConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceHttpConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-httpconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceLambdaConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceLambdaConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceLambdaConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceLambdaConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-lambdaconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceRdsHttpEndpointConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceRdsHttpEndpointConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceRdsHttpEndpointConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceRdsHttpEndpointConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-rdshttpendpointconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceRelationalDatabaseConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceRelationalDatabaseConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceRelationalDatabaseConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceRelationalDatabaseConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-relationaldatabaseconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiLogConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiLogConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiLogConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiLogConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-logconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiOpenIDConnectConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiOpenIDConnectConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiOpenIDConnectConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiOpenIDConnectConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-openidconnectconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiUserPoolConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiUserPoolConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiUserPoolConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiUserPoolConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-userpoolconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncResolverPipelineConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncResolverPipelineConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppSyncResolverPipelineConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncResolverPipelineConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-pipelineconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalableTargetScalableTargetAction.hs b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalableTargetScalableTargetAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalableTargetScalableTargetAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalableTargetScalableTargetAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scalabletargetaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalableTargetScheduledAction.hs b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalableTargetScheduledAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalableTargetScheduledAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalableTargetScheduledAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification.hs b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyMetricDimension.hs b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyMetricDimension.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyMetricDimension.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyMetricDimension.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-metricdimension.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification.hs b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predefinedmetricspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepAdjustment.hs b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepAdjustment.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepAdjustment.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepAdjustment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupInstancesDistribution.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupInstancesDistribution.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupInstancesDistribution.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupInstancesDistribution.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-instancesdistribution.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplate.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplate.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-launchtemplate.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplateOverrides.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplateOverrides.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplateOverrides.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplateOverrides.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-launchtemplateoverrides.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplateSpecification.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplateSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplateSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplateSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplatespecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLifecycleHookSpecification.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLifecycleHookSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLifecycleHookSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLifecycleHookSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMetricsCollection.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMetricsCollection.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMetricsCollection.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMetricsCollection.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-metricscollection.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMixedInstancesPolicy.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMixedInstancesPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMixedInstancesPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMixedInstancesPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-group-mixedinstancespolicy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupNotificationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupNotificationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupNotificationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupNotificationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-notificationconfigurations.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupTagProperty.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupTagProperty.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupTagProperty.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupTagProperty.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-tags.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDevice.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDevice.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDevice.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDevice.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDeviceMapping.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDeviceMapping.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDeviceMapping.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDeviceMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-mapping.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanApplicationSource.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanApplicationSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanApplicationSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanApplicationSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-applicationsource.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanCustomizedLoadMetricSpecification.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanCustomizedLoadMetricSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanCustomizedLoadMetricSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanCustomizedLoadMetricSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedloadmetricspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedscalingmetricspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanMetricDimension.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanMetricDimension.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanMetricDimension.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanMetricDimension.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-metricdimension.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanPredefinedLoadMetricSpecification.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanPredefinedLoadMetricSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanPredefinedLoadMetricSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanPredefinedLoadMetricSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-predefinedloadmetricspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-predefinedscalingmetricspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanScalingInstruction.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanScalingInstruction.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanScalingInstruction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanScalingInstruction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanTagFilter.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanTagFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanTagFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanTagFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-tagfilter.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanTargetTrackingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanTargetTrackingConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanTargetTrackingConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanTargetTrackingConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyCustomizedMetricSpecification.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyCustomizedMetricSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyCustomizedMetricSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyCustomizedMetricSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyMetricDimension.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyMetricDimension.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyMetricDimension.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyMetricDimension.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdimension.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyPredefinedMetricSpecification.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyPredefinedMetricSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyPredefinedMetricSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyPredefinedMetricSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predefinedmetricspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyStepAdjustment.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyStepAdjustment.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyStepAdjustment.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyStepAdjustment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-stepadjustments.html
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyTargetTrackingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyTargetTrackingConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyTargetTrackingConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyTargetTrackingConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentComputeResources.hs b/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentComputeResources.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentComputeResources.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentComputeResources.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentLaunchTemplateSpecification.hs b/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentLaunchTemplateSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentLaunchTemplateSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentLaunchTemplateSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-launchtemplatespecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionContainerProperties.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionContainerProperties.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionContainerProperties.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionContainerProperties.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionEnvironment.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionEnvironment.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionEnvironment.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionEnvironment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-environment.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionMountPoints.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionMountPoints.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionMountPoints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionMountPoints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-mountpoints.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionNodeProperties.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionNodeProperties.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionNodeProperties.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionNodeProperties.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-nodeproperties.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionNodeRangeProperty.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionNodeRangeProperty.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionNodeRangeProperty.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionNodeRangeProperty.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-noderangeproperty.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionRetryStrategy.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionRetryStrategy.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionRetryStrategy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionRetryStrategy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-retrystrategy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionTimeout.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionTimeout.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionTimeout.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionTimeout.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-timeout.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionUlimit.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionUlimit.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionUlimit.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionUlimit.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-ulimit.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionVolumes.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionVolumes.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionVolumes.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionVolumes.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-volumes.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionVolumesHost.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionVolumesHost.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionVolumesHost.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionVolumesHost.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-volumeshost.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobQueueComputeEnvironmentOrder.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobQueueComputeEnvironmentOrder.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchJobQueueComputeEnvironmentOrder.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobQueueComputeEnvironmentOrder.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobqueue-computeenvironmentorder.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetBudgetData.hs b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetBudgetData.hs
--- a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetBudgetData.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetBudgetData.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetCostTypes.hs b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetCostTypes.hs
--- a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetCostTypes.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetCostTypes.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-costtypes.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotification.hs b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotification.hs
--- a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotificationWithSubscribers.hs b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotificationWithSubscribers.hs
--- a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotificationWithSubscribers.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotificationWithSubscribers.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notificationwithsubscribers.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetSpend.hs b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetSpend.hs
--- a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetSpend.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetSpend.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-spend.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetSubscriber.hs b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetSubscriber.hs
--- a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetSubscriber.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetSubscriber.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-subscriber.html
diff --git a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetTimePeriod.hs b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetTimePeriod.hs
--- a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetTimePeriod.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetTimePeriod.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-timeperiod.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CertificateManagerCertificateDomainValidationOption.hs b/library-gen/Stratosphere/ResourceProperties/CertificateManagerCertificateDomainValidationOption.hs
--- a/library-gen/Stratosphere/ResourceProperties/CertificateManagerCertificateDomainValidationOption.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CertificateManagerCertificateDomainValidationOption.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-certificatemanager-certificate-domainvalidationoption.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Cloud9EnvironmentEC2Repository.hs b/library-gen/Stratosphere/ResourceProperties/Cloud9EnvironmentEC2Repository.hs
--- a/library-gen/Stratosphere/ResourceProperties/Cloud9EnvironmentEC2Repository.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Cloud9EnvironmentEC2Repository.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloud9-environmentec2-repository.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cloudfrontoriginaccessidentity-cloudfrontoriginaccessidentityconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCacheBehavior.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCacheBehavior.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCacheBehavior.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCacheBehavior.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCookies.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCookies.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCookies.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCookies.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cookies.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomErrorResponse.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomErrorResponse.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomErrorResponse.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomErrorResponse.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customerrorresponse.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomOriginConfig.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomOriginConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomOriginConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomOriginConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customoriginconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDefaultCacheBehavior.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDefaultCacheBehavior.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDefaultCacheBehavior.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDefaultCacheBehavior.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDistributionConfig.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDistributionConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDistributionConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDistributionConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionForwardedValues.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionForwardedValues.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionForwardedValues.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionForwardedValues.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-forwardedvalues.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionGeoRestriction.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionGeoRestriction.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionGeoRestriction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionGeoRestriction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-georestriction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLambdaFunctionAssociation.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLambdaFunctionAssociation.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLambdaFunctionAssociation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLambdaFunctionAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-lambdafunctionassociation.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLogging.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLogging.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLogging.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLogging.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-logging.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOrigin.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOrigin.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOrigin.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOrigin.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOriginCustomHeader.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOriginCustomHeader.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOriginCustomHeader.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOriginCustomHeader.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origincustomheader.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionRestrictions.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionRestrictions.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionRestrictions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionRestrictions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-restrictions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionS3OriginConfig.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionS3OriginConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionS3OriginConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionS3OriginConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-s3originconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionViewerCertificate.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionViewerCertificate.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionViewerCertificate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionViewerCertificate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-viewercertificate.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionLogging.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionLogging.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionLogging.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionLogging.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-logging.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionS3Origin.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionS3Origin.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionS3Origin.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionS3Origin.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-s3origin.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionStreamingDistributionConfig.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionStreamingDistributionConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionStreamingDistributionConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionStreamingDistributionConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-streamingdistributionconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionTrustedSigners.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionTrustedSigners.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionTrustedSigners.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionTrustedSigners.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-trustedsigners.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudTrailTrailDataResource.hs b/library-gen/Stratosphere/ResourceProperties/CloudTrailTrailDataResource.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudTrailTrailDataResource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudTrailTrailDataResource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-dataresource.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudTrailTrailEventSelector.hs b/library-gen/Stratosphere/ResourceProperties/CloudTrailTrailEventSelector.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudTrailTrailEventSelector.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudTrailTrailEventSelector.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-eventselector.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmDimension.hs b/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmDimension.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmDimension.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmDimension.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-dimension.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmMetric.hs b/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmMetric.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmMetric.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmMetric.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudwatch-alarm-metric.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmMetricDataQuery.hs b/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmMetricDataQuery.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmMetricDataQuery.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmMetricDataQuery.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudwatch-alarm-metricdataquery.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmMetricStat.hs b/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmMetricStat.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmMetricStat.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmMetricStat.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudwatch-alarm-metricstat.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectArtifacts.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectArtifacts.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectArtifacts.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectArtifacts.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectCloudWatchLogsConfig.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectCloudWatchLogsConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectCloudWatchLogsConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectCloudWatchLogsConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-cloudwatchlogsconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironmentVariable.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironmentVariable.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironmentVariable.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironmentVariable.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environmentvariable.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectLogsConfig.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectLogsConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectLogsConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectLogsConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-logsconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectProjectCache.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectProjectCache.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectProjectCache.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectProjectCache.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectcache.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectProjectTriggers.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectProjectTriggers.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectProjectTriggers.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectProjectTriggers.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projecttriggers.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectRegistryCredential.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectRegistryCredential.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectRegistryCredential.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectRegistryCredential.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-registrycredential.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectS3LogsConfig.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectS3LogsConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectS3LogsConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectS3LogsConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-s3logsconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSource.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSourceAuth.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSourceAuth.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSourceAuth.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSourceAuth.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-sourceauth.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectVpcConfig.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectVpcConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectVpcConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectVpcConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-vpcconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectWebhookFilter.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectWebhookFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectWebhookFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectWebhookFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-webhookfilter.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeCommitRepositoryRepositoryTrigger.hs b/library-gen/Stratosphere/ResourceProperties/CodeCommitRepositoryRepositoryTrigger.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeCommitRepositoryRepositoryTrigger.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeCommitRepositoryRepositoryTrigger.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codecommit-repository-repositorytrigger.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentConfigMinimumHealthyHosts.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentConfigMinimumHealthyHosts.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentConfigMinimumHealthyHosts.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentConfigMinimumHealthyHosts.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-minimumhealthyhosts.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarm.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarm.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarm.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarm.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarm.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarmConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarmConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarmConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarmConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarmconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAutoRollbackConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAutoRollbackConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAutoRollbackConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAutoRollbackConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-autorollbackconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupDeployment.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupDeployment.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupDeployment.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupDeployment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupDeploymentStyle.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupDeploymentStyle.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupDeploymentStyle.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupDeploymentStyle.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deploymentstyle.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagFilter.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagfilter.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagSet.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagSet.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagSet.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagset.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagSetListObject.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagSetListObject.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagSetListObject.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagSetListObject.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagsetlistobject.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupELBInfo.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupELBInfo.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupELBInfo.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupELBInfo.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-elbinfo.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupGitHubLocation.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupGitHubLocation.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupGitHubLocation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupGitHubLocation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-githublocation.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupLoadBalancerInfo.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupLoadBalancerInfo.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupLoadBalancerInfo.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupLoadBalancerInfo.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-loadbalancerinfo.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupOnPremisesTagSet.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupOnPremisesTagSet.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupOnPremisesTagSet.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupOnPremisesTagSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-onpremisestagset.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupOnPremisesTagSetListObject.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupOnPremisesTagSetListObject.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupOnPremisesTagSetListObject.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupOnPremisesTagSetListObject.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-onpremisestagsetlistobject.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupRevisionLocation.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupRevisionLocation.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupRevisionLocation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupRevisionLocation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupS3Location.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupS3Location.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupS3Location.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupS3Location.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-s3location.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTagFilter.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTagFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTagFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTagFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-tagfilter.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTargetGroupInfo.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTargetGroupInfo.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTargetGroupInfo.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTargetGroupInfo.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-targetgroupinfo.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTriggerConfig.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTriggerConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTriggerConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTriggerConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-triggerconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeArtifactDetails.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeArtifactDetails.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeArtifactDetails.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeArtifactDetails.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-artifactdetails.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeConfigurationProperties.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeConfigurationProperties.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeConfigurationProperties.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeConfigurationProperties.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeSettings.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-settings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionDeclaration.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionDeclaration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionDeclaration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionDeclaration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionTypeId.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionTypeId.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionTypeId.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionTypeId.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-actiontypeid.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStore.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStore.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStore.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStore.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStoreMap.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStoreMap.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStoreMap.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStoreMap.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstoremap.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineBlockerDeclaration.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineBlockerDeclaration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineBlockerDeclaration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineBlockerDeclaration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-blockers.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineEncryptionKey.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineEncryptionKey.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineEncryptionKey.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineEncryptionKey.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore-encryptionkey.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineInputArtifact.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineInputArtifact.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineInputArtifact.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineInputArtifact.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-inputartifacts.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineOutputArtifact.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineOutputArtifact.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineOutputArtifact.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineOutputArtifact.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-outputartifacts.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageDeclaration.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageDeclaration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageDeclaration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageDeclaration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageTransition.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageTransition.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageTransition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageTransition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-disableinboundstagetransitions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelineWebhookWebhookAuthConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelineWebhookWebhookAuthConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelineWebhookWebhookAuthConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelineWebhookWebhookAuthConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookauthconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelineWebhookWebhookFilterRule.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelineWebhookWebhookFilterRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelineWebhookWebhookFilterRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelineWebhookWebhookFilterRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookfilterrule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoIdentityProvider.hs b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoIdentityProvider.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoIdentityProvider.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoIdentityProvider.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-cognitoidentityprovider.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoStreams.hs b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoStreams.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoStreams.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoStreams.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-cognitostreams.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolPushSync.hs b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolPushSync.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolPushSync.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolPushSync.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-pushsync.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentMappingRule.hs b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentMappingRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentMappingRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentMappingRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-mappingrule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRoleMapping.hs b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRoleMapping.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRoleMapping.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRoleMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-rolemapping.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRulesConfigurationType.hs b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRulesConfigurationType.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRulesConfigurationType.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRulesConfigurationType.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-rulesconfigurationtype.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolAdminCreateUserConfig.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolAdminCreateUserConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolAdminCreateUserConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolAdminCreateUserConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-admincreateuserconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolDeviceConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolDeviceConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolDeviceConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolDeviceConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-deviceconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolEmailConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolEmailConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolEmailConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolEmailConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-emailconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolInviteMessageTemplate.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolInviteMessageTemplate.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolInviteMessageTemplate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolInviteMessageTemplate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-invitemessagetemplate.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolLambdaConfig.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolLambdaConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolLambdaConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolLambdaConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-lambdaconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolNumberAttributeConstraints.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolNumberAttributeConstraints.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolNumberAttributeConstraints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolNumberAttributeConstraints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-numberattributeconstraints.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPasswordPolicy.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPasswordPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPasswordPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPasswordPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-passwordpolicy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPolicies.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPolicies.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPolicies.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPolicies.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-policies.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSchemaAttribute.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSchemaAttribute.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSchemaAttribute.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSchemaAttribute.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSmsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSmsConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSmsConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSmsConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-smsconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolStringAttributeConstraints.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolStringAttributeConstraints.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolStringAttributeConstraints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolStringAttributeConstraints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-stringattributeconstraints.html
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolUserAttributeType.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolUserAttributeType.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolUserAttributeType.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolUserAttributeType.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpooluser-attributetype.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleScope.hs b/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleScope.hs
--- a/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleScope.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleScope.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSource.hs b/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSourceDetail.hs b/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSourceDetail.hs
--- a/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSourceDetail.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSourceDetail.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source-sourcedetails.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationAggregatorAccountAggregationSource.hs b/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationAggregatorAccountAggregationSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationAggregatorAccountAggregationSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationAggregatorAccountAggregationSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-accountaggregationsource.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationAggregatorOrganizationAggregationSource.hs b/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationAggregatorOrganizationAggregationSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationAggregatorOrganizationAggregationSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationAggregatorOrganizationAggregationSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-organizationaggregationsource.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationRecorderRecordingGroup.hs b/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationRecorderRecordingGroup.hs
--- a/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationRecorderRecordingGroup.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationRecorderRecordingGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ConfigDeliveryChannelConfigSnapshotDeliveryProperties.hs b/library-gen/Stratosphere/ResourceProperties/ConfigDeliveryChannelConfigSnapshotDeliveryProperties.hs
--- a/library-gen/Stratosphere/ResourceProperties/ConfigDeliveryChannelConfigSnapshotDeliveryProperties.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ConfigDeliveryChannelConfigSnapshotDeliveryProperties.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-deliverychannel-configsnapshotdeliveryproperties.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DAXClusterSSESpecification.hs b/library-gen/Stratosphere/ResourceProperties/DAXClusterSSESpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/DAXClusterSSESpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DAXClusterSSESpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dax-cluster-ssespecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyCreateRule.hs b/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyCreateRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyCreateRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyCreateRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-createrule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyPolicyDetails.hs b/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyPolicyDetails.hs
--- a/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyPolicyDetails.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyPolicyDetails.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyRetainRule.hs b/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyRetainRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyRetainRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyRetainRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-retainrule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicySchedule.hs b/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicySchedule.hs
--- a/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicySchedule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicySchedule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-schedule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DMSEndpointDynamoDbSettings.hs b/library-gen/Stratosphere/ResourceProperties/DMSEndpointDynamoDbSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/DMSEndpointDynamoDbSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DMSEndpointDynamoDbSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-dynamodbsettings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DMSEndpointElasticsearchSettings.hs b/library-gen/Stratosphere/ResourceProperties/DMSEndpointElasticsearchSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/DMSEndpointElasticsearchSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DMSEndpointElasticsearchSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-elasticsearchsettings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DMSEndpointKinesisSettings.hs b/library-gen/Stratosphere/ResourceProperties/DMSEndpointKinesisSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/DMSEndpointKinesisSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DMSEndpointKinesisSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-kinesissettings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DMSEndpointMongoDbSettings.hs b/library-gen/Stratosphere/ResourceProperties/DMSEndpointMongoDbSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/DMSEndpointMongoDbSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DMSEndpointMongoDbSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DMSEndpointS3Settings.hs b/library-gen/Stratosphere/ResourceProperties/DMSEndpointS3Settings.hs
--- a/library-gen/Stratosphere/ResourceProperties/DMSEndpointS3Settings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DMSEndpointS3Settings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-s3settings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineField.hs b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineField.hs
--- a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineField.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineField.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterAttribute.hs b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterAttribute.hs
--- a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterAttribute.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterAttribute.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterObject.hs b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterObject.hs
--- a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterObject.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterObject.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterValue.hs b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterValue.hs
--- a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterValue.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterValue.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineObject.hs b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineObject.hs
--- a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineObject.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineObject.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineTag.hs b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineTag.hs
--- a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineTag.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineTag.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DirectoryServiceMicrosoftADVpcSettings.hs b/library-gen/Stratosphere/ResourceProperties/DirectoryServiceMicrosoftADVpcSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/DirectoryServiceMicrosoftADVpcSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DirectoryServiceMicrosoftADVpcSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DirectoryServiceSimpleADVpcSettings.hs b/library-gen/Stratosphere/ResourceProperties/DirectoryServiceSimpleADVpcSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/DirectoryServiceSimpleADVpcSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DirectoryServiceSimpleADVpcSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableAttributeDefinition.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableAttributeDefinition.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableAttributeDefinition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableAttributeDefinition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableGlobalSecondaryIndex.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableGlobalSecondaryIndex.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableGlobalSecondaryIndex.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableGlobalSecondaryIndex.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableKeySchema.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableKeySchema.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableKeySchema.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableKeySchema.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableLocalSecondaryIndex.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableLocalSecondaryIndex.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableLocalSecondaryIndex.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableLocalSecondaryIndex.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTablePointInTimeRecoverySpecification.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTablePointInTimeRecoverySpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTablePointInTimeRecoverySpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTablePointInTimeRecoverySpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-pointintimerecoveryspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProjection.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProjection.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProjection.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProjection.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProvisionedThroughput.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProvisionedThroughput.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProvisionedThroughput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProvisionedThroughput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableSSESpecification.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableSSESpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableSSESpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableSSESpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableStreamSpecification.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableStreamSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableStreamSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableStreamSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-streamspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableTimeToLiveSpecification.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableTimeToLiveSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableTimeToLiveSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableTimeToLiveSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateConfigRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateConfigRequest.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateConfigRequest.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateConfigRequest.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateOverridesRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateOverridesRequest.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateOverridesRequest.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateOverridesRequest.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateSpecificationRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateSpecificationRequest.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateSpecificationRequest.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateSpecificationRequest.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetOnDemandOptionsRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetOnDemandOptionsRequest.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetOnDemandOptionsRequest.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetOnDemandOptionsRequest.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetSpotOptionsRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetSpotOptionsRequest.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetSpotOptionsRequest.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetSpotOptionsRequest.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTagRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTagRequest.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTagRequest.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTagRequest.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagrequest.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTagSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTagSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTagSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTagSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTargetCapacitySpecificationRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTargetCapacitySpecificationRequest.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTargetCapacitySpecificationRequest.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTargetCapacitySpecificationRequest.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceAssociationParameter.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceAssociationParameter.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceAssociationParameter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceAssociationParameter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceBlockDeviceMapping.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceBlockDeviceMapping.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceBlockDeviceMapping.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceBlockDeviceMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceCreditSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceCreditSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceCreditSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceCreditSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-creditspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceEbs.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceEbs.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceEbs.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceEbs.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceElasticGpuSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceElasticGpuSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceElasticGpuSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceElasticGpuSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticgpuspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceElasticInferenceAccelerator.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceElasticInferenceAccelerator.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceElasticInferenceAccelerator.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceElasticInferenceAccelerator.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceInstanceIpv6Address.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceInstanceIpv6Address.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceInstanceIpv6Address.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceInstanceIpv6Address.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-instanceipv6address.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceLaunchTemplateSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceLaunchTemplateSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceLaunchTemplateSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceLaunchTemplateSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceLicenseSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceLicenseSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceLicenseSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceLicenseSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-licensespecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceNetworkInterface.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceNetworkInterface.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceNetworkInterface.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceNetworkInterface.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceNoDevice.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceNoDevice.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceNoDevice.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceNoDevice.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-nodevice.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstancePrivateIpAddressSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstancePrivateIpAddressSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstancePrivateIpAddressSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstancePrivateIpAddressSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceSsmAssociation.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceSsmAssociation.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceSsmAssociation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceSsmAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceVolume.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceVolume.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceVolume.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceVolume.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateBlockDeviceMapping.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateBlockDeviceMapping.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateBlockDeviceMapping.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateBlockDeviceMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCapacityReservationSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCapacityReservationSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCapacityReservationSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCapacityReservationSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCapacityReservationTarget.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCapacityReservationTarget.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCapacityReservationTarget.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCapacityReservationTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationtarget.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCpuOptions.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCpuOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCpuOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCpuOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-cpuoptions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCreditSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCreditSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCreditSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateCreditSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-creditspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateEbs.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateEbs.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateEbs.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateEbs.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping-ebs.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateElasticGpuSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateElasticGpuSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateElasticGpuSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateElasticGpuSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-elasticgpuspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateHibernationOptions.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateHibernationOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateHibernationOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateHibernationOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-hibernationoptions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateIamInstanceProfile.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateIamInstanceProfile.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateIamInstanceProfile.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateIamInstanceProfile.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-iaminstanceprofile.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateInstanceMarketOptions.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateInstanceMarketOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateInstanceMarketOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateInstanceMarketOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-instancemarketoptions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateIpv6Add.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateIpv6Add.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateIpv6Add.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateIpv6Add.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ipv6add.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateData.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateData.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateData.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateData.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplateelasticinferenceaccelerator.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLicenseSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLicenseSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLicenseSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLicenseSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-licensespecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateMonitoring.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateMonitoring.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateMonitoring.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateMonitoring.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-monitoring.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateNetworkInterface.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateNetworkInterface.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateNetworkInterface.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateNetworkInterface.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplatePlacement.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplatePlacement.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplatePlacement.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplatePlacement.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplatePrivateIpAdd.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplatePrivateIpAdd.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplatePrivateIpAdd.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplatePrivateIpAdd.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-privateipadd.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateSpotOptions.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateSpotOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateSpotOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateSpotOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-instancemarketoptions-spotoptions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateTagSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateTagSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateTagSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateTagSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-tagspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryIcmp.hs b/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryIcmp.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryIcmp.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryIcmp.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-icmp.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryPortRange.hs b/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryPortRange.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryPortRange.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryPortRange.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-portrange.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfaceInstanceIpv6Address.hs b/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfaceInstanceIpv6Address.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfaceInstanceIpv6Address.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfaceInstanceIpv6Address.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinterface-instanceipv6address.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfacePrivateIpAddressSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfacePrivateIpAddressSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfacePrivateIpAddressSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfacePrivateIpAddressSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupEgressProperty.hs b/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupEgressProperty.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupEgressProperty.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupEgressProperty.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupIngressProperty.hs b/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupIngressProperty.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupIngressProperty.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupIngressProperty.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetBlockDeviceMapping.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetBlockDeviceMapping.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetBlockDeviceMapping.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetBlockDeviceMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetClassicLoadBalancer.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetClassicLoadBalancer.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetClassicLoadBalancer.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetClassicLoadBalancer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-classicloadbalancer.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetClassicLoadBalancersConfig.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetClassicLoadBalancersConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetClassicLoadBalancersConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetClassicLoadBalancersConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-classicloadbalancersconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetEbsBlockDevice.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetEbsBlockDevice.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetEbsBlockDevice.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetEbsBlockDevice.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetFleetLaunchTemplateSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetFleetLaunchTemplateSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetFleetLaunchTemplateSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetFleetLaunchTemplateSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-fleetlaunchtemplatespecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetGroupIdentifier.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetGroupIdentifier.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetGroupIdentifier.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetGroupIdentifier.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-securitygroups.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetIamInstanceProfileSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetIamInstanceProfileSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetIamInstanceProfileSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetIamInstanceProfileSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-iaminstanceprofile.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceIpv6Address.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceIpv6Address.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceIpv6Address.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceIpv6Address.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-instanceipv6address.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceNetworkInterfaceSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceNetworkInterfaceSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceNetworkInterfaceSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceNetworkInterfaceSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateConfig.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateOverrides.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateOverrides.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateOverrides.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateOverrides.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateoverrides.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLoadBalancersConfig.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLoadBalancersConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLoadBalancersConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLoadBalancersConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-loadbalancersconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetPrivateIpAddressSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetPrivateIpAddressSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetPrivateIpAddressSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetPrivateIpAddressSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces-privateipaddresses.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetLaunchSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetLaunchSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetLaunchSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetLaunchSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetMonitoring.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetMonitoring.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetMonitoring.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetMonitoring.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-monitoring.html
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetTagSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetTagSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetTagSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetTagSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-tagspecifications.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotPlacement.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotPlacement.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotPlacement.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotPlacement.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-placement.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetTargetGroup.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetTargetGroup.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetTargetGroup.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetTargetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-targetgroup.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetTargetGroupsConfig.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetTargetGroupsConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetTargetGroupsConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetTargetGroupsConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-targetgroupsconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2VPNConnectionVpnTunnelOptionsSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2VPNConnectionVpnTunnelOptionsSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2VPNConnectionVpnTunnelOptionsSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2VPNConnectionVpnTunnelOptionsSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-vpnconnection-vpntunneloptionsspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECRRepositoryLifecyclePolicy.hs b/library-gen/Stratosphere/ResourceProperties/ECRRepositoryLifecyclePolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECRRepositoryLifecyclePolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECRRepositoryLifecyclePolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecr-repository-lifecyclepolicy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSServiceAwsVpcConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ECSServiceAwsVpcConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSServiceAwsVpcConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSServiceAwsVpcConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-awsvpcconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSServiceDeploymentConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ECSServiceDeploymentConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSServiceDeploymentConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSServiceDeploymentConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSServiceLoadBalancer.hs b/library-gen/Stratosphere/ResourceProperties/ECSServiceLoadBalancer.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSServiceLoadBalancer.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSServiceLoadBalancer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-loadbalancers.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSServiceNetworkConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ECSServiceNetworkConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSServiceNetworkConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSServiceNetworkConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-networkconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementConstraint.hs b/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementConstraint.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementConstraint.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementConstraint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-placementconstraint.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementStrategy.hs b/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementStrategy.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementStrategy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementStrategy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-placementstrategy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSServiceServiceRegistry.hs b/library-gen/Stratosphere/ResourceProperties/ECSServiceServiceRegistry.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSServiceServiceRegistry.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSServiceServiceRegistry.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceregistry.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionDevice.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionDevice.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionDevice.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionDevice.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-device.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionDockerVolumeConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionDockerVolumeConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionDockerVolumeConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionDockerVolumeConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-dockervolumeconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHealthCheck.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHealthCheck.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHealthCheck.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHealthCheck.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-healthcheck.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostEntry.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostEntry.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostEntry.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostEntry.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-hostentry.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostVolumeProperties.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostVolumeProperties.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostVolumeProperties.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostVolumeProperties.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-volumes-host.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionKernelCapabilities.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionKernelCapabilities.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionKernelCapabilities.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionKernelCapabilities.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-kernelcapabilities.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionKeyValuePair.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionKeyValuePair.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionKeyValuePair.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionKeyValuePair.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-environment.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionLinuxParameters.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionLinuxParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionLinuxParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionLinuxParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-linuxparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionLogConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionLogConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionLogConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionLogConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-logconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionMountPoint.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionMountPoint.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionMountPoint.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionMountPoint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-mountpoints.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionPortMapping.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionPortMapping.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionPortMapping.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionPortMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-portmappings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionRepositoryCredentials.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionRepositoryCredentials.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionRepositoryCredentials.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionRepositoryCredentials.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-repositorycredentials.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionTaskDefinitionPlacementConstraint.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionTaskDefinitionPlacementConstraint.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionTaskDefinitionPlacementConstraint.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionTaskDefinitionPlacementConstraint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-taskdefinitionplacementconstraint.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionTmpfs.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionTmpfs.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionTmpfs.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionTmpfs.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-tmpfs.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionUlimit.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionUlimit.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionUlimit.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionUlimit.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-ulimit.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolume.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolume.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolume.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolume.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-volumes.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolumeFrom.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolumeFrom.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolumeFrom.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolumeFrom.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-volumesfrom.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EFSFileSystemElasticFileSystemTag.hs b/library-gen/Stratosphere/ResourceProperties/EFSFileSystemElasticFileSystemTag.hs
--- a/library-gen/Stratosphere/ResourceProperties/EFSFileSystemElasticFileSystemTag.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EFSFileSystemElasticFileSystemTag.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-efs-filesystem-filesystemtags.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EKSClusterResourcesVpcConfig.hs b/library-gen/Stratosphere/ResourceProperties/EKSClusterResourcesVpcConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EKSClusterResourcesVpcConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EKSClusterResourcesVpcConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-resourcesvpcconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterApplication.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterApplication.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterApplication.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterApplication.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-application.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterAutoScalingPolicy.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterAutoScalingPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterAutoScalingPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterAutoScalingPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-autoscalingpolicy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterBootstrapActionConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterBootstrapActionConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterBootstrapActionConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterBootstrapActionConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-bootstrapactionconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterCloudWatchAlarmDefinition.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterCloudWatchAlarmDefinition.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterCloudWatchAlarmDefinition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterCloudWatchAlarmDefinition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-configuration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsBlockDeviceConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsBlockDeviceConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsBlockDeviceConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsBlockDeviceConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-ebsblockdeviceconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-ebsconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterHadoopJarStepConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterHadoopJarStepConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterHadoopJarStepConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterHadoopJarStepConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-hadoopjarstepconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetProvisioningSpecifications.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetProvisioningSpecifications.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetProvisioningSpecifications.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetProvisioningSpecifications.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetprovisioningspecifications.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceGroupConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceGroupConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceGroupConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceGroupConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancegroupconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceTypeConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceTypeConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceTypeConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceTypeConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancetypeconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterKerberosAttributes.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterKerberosAttributes.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterKerberosAttributes.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterKerberosAttributes.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-kerberosattributes.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterKeyValue.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterKeyValue.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterKeyValue.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterKeyValue.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-keyvalue.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterMetricDimension.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterMetricDimension.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterMetricDimension.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterMetricDimension.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-metricdimension.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterPlacementType.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterPlacementType.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterPlacementType.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterPlacementType.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-placementtype.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingAction.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingConstraints.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingConstraints.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingConstraints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingConstraints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingconstraints.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingRule.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingrule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingTrigger.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingTrigger.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingTrigger.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingTrigger.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingtrigger.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterScriptBootstrapActionConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterScriptBootstrapActionConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterScriptBootstrapActionConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterScriptBootstrapActionConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scriptbootstrapactionconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterSimpleScalingPolicyConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterSimpleScalingPolicyConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterSimpleScalingPolicyConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterSimpleScalingPolicyConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-simplescalingpolicyconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterSpotProvisioningSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterSpotProvisioningSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterSpotProvisioningSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterSpotProvisioningSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-spotprovisioningspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterStepConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterStepConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterStepConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterStepConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-stepconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterVolumeSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterVolumeSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterVolumeSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterVolumeSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-volumespecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-configuration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsBlockDeviceConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsBlockDeviceConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsBlockDeviceConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsBlockDeviceConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ebsblockdeviceconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ebsconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancefleetprovisioningspecifications.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceTypeConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceTypeConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceTypeConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceTypeConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancetypeconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigSpotProvisioningSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigSpotProvisioningSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigSpotProvisioningSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigSpotProvisioningSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-spotprovisioningspecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigVolumeSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigVolumeSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigVolumeSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigVolumeSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-volumespecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigAutoScalingPolicy.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigAutoScalingPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigAutoScalingPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigAutoScalingPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-autoscalingpolicy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigCloudWatchAlarmDefinition.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigCloudWatchAlarmDefinition.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigCloudWatchAlarmDefinition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigCloudWatchAlarmDefinition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsBlockDeviceConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsBlockDeviceConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsBlockDeviceConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsBlockDeviceConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigMetricDimension.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigMetricDimension.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigMetricDimension.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigMetricDimension.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-metricdimension.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingAction.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingConstraints.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingConstraints.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingConstraints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingConstraints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingconstraints.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingRule.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingrule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingTrigger.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingTrigger.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingTrigger.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingTrigger.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingtrigger.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigSimpleScalingPolicyConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigSimpleScalingPolicyConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigSimpleScalingPolicyConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigSimpleScalingPolicyConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-simplescalingpolicyconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigVolumeSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigVolumeSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigVolumeSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigVolumeSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRStepHadoopJarStepConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRStepHadoopJarStepConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRStepHadoopJarStepConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRStepHadoopJarStepConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-hadoopjarstepconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRStepKeyValue.hs b/library-gen/Stratosphere/ResourceProperties/EMRStepKeyValue.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRStepKeyValue.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRStepKeyValue.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-keyvalue.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElastiCacheReplicationGroupNodeGroupConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ElastiCacheReplicationGroupNodeGroupConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElastiCacheReplicationGroupNodeGroupConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElastiCacheReplicationGroupNodeGroupConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-replicationgroup-nodegroupconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationApplicationResourceLifecycleConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationApplicationResourceLifecycleConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationApplicationResourceLifecycleConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationApplicationResourceLifecycleConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-applicationresourcelifecycleconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationApplicationVersionLifecycleConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationApplicationVersionLifecycleConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationApplicationVersionLifecycleConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationApplicationVersionLifecycleConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-applicationversionlifecycleconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationMaxAgeRule.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationMaxAgeRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationMaxAgeRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationMaxAgeRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-maxagerule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationMaxCountRule.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationMaxCountRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationMaxCountRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationMaxCountRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-maxcountrule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationVersionSourceBundle.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationVersionSourceBundle.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationVersionSourceBundle.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationVersionSourceBundle.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-sourcebundle.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-configurationtemplate-configurationoptionsetting.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateSourceConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateSourceConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateSourceConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateSourceConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-configurationtemplate-sourceconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSetting.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSetting.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentTier.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentTier.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentTier.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentTier.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment-tier.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAccessLoggingPolicy.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAccessLoggingPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAccessLoggingPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAccessLoggingPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-AppCookieStickinessPolicy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectiondrainingpolicy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionSettings.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectionsettings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerHealthCheck.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerHealthCheck.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerHealthCheck.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerHealthCheck.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerLBCookieStickinessPolicy.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerLBCookieStickinessPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerLBCookieStickinessPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerLBCookieStickinessPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-LBCookieStickinessPolicy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerListeners.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerListeners.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerListeners.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerListeners.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerPolicies.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerPolicies.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerPolicies.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerPolicies.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAuthenticateOidcConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAuthenticateOidcConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAuthenticateOidcConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAuthenticateOidcConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificate.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificate.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificateCertificate.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificateCertificate.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificateCertificate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificateCertificate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerFixedResponseConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerFixedResponseConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerFixedResponseConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerFixedResponseConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-fixedresponseconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRedirectConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRedirectConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRedirectConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRedirectConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-redirectconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleFixedResponseConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleFixedResponseConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleFixedResponseConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleFixedResponseConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-fixedresponseconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRedirectConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRedirectConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRedirectConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRedirectConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-redirectconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRuleCondition.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRuleCondition.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRuleCondition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRuleCondition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-loadbalancer-loadbalancerattributes.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2LoadBalancerSubnetMapping.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2LoadBalancerSubnetMapping.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2LoadBalancerSubnetMapping.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2LoadBalancerSubnetMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-loadbalancer-subnetmapping.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupMatcher.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupMatcher.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupMatcher.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupMatcher.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-matcher.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetDescription.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetDescription.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetDescription.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetDescription.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetdescription.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetGroupAttribute.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetGroupAttribute.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetGroupAttribute.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetGroupAttribute.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetgroupattribute.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEBSOptions.hs b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEBSOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEBSOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEBSOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainElasticsearchClusterConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainElasticsearchClusterConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainElasticsearchClusterConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainElasticsearchClusterConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEncryptionAtRestOptions.hs b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEncryptionAtRestOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEncryptionAtRestOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEncryptionAtRestOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-encryptionatrestoptions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainNodeToNodeEncryptionOptions.hs b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainNodeToNodeEncryptionOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainNodeToNodeEncryptionOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainNodeToNodeEncryptionOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-nodetonodeencryptionoptions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainSnapshotOptions.hs b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainSnapshotOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainSnapshotOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainSnapshotOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-snapshotoptions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainVPCOptions.hs b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainVPCOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainVPCOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainVPCOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-vpcoptions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EventsEventBusPolicyCondition.hs b/library-gen/Stratosphere/ResourceProperties/EventsEventBusPolicyCondition.hs
--- a/library-gen/Stratosphere/ResourceProperties/EventsEventBusPolicyCondition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EventsEventBusPolicyCondition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-eventbuspolicy-condition.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EventsRuleEcsParameters.hs b/library-gen/Stratosphere/ResourceProperties/EventsRuleEcsParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/EventsRuleEcsParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EventsRuleEcsParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EventsRuleInputTransformer.hs b/library-gen/Stratosphere/ResourceProperties/EventsRuleInputTransformer.hs
--- a/library-gen/Stratosphere/ResourceProperties/EventsRuleInputTransformer.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EventsRuleInputTransformer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EventsRuleKinesisParameters.hs b/library-gen/Stratosphere/ResourceProperties/EventsRuleKinesisParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/EventsRuleKinesisParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EventsRuleKinesisParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-kinesisparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EventsRuleRunCommandParameters.hs b/library-gen/Stratosphere/ResourceProperties/EventsRuleRunCommandParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/EventsRuleRunCommandParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EventsRuleRunCommandParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EventsRuleRunCommandTarget.hs b/library-gen/Stratosphere/ResourceProperties/EventsRuleRunCommandTarget.hs
--- a/library-gen/Stratosphere/ResourceProperties/EventsRuleRunCommandTarget.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EventsRuleRunCommandTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandtarget.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EventsRuleSqsParameters.hs b/library-gen/Stratosphere/ResourceProperties/EventsRuleSqsParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/EventsRuleSqsParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EventsRuleSqsParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-sqsparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/EventsRuleTarget.hs b/library-gen/Stratosphere/ResourceProperties/EventsRuleTarget.hs
--- a/library-gen/Stratosphere/ResourceProperties/EventsRuleTarget.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EventsRuleTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html
diff --git a/library-gen/Stratosphere/ResourceProperties/FSxFileSystemLustreConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/FSxFileSystemLustreConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/FSxFileSystemLustreConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/FSxFileSystemLustreConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-lustreconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/FSxFileSystemTagEntry.hs b/library-gen/Stratosphere/ResourceProperties/FSxFileSystemTagEntry.hs
--- a/library-gen/Stratosphere/ResourceProperties/FSxFileSystemTagEntry.hs
+++ b/library-gen/Stratosphere/ResourceProperties/FSxFileSystemTagEntry.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-tagentry.html
diff --git a/library-gen/Stratosphere/ResourceProperties/FSxFileSystemWindowsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/FSxFileSystemWindowsConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/FSxFileSystemWindowsConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/FSxFileSystemWindowsConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-windowsconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GameLiftAliasRoutingStrategy.hs b/library-gen/Stratosphere/ResourceProperties/GameLiftAliasRoutingStrategy.hs
--- a/library-gen/Stratosphere/ResourceProperties/GameLiftAliasRoutingStrategy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GameLiftAliasRoutingStrategy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-alias-routingstrategy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GameLiftBuildS3Location.hs b/library-gen/Stratosphere/ResourceProperties/GameLiftBuildS3Location.hs
--- a/library-gen/Stratosphere/ResourceProperties/GameLiftBuildS3Location.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GameLiftBuildS3Location.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-build-storagelocation.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GameLiftFleetIpPermission.hs b/library-gen/Stratosphere/ResourceProperties/GameLiftFleetIpPermission.hs
--- a/library-gen/Stratosphere/ResourceProperties/GameLiftFleetIpPermission.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GameLiftFleetIpPermission.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-fleet-ec2inboundpermission.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueClassifierGrokClassifier.hs b/library-gen/Stratosphere/ResourceProperties/GlueClassifierGrokClassifier.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueClassifierGrokClassifier.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueClassifierGrokClassifier.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-grokclassifier.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueClassifierJsonClassifier.hs b/library-gen/Stratosphere/ResourceProperties/GlueClassifierJsonClassifier.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueClassifierJsonClassifier.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueClassifierJsonClassifier.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-jsonclassifier.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueClassifierXMLClassifier.hs b/library-gen/Stratosphere/ResourceProperties/GlueClassifierXMLClassifier.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueClassifierXMLClassifier.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueClassifierXMLClassifier.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-xmlclassifier.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueConnectionConnectionInput.hs b/library-gen/Stratosphere/ResourceProperties/GlueConnectionConnectionInput.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueConnectionConnectionInput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueConnectionConnectionInput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueConnectionPhysicalConnectionRequirements.hs b/library-gen/Stratosphere/ResourceProperties/GlueConnectionPhysicalConnectionRequirements.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueConnectionPhysicalConnectionRequirements.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueConnectionPhysicalConnectionRequirements.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-physicalconnectionrequirements.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerJdbcTarget.hs b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerJdbcTarget.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerJdbcTarget.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerJdbcTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-jdbctarget.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerS3Target.hs b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerS3Target.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerS3Target.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerS3Target.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-s3target.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerSchedule.hs b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerSchedule.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerSchedule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerSchedule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-schedule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerSchemaChangePolicy.hs b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerSchemaChangePolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerSchemaChangePolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerSchemaChangePolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-schemachangepolicy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerTargets.hs b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerTargets.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerTargets.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerTargets.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-targets.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueDatabaseDatabaseInput.hs b/library-gen/Stratosphere/ResourceProperties/GlueDatabaseDatabaseInput.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueDatabaseDatabaseInput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueDatabaseDatabaseInput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueJobConnectionsList.hs b/library-gen/Stratosphere/ResourceProperties/GlueJobConnectionsList.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueJobConnectionsList.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueJobConnectionsList.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-job-connectionslist.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueJobExecutionProperty.hs b/library-gen/Stratosphere/ResourceProperties/GlueJobExecutionProperty.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueJobExecutionProperty.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueJobExecutionProperty.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-job-executionproperty.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueJobJobCommand.hs b/library-gen/Stratosphere/ResourceProperties/GlueJobJobCommand.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueJobJobCommand.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueJobJobCommand.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-job-jobcommand.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GluePartitionColumn.hs b/library-gen/Stratosphere/ResourceProperties/GluePartitionColumn.hs
--- a/library-gen/Stratosphere/ResourceProperties/GluePartitionColumn.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GluePartitionColumn.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-column.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GluePartitionOrder.hs b/library-gen/Stratosphere/ResourceProperties/GluePartitionOrder.hs
--- a/library-gen/Stratosphere/ResourceProperties/GluePartitionOrder.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GluePartitionOrder.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-order.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GluePartitionPartitionInput.hs b/library-gen/Stratosphere/ResourceProperties/GluePartitionPartitionInput.hs
--- a/library-gen/Stratosphere/ResourceProperties/GluePartitionPartitionInput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GluePartitionPartitionInput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-partitioninput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GluePartitionSerdeInfo.hs b/library-gen/Stratosphere/ResourceProperties/GluePartitionSerdeInfo.hs
--- a/library-gen/Stratosphere/ResourceProperties/GluePartitionSerdeInfo.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GluePartitionSerdeInfo.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-serdeinfo.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GluePartitionSkewedInfo.hs b/library-gen/Stratosphere/ResourceProperties/GluePartitionSkewedInfo.hs
--- a/library-gen/Stratosphere/ResourceProperties/GluePartitionSkewedInfo.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GluePartitionSkewedInfo.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-skewedinfo.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GluePartitionStorageDescriptor.hs b/library-gen/Stratosphere/ResourceProperties/GluePartitionStorageDescriptor.hs
--- a/library-gen/Stratosphere/ResourceProperties/GluePartitionStorageDescriptor.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GluePartitionStorageDescriptor.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-storagedescriptor.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTableColumn.hs b/library-gen/Stratosphere/ResourceProperties/GlueTableColumn.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueTableColumn.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTableColumn.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-column.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTableOrder.hs b/library-gen/Stratosphere/ResourceProperties/GlueTableOrder.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueTableOrder.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTableOrder.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-order.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTableSerdeInfo.hs b/library-gen/Stratosphere/ResourceProperties/GlueTableSerdeInfo.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueTableSerdeInfo.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTableSerdeInfo.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-serdeinfo.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTableSkewedInfo.hs b/library-gen/Stratosphere/ResourceProperties/GlueTableSkewedInfo.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueTableSkewedInfo.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTableSkewedInfo.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-skewedinfo.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTableStorageDescriptor.hs b/library-gen/Stratosphere/ResourceProperties/GlueTableStorageDescriptor.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueTableStorageDescriptor.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTableStorageDescriptor.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-storagedescriptor.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTableTableInput.hs b/library-gen/Stratosphere/ResourceProperties/GlueTableTableInput.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueTableTableInput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTableTableInput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTriggerAction.hs b/library-gen/Stratosphere/ResourceProperties/GlueTriggerAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueTriggerAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTriggerAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-trigger-action.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTriggerCondition.hs b/library-gen/Stratosphere/ResourceProperties/GlueTriggerCondition.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueTriggerCondition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTriggerCondition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-trigger-condition.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTriggerPredicate.hs b/library-gen/Stratosphere/ResourceProperties/GlueTriggerPredicate.hs
--- a/library-gen/Stratosphere/ResourceProperties/GlueTriggerPredicate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTriggerPredicate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-trigger-predicate.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GuardDutyFilterCondition.hs b/library-gen/Stratosphere/ResourceProperties/GuardDutyFilterCondition.hs
--- a/library-gen/Stratosphere/ResourceProperties/GuardDutyFilterCondition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GuardDutyFilterCondition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-guardduty-filter-condition.html
diff --git a/library-gen/Stratosphere/ResourceProperties/GuardDutyFilterFindingCriteria.hs b/library-gen/Stratosphere/ResourceProperties/GuardDutyFilterFindingCriteria.hs
--- a/library-gen/Stratosphere/ResourceProperties/GuardDutyFilterFindingCriteria.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GuardDutyFilterFindingCriteria.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-guardduty-filter-findingcriteria.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IAMGroupPolicy.hs b/library-gen/Stratosphere/ResourceProperties/IAMGroupPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/IAMGroupPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IAMGroupPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IAMRolePolicy.hs b/library-gen/Stratosphere/ResourceProperties/IAMRolePolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/IAMRolePolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IAMRolePolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IAMUserLoginProfile.hs b/library-gen/Stratosphere/ResourceProperties/IAMUserLoginProfile.hs
--- a/library-gen/Stratosphere/ResourceProperties/IAMUserLoginProfile.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IAMUserLoginProfile.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user-loginprofile.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IAMUserPolicy.hs b/library-gen/Stratosphere/ResourceProperties/IAMUserPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/IAMUserPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IAMUserPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoT1ClickProjectDeviceTemplate.hs b/library-gen/Stratosphere/ResourceProperties/IoT1ClickProjectDeviceTemplate.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoT1ClickProjectDeviceTemplate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoT1ClickProjectDeviceTemplate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot1click-project-devicetemplate.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoT1ClickProjectPlacementTemplate.hs b/library-gen/Stratosphere/ResourceProperties/IoT1ClickProjectPlacementTemplate.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoT1ClickProjectPlacementTemplate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoT1ClickProjectPlacementTemplate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot1click-project-placementtemplate.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsChannelRetentionPeriod.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsChannelRetentionPeriod.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsChannelRetentionPeriod.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsChannelRetentionPeriod.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-channel-retentionperiod.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-action.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetContainerAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetContainerAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetContainerAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetContainerAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-containeraction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDatasetContentVersionValue.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDatasetContentVersionValue.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDatasetContentVersionValue.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDatasetContentVersionValue.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable-datasetcontentversionvalue.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDeltaTime.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDeltaTime.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDeltaTime.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDeltaTime.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-deltatime.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetFilter.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-filter.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetOutputFileUriValue.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetOutputFileUriValue.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetOutputFileUriValue.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetOutputFileUriValue.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable-outputfileurivalue.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetQueryAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetQueryAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetQueryAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetQueryAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-queryaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetResourceConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetResourceConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetResourceConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetResourceConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-resourceconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetRetentionPeriod.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetRetentionPeriod.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetRetentionPeriod.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetRetentionPeriod.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-retentionperiod.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetSchedule.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetSchedule.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetSchedule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetSchedule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-trigger-schedule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetTrigger.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetTrigger.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetTrigger.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetTrigger.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-trigger.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetTriggeringDataset.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetTriggeringDataset.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetTriggeringDataset.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetTriggeringDataset.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-triggeringdataset.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetVariable.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetVariable.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetVariable.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetVariable.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatastoreRetentionPeriod.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatastoreRetentionPeriod.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatastoreRetentionPeriod.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatastoreRetentionPeriod.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-datastore-retentionperiod.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineActivity.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineActivity.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineActivity.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineActivity.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-activity.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineAddAttributes.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineAddAttributes.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineAddAttributes.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineAddAttributes.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-addattributes.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineChannel.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineChannel.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineChannel.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineChannel.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-channel.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDatastore.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDatastore.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDatastore.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDatastore.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-datastore.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDeviceRegistryEnrich.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDeviceRegistryEnrich.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDeviceRegistryEnrich.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDeviceRegistryEnrich.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-deviceregistryenrich.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDeviceShadowEnrich.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDeviceShadowEnrich.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDeviceShadowEnrich.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDeviceShadowEnrich.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-deviceshadowenrich.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineFilter.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-filter.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineLambda.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineLambda.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineLambda.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineLambda.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-lambda.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineMath.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineMath.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineMath.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineMath.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-math.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineRemoveAttributes.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineRemoveAttributes.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineRemoveAttributes.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineRemoveAttributes.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-removeattributes.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineSelectAttributes.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineSelectAttributes.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineSelectAttributes.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineSelectAttributes.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-selectattributes.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTThingAttributePayload.hs b/library-gen/Stratosphere/ResourceProperties/IoTThingAttributePayload.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTThingAttributePayload.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTThingAttributePayload.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-thing-attributepayload.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchAlarmAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchAlarmAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchAlarmAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchAlarmAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchalarmaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchMetricAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchMetricAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchMetricAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchMetricAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchmetricaction.html
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleDynamoDBV2Action.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleDynamoDBV2Action.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleDynamoDBV2Action.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleDynamoDBV2Action.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbv2action.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleElasticsearchAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleElasticsearchAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleElasticsearchAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleElasticsearchAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-elasticsearchaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleFirehoseAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleFirehoseAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleFirehoseAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleFirehoseAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-firehoseaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleIotAnalyticsAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleIotAnalyticsAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleIotAnalyticsAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleIotAnalyticsAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-iotanalyticsaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleKinesisAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleKinesisAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleKinesisAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleKinesisAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-kinesisaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleLambdaAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleLambdaAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleLambdaAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleLambdaAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-lambdaaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRulePutItemInput.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRulePutItemInput.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRulePutItemInput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRulePutItemInput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-putiteminput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleRepublishAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleRepublishAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleRepublishAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleRepublishAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-republishaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleS3Action.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleS3Action.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleS3Action.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleS3Action.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-s3action.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSnsAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSnsAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSnsAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSnsAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-snsaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSqsAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSqsAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSqsAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSqsAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-sqsaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleStepFunctionsAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleStepFunctionsAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleStepFunctionsAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleStepFunctionsAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-stepfunctionsaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleTopicRulePayload.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleTopicRulePayload.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleTopicRulePayload.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleTopicRulePayload.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-topicrulepayload.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationCSVMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationCSVMappingParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationCSVMappingParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationCSVMappingParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-csvmappingparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputLambdaProcessor.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputLambdaProcessor.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputLambdaProcessor.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputLambdaProcessor.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputlambdaprocessor.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputParallelism.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputParallelism.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputParallelism.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputParallelism.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputparallelism.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputProcessingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputProcessingConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputProcessingConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputProcessingConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputprocessingconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputSchema.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputSchema.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputSchema.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputSchema.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputschema.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationJSONMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationJSONMappingParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationJSONMappingParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationJSONMappingParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-jsonmappingparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationKinesisFirehoseInput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationKinesisFirehoseInput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationKinesisFirehoseInput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationKinesisFirehoseInput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-kinesisfirehoseinput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationKinesisStreamsInput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationKinesisStreamsInput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationKinesisStreamsInput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationKinesisStreamsInput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-kinesisstreamsinput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationMappingParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationMappingParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationMappingParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-mappingparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputDestinationSchema.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputDestinationSchema.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputDestinationSchema.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputDestinationSchema.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-destinationschema.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputKinesisFirehoseOutput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputKinesisFirehoseOutput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputKinesisFirehoseOutput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputKinesisFirehoseOutput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-kinesisfirehoseoutput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputKinesisStreamsOutput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputKinesisStreamsOutput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputKinesisStreamsOutput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputKinesisStreamsOutput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-kinesisstreamsoutput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputLambdaOutput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputLambdaOutput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputLambdaOutput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputLambdaOutput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-lambdaoutput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputOutput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputOutput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputOutput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationOutputOutput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-output.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationRecordColumn.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationRecordColumn.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationRecordColumn.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationRecordColumn.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordcolumn.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationRecordFormat.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationRecordFormat.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationRecordFormat.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationRecordFormat.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordformat.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceCSVMappingParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-csvmappingparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceJSONMappingParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-jsonmappingparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceMappingParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceMappingParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceMappingParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-mappingparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceRecordColumn.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceRecordColumn.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceRecordColumn.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceRecordColumn.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordcolumn.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceRecordFormat.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceRecordFormat.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceRecordFormat.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceRecordFormat.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordformat.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referencedatasource.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceReferenceSchema.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referenceschema.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationReferenceDataSourceS3ReferenceDataSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-s3referencedatasource.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationApplicationCodeConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationApplicationCodeConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationApplicationCodeConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationApplicationCodeConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-applicationcodeconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationApplicationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationApplicationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationApplicationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationApplicationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-applicationconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationApplicationSnapshotConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationApplicationSnapshotConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationApplicationSnapshotConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationApplicationSnapshotConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-applicationsnapshotconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCSVMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCSVMappingParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCSVMappingParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCSVMappingParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-csvmappingparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCheckpointConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCheckpointConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCheckpointConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCheckpointConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-checkpointconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCloudWatchLoggingOptionCloudWatchLoggingOption.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCloudWatchLoggingOptionCloudWatchLoggingOption.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCloudWatchLoggingOptionCloudWatchLoggingOption.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCloudWatchLoggingOptionCloudWatchLoggingOption.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-applicationcloudwatchloggingoption-cloudwatchloggingoption.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCodeContent.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCodeContent.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCodeContent.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationCodeContent.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-codecontent.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationEnvironmentProperties.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationEnvironmentProperties.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationEnvironmentProperties.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationEnvironmentProperties.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-environmentproperties.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationFlinkApplicationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationFlinkApplicationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationFlinkApplicationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationFlinkApplicationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-flinkapplicationconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-input.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputLambdaProcessor.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputLambdaProcessor.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputLambdaProcessor.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputLambdaProcessor.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-inputlambdaprocessor.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputParallelism.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputParallelism.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputParallelism.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputParallelism.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-inputparallelism.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputProcessingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputProcessingConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputProcessingConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputProcessingConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-inputprocessingconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputSchema.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputSchema.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputSchema.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationInputSchema.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-inputschema.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationJSONMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationJSONMappingParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationJSONMappingParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationJSONMappingParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-jsonmappingparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationKinesisFirehoseInput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationKinesisFirehoseInput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationKinesisFirehoseInput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationKinesisFirehoseInput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-kinesisfirehoseinput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationKinesisStreamsInput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationKinesisStreamsInput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationKinesisStreamsInput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationKinesisStreamsInput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-kinesisstreamsinput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationMappingParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationMappingParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationMappingParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-mappingparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationMonitoringConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationMonitoringConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationMonitoringConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationMonitoringConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-monitoringconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputDestinationSchema.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputDestinationSchema.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputDestinationSchema.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputDestinationSchema.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-applicationoutput-destinationschema.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputKinesisFirehoseOutput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputKinesisFirehoseOutput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputKinesisFirehoseOutput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputKinesisFirehoseOutput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-applicationoutput-kinesisfirehoseoutput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputKinesisStreamsOutput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputKinesisStreamsOutput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputKinesisStreamsOutput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputKinesisStreamsOutput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-applicationoutput-kinesisstreamsoutput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputLambdaOutput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputLambdaOutput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputLambdaOutput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputLambdaOutput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-applicationoutput-lambdaoutput.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputOutput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputOutput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputOutput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationOutputOutput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-applicationoutput-output.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationParallelismConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationParallelismConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationParallelismConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationParallelismConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-parallelismconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationPropertyGroup.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationPropertyGroup.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationPropertyGroup.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationPropertyGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-propertygroup.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationRecordColumn.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationRecordColumn.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationRecordColumn.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationRecordColumn.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-recordcolumn.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationRecordFormat.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationRecordFormat.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationRecordFormat.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationRecordFormat.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-recordformat.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceCSVMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceCSVMappingParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceCSVMappingParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceCSVMappingParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-applicationreferencedatasource-csvmappingparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceJSONMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceJSONMappingParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceJSONMappingParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceJSONMappingParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-applicationreferencedatasource-jsonmappingparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceMappingParameters.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceMappingParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceMappingParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceMappingParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-applicationreferencedatasource-mappingparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceRecordColumn.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceRecordColumn.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceRecordColumn.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceRecordColumn.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-applicationreferencedatasource-recordcolumn.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceRecordFormat.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceRecordFormat.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceRecordFormat.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceRecordFormat.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-applicationreferencedatasource-recordformat.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceReferenceDataSource.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceReferenceDataSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceReferenceDataSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceReferenceDataSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-applicationreferencedatasource-referencedatasource.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceReferenceSchema.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceReferenceSchema.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceReferenceSchema.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceReferenceSchema.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-applicationreferencedatasource-referenceschema.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceS3ReferenceDataSource.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceS3ReferenceDataSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceS3ReferenceDataSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationReferenceDataSourceS3ReferenceDataSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-applicationreferencedatasource-s3referencedatasource.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationS3ContentLocation.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationS3ContentLocation.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationS3ContentLocation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationS3ContentLocation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-s3contentlocation.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationSqlApplicationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationSqlApplicationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationSqlApplicationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsV2ApplicationSqlApplicationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalyticsv2-application-sqlapplicationconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamBufferingHints.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamBufferingHints.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamBufferingHints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamBufferingHints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-bufferinghints.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-cloudwatchloggingoptions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCopyCommand.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCopyCommand.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCopyCommand.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCopyCommand.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-copycommand.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchBufferingHints.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchBufferingHints.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchBufferingHints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchBufferingHints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchbufferinghints.html
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchRetryOptions.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchRetryOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchRetryOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchRetryOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchretryoptions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamEncryptionConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamEncryptionConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamEncryptionConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamEncryptionConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-encryptionconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKMSEncryptionConfig.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKMSEncryptionConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKMSEncryptionConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKMSEncryptionConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-kmsencryptionconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-kinesisstreamsourceconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessingConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessingConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessingConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processingconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessor.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessor.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessor.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessor.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processor.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessorParameter.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessorParameter.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessorParameter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessorParameter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processorparameter.html
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-redshiftdestinationconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-s3destinationconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-splunkdestinationconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSplunkRetryOptions.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSplunkRetryOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSplunkRetryOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSplunkRetryOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-splunkretryoptions.html
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisStreamStreamEncryption.hs b/library-gen/Stratosphere/ResourceProperties/KinesisStreamStreamEncryption.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisStreamStreamEncryption.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisStreamStreamEncryption.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesis-stream-streamencryption.html
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaAliasAliasRoutingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/LambdaAliasAliasRoutingConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/LambdaAliasAliasRoutingConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaAliasAliasRoutingConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-alias-aliasroutingconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaAliasVersionWeight.hs b/library-gen/Stratosphere/ResourceProperties/LambdaAliasVersionWeight.hs
--- a/library-gen/Stratosphere/ResourceProperties/LambdaAliasVersionWeight.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaAliasVersionWeight.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-alias-versionweight.html
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionCode.hs b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionCode.hs
--- a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionCode.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionCode.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionDeadLetterConfig.hs b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionDeadLetterConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionDeadLetterConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionDeadLetterConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-deadletterconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionEnvironment.hs b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionEnvironment.hs
--- a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionEnvironment.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionEnvironment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-environment.html
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionTracingConfig.hs b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionTracingConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionTracingConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionTracingConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-tracingconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionVpcConfig.hs b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionVpcConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionVpcConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionVpcConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaLayerVersionContent.hs b/library-gen/Stratosphere/ResourceProperties/LambdaLayerVersionContent.hs
--- a/library-gen/Stratosphere/ResourceProperties/LambdaLayerVersionContent.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaLayerVersionContent.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-layerversion-content.html
diff --git a/library-gen/Stratosphere/ResourceProperties/LogsMetricFilterMetricTransformation.hs b/library-gen/Stratosphere/ResourceProperties/LogsMetricFilterMetricTransformation.hs
--- a/library-gen/Stratosphere/ResourceProperties/LogsMetricFilterMetricTransformation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LogsMetricFilterMetricTransformation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-logs-metricfilter-metrictransformation.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppDataSource.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppDataSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppDataSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppDataSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-datasource.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppEnvironmentVariable.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppEnvironmentVariable.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppEnvironmentVariable.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppEnvironmentVariable.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-environment.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSource.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSslConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSslConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSslConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSslConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-sslconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksCMServerEngineAttribute.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksCMServerEngineAttribute.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksCMServerEngineAttribute.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksCMServerEngineAttribute.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworkscm-server-engineattribute.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceBlockDeviceMapping.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceBlockDeviceMapping.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceBlockDeviceMapping.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceBlockDeviceMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-blockdevicemapping.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceEbsBlockDevice.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceEbsBlockDevice.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceEbsBlockDevice.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceEbsBlockDevice.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceTimeBasedAutoScaling.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceTimeBasedAutoScaling.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceTimeBasedAutoScaling.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceTimeBasedAutoScaling.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-timebasedautoscaling.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerAutoScalingThresholds.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerAutoScalingThresholds.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerAutoScalingThresholds.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerAutoScalingThresholds.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLifecycleEventConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLifecycleEventConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLifecycleEventConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLifecycleEventConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLoadBasedAutoScaling.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLoadBasedAutoScaling.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLoadBasedAutoScaling.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLoadBasedAutoScaling.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerRecipes.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerRecipes.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerRecipes.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerRecipes.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerShutdownEventConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerShutdownEventConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerShutdownEventConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerShutdownEventConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration-shutdowneventconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerVolumeConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerVolumeConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerVolumeConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerVolumeConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackChefConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackChefConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackChefConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackChefConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-chefconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackElasticIp.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackElasticIp.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackElasticIp.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackElasticIp.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-elasticip.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackRdsDbInstance.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackRdsDbInstance.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackRdsDbInstance.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackRdsDbInstance.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-rdsdbinstance.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackSource.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackStackConfigurationManager.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackStackConfigurationManager.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackStackConfigurationManager.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackStackConfigurationManager.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-stackconfigmanager.html
diff --git a/library-gen/Stratosphere/ResourceProperties/RDSDBClusterScalingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/RDSDBClusterScalingConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/RDSDBClusterScalingConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RDSDBClusterScalingConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-scalingconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/RDSDBInstanceProcessorFeature.hs b/library-gen/Stratosphere/ResourceProperties/RDSDBInstanceProcessorFeature.hs
--- a/library-gen/Stratosphere/ResourceProperties/RDSDBInstanceProcessorFeature.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RDSDBInstanceProcessorFeature.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-processorfeature.html
diff --git a/library-gen/Stratosphere/ResourceProperties/RDSDBSecurityGroupIngressProperty.hs b/library-gen/Stratosphere/ResourceProperties/RDSDBSecurityGroupIngressProperty.hs
--- a/library-gen/Stratosphere/ResourceProperties/RDSDBSecurityGroupIngressProperty.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RDSDBSecurityGroupIngressProperty.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group-rule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html
diff --git a/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionSetting.hs b/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionSetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionSetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionSetting.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations-optionsettings.html
diff --git a/library-gen/Stratosphere/ResourceProperties/RedshiftClusterLoggingProperties.hs b/library-gen/Stratosphere/ResourceProperties/RedshiftClusterLoggingProperties.hs
--- a/library-gen/Stratosphere/ResourceProperties/RedshiftClusterLoggingProperties.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RedshiftClusterLoggingProperties.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-redshift-cluster-loggingproperties.html
diff --git a/library-gen/Stratosphere/ResourceProperties/RedshiftClusterParameterGroupParameter.hs b/library-gen/Stratosphere/ResourceProperties/RedshiftClusterParameterGroupParameter.hs
--- a/library-gen/Stratosphere/ResourceProperties/RedshiftClusterParameterGroupParameter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RedshiftClusterParameterGroupParameter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-property-redshift-clusterparametergroup-parameter.html
diff --git a/library-gen/Stratosphere/ResourceProperties/RoboMakerRobotApplicationRobotSoftwareSuite.hs b/library-gen/Stratosphere/ResourceProperties/RoboMakerRobotApplicationRobotSoftwareSuite.hs
--- a/library-gen/Stratosphere/ResourceProperties/RoboMakerRobotApplicationRobotSoftwareSuite.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RoboMakerRobotApplicationRobotSoftwareSuite.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-robomaker-robotapplication-robotsoftwaresuite.html
diff --git a/library-gen/Stratosphere/ResourceProperties/RoboMakerRobotApplicationSourceConfig.hs b/library-gen/Stratosphere/ResourceProperties/RoboMakerRobotApplicationSourceConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/RoboMakerRobotApplicationSourceConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RoboMakerRobotApplicationSourceConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-robomaker-robotapplication-sourceconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationRenderingEngine.hs b/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationRenderingEngine.hs
--- a/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationRenderingEngine.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationRenderingEngine.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-robomaker-simulationapplication-renderingengine.html
diff --git a/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationRobotSoftwareSuite.hs b/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationRobotSoftwareSuite.hs
--- a/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationRobotSoftwareSuite.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationRobotSoftwareSuite.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-robomaker-simulationapplication-robotsoftwaresuite.html
diff --git a/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationSimulationSoftwareSuite.hs b/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationSimulationSoftwareSuite.hs
--- a/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationSimulationSoftwareSuite.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationSimulationSoftwareSuite.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-robomaker-simulationapplication-simulationsoftwaresuite.html
diff --git a/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationSourceConfig.hs b/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationSourceConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationSourceConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RoboMakerSimulationApplicationSourceConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-robomaker-simulationapplication-sourceconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckAlarmIdentifier.hs b/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckAlarmIdentifier.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckAlarmIdentifier.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckAlarmIdentifier.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-alarmidentifier.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckConfig.hs b/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckTag.hs b/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckTag.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckTag.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckTag.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthchecktag.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneConfig.hs b/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-hostedzone-hostedzoneconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneTag.hs b/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneTag.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneTag.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneTag.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-hostedzone-hostedzonetags.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneQueryLoggingConfig.hs b/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneQueryLoggingConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneQueryLoggingConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneQueryLoggingConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-hostedzone-queryloggingconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneVPC.hs b/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneVPC.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneVPC.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneVPC.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone-hostedzonevpcs.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetAliasTarget.hs b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetAliasTarget.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetAliasTarget.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetAliasTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGeoLocation.hs b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGeoLocation.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGeoLocation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGeoLocation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset-geolocation.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupAliasTarget.hs b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupAliasTarget.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupAliasTarget.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupAliasTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupGeoLocation.hs b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupGeoLocation.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupGeoLocation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupGeoLocation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset-geolocation.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupRecordSet.hs b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupRecordSet.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupRecordSet.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupRecordSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53ResolverResolverEndpointIpAddressRequest.hs b/library-gen/Stratosphere/ResourceProperties/Route53ResolverResolverEndpointIpAddressRequest.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53ResolverResolverEndpointIpAddressRequest.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53ResolverResolverEndpointIpAddressRequest.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53resolver-resolverendpoint-ipaddressrequest.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53ResolverResolverRuleTargetAddress.hs b/library-gen/Stratosphere/ResourceProperties/Route53ResolverResolverRuleTargetAddress.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53ResolverResolverRuleTargetAddress.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53ResolverResolverRuleTargetAddress.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53resolver-resolverrule-targetaddress.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketAbortIncompleteMultipartUpload.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketAbortIncompleteMultipartUpload.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketAbortIncompleteMultipartUpload.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketAbortIncompleteMultipartUpload.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-abortincompletemultipartupload.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketAccelerateConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketAccelerateConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketAccelerateConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketAccelerateConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accelerateconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketAccessControlTranslation.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketAccessControlTranslation.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketAccessControlTranslation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketAccessControlTranslation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accesscontroltranslation.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketAnalyticsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketAnalyticsConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketAnalyticsConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketAnalyticsConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-analyticsconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketBucketEncryption.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketBucketEncryption.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketBucketEncryption.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketBucketEncryption.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-bucketencryption.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketCorsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketCorsConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketCorsConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketCorsConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketCorsRule.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketCorsRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketCorsRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketCorsRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketDataExport.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketDataExport.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketDataExport.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketDataExport.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-dataexport.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketDestination.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketDestination.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketDestination.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketDestination.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-destination.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketEncryptionConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketEncryptionConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketEncryptionConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketEncryptionConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-encryptionconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketFilterRule.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketFilterRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketFilterRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketFilterRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key-rules.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketInventoryConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketInventoryConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketInventoryConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketInventoryConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketLambdaConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketLambdaConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketLambdaConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketLambdaConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-lambdaconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketLifecycleConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketLifecycleConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketLifecycleConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketLifecycleConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketLoggingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketLoggingConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketLoggingConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketLoggingConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketMetricsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketMetricsConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketMetricsConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketMetricsConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metricsconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketNoncurrentVersionTransition.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketNoncurrentVersionTransition.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketNoncurrentVersionTransition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketNoncurrentVersionTransition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationFilter.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketPublicAccessBlockConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketPublicAccessBlockConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketPublicAccessBlockConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketPublicAccessBlockConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-publicaccessblockconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketQueueConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketQueueConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketQueueConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketQueueConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-queueconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectAllRequestsTo.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectAllRequestsTo.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectAllRequestsTo.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectAllRequestsTo.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-redirectallrequeststo.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectRule.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-redirectrule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationDestination.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationDestination.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationDestination.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationDestination.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules-destination.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationRule.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRule.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRuleCondition.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRuleCondition.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRuleCondition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRuleCondition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-routingrulecondition.html
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketS3KeyFilter.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketS3KeyFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketS3KeyFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketS3KeyFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketServerSideEncryptionByDefault.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketServerSideEncryptionByDefault.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketServerSideEncryptionByDefault.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketServerSideEncryptionByDefault.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionbydefault.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketServerSideEncryptionRule.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketServerSideEncryptionRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketServerSideEncryptionRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketServerSideEncryptionRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketSourceSelectionCriteria.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketSourceSelectionCriteria.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketSourceSelectionCriteria.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketSourceSelectionCriteria.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-sourceselectioncriteria.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketSseKmsEncryptedObjects.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketSseKmsEncryptedObjects.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketSseKmsEncryptedObjects.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketSseKmsEncryptedObjects.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-ssekmsencryptedobjects.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketStorageClassAnalysis.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketStorageClassAnalysis.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketStorageClassAnalysis.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketStorageClassAnalysis.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-storageclassanalysis.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketTagFilter.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketTagFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketTagFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketTagFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-tagfilter.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketTopicConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketTopicConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketTopicConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketTopicConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-topicconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketTransition.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketTransition.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketTransition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketTransition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-transition.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketVersioningConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketVersioningConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketVersioningConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketVersioningConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-versioningconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketWebsiteConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketWebsiteConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketWebsiteConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketWebsiteConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationCloudWatchDestination.hs b/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationCloudWatchDestination.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationCloudWatchDestination.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationCloudWatchDestination.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-configurationseteventdestination-cloudwatchdestination.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationDimensionConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationDimensionConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationDimensionConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationDimensionConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-configurationseteventdestination-dimensionconfiguration.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationEventDestination.hs b/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationEventDestination.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationEventDestination.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationEventDestination.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-configurationseteventdestination-eventdestination.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationKinesisFirehoseDestination.hs b/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationKinesisFirehoseDestination.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationKinesisFirehoseDestination.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESConfigurationSetEventDestinationKinesisFirehoseDestination.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-configurationseteventdestination-kinesisfirehosedestination.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESReceiptFilterFilter.hs b/library-gen/Stratosphere/ResourceProperties/SESReceiptFilterFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESReceiptFilterFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESReceiptFilterFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptfilter-filter.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESReceiptFilterIpFilter.hs b/library-gen/Stratosphere/ResourceProperties/SESReceiptFilterIpFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESReceiptFilterIpFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESReceiptFilterIpFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptfilter-ipfilter.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleAction.hs b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-action.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleAddHeaderAction.hs b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleAddHeaderAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleAddHeaderAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleAddHeaderAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-addheaderaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleBounceAction.hs b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleBounceAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleBounceAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleBounceAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-bounceaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleLambdaAction.hs b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleLambdaAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleLambdaAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleLambdaAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-lambdaaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleRule.hs b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-rule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleS3Action.hs b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleS3Action.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleS3Action.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleS3Action.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-s3action.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleSNSAction.hs b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleSNSAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleSNSAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleSNSAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-snsaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleStopAction.hs b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleStopAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleStopAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleStopAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-stopaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleWorkmailAction.hs b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleWorkmailAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleWorkmailAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESReceiptRuleWorkmailAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-workmailaction.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SESTemplateTemplate.hs b/library-gen/Stratosphere/ResourceProperties/SESTemplateTemplate.hs
--- a/library-gen/Stratosphere/ResourceProperties/SESTemplateTemplate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SESTemplateTemplate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-template-template.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SNSTopicSubscription.hs b/library-gen/Stratosphere/ResourceProperties/SNSTopicSubscription.hs
--- a/library-gen/Stratosphere/ResourceProperties/SNSTopicSubscription.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SNSTopicSubscription.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-subscription.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMAssociationInstanceAssociationOutputLocation.hs b/library-gen/Stratosphere/ResourceProperties/SSMAssociationInstanceAssociationOutputLocation.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMAssociationInstanceAssociationOutputLocation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMAssociationInstanceAssociationOutputLocation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-instanceassociationoutputlocation.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMAssociationParameterValues.hs b/library-gen/Stratosphere/ResourceProperties/SSMAssociationParameterValues.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMAssociationParameterValues.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMAssociationParameterValues.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-parametervalues.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMAssociationS3OutputLocation.hs b/library-gen/Stratosphere/ResourceProperties/SSMAssociationS3OutputLocation.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMAssociationS3OutputLocation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMAssociationS3OutputLocation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-s3outputlocation.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMAssociationTarget.hs b/library-gen/Stratosphere/ResourceProperties/SSMAssociationTarget.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMAssociationTarget.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMAssociationTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-target.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskLoggingInfo.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskLoggingInfo.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskLoggingInfo.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskLoggingInfo.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-logginginfo.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowautomationparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowlambdaparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowruncommandparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowstepfunctionsparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskNotificationConfig.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskNotificationConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskNotificationConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskNotificationConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-notificationconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskTarget.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskTarget.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskTarget.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-target.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskTaskInvocationParameters.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskTaskInvocationParameters.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskTaskInvocationParameters.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskTaskInvocationParameters.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-taskinvocationparameters.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchFilter.hs b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-patchfilter.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchFilterGroup.hs b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchFilterGroup.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchFilterGroup.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchFilterGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-patchfiltergroup.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchSource.hs b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-patchsource.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselineRule.hs b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselineRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselineRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselineRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-rule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselineRuleGroup.hs b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselineRuleGroup.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselineRuleGroup.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselineRuleGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-rulegroup.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SageMakerEndpointConfigProductionVariant.hs b/library-gen/Stratosphere/ResourceProperties/SageMakerEndpointConfigProductionVariant.hs
--- a/library-gen/Stratosphere/ResourceProperties/SageMakerEndpointConfigProductionVariant.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SageMakerEndpointConfigProductionVariant.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SageMakerModelContainerDefinition.hs b/library-gen/Stratosphere/ResourceProperties/SageMakerModelContainerDefinition.hs
--- a/library-gen/Stratosphere/ResourceProperties/SageMakerModelContainerDefinition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SageMakerModelContainerDefinition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SageMakerModelVpcConfig.hs b/library-gen/Stratosphere/ResourceProperties/SageMakerModelVpcConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/SageMakerModelVpcConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SageMakerModelVpcConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-vpcconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook.hs b/library-gen/Stratosphere/ResourceProperties/SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook.hs
--- a/library-gen/Stratosphere/ResourceProperties/SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-notebookinstancelifecycleconfig-notebookinstancelifecyclehook.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SecretsManagerRotationScheduleRotationRules.hs b/library-gen/Stratosphere/ResourceProperties/SecretsManagerRotationScheduleRotationRules.hs
--- a/library-gen/Stratosphere/ResourceProperties/SecretsManagerRotationScheduleRotationRules.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SecretsManagerRotationScheduleRotationRules.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-rotationrules.html
diff --git a/library-gen/Stratosphere/ResourceProperties/SecretsManagerSecretGenerateSecretString.hs b/library-gen/Stratosphere/ResourceProperties/SecretsManagerSecretGenerateSecretString.hs
--- a/library-gen/Stratosphere/ResourceProperties/SecretsManagerSecretGenerateSecretString.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SecretsManagerSecretGenerateSecretString.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-generatesecretstring.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ServiceCatalogCloudFormationProductProvisioningArtifactProperties.hs b/library-gen/Stratosphere/ResourceProperties/ServiceCatalogCloudFormationProductProvisioningArtifactProperties.hs
--- a/library-gen/Stratosphere/ResourceProperties/ServiceCatalogCloudFormationProductProvisioningArtifactProperties.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ServiceCatalogCloudFormationProductProvisioningArtifactProperties.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ServiceCatalogCloudFormationProvisionedProductProvisioningParameter.hs b/library-gen/Stratosphere/ResourceProperties/ServiceCatalogCloudFormationProvisionedProductProvisioningParameter.hs
--- a/library-gen/Stratosphere/ResourceProperties/ServiceCatalogCloudFormationProvisionedProductProvisioningParameter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ServiceCatalogCloudFormationProvisionedProductProvisioningParameter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationprovisionedproduct-provisioningparameter.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsConfig.hs b/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-dnsconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsRecord.hs b/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsRecord.hs
--- a/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsRecord.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsRecord.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-dnsrecord.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceHealthCheckConfig.hs b/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceHealthCheckConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceHealthCheckConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceHealthCheckConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-healthcheckconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceHealthCheckCustomConfig.hs b/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceHealthCheckCustomConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceHealthCheckCustomConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceHealthCheckCustomConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-healthcheckcustomconfig.html
diff --git a/library-gen/Stratosphere/ResourceProperties/Tag.hs b/library-gen/Stratosphere/ResourceProperties/Tag.hs
--- a/library-gen/Stratosphere/ResourceProperties/Tag.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Tag.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetByteMatchTuple.hs b/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetByteMatchTuple.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetByteMatchTuple.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetByteMatchTuple.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples-fieldtomatch.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFIPSetIPSetDescriptor.hs b/library-gen/Stratosphere/ResourceProperties/WAFIPSetIPSetDescriptor.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFIPSetIPSetDescriptor.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFIPSetIPSetDescriptor.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-ipset-ipsetdescriptors.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetByteMatchTuple.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetByteMatchTuple.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetByteMatchTuple.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetByteMatchTuple.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-bytematchset-bytematchtuple.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-bytematchset-fieldtomatch.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalIPSetIPSetDescriptor.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalIPSetIPSetDescriptor.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalIPSetIPSetDescriptor.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalIPSetIPSetDescriptor.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-ipset-ipsetdescriptor.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalRulePredicate.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalRulePredicate.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalRulePredicate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalRulePredicate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-rule-predicate.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sizeconstraintset-fieldtomatch.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetSizeConstraint.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetSizeConstraint.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetSizeConstraint.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetSizeConstraint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sizeconstraintset-sizeconstraint.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sqlinjectionmatchset-fieldtomatch.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sqlinjectionmatchset-sqlinjectionmatchtuple.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLAction.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-webacl-action.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLRule.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-webacl-rule.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-xssmatchset-fieldtomatch.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetXssMatchTuple.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetXssMatchTuple.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetXssMatchTuple.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetXssMatchTuple.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-xssmatchset-xssmatchtuple.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRulePredicate.hs b/library-gen/Stratosphere/ResourceProperties/WAFRulePredicate.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRulePredicate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRulePredicate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-rule-predicates.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint-fieldtomatch.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetSizeConstraint.hs b/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetSizeConstraint.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetSizeConstraint.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetSizeConstraint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples-fieldtomatch.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetSqlInjectionMatchTuple.hs b/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetSqlInjectionMatchTuple.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetSqlInjectionMatchTuple.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetSqlInjectionMatchTuple.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sqlinjectionmatchset-sqlinjectionmatchtuples.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFWebACLActivatedRule.hs b/library-gen/Stratosphere/ResourceProperties/WAFWebACLActivatedRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFWebACLActivatedRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFWebACLActivatedRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-webacl-rules.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFWebACLWafAction.hs b/library-gen/Stratosphere/ResourceProperties/WAFWebACLWafAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFWebACLWafAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFWebACLWafAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-webacl-action.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-xssmatchset-xssmatchtuple-fieldtomatch.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetXssMatchTuple.hs b/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetXssMatchTuple.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetXssMatchTuple.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetXssMatchTuple.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-xssmatchset-xssmatchtuple.html
diff --git a/library-gen/Stratosphere/ResourceProperties/WorkSpacesWorkspaceWorkspaceProperties.hs b/library-gen/Stratosphere/ResourceProperties/WorkSpacesWorkspaceWorkspaceProperties.hs
--- a/library-gen/Stratosphere/ResourceProperties/WorkSpacesWorkspaceWorkspaceProperties.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WorkSpacesWorkspaceWorkspaceProperties.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-workspaces-workspace-workspaceproperties.html
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
@@ -6,2330 +6,1238 @@
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE TypeFamilies #-}
-
--- | See:
--- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resources-section-structure.html
---
--- The required Resources section declare the AWS resources that you want as
--- part of your stack, such as an Amazon EC2 instance or an Amazon S3 bucket.
--- You must declare each resource separately; however, you can specify multiple
--- resources of the same type. If you declare multiple resources, separate them
--- with commas.
-
-module Stratosphere.Resources
-  ( module X
-  , Resource (..)
-  , resource
-  , resourceName
-  , resourceProperties
-  , resourceDeletionPolicy
-  , resourceCreationPolicy
-  , resourceUpdatePolicy
-  , resourceDependsOn
-  , resourceMetadata
-  , resourceCondition
-  , ResourceProperties (..)
-  , DeletionPolicy (..)
-  , Resources (..)
-  ) where
-
-import Control.Lens hiding ((.=))
-import Data.Aeson
-import Data.Aeson.Types
-import Data.Maybe (catMaybes)
-import Data.Semigroup (Semigroup)
-import qualified Data.Text as T
-import GHC.Exts (IsList(..))
-import GHC.Generics (Generic)
-
-import Stratosphere.Resources.AmazonMQBroker as X
-import Stratosphere.Resources.AmazonMQConfiguration as X
-import Stratosphere.Resources.AmazonMQConfigurationAssociation as X
-import Stratosphere.Resources.ApiGatewayAccount as X
-import Stratosphere.Resources.ApiGatewayApiKey as X
-import Stratosphere.Resources.ApiGatewayAuthorizer as X
-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.ApiGatewayGatewayResponse 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
-import Stratosphere.Resources.ApiGatewayUsagePlan as X
-import Stratosphere.Resources.ApiGatewayUsagePlanKey as X
-import Stratosphere.Resources.ApiGatewayVpcLink as X
-import Stratosphere.Resources.ApiGatewayV2Api as X
-import Stratosphere.Resources.ApiGatewayV2Authorizer as X
-import Stratosphere.Resources.ApiGatewayV2Deployment as X
-import Stratosphere.Resources.ApiGatewayV2Integration as X
-import Stratosphere.Resources.ApiGatewayV2IntegrationResponse as X
-import Stratosphere.Resources.ApiGatewayV2Model as X
-import Stratosphere.Resources.ApiGatewayV2Route as X
-import Stratosphere.Resources.ApiGatewayV2RouteResponse as X
-import Stratosphere.Resources.ApiGatewayV2Stage as X
-import Stratosphere.Resources.AppStreamDirectoryConfig as X
-import Stratosphere.Resources.AppStreamFleet as X
-import Stratosphere.Resources.AppStreamImageBuilder as X
-import Stratosphere.Resources.AppStreamStack as X
-import Stratosphere.Resources.AppStreamStackFleetAssociation as X
-import Stratosphere.Resources.AppStreamStackUserAssociation as X
-import Stratosphere.Resources.AppStreamUser as X
-import Stratosphere.Resources.AppSyncApiKey as X
-import Stratosphere.Resources.AppSyncDataSource as X
-import Stratosphere.Resources.AppSyncFunctionConfiguration as X
-import Stratosphere.Resources.AppSyncGraphQLApi as X
-import Stratosphere.Resources.AppSyncGraphQLSchema as X
-import Stratosphere.Resources.AppSyncResolver as X
-import Stratosphere.Resources.ApplicationAutoScalingScalableTarget as X
-import Stratosphere.Resources.ApplicationAutoScalingScalingPolicy as X
-import Stratosphere.Resources.AthenaNamedQuery as X
-import Stratosphere.Resources.AutoScalingAutoScalingGroup as X
-import Stratosphere.Resources.AutoScalingLaunchConfiguration as X
-import Stratosphere.Resources.AutoScalingLifecycleHook as X
-import Stratosphere.Resources.AutoScalingScalingPolicy as X
-import Stratosphere.Resources.AutoScalingScheduledAction as X
-import Stratosphere.Resources.AutoScalingPlansScalingPlan as X
-import Stratosphere.Resources.BatchComputeEnvironment as X
-import Stratosphere.Resources.BatchJobDefinition as X
-import Stratosphere.Resources.BatchJobQueue as X
-import Stratosphere.Resources.BudgetsBudget as X
-import Stratosphere.Resources.CertificateManagerCertificate as X
-import Stratosphere.Resources.Cloud9EnvironmentEC2 as X
-import Stratosphere.Resources.CloudFormationCustomResource as X
-import Stratosphere.Resources.CloudFormationMacro as X
-import Stratosphere.Resources.CloudFormationStack as X
-import Stratosphere.Resources.CloudFormationWaitCondition as X
-import Stratosphere.Resources.CloudFormationWaitConditionHandle as X
-import Stratosphere.Resources.CloudFrontCloudFrontOriginAccessIdentity as X
-import Stratosphere.Resources.CloudFrontDistribution as X
-import Stratosphere.Resources.CloudFrontStreamingDistribution as X
-import Stratosphere.Resources.CloudTrailTrail as X
-import Stratosphere.Resources.CloudWatchAlarm as X
-import Stratosphere.Resources.CloudWatchDashboard as X
-import Stratosphere.Resources.CodeBuildProject as X
-import Stratosphere.Resources.CodeCommitRepository as X
-import Stratosphere.Resources.CodeDeployApplication as X
-import Stratosphere.Resources.CodeDeployDeploymentConfig as X
-import Stratosphere.Resources.CodeDeployDeploymentGroup as X
-import Stratosphere.Resources.CodePipelineCustomActionType as X
-import Stratosphere.Resources.CodePipelinePipeline as X
-import Stratosphere.Resources.CodePipelineWebhook as X
-import Stratosphere.Resources.CognitoIdentityPool as X
-import Stratosphere.Resources.CognitoIdentityPoolRoleAttachment as X
-import Stratosphere.Resources.CognitoUserPool as X
-import Stratosphere.Resources.CognitoUserPoolClient as X
-import Stratosphere.Resources.CognitoUserPoolGroup as X
-import Stratosphere.Resources.CognitoUserPoolUser as X
-import Stratosphere.Resources.CognitoUserPoolUserToGroupAttachment as X
-import Stratosphere.Resources.ConfigAggregationAuthorization as X
-import Stratosphere.Resources.ConfigConfigRule as X
-import Stratosphere.Resources.ConfigConfigurationAggregator as X
-import Stratosphere.Resources.ConfigConfigurationRecorder as X
-import Stratosphere.Resources.ConfigDeliveryChannel as X
-import Stratosphere.Resources.DAXCluster as X
-import Stratosphere.Resources.DAXParameterGroup as X
-import Stratosphere.Resources.DAXSubnetGroup as X
-import Stratosphere.Resources.DLMLifecyclePolicy as X
-import Stratosphere.Resources.DMSCertificate as X
-import Stratosphere.Resources.DMSEndpoint as X
-import Stratosphere.Resources.DMSEventSubscription as X
-import Stratosphere.Resources.DMSReplicationInstance as X
-import Stratosphere.Resources.DMSReplicationSubnetGroup as X
-import Stratosphere.Resources.DMSReplicationTask as X
-import Stratosphere.Resources.DataPipelinePipeline as X
-import Stratosphere.Resources.DirectoryServiceMicrosoftAD as X
-import Stratosphere.Resources.DirectoryServiceSimpleAD as X
-import Stratosphere.Resources.DocDBDBCluster as X
-import Stratosphere.Resources.DocDBDBClusterParameterGroup as X
-import Stratosphere.Resources.DocDBDBInstance as X
-import Stratosphere.Resources.DocDBDBSubnetGroup as X
-import Stratosphere.Resources.DynamoDBTable as X
-import Stratosphere.Resources.EC2CustomerGateway as X
-import Stratosphere.Resources.EC2DHCPOptions as X
-import Stratosphere.Resources.EC2EC2Fleet as X
-import Stratosphere.Resources.EC2EIP as X
-import Stratosphere.Resources.EC2EIPAssociation as X
-import Stratosphere.Resources.EC2EgressOnlyInternetGateway as X
-import Stratosphere.Resources.EC2FlowLog as X
-import Stratosphere.Resources.EC2Host as X
-import Stratosphere.Resources.EC2Instance as X
-import Stratosphere.Resources.EC2InternetGateway as X
-import Stratosphere.Resources.EC2LaunchTemplate as X
-import Stratosphere.Resources.EC2NatGateway as X
-import Stratosphere.Resources.EC2NetworkAcl as X
-import Stratosphere.Resources.EC2NetworkAclEntry as X
-import Stratosphere.Resources.EC2NetworkInterface as X
-import Stratosphere.Resources.EC2NetworkInterfaceAttachment as X
-import Stratosphere.Resources.EC2NetworkInterfacePermission as X
-import Stratosphere.Resources.EC2PlacementGroup as X
-import Stratosphere.Resources.EC2Route as X
-import Stratosphere.Resources.EC2RouteTable as X
-import Stratosphere.Resources.EC2SecurityGroup as X
-import Stratosphere.Resources.EC2SecurityGroupEgress as X
-import Stratosphere.Resources.EC2SecurityGroupIngress as X
-import Stratosphere.Resources.EC2SpotFleet as X
-import Stratosphere.Resources.EC2Subnet as X
-import Stratosphere.Resources.EC2SubnetCidrBlock as X
-import Stratosphere.Resources.EC2SubnetNetworkAclAssociation as X
-import Stratosphere.Resources.EC2SubnetRouteTableAssociation as X
-import Stratosphere.Resources.EC2TransitGateway as X
-import Stratosphere.Resources.EC2TransitGatewayAttachment as X
-import Stratosphere.Resources.EC2TransitGatewayRoute as X
-import Stratosphere.Resources.EC2TransitGatewayRouteTable as X
-import Stratosphere.Resources.EC2TransitGatewayRouteTableAssociation as X
-import Stratosphere.Resources.EC2TransitGatewayRouteTablePropagation as X
-import Stratosphere.Resources.EC2TrunkInterfaceAssociation as X
-import Stratosphere.Resources.EC2VPC as X
-import Stratosphere.Resources.EC2VPCCidrBlock as X
-import Stratosphere.Resources.EC2VPCDHCPOptionsAssociation as X
-import Stratosphere.Resources.EC2VPCEndpoint as X
-import Stratosphere.Resources.EC2VPCEndpointConnectionNotification as X
-import Stratosphere.Resources.EC2VPCEndpointServicePermissions as X
-import Stratosphere.Resources.EC2VPCGatewayAttachment as X
-import Stratosphere.Resources.EC2VPCPeeringConnection as X
-import Stratosphere.Resources.EC2VPNConnection as X
-import Stratosphere.Resources.EC2VPNConnectionRoute as X
-import Stratosphere.Resources.EC2VPNGateway as X
-import Stratosphere.Resources.EC2VPNGatewayRoutePropagation as X
-import Stratosphere.Resources.EC2Volume as X
-import Stratosphere.Resources.EC2VolumeAttachment as X
-import Stratosphere.Resources.ECRRepository as X
-import Stratosphere.Resources.ECSCluster as X
-import Stratosphere.Resources.ECSService as X
-import Stratosphere.Resources.ECSTaskDefinition as X
-import Stratosphere.Resources.EFSFileSystem as X
-import Stratosphere.Resources.EFSMountTarget as X
-import Stratosphere.Resources.EKSCluster as X
-import Stratosphere.Resources.EMRCluster as X
-import Stratosphere.Resources.EMRInstanceFleetConfig as X
-import Stratosphere.Resources.EMRInstanceGroupConfig as X
-import Stratosphere.Resources.EMRSecurityConfiguration as X
-import Stratosphere.Resources.EMRStep as X
-import Stratosphere.Resources.ElastiCacheCacheCluster as X
-import Stratosphere.Resources.ElastiCacheParameterGroup as X
-import Stratosphere.Resources.ElastiCacheReplicationGroup as X
-import Stratosphere.Resources.ElastiCacheSecurityGroup as X
-import Stratosphere.Resources.ElastiCacheSecurityGroupIngress as X
-import Stratosphere.Resources.ElastiCacheSubnetGroup as X
-import Stratosphere.Resources.ElasticBeanstalkApplication as X
-import Stratosphere.Resources.ElasticBeanstalkApplicationVersion as X
-import Stratosphere.Resources.ElasticBeanstalkConfigurationTemplate as X
-import Stratosphere.Resources.ElasticBeanstalkEnvironment as X
-import Stratosphere.Resources.ElasticLoadBalancingLoadBalancer as X
-import Stratosphere.Resources.ElasticLoadBalancingV2Listener as X
-import Stratosphere.Resources.ElasticLoadBalancingV2ListenerCertificateResource as X
-import Stratosphere.Resources.ElasticLoadBalancingV2ListenerRule as X
-import Stratosphere.Resources.ElasticLoadBalancingV2LoadBalancer as X
-import Stratosphere.Resources.ElasticLoadBalancingV2TargetGroup as X
-import Stratosphere.Resources.ElasticsearchDomain as X
-import Stratosphere.Resources.EventsEventBusPolicy as X
-import Stratosphere.Resources.EventsRule as X
-import Stratosphere.Resources.FSxFileSystem as X
-import Stratosphere.Resources.GameLiftAlias as X
-import Stratosphere.Resources.GameLiftBuild as X
-import Stratosphere.Resources.GameLiftFleet as X
-import Stratosphere.Resources.GlueClassifier as X
-import Stratosphere.Resources.GlueConnection as X
-import Stratosphere.Resources.GlueCrawler as X
-import Stratosphere.Resources.GlueDatabase as X
-import Stratosphere.Resources.GlueDevEndpoint as X
-import Stratosphere.Resources.GlueJob as X
-import Stratosphere.Resources.GluePartition as X
-import Stratosphere.Resources.GlueTable as X
-import Stratosphere.Resources.GlueTrigger as X
-import Stratosphere.Resources.GuardDutyDetector as X
-import Stratosphere.Resources.GuardDutyFilter as X
-import Stratosphere.Resources.GuardDutyIPSet as X
-import Stratosphere.Resources.GuardDutyMaster as X
-import Stratosphere.Resources.GuardDutyMember as X
-import Stratosphere.Resources.GuardDutyThreatIntelSet as X
-import Stratosphere.Resources.IAMAccessKey as X
-import Stratosphere.Resources.IAMGroup as X
-import Stratosphere.Resources.IAMInstanceProfile as X
-import Stratosphere.Resources.IAMManagedPolicy as X
-import Stratosphere.Resources.IAMPolicy as X
-import Stratosphere.Resources.IAMRole as X
-import Stratosphere.Resources.IAMServiceLinkedRole as X
-import Stratosphere.Resources.IAMUser as X
-import Stratosphere.Resources.IAMUserToGroupAddition as X
-import Stratosphere.Resources.InspectorAssessmentTarget as X
-import Stratosphere.Resources.InspectorAssessmentTemplate as X
-import Stratosphere.Resources.InspectorResourceGroup as X
-import Stratosphere.Resources.IoT1ClickDevice as X
-import Stratosphere.Resources.IoT1ClickPlacement as X
-import Stratosphere.Resources.IoT1ClickProject as X
-import Stratosphere.Resources.IoTCertificate as X
-import Stratosphere.Resources.IoTPolicy as X
-import Stratosphere.Resources.IoTPolicyPrincipalAttachment as X
-import Stratosphere.Resources.IoTThing as X
-import Stratosphere.Resources.IoTThingPrincipalAttachment as X
-import Stratosphere.Resources.IoTTopicRule as X
-import Stratosphere.Resources.IoTAnalyticsChannel as X
-import Stratosphere.Resources.IoTAnalyticsDataset as X
-import Stratosphere.Resources.IoTAnalyticsDatastore as X
-import Stratosphere.Resources.IoTAnalyticsPipeline as X
-import Stratosphere.Resources.KMSAlias as X
-import Stratosphere.Resources.KMSKey as X
-import Stratosphere.Resources.KinesisStream as X
-import Stratosphere.Resources.KinesisStreamConsumer as X
-import Stratosphere.Resources.KinesisAnalyticsApplication as X
-import Stratosphere.Resources.KinesisAnalyticsApplicationOutput as X
-import Stratosphere.Resources.KinesisAnalyticsApplicationReferenceDataSource as X
-import Stratosphere.Resources.KinesisAnalyticsV2Application as X
-import Stratosphere.Resources.KinesisAnalyticsV2ApplicationCloudWatchLoggingOption as X
-import Stratosphere.Resources.KinesisAnalyticsV2ApplicationOutput as X
-import Stratosphere.Resources.KinesisAnalyticsV2ApplicationReferenceDataSource as X
-import Stratosphere.Resources.KinesisFirehoseDeliveryStream as X
-import Stratosphere.Resources.LambdaAlias as X
-import Stratosphere.Resources.LambdaEventSourceMapping as X
-import Stratosphere.Resources.LambdaFunction as X
-import Stratosphere.Resources.LambdaLayerVersion as X
-import Stratosphere.Resources.LambdaLayerVersionPermission as X
-import Stratosphere.Resources.LambdaPermission as X
-import Stratosphere.Resources.LambdaVersion as X
-import Stratosphere.Resources.LogsDestination as X
-import Stratosphere.Resources.LogsLogGroup as X
-import Stratosphere.Resources.LogsLogStream as X
-import Stratosphere.Resources.LogsMetricFilter as X
-import Stratosphere.Resources.LogsSubscriptionFilter as X
-import Stratosphere.Resources.NeptuneDBCluster as X
-import Stratosphere.Resources.NeptuneDBClusterParameterGroup as X
-import Stratosphere.Resources.NeptuneDBInstance as X
-import Stratosphere.Resources.NeptuneDBParameterGroup as X
-import Stratosphere.Resources.NeptuneDBSubnetGroup as X
-import Stratosphere.Resources.OpsWorksApp as X
-import Stratosphere.Resources.OpsWorksElasticLoadBalancerAttachment as X
-import Stratosphere.Resources.OpsWorksInstance as X
-import Stratosphere.Resources.OpsWorksLayer as X
-import Stratosphere.Resources.OpsWorksStack as X
-import Stratosphere.Resources.OpsWorksUserProfile as X
-import Stratosphere.Resources.OpsWorksVolume as X
-import Stratosphere.Resources.OpsWorksCMServer as X
-import Stratosphere.Resources.RAMResourceShare as X
-import Stratosphere.Resources.RDSDBCluster as X
-import Stratosphere.Resources.RDSDBClusterParameterGroup as X
-import Stratosphere.Resources.RDSDBInstance as X
-import Stratosphere.Resources.RDSDBParameterGroup as X
-import Stratosphere.Resources.RDSDBSecurityGroup as X
-import Stratosphere.Resources.RDSDBSecurityGroupIngress as X
-import Stratosphere.Resources.RDSDBSubnetGroup as X
-import Stratosphere.Resources.RDSEventSubscription as X
-import Stratosphere.Resources.RDSOptionGroup as X
-import Stratosphere.Resources.RedshiftCluster as X
-import Stratosphere.Resources.RedshiftClusterParameterGroup as X
-import Stratosphere.Resources.RedshiftClusterSecurityGroup as X
-import Stratosphere.Resources.RedshiftClusterSecurityGroupIngress as X
-import Stratosphere.Resources.RedshiftClusterSubnetGroup as X
-import Stratosphere.Resources.RoboMakerFleet as X
-import Stratosphere.Resources.RoboMakerRobot as X
-import Stratosphere.Resources.RoboMakerRobotApplication as X
-import Stratosphere.Resources.RoboMakerRobotApplicationVersion as X
-import Stratosphere.Resources.RoboMakerSimulationApplication as X
-import Stratosphere.Resources.RoboMakerSimulationApplicationVersion as X
-import Stratosphere.Resources.Route53HealthCheck as X
-import Stratosphere.Resources.Route53HostedZone as X
-import Stratosphere.Resources.Route53RecordSet as X
-import Stratosphere.Resources.Route53RecordSetGroup as X
-import Stratosphere.Resources.Route53ResolverResolverEndpoint as X
-import Stratosphere.Resources.Route53ResolverResolverRule as X
-import Stratosphere.Resources.Route53ResolverResolverRuleAssociation as X
-import Stratosphere.Resources.S3Bucket as X
-import Stratosphere.Resources.S3BucketPolicy as X
-import Stratosphere.Resources.SDBDomain as X
-import Stratosphere.Resources.SESConfigurationSet as X
-import Stratosphere.Resources.SESConfigurationSetEventDestination as X
-import Stratosphere.Resources.SESReceiptFilter as X
-import Stratosphere.Resources.SESReceiptRule as X
-import Stratosphere.Resources.SESReceiptRuleSet as X
-import Stratosphere.Resources.SESTemplate as X
-import Stratosphere.Resources.SNSSubscription as X
-import Stratosphere.Resources.SNSTopic as X
-import Stratosphere.Resources.SNSTopicPolicy as X
-import Stratosphere.Resources.SQSQueue as X
-import Stratosphere.Resources.SQSQueuePolicy as X
-import Stratosphere.Resources.SSMAssociation as X
-import Stratosphere.Resources.SSMDocument as X
-import Stratosphere.Resources.SSMMaintenanceWindow as X
-import Stratosphere.Resources.SSMMaintenanceWindowTask as X
-import Stratosphere.Resources.SSMParameter as X
-import Stratosphere.Resources.SSMPatchBaseline as X
-import Stratosphere.Resources.SSMResourceDataSync as X
-import Stratosphere.Resources.SageMakerEndpoint as X
-import Stratosphere.Resources.SageMakerEndpointConfig as X
-import Stratosphere.Resources.SageMakerModel as X
-import Stratosphere.Resources.SageMakerNotebookInstance as X
-import Stratosphere.Resources.SageMakerNotebookInstanceLifecycleConfig as X
-import Stratosphere.Resources.SecretsManagerResourcePolicy as X
-import Stratosphere.Resources.SecretsManagerRotationSchedule as X
-import Stratosphere.Resources.SecretsManagerSecret as X
-import Stratosphere.Resources.SecretsManagerSecretTargetAttachment as X
-import Stratosphere.Resources.ServiceCatalogAcceptedPortfolioShare as X
-import Stratosphere.Resources.ServiceCatalogCloudFormationProduct as X
-import Stratosphere.Resources.ServiceCatalogCloudFormationProvisionedProduct as X
-import Stratosphere.Resources.ServiceCatalogLaunchNotificationConstraint as X
-import Stratosphere.Resources.ServiceCatalogLaunchRoleConstraint as X
-import Stratosphere.Resources.ServiceCatalogLaunchTemplateConstraint as X
-import Stratosphere.Resources.ServiceCatalogPortfolio as X
-import Stratosphere.Resources.ServiceCatalogPortfolioPrincipalAssociation as X
-import Stratosphere.Resources.ServiceCatalogPortfolioProductAssociation as X
-import Stratosphere.Resources.ServiceCatalogPortfolioShare as X
-import Stratosphere.Resources.ServiceCatalogTagOption as X
-import Stratosphere.Resources.ServiceCatalogTagOptionAssociation as X
-import Stratosphere.Resources.ServiceDiscoveryHttpNamespace as X
-import Stratosphere.Resources.ServiceDiscoveryInstance as X
-import Stratosphere.Resources.ServiceDiscoveryPrivateDnsNamespace as X
-import Stratosphere.Resources.ServiceDiscoveryPublicDnsNamespace as X
-import Stratosphere.Resources.ServiceDiscoveryService as X
-import Stratosphere.Resources.StepFunctionsActivity as X
-import Stratosphere.Resources.StepFunctionsStateMachine as X
-import Stratosphere.Resources.WAFByteMatchSet as X
-import Stratosphere.Resources.WAFIPSet as X
-import Stratosphere.Resources.WAFRule as X
-import Stratosphere.Resources.WAFSizeConstraintSet as X
-import Stratosphere.Resources.WAFSqlInjectionMatchSet as X
-import Stratosphere.Resources.WAFWebACL as X
-import Stratosphere.Resources.WAFXssMatchSet as X
-import Stratosphere.Resources.WAFRegionalByteMatchSet as X
-import Stratosphere.Resources.WAFRegionalIPSet as X
-import Stratosphere.Resources.WAFRegionalRule as X
-import Stratosphere.Resources.WAFRegionalSizeConstraintSet as X
-import Stratosphere.Resources.WAFRegionalSqlInjectionMatchSet as X
-import Stratosphere.Resources.WAFRegionalWebACL as X
-import Stratosphere.Resources.WAFRegionalWebACLAssociation as X
-import Stratosphere.Resources.WAFRegionalXssMatchSet as X
-import Stratosphere.Resources.WorkSpacesWorkspace as X
-import Stratosphere.Resources.ASKSkill as X
-import Stratosphere.ResourceProperties.AmazonMQBrokerConfigurationId as X
-import Stratosphere.ResourceProperties.AmazonMQBrokerLogList as X
-import Stratosphere.ResourceProperties.AmazonMQBrokerMaintenanceWindow as X
-import Stratosphere.ResourceProperties.AmazonMQBrokerTagsEntry as X
-import Stratosphere.ResourceProperties.AmazonMQBrokerUser as X
-import Stratosphere.ResourceProperties.AmazonMQConfigurationTagsEntry as X
-import Stratosphere.ResourceProperties.AmazonMQConfigurationAssociationConfigurationId as X
-import Stratosphere.ResourceProperties.ApiGatewayApiKeyStageKey as X
-import Stratosphere.ResourceProperties.ApiGatewayDeploymentAccessLogSetting as X
-import Stratosphere.ResourceProperties.ApiGatewayDeploymentCanarySetting as X
-import Stratosphere.ResourceProperties.ApiGatewayDeploymentDeploymentCanarySettings as X
-import Stratosphere.ResourceProperties.ApiGatewayDeploymentMethodSetting as X
-import Stratosphere.ResourceProperties.ApiGatewayDeploymentStageDescription as X
-import Stratosphere.ResourceProperties.ApiGatewayDocumentationPartLocation as X
-import Stratosphere.ResourceProperties.ApiGatewayDomainNameEndpointConfiguration as X
-import Stratosphere.ResourceProperties.ApiGatewayMethodIntegration as X
-import Stratosphere.ResourceProperties.ApiGatewayMethodIntegrationResponse as X
-import Stratosphere.ResourceProperties.ApiGatewayMethodMethodResponse as X
-import Stratosphere.ResourceProperties.ApiGatewayRestApiEndpointConfiguration as X
-import Stratosphere.ResourceProperties.ApiGatewayRestApiS3Location as X
-import Stratosphere.ResourceProperties.ApiGatewayStageAccessLogSetting as X
-import Stratosphere.ResourceProperties.ApiGatewayStageCanarySetting as X
-import Stratosphere.ResourceProperties.ApiGatewayStageMethodSetting as X
-import Stratosphere.ResourceProperties.ApiGatewayUsagePlanApiStage as X
-import Stratosphere.ResourceProperties.ApiGatewayUsagePlanQuotaSettings as X
-import Stratosphere.ResourceProperties.ApiGatewayUsagePlanThrottleSettings as X
-import Stratosphere.ResourceProperties.ApiGatewayV2RouteParameterConstraints as X
-import Stratosphere.ResourceProperties.ApiGatewayV2RouteResponseParameterConstraints as X
-import Stratosphere.ResourceProperties.ApiGatewayV2StageAccessLogSettings as X
-import Stratosphere.ResourceProperties.ApiGatewayV2StageRouteSettings as X
-import Stratosphere.ResourceProperties.AppStreamDirectoryConfigServiceAccountCredentials as X
-import Stratosphere.ResourceProperties.AppStreamFleetComputeCapacity as X
-import Stratosphere.ResourceProperties.AppStreamFleetDomainJoinInfo as X
-import Stratosphere.ResourceProperties.AppStreamFleetVpcConfig as X
-import Stratosphere.ResourceProperties.AppStreamImageBuilderDomainJoinInfo as X
-import Stratosphere.ResourceProperties.AppStreamImageBuilderVpcConfig as X
-import Stratosphere.ResourceProperties.AppStreamStackApplicationSettings as X
-import Stratosphere.ResourceProperties.AppStreamStackStorageConnector as X
-import Stratosphere.ResourceProperties.AppStreamStackUserSetting as X
-import Stratosphere.ResourceProperties.AppSyncDataSourceAuthorizationConfig as X
-import Stratosphere.ResourceProperties.AppSyncDataSourceAwsIamConfig as X
-import Stratosphere.ResourceProperties.AppSyncDataSourceDynamoDBConfig as X
-import Stratosphere.ResourceProperties.AppSyncDataSourceElasticsearchConfig as X
-import Stratosphere.ResourceProperties.AppSyncDataSourceHttpConfig as X
-import Stratosphere.ResourceProperties.AppSyncDataSourceLambdaConfig as X
-import Stratosphere.ResourceProperties.AppSyncDataSourceRdsHttpEndpointConfig as X
-import Stratosphere.ResourceProperties.AppSyncDataSourceRelationalDatabaseConfig as X
-import Stratosphere.ResourceProperties.AppSyncGraphQLApiLogConfig as X
-import Stratosphere.ResourceProperties.AppSyncGraphQLApiOpenIDConnectConfig as X
-import Stratosphere.ResourceProperties.AppSyncGraphQLApiUserPoolConfig as X
-import Stratosphere.ResourceProperties.AppSyncResolverPipelineConfig as X
-import Stratosphere.ResourceProperties.ApplicationAutoScalingScalableTargetScalableTargetAction as X
-import Stratosphere.ResourceProperties.ApplicationAutoScalingScalableTargetScheduledAction as X
-import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification as X
-import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyMetricDimension as X
-import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification as X
-import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyStepAdjustment as X
-import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration as X
-import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration as X
-import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupInstancesDistribution as X
-import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplate as X
-import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplateOverrides as X
-import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplateSpecification as X
-import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLifecycleHookSpecification as X
-import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMetricsCollection as X
-import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMixedInstancesPolicy as X
-import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupNotificationConfiguration as X
-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.AutoScalingPlansScalingPlanApplicationSource as X
-import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanCustomizedLoadMetricSpecification as X
-import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification as X
-import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanMetricDimension as X
-import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanPredefinedLoadMetricSpecification as X
-import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification as X
-import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanScalingInstruction as X
-import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTagFilter as X
-import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTargetTrackingConfiguration as X
-import Stratosphere.ResourceProperties.BatchComputeEnvironmentComputeResources as X
-import Stratosphere.ResourceProperties.BatchComputeEnvironmentLaunchTemplateSpecification as X
-import Stratosphere.ResourceProperties.BatchJobDefinitionContainerProperties as X
-import Stratosphere.ResourceProperties.BatchJobDefinitionEnvironment as X
-import Stratosphere.ResourceProperties.BatchJobDefinitionMountPoints as X
-import Stratosphere.ResourceProperties.BatchJobDefinitionNodeProperties as X
-import Stratosphere.ResourceProperties.BatchJobDefinitionNodeRangeProperty as X
-import Stratosphere.ResourceProperties.BatchJobDefinitionRetryStrategy as X
-import Stratosphere.ResourceProperties.BatchJobDefinitionTimeout as X
-import Stratosphere.ResourceProperties.BatchJobDefinitionUlimit as X
-import Stratosphere.ResourceProperties.BatchJobDefinitionVolumes as X
-import Stratosphere.ResourceProperties.BatchJobDefinitionVolumesHost as X
-import Stratosphere.ResourceProperties.BatchJobQueueComputeEnvironmentOrder as X
-import Stratosphere.ResourceProperties.BudgetsBudgetBudgetData as X
-import Stratosphere.ResourceProperties.BudgetsBudgetCostTypes as X
-import Stratosphere.ResourceProperties.BudgetsBudgetNotification as X
-import Stratosphere.ResourceProperties.BudgetsBudgetNotificationWithSubscribers as X
-import Stratosphere.ResourceProperties.BudgetsBudgetSpend as X
-import Stratosphere.ResourceProperties.BudgetsBudgetSubscriber as X
-import Stratosphere.ResourceProperties.BudgetsBudgetTimePeriod as X
-import Stratosphere.ResourceProperties.CertificateManagerCertificateDomainValidationOption as X
-import Stratosphere.ResourceProperties.Cloud9EnvironmentEC2Repository as X
-import Stratosphere.ResourceProperties.CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionCacheBehavior as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionCookies as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionCustomErrorResponse as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionCustomOriginConfig as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionDefaultCacheBehavior as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionDistributionConfig as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionForwardedValues as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionGeoRestriction as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionLambdaFunctionAssociation as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionLogging as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionOrigin as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionOriginCustomHeader as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionRestrictions as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionS3OriginConfig as X
-import Stratosphere.ResourceProperties.CloudFrontDistributionViewerCertificate as X
-import Stratosphere.ResourceProperties.CloudFrontStreamingDistributionLogging as X
-import Stratosphere.ResourceProperties.CloudFrontStreamingDistributionS3Origin as X
-import Stratosphere.ResourceProperties.CloudFrontStreamingDistributionStreamingDistributionConfig as X
-import Stratosphere.ResourceProperties.CloudFrontStreamingDistributionTrustedSigners as X
-import Stratosphere.ResourceProperties.CloudTrailTrailDataResource as X
-import Stratosphere.ResourceProperties.CloudTrailTrailEventSelector as X
-import Stratosphere.ResourceProperties.CloudWatchAlarmDimension as X
-import Stratosphere.ResourceProperties.CloudWatchAlarmMetric as X
-import Stratosphere.ResourceProperties.CloudWatchAlarmMetricDataQuery as X
-import Stratosphere.ResourceProperties.CloudWatchAlarmMetricStat as X
-import Stratosphere.ResourceProperties.CodeBuildProjectArtifacts as X
-import Stratosphere.ResourceProperties.CodeBuildProjectCloudWatchLogsConfig as X
-import Stratosphere.ResourceProperties.CodeBuildProjectEnvironment as X
-import Stratosphere.ResourceProperties.CodeBuildProjectEnvironmentVariable as X
-import Stratosphere.ResourceProperties.CodeBuildProjectLogsConfig as X
-import Stratosphere.ResourceProperties.CodeBuildProjectProjectCache as X
-import Stratosphere.ResourceProperties.CodeBuildProjectProjectTriggers as X
-import Stratosphere.ResourceProperties.CodeBuildProjectRegistryCredential as X
-import Stratosphere.ResourceProperties.CodeBuildProjectS3LogsConfig as X
-import Stratosphere.ResourceProperties.CodeBuildProjectSource as X
-import Stratosphere.ResourceProperties.CodeBuildProjectSourceAuth as X
-import Stratosphere.ResourceProperties.CodeBuildProjectVpcConfig as X
-import Stratosphere.ResourceProperties.CodeBuildProjectWebhookFilter as X
-import Stratosphere.ResourceProperties.CodeCommitRepositoryRepositoryTrigger as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentConfigMinimumHealthyHosts as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupAlarm as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupAlarmConfiguration as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupAutoRollbackConfiguration as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupDeployment as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupDeploymentStyle as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupEC2TagFilter as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupEC2TagSet as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupEC2TagSetListObject as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupELBInfo as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupGitHubLocation as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupLoadBalancerInfo as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupOnPremisesTagSet as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupOnPremisesTagSetListObject as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupRevisionLocation as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupS3Location as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupTagFilter as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupTargetGroupInfo as X
-import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupTriggerConfig as X
-import Stratosphere.ResourceProperties.CodePipelineCustomActionTypeArtifactDetails as X
-import Stratosphere.ResourceProperties.CodePipelineCustomActionTypeConfigurationProperties as X
-import Stratosphere.ResourceProperties.CodePipelineCustomActionTypeSettings as X
-import Stratosphere.ResourceProperties.CodePipelinePipelineActionDeclaration as X
-import Stratosphere.ResourceProperties.CodePipelinePipelineActionTypeId as X
-import Stratosphere.ResourceProperties.CodePipelinePipelineArtifactStore as X
-import Stratosphere.ResourceProperties.CodePipelinePipelineArtifactStoreMap as X
-import Stratosphere.ResourceProperties.CodePipelinePipelineBlockerDeclaration as X
-import Stratosphere.ResourceProperties.CodePipelinePipelineEncryptionKey as X
-import Stratosphere.ResourceProperties.CodePipelinePipelineInputArtifact as X
-import Stratosphere.ResourceProperties.CodePipelinePipelineOutputArtifact as X
-import Stratosphere.ResourceProperties.CodePipelinePipelineStageDeclaration as X
-import Stratosphere.ResourceProperties.CodePipelinePipelineStageTransition as X
-import Stratosphere.ResourceProperties.CodePipelineWebhookWebhookAuthConfiguration as X
-import Stratosphere.ResourceProperties.CodePipelineWebhookWebhookFilterRule as X
-import Stratosphere.ResourceProperties.CognitoIdentityPoolCognitoIdentityProvider as X
-import Stratosphere.ResourceProperties.CognitoIdentityPoolCognitoStreams as X
-import Stratosphere.ResourceProperties.CognitoIdentityPoolPushSync as X
-import Stratosphere.ResourceProperties.CognitoIdentityPoolRoleAttachmentMappingRule as X
-import Stratosphere.ResourceProperties.CognitoIdentityPoolRoleAttachmentRoleMapping as X
-import Stratosphere.ResourceProperties.CognitoIdentityPoolRoleAttachmentRulesConfigurationType as X
-import Stratosphere.ResourceProperties.CognitoUserPoolAdminCreateUserConfig as X
-import Stratosphere.ResourceProperties.CognitoUserPoolDeviceConfiguration as X
-import Stratosphere.ResourceProperties.CognitoUserPoolEmailConfiguration as X
-import Stratosphere.ResourceProperties.CognitoUserPoolInviteMessageTemplate as X
-import Stratosphere.ResourceProperties.CognitoUserPoolLambdaConfig as X
-import Stratosphere.ResourceProperties.CognitoUserPoolNumberAttributeConstraints as X
-import Stratosphere.ResourceProperties.CognitoUserPoolPasswordPolicy as X
-import Stratosphere.ResourceProperties.CognitoUserPoolPolicies as X
-import Stratosphere.ResourceProperties.CognitoUserPoolSchemaAttribute as X
-import Stratosphere.ResourceProperties.CognitoUserPoolSmsConfiguration as X
-import Stratosphere.ResourceProperties.CognitoUserPoolStringAttributeConstraints as X
-import Stratosphere.ResourceProperties.CognitoUserPoolUserAttributeType as X
-import Stratosphere.ResourceProperties.ConfigConfigRuleScope as X
-import Stratosphere.ResourceProperties.ConfigConfigRuleSource as X
-import Stratosphere.ResourceProperties.ConfigConfigRuleSourceDetail as X
-import Stratosphere.ResourceProperties.ConfigConfigurationAggregatorAccountAggregationSource as X
-import Stratosphere.ResourceProperties.ConfigConfigurationAggregatorOrganizationAggregationSource as X
-import Stratosphere.ResourceProperties.ConfigConfigurationRecorderRecordingGroup as X
-import Stratosphere.ResourceProperties.ConfigDeliveryChannelConfigSnapshotDeliveryProperties as X
-import Stratosphere.ResourceProperties.DAXClusterSSESpecification as X
-import Stratosphere.ResourceProperties.DLMLifecyclePolicyCreateRule as X
-import Stratosphere.ResourceProperties.DLMLifecyclePolicyPolicyDetails as X
-import Stratosphere.ResourceProperties.DLMLifecyclePolicyRetainRule as X
-import Stratosphere.ResourceProperties.DLMLifecyclePolicySchedule as X
-import Stratosphere.ResourceProperties.DMSEndpointDynamoDbSettings as X
-import Stratosphere.ResourceProperties.DMSEndpointElasticsearchSettings as X
-import Stratosphere.ResourceProperties.DMSEndpointKinesisSettings as X
-import Stratosphere.ResourceProperties.DMSEndpointMongoDbSettings as X
-import Stratosphere.ResourceProperties.DMSEndpointS3Settings as X
-import Stratosphere.ResourceProperties.DataPipelinePipelineField as X
-import Stratosphere.ResourceProperties.DataPipelinePipelineParameterAttribute as X
-import Stratosphere.ResourceProperties.DataPipelinePipelineParameterObject as X
-import Stratosphere.ResourceProperties.DataPipelinePipelineParameterValue as X
-import Stratosphere.ResourceProperties.DataPipelinePipelinePipelineObject as X
-import Stratosphere.ResourceProperties.DataPipelinePipelinePipelineTag as X
-import Stratosphere.ResourceProperties.DirectoryServiceMicrosoftADVpcSettings as X
-import Stratosphere.ResourceProperties.DirectoryServiceSimpleADVpcSettings as X
-import Stratosphere.ResourceProperties.DynamoDBTableAttributeDefinition as X
-import Stratosphere.ResourceProperties.DynamoDBTableGlobalSecondaryIndex as X
-import Stratosphere.ResourceProperties.DynamoDBTableKeySchema as X
-import Stratosphere.ResourceProperties.DynamoDBTableLocalSecondaryIndex as X
-import Stratosphere.ResourceProperties.DynamoDBTablePointInTimeRecoverySpecification as X
-import Stratosphere.ResourceProperties.DynamoDBTableProjection as X
-import Stratosphere.ResourceProperties.DynamoDBTableProvisionedThroughput as X
-import Stratosphere.ResourceProperties.DynamoDBTableSSESpecification as X
-import Stratosphere.ResourceProperties.DynamoDBTableStreamSpecification as X
-import Stratosphere.ResourceProperties.DynamoDBTableTimeToLiveSpecification as X
-import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateConfigRequest as X
-import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateOverridesRequest as X
-import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateSpecificationRequest as X
-import Stratosphere.ResourceProperties.EC2EC2FleetOnDemandOptionsRequest as X
-import Stratosphere.ResourceProperties.EC2EC2FleetSpotOptionsRequest as X
-import Stratosphere.ResourceProperties.EC2EC2FleetTagRequest as X
-import Stratosphere.ResourceProperties.EC2EC2FleetTagSpecification as X
-import Stratosphere.ResourceProperties.EC2EC2FleetTargetCapacitySpecificationRequest as X
-import Stratosphere.ResourceProperties.EC2InstanceAssociationParameter as X
-import Stratosphere.ResourceProperties.EC2InstanceBlockDeviceMapping as X
-import Stratosphere.ResourceProperties.EC2InstanceCreditSpecification as X
-import Stratosphere.ResourceProperties.EC2InstanceEbs as X
-import Stratosphere.ResourceProperties.EC2InstanceElasticGpuSpecification as X
-import Stratosphere.ResourceProperties.EC2InstanceElasticInferenceAccelerator as X
-import Stratosphere.ResourceProperties.EC2InstanceInstanceIpv6Address as X
-import Stratosphere.ResourceProperties.EC2InstanceLaunchTemplateSpecification as X
-import Stratosphere.ResourceProperties.EC2InstanceLicenseSpecification as X
-import Stratosphere.ResourceProperties.EC2InstanceNetworkInterface as X
-import Stratosphere.ResourceProperties.EC2InstanceNoDevice as X
-import Stratosphere.ResourceProperties.EC2InstancePrivateIpAddressSpecification as X
-import Stratosphere.ResourceProperties.EC2InstanceSsmAssociation as X
-import Stratosphere.ResourceProperties.EC2InstanceVolume as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateBlockDeviceMapping as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateCapacityReservationSpecification as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateCapacityReservationTarget as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateCpuOptions as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateCreditSpecification as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateEbs as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateElasticGpuSpecification as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateHibernationOptions as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateIamInstanceProfile as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateInstanceMarketOptions as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateIpv6Add as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateLaunchTemplateData as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateLicenseSpecification as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateMonitoring as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateNetworkInterface as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplatePlacement as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplatePrivateIpAdd as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateSpotOptions as X
-import Stratosphere.ResourceProperties.EC2LaunchTemplateTagSpecification as X
-import Stratosphere.ResourceProperties.EC2NetworkAclEntryIcmp as X
-import Stratosphere.ResourceProperties.EC2NetworkAclEntryPortRange as X
-import Stratosphere.ResourceProperties.EC2NetworkInterfaceInstanceIpv6Address as X
-import Stratosphere.ResourceProperties.EC2NetworkInterfacePrivateIpAddressSpecification as X
-import Stratosphere.ResourceProperties.EC2SecurityGroupEgressProperty as X
-import Stratosphere.ResourceProperties.EC2SecurityGroupIngressProperty as X
-import Stratosphere.ResourceProperties.EC2SpotFleetBlockDeviceMapping as X
-import Stratosphere.ResourceProperties.EC2SpotFleetClassicLoadBalancer as X
-import Stratosphere.ResourceProperties.EC2SpotFleetClassicLoadBalancersConfig as X
-import Stratosphere.ResourceProperties.EC2SpotFleetEbsBlockDevice as X
-import Stratosphere.ResourceProperties.EC2SpotFleetFleetLaunchTemplateSpecification as X
-import Stratosphere.ResourceProperties.EC2SpotFleetGroupIdentifier as X
-import Stratosphere.ResourceProperties.EC2SpotFleetIamInstanceProfileSpecification as X
-import Stratosphere.ResourceProperties.EC2SpotFleetInstanceIpv6Address as X
-import Stratosphere.ResourceProperties.EC2SpotFleetInstanceNetworkInterfaceSpecification as X
-import Stratosphere.ResourceProperties.EC2SpotFleetLaunchTemplateConfig as X
-import Stratosphere.ResourceProperties.EC2SpotFleetLaunchTemplateOverrides as X
-import Stratosphere.ResourceProperties.EC2SpotFleetLoadBalancersConfig as X
-import Stratosphere.ResourceProperties.EC2SpotFleetPrivateIpAddressSpecification as X
-import Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetLaunchSpecification as X
-import Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetMonitoring as X
-import Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetRequestConfigData as X
-import Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetTagSpecification as X
-import Stratosphere.ResourceProperties.EC2SpotFleetSpotPlacement as X
-import Stratosphere.ResourceProperties.EC2SpotFleetTargetGroup as X
-import Stratosphere.ResourceProperties.EC2SpotFleetTargetGroupsConfig as X
-import Stratosphere.ResourceProperties.EC2VPNConnectionVpnTunnelOptionsSpecification as X
-import Stratosphere.ResourceProperties.ECRRepositoryLifecyclePolicy as X
-import Stratosphere.ResourceProperties.ECSServiceAwsVpcConfiguration as X
-import Stratosphere.ResourceProperties.ECSServiceDeploymentConfiguration as X
-import Stratosphere.ResourceProperties.ECSServiceLoadBalancer as X
-import Stratosphere.ResourceProperties.ECSServiceNetworkConfiguration as X
-import Stratosphere.ResourceProperties.ECSServicePlacementConstraint as X
-import Stratosphere.ResourceProperties.ECSServicePlacementStrategy as X
-import Stratosphere.ResourceProperties.ECSServiceServiceRegistry as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionContainerDefinition as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionDevice as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionDockerVolumeConfiguration as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionHealthCheck as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionHostEntry as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionHostVolumeProperties as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionKernelCapabilities as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionKeyValuePair as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionLinuxParameters as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionLogConfiguration as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionMountPoint as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionPortMapping as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionRepositoryCredentials as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionTaskDefinitionPlacementConstraint as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionTmpfs as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionUlimit as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionVolume as X
-import Stratosphere.ResourceProperties.ECSTaskDefinitionVolumeFrom as X
-import Stratosphere.ResourceProperties.EFSFileSystemElasticFileSystemTag as X
-import Stratosphere.ResourceProperties.EKSClusterResourcesVpcConfig as X
-import Stratosphere.ResourceProperties.EMRClusterApplication as X
-import Stratosphere.ResourceProperties.EMRClusterAutoScalingPolicy as X
-import Stratosphere.ResourceProperties.EMRClusterBootstrapActionConfig as X
-import Stratosphere.ResourceProperties.EMRClusterCloudWatchAlarmDefinition as X
-import Stratosphere.ResourceProperties.EMRClusterConfiguration as X
-import Stratosphere.ResourceProperties.EMRClusterEbsBlockDeviceConfig as X
-import Stratosphere.ResourceProperties.EMRClusterEbsConfiguration as X
-import Stratosphere.ResourceProperties.EMRClusterHadoopJarStepConfig as X
-import Stratosphere.ResourceProperties.EMRClusterInstanceFleetConfig as X
-import Stratosphere.ResourceProperties.EMRClusterInstanceFleetProvisioningSpecifications as X
-import Stratosphere.ResourceProperties.EMRClusterInstanceGroupConfig as X
-import Stratosphere.ResourceProperties.EMRClusterInstanceTypeConfig as X
-import Stratosphere.ResourceProperties.EMRClusterJobFlowInstancesConfig as X
-import Stratosphere.ResourceProperties.EMRClusterKerberosAttributes as X
-import Stratosphere.ResourceProperties.EMRClusterKeyValue as X
-import Stratosphere.ResourceProperties.EMRClusterMetricDimension as X
-import Stratosphere.ResourceProperties.EMRClusterPlacementType as X
-import Stratosphere.ResourceProperties.EMRClusterScalingAction as X
-import Stratosphere.ResourceProperties.EMRClusterScalingConstraints as X
-import Stratosphere.ResourceProperties.EMRClusterScalingRule as X
-import Stratosphere.ResourceProperties.EMRClusterScalingTrigger as X
-import Stratosphere.ResourceProperties.EMRClusterScriptBootstrapActionConfig as X
-import Stratosphere.ResourceProperties.EMRClusterSimpleScalingPolicyConfiguration as X
-import Stratosphere.ResourceProperties.EMRClusterSpotProvisioningSpecification as X
-import Stratosphere.ResourceProperties.EMRClusterStepConfig as X
-import Stratosphere.ResourceProperties.EMRClusterVolumeSpecification as X
-import Stratosphere.ResourceProperties.EMRInstanceFleetConfigConfiguration as X
-import Stratosphere.ResourceProperties.EMRInstanceFleetConfigEbsBlockDeviceConfig as X
-import Stratosphere.ResourceProperties.EMRInstanceFleetConfigEbsConfiguration as X
-import Stratosphere.ResourceProperties.EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications as X
-import Stratosphere.ResourceProperties.EMRInstanceFleetConfigInstanceTypeConfig as X
-import Stratosphere.ResourceProperties.EMRInstanceFleetConfigSpotProvisioningSpecification as X
-import Stratosphere.ResourceProperties.EMRInstanceFleetConfigVolumeSpecification as X
-import Stratosphere.ResourceProperties.EMRInstanceGroupConfigAutoScalingPolicy as X
-import Stratosphere.ResourceProperties.EMRInstanceGroupConfigCloudWatchAlarmDefinition as X
-import Stratosphere.ResourceProperties.EMRInstanceGroupConfigConfiguration as X
-import Stratosphere.ResourceProperties.EMRInstanceGroupConfigEbsBlockDeviceConfig as X
-import Stratosphere.ResourceProperties.EMRInstanceGroupConfigEbsConfiguration as X
-import Stratosphere.ResourceProperties.EMRInstanceGroupConfigMetricDimension as X
-import Stratosphere.ResourceProperties.EMRInstanceGroupConfigScalingAction as X
-import Stratosphere.ResourceProperties.EMRInstanceGroupConfigScalingConstraints as X
-import Stratosphere.ResourceProperties.EMRInstanceGroupConfigScalingRule as X
-import Stratosphere.ResourceProperties.EMRInstanceGroupConfigScalingTrigger as X
-import Stratosphere.ResourceProperties.EMRInstanceGroupConfigSimpleScalingPolicyConfiguration as X
-import Stratosphere.ResourceProperties.EMRInstanceGroupConfigVolumeSpecification as X
-import Stratosphere.ResourceProperties.EMRStepHadoopJarStepConfig as X
-import Stratosphere.ResourceProperties.EMRStepKeyValue as X
-import Stratosphere.ResourceProperties.ElastiCacheReplicationGroupNodeGroupConfiguration as X
-import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationApplicationResourceLifecycleConfig as X
-import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationApplicationVersionLifecycleConfig as X
-import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationMaxAgeRule as X
-import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationMaxCountRule as X
-import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationVersionSourceBundle as X
-import Stratosphere.ResourceProperties.ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting as X
-import Stratosphere.ResourceProperties.ElasticBeanstalkConfigurationTemplateSourceConfiguration as X
-import Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentOptionSetting as X
-import Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentTier as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerAccessLoggingPolicy as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerConnectionSettings as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerHealthCheck as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerLBCookieStickinessPolicy as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerListeners as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerPolicies as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAction as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateOidcConfig as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificate as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerFixedResponseConfig as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRedirectConfig as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificateCertificate as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAction as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleFixedResponseConfig as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRedirectConfig as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRuleCondition as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerSubnetMapping as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2TargetGroupMatcher as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2TargetGroupTargetDescription as X
-import Stratosphere.ResourceProperties.ElasticLoadBalancingV2TargetGroupTargetGroupAttribute as X
-import Stratosphere.ResourceProperties.ElasticsearchDomainEBSOptions as X
-import Stratosphere.ResourceProperties.ElasticsearchDomainElasticsearchClusterConfig as X
-import Stratosphere.ResourceProperties.ElasticsearchDomainEncryptionAtRestOptions as X
-import Stratosphere.ResourceProperties.ElasticsearchDomainNodeToNodeEncryptionOptions as X
-import Stratosphere.ResourceProperties.ElasticsearchDomainSnapshotOptions as X
-import Stratosphere.ResourceProperties.ElasticsearchDomainVPCOptions as X
-import Stratosphere.ResourceProperties.EventsEventBusPolicyCondition as X
-import Stratosphere.ResourceProperties.EventsRuleEcsParameters as X
-import Stratosphere.ResourceProperties.EventsRuleInputTransformer as X
-import Stratosphere.ResourceProperties.EventsRuleKinesisParameters as X
-import Stratosphere.ResourceProperties.EventsRuleRunCommandParameters as X
-import Stratosphere.ResourceProperties.EventsRuleRunCommandTarget as X
-import Stratosphere.ResourceProperties.EventsRuleSqsParameters as X
-import Stratosphere.ResourceProperties.EventsRuleTarget as X
-import Stratosphere.ResourceProperties.FSxFileSystemLustreConfiguration as X
-import Stratosphere.ResourceProperties.FSxFileSystemTagEntry as X
-import Stratosphere.ResourceProperties.FSxFileSystemWindowsConfiguration as X
-import Stratosphere.ResourceProperties.GameLiftAliasRoutingStrategy as X
-import Stratosphere.ResourceProperties.GameLiftBuildS3Location as X
-import Stratosphere.ResourceProperties.GameLiftFleetIpPermission as X
-import Stratosphere.ResourceProperties.GlueClassifierGrokClassifier as X
-import Stratosphere.ResourceProperties.GlueClassifierJsonClassifier as X
-import Stratosphere.ResourceProperties.GlueClassifierXMLClassifier as X
-import Stratosphere.ResourceProperties.GlueConnectionConnectionInput as X
-import Stratosphere.ResourceProperties.GlueConnectionPhysicalConnectionRequirements as X
-import Stratosphere.ResourceProperties.GlueCrawlerJdbcTarget as X
-import Stratosphere.ResourceProperties.GlueCrawlerS3Target as X
-import Stratosphere.ResourceProperties.GlueCrawlerSchedule as X
-import Stratosphere.ResourceProperties.GlueCrawlerSchemaChangePolicy as X
-import Stratosphere.ResourceProperties.GlueCrawlerTargets as X
-import Stratosphere.ResourceProperties.GlueDatabaseDatabaseInput as X
-import Stratosphere.ResourceProperties.GlueJobConnectionsList as X
-import Stratosphere.ResourceProperties.GlueJobExecutionProperty as X
-import Stratosphere.ResourceProperties.GlueJobJobCommand as X
-import Stratosphere.ResourceProperties.GluePartitionColumn as X
-import Stratosphere.ResourceProperties.GluePartitionOrder as X
-import Stratosphere.ResourceProperties.GluePartitionPartitionInput as X
-import Stratosphere.ResourceProperties.GluePartitionSerdeInfo as X
-import Stratosphere.ResourceProperties.GluePartitionSkewedInfo as X
-import Stratosphere.ResourceProperties.GluePartitionStorageDescriptor as X
-import Stratosphere.ResourceProperties.GlueTableColumn as X
-import Stratosphere.ResourceProperties.GlueTableOrder as X
-import Stratosphere.ResourceProperties.GlueTableSerdeInfo as X
-import Stratosphere.ResourceProperties.GlueTableSkewedInfo as X
-import Stratosphere.ResourceProperties.GlueTableStorageDescriptor as X
-import Stratosphere.ResourceProperties.GlueTableTableInput as X
-import Stratosphere.ResourceProperties.GlueTriggerAction as X
-import Stratosphere.ResourceProperties.GlueTriggerCondition as X
-import Stratosphere.ResourceProperties.GlueTriggerPredicate as X
-import Stratosphere.ResourceProperties.GuardDutyFilterCondition as X
-import Stratosphere.ResourceProperties.GuardDutyFilterFindingCriteria as X
-import Stratosphere.ResourceProperties.IAMGroupPolicy as X
-import Stratosphere.ResourceProperties.IAMRolePolicy as X
-import Stratosphere.ResourceProperties.IAMUserLoginProfile as X
-import Stratosphere.ResourceProperties.IAMUserPolicy as X
-import Stratosphere.ResourceProperties.IoT1ClickProjectDeviceTemplate as X
-import Stratosphere.ResourceProperties.IoT1ClickProjectPlacementTemplate as X
-import Stratosphere.ResourceProperties.IoTThingAttributePayload as X
-import Stratosphere.ResourceProperties.IoTTopicRuleAction as X
-import Stratosphere.ResourceProperties.IoTTopicRuleCloudwatchAlarmAction as X
-import Stratosphere.ResourceProperties.IoTTopicRuleCloudwatchMetricAction as X
-import Stratosphere.ResourceProperties.IoTTopicRuleDynamoDBAction as X
-import Stratosphere.ResourceProperties.IoTTopicRuleDynamoDBV2Action as X
-import Stratosphere.ResourceProperties.IoTTopicRuleElasticsearchAction as X
-import Stratosphere.ResourceProperties.IoTTopicRuleFirehoseAction as X
-import Stratosphere.ResourceProperties.IoTTopicRuleIotAnalyticsAction as X
-import Stratosphere.ResourceProperties.IoTTopicRuleKinesisAction as X
-import Stratosphere.ResourceProperties.IoTTopicRuleLambdaAction as X
-import Stratosphere.ResourceProperties.IoTTopicRulePutItemInput as X
-import Stratosphere.ResourceProperties.IoTTopicRuleRepublishAction as X
-import Stratosphere.ResourceProperties.IoTTopicRuleS3Action as X
-import Stratosphere.ResourceProperties.IoTTopicRuleSnsAction as X
-import Stratosphere.ResourceProperties.IoTTopicRuleSqsAction as X
-import Stratosphere.ResourceProperties.IoTTopicRuleStepFunctionsAction as X
-import Stratosphere.ResourceProperties.IoTTopicRuleTopicRulePayload as X
-import Stratosphere.ResourceProperties.IoTAnalyticsChannelRetentionPeriod as X
-import Stratosphere.ResourceProperties.IoTAnalyticsDatasetAction as X
-import Stratosphere.ResourceProperties.IoTAnalyticsDatasetContainerAction as X
-import Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentVersionValue as X
-import Stratosphere.ResourceProperties.IoTAnalyticsDatasetDeltaTime as X
-import Stratosphere.ResourceProperties.IoTAnalyticsDatasetFilter as X
-import Stratosphere.ResourceProperties.IoTAnalyticsDatasetOutputFileUriValue as X
-import Stratosphere.ResourceProperties.IoTAnalyticsDatasetQueryAction as X
-import Stratosphere.ResourceProperties.IoTAnalyticsDatasetResourceConfiguration as X
-import Stratosphere.ResourceProperties.IoTAnalyticsDatasetRetentionPeriod as X
-import Stratosphere.ResourceProperties.IoTAnalyticsDatasetSchedule as X
-import Stratosphere.ResourceProperties.IoTAnalyticsDatasetTrigger as X
-import Stratosphere.ResourceProperties.IoTAnalyticsDatasetTriggeringDataset as X
-import Stratosphere.ResourceProperties.IoTAnalyticsDatasetVariable as X
-import Stratosphere.ResourceProperties.IoTAnalyticsDatastoreRetentionPeriod as X
-import Stratosphere.ResourceProperties.IoTAnalyticsPipelineActivity as X
-import Stratosphere.ResourceProperties.IoTAnalyticsPipelineAddAttributes as X
-import Stratosphere.ResourceProperties.IoTAnalyticsPipelineChannel as X
-import Stratosphere.ResourceProperties.IoTAnalyticsPipelineDatastore as X
-import Stratosphere.ResourceProperties.IoTAnalyticsPipelineDeviceRegistryEnrich as X
-import Stratosphere.ResourceProperties.IoTAnalyticsPipelineDeviceShadowEnrich as X
-import Stratosphere.ResourceProperties.IoTAnalyticsPipelineFilter as X
-import Stratosphere.ResourceProperties.IoTAnalyticsPipelineLambda as X
-import Stratosphere.ResourceProperties.IoTAnalyticsPipelineMath as X
-import Stratosphere.ResourceProperties.IoTAnalyticsPipelineRemoveAttributes as X
-import Stratosphere.ResourceProperties.IoTAnalyticsPipelineSelectAttributes as X
-import Stratosphere.ResourceProperties.KinesisStreamStreamEncryption as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationCSVMappingParameters as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInput as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputLambdaProcessor as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputParallelism as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputProcessingConfiguration 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.KinesisAnalyticsApplicationOutputLambdaOutput 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.KinesisAnalyticsV2ApplicationApplicationCodeConfiguration as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationApplicationConfiguration as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationApplicationSnapshotConfiguration as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationCSVMappingParameters as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationCheckpointConfiguration as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationCodeContent as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationEnvironmentProperties as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationFlinkApplicationConfiguration as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationInput as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationInputLambdaProcessor as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationInputParallelism as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationInputProcessingConfiguration as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationInputSchema as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationJSONMappingParameters as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationKinesisFirehoseInput as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationKinesisStreamsInput as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationMappingParameters as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationMonitoringConfiguration as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationParallelismConfiguration as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationPropertyGroup as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationRecordColumn as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationRecordFormat as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationS3ContentLocation as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationSqlApplicationConfiguration as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationCloudWatchLoggingOptionCloudWatchLoggingOption as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationOutputDestinationSchema as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationOutputKinesisFirehoseOutput as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationOutputKinesisStreamsOutput as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationOutputLambdaOutput as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationOutputOutput as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceCSVMappingParameters as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceJSONMappingParameters as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceMappingParameters as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceRecordColumn as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceRecordFormat as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceReferenceDataSource as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceReferenceSchema as X
-import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceS3ReferenceDataSource as X
-import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamBufferingHints as X
-import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions as X
-import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCopyCommand as X
-import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchBufferingHints as X
-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.KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration 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.KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration as X
-import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSplunkRetryOptions as X
-import Stratosphere.ResourceProperties.LambdaAliasAliasRoutingConfiguration as X
-import Stratosphere.ResourceProperties.LambdaAliasVersionWeight as X
-import Stratosphere.ResourceProperties.LambdaFunctionCode as X
-import Stratosphere.ResourceProperties.LambdaFunctionDeadLetterConfig as X
-import Stratosphere.ResourceProperties.LambdaFunctionEnvironment as X
-import Stratosphere.ResourceProperties.LambdaFunctionTracingConfig as X
-import Stratosphere.ResourceProperties.LambdaFunctionVpcConfig as X
-import Stratosphere.ResourceProperties.LambdaLayerVersionContent as X
-import Stratosphere.ResourceProperties.LogsMetricFilterMetricTransformation as X
-import Stratosphere.ResourceProperties.OpsWorksAppDataSource as X
-import Stratosphere.ResourceProperties.OpsWorksAppEnvironmentVariable as X
-import Stratosphere.ResourceProperties.OpsWorksAppSource as X
-import Stratosphere.ResourceProperties.OpsWorksAppSslConfiguration as X
-import Stratosphere.ResourceProperties.OpsWorksInstanceBlockDeviceMapping as X
-import Stratosphere.ResourceProperties.OpsWorksInstanceEbsBlockDevice as X
-import Stratosphere.ResourceProperties.OpsWorksInstanceTimeBasedAutoScaling as X
-import Stratosphere.ResourceProperties.OpsWorksLayerAutoScalingThresholds as X
-import Stratosphere.ResourceProperties.OpsWorksLayerLifecycleEventConfiguration as X
-import Stratosphere.ResourceProperties.OpsWorksLayerLoadBasedAutoScaling as X
-import Stratosphere.ResourceProperties.OpsWorksLayerRecipes as X
-import Stratosphere.ResourceProperties.OpsWorksLayerShutdownEventConfiguration as X
-import Stratosphere.ResourceProperties.OpsWorksLayerVolumeConfiguration as X
-import Stratosphere.ResourceProperties.OpsWorksStackChefConfiguration as X
-import Stratosphere.ResourceProperties.OpsWorksStackElasticIp as X
-import Stratosphere.ResourceProperties.OpsWorksStackRdsDbInstance as X
-import Stratosphere.ResourceProperties.OpsWorksStackSource as X
-import Stratosphere.ResourceProperties.OpsWorksStackStackConfigurationManager as X
-import Stratosphere.ResourceProperties.OpsWorksCMServerEngineAttribute as X
-import Stratosphere.ResourceProperties.RDSDBClusterScalingConfiguration as X
-import Stratosphere.ResourceProperties.RDSDBInstanceProcessorFeature as X
-import Stratosphere.ResourceProperties.RDSDBSecurityGroupIngressProperty as X
-import Stratosphere.ResourceProperties.RDSOptionGroupOptionConfiguration as X
-import Stratosphere.ResourceProperties.RDSOptionGroupOptionSetting as X
-import Stratosphere.ResourceProperties.RedshiftClusterLoggingProperties as X
-import Stratosphere.ResourceProperties.RedshiftClusterParameterGroupParameter as X
-import Stratosphere.ResourceProperties.RoboMakerRobotApplicationRobotSoftwareSuite as X
-import Stratosphere.ResourceProperties.RoboMakerRobotApplicationSourceConfig as X
-import Stratosphere.ResourceProperties.RoboMakerSimulationApplicationRenderingEngine as X
-import Stratosphere.ResourceProperties.RoboMakerSimulationApplicationRobotSoftwareSuite as X
-import Stratosphere.ResourceProperties.RoboMakerSimulationApplicationSimulationSoftwareSuite as X
-import Stratosphere.ResourceProperties.RoboMakerSimulationApplicationSourceConfig as X
-import Stratosphere.ResourceProperties.Route53HealthCheckAlarmIdentifier as X
-import Stratosphere.ResourceProperties.Route53HealthCheckHealthCheckConfig as X
-import Stratosphere.ResourceProperties.Route53HealthCheckHealthCheckTag as X
-import Stratosphere.ResourceProperties.Route53HostedZoneHostedZoneConfig as X
-import Stratosphere.ResourceProperties.Route53HostedZoneHostedZoneTag as X
-import Stratosphere.ResourceProperties.Route53HostedZoneQueryLoggingConfig as X
-import Stratosphere.ResourceProperties.Route53HostedZoneVPC as X
-import Stratosphere.ResourceProperties.Route53RecordSetAliasTarget as X
-import Stratosphere.ResourceProperties.Route53RecordSetGeoLocation as X
-import Stratosphere.ResourceProperties.Route53RecordSetGroupAliasTarget as X
-import Stratosphere.ResourceProperties.Route53RecordSetGroupGeoLocation as X
-import Stratosphere.ResourceProperties.Route53RecordSetGroupRecordSet as X
-import Stratosphere.ResourceProperties.Route53ResolverResolverEndpointIpAddressRequest as X
-import Stratosphere.ResourceProperties.Route53ResolverResolverRuleTargetAddress as X
-import Stratosphere.ResourceProperties.S3BucketAbortIncompleteMultipartUpload as X
-import Stratosphere.ResourceProperties.S3BucketAccelerateConfiguration as X
-import Stratosphere.ResourceProperties.S3BucketAccessControlTranslation as X
-import Stratosphere.ResourceProperties.S3BucketAnalyticsConfiguration as X
-import Stratosphere.ResourceProperties.S3BucketBucketEncryption as X
-import Stratosphere.ResourceProperties.S3BucketCorsConfiguration as X
-import Stratosphere.ResourceProperties.S3BucketCorsRule as X
-import Stratosphere.ResourceProperties.S3BucketDataExport as X
-import Stratosphere.ResourceProperties.S3BucketDestination as X
-import Stratosphere.ResourceProperties.S3BucketEncryptionConfiguration as X
-import Stratosphere.ResourceProperties.S3BucketFilterRule as X
-import Stratosphere.ResourceProperties.S3BucketInventoryConfiguration as X
-import Stratosphere.ResourceProperties.S3BucketLambdaConfiguration as X
-import Stratosphere.ResourceProperties.S3BucketLifecycleConfiguration as X
-import Stratosphere.ResourceProperties.S3BucketLoggingConfiguration as X
-import Stratosphere.ResourceProperties.S3BucketMetricsConfiguration as X
-import Stratosphere.ResourceProperties.S3BucketNoncurrentVersionTransition as X
-import Stratosphere.ResourceProperties.S3BucketNotificationConfiguration as X
-import Stratosphere.ResourceProperties.S3BucketNotificationFilter as X
-import Stratosphere.ResourceProperties.S3BucketPublicAccessBlockConfiguration as X
-import Stratosphere.ResourceProperties.S3BucketQueueConfiguration as X
-import Stratosphere.ResourceProperties.S3BucketRedirectAllRequestsTo as X
-import Stratosphere.ResourceProperties.S3BucketRedirectRule as X
-import Stratosphere.ResourceProperties.S3BucketReplicationConfiguration as X
-import Stratosphere.ResourceProperties.S3BucketReplicationDestination as X
-import Stratosphere.ResourceProperties.S3BucketReplicationRule as X
-import Stratosphere.ResourceProperties.S3BucketRoutingRule as X
-import Stratosphere.ResourceProperties.S3BucketRoutingRuleCondition as X
-import Stratosphere.ResourceProperties.S3BucketRule as X
-import Stratosphere.ResourceProperties.S3BucketS3KeyFilter as X
-import Stratosphere.ResourceProperties.S3BucketServerSideEncryptionByDefault as X
-import Stratosphere.ResourceProperties.S3BucketServerSideEncryptionRule as X
-import Stratosphere.ResourceProperties.S3BucketSourceSelectionCriteria as X
-import Stratosphere.ResourceProperties.S3BucketSseKmsEncryptedObjects as X
-import Stratosphere.ResourceProperties.S3BucketStorageClassAnalysis 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
-import Stratosphere.ResourceProperties.S3BucketWebsiteConfiguration as X
-import Stratosphere.ResourceProperties.SESConfigurationSetEventDestinationCloudWatchDestination as X
-import Stratosphere.ResourceProperties.SESConfigurationSetEventDestinationDimensionConfiguration as X
-import Stratosphere.ResourceProperties.SESConfigurationSetEventDestinationEventDestination as X
-import Stratosphere.ResourceProperties.SESConfigurationSetEventDestinationKinesisFirehoseDestination as X
-import Stratosphere.ResourceProperties.SESReceiptFilterFilter as X
-import Stratosphere.ResourceProperties.SESReceiptFilterIpFilter as X
-import Stratosphere.ResourceProperties.SESReceiptRuleAction as X
-import Stratosphere.ResourceProperties.SESReceiptRuleAddHeaderAction as X
-import Stratosphere.ResourceProperties.SESReceiptRuleBounceAction as X
-import Stratosphere.ResourceProperties.SESReceiptRuleLambdaAction as X
-import Stratosphere.ResourceProperties.SESReceiptRuleRule as X
-import Stratosphere.ResourceProperties.SESReceiptRuleS3Action as X
-import Stratosphere.ResourceProperties.SESReceiptRuleSNSAction as X
-import Stratosphere.ResourceProperties.SESReceiptRuleStopAction as X
-import Stratosphere.ResourceProperties.SESReceiptRuleWorkmailAction as X
-import Stratosphere.ResourceProperties.SESTemplateTemplate as X
-import Stratosphere.ResourceProperties.SNSTopicSubscription as X
-import Stratosphere.ResourceProperties.SSMAssociationInstanceAssociationOutputLocation as X
-import Stratosphere.ResourceProperties.SSMAssociationParameterValues as X
-import Stratosphere.ResourceProperties.SSMAssociationS3OutputLocation as X
-import Stratosphere.ResourceProperties.SSMAssociationTarget as X
-import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskLoggingInfo as X
-import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters as X
-import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters as X
-import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters as X
-import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters as X
-import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskNotificationConfig as X
-import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskTarget as X
-import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskTaskInvocationParameters as X
-import Stratosphere.ResourceProperties.SSMPatchBaselinePatchFilter as X
-import Stratosphere.ResourceProperties.SSMPatchBaselinePatchFilterGroup as X
-import Stratosphere.ResourceProperties.SSMPatchBaselinePatchSource as X
-import Stratosphere.ResourceProperties.SSMPatchBaselineRule as X
-import Stratosphere.ResourceProperties.SSMPatchBaselineRuleGroup as X
-import Stratosphere.ResourceProperties.SageMakerEndpointConfigProductionVariant as X
-import Stratosphere.ResourceProperties.SageMakerModelContainerDefinition as X
-import Stratosphere.ResourceProperties.SageMakerModelVpcConfig as X
-import Stratosphere.ResourceProperties.SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook as X
-import Stratosphere.ResourceProperties.SecretsManagerRotationScheduleRotationRules as X
-import Stratosphere.ResourceProperties.SecretsManagerSecretGenerateSecretString as X
-import Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProductProvisioningArtifactProperties as X
-import Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProvisionedProductProvisioningParameter as X
-import Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsConfig as X
-import Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsRecord as X
-import Stratosphere.ResourceProperties.ServiceDiscoveryServiceHealthCheckConfig as X
-import Stratosphere.ResourceProperties.ServiceDiscoveryServiceHealthCheckCustomConfig as X
-import Stratosphere.ResourceProperties.WAFByteMatchSetByteMatchTuple as X
-import Stratosphere.ResourceProperties.WAFByteMatchSetFieldToMatch as X
-import Stratosphere.ResourceProperties.WAFIPSetIPSetDescriptor as X
-import Stratosphere.ResourceProperties.WAFRulePredicate as X
-import Stratosphere.ResourceProperties.WAFSizeConstraintSetFieldToMatch as X
-import Stratosphere.ResourceProperties.WAFSizeConstraintSetSizeConstraint as X
-import Stratosphere.ResourceProperties.WAFSqlInjectionMatchSetFieldToMatch as X
-import Stratosphere.ResourceProperties.WAFSqlInjectionMatchSetSqlInjectionMatchTuple as X
-import Stratosphere.ResourceProperties.WAFWebACLActivatedRule as X
-import Stratosphere.ResourceProperties.WAFWebACLWafAction as X
-import Stratosphere.ResourceProperties.WAFXssMatchSetFieldToMatch as X
-import Stratosphere.ResourceProperties.WAFXssMatchSetXssMatchTuple as X
-import Stratosphere.ResourceProperties.WAFRegionalByteMatchSetByteMatchTuple as X
-import Stratosphere.ResourceProperties.WAFRegionalByteMatchSetFieldToMatch as X
-import Stratosphere.ResourceProperties.WAFRegionalIPSetIPSetDescriptor as X
-import Stratosphere.ResourceProperties.WAFRegionalRulePredicate as X
-import Stratosphere.ResourceProperties.WAFRegionalSizeConstraintSetFieldToMatch as X
-import Stratosphere.ResourceProperties.WAFRegionalSizeConstraintSetSizeConstraint as X
-import Stratosphere.ResourceProperties.WAFRegionalSqlInjectionMatchSetFieldToMatch as X
-import Stratosphere.ResourceProperties.WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple as X
-import Stratosphere.ResourceProperties.WAFRegionalWebACLAction as X
-import Stratosphere.ResourceProperties.WAFRegionalWebACLRule as X
-import Stratosphere.ResourceProperties.WAFRegionalXssMatchSetFieldToMatch as X
-import Stratosphere.ResourceProperties.WAFRegionalXssMatchSetXssMatchTuple as X
-import Stratosphere.ResourceProperties.WorkSpacesWorkspaceWorkspaceProperties as X
-import Stratosphere.ResourceProperties.ASKSkillAuthenticationConfiguration as X
-import Stratosphere.ResourceProperties.ASKSkillOverrides as X
-import Stratosphere.ResourceProperties.ASKSkillSkillPackage as X
-import Stratosphere.ResourceProperties.Tag as X
-
-import Stratosphere.ResourceAttributes.AutoScalingReplacingUpdatePolicy as X
-import Stratosphere.ResourceAttributes.AutoScalingRollingUpdatePolicy as X
-import Stratosphere.ResourceAttributes.AutoScalingScheduledActionPolicy as X
-import Stratosphere.ResourceAttributes.CreationPolicy as X
-import Stratosphere.ResourceAttributes.ResourceSignal as X
-import Stratosphere.ResourceAttributes.UpdatePolicy as X
-import Stratosphere.Helpers
-import Stratosphere.Values
-
-data ResourceProperties
-  = AmazonMQBrokerProperties AmazonMQBroker
-  | AmazonMQConfigurationProperties AmazonMQConfiguration
-  | AmazonMQConfigurationAssociationProperties AmazonMQConfigurationAssociation
-  | ApiGatewayAccountProperties ApiGatewayAccount
-  | ApiGatewayApiKeyProperties ApiGatewayApiKey
-  | ApiGatewayAuthorizerProperties ApiGatewayAuthorizer
-  | ApiGatewayBasePathMappingProperties ApiGatewayBasePathMapping
-  | ApiGatewayClientCertificateProperties ApiGatewayClientCertificate
-  | ApiGatewayDeploymentProperties ApiGatewayDeployment
-  | ApiGatewayDocumentationPartProperties ApiGatewayDocumentationPart
-  | ApiGatewayDocumentationVersionProperties ApiGatewayDocumentationVersion
-  | ApiGatewayDomainNameProperties ApiGatewayDomainName
-  | ApiGatewayGatewayResponseProperties ApiGatewayGatewayResponse
-  | ApiGatewayMethodProperties ApiGatewayMethod
-  | ApiGatewayModelProperties ApiGatewayModel
-  | ApiGatewayRequestValidatorProperties ApiGatewayRequestValidator
-  | ApiGatewayResourceProperties ApiGatewayResource
-  | ApiGatewayRestApiProperties ApiGatewayRestApi
-  | ApiGatewayStageProperties ApiGatewayStage
-  | ApiGatewayUsagePlanProperties ApiGatewayUsagePlan
-  | ApiGatewayUsagePlanKeyProperties ApiGatewayUsagePlanKey
-  | ApiGatewayVpcLinkProperties ApiGatewayVpcLink
-  | ApiGatewayV2ApiProperties ApiGatewayV2Api
-  | ApiGatewayV2AuthorizerProperties ApiGatewayV2Authorizer
-  | ApiGatewayV2DeploymentProperties ApiGatewayV2Deployment
-  | ApiGatewayV2IntegrationProperties ApiGatewayV2Integration
-  | ApiGatewayV2IntegrationResponseProperties ApiGatewayV2IntegrationResponse
-  | ApiGatewayV2ModelProperties ApiGatewayV2Model
-  | ApiGatewayV2RouteProperties ApiGatewayV2Route
-  | ApiGatewayV2RouteResponseProperties ApiGatewayV2RouteResponse
-  | ApiGatewayV2StageProperties ApiGatewayV2Stage
-  | AppStreamDirectoryConfigProperties AppStreamDirectoryConfig
-  | AppStreamFleetProperties AppStreamFleet
-  | AppStreamImageBuilderProperties AppStreamImageBuilder
-  | AppStreamStackProperties AppStreamStack
-  | AppStreamStackFleetAssociationProperties AppStreamStackFleetAssociation
-  | AppStreamStackUserAssociationProperties AppStreamStackUserAssociation
-  | AppStreamUserProperties AppStreamUser
-  | AppSyncApiKeyProperties AppSyncApiKey
-  | AppSyncDataSourceProperties AppSyncDataSource
-  | AppSyncFunctionConfigurationProperties AppSyncFunctionConfiguration
-  | AppSyncGraphQLApiProperties AppSyncGraphQLApi
-  | AppSyncGraphQLSchemaProperties AppSyncGraphQLSchema
-  | AppSyncResolverProperties AppSyncResolver
-  | ApplicationAutoScalingScalableTargetProperties ApplicationAutoScalingScalableTarget
-  | ApplicationAutoScalingScalingPolicyProperties ApplicationAutoScalingScalingPolicy
-  | AthenaNamedQueryProperties AthenaNamedQuery
-  | AutoScalingAutoScalingGroupProperties AutoScalingAutoScalingGroup
-  | AutoScalingLaunchConfigurationProperties AutoScalingLaunchConfiguration
-  | AutoScalingLifecycleHookProperties AutoScalingLifecycleHook
-  | AutoScalingScalingPolicyProperties AutoScalingScalingPolicy
-  | AutoScalingScheduledActionProperties AutoScalingScheduledAction
-  | AutoScalingPlansScalingPlanProperties AutoScalingPlansScalingPlan
-  | BatchComputeEnvironmentProperties BatchComputeEnvironment
-  | BatchJobDefinitionProperties BatchJobDefinition
-  | BatchJobQueueProperties BatchJobQueue
-  | BudgetsBudgetProperties BudgetsBudget
-  | CertificateManagerCertificateProperties CertificateManagerCertificate
-  | Cloud9EnvironmentEC2Properties Cloud9EnvironmentEC2
-  | CloudFormationCustomResourceProperties CloudFormationCustomResource
-  | CloudFormationMacroProperties CloudFormationMacro
-  | CloudFormationStackProperties CloudFormationStack
-  | CloudFormationWaitConditionProperties CloudFormationWaitCondition
-  | CloudFormationWaitConditionHandleProperties CloudFormationWaitConditionHandle
-  | CloudFrontCloudFrontOriginAccessIdentityProperties CloudFrontCloudFrontOriginAccessIdentity
-  | CloudFrontDistributionProperties CloudFrontDistribution
-  | CloudFrontStreamingDistributionProperties CloudFrontStreamingDistribution
-  | CloudTrailTrailProperties CloudTrailTrail
-  | CloudWatchAlarmProperties CloudWatchAlarm
-  | CloudWatchDashboardProperties CloudWatchDashboard
-  | CodeBuildProjectProperties CodeBuildProject
-  | CodeCommitRepositoryProperties CodeCommitRepository
-  | CodeDeployApplicationProperties CodeDeployApplication
-  | CodeDeployDeploymentConfigProperties CodeDeployDeploymentConfig
-  | CodeDeployDeploymentGroupProperties CodeDeployDeploymentGroup
-  | CodePipelineCustomActionTypeProperties CodePipelineCustomActionType
-  | CodePipelinePipelineProperties CodePipelinePipeline
-  | CodePipelineWebhookProperties CodePipelineWebhook
-  | CognitoIdentityPoolProperties CognitoIdentityPool
-  | CognitoIdentityPoolRoleAttachmentProperties CognitoIdentityPoolRoleAttachment
-  | CognitoUserPoolProperties CognitoUserPool
-  | CognitoUserPoolClientProperties CognitoUserPoolClient
-  | CognitoUserPoolGroupProperties CognitoUserPoolGroup
-  | CognitoUserPoolUserProperties CognitoUserPoolUser
-  | CognitoUserPoolUserToGroupAttachmentProperties CognitoUserPoolUserToGroupAttachment
-  | ConfigAggregationAuthorizationProperties ConfigAggregationAuthorization
-  | ConfigConfigRuleProperties ConfigConfigRule
-  | ConfigConfigurationAggregatorProperties ConfigConfigurationAggregator
-  | ConfigConfigurationRecorderProperties ConfigConfigurationRecorder
-  | ConfigDeliveryChannelProperties ConfigDeliveryChannel
-  | DAXClusterProperties DAXCluster
-  | DAXParameterGroupProperties DAXParameterGroup
-  | DAXSubnetGroupProperties DAXSubnetGroup
-  | DLMLifecyclePolicyProperties DLMLifecyclePolicy
-  | DMSCertificateProperties DMSCertificate
-  | DMSEndpointProperties DMSEndpoint
-  | DMSEventSubscriptionProperties DMSEventSubscription
-  | DMSReplicationInstanceProperties DMSReplicationInstance
-  | DMSReplicationSubnetGroupProperties DMSReplicationSubnetGroup
-  | DMSReplicationTaskProperties DMSReplicationTask
-  | DataPipelinePipelineProperties DataPipelinePipeline
-  | DirectoryServiceMicrosoftADProperties DirectoryServiceMicrosoftAD
-  | DirectoryServiceSimpleADProperties DirectoryServiceSimpleAD
-  | DocDBDBClusterProperties DocDBDBCluster
-  | DocDBDBClusterParameterGroupProperties DocDBDBClusterParameterGroup
-  | DocDBDBInstanceProperties DocDBDBInstance
-  | DocDBDBSubnetGroupProperties DocDBDBSubnetGroup
-  | DynamoDBTableProperties DynamoDBTable
-  | EC2CustomerGatewayProperties EC2CustomerGateway
-  | EC2DHCPOptionsProperties EC2DHCPOptions
-  | EC2EC2FleetProperties EC2EC2Fleet
-  | EC2EIPProperties EC2EIP
-  | EC2EIPAssociationProperties EC2EIPAssociation
-  | EC2EgressOnlyInternetGatewayProperties EC2EgressOnlyInternetGateway
-  | EC2FlowLogProperties EC2FlowLog
-  | EC2HostProperties EC2Host
-  | EC2InstanceProperties EC2Instance
-  | EC2InternetGatewayProperties EC2InternetGateway
-  | EC2LaunchTemplateProperties EC2LaunchTemplate
-  | EC2NatGatewayProperties EC2NatGateway
-  | EC2NetworkAclProperties EC2NetworkAcl
-  | EC2NetworkAclEntryProperties EC2NetworkAclEntry
-  | EC2NetworkInterfaceProperties EC2NetworkInterface
-  | EC2NetworkInterfaceAttachmentProperties EC2NetworkInterfaceAttachment
-  | EC2NetworkInterfacePermissionProperties EC2NetworkInterfacePermission
-  | EC2PlacementGroupProperties EC2PlacementGroup
-  | EC2RouteProperties EC2Route
-  | EC2RouteTableProperties EC2RouteTable
-  | EC2SecurityGroupProperties EC2SecurityGroup
-  | EC2SecurityGroupEgressProperties EC2SecurityGroupEgress
-  | EC2SecurityGroupIngressProperties EC2SecurityGroupIngress
-  | EC2SpotFleetProperties EC2SpotFleet
-  | EC2SubnetProperties EC2Subnet
-  | EC2SubnetCidrBlockProperties EC2SubnetCidrBlock
-  | EC2SubnetNetworkAclAssociationProperties EC2SubnetNetworkAclAssociation
-  | EC2SubnetRouteTableAssociationProperties EC2SubnetRouteTableAssociation
-  | EC2TransitGatewayProperties EC2TransitGateway
-  | EC2TransitGatewayAttachmentProperties EC2TransitGatewayAttachment
-  | EC2TransitGatewayRouteProperties EC2TransitGatewayRoute
-  | EC2TransitGatewayRouteTableProperties EC2TransitGatewayRouteTable
-  | EC2TransitGatewayRouteTableAssociationProperties EC2TransitGatewayRouteTableAssociation
-  | EC2TransitGatewayRouteTablePropagationProperties EC2TransitGatewayRouteTablePropagation
-  | EC2TrunkInterfaceAssociationProperties EC2TrunkInterfaceAssociation
-  | EC2VPCProperties EC2VPC
-  | EC2VPCCidrBlockProperties EC2VPCCidrBlock
-  | EC2VPCDHCPOptionsAssociationProperties EC2VPCDHCPOptionsAssociation
-  | EC2VPCEndpointProperties EC2VPCEndpoint
-  | EC2VPCEndpointConnectionNotificationProperties EC2VPCEndpointConnectionNotification
-  | EC2VPCEndpointServicePermissionsProperties EC2VPCEndpointServicePermissions
-  | EC2VPCGatewayAttachmentProperties EC2VPCGatewayAttachment
-  | EC2VPCPeeringConnectionProperties EC2VPCPeeringConnection
-  | EC2VPNConnectionProperties EC2VPNConnection
-  | EC2VPNConnectionRouteProperties EC2VPNConnectionRoute
-  | EC2VPNGatewayProperties EC2VPNGateway
-  | EC2VPNGatewayRoutePropagationProperties EC2VPNGatewayRoutePropagation
-  | EC2VolumeProperties EC2Volume
-  | EC2VolumeAttachmentProperties EC2VolumeAttachment
-  | ECRRepositoryProperties ECRRepository
-  | ECSClusterProperties ECSCluster
-  | ECSServiceProperties ECSService
-  | ECSTaskDefinitionProperties ECSTaskDefinition
-  | EFSFileSystemProperties EFSFileSystem
-  | EFSMountTargetProperties EFSMountTarget
-  | EKSClusterProperties EKSCluster
-  | EMRClusterProperties EMRCluster
-  | EMRInstanceFleetConfigProperties EMRInstanceFleetConfig
-  | EMRInstanceGroupConfigProperties EMRInstanceGroupConfig
-  | EMRSecurityConfigurationProperties EMRSecurityConfiguration
-  | EMRStepProperties EMRStep
-  | ElastiCacheCacheClusterProperties ElastiCacheCacheCluster
-  | ElastiCacheParameterGroupProperties ElastiCacheParameterGroup
-  | ElastiCacheReplicationGroupProperties ElastiCacheReplicationGroup
-  | ElastiCacheSecurityGroupProperties ElastiCacheSecurityGroup
-  | ElastiCacheSecurityGroupIngressProperties ElastiCacheSecurityGroupIngress
-  | ElastiCacheSubnetGroupProperties ElastiCacheSubnetGroup
-  | ElasticBeanstalkApplicationProperties ElasticBeanstalkApplication
-  | ElasticBeanstalkApplicationVersionProperties ElasticBeanstalkApplicationVersion
-  | ElasticBeanstalkConfigurationTemplateProperties ElasticBeanstalkConfigurationTemplate
-  | ElasticBeanstalkEnvironmentProperties ElasticBeanstalkEnvironment
-  | ElasticLoadBalancingLoadBalancerProperties ElasticLoadBalancingLoadBalancer
-  | ElasticLoadBalancingV2ListenerProperties ElasticLoadBalancingV2Listener
-  | ElasticLoadBalancingV2ListenerCertificateResourceProperties ElasticLoadBalancingV2ListenerCertificateResource
-  | ElasticLoadBalancingV2ListenerRuleProperties ElasticLoadBalancingV2ListenerRule
-  | ElasticLoadBalancingV2LoadBalancerProperties ElasticLoadBalancingV2LoadBalancer
-  | ElasticLoadBalancingV2TargetGroupProperties ElasticLoadBalancingV2TargetGroup
-  | ElasticsearchDomainProperties ElasticsearchDomain
-  | EventsEventBusPolicyProperties EventsEventBusPolicy
-  | EventsRuleProperties EventsRule
-  | FSxFileSystemProperties FSxFileSystem
-  | GameLiftAliasProperties GameLiftAlias
-  | GameLiftBuildProperties GameLiftBuild
-  | GameLiftFleetProperties GameLiftFleet
-  | GlueClassifierProperties GlueClassifier
-  | GlueConnectionProperties GlueConnection
-  | GlueCrawlerProperties GlueCrawler
-  | GlueDatabaseProperties GlueDatabase
-  | GlueDevEndpointProperties GlueDevEndpoint
-  | GlueJobProperties GlueJob
-  | GluePartitionProperties GluePartition
-  | GlueTableProperties GlueTable
-  | GlueTriggerProperties GlueTrigger
-  | GuardDutyDetectorProperties GuardDutyDetector
-  | GuardDutyFilterProperties GuardDutyFilter
-  | GuardDutyIPSetProperties GuardDutyIPSet
-  | GuardDutyMasterProperties GuardDutyMaster
-  | GuardDutyMemberProperties GuardDutyMember
-  | GuardDutyThreatIntelSetProperties GuardDutyThreatIntelSet
-  | IAMAccessKeyProperties IAMAccessKey
-  | IAMGroupProperties IAMGroup
-  | IAMInstanceProfileProperties IAMInstanceProfile
-  | IAMManagedPolicyProperties IAMManagedPolicy
-  | IAMPolicyProperties IAMPolicy
-  | IAMRoleProperties IAMRole
-  | IAMServiceLinkedRoleProperties IAMServiceLinkedRole
-  | IAMUserProperties IAMUser
-  | IAMUserToGroupAdditionProperties IAMUserToGroupAddition
-  | InspectorAssessmentTargetProperties InspectorAssessmentTarget
-  | InspectorAssessmentTemplateProperties InspectorAssessmentTemplate
-  | InspectorResourceGroupProperties InspectorResourceGroup
-  | IoT1ClickDeviceProperties IoT1ClickDevice
-  | IoT1ClickPlacementProperties IoT1ClickPlacement
-  | IoT1ClickProjectProperties IoT1ClickProject
-  | IoTCertificateProperties IoTCertificate
-  | IoTPolicyProperties IoTPolicy
-  | IoTPolicyPrincipalAttachmentProperties IoTPolicyPrincipalAttachment
-  | IoTThingProperties IoTThing
-  | IoTThingPrincipalAttachmentProperties IoTThingPrincipalAttachment
-  | IoTTopicRuleProperties IoTTopicRule
-  | IoTAnalyticsChannelProperties IoTAnalyticsChannel
-  | IoTAnalyticsDatasetProperties IoTAnalyticsDataset
-  | IoTAnalyticsDatastoreProperties IoTAnalyticsDatastore
-  | IoTAnalyticsPipelineProperties IoTAnalyticsPipeline
-  | KMSAliasProperties KMSAlias
-  | KMSKeyProperties KMSKey
-  | KinesisStreamProperties KinesisStream
-  | KinesisStreamConsumerProperties KinesisStreamConsumer
-  | KinesisAnalyticsApplicationProperties KinesisAnalyticsApplication
-  | KinesisAnalyticsApplicationOutputProperties KinesisAnalyticsApplicationOutput
-  | KinesisAnalyticsApplicationReferenceDataSourceProperties KinesisAnalyticsApplicationReferenceDataSource
-  | KinesisAnalyticsV2ApplicationProperties KinesisAnalyticsV2Application
-  | KinesisAnalyticsV2ApplicationCloudWatchLoggingOptionProperties KinesisAnalyticsV2ApplicationCloudWatchLoggingOption
-  | KinesisAnalyticsV2ApplicationOutputProperties KinesisAnalyticsV2ApplicationOutput
-  | KinesisAnalyticsV2ApplicationReferenceDataSourceProperties KinesisAnalyticsV2ApplicationReferenceDataSource
-  | KinesisFirehoseDeliveryStreamProperties KinesisFirehoseDeliveryStream
-  | LambdaAliasProperties LambdaAlias
-  | LambdaEventSourceMappingProperties LambdaEventSourceMapping
-  | LambdaFunctionProperties LambdaFunction
-  | LambdaLayerVersionProperties LambdaLayerVersion
-  | LambdaLayerVersionPermissionProperties LambdaLayerVersionPermission
-  | LambdaPermissionProperties LambdaPermission
-  | LambdaVersionProperties LambdaVersion
-  | LogsDestinationProperties LogsDestination
-  | LogsLogGroupProperties LogsLogGroup
-  | LogsLogStreamProperties LogsLogStream
-  | LogsMetricFilterProperties LogsMetricFilter
-  | LogsSubscriptionFilterProperties LogsSubscriptionFilter
-  | NeptuneDBClusterProperties NeptuneDBCluster
-  | NeptuneDBClusterParameterGroupProperties NeptuneDBClusterParameterGroup
-  | NeptuneDBInstanceProperties NeptuneDBInstance
-  | NeptuneDBParameterGroupProperties NeptuneDBParameterGroup
-  | NeptuneDBSubnetGroupProperties NeptuneDBSubnetGroup
-  | OpsWorksAppProperties OpsWorksApp
-  | OpsWorksElasticLoadBalancerAttachmentProperties OpsWorksElasticLoadBalancerAttachment
-  | OpsWorksInstanceProperties OpsWorksInstance
-  | OpsWorksLayerProperties OpsWorksLayer
-  | OpsWorksStackProperties OpsWorksStack
-  | OpsWorksUserProfileProperties OpsWorksUserProfile
-  | OpsWorksVolumeProperties OpsWorksVolume
-  | OpsWorksCMServerProperties OpsWorksCMServer
-  | RAMResourceShareProperties RAMResourceShare
-  | RDSDBClusterProperties RDSDBCluster
-  | RDSDBClusterParameterGroupProperties RDSDBClusterParameterGroup
-  | RDSDBInstanceProperties RDSDBInstance
-  | RDSDBParameterGroupProperties RDSDBParameterGroup
-  | RDSDBSecurityGroupProperties RDSDBSecurityGroup
-  | RDSDBSecurityGroupIngressProperties RDSDBSecurityGroupIngress
-  | RDSDBSubnetGroupProperties RDSDBSubnetGroup
-  | RDSEventSubscriptionProperties RDSEventSubscription
-  | RDSOptionGroupProperties RDSOptionGroup
-  | RedshiftClusterProperties RedshiftCluster
-  | RedshiftClusterParameterGroupProperties RedshiftClusterParameterGroup
-  | RedshiftClusterSecurityGroupProperties RedshiftClusterSecurityGroup
-  | RedshiftClusterSecurityGroupIngressProperties RedshiftClusterSecurityGroupIngress
-  | RedshiftClusterSubnetGroupProperties RedshiftClusterSubnetGroup
-  | RoboMakerFleetProperties RoboMakerFleet
-  | RoboMakerRobotProperties RoboMakerRobot
-  | RoboMakerRobotApplicationProperties RoboMakerRobotApplication
-  | RoboMakerRobotApplicationVersionProperties RoboMakerRobotApplicationVersion
-  | RoboMakerSimulationApplicationProperties RoboMakerSimulationApplication
-  | RoboMakerSimulationApplicationVersionProperties RoboMakerSimulationApplicationVersion
-  | Route53HealthCheckProperties Route53HealthCheck
-  | Route53HostedZoneProperties Route53HostedZone
-  | Route53RecordSetProperties Route53RecordSet
-  | Route53RecordSetGroupProperties Route53RecordSetGroup
-  | Route53ResolverResolverEndpointProperties Route53ResolverResolverEndpoint
-  | Route53ResolverResolverRuleProperties Route53ResolverResolverRule
-  | Route53ResolverResolverRuleAssociationProperties Route53ResolverResolverRuleAssociation
-  | S3BucketProperties S3Bucket
-  | S3BucketPolicyProperties S3BucketPolicy
-  | SDBDomainProperties SDBDomain
-  | SESConfigurationSetProperties SESConfigurationSet
-  | SESConfigurationSetEventDestinationProperties SESConfigurationSetEventDestination
-  | SESReceiptFilterProperties SESReceiptFilter
-  | SESReceiptRuleProperties SESReceiptRule
-  | SESReceiptRuleSetProperties SESReceiptRuleSet
-  | SESTemplateProperties SESTemplate
-  | SNSSubscriptionProperties SNSSubscription
-  | SNSTopicProperties SNSTopic
-  | SNSTopicPolicyProperties SNSTopicPolicy
-  | SQSQueueProperties SQSQueue
-  | SQSQueuePolicyProperties SQSQueuePolicy
-  | SSMAssociationProperties SSMAssociation
-  | SSMDocumentProperties SSMDocument
-  | SSMMaintenanceWindowProperties SSMMaintenanceWindow
-  | SSMMaintenanceWindowTaskProperties SSMMaintenanceWindowTask
-  | SSMParameterProperties SSMParameter
-  | SSMPatchBaselineProperties SSMPatchBaseline
-  | SSMResourceDataSyncProperties SSMResourceDataSync
-  | SageMakerEndpointProperties SageMakerEndpoint
-  | SageMakerEndpointConfigProperties SageMakerEndpointConfig
-  | SageMakerModelProperties SageMakerModel
-  | SageMakerNotebookInstanceProperties SageMakerNotebookInstance
-  | SageMakerNotebookInstanceLifecycleConfigProperties SageMakerNotebookInstanceLifecycleConfig
-  | SecretsManagerResourcePolicyProperties SecretsManagerResourcePolicy
-  | SecretsManagerRotationScheduleProperties SecretsManagerRotationSchedule
-  | SecretsManagerSecretProperties SecretsManagerSecret
-  | SecretsManagerSecretTargetAttachmentProperties SecretsManagerSecretTargetAttachment
-  | ServiceCatalogAcceptedPortfolioShareProperties ServiceCatalogAcceptedPortfolioShare
-  | ServiceCatalogCloudFormationProductProperties ServiceCatalogCloudFormationProduct
-  | ServiceCatalogCloudFormationProvisionedProductProperties ServiceCatalogCloudFormationProvisionedProduct
-  | ServiceCatalogLaunchNotificationConstraintProperties ServiceCatalogLaunchNotificationConstraint
-  | ServiceCatalogLaunchRoleConstraintProperties ServiceCatalogLaunchRoleConstraint
-  | ServiceCatalogLaunchTemplateConstraintProperties ServiceCatalogLaunchTemplateConstraint
-  | ServiceCatalogPortfolioProperties ServiceCatalogPortfolio
-  | ServiceCatalogPortfolioPrincipalAssociationProperties ServiceCatalogPortfolioPrincipalAssociation
-  | ServiceCatalogPortfolioProductAssociationProperties ServiceCatalogPortfolioProductAssociation
-  | ServiceCatalogPortfolioShareProperties ServiceCatalogPortfolioShare
-  | ServiceCatalogTagOptionProperties ServiceCatalogTagOption
-  | ServiceCatalogTagOptionAssociationProperties ServiceCatalogTagOptionAssociation
-  | ServiceDiscoveryHttpNamespaceProperties ServiceDiscoveryHttpNamespace
-  | ServiceDiscoveryInstanceProperties ServiceDiscoveryInstance
-  | ServiceDiscoveryPrivateDnsNamespaceProperties ServiceDiscoveryPrivateDnsNamespace
-  | ServiceDiscoveryPublicDnsNamespaceProperties ServiceDiscoveryPublicDnsNamespace
-  | ServiceDiscoveryServiceProperties ServiceDiscoveryService
-  | StepFunctionsActivityProperties StepFunctionsActivity
-  | StepFunctionsStateMachineProperties StepFunctionsStateMachine
-  | WAFByteMatchSetProperties WAFByteMatchSet
-  | WAFIPSetProperties WAFIPSet
-  | WAFRuleProperties WAFRule
-  | WAFSizeConstraintSetProperties WAFSizeConstraintSet
-  | WAFSqlInjectionMatchSetProperties WAFSqlInjectionMatchSet
-  | WAFWebACLProperties WAFWebACL
-  | WAFXssMatchSetProperties WAFXssMatchSet
-  | WAFRegionalByteMatchSetProperties WAFRegionalByteMatchSet
-  | WAFRegionalIPSetProperties WAFRegionalIPSet
-  | WAFRegionalRuleProperties WAFRegionalRule
-  | WAFRegionalSizeConstraintSetProperties WAFRegionalSizeConstraintSet
-  | WAFRegionalSqlInjectionMatchSetProperties WAFRegionalSqlInjectionMatchSet
-  | WAFRegionalWebACLProperties WAFRegionalWebACL
-  | WAFRegionalWebACLAssociationProperties WAFRegionalWebACLAssociation
-  | WAFRegionalXssMatchSetProperties WAFRegionalXssMatchSet
-  | WorkSpacesWorkspaceProperties WorkSpacesWorkspace
-  | ASKSkillProperties ASKSkill
-
-  deriving (Show, Eq)
-
-data DeletionPolicy
-  = Delete
-  | Retain
-  | Snapshot
-  deriving (Show, Eq, Generic)
-
-instance ToJSON DeletionPolicy where
-
-data Resource =
-  Resource
-  { _resourceName :: T.Text
-  , _resourceProperties :: ResourceProperties
-  , _resourceDeletionPolicy :: Maybe DeletionPolicy
-  , _resourceCreationPolicy :: Maybe CreationPolicy
-  , _resourceUpdatePolicy :: Maybe UpdatePolicy
-  , _resourceDependsOn :: Maybe [T.Text]
-  , _resourceMetadata :: Maybe Object
-  , _resourceCondition :: Maybe T.Text
-  } deriving (Show, Eq)
-
-instance ToRef Resource b where
-  toRef r = Ref (_resourceName r)
-
--- | Convenient constructor for 'Resource' with required arguments.
-resource
-  :: T.Text -- ^ Logical name
-  -> ResourceProperties
-  -> Resource
-resource rn rp =
-  Resource
-  { _resourceName = rn
-  , _resourceProperties = rp
-  , _resourceDeletionPolicy = Nothing
-  , _resourceCreationPolicy = Nothing
-  , _resourceUpdatePolicy = Nothing
-  , _resourceDependsOn = Nothing
-  , _resourceMetadata = Nothing
-  , _resourceCondition = Nothing
-  }
-
-$(makeLenses ''Resource)
-
-resourceToJSON :: Resource -> Value
-resourceToJSON (Resource _ props dp cp up deps meta cond) =
-    object $ resourcePropertiesJSON props ++ catMaybes
-    [ maybeField "DeletionPolicy" dp
-    , maybeField "CreationPolicy" cp
-    , maybeField "UpdatePolicy" up
-    , maybeField "DependsOn" deps
-    , maybeField "Metadata" meta
-    , maybeField "Condition" cond
-    ]
-
-resourcePropertiesJSON :: ResourceProperties -> [Pair]
-resourcePropertiesJSON (AmazonMQBrokerProperties x) =
-  [ "Type" .= ("AWS::AmazonMQ::Broker" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AmazonMQConfigurationProperties x) =
-  [ "Type" .= ("AWS::AmazonMQ::Configuration" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AmazonMQConfigurationAssociationProperties x) =
-  [ "Type" .= ("AWS::AmazonMQ::ConfigurationAssociation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayAccountProperties x) =
-  [ "Type" .= ("AWS::ApiGateway::Account" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayApiKeyProperties x) =
-  [ "Type" .= ("AWS::ApiGateway::ApiKey" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayAuthorizerProperties x) =
-  [ "Type" .= ("AWS::ApiGateway::Authorizer" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayBasePathMappingProperties x) =
-  [ "Type" .= ("AWS::ApiGateway::BasePathMapping" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayClientCertificateProperties x) =
-  [ "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 (ApiGatewayGatewayResponseProperties x) =
-  [ "Type" .= ("AWS::ApiGateway::GatewayResponse" :: 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) =
-  [ "Type" .= ("AWS::ApiGateway::RestApi" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayStageProperties x) =
-  [ "Type" .= ("AWS::ApiGateway::Stage" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayUsagePlanProperties x) =
-  [ "Type" .= ("AWS::ApiGateway::UsagePlan" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayUsagePlanKeyProperties x) =
-  [ "Type" .= ("AWS::ApiGateway::UsagePlanKey" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayVpcLinkProperties x) =
-  [ "Type" .= ("AWS::ApiGateway::VpcLink" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayV2ApiProperties x) =
-  [ "Type" .= ("AWS::ApiGatewayV2::Api" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayV2AuthorizerProperties x) =
-  [ "Type" .= ("AWS::ApiGatewayV2::Authorizer" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayV2DeploymentProperties x) =
-  [ "Type" .= ("AWS::ApiGatewayV2::Deployment" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayV2IntegrationProperties x) =
-  [ "Type" .= ("AWS::ApiGatewayV2::Integration" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayV2IntegrationResponseProperties x) =
-  [ "Type" .= ("AWS::ApiGatewayV2::IntegrationResponse" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayV2ModelProperties x) =
-  [ "Type" .= ("AWS::ApiGatewayV2::Model" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayV2RouteProperties x) =
-  [ "Type" .= ("AWS::ApiGatewayV2::Route" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayV2RouteResponseProperties x) =
-  [ "Type" .= ("AWS::ApiGatewayV2::RouteResponse" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApiGatewayV2StageProperties x) =
-  [ "Type" .= ("AWS::ApiGatewayV2::Stage" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AppStreamDirectoryConfigProperties x) =
-  [ "Type" .= ("AWS::AppStream::DirectoryConfig" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AppStreamFleetProperties x) =
-  [ "Type" .= ("AWS::AppStream::Fleet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AppStreamImageBuilderProperties x) =
-  [ "Type" .= ("AWS::AppStream::ImageBuilder" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AppStreamStackProperties x) =
-  [ "Type" .= ("AWS::AppStream::Stack" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AppStreamStackFleetAssociationProperties x) =
-  [ "Type" .= ("AWS::AppStream::StackFleetAssociation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AppStreamStackUserAssociationProperties x) =
-  [ "Type" .= ("AWS::AppStream::StackUserAssociation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AppStreamUserProperties x) =
-  [ "Type" .= ("AWS::AppStream::User" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AppSyncApiKeyProperties x) =
-  [ "Type" .= ("AWS::AppSync::ApiKey" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AppSyncDataSourceProperties x) =
-  [ "Type" .= ("AWS::AppSync::DataSource" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AppSyncFunctionConfigurationProperties x) =
-  [ "Type" .= ("AWS::AppSync::FunctionConfiguration" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AppSyncGraphQLApiProperties x) =
-  [ "Type" .= ("AWS::AppSync::GraphQLApi" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AppSyncGraphQLSchemaProperties x) =
-  [ "Type" .= ("AWS::AppSync::GraphQLSchema" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AppSyncResolverProperties x) =
-  [ "Type" .= ("AWS::AppSync::Resolver" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApplicationAutoScalingScalableTargetProperties x) =
-  [ "Type" .= ("AWS::ApplicationAutoScaling::ScalableTarget" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ApplicationAutoScalingScalingPolicyProperties x) =
-  [ "Type" .= ("AWS::ApplicationAutoScaling::ScalingPolicy" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AthenaNamedQueryProperties x) =
-  [ "Type" .= ("AWS::Athena::NamedQuery" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AutoScalingAutoScalingGroupProperties x) =
-  [ "Type" .= ("AWS::AutoScaling::AutoScalingGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AutoScalingLaunchConfigurationProperties x) =
-  [ "Type" .= ("AWS::AutoScaling::LaunchConfiguration" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AutoScalingLifecycleHookProperties x) =
-  [ "Type" .= ("AWS::AutoScaling::LifecycleHook" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AutoScalingScalingPolicyProperties x) =
-  [ "Type" .= ("AWS::AutoScaling::ScalingPolicy" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AutoScalingScheduledActionProperties x) =
-  [ "Type" .= ("AWS::AutoScaling::ScheduledAction" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (AutoScalingPlansScalingPlanProperties x) =
-  [ "Type" .= ("AWS::AutoScalingPlans::ScalingPlan" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (BatchComputeEnvironmentProperties x) =
-  [ "Type" .= ("AWS::Batch::ComputeEnvironment" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (BatchJobDefinitionProperties x) =
-  [ "Type" .= ("AWS::Batch::JobDefinition" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (BatchJobQueueProperties x) =
-  [ "Type" .= ("AWS::Batch::JobQueue" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (BudgetsBudgetProperties x) =
-  [ "Type" .= ("AWS::Budgets::Budget" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CertificateManagerCertificateProperties x) =
-  [ "Type" .= ("AWS::CertificateManager::Certificate" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (Cloud9EnvironmentEC2Properties x) =
-  [ "Type" .= ("AWS::Cloud9::EnvironmentEC2" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CloudFormationCustomResourceProperties x) =
-  [ "Type" .= ("AWS::CloudFormation::CustomResource" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CloudFormationMacroProperties x) =
-  [ "Type" .= ("AWS::CloudFormation::Macro" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CloudFormationStackProperties x) =
-  [ "Type" .= ("AWS::CloudFormation::Stack" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CloudFormationWaitConditionProperties x) =
-  [ "Type" .= ("AWS::CloudFormation::WaitCondition" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CloudFormationWaitConditionHandleProperties x) =
-  [ "Type" .= ("AWS::CloudFormation::WaitConditionHandle" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CloudFrontCloudFrontOriginAccessIdentityProperties x) =
-  [ "Type" .= ("AWS::CloudFront::CloudFrontOriginAccessIdentity" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CloudFrontDistributionProperties x) =
-  [ "Type" .= ("AWS::CloudFront::Distribution" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CloudFrontStreamingDistributionProperties x) =
-  [ "Type" .= ("AWS::CloudFront::StreamingDistribution" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CloudTrailTrailProperties x) =
-  [ "Type" .= ("AWS::CloudTrail::Trail" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CloudWatchAlarmProperties x) =
-  [ "Type" .= ("AWS::CloudWatch::Alarm" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CloudWatchDashboardProperties x) =
-  [ "Type" .= ("AWS::CloudWatch::Dashboard" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CodeBuildProjectProperties x) =
-  [ "Type" .= ("AWS::CodeBuild::Project" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CodeCommitRepositoryProperties x) =
-  [ "Type" .= ("AWS::CodeCommit::Repository" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CodeDeployApplicationProperties x) =
-  [ "Type" .= ("AWS::CodeDeploy::Application" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CodeDeployDeploymentConfigProperties x) =
-  [ "Type" .= ("AWS::CodeDeploy::DeploymentConfig" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CodeDeployDeploymentGroupProperties x) =
-  [ "Type" .= ("AWS::CodeDeploy::DeploymentGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CodePipelineCustomActionTypeProperties x) =
-  [ "Type" .= ("AWS::CodePipeline::CustomActionType" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CodePipelinePipelineProperties x) =
-  [ "Type" .= ("AWS::CodePipeline::Pipeline" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CodePipelineWebhookProperties x) =
-  [ "Type" .= ("AWS::CodePipeline::Webhook" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CognitoIdentityPoolProperties x) =
-  [ "Type" .= ("AWS::Cognito::IdentityPool" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CognitoIdentityPoolRoleAttachmentProperties x) =
-  [ "Type" .= ("AWS::Cognito::IdentityPoolRoleAttachment" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CognitoUserPoolProperties x) =
-  [ "Type" .= ("AWS::Cognito::UserPool" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CognitoUserPoolClientProperties x) =
-  [ "Type" .= ("AWS::Cognito::UserPoolClient" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CognitoUserPoolGroupProperties x) =
-  [ "Type" .= ("AWS::Cognito::UserPoolGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CognitoUserPoolUserProperties x) =
-  [ "Type" .= ("AWS::Cognito::UserPoolUser" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (CognitoUserPoolUserToGroupAttachmentProperties x) =
-  [ "Type" .= ("AWS::Cognito::UserPoolUserToGroupAttachment" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ConfigAggregationAuthorizationProperties x) =
-  [ "Type" .= ("AWS::Config::AggregationAuthorization" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ConfigConfigRuleProperties x) =
-  [ "Type" .= ("AWS::Config::ConfigRule" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ConfigConfigurationAggregatorProperties x) =
-  [ "Type" .= ("AWS::Config::ConfigurationAggregator" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ConfigConfigurationRecorderProperties x) =
-  [ "Type" .= ("AWS::Config::ConfigurationRecorder" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ConfigDeliveryChannelProperties x) =
-  [ "Type" .= ("AWS::Config::DeliveryChannel" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DAXClusterProperties x) =
-  [ "Type" .= ("AWS::DAX::Cluster" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DAXParameterGroupProperties x) =
-  [ "Type" .= ("AWS::DAX::ParameterGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DAXSubnetGroupProperties x) =
-  [ "Type" .= ("AWS::DAX::SubnetGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DLMLifecyclePolicyProperties x) =
-  [ "Type" .= ("AWS::DLM::LifecyclePolicy" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DMSCertificateProperties x) =
-  [ "Type" .= ("AWS::DMS::Certificate" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DMSEndpointProperties x) =
-  [ "Type" .= ("AWS::DMS::Endpoint" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DMSEventSubscriptionProperties x) =
-  [ "Type" .= ("AWS::DMS::EventSubscription" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DMSReplicationInstanceProperties x) =
-  [ "Type" .= ("AWS::DMS::ReplicationInstance" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DMSReplicationSubnetGroupProperties x) =
-  [ "Type" .= ("AWS::DMS::ReplicationSubnetGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DMSReplicationTaskProperties x) =
-  [ "Type" .= ("AWS::DMS::ReplicationTask" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DataPipelinePipelineProperties x) =
-  [ "Type" .= ("AWS::DataPipeline::Pipeline" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DirectoryServiceMicrosoftADProperties x) =
-  [ "Type" .= ("AWS::DirectoryService::MicrosoftAD" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DirectoryServiceSimpleADProperties x) =
-  [ "Type" .= ("AWS::DirectoryService::SimpleAD" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DocDBDBClusterProperties x) =
-  [ "Type" .= ("AWS::DocDB::DBCluster" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DocDBDBClusterParameterGroupProperties x) =
-  [ "Type" .= ("AWS::DocDB::DBClusterParameterGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DocDBDBInstanceProperties x) =
-  [ "Type" .= ("AWS::DocDB::DBInstance" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DocDBDBSubnetGroupProperties x) =
-  [ "Type" .= ("AWS::DocDB::DBSubnetGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (DynamoDBTableProperties x) =
-  [ "Type" .= ("AWS::DynamoDB::Table" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2CustomerGatewayProperties x) =
-  [ "Type" .= ("AWS::EC2::CustomerGateway" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2DHCPOptionsProperties x) =
-  [ "Type" .= ("AWS::EC2::DHCPOptions" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2EC2FleetProperties x) =
-  [ "Type" .= ("AWS::EC2::EC2Fleet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2EIPProperties x) =
-  [ "Type" .= ("AWS::EC2::EIP" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2EIPAssociationProperties x) =
-  [ "Type" .= ("AWS::EC2::EIPAssociation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2EgressOnlyInternetGatewayProperties x) =
-  [ "Type" .= ("AWS::EC2::EgressOnlyInternetGateway" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2FlowLogProperties x) =
-  [ "Type" .= ("AWS::EC2::FlowLog" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2HostProperties x) =
-  [ "Type" .= ("AWS::EC2::Host" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2InstanceProperties x) =
-  [ "Type" .= ("AWS::EC2::Instance" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2InternetGatewayProperties x) =
-  [ "Type" .= ("AWS::EC2::InternetGateway" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2LaunchTemplateProperties x) =
-  [ "Type" .= ("AWS::EC2::LaunchTemplate" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2NatGatewayProperties x) =
-  [ "Type" .= ("AWS::EC2::NatGateway" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2NetworkAclProperties x) =
-  [ "Type" .= ("AWS::EC2::NetworkAcl" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2NetworkAclEntryProperties x) =
-  [ "Type" .= ("AWS::EC2::NetworkAclEntry" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2NetworkInterfaceProperties x) =
-  [ "Type" .= ("AWS::EC2::NetworkInterface" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2NetworkInterfaceAttachmentProperties x) =
-  [ "Type" .= ("AWS::EC2::NetworkInterfaceAttachment" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2NetworkInterfacePermissionProperties x) =
-  [ "Type" .= ("AWS::EC2::NetworkInterfacePermission" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2PlacementGroupProperties x) =
-  [ "Type" .= ("AWS::EC2::PlacementGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2RouteProperties x) =
-  [ "Type" .= ("AWS::EC2::Route" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2RouteTableProperties x) =
-  [ "Type" .= ("AWS::EC2::RouteTable" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2SecurityGroupProperties x) =
-  [ "Type" .= ("AWS::EC2::SecurityGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2SecurityGroupEgressProperties x) =
-  [ "Type" .= ("AWS::EC2::SecurityGroupEgress" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2SecurityGroupIngressProperties x) =
-  [ "Type" .= ("AWS::EC2::SecurityGroupIngress" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2SpotFleetProperties x) =
-  [ "Type" .= ("AWS::EC2::SpotFleet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2SubnetProperties x) =
-  [ "Type" .= ("AWS::EC2::Subnet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2SubnetCidrBlockProperties x) =
-  [ "Type" .= ("AWS::EC2::SubnetCidrBlock" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2SubnetNetworkAclAssociationProperties x) =
-  [ "Type" .= ("AWS::EC2::SubnetNetworkAclAssociation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2SubnetRouteTableAssociationProperties x) =
-  [ "Type" .= ("AWS::EC2::SubnetRouteTableAssociation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2TransitGatewayProperties x) =
-  [ "Type" .= ("AWS::EC2::TransitGateway" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2TransitGatewayAttachmentProperties x) =
-  [ "Type" .= ("AWS::EC2::TransitGatewayAttachment" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2TransitGatewayRouteProperties x) =
-  [ "Type" .= ("AWS::EC2::TransitGatewayRoute" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2TransitGatewayRouteTableProperties x) =
-  [ "Type" .= ("AWS::EC2::TransitGatewayRouteTable" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2TransitGatewayRouteTableAssociationProperties x) =
-  [ "Type" .= ("AWS::EC2::TransitGatewayRouteTableAssociation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2TransitGatewayRouteTablePropagationProperties x) =
-  [ "Type" .= ("AWS::EC2::TransitGatewayRouteTablePropagation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2TrunkInterfaceAssociationProperties x) =
-  [ "Type" .= ("AWS::EC2::TrunkInterfaceAssociation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2VPCProperties x) =
-  [ "Type" .= ("AWS::EC2::VPC" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2VPCCidrBlockProperties x) =
-  [ "Type" .= ("AWS::EC2::VPCCidrBlock" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2VPCDHCPOptionsAssociationProperties x) =
-  [ "Type" .= ("AWS::EC2::VPCDHCPOptionsAssociation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2VPCEndpointProperties x) =
-  [ "Type" .= ("AWS::EC2::VPCEndpoint" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2VPCEndpointConnectionNotificationProperties x) =
-  [ "Type" .= ("AWS::EC2::VPCEndpointConnectionNotification" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2VPCEndpointServicePermissionsProperties x) =
-  [ "Type" .= ("AWS::EC2::VPCEndpointServicePermissions" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2VPCGatewayAttachmentProperties x) =
-  [ "Type" .= ("AWS::EC2::VPCGatewayAttachment" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2VPCPeeringConnectionProperties x) =
-  [ "Type" .= ("AWS::EC2::VPCPeeringConnection" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2VPNConnectionProperties x) =
-  [ "Type" .= ("AWS::EC2::VPNConnection" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2VPNConnectionRouteProperties x) =
-  [ "Type" .= ("AWS::EC2::VPNConnectionRoute" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2VPNGatewayProperties x) =
-  [ "Type" .= ("AWS::EC2::VPNGateway" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2VPNGatewayRoutePropagationProperties x) =
-  [ "Type" .= ("AWS::EC2::VPNGatewayRoutePropagation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2VolumeProperties x) =
-  [ "Type" .= ("AWS::EC2::Volume" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EC2VolumeAttachmentProperties x) =
-  [ "Type" .= ("AWS::EC2::VolumeAttachment" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ECRRepositoryProperties x) =
-  [ "Type" .= ("AWS::ECR::Repository" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ECSClusterProperties x) =
-  [ "Type" .= ("AWS::ECS::Cluster" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ECSServiceProperties x) =
-  [ "Type" .= ("AWS::ECS::Service" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ECSTaskDefinitionProperties x) =
-  [ "Type" .= ("AWS::ECS::TaskDefinition" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EFSFileSystemProperties x) =
-  [ "Type" .= ("AWS::EFS::FileSystem" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EFSMountTargetProperties x) =
-  [ "Type" .= ("AWS::EFS::MountTarget" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EKSClusterProperties x) =
-  [ "Type" .= ("AWS::EKS::Cluster" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EMRClusterProperties x) =
-  [ "Type" .= ("AWS::EMR::Cluster" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EMRInstanceFleetConfigProperties x) =
-  [ "Type" .= ("AWS::EMR::InstanceFleetConfig" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EMRInstanceGroupConfigProperties x) =
-  [ "Type" .= ("AWS::EMR::InstanceGroupConfig" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EMRSecurityConfigurationProperties x) =
-  [ "Type" .= ("AWS::EMR::SecurityConfiguration" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EMRStepProperties x) =
-  [ "Type" .= ("AWS::EMR::Step" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElastiCacheCacheClusterProperties x) =
-  [ "Type" .= ("AWS::ElastiCache::CacheCluster" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElastiCacheParameterGroupProperties x) =
-  [ "Type" .= ("AWS::ElastiCache::ParameterGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElastiCacheReplicationGroupProperties x) =
-  [ "Type" .= ("AWS::ElastiCache::ReplicationGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElastiCacheSecurityGroupProperties x) =
-  [ "Type" .= ("AWS::ElastiCache::SecurityGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElastiCacheSecurityGroupIngressProperties x) =
-  [ "Type" .= ("AWS::ElastiCache::SecurityGroupIngress" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElastiCacheSubnetGroupProperties x) =
-  [ "Type" .= ("AWS::ElastiCache::SubnetGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElasticBeanstalkApplicationProperties x) =
-  [ "Type" .= ("AWS::ElasticBeanstalk::Application" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElasticBeanstalkApplicationVersionProperties x) =
-  [ "Type" .= ("AWS::ElasticBeanstalk::ApplicationVersion" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElasticBeanstalkConfigurationTemplateProperties x) =
-  [ "Type" .= ("AWS::ElasticBeanstalk::ConfigurationTemplate" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElasticBeanstalkEnvironmentProperties x) =
-  [ "Type" .= ("AWS::ElasticBeanstalk::Environment" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElasticLoadBalancingLoadBalancerProperties x) =
-  [ "Type" .= ("AWS::ElasticLoadBalancing::LoadBalancer" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElasticLoadBalancingV2ListenerProperties x) =
-  [ "Type" .= ("AWS::ElasticLoadBalancingV2::Listener" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElasticLoadBalancingV2ListenerCertificateResourceProperties x) =
-  [ "Type" .= ("AWS::ElasticLoadBalancingV2::ListenerCertificate" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElasticLoadBalancingV2ListenerRuleProperties x) =
-  [ "Type" .= ("AWS::ElasticLoadBalancingV2::ListenerRule" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElasticLoadBalancingV2LoadBalancerProperties x) =
-  [ "Type" .= ("AWS::ElasticLoadBalancingV2::LoadBalancer" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElasticLoadBalancingV2TargetGroupProperties x) =
-  [ "Type" .= ("AWS::ElasticLoadBalancingV2::TargetGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ElasticsearchDomainProperties x) =
-  [ "Type" .= ("AWS::Elasticsearch::Domain" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EventsEventBusPolicyProperties x) =
-  [ "Type" .= ("AWS::Events::EventBusPolicy" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (EventsRuleProperties x) =
-  [ "Type" .= ("AWS::Events::Rule" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (FSxFileSystemProperties x) =
-  [ "Type" .= ("AWS::FSx::FileSystem" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GameLiftAliasProperties x) =
-  [ "Type" .= ("AWS::GameLift::Alias" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GameLiftBuildProperties x) =
-  [ "Type" .= ("AWS::GameLift::Build" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GameLiftFleetProperties x) =
-  [ "Type" .= ("AWS::GameLift::Fleet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GlueClassifierProperties x) =
-  [ "Type" .= ("AWS::Glue::Classifier" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GlueConnectionProperties x) =
-  [ "Type" .= ("AWS::Glue::Connection" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GlueCrawlerProperties x) =
-  [ "Type" .= ("AWS::Glue::Crawler" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GlueDatabaseProperties x) =
-  [ "Type" .= ("AWS::Glue::Database" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GlueDevEndpointProperties x) =
-  [ "Type" .= ("AWS::Glue::DevEndpoint" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GlueJobProperties x) =
-  [ "Type" .= ("AWS::Glue::Job" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GluePartitionProperties x) =
-  [ "Type" .= ("AWS::Glue::Partition" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GlueTableProperties x) =
-  [ "Type" .= ("AWS::Glue::Table" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GlueTriggerProperties x) =
-  [ "Type" .= ("AWS::Glue::Trigger" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GuardDutyDetectorProperties x) =
-  [ "Type" .= ("AWS::GuardDuty::Detector" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GuardDutyFilterProperties x) =
-  [ "Type" .= ("AWS::GuardDuty::Filter" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GuardDutyIPSetProperties x) =
-  [ "Type" .= ("AWS::GuardDuty::IPSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GuardDutyMasterProperties x) =
-  [ "Type" .= ("AWS::GuardDuty::Master" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GuardDutyMemberProperties x) =
-  [ "Type" .= ("AWS::GuardDuty::Member" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (GuardDutyThreatIntelSetProperties x) =
-  [ "Type" .= ("AWS::GuardDuty::ThreatIntelSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IAMAccessKeyProperties x) =
-  [ "Type" .= ("AWS::IAM::AccessKey" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IAMGroupProperties x) =
-  [ "Type" .= ("AWS::IAM::Group" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IAMInstanceProfileProperties x) =
-  [ "Type" .= ("AWS::IAM::InstanceProfile" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IAMManagedPolicyProperties x) =
-  [ "Type" .= ("AWS::IAM::ManagedPolicy" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IAMPolicyProperties x) =
-  [ "Type" .= ("AWS::IAM::Policy" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IAMRoleProperties x) =
-  [ "Type" .= ("AWS::IAM::Role" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IAMServiceLinkedRoleProperties x) =
-  [ "Type" .= ("AWS::IAM::ServiceLinkedRole" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IAMUserProperties x) =
-  [ "Type" .= ("AWS::IAM::User" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IAMUserToGroupAdditionProperties x) =
-  [ "Type" .= ("AWS::IAM::UserToGroupAddition" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (InspectorAssessmentTargetProperties x) =
-  [ "Type" .= ("AWS::Inspector::AssessmentTarget" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (InspectorAssessmentTemplateProperties x) =
-  [ "Type" .= ("AWS::Inspector::AssessmentTemplate" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (InspectorResourceGroupProperties x) =
-  [ "Type" .= ("AWS::Inspector::ResourceGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IoT1ClickDeviceProperties x) =
-  [ "Type" .= ("AWS::IoT1Click::Device" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IoT1ClickPlacementProperties x) =
-  [ "Type" .= ("AWS::IoT1Click::Placement" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IoT1ClickProjectProperties x) =
-  [ "Type" .= ("AWS::IoT1Click::Project" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IoTCertificateProperties x) =
-  [ "Type" .= ("AWS::IoT::Certificate" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IoTPolicyProperties x) =
-  [ "Type" .= ("AWS::IoT::Policy" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IoTPolicyPrincipalAttachmentProperties x) =
-  [ "Type" .= ("AWS::IoT::PolicyPrincipalAttachment" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IoTThingProperties x) =
-  [ "Type" .= ("AWS::IoT::Thing" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IoTThingPrincipalAttachmentProperties x) =
-  [ "Type" .= ("AWS::IoT::ThingPrincipalAttachment" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IoTTopicRuleProperties x) =
-  [ "Type" .= ("AWS::IoT::TopicRule" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IoTAnalyticsChannelProperties x) =
-  [ "Type" .= ("AWS::IoTAnalytics::Channel" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IoTAnalyticsDatasetProperties x) =
-  [ "Type" .= ("AWS::IoTAnalytics::Dataset" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IoTAnalyticsDatastoreProperties x) =
-  [ "Type" .= ("AWS::IoTAnalytics::Datastore" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (IoTAnalyticsPipelineProperties x) =
-  [ "Type" .= ("AWS::IoTAnalytics::Pipeline" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (KMSAliasProperties x) =
-  [ "Type" .= ("AWS::KMS::Alias" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (KMSKeyProperties x) =
-  [ "Type" .= ("AWS::KMS::Key" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (KinesisStreamProperties x) =
-  [ "Type" .= ("AWS::Kinesis::Stream" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (KinesisStreamConsumerProperties x) =
-  [ "Type" .= ("AWS::Kinesis::StreamConsumer" :: 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 (KinesisAnalyticsV2ApplicationProperties x) =
-  [ "Type" .= ("AWS::KinesisAnalyticsV2::Application" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (KinesisAnalyticsV2ApplicationCloudWatchLoggingOptionProperties x) =
-  [ "Type" .= ("AWS::KinesisAnalyticsV2::ApplicationCloudWatchLoggingOption" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (KinesisAnalyticsV2ApplicationOutputProperties x) =
-  [ "Type" .= ("AWS::KinesisAnalyticsV2::ApplicationOutput" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (KinesisAnalyticsV2ApplicationReferenceDataSourceProperties x) =
-  [ "Type" .= ("AWS::KinesisAnalyticsV2::ApplicationReferenceDataSource" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (KinesisFirehoseDeliveryStreamProperties x) =
-  [ "Type" .= ("AWS::KinesisFirehose::DeliveryStream" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (LambdaAliasProperties x) =
-  [ "Type" .= ("AWS::Lambda::Alias" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (LambdaEventSourceMappingProperties x) =
-  [ "Type" .= ("AWS::Lambda::EventSourceMapping" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (LambdaFunctionProperties x) =
-  [ "Type" .= ("AWS::Lambda::Function" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (LambdaLayerVersionProperties x) =
-  [ "Type" .= ("AWS::Lambda::LayerVersion" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (LambdaLayerVersionPermissionProperties x) =
-  [ "Type" .= ("AWS::Lambda::LayerVersionPermission" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (LambdaPermissionProperties x) =
-  [ "Type" .= ("AWS::Lambda::Permission" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (LambdaVersionProperties x) =
-  [ "Type" .= ("AWS::Lambda::Version" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (LogsDestinationProperties x) =
-  [ "Type" .= ("AWS::Logs::Destination" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (LogsLogGroupProperties x) =
-  [ "Type" .= ("AWS::Logs::LogGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (LogsLogStreamProperties x) =
-  [ "Type" .= ("AWS::Logs::LogStream" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (LogsMetricFilterProperties x) =
-  [ "Type" .= ("AWS::Logs::MetricFilter" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (LogsSubscriptionFilterProperties x) =
-  [ "Type" .= ("AWS::Logs::SubscriptionFilter" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (NeptuneDBClusterProperties x) =
-  [ "Type" .= ("AWS::Neptune::DBCluster" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (NeptuneDBClusterParameterGroupProperties x) =
-  [ "Type" .= ("AWS::Neptune::DBClusterParameterGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (NeptuneDBInstanceProperties x) =
-  [ "Type" .= ("AWS::Neptune::DBInstance" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (NeptuneDBParameterGroupProperties x) =
-  [ "Type" .= ("AWS::Neptune::DBParameterGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (NeptuneDBSubnetGroupProperties x) =
-  [ "Type" .= ("AWS::Neptune::DBSubnetGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (OpsWorksAppProperties x) =
-  [ "Type" .= ("AWS::OpsWorks::App" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (OpsWorksElasticLoadBalancerAttachmentProperties x) =
-  [ "Type" .= ("AWS::OpsWorks::ElasticLoadBalancerAttachment" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (OpsWorksInstanceProperties x) =
-  [ "Type" .= ("AWS::OpsWorks::Instance" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (OpsWorksLayerProperties x) =
-  [ "Type" .= ("AWS::OpsWorks::Layer" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (OpsWorksStackProperties x) =
-  [ "Type" .= ("AWS::OpsWorks::Stack" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (OpsWorksUserProfileProperties x) =
-  [ "Type" .= ("AWS::OpsWorks::UserProfile" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (OpsWorksVolumeProperties x) =
-  [ "Type" .= ("AWS::OpsWorks::Volume" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (OpsWorksCMServerProperties x) =
-  [ "Type" .= ("AWS::OpsWorksCM::Server" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RAMResourceShareProperties x) =
-  [ "Type" .= ("AWS::RAM::ResourceShare" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RDSDBClusterProperties x) =
-  [ "Type" .= ("AWS::RDS::DBCluster" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RDSDBClusterParameterGroupProperties x) =
-  [ "Type" .= ("AWS::RDS::DBClusterParameterGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RDSDBInstanceProperties x) =
-  [ "Type" .= ("AWS::RDS::DBInstance" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RDSDBParameterGroupProperties x) =
-  [ "Type" .= ("AWS::RDS::DBParameterGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RDSDBSecurityGroupProperties x) =
-  [ "Type" .= ("AWS::RDS::DBSecurityGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RDSDBSecurityGroupIngressProperties x) =
-  [ "Type" .= ("AWS::RDS::DBSecurityGroupIngress" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RDSDBSubnetGroupProperties x) =
-  [ "Type" .= ("AWS::RDS::DBSubnetGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RDSEventSubscriptionProperties x) =
-  [ "Type" .= ("AWS::RDS::EventSubscription" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RDSOptionGroupProperties x) =
-  [ "Type" .= ("AWS::RDS::OptionGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RedshiftClusterProperties x) =
-  [ "Type" .= ("AWS::Redshift::Cluster" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RedshiftClusterParameterGroupProperties x) =
-  [ "Type" .= ("AWS::Redshift::ClusterParameterGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RedshiftClusterSecurityGroupProperties x) =
-  [ "Type" .= ("AWS::Redshift::ClusterSecurityGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RedshiftClusterSecurityGroupIngressProperties x) =
-  [ "Type" .= ("AWS::Redshift::ClusterSecurityGroupIngress" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RedshiftClusterSubnetGroupProperties x) =
-  [ "Type" .= ("AWS::Redshift::ClusterSubnetGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RoboMakerFleetProperties x) =
-  [ "Type" .= ("AWS::RoboMaker::Fleet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RoboMakerRobotProperties x) =
-  [ "Type" .= ("AWS::RoboMaker::Robot" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RoboMakerRobotApplicationProperties x) =
-  [ "Type" .= ("AWS::RoboMaker::RobotApplication" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RoboMakerRobotApplicationVersionProperties x) =
-  [ "Type" .= ("AWS::RoboMaker::RobotApplicationVersion" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RoboMakerSimulationApplicationProperties x) =
-  [ "Type" .= ("AWS::RoboMaker::SimulationApplication" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (RoboMakerSimulationApplicationVersionProperties x) =
-  [ "Type" .= ("AWS::RoboMaker::SimulationApplicationVersion" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (Route53HealthCheckProperties x) =
-  [ "Type" .= ("AWS::Route53::HealthCheck" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (Route53HostedZoneProperties x) =
-  [ "Type" .= ("AWS::Route53::HostedZone" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (Route53RecordSetProperties x) =
-  [ "Type" .= ("AWS::Route53::RecordSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (Route53RecordSetGroupProperties x) =
-  [ "Type" .= ("AWS::Route53::RecordSetGroup" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (Route53ResolverResolverEndpointProperties x) =
-  [ "Type" .= ("AWS::Route53Resolver::ResolverEndpoint" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (Route53ResolverResolverRuleProperties x) =
-  [ "Type" .= ("AWS::Route53Resolver::ResolverRule" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (Route53ResolverResolverRuleAssociationProperties x) =
-  [ "Type" .= ("AWS::Route53Resolver::ResolverRuleAssociation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (S3BucketProperties x) =
-  [ "Type" .= ("AWS::S3::Bucket" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (S3BucketPolicyProperties x) =
-  [ "Type" .= ("AWS::S3::BucketPolicy" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SDBDomainProperties x) =
-  [ "Type" .= ("AWS::SDB::Domain" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SESConfigurationSetProperties x) =
-  [ "Type" .= ("AWS::SES::ConfigurationSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SESConfigurationSetEventDestinationProperties x) =
-  [ "Type" .= ("AWS::SES::ConfigurationSetEventDestination" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SESReceiptFilterProperties x) =
-  [ "Type" .= ("AWS::SES::ReceiptFilter" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SESReceiptRuleProperties x) =
-  [ "Type" .= ("AWS::SES::ReceiptRule" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SESReceiptRuleSetProperties x) =
-  [ "Type" .= ("AWS::SES::ReceiptRuleSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SESTemplateProperties x) =
-  [ "Type" .= ("AWS::SES::Template" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SNSSubscriptionProperties x) =
-  [ "Type" .= ("AWS::SNS::Subscription" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SNSTopicProperties x) =
-  [ "Type" .= ("AWS::SNS::Topic" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SNSTopicPolicyProperties x) =
-  [ "Type" .= ("AWS::SNS::TopicPolicy" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SQSQueueProperties x) =
-  [ "Type" .= ("AWS::SQS::Queue" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SQSQueuePolicyProperties x) =
-  [ "Type" .= ("AWS::SQS::QueuePolicy" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SSMAssociationProperties x) =
-  [ "Type" .= ("AWS::SSM::Association" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SSMDocumentProperties x) =
-  [ "Type" .= ("AWS::SSM::Document" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SSMMaintenanceWindowProperties x) =
-  [ "Type" .= ("AWS::SSM::MaintenanceWindow" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SSMMaintenanceWindowTaskProperties x) =
-  [ "Type" .= ("AWS::SSM::MaintenanceWindowTask" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SSMParameterProperties x) =
-  [ "Type" .= ("AWS::SSM::Parameter" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SSMPatchBaselineProperties x) =
-  [ "Type" .= ("AWS::SSM::PatchBaseline" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SSMResourceDataSyncProperties x) =
-  [ "Type" .= ("AWS::SSM::ResourceDataSync" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SageMakerEndpointProperties x) =
-  [ "Type" .= ("AWS::SageMaker::Endpoint" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SageMakerEndpointConfigProperties x) =
-  [ "Type" .= ("AWS::SageMaker::EndpointConfig" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SageMakerModelProperties x) =
-  [ "Type" .= ("AWS::SageMaker::Model" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SageMakerNotebookInstanceProperties x) =
-  [ "Type" .= ("AWS::SageMaker::NotebookInstance" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SageMakerNotebookInstanceLifecycleConfigProperties x) =
-  [ "Type" .= ("AWS::SageMaker::NotebookInstanceLifecycleConfig" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SecretsManagerResourcePolicyProperties x) =
-  [ "Type" .= ("AWS::SecretsManager::ResourcePolicy" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SecretsManagerRotationScheduleProperties x) =
-  [ "Type" .= ("AWS::SecretsManager::RotationSchedule" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SecretsManagerSecretProperties x) =
-  [ "Type" .= ("AWS::SecretsManager::Secret" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (SecretsManagerSecretTargetAttachmentProperties x) =
-  [ "Type" .= ("AWS::SecretsManager::SecretTargetAttachment" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceCatalogAcceptedPortfolioShareProperties x) =
-  [ "Type" .= ("AWS::ServiceCatalog::AcceptedPortfolioShare" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceCatalogCloudFormationProductProperties x) =
-  [ "Type" .= ("AWS::ServiceCatalog::CloudFormationProduct" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceCatalogCloudFormationProvisionedProductProperties x) =
-  [ "Type" .= ("AWS::ServiceCatalog::CloudFormationProvisionedProduct" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceCatalogLaunchNotificationConstraintProperties x) =
-  [ "Type" .= ("AWS::ServiceCatalog::LaunchNotificationConstraint" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceCatalogLaunchRoleConstraintProperties x) =
-  [ "Type" .= ("AWS::ServiceCatalog::LaunchRoleConstraint" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceCatalogLaunchTemplateConstraintProperties x) =
-  [ "Type" .= ("AWS::ServiceCatalog::LaunchTemplateConstraint" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceCatalogPortfolioProperties x) =
-  [ "Type" .= ("AWS::ServiceCatalog::Portfolio" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceCatalogPortfolioPrincipalAssociationProperties x) =
-  [ "Type" .= ("AWS::ServiceCatalog::PortfolioPrincipalAssociation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceCatalogPortfolioProductAssociationProperties x) =
-  [ "Type" .= ("AWS::ServiceCatalog::PortfolioProductAssociation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceCatalogPortfolioShareProperties x) =
-  [ "Type" .= ("AWS::ServiceCatalog::PortfolioShare" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceCatalogTagOptionProperties x) =
-  [ "Type" .= ("AWS::ServiceCatalog::TagOption" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceCatalogTagOptionAssociationProperties x) =
-  [ "Type" .= ("AWS::ServiceCatalog::TagOptionAssociation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceDiscoveryHttpNamespaceProperties x) =
-  [ "Type" .= ("AWS::ServiceDiscovery::HttpNamespace" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceDiscoveryInstanceProperties x) =
-  [ "Type" .= ("AWS::ServiceDiscovery::Instance" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceDiscoveryPrivateDnsNamespaceProperties x) =
-  [ "Type" .= ("AWS::ServiceDiscovery::PrivateDnsNamespace" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceDiscoveryPublicDnsNamespaceProperties x) =
-  [ "Type" .= ("AWS::ServiceDiscovery::PublicDnsNamespace" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ServiceDiscoveryServiceProperties x) =
-  [ "Type" .= ("AWS::ServiceDiscovery::Service" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (StepFunctionsActivityProperties x) =
-  [ "Type" .= ("AWS::StepFunctions::Activity" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (StepFunctionsStateMachineProperties x) =
-  [ "Type" .= ("AWS::StepFunctions::StateMachine" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFByteMatchSetProperties x) =
-  [ "Type" .= ("AWS::WAF::ByteMatchSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFIPSetProperties x) =
-  [ "Type" .= ("AWS::WAF::IPSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFRuleProperties x) =
-  [ "Type" .= ("AWS::WAF::Rule" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFSizeConstraintSetProperties x) =
-  [ "Type" .= ("AWS::WAF::SizeConstraintSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFSqlInjectionMatchSetProperties x) =
-  [ "Type" .= ("AWS::WAF::SqlInjectionMatchSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFWebACLProperties x) =
-  [ "Type" .= ("AWS::WAF::WebACL" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFXssMatchSetProperties x) =
-  [ "Type" .= ("AWS::WAF::XssMatchSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFRegionalByteMatchSetProperties x) =
-  [ "Type" .= ("AWS::WAFRegional::ByteMatchSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFRegionalIPSetProperties x) =
-  [ "Type" .= ("AWS::WAFRegional::IPSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFRegionalRuleProperties x) =
-  [ "Type" .= ("AWS::WAFRegional::Rule" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFRegionalSizeConstraintSetProperties x) =
-  [ "Type" .= ("AWS::WAFRegional::SizeConstraintSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFRegionalSqlInjectionMatchSetProperties x) =
-  [ "Type" .= ("AWS::WAFRegional::SqlInjectionMatchSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFRegionalWebACLProperties x) =
-  [ "Type" .= ("AWS::WAFRegional::WebACL" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFRegionalWebACLAssociationProperties x) =
-  [ "Type" .= ("AWS::WAFRegional::WebACLAssociation" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WAFRegionalXssMatchSetProperties x) =
-  [ "Type" .= ("AWS::WAFRegional::XssMatchSet" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (WorkSpacesWorkspaceProperties x) =
-  [ "Type" .= ("AWS::WorkSpaces::Workspace" :: String), "Properties" .= toJSON x]
-resourcePropertiesJSON (ASKSkillProperties x) =
-  [ "Type" .= ("Alexa::ASK::Skill" :: String), "Properties" .= toJSON x]
-
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeFamilies #-}
+
+-- | See:
+-- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resources-section-structure.html
+--
+-- The required Resources section declare the AWS resources that you want as
+-- part of your stack, such as an Amazon EC2 instance or an Amazon S3 bucket.
+-- You must declare each resource separately; however, you can specify multiple
+-- resources of the same type. If you declare multiple resources, separate them
+-- with commas.
+
+module Stratosphere.Resources
+  ( module X
+  , Resource (..)
+  , resource
+  , resourceName
+  , resourceProperties
+  , resourceDeletionPolicy
+  , resourceCreationPolicy
+  , resourceUpdatePolicy
+  , resourceDependsOn
+  , resourceMetadata
+  , resourceCondition
+  , ResourceProperties (..)
+  , DeletionPolicy (..)
+  , Resources (..)
+  ) where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Semigroup (Semigroup)
+import qualified Data.Text as T
+import GHC.Exts (IsList(..))
+import GHC.Generics (Generic)
+
+import Stratosphere.Resources.AmazonMQBroker as X
+import Stratosphere.Resources.AmazonMQConfiguration as X
+import Stratosphere.Resources.AmazonMQConfigurationAssociation as X
+import Stratosphere.Resources.ApiGatewayAccount as X
+import Stratosphere.Resources.ApiGatewayApiKey as X
+import Stratosphere.Resources.ApiGatewayAuthorizer as X
+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.ApiGatewayGatewayResponse 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
+import Stratosphere.Resources.ApiGatewayUsagePlan as X
+import Stratosphere.Resources.ApiGatewayUsagePlanKey as X
+import Stratosphere.Resources.ApiGatewayVpcLink as X
+import Stratosphere.Resources.ApiGatewayV2Api as X
+import Stratosphere.Resources.ApiGatewayV2Authorizer as X
+import Stratosphere.Resources.ApiGatewayV2Deployment as X
+import Stratosphere.Resources.ApiGatewayV2Integration as X
+import Stratosphere.Resources.ApiGatewayV2IntegrationResponse as X
+import Stratosphere.Resources.ApiGatewayV2Model as X
+import Stratosphere.Resources.ApiGatewayV2Route as X
+import Stratosphere.Resources.ApiGatewayV2RouteResponse as X
+import Stratosphere.Resources.ApiGatewayV2Stage as X
+import Stratosphere.Resources.AppStreamDirectoryConfig as X
+import Stratosphere.Resources.AppStreamFleet as X
+import Stratosphere.Resources.AppStreamImageBuilder as X
+import Stratosphere.Resources.AppStreamStack as X
+import Stratosphere.Resources.AppStreamStackFleetAssociation as X
+import Stratosphere.Resources.AppStreamStackUserAssociation as X
+import Stratosphere.Resources.AppStreamUser as X
+import Stratosphere.Resources.AppSyncApiKey as X
+import Stratosphere.Resources.AppSyncDataSource as X
+import Stratosphere.Resources.AppSyncFunctionConfiguration as X
+import Stratosphere.Resources.AppSyncGraphQLApi as X
+import Stratosphere.Resources.AppSyncGraphQLSchema as X
+import Stratosphere.Resources.AppSyncResolver as X
+import Stratosphere.Resources.ApplicationAutoScalingScalableTarget as X
+import Stratosphere.Resources.ApplicationAutoScalingScalingPolicy as X
+import Stratosphere.Resources.AthenaNamedQuery as X
+import Stratosphere.Resources.AutoScalingAutoScalingGroup as X
+import Stratosphere.Resources.AutoScalingLaunchConfiguration as X
+import Stratosphere.Resources.AutoScalingLifecycleHook as X
+import Stratosphere.Resources.AutoScalingScalingPolicy as X
+import Stratosphere.Resources.AutoScalingScheduledAction as X
+import Stratosphere.Resources.AutoScalingPlansScalingPlan as X
+import Stratosphere.Resources.BatchComputeEnvironment as X
+import Stratosphere.Resources.BatchJobDefinition as X
+import Stratosphere.Resources.BatchJobQueue as X
+import Stratosphere.Resources.BudgetsBudget as X
+import Stratosphere.Resources.CertificateManagerCertificate as X
+import Stratosphere.Resources.Cloud9EnvironmentEC2 as X
+import Stratosphere.Resources.CloudFormationCustomResource as X
+import Stratosphere.Resources.CloudFormationMacro as X
+import Stratosphere.Resources.CloudFormationStack as X
+import Stratosphere.Resources.CloudFormationWaitCondition as X
+import Stratosphere.Resources.CloudFormationWaitConditionHandle as X
+import Stratosphere.Resources.CloudFrontCloudFrontOriginAccessIdentity as X
+import Stratosphere.Resources.CloudFrontDistribution as X
+import Stratosphere.Resources.CloudFrontStreamingDistribution as X
+import Stratosphere.Resources.CloudTrailTrail as X
+import Stratosphere.Resources.CloudWatchAlarm as X
+import Stratosphere.Resources.CloudWatchDashboard as X
+import Stratosphere.Resources.CodeBuildProject as X
+import Stratosphere.Resources.CodeCommitRepository as X
+import Stratosphere.Resources.CodeDeployApplication as X
+import Stratosphere.Resources.CodeDeployDeploymentConfig as X
+import Stratosphere.Resources.CodeDeployDeploymentGroup as X
+import Stratosphere.Resources.CodePipelineCustomActionType as X
+import Stratosphere.Resources.CodePipelinePipeline as X
+import Stratosphere.Resources.CodePipelineWebhook as X
+import Stratosphere.Resources.CognitoIdentityPool as X
+import Stratosphere.Resources.CognitoIdentityPoolRoleAttachment as X
+import Stratosphere.Resources.CognitoUserPool as X
+import Stratosphere.Resources.CognitoUserPoolClient as X
+import Stratosphere.Resources.CognitoUserPoolGroup as X
+import Stratosphere.Resources.CognitoUserPoolUser as X
+import Stratosphere.Resources.CognitoUserPoolUserToGroupAttachment as X
+import Stratosphere.Resources.ConfigAggregationAuthorization as X
+import Stratosphere.Resources.ConfigConfigRule as X
+import Stratosphere.Resources.ConfigConfigurationAggregator as X
+import Stratosphere.Resources.ConfigConfigurationRecorder as X
+import Stratosphere.Resources.ConfigDeliveryChannel as X
+import Stratosphere.Resources.DAXCluster as X
+import Stratosphere.Resources.DAXParameterGroup as X
+import Stratosphere.Resources.DAXSubnetGroup as X
+import Stratosphere.Resources.DLMLifecyclePolicy as X
+import Stratosphere.Resources.DMSCertificate as X
+import Stratosphere.Resources.DMSEndpoint as X
+import Stratosphere.Resources.DMSEventSubscription as X
+import Stratosphere.Resources.DMSReplicationInstance as X
+import Stratosphere.Resources.DMSReplicationSubnetGroup as X
+import Stratosphere.Resources.DMSReplicationTask as X
+import Stratosphere.Resources.DataPipelinePipeline as X
+import Stratosphere.Resources.DirectoryServiceMicrosoftAD as X
+import Stratosphere.Resources.DirectoryServiceSimpleAD as X
+import Stratosphere.Resources.DocDBDBCluster as X
+import Stratosphere.Resources.DocDBDBClusterParameterGroup as X
+import Stratosphere.Resources.DocDBDBInstance as X
+import Stratosphere.Resources.DocDBDBSubnetGroup as X
+import Stratosphere.Resources.DynamoDBTable as X
+import Stratosphere.Resources.EC2CustomerGateway as X
+import Stratosphere.Resources.EC2DHCPOptions as X
+import Stratosphere.Resources.EC2EC2Fleet as X
+import Stratosphere.Resources.EC2EIP as X
+import Stratosphere.Resources.EC2EIPAssociation as X
+import Stratosphere.Resources.EC2EgressOnlyInternetGateway as X
+import Stratosphere.Resources.EC2FlowLog as X
+import Stratosphere.Resources.EC2Host as X
+import Stratosphere.Resources.EC2Instance as X
+import Stratosphere.Resources.EC2InternetGateway as X
+import Stratosphere.Resources.EC2LaunchTemplate as X
+import Stratosphere.Resources.EC2NatGateway as X
+import Stratosphere.Resources.EC2NetworkAcl as X
+import Stratosphere.Resources.EC2NetworkAclEntry as X
+import Stratosphere.Resources.EC2NetworkInterface as X
+import Stratosphere.Resources.EC2NetworkInterfaceAttachment as X
+import Stratosphere.Resources.EC2NetworkInterfacePermission as X
+import Stratosphere.Resources.EC2PlacementGroup as X
+import Stratosphere.Resources.EC2Route as X
+import Stratosphere.Resources.EC2RouteTable as X
+import Stratosphere.Resources.EC2SecurityGroup as X
+import Stratosphere.Resources.EC2SecurityGroupEgress as X
+import Stratosphere.Resources.EC2SecurityGroupIngress as X
+import Stratosphere.Resources.EC2SpotFleet as X
+import Stratosphere.Resources.EC2Subnet as X
+import Stratosphere.Resources.EC2SubnetCidrBlock as X
+import Stratosphere.Resources.EC2SubnetNetworkAclAssociation as X
+import Stratosphere.Resources.EC2SubnetRouteTableAssociation as X
+import Stratosphere.Resources.EC2TransitGateway as X
+import Stratosphere.Resources.EC2TransitGatewayAttachment as X
+import Stratosphere.Resources.EC2TransitGatewayRoute as X
+import Stratosphere.Resources.EC2TransitGatewayRouteTable as X
+import Stratosphere.Resources.EC2TransitGatewayRouteTableAssociation as X
+import Stratosphere.Resources.EC2TransitGatewayRouteTablePropagation as X
+import Stratosphere.Resources.EC2TrunkInterfaceAssociation as X
+import Stratosphere.Resources.EC2VPC as X
+import Stratosphere.Resources.EC2VPCCidrBlock as X
+import Stratosphere.Resources.EC2VPCDHCPOptionsAssociation as X
+import Stratosphere.Resources.EC2VPCEndpoint as X
+import Stratosphere.Resources.EC2VPCEndpointConnectionNotification as X
+import Stratosphere.Resources.EC2VPCEndpointServicePermissions as X
+import Stratosphere.Resources.EC2VPCGatewayAttachment as X
+import Stratosphere.Resources.EC2VPCPeeringConnection as X
+import Stratosphere.Resources.EC2VPNConnection as X
+import Stratosphere.Resources.EC2VPNConnectionRoute as X
+import Stratosphere.Resources.EC2VPNGateway as X
+import Stratosphere.Resources.EC2VPNGatewayRoutePropagation as X
+import Stratosphere.Resources.EC2Volume as X
+import Stratosphere.Resources.EC2VolumeAttachment as X
+import Stratosphere.Resources.ECRRepository as X
+import Stratosphere.Resources.ECSCluster as X
+import Stratosphere.Resources.ECSService as X
+import Stratosphere.Resources.ECSTaskDefinition as X
+import Stratosphere.Resources.EFSFileSystem as X
+import Stratosphere.Resources.EFSMountTarget as X
+import Stratosphere.Resources.EKSCluster as X
+import Stratosphere.Resources.EMRCluster as X
+import Stratosphere.Resources.EMRInstanceFleetConfig as X
+import Stratosphere.Resources.EMRInstanceGroupConfig as X
+import Stratosphere.Resources.EMRSecurityConfiguration as X
+import Stratosphere.Resources.EMRStep as X
+import Stratosphere.Resources.ElastiCacheCacheCluster as X
+import Stratosphere.Resources.ElastiCacheParameterGroup as X
+import Stratosphere.Resources.ElastiCacheReplicationGroup as X
+import Stratosphere.Resources.ElastiCacheSecurityGroup as X
+import Stratosphere.Resources.ElastiCacheSecurityGroupIngress as X
+import Stratosphere.Resources.ElastiCacheSubnetGroup as X
+import Stratosphere.Resources.ElasticBeanstalkApplication as X
+import Stratosphere.Resources.ElasticBeanstalkApplicationVersion as X
+import Stratosphere.Resources.ElasticBeanstalkConfigurationTemplate as X
+import Stratosphere.Resources.ElasticBeanstalkEnvironment as X
+import Stratosphere.Resources.ElasticLoadBalancingLoadBalancer as X
+import Stratosphere.Resources.ElasticLoadBalancingV2Listener as X
+import Stratosphere.Resources.ElasticLoadBalancingV2ListenerCertificateResource as X
+import Stratosphere.Resources.ElasticLoadBalancingV2ListenerRule as X
+import Stratosphere.Resources.ElasticLoadBalancingV2LoadBalancer as X
+import Stratosphere.Resources.ElasticLoadBalancingV2TargetGroup as X
+import Stratosphere.Resources.ElasticsearchDomain as X
+import Stratosphere.Resources.EventsEventBusPolicy as X
+import Stratosphere.Resources.EventsRule as X
+import Stratosphere.Resources.FSxFileSystem as X
+import Stratosphere.Resources.GameLiftAlias as X
+import Stratosphere.Resources.GameLiftBuild as X
+import Stratosphere.Resources.GameLiftFleet as X
+import Stratosphere.Resources.GlueClassifier as X
+import Stratosphere.Resources.GlueConnection as X
+import Stratosphere.Resources.GlueCrawler as X
+import Stratosphere.Resources.GlueDatabase as X
+import Stratosphere.Resources.GlueDevEndpoint as X
+import Stratosphere.Resources.GlueJob as X
+import Stratosphere.Resources.GluePartition as X
+import Stratosphere.Resources.GlueTable as X
+import Stratosphere.Resources.GlueTrigger as X
+import Stratosphere.Resources.GuardDutyDetector as X
+import Stratosphere.Resources.GuardDutyFilter as X
+import Stratosphere.Resources.GuardDutyIPSet as X
+import Stratosphere.Resources.GuardDutyMaster as X
+import Stratosphere.Resources.GuardDutyMember as X
+import Stratosphere.Resources.GuardDutyThreatIntelSet as X
+import Stratosphere.Resources.IAMAccessKey as X
+import Stratosphere.Resources.IAMGroup as X
+import Stratosphere.Resources.IAMInstanceProfile as X
+import Stratosphere.Resources.IAMManagedPolicy as X
+import Stratosphere.Resources.IAMPolicy as X
+import Stratosphere.Resources.IAMRole as X
+import Stratosphere.Resources.IAMServiceLinkedRole as X
+import Stratosphere.Resources.IAMUser as X
+import Stratosphere.Resources.IAMUserToGroupAddition as X
+import Stratosphere.Resources.InspectorAssessmentTarget as X
+import Stratosphere.Resources.InspectorAssessmentTemplate as X
+import Stratosphere.Resources.InspectorResourceGroup as X
+import Stratosphere.Resources.IoT1ClickDevice as X
+import Stratosphere.Resources.IoT1ClickPlacement as X
+import Stratosphere.Resources.IoT1ClickProject as X
+import Stratosphere.Resources.IoTCertificate as X
+import Stratosphere.Resources.IoTPolicy as X
+import Stratosphere.Resources.IoTPolicyPrincipalAttachment as X
+import Stratosphere.Resources.IoTThing as X
+import Stratosphere.Resources.IoTThingPrincipalAttachment as X
+import Stratosphere.Resources.IoTTopicRule as X
+import Stratosphere.Resources.IoTAnalyticsChannel as X
+import Stratosphere.Resources.IoTAnalyticsDataset as X
+import Stratosphere.Resources.IoTAnalyticsDatastore as X
+import Stratosphere.Resources.IoTAnalyticsPipeline as X
+import Stratosphere.Resources.KMSAlias as X
+import Stratosphere.Resources.KMSKey as X
+import Stratosphere.Resources.KinesisStream as X
+import Stratosphere.Resources.KinesisStreamConsumer as X
+import Stratosphere.Resources.KinesisAnalyticsApplication as X
+import Stratosphere.Resources.KinesisAnalyticsApplicationOutput as X
+import Stratosphere.Resources.KinesisAnalyticsApplicationReferenceDataSource as X
+import Stratosphere.Resources.KinesisAnalyticsV2Application as X
+import Stratosphere.Resources.KinesisAnalyticsV2ApplicationCloudWatchLoggingOption as X
+import Stratosphere.Resources.KinesisAnalyticsV2ApplicationOutput as X
+import Stratosphere.Resources.KinesisAnalyticsV2ApplicationReferenceDataSource as X
+import Stratosphere.Resources.KinesisFirehoseDeliveryStream as X
+import Stratosphere.Resources.LambdaAlias as X
+import Stratosphere.Resources.LambdaEventSourceMapping as X
+import Stratosphere.Resources.LambdaFunction as X
+import Stratosphere.Resources.LambdaLayerVersion as X
+import Stratosphere.Resources.LambdaLayerVersionPermission as X
+import Stratosphere.Resources.LambdaPermission as X
+import Stratosphere.Resources.LambdaVersion as X
+import Stratosphere.Resources.LogsDestination as X
+import Stratosphere.Resources.LogsLogGroup as X
+import Stratosphere.Resources.LogsLogStream as X
+import Stratosphere.Resources.LogsMetricFilter as X
+import Stratosphere.Resources.LogsSubscriptionFilter as X
+import Stratosphere.Resources.NeptuneDBCluster as X
+import Stratosphere.Resources.NeptuneDBClusterParameterGroup as X
+import Stratosphere.Resources.NeptuneDBInstance as X
+import Stratosphere.Resources.NeptuneDBParameterGroup as X
+import Stratosphere.Resources.NeptuneDBSubnetGroup as X
+import Stratosphere.Resources.OpsWorksApp as X
+import Stratosphere.Resources.OpsWorksElasticLoadBalancerAttachment as X
+import Stratosphere.Resources.OpsWorksInstance as X
+import Stratosphere.Resources.OpsWorksLayer as X
+import Stratosphere.Resources.OpsWorksStack as X
+import Stratosphere.Resources.OpsWorksUserProfile as X
+import Stratosphere.Resources.OpsWorksVolume as X
+import Stratosphere.Resources.OpsWorksCMServer as X
+import Stratosphere.Resources.RAMResourceShare as X
+import Stratosphere.Resources.RDSDBCluster as X
+import Stratosphere.Resources.RDSDBClusterParameterGroup as X
+import Stratosphere.Resources.RDSDBInstance as X
+import Stratosphere.Resources.RDSDBParameterGroup as X
+import Stratosphere.Resources.RDSDBSecurityGroup as X
+import Stratosphere.Resources.RDSDBSecurityGroupIngress as X
+import Stratosphere.Resources.RDSDBSubnetGroup as X
+import Stratosphere.Resources.RDSEventSubscription as X
+import Stratosphere.Resources.RDSOptionGroup as X
+import Stratosphere.Resources.RedshiftCluster as X
+import Stratosphere.Resources.RedshiftClusterParameterGroup as X
+import Stratosphere.Resources.RedshiftClusterSecurityGroup as X
+import Stratosphere.Resources.RedshiftClusterSecurityGroupIngress as X
+import Stratosphere.Resources.RedshiftClusterSubnetGroup as X
+import Stratosphere.Resources.RoboMakerFleet as X
+import Stratosphere.Resources.RoboMakerRobot as X
+import Stratosphere.Resources.RoboMakerRobotApplication as X
+import Stratosphere.Resources.RoboMakerRobotApplicationVersion as X
+import Stratosphere.Resources.RoboMakerSimulationApplication as X
+import Stratosphere.Resources.RoboMakerSimulationApplicationVersion as X
+import Stratosphere.Resources.Route53HealthCheck as X
+import Stratosphere.Resources.Route53HostedZone as X
+import Stratosphere.Resources.Route53RecordSet as X
+import Stratosphere.Resources.Route53RecordSetGroup as X
+import Stratosphere.Resources.Route53ResolverResolverEndpoint as X
+import Stratosphere.Resources.Route53ResolverResolverRule as X
+import Stratosphere.Resources.Route53ResolverResolverRuleAssociation as X
+import Stratosphere.Resources.S3Bucket as X
+import Stratosphere.Resources.S3BucketPolicy as X
+import Stratosphere.Resources.SDBDomain as X
+import Stratosphere.Resources.SESConfigurationSet as X
+import Stratosphere.Resources.SESConfigurationSetEventDestination as X
+import Stratosphere.Resources.SESReceiptFilter as X
+import Stratosphere.Resources.SESReceiptRule as X
+import Stratosphere.Resources.SESReceiptRuleSet as X
+import Stratosphere.Resources.SESTemplate as X
+import Stratosphere.Resources.SNSSubscription as X
+import Stratosphere.Resources.SNSTopic as X
+import Stratosphere.Resources.SNSTopicPolicy as X
+import Stratosphere.Resources.SQSQueue as X
+import Stratosphere.Resources.SQSQueuePolicy as X
+import Stratosphere.Resources.SSMAssociation as X
+import Stratosphere.Resources.SSMDocument as X
+import Stratosphere.Resources.SSMMaintenanceWindow as X
+import Stratosphere.Resources.SSMMaintenanceWindowTask as X
+import Stratosphere.Resources.SSMParameter as X
+import Stratosphere.Resources.SSMPatchBaseline as X
+import Stratosphere.Resources.SSMResourceDataSync as X
+import Stratosphere.Resources.SageMakerEndpoint as X
+import Stratosphere.Resources.SageMakerEndpointConfig as X
+import Stratosphere.Resources.SageMakerModel as X
+import Stratosphere.Resources.SageMakerNotebookInstance as X
+import Stratosphere.Resources.SageMakerNotebookInstanceLifecycleConfig as X
+import Stratosphere.Resources.SecretsManagerResourcePolicy as X
+import Stratosphere.Resources.SecretsManagerRotationSchedule as X
+import Stratosphere.Resources.SecretsManagerSecret as X
+import Stratosphere.Resources.SecretsManagerSecretTargetAttachment as X
+import Stratosphere.Resources.ServiceCatalogAcceptedPortfolioShare as X
+import Stratosphere.Resources.ServiceCatalogCloudFormationProduct as X
+import Stratosphere.Resources.ServiceCatalogCloudFormationProvisionedProduct as X
+import Stratosphere.Resources.ServiceCatalogLaunchNotificationConstraint as X
+import Stratosphere.Resources.ServiceCatalogLaunchRoleConstraint as X
+import Stratosphere.Resources.ServiceCatalogLaunchTemplateConstraint as X
+import Stratosphere.Resources.ServiceCatalogPortfolio as X
+import Stratosphere.Resources.ServiceCatalogPortfolioPrincipalAssociation as X
+import Stratosphere.Resources.ServiceCatalogPortfolioProductAssociation as X
+import Stratosphere.Resources.ServiceCatalogPortfolioShare as X
+import Stratosphere.Resources.ServiceCatalogTagOption as X
+import Stratosphere.Resources.ServiceCatalogTagOptionAssociation as X
+import Stratosphere.Resources.ServiceDiscoveryHttpNamespace as X
+import Stratosphere.Resources.ServiceDiscoveryInstance as X
+import Stratosphere.Resources.ServiceDiscoveryPrivateDnsNamespace as X
+import Stratosphere.Resources.ServiceDiscoveryPublicDnsNamespace as X
+import Stratosphere.Resources.ServiceDiscoveryService as X
+import Stratosphere.Resources.StepFunctionsActivity as X
+import Stratosphere.Resources.StepFunctionsStateMachine as X
+import Stratosphere.Resources.WAFByteMatchSet as X
+import Stratosphere.Resources.WAFIPSet as X
+import Stratosphere.Resources.WAFRule as X
+import Stratosphere.Resources.WAFSizeConstraintSet as X
+import Stratosphere.Resources.WAFSqlInjectionMatchSet as X
+import Stratosphere.Resources.WAFWebACL as X
+import Stratosphere.Resources.WAFXssMatchSet as X
+import Stratosphere.Resources.WAFRegionalByteMatchSet as X
+import Stratosphere.Resources.WAFRegionalIPSet as X
+import Stratosphere.Resources.WAFRegionalRule as X
+import Stratosphere.Resources.WAFRegionalSizeConstraintSet as X
+import Stratosphere.Resources.WAFRegionalSqlInjectionMatchSet as X
+import Stratosphere.Resources.WAFRegionalWebACL as X
+import Stratosphere.Resources.WAFRegionalWebACLAssociation as X
+import Stratosphere.Resources.WAFRegionalXssMatchSet as X
+import Stratosphere.Resources.WorkSpacesWorkspace as X
+import Stratosphere.Resources.ASKSkill as X
+import Stratosphere.ResourceProperties.AmazonMQBrokerConfigurationId as X
+import Stratosphere.ResourceProperties.AmazonMQBrokerLogList as X
+import Stratosphere.ResourceProperties.AmazonMQBrokerMaintenanceWindow as X
+import Stratosphere.ResourceProperties.AmazonMQBrokerTagsEntry as X
+import Stratosphere.ResourceProperties.AmazonMQBrokerUser as X
+import Stratosphere.ResourceProperties.AmazonMQConfigurationTagsEntry as X
+import Stratosphere.ResourceProperties.AmazonMQConfigurationAssociationConfigurationId as X
+import Stratosphere.ResourceProperties.ApiGatewayApiKeyStageKey as X
+import Stratosphere.ResourceProperties.ApiGatewayDeploymentAccessLogSetting as X
+import Stratosphere.ResourceProperties.ApiGatewayDeploymentCanarySetting as X
+import Stratosphere.ResourceProperties.ApiGatewayDeploymentDeploymentCanarySettings as X
+import Stratosphere.ResourceProperties.ApiGatewayDeploymentMethodSetting as X
+import Stratosphere.ResourceProperties.ApiGatewayDeploymentStageDescription as X
+import Stratosphere.ResourceProperties.ApiGatewayDocumentationPartLocation as X
+import Stratosphere.ResourceProperties.ApiGatewayDomainNameEndpointConfiguration as X
+import Stratosphere.ResourceProperties.ApiGatewayMethodIntegration as X
+import Stratosphere.ResourceProperties.ApiGatewayMethodIntegrationResponse as X
+import Stratosphere.ResourceProperties.ApiGatewayMethodMethodResponse as X
+import Stratosphere.ResourceProperties.ApiGatewayRestApiEndpointConfiguration as X
+import Stratosphere.ResourceProperties.ApiGatewayRestApiS3Location as X
+import Stratosphere.ResourceProperties.ApiGatewayStageAccessLogSetting as X
+import Stratosphere.ResourceProperties.ApiGatewayStageCanarySetting as X
+import Stratosphere.ResourceProperties.ApiGatewayStageMethodSetting as X
+import Stratosphere.ResourceProperties.ApiGatewayUsagePlanApiStage as X
+import Stratosphere.ResourceProperties.ApiGatewayUsagePlanQuotaSettings as X
+import Stratosphere.ResourceProperties.ApiGatewayUsagePlanThrottleSettings as X
+import Stratosphere.ResourceProperties.ApiGatewayV2RouteParameterConstraints as X
+import Stratosphere.ResourceProperties.ApiGatewayV2RouteResponseParameterConstraints as X
+import Stratosphere.ResourceProperties.ApiGatewayV2StageAccessLogSettings as X
+import Stratosphere.ResourceProperties.ApiGatewayV2StageRouteSettings as X
+import Stratosphere.ResourceProperties.AppStreamDirectoryConfigServiceAccountCredentials as X
+import Stratosphere.ResourceProperties.AppStreamFleetComputeCapacity as X
+import Stratosphere.ResourceProperties.AppStreamFleetDomainJoinInfo as X
+import Stratosphere.ResourceProperties.AppStreamFleetVpcConfig as X
+import Stratosphere.ResourceProperties.AppStreamImageBuilderDomainJoinInfo as X
+import Stratosphere.ResourceProperties.AppStreamImageBuilderVpcConfig as X
+import Stratosphere.ResourceProperties.AppStreamStackApplicationSettings as X
+import Stratosphere.ResourceProperties.AppStreamStackStorageConnector as X
+import Stratosphere.ResourceProperties.AppStreamStackUserSetting as X
+import Stratosphere.ResourceProperties.AppSyncDataSourceAuthorizationConfig as X
+import Stratosphere.ResourceProperties.AppSyncDataSourceAwsIamConfig as X
+import Stratosphere.ResourceProperties.AppSyncDataSourceDynamoDBConfig as X
+import Stratosphere.ResourceProperties.AppSyncDataSourceElasticsearchConfig as X
+import Stratosphere.ResourceProperties.AppSyncDataSourceHttpConfig as X
+import Stratosphere.ResourceProperties.AppSyncDataSourceLambdaConfig as X
+import Stratosphere.ResourceProperties.AppSyncDataSourceRdsHttpEndpointConfig as X
+import Stratosphere.ResourceProperties.AppSyncDataSourceRelationalDatabaseConfig as X
+import Stratosphere.ResourceProperties.AppSyncGraphQLApiLogConfig as X
+import Stratosphere.ResourceProperties.AppSyncGraphQLApiOpenIDConnectConfig as X
+import Stratosphere.ResourceProperties.AppSyncGraphQLApiUserPoolConfig as X
+import Stratosphere.ResourceProperties.AppSyncResolverPipelineConfig as X
+import Stratosphere.ResourceProperties.ApplicationAutoScalingScalableTargetScalableTargetAction as X
+import Stratosphere.ResourceProperties.ApplicationAutoScalingScalableTargetScheduledAction as X
+import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification as X
+import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyMetricDimension as X
+import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification as X
+import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyStepAdjustment as X
+import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration as X
+import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration as X
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupInstancesDistribution as X
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplate as X
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplateOverrides as X
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplateSpecification as X
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLifecycleHookSpecification as X
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMetricsCollection as X
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMixedInstancesPolicy as X
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupNotificationConfiguration as X
+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.AutoScalingPlansScalingPlanApplicationSource as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanCustomizedLoadMetricSpecification as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanMetricDimension as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanPredefinedLoadMetricSpecification as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanScalingInstruction as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTagFilter as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTargetTrackingConfiguration as X
+import Stratosphere.ResourceProperties.BatchComputeEnvironmentComputeResources as X
+import Stratosphere.ResourceProperties.BatchComputeEnvironmentLaunchTemplateSpecification as X
+import Stratosphere.ResourceProperties.BatchJobDefinitionContainerProperties as X
+import Stratosphere.ResourceProperties.BatchJobDefinitionEnvironment as X
+import Stratosphere.ResourceProperties.BatchJobDefinitionMountPoints as X
+import Stratosphere.ResourceProperties.BatchJobDefinitionNodeProperties as X
+import Stratosphere.ResourceProperties.BatchJobDefinitionNodeRangeProperty as X
+import Stratosphere.ResourceProperties.BatchJobDefinitionRetryStrategy as X
+import Stratosphere.ResourceProperties.BatchJobDefinitionTimeout as X
+import Stratosphere.ResourceProperties.BatchJobDefinitionUlimit as X
+import Stratosphere.ResourceProperties.BatchJobDefinitionVolumes as X
+import Stratosphere.ResourceProperties.BatchJobDefinitionVolumesHost as X
+import Stratosphere.ResourceProperties.BatchJobQueueComputeEnvironmentOrder as X
+import Stratosphere.ResourceProperties.BudgetsBudgetBudgetData as X
+import Stratosphere.ResourceProperties.BudgetsBudgetCostTypes as X
+import Stratosphere.ResourceProperties.BudgetsBudgetNotification as X
+import Stratosphere.ResourceProperties.BudgetsBudgetNotificationWithSubscribers as X
+import Stratosphere.ResourceProperties.BudgetsBudgetSpend as X
+import Stratosphere.ResourceProperties.BudgetsBudgetSubscriber as X
+import Stratosphere.ResourceProperties.BudgetsBudgetTimePeriod as X
+import Stratosphere.ResourceProperties.CertificateManagerCertificateDomainValidationOption as X
+import Stratosphere.ResourceProperties.Cloud9EnvironmentEC2Repository as X
+import Stratosphere.ResourceProperties.CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionCacheBehavior as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionCookies as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionCustomErrorResponse as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionCustomOriginConfig as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionDefaultCacheBehavior as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionDistributionConfig as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionForwardedValues as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionGeoRestriction as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionLambdaFunctionAssociation as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionLogging as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionOrigin as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionOriginCustomHeader as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionRestrictions as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionS3OriginConfig as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionViewerCertificate as X
+import Stratosphere.ResourceProperties.CloudFrontStreamingDistributionLogging as X
+import Stratosphere.ResourceProperties.CloudFrontStreamingDistributionS3Origin as X
+import Stratosphere.ResourceProperties.CloudFrontStreamingDistributionStreamingDistributionConfig as X
+import Stratosphere.ResourceProperties.CloudFrontStreamingDistributionTrustedSigners as X
+import Stratosphere.ResourceProperties.CloudTrailTrailDataResource as X
+import Stratosphere.ResourceProperties.CloudTrailTrailEventSelector as X
+import Stratosphere.ResourceProperties.CloudWatchAlarmDimension as X
+import Stratosphere.ResourceProperties.CloudWatchAlarmMetric as X
+import Stratosphere.ResourceProperties.CloudWatchAlarmMetricDataQuery as X
+import Stratosphere.ResourceProperties.CloudWatchAlarmMetricStat as X
+import Stratosphere.ResourceProperties.CodeBuildProjectArtifacts as X
+import Stratosphere.ResourceProperties.CodeBuildProjectCloudWatchLogsConfig as X
+import Stratosphere.ResourceProperties.CodeBuildProjectEnvironment as X
+import Stratosphere.ResourceProperties.CodeBuildProjectEnvironmentVariable as X
+import Stratosphere.ResourceProperties.CodeBuildProjectLogsConfig as X
+import Stratosphere.ResourceProperties.CodeBuildProjectProjectCache as X
+import Stratosphere.ResourceProperties.CodeBuildProjectProjectTriggers as X
+import Stratosphere.ResourceProperties.CodeBuildProjectRegistryCredential as X
+import Stratosphere.ResourceProperties.CodeBuildProjectS3LogsConfig as X
+import Stratosphere.ResourceProperties.CodeBuildProjectSource as X
+import Stratosphere.ResourceProperties.CodeBuildProjectSourceAuth as X
+import Stratosphere.ResourceProperties.CodeBuildProjectVpcConfig as X
+import Stratosphere.ResourceProperties.CodeBuildProjectWebhookFilter as X
+import Stratosphere.ResourceProperties.CodeCommitRepositoryRepositoryTrigger as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentConfigMinimumHealthyHosts as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupAlarm as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupAlarmConfiguration as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupAutoRollbackConfiguration as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupDeployment as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupDeploymentStyle as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupEC2TagFilter as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupEC2TagSet as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupEC2TagSetListObject as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupELBInfo as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupGitHubLocation as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupLoadBalancerInfo as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupOnPremisesTagSet as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupOnPremisesTagSetListObject as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupRevisionLocation as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupS3Location as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupTagFilter as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupTargetGroupInfo as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupTriggerConfig as X
+import Stratosphere.ResourceProperties.CodePipelineCustomActionTypeArtifactDetails as X
+import Stratosphere.ResourceProperties.CodePipelineCustomActionTypeConfigurationProperties as X
+import Stratosphere.ResourceProperties.CodePipelineCustomActionTypeSettings as X
+import Stratosphere.ResourceProperties.CodePipelinePipelineActionDeclaration as X
+import Stratosphere.ResourceProperties.CodePipelinePipelineActionTypeId as X
+import Stratosphere.ResourceProperties.CodePipelinePipelineArtifactStore as X
+import Stratosphere.ResourceProperties.CodePipelinePipelineArtifactStoreMap as X
+import Stratosphere.ResourceProperties.CodePipelinePipelineBlockerDeclaration as X
+import Stratosphere.ResourceProperties.CodePipelinePipelineEncryptionKey as X
+import Stratosphere.ResourceProperties.CodePipelinePipelineInputArtifact as X
+import Stratosphere.ResourceProperties.CodePipelinePipelineOutputArtifact as X
+import Stratosphere.ResourceProperties.CodePipelinePipelineStageDeclaration as X
+import Stratosphere.ResourceProperties.CodePipelinePipelineStageTransition as X
+import Stratosphere.ResourceProperties.CodePipelineWebhookWebhookAuthConfiguration as X
+import Stratosphere.ResourceProperties.CodePipelineWebhookWebhookFilterRule as X
+import Stratosphere.ResourceProperties.CognitoIdentityPoolCognitoIdentityProvider as X
+import Stratosphere.ResourceProperties.CognitoIdentityPoolCognitoStreams as X
+import Stratosphere.ResourceProperties.CognitoIdentityPoolPushSync as X
+import Stratosphere.ResourceProperties.CognitoIdentityPoolRoleAttachmentMappingRule as X
+import Stratosphere.ResourceProperties.CognitoIdentityPoolRoleAttachmentRoleMapping as X
+import Stratosphere.ResourceProperties.CognitoIdentityPoolRoleAttachmentRulesConfigurationType as X
+import Stratosphere.ResourceProperties.CognitoUserPoolAdminCreateUserConfig as X
+import Stratosphere.ResourceProperties.CognitoUserPoolDeviceConfiguration as X
+import Stratosphere.ResourceProperties.CognitoUserPoolEmailConfiguration as X
+import Stratosphere.ResourceProperties.CognitoUserPoolInviteMessageTemplate as X
+import Stratosphere.ResourceProperties.CognitoUserPoolLambdaConfig as X
+import Stratosphere.ResourceProperties.CognitoUserPoolNumberAttributeConstraints as X
+import Stratosphere.ResourceProperties.CognitoUserPoolPasswordPolicy as X
+import Stratosphere.ResourceProperties.CognitoUserPoolPolicies as X
+import Stratosphere.ResourceProperties.CognitoUserPoolSchemaAttribute as X
+import Stratosphere.ResourceProperties.CognitoUserPoolSmsConfiguration as X
+import Stratosphere.ResourceProperties.CognitoUserPoolStringAttributeConstraints as X
+import Stratosphere.ResourceProperties.CognitoUserPoolUserAttributeType as X
+import Stratosphere.ResourceProperties.ConfigConfigRuleScope as X
+import Stratosphere.ResourceProperties.ConfigConfigRuleSource as X
+import Stratosphere.ResourceProperties.ConfigConfigRuleSourceDetail as X
+import Stratosphere.ResourceProperties.ConfigConfigurationAggregatorAccountAggregationSource as X
+import Stratosphere.ResourceProperties.ConfigConfigurationAggregatorOrganizationAggregationSource as X
+import Stratosphere.ResourceProperties.ConfigConfigurationRecorderRecordingGroup as X
+import Stratosphere.ResourceProperties.ConfigDeliveryChannelConfigSnapshotDeliveryProperties as X
+import Stratosphere.ResourceProperties.DAXClusterSSESpecification as X
+import Stratosphere.ResourceProperties.DLMLifecyclePolicyCreateRule as X
+import Stratosphere.ResourceProperties.DLMLifecyclePolicyPolicyDetails as X
+import Stratosphere.ResourceProperties.DLMLifecyclePolicyRetainRule as X
+import Stratosphere.ResourceProperties.DLMLifecyclePolicySchedule as X
+import Stratosphere.ResourceProperties.DMSEndpointDynamoDbSettings as X
+import Stratosphere.ResourceProperties.DMSEndpointElasticsearchSettings as X
+import Stratosphere.ResourceProperties.DMSEndpointKinesisSettings as X
+import Stratosphere.ResourceProperties.DMSEndpointMongoDbSettings as X
+import Stratosphere.ResourceProperties.DMSEndpointS3Settings as X
+import Stratosphere.ResourceProperties.DataPipelinePipelineField as X
+import Stratosphere.ResourceProperties.DataPipelinePipelineParameterAttribute as X
+import Stratosphere.ResourceProperties.DataPipelinePipelineParameterObject as X
+import Stratosphere.ResourceProperties.DataPipelinePipelineParameterValue as X
+import Stratosphere.ResourceProperties.DataPipelinePipelinePipelineObject as X
+import Stratosphere.ResourceProperties.DataPipelinePipelinePipelineTag as X
+import Stratosphere.ResourceProperties.DirectoryServiceMicrosoftADVpcSettings as X
+import Stratosphere.ResourceProperties.DirectoryServiceSimpleADVpcSettings as X
+import Stratosphere.ResourceProperties.DynamoDBTableAttributeDefinition as X
+import Stratosphere.ResourceProperties.DynamoDBTableGlobalSecondaryIndex as X
+import Stratosphere.ResourceProperties.DynamoDBTableKeySchema as X
+import Stratosphere.ResourceProperties.DynamoDBTableLocalSecondaryIndex as X
+import Stratosphere.ResourceProperties.DynamoDBTablePointInTimeRecoverySpecification as X
+import Stratosphere.ResourceProperties.DynamoDBTableProjection as X
+import Stratosphere.ResourceProperties.DynamoDBTableProvisionedThroughput as X
+import Stratosphere.ResourceProperties.DynamoDBTableSSESpecification as X
+import Stratosphere.ResourceProperties.DynamoDBTableStreamSpecification as X
+import Stratosphere.ResourceProperties.DynamoDBTableTimeToLiveSpecification as X
+import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateConfigRequest as X
+import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateOverridesRequest as X
+import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateSpecificationRequest as X
+import Stratosphere.ResourceProperties.EC2EC2FleetOnDemandOptionsRequest as X
+import Stratosphere.ResourceProperties.EC2EC2FleetSpotOptionsRequest as X
+import Stratosphere.ResourceProperties.EC2EC2FleetTagRequest as X
+import Stratosphere.ResourceProperties.EC2EC2FleetTagSpecification as X
+import Stratosphere.ResourceProperties.EC2EC2FleetTargetCapacitySpecificationRequest as X
+import Stratosphere.ResourceProperties.EC2InstanceAssociationParameter as X
+import Stratosphere.ResourceProperties.EC2InstanceBlockDeviceMapping as X
+import Stratosphere.ResourceProperties.EC2InstanceCreditSpecification as X
+import Stratosphere.ResourceProperties.EC2InstanceEbs as X
+import Stratosphere.ResourceProperties.EC2InstanceElasticGpuSpecification as X
+import Stratosphere.ResourceProperties.EC2InstanceElasticInferenceAccelerator as X
+import Stratosphere.ResourceProperties.EC2InstanceInstanceIpv6Address as X
+import Stratosphere.ResourceProperties.EC2InstanceLaunchTemplateSpecification as X
+import Stratosphere.ResourceProperties.EC2InstanceLicenseSpecification as X
+import Stratosphere.ResourceProperties.EC2InstanceNetworkInterface as X
+import Stratosphere.ResourceProperties.EC2InstanceNoDevice as X
+import Stratosphere.ResourceProperties.EC2InstancePrivateIpAddressSpecification as X
+import Stratosphere.ResourceProperties.EC2InstanceSsmAssociation as X
+import Stratosphere.ResourceProperties.EC2InstanceVolume as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateBlockDeviceMapping as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateCapacityReservationSpecification as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateCapacityReservationTarget as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateCpuOptions as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateCreditSpecification as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateEbs as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateElasticGpuSpecification as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateHibernationOptions as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateIamInstanceProfile as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateInstanceMarketOptions as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateIpv6Add as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateLaunchTemplateData as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateLicenseSpecification as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateMonitoring as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateNetworkInterface as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplatePlacement as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplatePrivateIpAdd as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateSpotOptions as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateTagSpecification as X
+import Stratosphere.ResourceProperties.EC2NetworkAclEntryIcmp as X
+import Stratosphere.ResourceProperties.EC2NetworkAclEntryPortRange as X
+import Stratosphere.ResourceProperties.EC2NetworkInterfaceInstanceIpv6Address as X
+import Stratosphere.ResourceProperties.EC2NetworkInterfacePrivateIpAddressSpecification as X
+import Stratosphere.ResourceProperties.EC2SecurityGroupEgressProperty as X
+import Stratosphere.ResourceProperties.EC2SecurityGroupIngressProperty as X
+import Stratosphere.ResourceProperties.EC2SpotFleetBlockDeviceMapping as X
+import Stratosphere.ResourceProperties.EC2SpotFleetClassicLoadBalancer as X
+import Stratosphere.ResourceProperties.EC2SpotFleetClassicLoadBalancersConfig as X
+import Stratosphere.ResourceProperties.EC2SpotFleetEbsBlockDevice as X
+import Stratosphere.ResourceProperties.EC2SpotFleetFleetLaunchTemplateSpecification as X
+import Stratosphere.ResourceProperties.EC2SpotFleetGroupIdentifier as X
+import Stratosphere.ResourceProperties.EC2SpotFleetIamInstanceProfileSpecification as X
+import Stratosphere.ResourceProperties.EC2SpotFleetInstanceIpv6Address as X
+import Stratosphere.ResourceProperties.EC2SpotFleetInstanceNetworkInterfaceSpecification as X
+import Stratosphere.ResourceProperties.EC2SpotFleetLaunchTemplateConfig as X
+import Stratosphere.ResourceProperties.EC2SpotFleetLaunchTemplateOverrides as X
+import Stratosphere.ResourceProperties.EC2SpotFleetLoadBalancersConfig as X
+import Stratosphere.ResourceProperties.EC2SpotFleetPrivateIpAddressSpecification as X
+import Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetLaunchSpecification as X
+import Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetMonitoring as X
+import Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetRequestConfigData as X
+import Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetTagSpecification as X
+import Stratosphere.ResourceProperties.EC2SpotFleetSpotPlacement as X
+import Stratosphere.ResourceProperties.EC2SpotFleetTargetGroup as X
+import Stratosphere.ResourceProperties.EC2SpotFleetTargetGroupsConfig as X
+import Stratosphere.ResourceProperties.EC2VPNConnectionVpnTunnelOptionsSpecification as X
+import Stratosphere.ResourceProperties.ECRRepositoryLifecyclePolicy as X
+import Stratosphere.ResourceProperties.ECSServiceAwsVpcConfiguration as X
+import Stratosphere.ResourceProperties.ECSServiceDeploymentConfiguration as X
+import Stratosphere.ResourceProperties.ECSServiceLoadBalancer as X
+import Stratosphere.ResourceProperties.ECSServiceNetworkConfiguration as X
+import Stratosphere.ResourceProperties.ECSServicePlacementConstraint as X
+import Stratosphere.ResourceProperties.ECSServicePlacementStrategy as X
+import Stratosphere.ResourceProperties.ECSServiceServiceRegistry as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionContainerDefinition as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionDevice as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionDockerVolumeConfiguration as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionHealthCheck as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionHostEntry as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionHostVolumeProperties as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionKernelCapabilities as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionKeyValuePair as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionLinuxParameters as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionLogConfiguration as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionMountPoint as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionPortMapping as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionRepositoryCredentials as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionTaskDefinitionPlacementConstraint as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionTmpfs as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionUlimit as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionVolume as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionVolumeFrom as X
+import Stratosphere.ResourceProperties.EFSFileSystemElasticFileSystemTag as X
+import Stratosphere.ResourceProperties.EKSClusterResourcesVpcConfig as X
+import Stratosphere.ResourceProperties.EMRClusterApplication as X
+import Stratosphere.ResourceProperties.EMRClusterAutoScalingPolicy as X
+import Stratosphere.ResourceProperties.EMRClusterBootstrapActionConfig as X
+import Stratosphere.ResourceProperties.EMRClusterCloudWatchAlarmDefinition as X
+import Stratosphere.ResourceProperties.EMRClusterConfiguration as X
+import Stratosphere.ResourceProperties.EMRClusterEbsBlockDeviceConfig as X
+import Stratosphere.ResourceProperties.EMRClusterEbsConfiguration as X
+import Stratosphere.ResourceProperties.EMRClusterHadoopJarStepConfig as X
+import Stratosphere.ResourceProperties.EMRClusterInstanceFleetConfig as X
+import Stratosphere.ResourceProperties.EMRClusterInstanceFleetProvisioningSpecifications as X
+import Stratosphere.ResourceProperties.EMRClusterInstanceGroupConfig as X
+import Stratosphere.ResourceProperties.EMRClusterInstanceTypeConfig as X
+import Stratosphere.ResourceProperties.EMRClusterJobFlowInstancesConfig as X
+import Stratosphere.ResourceProperties.EMRClusterKerberosAttributes as X
+import Stratosphere.ResourceProperties.EMRClusterKeyValue as X
+import Stratosphere.ResourceProperties.EMRClusterMetricDimension as X
+import Stratosphere.ResourceProperties.EMRClusterPlacementType as X
+import Stratosphere.ResourceProperties.EMRClusterScalingAction as X
+import Stratosphere.ResourceProperties.EMRClusterScalingConstraints as X
+import Stratosphere.ResourceProperties.EMRClusterScalingRule as X
+import Stratosphere.ResourceProperties.EMRClusterScalingTrigger as X
+import Stratosphere.ResourceProperties.EMRClusterScriptBootstrapActionConfig as X
+import Stratosphere.ResourceProperties.EMRClusterSimpleScalingPolicyConfiguration as X
+import Stratosphere.ResourceProperties.EMRClusterSpotProvisioningSpecification as X
+import Stratosphere.ResourceProperties.EMRClusterStepConfig as X
+import Stratosphere.ResourceProperties.EMRClusterVolumeSpecification as X
+import Stratosphere.ResourceProperties.EMRInstanceFleetConfigConfiguration as X
+import Stratosphere.ResourceProperties.EMRInstanceFleetConfigEbsBlockDeviceConfig as X
+import Stratosphere.ResourceProperties.EMRInstanceFleetConfigEbsConfiguration as X
+import Stratosphere.ResourceProperties.EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications as X
+import Stratosphere.ResourceProperties.EMRInstanceFleetConfigInstanceTypeConfig as X
+import Stratosphere.ResourceProperties.EMRInstanceFleetConfigSpotProvisioningSpecification as X
+import Stratosphere.ResourceProperties.EMRInstanceFleetConfigVolumeSpecification as X
+import Stratosphere.ResourceProperties.EMRInstanceGroupConfigAutoScalingPolicy as X
+import Stratosphere.ResourceProperties.EMRInstanceGroupConfigCloudWatchAlarmDefinition as X
+import Stratosphere.ResourceProperties.EMRInstanceGroupConfigConfiguration as X
+import Stratosphere.ResourceProperties.EMRInstanceGroupConfigEbsBlockDeviceConfig as X
+import Stratosphere.ResourceProperties.EMRInstanceGroupConfigEbsConfiguration as X
+import Stratosphere.ResourceProperties.EMRInstanceGroupConfigMetricDimension as X
+import Stratosphere.ResourceProperties.EMRInstanceGroupConfigScalingAction as X
+import Stratosphere.ResourceProperties.EMRInstanceGroupConfigScalingConstraints as X
+import Stratosphere.ResourceProperties.EMRInstanceGroupConfigScalingRule as X
+import Stratosphere.ResourceProperties.EMRInstanceGroupConfigScalingTrigger as X
+import Stratosphere.ResourceProperties.EMRInstanceGroupConfigSimpleScalingPolicyConfiguration as X
+import Stratosphere.ResourceProperties.EMRInstanceGroupConfigVolumeSpecification as X
+import Stratosphere.ResourceProperties.EMRStepHadoopJarStepConfig as X
+import Stratosphere.ResourceProperties.EMRStepKeyValue as X
+import Stratosphere.ResourceProperties.ElastiCacheReplicationGroupNodeGroupConfiguration as X
+import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationApplicationResourceLifecycleConfig as X
+import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationApplicationVersionLifecycleConfig as X
+import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationMaxAgeRule as X
+import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationMaxCountRule as X
+import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationVersionSourceBundle as X
+import Stratosphere.ResourceProperties.ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting as X
+import Stratosphere.ResourceProperties.ElasticBeanstalkConfigurationTemplateSourceConfiguration as X
+import Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentOptionSetting as X
+import Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentTier as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerAccessLoggingPolicy as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerConnectionSettings as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerHealthCheck as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerLBCookieStickinessPolicy as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerListeners as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerPolicies as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAction as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateOidcConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificate as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerFixedResponseConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRedirectConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificateCertificate as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAction as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleFixedResponseConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRedirectConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRuleCondition as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerSubnetMapping as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2TargetGroupMatcher as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2TargetGroupTargetDescription as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2TargetGroupTargetGroupAttribute as X
+import Stratosphere.ResourceProperties.ElasticsearchDomainEBSOptions as X
+import Stratosphere.ResourceProperties.ElasticsearchDomainElasticsearchClusterConfig as X
+import Stratosphere.ResourceProperties.ElasticsearchDomainEncryptionAtRestOptions as X
+import Stratosphere.ResourceProperties.ElasticsearchDomainNodeToNodeEncryptionOptions as X
+import Stratosphere.ResourceProperties.ElasticsearchDomainSnapshotOptions as X
+import Stratosphere.ResourceProperties.ElasticsearchDomainVPCOptions as X
+import Stratosphere.ResourceProperties.EventsEventBusPolicyCondition as X
+import Stratosphere.ResourceProperties.EventsRuleEcsParameters as X
+import Stratosphere.ResourceProperties.EventsRuleInputTransformer as X
+import Stratosphere.ResourceProperties.EventsRuleKinesisParameters as X
+import Stratosphere.ResourceProperties.EventsRuleRunCommandParameters as X
+import Stratosphere.ResourceProperties.EventsRuleRunCommandTarget as X
+import Stratosphere.ResourceProperties.EventsRuleSqsParameters as X
+import Stratosphere.ResourceProperties.EventsRuleTarget as X
+import Stratosphere.ResourceProperties.FSxFileSystemLustreConfiguration as X
+import Stratosphere.ResourceProperties.FSxFileSystemTagEntry as X
+import Stratosphere.ResourceProperties.FSxFileSystemWindowsConfiguration as X
+import Stratosphere.ResourceProperties.GameLiftAliasRoutingStrategy as X
+import Stratosphere.ResourceProperties.GameLiftBuildS3Location as X
+import Stratosphere.ResourceProperties.GameLiftFleetIpPermission as X
+import Stratosphere.ResourceProperties.GlueClassifierGrokClassifier as X
+import Stratosphere.ResourceProperties.GlueClassifierJsonClassifier as X
+import Stratosphere.ResourceProperties.GlueClassifierXMLClassifier as X
+import Stratosphere.ResourceProperties.GlueConnectionConnectionInput as X
+import Stratosphere.ResourceProperties.GlueConnectionPhysicalConnectionRequirements as X
+import Stratosphere.ResourceProperties.GlueCrawlerJdbcTarget as X
+import Stratosphere.ResourceProperties.GlueCrawlerS3Target as X
+import Stratosphere.ResourceProperties.GlueCrawlerSchedule as X
+import Stratosphere.ResourceProperties.GlueCrawlerSchemaChangePolicy as X
+import Stratosphere.ResourceProperties.GlueCrawlerTargets as X
+import Stratosphere.ResourceProperties.GlueDatabaseDatabaseInput as X
+import Stratosphere.ResourceProperties.GlueJobConnectionsList as X
+import Stratosphere.ResourceProperties.GlueJobExecutionProperty as X
+import Stratosphere.ResourceProperties.GlueJobJobCommand as X
+import Stratosphere.ResourceProperties.GluePartitionColumn as X
+import Stratosphere.ResourceProperties.GluePartitionOrder as X
+import Stratosphere.ResourceProperties.GluePartitionPartitionInput as X
+import Stratosphere.ResourceProperties.GluePartitionSerdeInfo as X
+import Stratosphere.ResourceProperties.GluePartitionSkewedInfo as X
+import Stratosphere.ResourceProperties.GluePartitionStorageDescriptor as X
+import Stratosphere.ResourceProperties.GlueTableColumn as X
+import Stratosphere.ResourceProperties.GlueTableOrder as X
+import Stratosphere.ResourceProperties.GlueTableSerdeInfo as X
+import Stratosphere.ResourceProperties.GlueTableSkewedInfo as X
+import Stratosphere.ResourceProperties.GlueTableStorageDescriptor as X
+import Stratosphere.ResourceProperties.GlueTableTableInput as X
+import Stratosphere.ResourceProperties.GlueTriggerAction as X
+import Stratosphere.ResourceProperties.GlueTriggerCondition as X
+import Stratosphere.ResourceProperties.GlueTriggerPredicate as X
+import Stratosphere.ResourceProperties.GuardDutyFilterCondition as X
+import Stratosphere.ResourceProperties.GuardDutyFilterFindingCriteria as X
+import Stratosphere.ResourceProperties.IAMGroupPolicy as X
+import Stratosphere.ResourceProperties.IAMRolePolicy as X
+import Stratosphere.ResourceProperties.IAMUserLoginProfile as X
+import Stratosphere.ResourceProperties.IAMUserPolicy as X
+import Stratosphere.ResourceProperties.IoT1ClickProjectDeviceTemplate as X
+import Stratosphere.ResourceProperties.IoT1ClickProjectPlacementTemplate as X
+import Stratosphere.ResourceProperties.IoTThingAttributePayload as X
+import Stratosphere.ResourceProperties.IoTTopicRuleAction as X
+import Stratosphere.ResourceProperties.IoTTopicRuleCloudwatchAlarmAction as X
+import Stratosphere.ResourceProperties.IoTTopicRuleCloudwatchMetricAction as X
+import Stratosphere.ResourceProperties.IoTTopicRuleDynamoDBAction as X
+import Stratosphere.ResourceProperties.IoTTopicRuleDynamoDBV2Action as X
+import Stratosphere.ResourceProperties.IoTTopicRuleElasticsearchAction as X
+import Stratosphere.ResourceProperties.IoTTopicRuleFirehoseAction as X
+import Stratosphere.ResourceProperties.IoTTopicRuleIotAnalyticsAction as X
+import Stratosphere.ResourceProperties.IoTTopicRuleKinesisAction as X
+import Stratosphere.ResourceProperties.IoTTopicRuleLambdaAction as X
+import Stratosphere.ResourceProperties.IoTTopicRulePutItemInput as X
+import Stratosphere.ResourceProperties.IoTTopicRuleRepublishAction as X
+import Stratosphere.ResourceProperties.IoTTopicRuleS3Action as X
+import Stratosphere.ResourceProperties.IoTTopicRuleSnsAction as X
+import Stratosphere.ResourceProperties.IoTTopicRuleSqsAction as X
+import Stratosphere.ResourceProperties.IoTTopicRuleStepFunctionsAction as X
+import Stratosphere.ResourceProperties.IoTTopicRuleTopicRulePayload as X
+import Stratosphere.ResourceProperties.IoTAnalyticsChannelRetentionPeriod as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetAction as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetContainerAction as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentVersionValue as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetDeltaTime as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetFilter as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetOutputFileUriValue as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetQueryAction as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetResourceConfiguration as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetRetentionPeriod as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetSchedule as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetTrigger as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetTriggeringDataset as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetVariable as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatastoreRetentionPeriod as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineActivity as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineAddAttributes as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineChannel as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineDatastore as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineDeviceRegistryEnrich as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineDeviceShadowEnrich as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineFilter as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineLambda as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineMath as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineRemoveAttributes as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineSelectAttributes as X
+import Stratosphere.ResourceProperties.KinesisStreamStreamEncryption as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationCSVMappingParameters as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputLambdaProcessor as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputParallelism as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputProcessingConfiguration 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.KinesisAnalyticsApplicationOutputLambdaOutput 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.KinesisAnalyticsV2ApplicationApplicationCodeConfiguration as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationApplicationConfiguration as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationApplicationSnapshotConfiguration as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationCSVMappingParameters as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationCheckpointConfiguration as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationCodeContent as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationEnvironmentProperties as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationFlinkApplicationConfiguration as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationInput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationInputLambdaProcessor as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationInputParallelism as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationInputProcessingConfiguration as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationInputSchema as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationJSONMappingParameters as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationKinesisFirehoseInput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationKinesisStreamsInput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationMappingParameters as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationMonitoringConfiguration as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationParallelismConfiguration as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationPropertyGroup as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationRecordColumn as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationRecordFormat as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationS3ContentLocation as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationSqlApplicationConfiguration as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationCloudWatchLoggingOptionCloudWatchLoggingOption as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationOutputDestinationSchema as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationOutputKinesisFirehoseOutput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationOutputKinesisStreamsOutput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationOutputLambdaOutput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationOutputOutput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceCSVMappingParameters as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceJSONMappingParameters as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceMappingParameters as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceRecordColumn as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceRecordFormat as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceReferenceDataSource as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceReferenceSchema as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsV2ApplicationReferenceDataSourceS3ReferenceDataSource as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamBufferingHints as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCopyCommand as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchBufferingHints as X
+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.KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration 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.KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSplunkRetryOptions as X
+import Stratosphere.ResourceProperties.LambdaAliasAliasRoutingConfiguration as X
+import Stratosphere.ResourceProperties.LambdaAliasVersionWeight as X
+import Stratosphere.ResourceProperties.LambdaFunctionCode as X
+import Stratosphere.ResourceProperties.LambdaFunctionDeadLetterConfig as X
+import Stratosphere.ResourceProperties.LambdaFunctionEnvironment as X
+import Stratosphere.ResourceProperties.LambdaFunctionTracingConfig as X
+import Stratosphere.ResourceProperties.LambdaFunctionVpcConfig as X
+import Stratosphere.ResourceProperties.LambdaLayerVersionContent as X
+import Stratosphere.ResourceProperties.LogsMetricFilterMetricTransformation as X
+import Stratosphere.ResourceProperties.OpsWorksAppDataSource as X
+import Stratosphere.ResourceProperties.OpsWorksAppEnvironmentVariable as X
+import Stratosphere.ResourceProperties.OpsWorksAppSource as X
+import Stratosphere.ResourceProperties.OpsWorksAppSslConfiguration as X
+import Stratosphere.ResourceProperties.OpsWorksInstanceBlockDeviceMapping as X
+import Stratosphere.ResourceProperties.OpsWorksInstanceEbsBlockDevice as X
+import Stratosphere.ResourceProperties.OpsWorksInstanceTimeBasedAutoScaling as X
+import Stratosphere.ResourceProperties.OpsWorksLayerAutoScalingThresholds as X
+import Stratosphere.ResourceProperties.OpsWorksLayerLifecycleEventConfiguration as X
+import Stratosphere.ResourceProperties.OpsWorksLayerLoadBasedAutoScaling as X
+import Stratosphere.ResourceProperties.OpsWorksLayerRecipes as X
+import Stratosphere.ResourceProperties.OpsWorksLayerShutdownEventConfiguration as X
+import Stratosphere.ResourceProperties.OpsWorksLayerVolumeConfiguration as X
+import Stratosphere.ResourceProperties.OpsWorksStackChefConfiguration as X
+import Stratosphere.ResourceProperties.OpsWorksStackElasticIp as X
+import Stratosphere.ResourceProperties.OpsWorksStackRdsDbInstance as X
+import Stratosphere.ResourceProperties.OpsWorksStackSource as X
+import Stratosphere.ResourceProperties.OpsWorksStackStackConfigurationManager as X
+import Stratosphere.ResourceProperties.OpsWorksCMServerEngineAttribute as X
+import Stratosphere.ResourceProperties.RDSDBClusterScalingConfiguration as X
+import Stratosphere.ResourceProperties.RDSDBInstanceProcessorFeature as X
+import Stratosphere.ResourceProperties.RDSDBSecurityGroupIngressProperty as X
+import Stratosphere.ResourceProperties.RDSOptionGroupOptionConfiguration as X
+import Stratosphere.ResourceProperties.RDSOptionGroupOptionSetting as X
+import Stratosphere.ResourceProperties.RedshiftClusterLoggingProperties as X
+import Stratosphere.ResourceProperties.RedshiftClusterParameterGroupParameter as X
+import Stratosphere.ResourceProperties.RoboMakerRobotApplicationRobotSoftwareSuite as X
+import Stratosphere.ResourceProperties.RoboMakerRobotApplicationSourceConfig as X
+import Stratosphere.ResourceProperties.RoboMakerSimulationApplicationRenderingEngine as X
+import Stratosphere.ResourceProperties.RoboMakerSimulationApplicationRobotSoftwareSuite as X
+import Stratosphere.ResourceProperties.RoboMakerSimulationApplicationSimulationSoftwareSuite as X
+import Stratosphere.ResourceProperties.RoboMakerSimulationApplicationSourceConfig as X
+import Stratosphere.ResourceProperties.Route53HealthCheckAlarmIdentifier as X
+import Stratosphere.ResourceProperties.Route53HealthCheckHealthCheckConfig as X
+import Stratosphere.ResourceProperties.Route53HealthCheckHealthCheckTag as X
+import Stratosphere.ResourceProperties.Route53HostedZoneHostedZoneConfig as X
+import Stratosphere.ResourceProperties.Route53HostedZoneHostedZoneTag as X
+import Stratosphere.ResourceProperties.Route53HostedZoneQueryLoggingConfig as X
+import Stratosphere.ResourceProperties.Route53HostedZoneVPC as X
+import Stratosphere.ResourceProperties.Route53RecordSetAliasTarget as X
+import Stratosphere.ResourceProperties.Route53RecordSetGeoLocation as X
+import Stratosphere.ResourceProperties.Route53RecordSetGroupAliasTarget as X
+import Stratosphere.ResourceProperties.Route53RecordSetGroupGeoLocation as X
+import Stratosphere.ResourceProperties.Route53RecordSetGroupRecordSet as X
+import Stratosphere.ResourceProperties.Route53ResolverResolverEndpointIpAddressRequest as X
+import Stratosphere.ResourceProperties.Route53ResolverResolverRuleTargetAddress as X
+import Stratosphere.ResourceProperties.S3BucketAbortIncompleteMultipartUpload as X
+import Stratosphere.ResourceProperties.S3BucketAccelerateConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketAccessControlTranslation as X
+import Stratosphere.ResourceProperties.S3BucketAnalyticsConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketBucketEncryption as X
+import Stratosphere.ResourceProperties.S3BucketCorsConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketCorsRule as X
+import Stratosphere.ResourceProperties.S3BucketDataExport as X
+import Stratosphere.ResourceProperties.S3BucketDestination as X
+import Stratosphere.ResourceProperties.S3BucketEncryptionConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketFilterRule as X
+import Stratosphere.ResourceProperties.S3BucketInventoryConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketLambdaConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketLifecycleConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketLoggingConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketMetricsConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketNoncurrentVersionTransition as X
+import Stratosphere.ResourceProperties.S3BucketNotificationConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketNotificationFilter as X
+import Stratosphere.ResourceProperties.S3BucketPublicAccessBlockConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketQueueConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketRedirectAllRequestsTo as X
+import Stratosphere.ResourceProperties.S3BucketRedirectRule as X
+import Stratosphere.ResourceProperties.S3BucketReplicationConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketReplicationDestination as X
+import Stratosphere.ResourceProperties.S3BucketReplicationRule as X
+import Stratosphere.ResourceProperties.S3BucketRoutingRule as X
+import Stratosphere.ResourceProperties.S3BucketRoutingRuleCondition as X
+import Stratosphere.ResourceProperties.S3BucketRule as X
+import Stratosphere.ResourceProperties.S3BucketS3KeyFilter as X
+import Stratosphere.ResourceProperties.S3BucketServerSideEncryptionByDefault as X
+import Stratosphere.ResourceProperties.S3BucketServerSideEncryptionRule as X
+import Stratosphere.ResourceProperties.S3BucketSourceSelectionCriteria as X
+import Stratosphere.ResourceProperties.S3BucketSseKmsEncryptedObjects as X
+import Stratosphere.ResourceProperties.S3BucketStorageClassAnalysis 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
+import Stratosphere.ResourceProperties.S3BucketWebsiteConfiguration as X
+import Stratosphere.ResourceProperties.SESConfigurationSetEventDestinationCloudWatchDestination as X
+import Stratosphere.ResourceProperties.SESConfigurationSetEventDestinationDimensionConfiguration as X
+import Stratosphere.ResourceProperties.SESConfigurationSetEventDestinationEventDestination as X
+import Stratosphere.ResourceProperties.SESConfigurationSetEventDestinationKinesisFirehoseDestination as X
+import Stratosphere.ResourceProperties.SESReceiptFilterFilter as X
+import Stratosphere.ResourceProperties.SESReceiptFilterIpFilter as X
+import Stratosphere.ResourceProperties.SESReceiptRuleAction as X
+import Stratosphere.ResourceProperties.SESReceiptRuleAddHeaderAction as X
+import Stratosphere.ResourceProperties.SESReceiptRuleBounceAction as X
+import Stratosphere.ResourceProperties.SESReceiptRuleLambdaAction as X
+import Stratosphere.ResourceProperties.SESReceiptRuleRule as X
+import Stratosphere.ResourceProperties.SESReceiptRuleS3Action as X
+import Stratosphere.ResourceProperties.SESReceiptRuleSNSAction as X
+import Stratosphere.ResourceProperties.SESReceiptRuleStopAction as X
+import Stratosphere.ResourceProperties.SESReceiptRuleWorkmailAction as X
+import Stratosphere.ResourceProperties.SESTemplateTemplate as X
+import Stratosphere.ResourceProperties.SNSTopicSubscription as X
+import Stratosphere.ResourceProperties.SSMAssociationInstanceAssociationOutputLocation as X
+import Stratosphere.ResourceProperties.SSMAssociationParameterValues as X
+import Stratosphere.ResourceProperties.SSMAssociationS3OutputLocation as X
+import Stratosphere.ResourceProperties.SSMAssociationTarget as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskLoggingInfo as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskNotificationConfig as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskTarget as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskTaskInvocationParameters as X
+import Stratosphere.ResourceProperties.SSMPatchBaselinePatchFilter as X
+import Stratosphere.ResourceProperties.SSMPatchBaselinePatchFilterGroup as X
+import Stratosphere.ResourceProperties.SSMPatchBaselinePatchSource as X
+import Stratosphere.ResourceProperties.SSMPatchBaselineRule as X
+import Stratosphere.ResourceProperties.SSMPatchBaselineRuleGroup as X
+import Stratosphere.ResourceProperties.SageMakerEndpointConfigProductionVariant as X
+import Stratosphere.ResourceProperties.SageMakerModelContainerDefinition as X
+import Stratosphere.ResourceProperties.SageMakerModelVpcConfig as X
+import Stratosphere.ResourceProperties.SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook as X
+import Stratosphere.ResourceProperties.SecretsManagerRotationScheduleRotationRules as X
+import Stratosphere.ResourceProperties.SecretsManagerSecretGenerateSecretString as X
+import Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProductProvisioningArtifactProperties as X
+import Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProvisionedProductProvisioningParameter as X
+import Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsConfig as X
+import Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsRecord as X
+import Stratosphere.ResourceProperties.ServiceDiscoveryServiceHealthCheckConfig as X
+import Stratosphere.ResourceProperties.ServiceDiscoveryServiceHealthCheckCustomConfig as X
+import Stratosphere.ResourceProperties.WAFByteMatchSetByteMatchTuple as X
+import Stratosphere.ResourceProperties.WAFByteMatchSetFieldToMatch as X
+import Stratosphere.ResourceProperties.WAFIPSetIPSetDescriptor as X
+import Stratosphere.ResourceProperties.WAFRulePredicate as X
+import Stratosphere.ResourceProperties.WAFSizeConstraintSetFieldToMatch as X
+import Stratosphere.ResourceProperties.WAFSizeConstraintSetSizeConstraint as X
+import Stratosphere.ResourceProperties.WAFSqlInjectionMatchSetFieldToMatch as X
+import Stratosphere.ResourceProperties.WAFSqlInjectionMatchSetSqlInjectionMatchTuple as X
+import Stratosphere.ResourceProperties.WAFWebACLActivatedRule as X
+import Stratosphere.ResourceProperties.WAFWebACLWafAction as X
+import Stratosphere.ResourceProperties.WAFXssMatchSetFieldToMatch as X
+import Stratosphere.ResourceProperties.WAFXssMatchSetXssMatchTuple as X
+import Stratosphere.ResourceProperties.WAFRegionalByteMatchSetByteMatchTuple as X
+import Stratosphere.ResourceProperties.WAFRegionalByteMatchSetFieldToMatch as X
+import Stratosphere.ResourceProperties.WAFRegionalIPSetIPSetDescriptor as X
+import Stratosphere.ResourceProperties.WAFRegionalRulePredicate as X
+import Stratosphere.ResourceProperties.WAFRegionalSizeConstraintSetFieldToMatch as X
+import Stratosphere.ResourceProperties.WAFRegionalSizeConstraintSetSizeConstraint as X
+import Stratosphere.ResourceProperties.WAFRegionalSqlInjectionMatchSetFieldToMatch as X
+import Stratosphere.ResourceProperties.WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple as X
+import Stratosphere.ResourceProperties.WAFRegionalWebACLAction as X
+import Stratosphere.ResourceProperties.WAFRegionalWebACLRule as X
+import Stratosphere.ResourceProperties.WAFRegionalXssMatchSetFieldToMatch as X
+import Stratosphere.ResourceProperties.WAFRegionalXssMatchSetXssMatchTuple as X
+import Stratosphere.ResourceProperties.WorkSpacesWorkspaceWorkspaceProperties as X
+import Stratosphere.ResourceProperties.ASKSkillAuthenticationConfiguration as X
+import Stratosphere.ResourceProperties.ASKSkillOverrides as X
+import Stratosphere.ResourceProperties.ASKSkillSkillPackage as X
+import Stratosphere.ResourceProperties.Tag as X
+
+import Stratosphere.ResourceAttributes.AutoScalingReplacingUpdatePolicy as X
+import Stratosphere.ResourceAttributes.AutoScalingRollingUpdatePolicy as X
+import Stratosphere.ResourceAttributes.AutoScalingScheduledActionPolicy as X
+import Stratosphere.ResourceAttributes.CreationPolicy as X
+import Stratosphere.ResourceAttributes.ResourceSignal as X
+import Stratosphere.ResourceAttributes.UpdatePolicy as X
+import Stratosphere.Helpers
+import Stratosphere.ResourceProperties
+import Stratosphere.Values
+
+data DeletionPolicy
+  = Delete
+  | Retain
+  | Snapshot
+  deriving (Show, Eq, Generic)
+
+instance ToJSON DeletionPolicy where
+
+data Resource =
+  Resource
+  { _resourceName :: T.Text
+  , _resourceProperties :: ResourceProperties
+  , _resourceDeletionPolicy :: Maybe DeletionPolicy
+  , _resourceCreationPolicy :: Maybe CreationPolicy
+  , _resourceUpdatePolicy :: Maybe UpdatePolicy
+  , _resourceDependsOn :: Maybe [T.Text]
+  , _resourceMetadata :: Maybe Object
+  , _resourceCondition :: Maybe T.Text
+  } deriving (Show, Eq)
+
+instance ToRef Resource b where
+  toRef r = Ref (_resourceName r)
+
+-- | Convenient constructor for 'Resource' with required arguments.
+resource
+  :: (ToResourceProperties a)
+  => T.Text -- ^ Logical name
+  -> a
+  -> Resource
+resource rn rp =
+  Resource
+  { _resourceName = rn
+  , _resourceProperties = toResourceProperties rp
+  , _resourceDeletionPolicy = Nothing
+  , _resourceCreationPolicy = Nothing
+  , _resourceUpdatePolicy = Nothing
+  , _resourceDependsOn = Nothing
+  , _resourceMetadata = Nothing
+  , _resourceCondition = Nothing
+  }
+
+$(makeLenses ''Resource)
+
+resourceToJSON :: Resource -> Value
+resourceToJSON (Resource _ props dp cp up deps meta cond) =
+  object $
+    resourcePropertiesJSON props ++
+    catMaybes
+    [ maybeField "DeletionPolicy" dp
+    , maybeField "CreationPolicy" cp
+    , maybeField "UpdatePolicy" up
+    , maybeField "DependsOn" deps
+    , maybeField "Metadata" meta
+    , maybeField "Condition" cond
+    ]
 
 -- | Wrapper around a list of 'Resources's to we can modify the aeson
 -- instances.
diff --git a/library-gen/Stratosphere/Resources/ASKSkill.hs b/library-gen/Stratosphere/Resources/ASKSkill.hs
--- a/library-gen/Stratosphere/Resources/ASKSkill.hs
+++ b/library-gen/Stratosphere/Resources/ASKSkill.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ask-skill.html
@@ -19,14 +20,17 @@
   , _aSKSkillVendorId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ASKSkill where
-  toJSON ASKSkill{..} =
-    object $
-    catMaybes
-    [ (Just . ("AuthenticationConfiguration",) . toJSON) _aSKSkillAuthenticationConfiguration
-    , (Just . ("SkillPackage",) . toJSON) _aSKSkillSkillPackage
-    , (Just . ("VendorId",) . toJSON) _aSKSkillVendorId
-    ]
+instance ToResourceProperties ASKSkill where
+  toResourceProperties ASKSkill{..} =
+    ResourceProperties
+    { resourcePropertiesType = "Alexa::ASK::Skill"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AuthenticationConfiguration",) . toJSON) _aSKSkillAuthenticationConfiguration
+        , (Just . ("SkillPackage",) . toJSON) _aSKSkillSkillPackage
+        , (Just . ("VendorId",) . toJSON) _aSKSkillVendorId
+        ]
+    }
 
 -- | Constructor for 'ASKSkill' containing required fields as arguments.
 askSkill
diff --git a/library-gen/Stratosphere/Resources/AmazonMQBroker.hs b/library-gen/Stratosphere/Resources/AmazonMQBroker.hs
--- a/library-gen/Stratosphere/Resources/AmazonMQBroker.hs
+++ b/library-gen/Stratosphere/Resources/AmazonMQBroker.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html
@@ -33,25 +34,28 @@
   , _amazonMQBrokerUsers :: [AmazonMQBrokerUser]
   } deriving (Show, Eq)
 
-instance ToJSON AmazonMQBroker where
-  toJSON AmazonMQBroker{..} =
-    object $
-    catMaybes
-    [ (Just . ("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _amazonMQBrokerAutoMinorVersionUpgrade
-    , (Just . ("BrokerName",) . toJSON) _amazonMQBrokerBrokerName
-    , fmap (("Configuration",) . toJSON) _amazonMQBrokerConfiguration
-    , (Just . ("DeploymentMode",) . toJSON) _amazonMQBrokerDeploymentMode
-    , (Just . ("EngineType",) . toJSON) _amazonMQBrokerEngineType
-    , (Just . ("EngineVersion",) . toJSON) _amazonMQBrokerEngineVersion
-    , (Just . ("HostInstanceType",) . toJSON) _amazonMQBrokerHostInstanceType
-    , fmap (("Logs",) . toJSON) _amazonMQBrokerLogs
-    , fmap (("MaintenanceWindowStartTime",) . toJSON) _amazonMQBrokerMaintenanceWindowStartTime
-    , (Just . ("PubliclyAccessible",) . toJSON . fmap Bool') _amazonMQBrokerPubliclyAccessible
-    , fmap (("SecurityGroups",) . toJSON) _amazonMQBrokerSecurityGroups
-    , fmap (("SubnetIds",) . toJSON) _amazonMQBrokerSubnetIds
-    , fmap (("Tags",) . toJSON) _amazonMQBrokerTags
-    , (Just . ("Users",) . toJSON) _amazonMQBrokerUsers
-    ]
+instance ToResourceProperties AmazonMQBroker where
+  toResourceProperties AmazonMQBroker{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AmazonMQ::Broker"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _amazonMQBrokerAutoMinorVersionUpgrade
+        , (Just . ("BrokerName",) . toJSON) _amazonMQBrokerBrokerName
+        , fmap (("Configuration",) . toJSON) _amazonMQBrokerConfiguration
+        , (Just . ("DeploymentMode",) . toJSON) _amazonMQBrokerDeploymentMode
+        , (Just . ("EngineType",) . toJSON) _amazonMQBrokerEngineType
+        , (Just . ("EngineVersion",) . toJSON) _amazonMQBrokerEngineVersion
+        , (Just . ("HostInstanceType",) . toJSON) _amazonMQBrokerHostInstanceType
+        , fmap (("Logs",) . toJSON) _amazonMQBrokerLogs
+        , fmap (("MaintenanceWindowStartTime",) . toJSON) _amazonMQBrokerMaintenanceWindowStartTime
+        , (Just . ("PubliclyAccessible",) . toJSON . fmap Bool') _amazonMQBrokerPubliclyAccessible
+        , fmap (("SecurityGroups",) . toJSON) _amazonMQBrokerSecurityGroups
+        , fmap (("SubnetIds",) . toJSON) _amazonMQBrokerSubnetIds
+        , fmap (("Tags",) . toJSON) _amazonMQBrokerTags
+        , (Just . ("Users",) . toJSON) _amazonMQBrokerUsers
+        ]
+    }
 
 -- | Constructor for 'AmazonMQBroker' containing required fields as arguments.
 amazonMQBroker
diff --git a/library-gen/Stratosphere/Resources/AmazonMQConfiguration.hs b/library-gen/Stratosphere/Resources/AmazonMQConfiguration.hs
--- a/library-gen/Stratosphere/Resources/AmazonMQConfiguration.hs
+++ b/library-gen/Stratosphere/Resources/AmazonMQConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html
@@ -21,17 +22,20 @@
   , _amazonMQConfigurationTags :: Maybe [AmazonMQConfigurationTagsEntry]
   } deriving (Show, Eq)
 
-instance ToJSON AmazonMQConfiguration where
-  toJSON AmazonMQConfiguration{..} =
-    object $
-    catMaybes
-    [ (Just . ("Data",) . toJSON) _amazonMQConfigurationData
-    , fmap (("Description",) . toJSON) _amazonMQConfigurationDescription
-    , (Just . ("EngineType",) . toJSON) _amazonMQConfigurationEngineType
-    , (Just . ("EngineVersion",) . toJSON) _amazonMQConfigurationEngineVersion
-    , (Just . ("Name",) . toJSON) _amazonMQConfigurationName
-    , fmap (("Tags",) . toJSON) _amazonMQConfigurationTags
-    ]
+instance ToResourceProperties AmazonMQConfiguration where
+  toResourceProperties AmazonMQConfiguration{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AmazonMQ::Configuration"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Data",) . toJSON) _amazonMQConfigurationData
+        , fmap (("Description",) . toJSON) _amazonMQConfigurationDescription
+        , (Just . ("EngineType",) . toJSON) _amazonMQConfigurationEngineType
+        , (Just . ("EngineVersion",) . toJSON) _amazonMQConfigurationEngineVersion
+        , (Just . ("Name",) . toJSON) _amazonMQConfigurationName
+        , fmap (("Tags",) . toJSON) _amazonMQConfigurationTags
+        ]
+    }
 
 -- | Constructor for 'AmazonMQConfiguration' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/AmazonMQConfigurationAssociation.hs b/library-gen/Stratosphere/Resources/AmazonMQConfigurationAssociation.hs
--- a/library-gen/Stratosphere/Resources/AmazonMQConfigurationAssociation.hs
+++ b/library-gen/Stratosphere/Resources/AmazonMQConfigurationAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configurationassociation.html
@@ -17,13 +18,16 @@
   , _amazonMQConfigurationAssociationConfiguration :: AmazonMQConfigurationAssociationConfigurationId
   } deriving (Show, Eq)
 
-instance ToJSON AmazonMQConfigurationAssociation where
-  toJSON AmazonMQConfigurationAssociation{..} =
-    object $
-    catMaybes
-    [ (Just . ("Broker",) . toJSON) _amazonMQConfigurationAssociationBroker
-    , (Just . ("Configuration",) . toJSON) _amazonMQConfigurationAssociationConfiguration
-    ]
+instance ToResourceProperties AmazonMQConfigurationAssociation where
+  toResourceProperties AmazonMQConfigurationAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AmazonMQ::ConfigurationAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Broker",) . toJSON) _amazonMQConfigurationAssociationBroker
+        , (Just . ("Configuration",) . toJSON) _amazonMQConfigurationAssociationConfiguration
+        ]
+    }
 
 -- | Constructor for 'AmazonMQConfigurationAssociation' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayAccount.hs b/library-gen/Stratosphere/Resources/ApiGatewayAccount.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayAccount.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayAccount.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-account.html
@@ -16,12 +17,15 @@
   { _apiGatewayAccountCloudWatchRoleArn :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayAccount where
-  toJSON ApiGatewayAccount{..} =
-    object $
-    catMaybes
-    [ fmap (("CloudWatchRoleArn",) . toJSON) _apiGatewayAccountCloudWatchRoleArn
-    ]
+instance ToResourceProperties ApiGatewayAccount where
+  toResourceProperties ApiGatewayAccount{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::Account"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CloudWatchRoleArn",) . toJSON) _apiGatewayAccountCloudWatchRoleArn
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayAccount' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayApiKey.hs b/library-gen/Stratosphere/Resources/ApiGatewayApiKey.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayApiKey.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayApiKey.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-apikey.html
@@ -22,18 +23,21 @@
   , _apiGatewayApiKeyValue :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayApiKey where
-  toJSON ApiGatewayApiKey{..} =
-    object $
-    catMaybes
-    [ fmap (("CustomerId",) . toJSON) _apiGatewayApiKeyCustomerId
-    , fmap (("Description",) . toJSON) _apiGatewayApiKeyDescription
-    , fmap (("Enabled",) . toJSON . fmap Bool') _apiGatewayApiKeyEnabled
-    , fmap (("GenerateDistinctId",) . toJSON . fmap Bool') _apiGatewayApiKeyGenerateDistinctId
-    , fmap (("Name",) . toJSON) _apiGatewayApiKeyName
-    , fmap (("StageKeys",) . toJSON) _apiGatewayApiKeyStageKeys
-    , fmap (("Value",) . toJSON) _apiGatewayApiKeyValue
-    ]
+instance ToResourceProperties ApiGatewayApiKey where
+  toResourceProperties ApiGatewayApiKey{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::ApiKey"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CustomerId",) . toJSON) _apiGatewayApiKeyCustomerId
+        , fmap (("Description",) . toJSON) _apiGatewayApiKeyDescription
+        , fmap (("Enabled",) . toJSON . fmap Bool') _apiGatewayApiKeyEnabled
+        , fmap (("GenerateDistinctId",) . toJSON . fmap Bool') _apiGatewayApiKeyGenerateDistinctId
+        , fmap (("Name",) . toJSON) _apiGatewayApiKeyName
+        , fmap (("StageKeys",) . toJSON) _apiGatewayApiKeyStageKeys
+        , fmap (("Value",) . toJSON) _apiGatewayApiKeyValue
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayApiKey' containing required fields as
 -- arguments.
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html
@@ -25,21 +26,24 @@
   , _apiGatewayAuthorizerType :: Val AuthorizerType
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayAuthorizer where
-  toJSON ApiGatewayAuthorizer{..} =
-    object $
-    catMaybes
-    [ fmap (("AuthType",) . toJSON) _apiGatewayAuthorizerAuthType
-    , fmap (("AuthorizerCredentials",) . toJSON) _apiGatewayAuthorizerAuthorizerCredentials
-    , fmap (("AuthorizerResultTtlInSeconds",) . toJSON . fmap Integer') _apiGatewayAuthorizerAuthorizerResultTtlInSeconds
-    , fmap (("AuthorizerUri",) . toJSON) _apiGatewayAuthorizerAuthorizerUri
-    , fmap (("IdentitySource",) . toJSON) _apiGatewayAuthorizerIdentitySource
-    , fmap (("IdentityValidationExpression",) . toJSON) _apiGatewayAuthorizerIdentityValidationExpression
-    , fmap (("Name",) . toJSON) _apiGatewayAuthorizerName
-    , fmap (("ProviderARNs",) . toJSON) _apiGatewayAuthorizerProviderARNs
-    , (Just . ("RestApiId",) . toJSON) _apiGatewayAuthorizerRestApiId
-    , (Just . ("Type",) . toJSON) _apiGatewayAuthorizerType
-    ]
+instance ToResourceProperties ApiGatewayAuthorizer where
+  toResourceProperties ApiGatewayAuthorizer{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::Authorizer"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AuthType",) . toJSON) _apiGatewayAuthorizerAuthType
+        , fmap (("AuthorizerCredentials",) . toJSON) _apiGatewayAuthorizerAuthorizerCredentials
+        , fmap (("AuthorizerResultTtlInSeconds",) . toJSON . fmap Integer') _apiGatewayAuthorizerAuthorizerResultTtlInSeconds
+        , fmap (("AuthorizerUri",) . toJSON) _apiGatewayAuthorizerAuthorizerUri
+        , fmap (("IdentitySource",) . toJSON) _apiGatewayAuthorizerIdentitySource
+        , fmap (("IdentityValidationExpression",) . toJSON) _apiGatewayAuthorizerIdentityValidationExpression
+        , fmap (("Name",) . toJSON) _apiGatewayAuthorizerName
+        , fmap (("ProviderARNs",) . toJSON) _apiGatewayAuthorizerProviderARNs
+        , (Just . ("RestApiId",) . toJSON) _apiGatewayAuthorizerRestApiId
+        , (Just . ("Type",) . toJSON) _apiGatewayAuthorizerType
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayAuthorizer' containing required fields as
 -- arguments.
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-basepathmapping.html
@@ -19,15 +20,18 @@
   , _apiGatewayBasePathMappingStage :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayBasePathMapping where
-  toJSON ApiGatewayBasePathMapping{..} =
-    object $
-    catMaybes
-    [ fmap (("BasePath",) . toJSON) _apiGatewayBasePathMappingBasePath
-    , (Just . ("DomainName",) . toJSON) _apiGatewayBasePathMappingDomainName
-    , fmap (("RestApiId",) . toJSON) _apiGatewayBasePathMappingRestApiId
-    , fmap (("Stage",) . toJSON) _apiGatewayBasePathMappingStage
-    ]
+instance ToResourceProperties ApiGatewayBasePathMapping where
+  toResourceProperties ApiGatewayBasePathMapping{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::BasePathMapping"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("BasePath",) . toJSON) _apiGatewayBasePathMappingBasePath
+        , (Just . ("DomainName",) . toJSON) _apiGatewayBasePathMappingDomainName
+        , fmap (("RestApiId",) . toJSON) _apiGatewayBasePathMappingRestApiId
+        , fmap (("Stage",) . toJSON) _apiGatewayBasePathMappingStage
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayBasePathMapping' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayClientCertificate.hs b/library-gen/Stratosphere/Resources/ApiGatewayClientCertificate.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayClientCertificate.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayClientCertificate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-clientcertificate.html
@@ -16,12 +17,15 @@
   { _apiGatewayClientCertificateDescription :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayClientCertificate where
-  toJSON ApiGatewayClientCertificate{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _apiGatewayClientCertificateDescription
-    ]
+instance ToResourceProperties ApiGatewayClientCertificate where
+  toResourceProperties ApiGatewayClientCertificate{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::ClientCertificate"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _apiGatewayClientCertificateDescription
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayClientCertificate' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayDeployment.hs b/library-gen/Stratosphere/Resources/ApiGatewayDeployment.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayDeployment.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayDeployment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-deployment.html
@@ -21,16 +22,19 @@
   , _apiGatewayDeploymentStageName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayDeployment where
-  toJSON ApiGatewayDeployment{..} =
-    object $
-    catMaybes
-    [ fmap (("DeploymentCanarySettings",) . toJSON) _apiGatewayDeploymentDeploymentCanarySettings
-    , fmap (("Description",) . toJSON) _apiGatewayDeploymentDescription
-    , (Just . ("RestApiId",) . toJSON) _apiGatewayDeploymentRestApiId
-    , fmap (("StageDescription",) . toJSON) _apiGatewayDeploymentStageDescription
-    , fmap (("StageName",) . toJSON) _apiGatewayDeploymentStageName
-    ]
+instance ToResourceProperties ApiGatewayDeployment where
+  toResourceProperties ApiGatewayDeployment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::Deployment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("DeploymentCanarySettings",) . toJSON) _apiGatewayDeploymentDeploymentCanarySettings
+        , fmap (("Description",) . toJSON) _apiGatewayDeploymentDescription
+        , (Just . ("RestApiId",) . toJSON) _apiGatewayDeploymentRestApiId
+        , fmap (("StageDescription",) . toJSON) _apiGatewayDeploymentStageDescription
+        , fmap (("StageName",) . toJSON) _apiGatewayDeploymentStageName
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayDeployment' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayDocumentationPart.hs b/library-gen/Stratosphere/Resources/ApiGatewayDocumentationPart.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayDocumentationPart.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayDocumentationPart.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationpart.html
@@ -18,14 +19,17 @@
   , _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 ToResourceProperties ApiGatewayDocumentationPart where
+  toResourceProperties ApiGatewayDocumentationPart{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::DocumentationPart"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Location",) . toJSON) _apiGatewayDocumentationPartLocation
+        , (Just . ("Properties",) . toJSON) _apiGatewayDocumentationPartProperties
+        , (Just . ("RestApiId",) . toJSON) _apiGatewayDocumentationPartRestApiId
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayDocumentationPart' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayDocumentationVersion.hs b/library-gen/Stratosphere/Resources/ApiGatewayDocumentationVersion.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayDocumentationVersion.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayDocumentationVersion.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationversion.html
@@ -18,14 +19,17 @@
   , _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 ToResourceProperties ApiGatewayDocumentationVersion where
+  toResourceProperties ApiGatewayDocumentationVersion{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::DocumentationVersion"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _apiGatewayDocumentationVersionDescription
+        , (Just . ("DocumentationVersion",) . toJSON) _apiGatewayDocumentationVersionDocumentationVersion
+        , (Just . ("RestApiId",) . toJSON) _apiGatewayDocumentationVersionRestApiId
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayDocumentationVersion' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayDomainName.hs b/library-gen/Stratosphere/Resources/ApiGatewayDomainName.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayDomainName.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayDomainName.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-domainname.html
@@ -19,15 +20,18 @@
   , _apiGatewayDomainNameRegionalCertificateArn :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayDomainName where
-  toJSON ApiGatewayDomainName{..} =
-    object $
-    catMaybes
-    [ fmap (("CertificateArn",) . toJSON) _apiGatewayDomainNameCertificateArn
-    , (Just . ("DomainName",) . toJSON) _apiGatewayDomainNameDomainName
-    , fmap (("EndpointConfiguration",) . toJSON) _apiGatewayDomainNameEndpointConfiguration
-    , fmap (("RegionalCertificateArn",) . toJSON) _apiGatewayDomainNameRegionalCertificateArn
-    ]
+instance ToResourceProperties ApiGatewayDomainName where
+  toResourceProperties ApiGatewayDomainName{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::DomainName"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CertificateArn",) . toJSON) _apiGatewayDomainNameCertificateArn
+        , (Just . ("DomainName",) . toJSON) _apiGatewayDomainNameDomainName
+        , fmap (("EndpointConfiguration",) . toJSON) _apiGatewayDomainNameEndpointConfiguration
+        , fmap (("RegionalCertificateArn",) . toJSON) _apiGatewayDomainNameRegionalCertificateArn
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayDomainName' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayGatewayResponse.hs b/library-gen/Stratosphere/Resources/ApiGatewayGatewayResponse.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayGatewayResponse.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayGatewayResponse.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-gatewayresponse.html
@@ -20,16 +21,19 @@
   , _apiGatewayGatewayResponseStatusCode :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayGatewayResponse where
-  toJSON ApiGatewayGatewayResponse{..} =
-    object $
-    catMaybes
-    [ fmap (("ResponseParameters",) . toJSON) _apiGatewayGatewayResponseResponseParameters
-    , fmap (("ResponseTemplates",) . toJSON) _apiGatewayGatewayResponseResponseTemplates
-    , (Just . ("ResponseType",) . toJSON) _apiGatewayGatewayResponseResponseType
-    , (Just . ("RestApiId",) . toJSON) _apiGatewayGatewayResponseRestApiId
-    , fmap (("StatusCode",) . toJSON) _apiGatewayGatewayResponseStatusCode
-    ]
+instance ToResourceProperties ApiGatewayGatewayResponse where
+  toResourceProperties ApiGatewayGatewayResponse{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::GatewayResponse"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ResponseParameters",) . toJSON) _apiGatewayGatewayResponseResponseParameters
+        , fmap (("ResponseTemplates",) . toJSON) _apiGatewayGatewayResponseResponseTemplates
+        , (Just . ("ResponseType",) . toJSON) _apiGatewayGatewayResponseResponseType
+        , (Just . ("RestApiId",) . toJSON) _apiGatewayGatewayResponseRestApiId
+        , fmap (("StatusCode",) . toJSON) _apiGatewayGatewayResponseStatusCode
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayGatewayResponse' containing required fields as
 -- arguments.
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html
@@ -30,24 +31,27 @@
   , _apiGatewayMethodRestApiId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayMethod where
-  toJSON ApiGatewayMethod{..} =
-    object $
-    catMaybes
-    [ fmap (("ApiKeyRequired",) . toJSON . fmap Bool') _apiGatewayMethodApiKeyRequired
-    , fmap (("AuthorizationScopes",) . toJSON) _apiGatewayMethodAuthorizationScopes
-    , fmap (("AuthorizationType",) . toJSON) _apiGatewayMethodAuthorizationType
-    , fmap (("AuthorizerId",) . toJSON) _apiGatewayMethodAuthorizerId
-    , (Just . ("HttpMethod",) . toJSON) _apiGatewayMethodHttpMethod
-    , fmap (("Integration",) . toJSON) _apiGatewayMethodIntegration
-    , fmap (("MethodResponses",) . toJSON) _apiGatewayMethodMethodResponses
-    , fmap (("OperationName",) . toJSON) _apiGatewayMethodOperationName
-    , fmap (("RequestModels",) . toJSON) _apiGatewayMethodRequestModels
-    , fmap (("RequestParameters",) . toJSON) _apiGatewayMethodRequestParameters
-    , fmap (("RequestValidatorId",) . toJSON) _apiGatewayMethodRequestValidatorId
-    , (Just . ("ResourceId",) . toJSON) _apiGatewayMethodResourceId
-    , (Just . ("RestApiId",) . toJSON) _apiGatewayMethodRestApiId
-    ]
+instance ToResourceProperties ApiGatewayMethod where
+  toResourceProperties ApiGatewayMethod{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::Method"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ApiKeyRequired",) . toJSON . fmap Bool') _apiGatewayMethodApiKeyRequired
+        , fmap (("AuthorizationScopes",) . toJSON) _apiGatewayMethodAuthorizationScopes
+        , fmap (("AuthorizationType",) . toJSON) _apiGatewayMethodAuthorizationType
+        , fmap (("AuthorizerId",) . toJSON) _apiGatewayMethodAuthorizerId
+        , (Just . ("HttpMethod",) . toJSON) _apiGatewayMethodHttpMethod
+        , fmap (("Integration",) . toJSON) _apiGatewayMethodIntegration
+        , fmap (("MethodResponses",) . toJSON) _apiGatewayMethodMethodResponses
+        , fmap (("OperationName",) . toJSON) _apiGatewayMethodOperationName
+        , fmap (("RequestModels",) . toJSON) _apiGatewayMethodRequestModels
+        , fmap (("RequestParameters",) . toJSON) _apiGatewayMethodRequestParameters
+        , fmap (("RequestValidatorId",) . toJSON) _apiGatewayMethodRequestValidatorId
+        , (Just . ("ResourceId",) . toJSON) _apiGatewayMethodResourceId
+        , (Just . ("RestApiId",) . toJSON) _apiGatewayMethodRestApiId
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayMethod' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayModel.hs b/library-gen/Stratosphere/Resources/ApiGatewayModel.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayModel.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayModel.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-model.html
@@ -20,16 +21,19 @@
   , _apiGatewayModelSchema :: Maybe Object
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayModel where
-  toJSON ApiGatewayModel{..} =
-    object $
-    catMaybes
-    [ fmap (("ContentType",) . toJSON) _apiGatewayModelContentType
-    , fmap (("Description",) . toJSON) _apiGatewayModelDescription
-    , fmap (("Name",) . toJSON) _apiGatewayModelName
-    , (Just . ("RestApiId",) . toJSON) _apiGatewayModelRestApiId
-    , fmap (("Schema",) . toJSON) _apiGatewayModelSchema
-    ]
+instance ToResourceProperties ApiGatewayModel where
+  toResourceProperties ApiGatewayModel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::Model"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ContentType",) . toJSON) _apiGatewayModelContentType
+        , fmap (("Description",) . toJSON) _apiGatewayModelDescription
+        , fmap (("Name",) . toJSON) _apiGatewayModelName
+        , (Just . ("RestApiId",) . toJSON) _apiGatewayModelRestApiId
+        , fmap (("Schema",) . toJSON) _apiGatewayModelSchema
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayModel' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayRequestValidator.hs b/library-gen/Stratosphere/Resources/ApiGatewayRequestValidator.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayRequestValidator.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayRequestValidator.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-requestvalidator.html
@@ -19,15 +20,18 @@
   , _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 ToResourceProperties ApiGatewayRequestValidator where
+  toResourceProperties ApiGatewayRequestValidator{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::RequestValidator"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Name",) . toJSON) _apiGatewayRequestValidatorName
+        , (Just . ("RestApiId",) . toJSON) _apiGatewayRequestValidatorRestApiId
+        , fmap (("ValidateRequestBody",) . toJSON . fmap Bool') _apiGatewayRequestValidatorValidateRequestBody
+        , fmap (("ValidateRequestParameters",) . toJSON . fmap Bool') _apiGatewayRequestValidatorValidateRequestParameters
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayRequestValidator' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayResource.hs b/library-gen/Stratosphere/Resources/ApiGatewayResource.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayResource.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayResource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-resource.html
@@ -18,14 +19,17 @@
   , _apiGatewayResourceRestApiId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayResource where
-  toJSON ApiGatewayResource{..} =
-    object $
-    catMaybes
-    [ (Just . ("ParentId",) . toJSON) _apiGatewayResourceParentId
-    , (Just . ("PathPart",) . toJSON) _apiGatewayResourcePathPart
-    , (Just . ("RestApiId",) . toJSON) _apiGatewayResourceRestApiId
-    ]
+instance ToResourceProperties ApiGatewayResource where
+  toResourceProperties ApiGatewayResource{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::Resource"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ParentId",) . toJSON) _apiGatewayResourceParentId
+        , (Just . ("PathPart",) . toJSON) _apiGatewayResourcePathPart
+        , (Just . ("RestApiId",) . toJSON) _apiGatewayResourceRestApiId
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayResource' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayRestApi.hs b/library-gen/Stratosphere/Resources/ApiGatewayRestApi.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayRestApi.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayRestApi.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html
@@ -28,23 +29,26 @@
   , _apiGatewayRestApiPolicy :: Maybe Object
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayRestApi where
-  toJSON ApiGatewayRestApi{..} =
-    object $
-    catMaybes
-    [ fmap (("ApiKeySourceType",) . toJSON) _apiGatewayRestApiApiKeySourceType
-    , fmap (("BinaryMediaTypes",) . toJSON) _apiGatewayRestApiBinaryMediaTypes
-    , fmap (("Body",) . toJSON) _apiGatewayRestApiBody
-    , fmap (("BodyS3Location",) . toJSON) _apiGatewayRestApiBodyS3Location
-    , fmap (("CloneFrom",) . toJSON) _apiGatewayRestApiCloneFrom
-    , fmap (("Description",) . toJSON) _apiGatewayRestApiDescription
-    , fmap (("EndpointConfiguration",) . toJSON) _apiGatewayRestApiEndpointConfiguration
-    , fmap (("FailOnWarnings",) . toJSON . fmap Bool') _apiGatewayRestApiFailOnWarnings
-    , fmap (("MinimumCompressionSize",) . toJSON . fmap Integer') _apiGatewayRestApiMinimumCompressionSize
-    , fmap (("Name",) . toJSON) _apiGatewayRestApiName
-    , fmap (("Parameters",) . toJSON) _apiGatewayRestApiParameters
-    , fmap (("Policy",) . toJSON) _apiGatewayRestApiPolicy
-    ]
+instance ToResourceProperties ApiGatewayRestApi where
+  toResourceProperties ApiGatewayRestApi{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::RestApi"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ApiKeySourceType",) . toJSON) _apiGatewayRestApiApiKeySourceType
+        , fmap (("BinaryMediaTypes",) . toJSON) _apiGatewayRestApiBinaryMediaTypes
+        , fmap (("Body",) . toJSON) _apiGatewayRestApiBody
+        , fmap (("BodyS3Location",) . toJSON) _apiGatewayRestApiBodyS3Location
+        , fmap (("CloneFrom",) . toJSON) _apiGatewayRestApiCloneFrom
+        , fmap (("Description",) . toJSON) _apiGatewayRestApiDescription
+        , fmap (("EndpointConfiguration",) . toJSON) _apiGatewayRestApiEndpointConfiguration
+        , fmap (("FailOnWarnings",) . toJSON . fmap Bool') _apiGatewayRestApiFailOnWarnings
+        , fmap (("MinimumCompressionSize",) . toJSON . fmap Integer') _apiGatewayRestApiMinimumCompressionSize
+        , fmap (("Name",) . toJSON) _apiGatewayRestApiName
+        , fmap (("Parameters",) . toJSON) _apiGatewayRestApiParameters
+        , fmap (("Policy",) . toJSON) _apiGatewayRestApiPolicy
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayRestApi' containing required fields as
 -- arguments.
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html
@@ -32,25 +33,28 @@
   , _apiGatewayStageVariables :: Maybe Object
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayStage where
-  toJSON ApiGatewayStage{..} =
-    object $
-    catMaybes
-    [ fmap (("AccessLogSetting",) . toJSON) _apiGatewayStageAccessLogSetting
-    , fmap (("CacheClusterEnabled",) . toJSON . fmap Bool') _apiGatewayStageCacheClusterEnabled
-    , fmap (("CacheClusterSize",) . toJSON) _apiGatewayStageCacheClusterSize
-    , fmap (("CanarySetting",) . toJSON) _apiGatewayStageCanarySetting
-    , fmap (("ClientCertificateId",) . toJSON) _apiGatewayStageClientCertificateId
-    , fmap (("DeploymentId",) . toJSON) _apiGatewayStageDeploymentId
-    , fmap (("Description",) . toJSON) _apiGatewayStageDescription
-    , fmap (("DocumentationVersion",) . toJSON) _apiGatewayStageDocumentationVersion
-    , fmap (("MethodSettings",) . toJSON) _apiGatewayStageMethodSettings
-    , (Just . ("RestApiId",) . toJSON) _apiGatewayStageRestApiId
-    , fmap (("StageName",) . toJSON) _apiGatewayStageStageName
-    , fmap (("Tags",) . toJSON) _apiGatewayStageTags
-    , fmap (("TracingEnabled",) . toJSON . fmap Bool') _apiGatewayStageTracingEnabled
-    , fmap (("Variables",) . toJSON) _apiGatewayStageVariables
-    ]
+instance ToResourceProperties ApiGatewayStage where
+  toResourceProperties ApiGatewayStage{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::Stage"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AccessLogSetting",) . toJSON) _apiGatewayStageAccessLogSetting
+        , fmap (("CacheClusterEnabled",) . toJSON . fmap Bool') _apiGatewayStageCacheClusterEnabled
+        , fmap (("CacheClusterSize",) . toJSON) _apiGatewayStageCacheClusterSize
+        , fmap (("CanarySetting",) . toJSON) _apiGatewayStageCanarySetting
+        , fmap (("ClientCertificateId",) . toJSON) _apiGatewayStageClientCertificateId
+        , fmap (("DeploymentId",) . toJSON) _apiGatewayStageDeploymentId
+        , fmap (("Description",) . toJSON) _apiGatewayStageDescription
+        , fmap (("DocumentationVersion",) . toJSON) _apiGatewayStageDocumentationVersion
+        , fmap (("MethodSettings",) . toJSON) _apiGatewayStageMethodSettings
+        , (Just . ("RestApiId",) . toJSON) _apiGatewayStageRestApiId
+        , fmap (("StageName",) . toJSON) _apiGatewayStageStageName
+        , fmap (("Tags",) . toJSON) _apiGatewayStageTags
+        , fmap (("TracingEnabled",) . toJSON . fmap Bool') _apiGatewayStageTracingEnabled
+        , fmap (("Variables",) . toJSON) _apiGatewayStageVariables
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayStage' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayUsagePlan.hs b/library-gen/Stratosphere/Resources/ApiGatewayUsagePlan.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayUsagePlan.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayUsagePlan.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplan.html
@@ -22,16 +23,19 @@
   , _apiGatewayUsagePlanUsagePlanName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayUsagePlan where
-  toJSON ApiGatewayUsagePlan{..} =
-    object $
-    catMaybes
-    [ fmap (("ApiStages",) . toJSON) _apiGatewayUsagePlanApiStages
-    , fmap (("Description",) . toJSON) _apiGatewayUsagePlanDescription
-    , fmap (("Quota",) . toJSON) _apiGatewayUsagePlanQuota
-    , fmap (("Throttle",) . toJSON) _apiGatewayUsagePlanThrottle
-    , fmap (("UsagePlanName",) . toJSON) _apiGatewayUsagePlanUsagePlanName
-    ]
+instance ToResourceProperties ApiGatewayUsagePlan where
+  toResourceProperties ApiGatewayUsagePlan{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::UsagePlan"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ApiStages",) . toJSON) _apiGatewayUsagePlanApiStages
+        , fmap (("Description",) . toJSON) _apiGatewayUsagePlanDescription
+        , fmap (("Quota",) . toJSON) _apiGatewayUsagePlanQuota
+        , fmap (("Throttle",) . toJSON) _apiGatewayUsagePlanThrottle
+        , fmap (("UsagePlanName",) . toJSON) _apiGatewayUsagePlanUsagePlanName
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayUsagePlan' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayUsagePlanKey.hs b/library-gen/Stratosphere/Resources/ApiGatewayUsagePlanKey.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayUsagePlanKey.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayUsagePlanKey.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplankey.html
@@ -18,14 +19,17 @@
   , _apiGatewayUsagePlanKeyUsagePlanId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayUsagePlanKey where
-  toJSON ApiGatewayUsagePlanKey{..} =
-    object $
-    catMaybes
-    [ (Just . ("KeyId",) . toJSON) _apiGatewayUsagePlanKeyKeyId
-    , (Just . ("KeyType",) . toJSON) _apiGatewayUsagePlanKeyKeyType
-    , (Just . ("UsagePlanId",) . toJSON) _apiGatewayUsagePlanKeyUsagePlanId
-    ]
+instance ToResourceProperties ApiGatewayUsagePlanKey where
+  toResourceProperties ApiGatewayUsagePlanKey{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::UsagePlanKey"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("KeyId",) . toJSON) _apiGatewayUsagePlanKeyKeyId
+        , (Just . ("KeyType",) . toJSON) _apiGatewayUsagePlanKeyKeyType
+        , (Just . ("UsagePlanId",) . toJSON) _apiGatewayUsagePlanKeyUsagePlanId
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayUsagePlanKey' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayV2Api.hs b/library-gen/Stratosphere/Resources/ApiGatewayV2Api.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayV2Api.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayV2Api.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html
@@ -22,18 +23,21 @@
   , _apiGatewayV2ApiVersion :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayV2Api where
-  toJSON ApiGatewayV2Api{..} =
-    object $
-    catMaybes
-    [ fmap (("ApiKeySelectionExpression",) . toJSON) _apiGatewayV2ApiApiKeySelectionExpression
-    , fmap (("Description",) . toJSON) _apiGatewayV2ApiDescription
-    , fmap (("DisableSchemaValidation",) . toJSON . fmap Bool') _apiGatewayV2ApiDisableSchemaValidation
-    , (Just . ("Name",) . toJSON) _apiGatewayV2ApiName
-    , (Just . ("ProtocolType",) . toJSON) _apiGatewayV2ApiProtocolType
-    , (Just . ("RouteSelectionExpression",) . toJSON) _apiGatewayV2ApiRouteSelectionExpression
-    , fmap (("Version",) . toJSON) _apiGatewayV2ApiVersion
-    ]
+instance ToResourceProperties ApiGatewayV2Api where
+  toResourceProperties ApiGatewayV2Api{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGatewayV2::Api"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ApiKeySelectionExpression",) . toJSON) _apiGatewayV2ApiApiKeySelectionExpression
+        , fmap (("Description",) . toJSON) _apiGatewayV2ApiDescription
+        , fmap (("DisableSchemaValidation",) . toJSON . fmap Bool') _apiGatewayV2ApiDisableSchemaValidation
+        , (Just . ("Name",) . toJSON) _apiGatewayV2ApiName
+        , (Just . ("ProtocolType",) . toJSON) _apiGatewayV2ApiProtocolType
+        , (Just . ("RouteSelectionExpression",) . toJSON) _apiGatewayV2ApiRouteSelectionExpression
+        , fmap (("Version",) . toJSON) _apiGatewayV2ApiVersion
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayV2Api' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayV2Authorizer.hs b/library-gen/Stratosphere/Resources/ApiGatewayV2Authorizer.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayV2Authorizer.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayV2Authorizer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-authorizer.html
@@ -23,19 +24,22 @@
   , _apiGatewayV2AuthorizerName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayV2Authorizer where
-  toJSON ApiGatewayV2Authorizer{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApiId",) . toJSON) _apiGatewayV2AuthorizerApiId
-    , fmap (("AuthorizerCredentialsArn",) . toJSON) _apiGatewayV2AuthorizerAuthorizerCredentialsArn
-    , fmap (("AuthorizerResultTtlInSeconds",) . toJSON . fmap Integer') _apiGatewayV2AuthorizerAuthorizerResultTtlInSeconds
-    , (Just . ("AuthorizerType",) . toJSON) _apiGatewayV2AuthorizerAuthorizerType
-    , (Just . ("AuthorizerUri",) . toJSON) _apiGatewayV2AuthorizerAuthorizerUri
-    , (Just . ("IdentitySource",) . toJSON) _apiGatewayV2AuthorizerIdentitySource
-    , fmap (("IdentityValidationExpression",) . toJSON) _apiGatewayV2AuthorizerIdentityValidationExpression
-    , (Just . ("Name",) . toJSON) _apiGatewayV2AuthorizerName
-    ]
+instance ToResourceProperties ApiGatewayV2Authorizer where
+  toResourceProperties ApiGatewayV2Authorizer{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGatewayV2::Authorizer"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApiId",) . toJSON) _apiGatewayV2AuthorizerApiId
+        , fmap (("AuthorizerCredentialsArn",) . toJSON) _apiGatewayV2AuthorizerAuthorizerCredentialsArn
+        , fmap (("AuthorizerResultTtlInSeconds",) . toJSON . fmap Integer') _apiGatewayV2AuthorizerAuthorizerResultTtlInSeconds
+        , (Just . ("AuthorizerType",) . toJSON) _apiGatewayV2AuthorizerAuthorizerType
+        , (Just . ("AuthorizerUri",) . toJSON) _apiGatewayV2AuthorizerAuthorizerUri
+        , (Just . ("IdentitySource",) . toJSON) _apiGatewayV2AuthorizerIdentitySource
+        , fmap (("IdentityValidationExpression",) . toJSON) _apiGatewayV2AuthorizerIdentityValidationExpression
+        , (Just . ("Name",) . toJSON) _apiGatewayV2AuthorizerName
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayV2Authorizer' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayV2Deployment.hs b/library-gen/Stratosphere/Resources/ApiGatewayV2Deployment.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayV2Deployment.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayV2Deployment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-deployment.html
@@ -18,14 +19,17 @@
   , _apiGatewayV2DeploymentStageName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayV2Deployment where
-  toJSON ApiGatewayV2Deployment{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApiId",) . toJSON) _apiGatewayV2DeploymentApiId
-    , fmap (("Description",) . toJSON) _apiGatewayV2DeploymentDescription
-    , fmap (("StageName",) . toJSON) _apiGatewayV2DeploymentStageName
-    ]
+instance ToResourceProperties ApiGatewayV2Deployment where
+  toResourceProperties ApiGatewayV2Deployment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGatewayV2::Deployment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApiId",) . toJSON) _apiGatewayV2DeploymentApiId
+        , fmap (("Description",) . toJSON) _apiGatewayV2DeploymentDescription
+        , fmap (("StageName",) . toJSON) _apiGatewayV2DeploymentStageName
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayV2Deployment' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayV2Integration.hs b/library-gen/Stratosphere/Resources/ApiGatewayV2Integration.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayV2Integration.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayV2Integration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html
@@ -28,24 +29,27 @@
   , _apiGatewayV2IntegrationTimeoutInMillis :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayV2Integration where
-  toJSON ApiGatewayV2Integration{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApiId",) . toJSON) _apiGatewayV2IntegrationApiId
-    , fmap (("ConnectionType",) . toJSON) _apiGatewayV2IntegrationConnectionType
-    , fmap (("ContentHandlingStrategy",) . toJSON) _apiGatewayV2IntegrationContentHandlingStrategy
-    , fmap (("CredentialsArn",) . toJSON) _apiGatewayV2IntegrationCredentialsArn
-    , fmap (("Description",) . toJSON) _apiGatewayV2IntegrationDescription
-    , fmap (("IntegrationMethod",) . toJSON) _apiGatewayV2IntegrationIntegrationMethod
-    , (Just . ("IntegrationType",) . toJSON) _apiGatewayV2IntegrationIntegrationType
-    , fmap (("IntegrationUri",) . toJSON) _apiGatewayV2IntegrationIntegrationUri
-    , fmap (("PassthroughBehavior",) . toJSON) _apiGatewayV2IntegrationPassthroughBehavior
-    , fmap (("RequestParameters",) . toJSON) _apiGatewayV2IntegrationRequestParameters
-    , fmap (("RequestTemplates",) . toJSON) _apiGatewayV2IntegrationRequestTemplates
-    , fmap (("TemplateSelectionExpression",) . toJSON) _apiGatewayV2IntegrationTemplateSelectionExpression
-    , fmap (("TimeoutInMillis",) . toJSON . fmap Integer') _apiGatewayV2IntegrationTimeoutInMillis
-    ]
+instance ToResourceProperties ApiGatewayV2Integration where
+  toResourceProperties ApiGatewayV2Integration{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGatewayV2::Integration"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApiId",) . toJSON) _apiGatewayV2IntegrationApiId
+        , fmap (("ConnectionType",) . toJSON) _apiGatewayV2IntegrationConnectionType
+        , fmap (("ContentHandlingStrategy",) . toJSON) _apiGatewayV2IntegrationContentHandlingStrategy
+        , fmap (("CredentialsArn",) . toJSON) _apiGatewayV2IntegrationCredentialsArn
+        , fmap (("Description",) . toJSON) _apiGatewayV2IntegrationDescription
+        , fmap (("IntegrationMethod",) . toJSON) _apiGatewayV2IntegrationIntegrationMethod
+        , (Just . ("IntegrationType",) . toJSON) _apiGatewayV2IntegrationIntegrationType
+        , fmap (("IntegrationUri",) . toJSON) _apiGatewayV2IntegrationIntegrationUri
+        , fmap (("PassthroughBehavior",) . toJSON) _apiGatewayV2IntegrationPassthroughBehavior
+        , fmap (("RequestParameters",) . toJSON) _apiGatewayV2IntegrationRequestParameters
+        , fmap (("RequestTemplates",) . toJSON) _apiGatewayV2IntegrationRequestTemplates
+        , fmap (("TemplateSelectionExpression",) . toJSON) _apiGatewayV2IntegrationTemplateSelectionExpression
+        , fmap (("TimeoutInMillis",) . toJSON . fmap Integer') _apiGatewayV2IntegrationTimeoutInMillis
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayV2Integration' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayV2IntegrationResponse.hs b/library-gen/Stratosphere/Resources/ApiGatewayV2IntegrationResponse.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayV2IntegrationResponse.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayV2IntegrationResponse.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integrationresponse.html
@@ -22,18 +23,21 @@
   , _apiGatewayV2IntegrationResponseTemplateSelectionExpression :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayV2IntegrationResponse where
-  toJSON ApiGatewayV2IntegrationResponse{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApiId",) . toJSON) _apiGatewayV2IntegrationResponseApiId
-    , fmap (("ContentHandlingStrategy",) . toJSON) _apiGatewayV2IntegrationResponseContentHandlingStrategy
-    , (Just . ("IntegrationId",) . toJSON) _apiGatewayV2IntegrationResponseIntegrationId
-    , (Just . ("IntegrationResponseKey",) . toJSON) _apiGatewayV2IntegrationResponseIntegrationResponseKey
-    , fmap (("ResponseParameters",) . toJSON) _apiGatewayV2IntegrationResponseResponseParameters
-    , fmap (("ResponseTemplates",) . toJSON) _apiGatewayV2IntegrationResponseResponseTemplates
-    , fmap (("TemplateSelectionExpression",) . toJSON) _apiGatewayV2IntegrationResponseTemplateSelectionExpression
-    ]
+instance ToResourceProperties ApiGatewayV2IntegrationResponse where
+  toResourceProperties ApiGatewayV2IntegrationResponse{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGatewayV2::IntegrationResponse"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApiId",) . toJSON) _apiGatewayV2IntegrationResponseApiId
+        , fmap (("ContentHandlingStrategy",) . toJSON) _apiGatewayV2IntegrationResponseContentHandlingStrategy
+        , (Just . ("IntegrationId",) . toJSON) _apiGatewayV2IntegrationResponseIntegrationId
+        , (Just . ("IntegrationResponseKey",) . toJSON) _apiGatewayV2IntegrationResponseIntegrationResponseKey
+        , fmap (("ResponseParameters",) . toJSON) _apiGatewayV2IntegrationResponseResponseParameters
+        , fmap (("ResponseTemplates",) . toJSON) _apiGatewayV2IntegrationResponseResponseTemplates
+        , fmap (("TemplateSelectionExpression",) . toJSON) _apiGatewayV2IntegrationResponseTemplateSelectionExpression
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayV2IntegrationResponse' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayV2Model.hs b/library-gen/Stratosphere/Resources/ApiGatewayV2Model.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayV2Model.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayV2Model.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-model.html
@@ -20,16 +21,19 @@
   , _apiGatewayV2ModelSchema :: Object
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayV2Model where
-  toJSON ApiGatewayV2Model{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApiId",) . toJSON) _apiGatewayV2ModelApiId
-    , fmap (("ContentType",) . toJSON) _apiGatewayV2ModelContentType
-    , fmap (("Description",) . toJSON) _apiGatewayV2ModelDescription
-    , (Just . ("Name",) . toJSON) _apiGatewayV2ModelName
-    , (Just . ("Schema",) . toJSON) _apiGatewayV2ModelSchema
-    ]
+instance ToResourceProperties ApiGatewayV2Model where
+  toResourceProperties ApiGatewayV2Model{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGatewayV2::Model"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApiId",) . toJSON) _apiGatewayV2ModelApiId
+        , fmap (("ContentType",) . toJSON) _apiGatewayV2ModelContentType
+        , fmap (("Description",) . toJSON) _apiGatewayV2ModelDescription
+        , (Just . ("Name",) . toJSON) _apiGatewayV2ModelName
+        , (Just . ("Schema",) . toJSON) _apiGatewayV2ModelSchema
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayV2Model' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayV2Route.hs b/library-gen/Stratosphere/Resources/ApiGatewayV2Route.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayV2Route.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayV2Route.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html
@@ -27,23 +28,26 @@
   , _apiGatewayV2RouteTarget :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayV2Route where
-  toJSON ApiGatewayV2Route{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApiId",) . toJSON) _apiGatewayV2RouteApiId
-    , fmap (("ApiKeyRequired",) . toJSON . fmap Bool') _apiGatewayV2RouteApiKeyRequired
-    , fmap (("AuthorizationScopes",) . toJSON) _apiGatewayV2RouteAuthorizationScopes
-    , fmap (("AuthorizationType",) . toJSON) _apiGatewayV2RouteAuthorizationType
-    , fmap (("AuthorizerId",) . toJSON) _apiGatewayV2RouteAuthorizerId
-    , fmap (("ModelSelectionExpression",) . toJSON) _apiGatewayV2RouteModelSelectionExpression
-    , fmap (("OperationName",) . toJSON) _apiGatewayV2RouteOperationName
-    , fmap (("RequestModels",) . toJSON) _apiGatewayV2RouteRequestModels
-    , fmap (("RequestParameters",) . toJSON) _apiGatewayV2RouteRequestParameters
-    , (Just . ("RouteKey",) . toJSON) _apiGatewayV2RouteRouteKey
-    , fmap (("RouteResponseSelectionExpression",) . toJSON) _apiGatewayV2RouteRouteResponseSelectionExpression
-    , fmap (("Target",) . toJSON) _apiGatewayV2RouteTarget
-    ]
+instance ToResourceProperties ApiGatewayV2Route where
+  toResourceProperties ApiGatewayV2Route{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGatewayV2::Route"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApiId",) . toJSON) _apiGatewayV2RouteApiId
+        , fmap (("ApiKeyRequired",) . toJSON . fmap Bool') _apiGatewayV2RouteApiKeyRequired
+        , fmap (("AuthorizationScopes",) . toJSON) _apiGatewayV2RouteAuthorizationScopes
+        , fmap (("AuthorizationType",) . toJSON) _apiGatewayV2RouteAuthorizationType
+        , fmap (("AuthorizerId",) . toJSON) _apiGatewayV2RouteAuthorizerId
+        , fmap (("ModelSelectionExpression",) . toJSON) _apiGatewayV2RouteModelSelectionExpression
+        , fmap (("OperationName",) . toJSON) _apiGatewayV2RouteOperationName
+        , fmap (("RequestModels",) . toJSON) _apiGatewayV2RouteRequestModels
+        , fmap (("RequestParameters",) . toJSON) _apiGatewayV2RouteRequestParameters
+        , (Just . ("RouteKey",) . toJSON) _apiGatewayV2RouteRouteKey
+        , fmap (("RouteResponseSelectionExpression",) . toJSON) _apiGatewayV2RouteRouteResponseSelectionExpression
+        , fmap (("Target",) . toJSON) _apiGatewayV2RouteTarget
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayV2Route' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayV2RouteResponse.hs b/library-gen/Stratosphere/Resources/ApiGatewayV2RouteResponse.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayV2RouteResponse.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayV2RouteResponse.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-routeresponse.html
@@ -21,17 +22,20 @@
   , _apiGatewayV2RouteResponseRouteResponseKey :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayV2RouteResponse where
-  toJSON ApiGatewayV2RouteResponse{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApiId",) . toJSON) _apiGatewayV2RouteResponseApiId
-    , fmap (("ModelSelectionExpression",) . toJSON) _apiGatewayV2RouteResponseModelSelectionExpression
-    , fmap (("ResponseModels",) . toJSON) _apiGatewayV2RouteResponseResponseModels
-    , fmap (("ResponseParameters",) . toJSON) _apiGatewayV2RouteResponseResponseParameters
-    , (Just . ("RouteId",) . toJSON) _apiGatewayV2RouteResponseRouteId
-    , (Just . ("RouteResponseKey",) . toJSON) _apiGatewayV2RouteResponseRouteResponseKey
-    ]
+instance ToResourceProperties ApiGatewayV2RouteResponse where
+  toResourceProperties ApiGatewayV2RouteResponse{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGatewayV2::RouteResponse"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApiId",) . toJSON) _apiGatewayV2RouteResponseApiId
+        , fmap (("ModelSelectionExpression",) . toJSON) _apiGatewayV2RouteResponseModelSelectionExpression
+        , fmap (("ResponseModels",) . toJSON) _apiGatewayV2RouteResponseResponseModels
+        , fmap (("ResponseParameters",) . toJSON) _apiGatewayV2RouteResponseResponseParameters
+        , (Just . ("RouteId",) . toJSON) _apiGatewayV2RouteResponseRouteId
+        , (Just . ("RouteResponseKey",) . toJSON) _apiGatewayV2RouteResponseRouteResponseKey
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayV2RouteResponse' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayV2Stage.hs b/library-gen/Stratosphere/Resources/ApiGatewayV2Stage.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayV2Stage.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayV2Stage.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html
@@ -25,20 +26,23 @@
   , _apiGatewayV2StageStageVariables :: Maybe Object
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayV2Stage where
-  toJSON ApiGatewayV2Stage{..} =
-    object $
-    catMaybes
-    [ fmap (("AccessLogSettings",) . toJSON) _apiGatewayV2StageAccessLogSettings
-    , (Just . ("ApiId",) . toJSON) _apiGatewayV2StageApiId
-    , fmap (("ClientCertificateId",) . toJSON) _apiGatewayV2StageClientCertificateId
-    , fmap (("DefaultRouteSettings",) . toJSON) _apiGatewayV2StageDefaultRouteSettings
-    , (Just . ("DeploymentId",) . toJSON) _apiGatewayV2StageDeploymentId
-    , fmap (("Description",) . toJSON) _apiGatewayV2StageDescription
-    , fmap (("RouteSettings",) . toJSON) _apiGatewayV2StageRouteSettings
-    , (Just . ("StageName",) . toJSON) _apiGatewayV2StageStageName
-    , fmap (("StageVariables",) . toJSON) _apiGatewayV2StageStageVariables
-    ]
+instance ToResourceProperties ApiGatewayV2Stage where
+  toResourceProperties ApiGatewayV2Stage{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGatewayV2::Stage"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AccessLogSettings",) . toJSON) _apiGatewayV2StageAccessLogSettings
+        , (Just . ("ApiId",) . toJSON) _apiGatewayV2StageApiId
+        , fmap (("ClientCertificateId",) . toJSON) _apiGatewayV2StageClientCertificateId
+        , fmap (("DefaultRouteSettings",) . toJSON) _apiGatewayV2StageDefaultRouteSettings
+        , (Just . ("DeploymentId",) . toJSON) _apiGatewayV2StageDeploymentId
+        , fmap (("Description",) . toJSON) _apiGatewayV2StageDescription
+        , fmap (("RouteSettings",) . toJSON) _apiGatewayV2StageRouteSettings
+        , (Just . ("StageName",) . toJSON) _apiGatewayV2StageStageName
+        , fmap (("StageVariables",) . toJSON) _apiGatewayV2StageStageVariables
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayV2Stage' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayVpcLink.hs b/library-gen/Stratosphere/Resources/ApiGatewayVpcLink.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayVpcLink.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayVpcLink.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-vpclink.html
@@ -18,14 +19,17 @@
   , _apiGatewayVpcLinkTargetArns :: ValList Text
   } deriving (Show, Eq)
 
-instance ToJSON ApiGatewayVpcLink where
-  toJSON ApiGatewayVpcLink{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _apiGatewayVpcLinkDescription
-    , (Just . ("Name",) . toJSON) _apiGatewayVpcLinkName
-    , (Just . ("TargetArns",) . toJSON) _apiGatewayVpcLinkTargetArns
-    ]
+instance ToResourceProperties ApiGatewayVpcLink where
+  toResourceProperties ApiGatewayVpcLink{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApiGateway::VpcLink"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _apiGatewayVpcLinkDescription
+        , (Just . ("Name",) . toJSON) _apiGatewayVpcLinkName
+        , (Just . ("TargetArns",) . toJSON) _apiGatewayVpcLinkTargetArns
+        ]
+    }
 
 -- | Constructor for 'ApiGatewayVpcLink' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/AppStreamDirectoryConfig.hs b/library-gen/Stratosphere/Resources/AppStreamDirectoryConfig.hs
--- a/library-gen/Stratosphere/Resources/AppStreamDirectoryConfig.hs
+++ b/library-gen/Stratosphere/Resources/AppStreamDirectoryConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-directoryconfig.html
@@ -18,14 +19,17 @@
   , _appStreamDirectoryConfigServiceAccountCredentials :: AppStreamDirectoryConfigServiceAccountCredentials
   } deriving (Show, Eq)
 
-instance ToJSON AppStreamDirectoryConfig where
-  toJSON AppStreamDirectoryConfig{..} =
-    object $
-    catMaybes
-    [ (Just . ("DirectoryName",) . toJSON) _appStreamDirectoryConfigDirectoryName
-    , (Just . ("OrganizationalUnitDistinguishedNames",) . toJSON) _appStreamDirectoryConfigOrganizationalUnitDistinguishedNames
-    , (Just . ("ServiceAccountCredentials",) . toJSON) _appStreamDirectoryConfigServiceAccountCredentials
-    ]
+instance ToResourceProperties AppStreamDirectoryConfig where
+  toResourceProperties AppStreamDirectoryConfig{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppStream::DirectoryConfig"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DirectoryName",) . toJSON) _appStreamDirectoryConfigDirectoryName
+        , (Just . ("OrganizationalUnitDistinguishedNames",) . toJSON) _appStreamDirectoryConfigOrganizationalUnitDistinguishedNames
+        , (Just . ("ServiceAccountCredentials",) . toJSON) _appStreamDirectoryConfigServiceAccountCredentials
+        ]
+    }
 
 -- | Constructor for 'AppStreamDirectoryConfig' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/AppStreamFleet.hs b/library-gen/Stratosphere/Resources/AppStreamFleet.hs
--- a/library-gen/Stratosphere/Resources/AppStreamFleet.hs
+++ b/library-gen/Stratosphere/Resources/AppStreamFleet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html
@@ -30,24 +31,27 @@
   , _appStreamFleetVpcConfig :: Maybe AppStreamFleetVpcConfig
   } deriving (Show, Eq)
 
-instance ToJSON AppStreamFleet where
-  toJSON AppStreamFleet{..} =
-    object $
-    catMaybes
-    [ (Just . ("ComputeCapacity",) . toJSON) _appStreamFleetComputeCapacity
-    , fmap (("Description",) . toJSON) _appStreamFleetDescription
-    , fmap (("DisconnectTimeoutInSeconds",) . toJSON . fmap Integer') _appStreamFleetDisconnectTimeoutInSeconds
-    , fmap (("DisplayName",) . toJSON) _appStreamFleetDisplayName
-    , fmap (("DomainJoinInfo",) . toJSON) _appStreamFleetDomainJoinInfo
-    , fmap (("EnableDefaultInternetAccess",) . toJSON . fmap Bool') _appStreamFleetEnableDefaultInternetAccess
-    , fmap (("FleetType",) . toJSON) _appStreamFleetFleetType
-    , fmap (("ImageArn",) . toJSON) _appStreamFleetImageArn
-    , fmap (("ImageName",) . toJSON) _appStreamFleetImageName
-    , (Just . ("InstanceType",) . toJSON) _appStreamFleetInstanceType
-    , fmap (("MaxUserDurationInSeconds",) . toJSON . fmap Integer') _appStreamFleetMaxUserDurationInSeconds
-    , fmap (("Name",) . toJSON) _appStreamFleetName
-    , fmap (("VpcConfig",) . toJSON) _appStreamFleetVpcConfig
-    ]
+instance ToResourceProperties AppStreamFleet where
+  toResourceProperties AppStreamFleet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppStream::Fleet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ComputeCapacity",) . toJSON) _appStreamFleetComputeCapacity
+        , fmap (("Description",) . toJSON) _appStreamFleetDescription
+        , fmap (("DisconnectTimeoutInSeconds",) . toJSON . fmap Integer') _appStreamFleetDisconnectTimeoutInSeconds
+        , fmap (("DisplayName",) . toJSON) _appStreamFleetDisplayName
+        , fmap (("DomainJoinInfo",) . toJSON) _appStreamFleetDomainJoinInfo
+        , fmap (("EnableDefaultInternetAccess",) . toJSON . fmap Bool') _appStreamFleetEnableDefaultInternetAccess
+        , fmap (("FleetType",) . toJSON) _appStreamFleetFleetType
+        , fmap (("ImageArn",) . toJSON) _appStreamFleetImageArn
+        , fmap (("ImageName",) . toJSON) _appStreamFleetImageName
+        , (Just . ("InstanceType",) . toJSON) _appStreamFleetInstanceType
+        , fmap (("MaxUserDurationInSeconds",) . toJSON . fmap Integer') _appStreamFleetMaxUserDurationInSeconds
+        , fmap (("Name",) . toJSON) _appStreamFleetName
+        , fmap (("VpcConfig",) . toJSON) _appStreamFleetVpcConfig
+        ]
+    }
 
 -- | Constructor for 'AppStreamFleet' containing required fields as arguments.
 appStreamFleet
diff --git a/library-gen/Stratosphere/Resources/AppStreamImageBuilder.hs b/library-gen/Stratosphere/Resources/AppStreamImageBuilder.hs
--- a/library-gen/Stratosphere/Resources/AppStreamImageBuilder.hs
+++ b/library-gen/Stratosphere/Resources/AppStreamImageBuilder.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-imagebuilder.html
@@ -26,21 +27,24 @@
   , _appStreamImageBuilderVpcConfig :: Maybe AppStreamImageBuilderVpcConfig
   } deriving (Show, Eq)
 
-instance ToJSON AppStreamImageBuilder where
-  toJSON AppStreamImageBuilder{..} =
-    object $
-    catMaybes
-    [ fmap (("AppstreamAgentVersion",) . toJSON) _appStreamImageBuilderAppstreamAgentVersion
-    , fmap (("Description",) . toJSON) _appStreamImageBuilderDescription
-    , fmap (("DisplayName",) . toJSON) _appStreamImageBuilderDisplayName
-    , fmap (("DomainJoinInfo",) . toJSON) _appStreamImageBuilderDomainJoinInfo
-    , fmap (("EnableDefaultInternetAccess",) . toJSON . fmap Bool') _appStreamImageBuilderEnableDefaultInternetAccess
-    , fmap (("ImageArn",) . toJSON) _appStreamImageBuilderImageArn
-    , fmap (("ImageName",) . toJSON) _appStreamImageBuilderImageName
-    , (Just . ("InstanceType",) . toJSON) _appStreamImageBuilderInstanceType
-    , fmap (("Name",) . toJSON) _appStreamImageBuilderName
-    , fmap (("VpcConfig",) . toJSON) _appStreamImageBuilderVpcConfig
-    ]
+instance ToResourceProperties AppStreamImageBuilder where
+  toResourceProperties AppStreamImageBuilder{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppStream::ImageBuilder"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AppstreamAgentVersion",) . toJSON) _appStreamImageBuilderAppstreamAgentVersion
+        , fmap (("Description",) . toJSON) _appStreamImageBuilderDescription
+        , fmap (("DisplayName",) . toJSON) _appStreamImageBuilderDisplayName
+        , fmap (("DomainJoinInfo",) . toJSON) _appStreamImageBuilderDomainJoinInfo
+        , fmap (("EnableDefaultInternetAccess",) . toJSON . fmap Bool') _appStreamImageBuilderEnableDefaultInternetAccess
+        , fmap (("ImageArn",) . toJSON) _appStreamImageBuilderImageArn
+        , fmap (("ImageName",) . toJSON) _appStreamImageBuilderImageName
+        , (Just . ("InstanceType",) . toJSON) _appStreamImageBuilderInstanceType
+        , fmap (("Name",) . toJSON) _appStreamImageBuilderName
+        , fmap (("VpcConfig",) . toJSON) _appStreamImageBuilderVpcConfig
+        ]
+    }
 
 -- | Constructor for 'AppStreamImageBuilder' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/AppStreamStack.hs b/library-gen/Stratosphere/Resources/AppStreamStack.hs
--- a/library-gen/Stratosphere/Resources/AppStreamStack.hs
+++ b/library-gen/Stratosphere/Resources/AppStreamStack.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-stack.html
@@ -27,21 +28,24 @@
   , _appStreamStackUserSettings :: Maybe [AppStreamStackUserSetting]
   } deriving (Show, Eq)
 
-instance ToJSON AppStreamStack where
-  toJSON AppStreamStack{..} =
-    object $
-    catMaybes
-    [ fmap (("ApplicationSettings",) . toJSON) _appStreamStackApplicationSettings
-    , fmap (("AttributesToDelete",) . toJSON) _appStreamStackAttributesToDelete
-    , fmap (("DeleteStorageConnectors",) . toJSON . fmap Bool') _appStreamStackDeleteStorageConnectors
-    , fmap (("Description",) . toJSON) _appStreamStackDescription
-    , fmap (("DisplayName",) . toJSON) _appStreamStackDisplayName
-    , fmap (("FeedbackURL",) . toJSON) _appStreamStackFeedbackURL
-    , fmap (("Name",) . toJSON) _appStreamStackName
-    , fmap (("RedirectURL",) . toJSON) _appStreamStackRedirectURL
-    , fmap (("StorageConnectors",) . toJSON) _appStreamStackStorageConnectors
-    , fmap (("UserSettings",) . toJSON) _appStreamStackUserSettings
-    ]
+instance ToResourceProperties AppStreamStack where
+  toResourceProperties AppStreamStack{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppStream::Stack"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ApplicationSettings",) . toJSON) _appStreamStackApplicationSettings
+        , fmap (("AttributesToDelete",) . toJSON) _appStreamStackAttributesToDelete
+        , fmap (("DeleteStorageConnectors",) . toJSON . fmap Bool') _appStreamStackDeleteStorageConnectors
+        , fmap (("Description",) . toJSON) _appStreamStackDescription
+        , fmap (("DisplayName",) . toJSON) _appStreamStackDisplayName
+        , fmap (("FeedbackURL",) . toJSON) _appStreamStackFeedbackURL
+        , fmap (("Name",) . toJSON) _appStreamStackName
+        , fmap (("RedirectURL",) . toJSON) _appStreamStackRedirectURL
+        , fmap (("StorageConnectors",) . toJSON) _appStreamStackStorageConnectors
+        , fmap (("UserSettings",) . toJSON) _appStreamStackUserSettings
+        ]
+    }
 
 -- | Constructor for 'AppStreamStack' containing required fields as arguments.
 appStreamStack
diff --git a/library-gen/Stratosphere/Resources/AppStreamStackFleetAssociation.hs b/library-gen/Stratosphere/Resources/AppStreamStackFleetAssociation.hs
--- a/library-gen/Stratosphere/Resources/AppStreamStackFleetAssociation.hs
+++ b/library-gen/Stratosphere/Resources/AppStreamStackFleetAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-stackfleetassociation.html
@@ -17,13 +18,16 @@
   , _appStreamStackFleetAssociationStackName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON AppStreamStackFleetAssociation where
-  toJSON AppStreamStackFleetAssociation{..} =
-    object $
-    catMaybes
-    [ (Just . ("FleetName",) . toJSON) _appStreamStackFleetAssociationFleetName
-    , (Just . ("StackName",) . toJSON) _appStreamStackFleetAssociationStackName
-    ]
+instance ToResourceProperties AppStreamStackFleetAssociation where
+  toResourceProperties AppStreamStackFleetAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppStream::StackFleetAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("FleetName",) . toJSON) _appStreamStackFleetAssociationFleetName
+        , (Just . ("StackName",) . toJSON) _appStreamStackFleetAssociationStackName
+        ]
+    }
 
 -- | Constructor for 'AppStreamStackFleetAssociation' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/AppStreamStackUserAssociation.hs b/library-gen/Stratosphere/Resources/AppStreamStackUserAssociation.hs
--- a/library-gen/Stratosphere/Resources/AppStreamStackUserAssociation.hs
+++ b/library-gen/Stratosphere/Resources/AppStreamStackUserAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-stackuserassociation.html
@@ -19,15 +20,18 @@
   , _appStreamStackUserAssociationUserName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON AppStreamStackUserAssociation where
-  toJSON AppStreamStackUserAssociation{..} =
-    object $
-    catMaybes
-    [ (Just . ("AuthenticationType",) . toJSON) _appStreamStackUserAssociationAuthenticationType
-    , fmap (("SendEmailNotification",) . toJSON . fmap Bool') _appStreamStackUserAssociationSendEmailNotification
-    , (Just . ("StackName",) . toJSON) _appStreamStackUserAssociationStackName
-    , (Just . ("UserName",) . toJSON) _appStreamStackUserAssociationUserName
-    ]
+instance ToResourceProperties AppStreamStackUserAssociation where
+  toResourceProperties AppStreamStackUserAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppStream::StackUserAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AuthenticationType",) . toJSON) _appStreamStackUserAssociationAuthenticationType
+        , fmap (("SendEmailNotification",) . toJSON . fmap Bool') _appStreamStackUserAssociationSendEmailNotification
+        , (Just . ("StackName",) . toJSON) _appStreamStackUserAssociationStackName
+        , (Just . ("UserName",) . toJSON) _appStreamStackUserAssociationUserName
+        ]
+    }
 
 -- | Constructor for 'AppStreamStackUserAssociation' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/AppStreamUser.hs b/library-gen/Stratosphere/Resources/AppStreamUser.hs
--- a/library-gen/Stratosphere/Resources/AppStreamUser.hs
+++ b/library-gen/Stratosphere/Resources/AppStreamUser.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-user.html
@@ -20,16 +21,19 @@
   , _appStreamUserUserName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON AppStreamUser where
-  toJSON AppStreamUser{..} =
-    object $
-    catMaybes
-    [ (Just . ("AuthenticationType",) . toJSON) _appStreamUserAuthenticationType
-    , fmap (("FirstName",) . toJSON) _appStreamUserFirstName
-    , fmap (("LastName",) . toJSON) _appStreamUserLastName
-    , fmap (("MessageAction",) . toJSON) _appStreamUserMessageAction
-    , (Just . ("UserName",) . toJSON) _appStreamUserUserName
-    ]
+instance ToResourceProperties AppStreamUser where
+  toResourceProperties AppStreamUser{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppStream::User"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AuthenticationType",) . toJSON) _appStreamUserAuthenticationType
+        , fmap (("FirstName",) . toJSON) _appStreamUserFirstName
+        , fmap (("LastName",) . toJSON) _appStreamUserLastName
+        , fmap (("MessageAction",) . toJSON) _appStreamUserMessageAction
+        , (Just . ("UserName",) . toJSON) _appStreamUserUserName
+        ]
+    }
 
 -- | Constructor for 'AppStreamUser' containing required fields as arguments.
 appStreamUser
diff --git a/library-gen/Stratosphere/Resources/AppSyncApiKey.hs b/library-gen/Stratosphere/Resources/AppSyncApiKey.hs
--- a/library-gen/Stratosphere/Resources/AppSyncApiKey.hs
+++ b/library-gen/Stratosphere/Resources/AppSyncApiKey.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apikey.html
@@ -18,14 +19,17 @@
   , _appSyncApiKeyExpires :: Maybe (Val Double)
   } deriving (Show, Eq)
 
-instance ToJSON AppSyncApiKey where
-  toJSON AppSyncApiKey{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApiId",) . toJSON) _appSyncApiKeyApiId
-    , fmap (("Description",) . toJSON) _appSyncApiKeyDescription
-    , fmap (("Expires",) . toJSON . fmap Double') _appSyncApiKeyExpires
-    ]
+instance ToResourceProperties AppSyncApiKey where
+  toResourceProperties AppSyncApiKey{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppSync::ApiKey"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApiId",) . toJSON) _appSyncApiKeyApiId
+        , fmap (("Description",) . toJSON) _appSyncApiKeyDescription
+        , fmap (("Expires",) . toJSON . fmap Double') _appSyncApiKeyExpires
+        ]
+    }
 
 -- | Constructor for 'AppSyncApiKey' containing required fields as arguments.
 appSyncApiKey
diff --git a/library-gen/Stratosphere/Resources/AppSyncDataSource.hs b/library-gen/Stratosphere/Resources/AppSyncDataSource.hs
--- a/library-gen/Stratosphere/Resources/AppSyncDataSource.hs
+++ b/library-gen/Stratosphere/Resources/AppSyncDataSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html
@@ -29,21 +30,24 @@
   , _appSyncDataSourceType :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON AppSyncDataSource where
-  toJSON AppSyncDataSource{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApiId",) . toJSON) _appSyncDataSourceApiId
-    , fmap (("Description",) . toJSON) _appSyncDataSourceDescription
-    , fmap (("DynamoDBConfig",) . toJSON) _appSyncDataSourceDynamoDBConfig
-    , fmap (("ElasticsearchConfig",) . toJSON) _appSyncDataSourceElasticsearchConfig
-    , fmap (("HttpConfig",) . toJSON) _appSyncDataSourceHttpConfig
-    , fmap (("LambdaConfig",) . toJSON) _appSyncDataSourceLambdaConfig
-    , (Just . ("Name",) . toJSON) _appSyncDataSourceName
-    , fmap (("RelationalDatabaseConfig",) . toJSON) _appSyncDataSourceRelationalDatabaseConfig
-    , fmap (("ServiceRoleArn",) . toJSON) _appSyncDataSourceServiceRoleArn
-    , (Just . ("Type",) . toJSON) _appSyncDataSourceType
-    ]
+instance ToResourceProperties AppSyncDataSource where
+  toResourceProperties AppSyncDataSource{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppSync::DataSource"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApiId",) . toJSON) _appSyncDataSourceApiId
+        , fmap (("Description",) . toJSON) _appSyncDataSourceDescription
+        , fmap (("DynamoDBConfig",) . toJSON) _appSyncDataSourceDynamoDBConfig
+        , fmap (("ElasticsearchConfig",) . toJSON) _appSyncDataSourceElasticsearchConfig
+        , fmap (("HttpConfig",) . toJSON) _appSyncDataSourceHttpConfig
+        , fmap (("LambdaConfig",) . toJSON) _appSyncDataSourceLambdaConfig
+        , (Just . ("Name",) . toJSON) _appSyncDataSourceName
+        , fmap (("RelationalDatabaseConfig",) . toJSON) _appSyncDataSourceRelationalDatabaseConfig
+        , fmap (("ServiceRoleArn",) . toJSON) _appSyncDataSourceServiceRoleArn
+        , (Just . ("Type",) . toJSON) _appSyncDataSourceType
+        ]
+    }
 
 -- | Constructor for 'AppSyncDataSource' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/AppSyncFunctionConfiguration.hs b/library-gen/Stratosphere/Resources/AppSyncFunctionConfiguration.hs
--- a/library-gen/Stratosphere/Resources/AppSyncFunctionConfiguration.hs
+++ b/library-gen/Stratosphere/Resources/AppSyncFunctionConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html
@@ -24,20 +25,23 @@
   , _appSyncFunctionConfigurationResponseMappingTemplateS3Location :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON AppSyncFunctionConfiguration where
-  toJSON AppSyncFunctionConfiguration{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApiId",) . toJSON) _appSyncFunctionConfigurationApiId
-    , fmap (("DataSourceName",) . toJSON) _appSyncFunctionConfigurationDataSourceName
-    , fmap (("Description",) . toJSON) _appSyncFunctionConfigurationDescription
-    , fmap (("FunctionVersion",) . toJSON) _appSyncFunctionConfigurationFunctionVersion
-    , fmap (("Name",) . toJSON) _appSyncFunctionConfigurationName
-    , fmap (("RequestMappingTemplate",) . toJSON) _appSyncFunctionConfigurationRequestMappingTemplate
-    , fmap (("RequestMappingTemplateS3Location",) . toJSON) _appSyncFunctionConfigurationRequestMappingTemplateS3Location
-    , fmap (("ResponseMappingTemplate",) . toJSON) _appSyncFunctionConfigurationResponseMappingTemplate
-    , fmap (("ResponseMappingTemplateS3Location",) . toJSON) _appSyncFunctionConfigurationResponseMappingTemplateS3Location
-    ]
+instance ToResourceProperties AppSyncFunctionConfiguration where
+  toResourceProperties AppSyncFunctionConfiguration{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppSync::FunctionConfiguration"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApiId",) . toJSON) _appSyncFunctionConfigurationApiId
+        , fmap (("DataSourceName",) . toJSON) _appSyncFunctionConfigurationDataSourceName
+        , fmap (("Description",) . toJSON) _appSyncFunctionConfigurationDescription
+        , fmap (("FunctionVersion",) . toJSON) _appSyncFunctionConfigurationFunctionVersion
+        , fmap (("Name",) . toJSON) _appSyncFunctionConfigurationName
+        , fmap (("RequestMappingTemplate",) . toJSON) _appSyncFunctionConfigurationRequestMappingTemplate
+        , fmap (("RequestMappingTemplateS3Location",) . toJSON) _appSyncFunctionConfigurationRequestMappingTemplateS3Location
+        , fmap (("ResponseMappingTemplate",) . toJSON) _appSyncFunctionConfigurationResponseMappingTemplate
+        , fmap (("ResponseMappingTemplateS3Location",) . toJSON) _appSyncFunctionConfigurationResponseMappingTemplateS3Location
+        ]
+    }
 
 -- | Constructor for 'AppSyncFunctionConfiguration' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/AppSyncGraphQLApi.hs b/library-gen/Stratosphere/Resources/AppSyncGraphQLApi.hs
--- a/library-gen/Stratosphere/Resources/AppSyncGraphQLApi.hs
+++ b/library-gen/Stratosphere/Resources/AppSyncGraphQLApi.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html
@@ -22,16 +23,19 @@
   , _appSyncGraphQLApiUserPoolConfig :: Maybe AppSyncGraphQLApiUserPoolConfig
   } deriving (Show, Eq)
 
-instance ToJSON AppSyncGraphQLApi where
-  toJSON AppSyncGraphQLApi{..} =
-    object $
-    catMaybes
-    [ (Just . ("AuthenticationType",) . toJSON) _appSyncGraphQLApiAuthenticationType
-    , fmap (("LogConfig",) . toJSON) _appSyncGraphQLApiLogConfig
-    , (Just . ("Name",) . toJSON) _appSyncGraphQLApiName
-    , fmap (("OpenIDConnectConfig",) . toJSON) _appSyncGraphQLApiOpenIDConnectConfig
-    , fmap (("UserPoolConfig",) . toJSON) _appSyncGraphQLApiUserPoolConfig
-    ]
+instance ToResourceProperties AppSyncGraphQLApi where
+  toResourceProperties AppSyncGraphQLApi{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppSync::GraphQLApi"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AuthenticationType",) . toJSON) _appSyncGraphQLApiAuthenticationType
+        , fmap (("LogConfig",) . toJSON) _appSyncGraphQLApiLogConfig
+        , (Just . ("Name",) . toJSON) _appSyncGraphQLApiName
+        , fmap (("OpenIDConnectConfig",) . toJSON) _appSyncGraphQLApiOpenIDConnectConfig
+        , fmap (("UserPoolConfig",) . toJSON) _appSyncGraphQLApiUserPoolConfig
+        ]
+    }
 
 -- | Constructor for 'AppSyncGraphQLApi' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/AppSyncGraphQLSchema.hs b/library-gen/Stratosphere/Resources/AppSyncGraphQLSchema.hs
--- a/library-gen/Stratosphere/Resources/AppSyncGraphQLSchema.hs
+++ b/library-gen/Stratosphere/Resources/AppSyncGraphQLSchema.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlschema.html
@@ -18,14 +19,17 @@
   , _appSyncGraphQLSchemaDefinitionS3Location :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON AppSyncGraphQLSchema where
-  toJSON AppSyncGraphQLSchema{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApiId",) . toJSON) _appSyncGraphQLSchemaApiId
-    , fmap (("Definition",) . toJSON) _appSyncGraphQLSchemaDefinition
-    , fmap (("DefinitionS3Location",) . toJSON) _appSyncGraphQLSchemaDefinitionS3Location
-    ]
+instance ToResourceProperties AppSyncGraphQLSchema where
+  toResourceProperties AppSyncGraphQLSchema{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppSync::GraphQLSchema"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApiId",) . toJSON) _appSyncGraphQLSchemaApiId
+        , fmap (("Definition",) . toJSON) _appSyncGraphQLSchemaDefinition
+        , fmap (("DefinitionS3Location",) . toJSON) _appSyncGraphQLSchemaDefinitionS3Location
+        ]
+    }
 
 -- | Constructor for 'AppSyncGraphQLSchema' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/AppSyncResolver.hs b/library-gen/Stratosphere/Resources/AppSyncResolver.hs
--- a/library-gen/Stratosphere/Resources/AppSyncResolver.hs
+++ b/library-gen/Stratosphere/Resources/AppSyncResolver.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html
@@ -25,21 +26,24 @@
   , _appSyncResolverTypeName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON AppSyncResolver where
-  toJSON AppSyncResolver{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApiId",) . toJSON) _appSyncResolverApiId
-    , fmap (("DataSourceName",) . toJSON) _appSyncResolverDataSourceName
-    , (Just . ("FieldName",) . toJSON) _appSyncResolverFieldName
-    , fmap (("Kind",) . toJSON) _appSyncResolverKind
-    , fmap (("PipelineConfig",) . toJSON) _appSyncResolverPipelineConfig
-    , fmap (("RequestMappingTemplate",) . toJSON) _appSyncResolverRequestMappingTemplate
-    , fmap (("RequestMappingTemplateS3Location",) . toJSON) _appSyncResolverRequestMappingTemplateS3Location
-    , fmap (("ResponseMappingTemplate",) . toJSON) _appSyncResolverResponseMappingTemplate
-    , fmap (("ResponseMappingTemplateS3Location",) . toJSON) _appSyncResolverResponseMappingTemplateS3Location
-    , (Just . ("TypeName",) . toJSON) _appSyncResolverTypeName
-    ]
+instance ToResourceProperties AppSyncResolver where
+  toResourceProperties AppSyncResolver{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppSync::Resolver"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApiId",) . toJSON) _appSyncResolverApiId
+        , fmap (("DataSourceName",) . toJSON) _appSyncResolverDataSourceName
+        , (Just . ("FieldName",) . toJSON) _appSyncResolverFieldName
+        , fmap (("Kind",) . toJSON) _appSyncResolverKind
+        , fmap (("PipelineConfig",) . toJSON) _appSyncResolverPipelineConfig
+        , fmap (("RequestMappingTemplate",) . toJSON) _appSyncResolverRequestMappingTemplate
+        , fmap (("RequestMappingTemplateS3Location",) . toJSON) _appSyncResolverRequestMappingTemplateS3Location
+        , fmap (("ResponseMappingTemplate",) . toJSON) _appSyncResolverResponseMappingTemplate
+        , fmap (("ResponseMappingTemplateS3Location",) . toJSON) _appSyncResolverResponseMappingTemplateS3Location
+        , (Just . ("TypeName",) . toJSON) _appSyncResolverTypeName
+        ]
+    }
 
 -- | Constructor for 'AppSyncResolver' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalableTarget.hs b/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalableTarget.hs
--- a/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalableTarget.hs
+++ b/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalableTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html
@@ -22,18 +23,21 @@
   , _applicationAutoScalingScalableTargetServiceNamespace :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ApplicationAutoScalingScalableTarget where
-  toJSON ApplicationAutoScalingScalableTarget{..} =
-    object $
-    catMaybes
-    [ (Just . ("MaxCapacity",) . toJSON . fmap Integer') _applicationAutoScalingScalableTargetMaxCapacity
-    , (Just . ("MinCapacity",) . toJSON . fmap Integer') _applicationAutoScalingScalableTargetMinCapacity
-    , (Just . ("ResourceId",) . toJSON) _applicationAutoScalingScalableTargetResourceId
-    , (Just . ("RoleARN",) . toJSON) _applicationAutoScalingScalableTargetRoleARN
-    , (Just . ("ScalableDimension",) . toJSON) _applicationAutoScalingScalableTargetScalableDimension
-    , fmap (("ScheduledActions",) . toJSON) _applicationAutoScalingScalableTargetScheduledActions
-    , (Just . ("ServiceNamespace",) . toJSON) _applicationAutoScalingScalableTargetServiceNamespace
-    ]
+instance ToResourceProperties ApplicationAutoScalingScalableTarget where
+  toResourceProperties ApplicationAutoScalingScalableTarget{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApplicationAutoScaling::ScalableTarget"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("MaxCapacity",) . toJSON . fmap Integer') _applicationAutoScalingScalableTargetMaxCapacity
+        , (Just . ("MinCapacity",) . toJSON . fmap Integer') _applicationAutoScalingScalableTargetMinCapacity
+        , (Just . ("ResourceId",) . toJSON) _applicationAutoScalingScalableTargetResourceId
+        , (Just . ("RoleARN",) . toJSON) _applicationAutoScalingScalableTargetRoleARN
+        , (Just . ("ScalableDimension",) . toJSON) _applicationAutoScalingScalableTargetScalableDimension
+        , fmap (("ScheduledActions",) . toJSON) _applicationAutoScalingScalableTargetScheduledActions
+        , (Just . ("ServiceNamespace",) . toJSON) _applicationAutoScalingScalableTargetServiceNamespace
+        ]
+    }
 
 -- | Constructor for 'ApplicationAutoScalingScalableTarget' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalingPolicy.hs b/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalingPolicy.hs
--- a/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalingPolicy.hs
+++ b/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalingPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html
@@ -24,19 +25,22 @@
   , _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration :: Maybe ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration
   } deriving (Show, Eq)
 
-instance ToJSON ApplicationAutoScalingScalingPolicy where
-  toJSON ApplicationAutoScalingScalingPolicy{..} =
-    object $
-    catMaybes
-    [ (Just . ("PolicyName",) . toJSON) _applicationAutoScalingScalingPolicyPolicyName
-    , (Just . ("PolicyType",) . toJSON) _applicationAutoScalingScalingPolicyPolicyType
-    , fmap (("ResourceId",) . toJSON) _applicationAutoScalingScalingPolicyResourceId
-    , fmap (("ScalableDimension",) . toJSON) _applicationAutoScalingScalingPolicyScalableDimension
-    , fmap (("ScalingTargetId",) . toJSON) _applicationAutoScalingScalingPolicyScalingTargetId
-    , fmap (("ServiceNamespace",) . toJSON) _applicationAutoScalingScalingPolicyServiceNamespace
-    , fmap (("StepScalingPolicyConfiguration",) . toJSON) _applicationAutoScalingScalingPolicyStepScalingPolicyConfiguration
-    , fmap (("TargetTrackingScalingPolicyConfiguration",) . toJSON) _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration
-    ]
+instance ToResourceProperties ApplicationAutoScalingScalingPolicy where
+  toResourceProperties ApplicationAutoScalingScalingPolicy{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ApplicationAutoScaling::ScalingPolicy"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("PolicyName",) . toJSON) _applicationAutoScalingScalingPolicyPolicyName
+        , (Just . ("PolicyType",) . toJSON) _applicationAutoScalingScalingPolicyPolicyType
+        , fmap (("ResourceId",) . toJSON) _applicationAutoScalingScalingPolicyResourceId
+        , fmap (("ScalableDimension",) . toJSON) _applicationAutoScalingScalingPolicyScalableDimension
+        , fmap (("ScalingTargetId",) . toJSON) _applicationAutoScalingScalingPolicyScalingTargetId
+        , fmap (("ServiceNamespace",) . toJSON) _applicationAutoScalingScalingPolicyServiceNamespace
+        , fmap (("StepScalingPolicyConfiguration",) . toJSON) _applicationAutoScalingScalingPolicyStepScalingPolicyConfiguration
+        , fmap (("TargetTrackingScalingPolicyConfiguration",) . toJSON) _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration
+        ]
+    }
 
 -- | Constructor for 'ApplicationAutoScalingScalingPolicy' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/AthenaNamedQuery.hs b/library-gen/Stratosphere/Resources/AthenaNamedQuery.hs
--- a/library-gen/Stratosphere/Resources/AthenaNamedQuery.hs
+++ b/library-gen/Stratosphere/Resources/AthenaNamedQuery.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html
@@ -19,15 +20,18 @@
   , _athenaNamedQueryQueryString :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON AthenaNamedQuery where
-  toJSON AthenaNamedQuery{..} =
-    object $
-    catMaybes
-    [ (Just . ("Database",) . toJSON) _athenaNamedQueryDatabase
-    , fmap (("Description",) . toJSON) _athenaNamedQueryDescription
-    , fmap (("Name",) . toJSON) _athenaNamedQueryName
-    , (Just . ("QueryString",) . toJSON) _athenaNamedQueryQueryString
-    ]
+instance ToResourceProperties AthenaNamedQuery where
+  toResourceProperties AthenaNamedQuery{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Athena::NamedQuery"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Database",) . toJSON) _athenaNamedQueryDatabase
+        , fmap (("Description",) . toJSON) _athenaNamedQueryDescription
+        , fmap (("Name",) . toJSON) _athenaNamedQueryName
+        , (Just . ("QueryString",) . toJSON) _athenaNamedQueryQueryString
+        ]
+    }
 
 -- | Constructor for 'AthenaNamedQuery' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs b/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html
@@ -42,33 +43,36 @@
   , _autoScalingAutoScalingGroupVPCZoneIdentifier :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
-instance ToJSON AutoScalingAutoScalingGroup where
-  toJSON AutoScalingAutoScalingGroup{..} =
-    object $
-    catMaybes
-    [ fmap (("AutoScalingGroupName",) . toJSON) _autoScalingAutoScalingGroupAutoScalingGroupName
-    , fmap (("AvailabilityZones",) . toJSON) _autoScalingAutoScalingGroupAvailabilityZones
-    , fmap (("Cooldown",) . toJSON) _autoScalingAutoScalingGroupCooldown
-    , fmap (("DesiredCapacity",) . toJSON) _autoScalingAutoScalingGroupDesiredCapacity
-    , fmap (("HealthCheckGracePeriod",) . toJSON . fmap Integer') _autoScalingAutoScalingGroupHealthCheckGracePeriod
-    , fmap (("HealthCheckType",) . toJSON) _autoScalingAutoScalingGroupHealthCheckType
-    , fmap (("InstanceId",) . toJSON) _autoScalingAutoScalingGroupInstanceId
-    , fmap (("LaunchConfigurationName",) . toJSON) _autoScalingAutoScalingGroupLaunchConfigurationName
-    , fmap (("LaunchTemplate",) . toJSON) _autoScalingAutoScalingGroupLaunchTemplate
-    , fmap (("LifecycleHookSpecificationList",) . toJSON) _autoScalingAutoScalingGroupLifecycleHookSpecificationList
-    , fmap (("LoadBalancerNames",) . toJSON) _autoScalingAutoScalingGroupLoadBalancerNames
-    , (Just . ("MaxSize",) . toJSON) _autoScalingAutoScalingGroupMaxSize
-    , fmap (("MetricsCollection",) . toJSON) _autoScalingAutoScalingGroupMetricsCollection
-    , (Just . ("MinSize",) . toJSON) _autoScalingAutoScalingGroupMinSize
-    , fmap (("MixedInstancesPolicy",) . toJSON) _autoScalingAutoScalingGroupMixedInstancesPolicy
-    , fmap (("NotificationConfigurations",) . toJSON) _autoScalingAutoScalingGroupNotificationConfigurations
-    , fmap (("PlacementGroup",) . toJSON) _autoScalingAutoScalingGroupPlacementGroup
-    , fmap (("ServiceLinkedRoleARN",) . toJSON) _autoScalingAutoScalingGroupServiceLinkedRoleARN
-    , fmap (("Tags",) . toJSON) _autoScalingAutoScalingGroupTags
-    , fmap (("TargetGroupARNs",) . toJSON) _autoScalingAutoScalingGroupTargetGroupARNs
-    , fmap (("TerminationPolicies",) . toJSON) _autoScalingAutoScalingGroupTerminationPolicies
-    , fmap (("VPCZoneIdentifier",) . toJSON) _autoScalingAutoScalingGroupVPCZoneIdentifier
-    ]
+instance ToResourceProperties AutoScalingAutoScalingGroup where
+  toResourceProperties AutoScalingAutoScalingGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AutoScaling::AutoScalingGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AutoScalingGroupName",) . toJSON) _autoScalingAutoScalingGroupAutoScalingGroupName
+        , fmap (("AvailabilityZones",) . toJSON) _autoScalingAutoScalingGroupAvailabilityZones
+        , fmap (("Cooldown",) . toJSON) _autoScalingAutoScalingGroupCooldown
+        , fmap (("DesiredCapacity",) . toJSON) _autoScalingAutoScalingGroupDesiredCapacity
+        , fmap (("HealthCheckGracePeriod",) . toJSON . fmap Integer') _autoScalingAutoScalingGroupHealthCheckGracePeriod
+        , fmap (("HealthCheckType",) . toJSON) _autoScalingAutoScalingGroupHealthCheckType
+        , fmap (("InstanceId",) . toJSON) _autoScalingAutoScalingGroupInstanceId
+        , fmap (("LaunchConfigurationName",) . toJSON) _autoScalingAutoScalingGroupLaunchConfigurationName
+        , fmap (("LaunchTemplate",) . toJSON) _autoScalingAutoScalingGroupLaunchTemplate
+        , fmap (("LifecycleHookSpecificationList",) . toJSON) _autoScalingAutoScalingGroupLifecycleHookSpecificationList
+        , fmap (("LoadBalancerNames",) . toJSON) _autoScalingAutoScalingGroupLoadBalancerNames
+        , (Just . ("MaxSize",) . toJSON) _autoScalingAutoScalingGroupMaxSize
+        , fmap (("MetricsCollection",) . toJSON) _autoScalingAutoScalingGroupMetricsCollection
+        , (Just . ("MinSize",) . toJSON) _autoScalingAutoScalingGroupMinSize
+        , fmap (("MixedInstancesPolicy",) . toJSON) _autoScalingAutoScalingGroupMixedInstancesPolicy
+        , fmap (("NotificationConfigurations",) . toJSON) _autoScalingAutoScalingGroupNotificationConfigurations
+        , fmap (("PlacementGroup",) . toJSON) _autoScalingAutoScalingGroupPlacementGroup
+        , fmap (("ServiceLinkedRoleARN",) . toJSON) _autoScalingAutoScalingGroupServiceLinkedRoleARN
+        , fmap (("Tags",) . toJSON) _autoScalingAutoScalingGroupTags
+        , fmap (("TargetGroupARNs",) . toJSON) _autoScalingAutoScalingGroupTargetGroupARNs
+        , fmap (("TerminationPolicies",) . toJSON) _autoScalingAutoScalingGroupTerminationPolicies
+        , fmap (("VPCZoneIdentifier",) . toJSON) _autoScalingAutoScalingGroupVPCZoneIdentifier
+        ]
+    }
 
 -- | Constructor for 'AutoScalingAutoScalingGroup' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/AutoScalingLaunchConfiguration.hs b/library-gen/Stratosphere/Resources/AutoScalingLaunchConfiguration.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingLaunchConfiguration.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingLaunchConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html
@@ -33,29 +34,32 @@
   , _autoScalingLaunchConfigurationUserData :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON AutoScalingLaunchConfiguration where
-  toJSON AutoScalingLaunchConfiguration{..} =
-    object $
-    catMaybes
-    [ fmap (("AssociatePublicIpAddress",) . toJSON . fmap Bool') _autoScalingLaunchConfigurationAssociatePublicIpAddress
-    , fmap (("BlockDeviceMappings",) . toJSON) _autoScalingLaunchConfigurationBlockDeviceMappings
-    , fmap (("ClassicLinkVPCId",) . toJSON) _autoScalingLaunchConfigurationClassicLinkVPCId
-    , fmap (("ClassicLinkVPCSecurityGroups",) . toJSON) _autoScalingLaunchConfigurationClassicLinkVPCSecurityGroups
-    , fmap (("EbsOptimized",) . toJSON . fmap Bool') _autoScalingLaunchConfigurationEbsOptimized
-    , fmap (("IamInstanceProfile",) . toJSON) _autoScalingLaunchConfigurationIamInstanceProfile
-    , (Just . ("ImageId",) . toJSON) _autoScalingLaunchConfigurationImageId
-    , fmap (("InstanceId",) . toJSON) _autoScalingLaunchConfigurationInstanceId
-    , fmap (("InstanceMonitoring",) . toJSON . fmap Bool') _autoScalingLaunchConfigurationInstanceMonitoring
-    , (Just . ("InstanceType",) . toJSON) _autoScalingLaunchConfigurationInstanceType
-    , fmap (("KernelId",) . toJSON) _autoScalingLaunchConfigurationKernelId
-    , fmap (("KeyName",) . toJSON) _autoScalingLaunchConfigurationKeyName
-    , fmap (("LaunchConfigurationName",) . toJSON) _autoScalingLaunchConfigurationLaunchConfigurationName
-    , fmap (("PlacementTenancy",) . toJSON) _autoScalingLaunchConfigurationPlacementTenancy
-    , fmap (("RamDiskId",) . toJSON) _autoScalingLaunchConfigurationRamDiskId
-    , fmap (("SecurityGroups",) . toJSON) _autoScalingLaunchConfigurationSecurityGroups
-    , fmap (("SpotPrice",) . toJSON) _autoScalingLaunchConfigurationSpotPrice
-    , fmap (("UserData",) . toJSON) _autoScalingLaunchConfigurationUserData
-    ]
+instance ToResourceProperties AutoScalingLaunchConfiguration where
+  toResourceProperties AutoScalingLaunchConfiguration{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AutoScaling::LaunchConfiguration"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AssociatePublicIpAddress",) . toJSON . fmap Bool') _autoScalingLaunchConfigurationAssociatePublicIpAddress
+        , fmap (("BlockDeviceMappings",) . toJSON) _autoScalingLaunchConfigurationBlockDeviceMappings
+        , fmap (("ClassicLinkVPCId",) . toJSON) _autoScalingLaunchConfigurationClassicLinkVPCId
+        , fmap (("ClassicLinkVPCSecurityGroups",) . toJSON) _autoScalingLaunchConfigurationClassicLinkVPCSecurityGroups
+        , fmap (("EbsOptimized",) . toJSON . fmap Bool') _autoScalingLaunchConfigurationEbsOptimized
+        , fmap (("IamInstanceProfile",) . toJSON) _autoScalingLaunchConfigurationIamInstanceProfile
+        , (Just . ("ImageId",) . toJSON) _autoScalingLaunchConfigurationImageId
+        , fmap (("InstanceId",) . toJSON) _autoScalingLaunchConfigurationInstanceId
+        , fmap (("InstanceMonitoring",) . toJSON . fmap Bool') _autoScalingLaunchConfigurationInstanceMonitoring
+        , (Just . ("InstanceType",) . toJSON) _autoScalingLaunchConfigurationInstanceType
+        , fmap (("KernelId",) . toJSON) _autoScalingLaunchConfigurationKernelId
+        , fmap (("KeyName",) . toJSON) _autoScalingLaunchConfigurationKeyName
+        , fmap (("LaunchConfigurationName",) . toJSON) _autoScalingLaunchConfigurationLaunchConfigurationName
+        , fmap (("PlacementTenancy",) . toJSON) _autoScalingLaunchConfigurationPlacementTenancy
+        , fmap (("RamDiskId",) . toJSON) _autoScalingLaunchConfigurationRamDiskId
+        , fmap (("SecurityGroups",) . toJSON) _autoScalingLaunchConfigurationSecurityGroups
+        , fmap (("SpotPrice",) . toJSON) _autoScalingLaunchConfigurationSpotPrice
+        , fmap (("UserData",) . toJSON) _autoScalingLaunchConfigurationUserData
+        ]
+    }
 
 -- | Constructor for 'AutoScalingLaunchConfiguration' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/AutoScalingLifecycleHook.hs b/library-gen/Stratosphere/Resources/AutoScalingLifecycleHook.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingLifecycleHook.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingLifecycleHook.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html
@@ -23,19 +24,22 @@
   , _autoScalingLifecycleHookRoleARN :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON AutoScalingLifecycleHook where
-  toJSON AutoScalingLifecycleHook{..} =
-    object $
-    catMaybes
-    [ (Just . ("AutoScalingGroupName",) . toJSON) _autoScalingLifecycleHookAutoScalingGroupName
-    , fmap (("DefaultResult",) . toJSON) _autoScalingLifecycleHookDefaultResult
-    , fmap (("HeartbeatTimeout",) . toJSON . fmap Integer') _autoScalingLifecycleHookHeartbeatTimeout
-    , fmap (("LifecycleHookName",) . toJSON) _autoScalingLifecycleHookLifecycleHookName
-    , (Just . ("LifecycleTransition",) . toJSON) _autoScalingLifecycleHookLifecycleTransition
-    , fmap (("NotificationMetadata",) . toJSON) _autoScalingLifecycleHookNotificationMetadata
-    , fmap (("NotificationTargetARN",) . toJSON) _autoScalingLifecycleHookNotificationTargetARN
-    , fmap (("RoleARN",) . toJSON) _autoScalingLifecycleHookRoleARN
-    ]
+instance ToResourceProperties AutoScalingLifecycleHook where
+  toResourceProperties AutoScalingLifecycleHook{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AutoScaling::LifecycleHook"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AutoScalingGroupName",) . toJSON) _autoScalingLifecycleHookAutoScalingGroupName
+        , fmap (("DefaultResult",) . toJSON) _autoScalingLifecycleHookDefaultResult
+        , fmap (("HeartbeatTimeout",) . toJSON . fmap Integer') _autoScalingLifecycleHookHeartbeatTimeout
+        , fmap (("LifecycleHookName",) . toJSON) _autoScalingLifecycleHookLifecycleHookName
+        , (Just . ("LifecycleTransition",) . toJSON) _autoScalingLifecycleHookLifecycleTransition
+        , fmap (("NotificationMetadata",) . toJSON) _autoScalingLifecycleHookNotificationMetadata
+        , fmap (("NotificationTargetARN",) . toJSON) _autoScalingLifecycleHookNotificationTargetARN
+        , fmap (("RoleARN",) . toJSON) _autoScalingLifecycleHookRoleARN
+        ]
+    }
 
 -- | Constructor for 'AutoScalingLifecycleHook' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/AutoScalingPlansScalingPlan.hs b/library-gen/Stratosphere/Resources/AutoScalingPlansScalingPlan.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingPlansScalingPlan.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingPlansScalingPlan.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscalingplans-scalingplan.html
@@ -18,13 +19,16 @@
   , _autoScalingPlansScalingPlanScalingInstructions :: [AutoScalingPlansScalingPlanScalingInstruction]
   } deriving (Show, Eq)
 
-instance ToJSON AutoScalingPlansScalingPlan where
-  toJSON AutoScalingPlansScalingPlan{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApplicationSource",) . toJSON) _autoScalingPlansScalingPlanApplicationSource
-    , (Just . ("ScalingInstructions",) . toJSON) _autoScalingPlansScalingPlanScalingInstructions
-    ]
+instance ToResourceProperties AutoScalingPlansScalingPlan where
+  toResourceProperties AutoScalingPlansScalingPlan{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AutoScalingPlans::ScalingPlan"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationSource",) . toJSON) _autoScalingPlansScalingPlanApplicationSource
+        , (Just . ("ScalingInstructions",) . toJSON) _autoScalingPlansScalingPlanScalingInstructions
+        ]
+    }
 
 -- | Constructor for 'AutoScalingPlansScalingPlan' containing required fields
 -- as arguments.
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html
@@ -26,21 +27,24 @@
   , _autoScalingScalingPolicyTargetTrackingConfiguration :: Maybe AutoScalingScalingPolicyTargetTrackingConfiguration
   } deriving (Show, Eq)
 
-instance ToJSON AutoScalingScalingPolicy where
-  toJSON AutoScalingScalingPolicy{..} =
-    object $
-    catMaybes
-    [ fmap (("AdjustmentType",) . toJSON) _autoScalingScalingPolicyAdjustmentType
-    , (Just . ("AutoScalingGroupName",) . toJSON) _autoScalingScalingPolicyAutoScalingGroupName
-    , fmap (("Cooldown",) . toJSON) _autoScalingScalingPolicyCooldown
-    , fmap (("EstimatedInstanceWarmup",) . toJSON . fmap Integer') _autoScalingScalingPolicyEstimatedInstanceWarmup
-    , fmap (("MetricAggregationType",) . toJSON) _autoScalingScalingPolicyMetricAggregationType
-    , fmap (("MinAdjustmentMagnitude",) . toJSON . fmap Integer') _autoScalingScalingPolicyMinAdjustmentMagnitude
-    , fmap (("PolicyType",) . toJSON) _autoScalingScalingPolicyPolicyType
-    , fmap (("ScalingAdjustment",) . toJSON . fmap Integer') _autoScalingScalingPolicyScalingAdjustment
-    , fmap (("StepAdjustments",) . toJSON) _autoScalingScalingPolicyStepAdjustments
-    , fmap (("TargetTrackingConfiguration",) . toJSON) _autoScalingScalingPolicyTargetTrackingConfiguration
-    ]
+instance ToResourceProperties AutoScalingScalingPolicy where
+  toResourceProperties AutoScalingScalingPolicy{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AutoScaling::ScalingPolicy"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AdjustmentType",) . toJSON) _autoScalingScalingPolicyAdjustmentType
+        , (Just . ("AutoScalingGroupName",) . toJSON) _autoScalingScalingPolicyAutoScalingGroupName
+        , fmap (("Cooldown",) . toJSON) _autoScalingScalingPolicyCooldown
+        , fmap (("EstimatedInstanceWarmup",) . toJSON . fmap Integer') _autoScalingScalingPolicyEstimatedInstanceWarmup
+        , fmap (("MetricAggregationType",) . toJSON) _autoScalingScalingPolicyMetricAggregationType
+        , fmap (("MinAdjustmentMagnitude",) . toJSON . fmap Integer') _autoScalingScalingPolicyMinAdjustmentMagnitude
+        , fmap (("PolicyType",) . toJSON) _autoScalingScalingPolicyPolicyType
+        , fmap (("ScalingAdjustment",) . toJSON . fmap Integer') _autoScalingScalingPolicyScalingAdjustment
+        , fmap (("StepAdjustments",) . toJSON) _autoScalingScalingPolicyStepAdjustments
+        , fmap (("TargetTrackingConfiguration",) . toJSON) _autoScalingScalingPolicyTargetTrackingConfiguration
+        ]
+    }
 
 -- | Constructor for 'AutoScalingScalingPolicy' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/AutoScalingScheduledAction.hs b/library-gen/Stratosphere/Resources/AutoScalingScheduledAction.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingScheduledAction.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingScheduledAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html
@@ -22,18 +23,21 @@
   , _autoScalingScheduledActionStartTime :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON AutoScalingScheduledAction where
-  toJSON AutoScalingScheduledAction{..} =
-    object $
-    catMaybes
-    [ (Just . ("AutoScalingGroupName",) . toJSON) _autoScalingScheduledActionAutoScalingGroupName
-    , fmap (("DesiredCapacity",) . toJSON . fmap Integer') _autoScalingScheduledActionDesiredCapacity
-    , fmap (("EndTime",) . toJSON) _autoScalingScheduledActionEndTime
-    , fmap (("MaxSize",) . toJSON . fmap Integer') _autoScalingScheduledActionMaxSize
-    , fmap (("MinSize",) . toJSON . fmap Integer') _autoScalingScheduledActionMinSize
-    , fmap (("Recurrence",) . toJSON) _autoScalingScheduledActionRecurrence
-    , fmap (("StartTime",) . toJSON) _autoScalingScheduledActionStartTime
-    ]
+instance ToResourceProperties AutoScalingScheduledAction where
+  toResourceProperties AutoScalingScheduledAction{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AutoScaling::ScheduledAction"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AutoScalingGroupName",) . toJSON) _autoScalingScheduledActionAutoScalingGroupName
+        , fmap (("DesiredCapacity",) . toJSON . fmap Integer') _autoScalingScheduledActionDesiredCapacity
+        , fmap (("EndTime",) . toJSON) _autoScalingScheduledActionEndTime
+        , fmap (("MaxSize",) . toJSON . fmap Integer') _autoScalingScheduledActionMaxSize
+        , fmap (("MinSize",) . toJSON . fmap Integer') _autoScalingScheduledActionMinSize
+        , fmap (("Recurrence",) . toJSON) _autoScalingScheduledActionRecurrence
+        , fmap (("StartTime",) . toJSON) _autoScalingScheduledActionStartTime
+        ]
+    }
 
 -- | Constructor for 'AutoScalingScheduledAction' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/BatchComputeEnvironment.hs b/library-gen/Stratosphere/Resources/BatchComputeEnvironment.hs
--- a/library-gen/Stratosphere/Resources/BatchComputeEnvironment.hs
+++ b/library-gen/Stratosphere/Resources/BatchComputeEnvironment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-computeenvironment.html
@@ -20,16 +21,19 @@
   , _batchComputeEnvironmentType :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON BatchComputeEnvironment where
-  toJSON BatchComputeEnvironment{..} =
-    object $
-    catMaybes
-    [ fmap (("ComputeEnvironmentName",) . toJSON) _batchComputeEnvironmentComputeEnvironmentName
-    , fmap (("ComputeResources",) . toJSON) _batchComputeEnvironmentComputeResources
-    , (Just . ("ServiceRole",) . toJSON) _batchComputeEnvironmentServiceRole
-    , fmap (("State",) . toJSON) _batchComputeEnvironmentState
-    , (Just . ("Type",) . toJSON) _batchComputeEnvironmentType
-    ]
+instance ToResourceProperties BatchComputeEnvironment where
+  toResourceProperties BatchComputeEnvironment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Batch::ComputeEnvironment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ComputeEnvironmentName",) . toJSON) _batchComputeEnvironmentComputeEnvironmentName
+        , fmap (("ComputeResources",) . toJSON) _batchComputeEnvironmentComputeResources
+        , (Just . ("ServiceRole",) . toJSON) _batchComputeEnvironmentServiceRole
+        , fmap (("State",) . toJSON) _batchComputeEnvironmentState
+        , (Just . ("Type",) . toJSON) _batchComputeEnvironmentType
+        ]
+    }
 
 -- | Constructor for 'BatchComputeEnvironment' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/BatchJobDefinition.hs b/library-gen/Stratosphere/Resources/BatchJobDefinition.hs
--- a/library-gen/Stratosphere/Resources/BatchJobDefinition.hs
+++ b/library-gen/Stratosphere/Resources/BatchJobDefinition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html
@@ -25,18 +26,21 @@
   , _batchJobDefinitionType :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON BatchJobDefinition where
-  toJSON BatchJobDefinition{..} =
-    object $
-    catMaybes
-    [ fmap (("ContainerProperties",) . toJSON) _batchJobDefinitionContainerProperties
-    , fmap (("JobDefinitionName",) . toJSON) _batchJobDefinitionJobDefinitionName
-    , fmap (("NodeProperties",) . toJSON) _batchJobDefinitionNodeProperties
-    , fmap (("Parameters",) . toJSON) _batchJobDefinitionParameters
-    , fmap (("RetryStrategy",) . toJSON) _batchJobDefinitionRetryStrategy
-    , fmap (("Timeout",) . toJSON) _batchJobDefinitionTimeout
-    , (Just . ("Type",) . toJSON) _batchJobDefinitionType
-    ]
+instance ToResourceProperties BatchJobDefinition where
+  toResourceProperties BatchJobDefinition{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Batch::JobDefinition"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ContainerProperties",) . toJSON) _batchJobDefinitionContainerProperties
+        , fmap (("JobDefinitionName",) . toJSON) _batchJobDefinitionJobDefinitionName
+        , fmap (("NodeProperties",) . toJSON) _batchJobDefinitionNodeProperties
+        , fmap (("Parameters",) . toJSON) _batchJobDefinitionParameters
+        , fmap (("RetryStrategy",) . toJSON) _batchJobDefinitionRetryStrategy
+        , fmap (("Timeout",) . toJSON) _batchJobDefinitionTimeout
+        , (Just . ("Type",) . toJSON) _batchJobDefinitionType
+        ]
+    }
 
 -- | Constructor for 'BatchJobDefinition' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/BatchJobQueue.hs b/library-gen/Stratosphere/Resources/BatchJobQueue.hs
--- a/library-gen/Stratosphere/Resources/BatchJobQueue.hs
+++ b/library-gen/Stratosphere/Resources/BatchJobQueue.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobqueue.html
@@ -19,15 +20,18 @@
   , _batchJobQueueState :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON BatchJobQueue where
-  toJSON BatchJobQueue{..} =
-    object $
-    catMaybes
-    [ (Just . ("ComputeEnvironmentOrder",) . toJSON) _batchJobQueueComputeEnvironmentOrder
-    , fmap (("JobQueueName",) . toJSON) _batchJobQueueJobQueueName
-    , (Just . ("Priority",) . toJSON . fmap Integer') _batchJobQueuePriority
-    , fmap (("State",) . toJSON) _batchJobQueueState
-    ]
+instance ToResourceProperties BatchJobQueue where
+  toResourceProperties BatchJobQueue{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Batch::JobQueue"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ComputeEnvironmentOrder",) . toJSON) _batchJobQueueComputeEnvironmentOrder
+        , fmap (("JobQueueName",) . toJSON) _batchJobQueueJobQueueName
+        , (Just . ("Priority",) . toJSON . fmap Integer') _batchJobQueuePriority
+        , fmap (("State",) . toJSON) _batchJobQueueState
+        ]
+    }
 
 -- | Constructor for 'BatchJobQueue' containing required fields as arguments.
 batchJobQueue
diff --git a/library-gen/Stratosphere/Resources/BudgetsBudget.hs b/library-gen/Stratosphere/Resources/BudgetsBudget.hs
--- a/library-gen/Stratosphere/Resources/BudgetsBudget.hs
+++ b/library-gen/Stratosphere/Resources/BudgetsBudget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-budgets-budget.html
@@ -18,13 +19,16 @@
   , _budgetsBudgetNotificationsWithSubscribers :: Maybe [BudgetsBudgetNotificationWithSubscribers]
   } deriving (Show, Eq)
 
-instance ToJSON BudgetsBudget where
-  toJSON BudgetsBudget{..} =
-    object $
-    catMaybes
-    [ (Just . ("Budget",) . toJSON) _budgetsBudgetBudget
-    , fmap (("NotificationsWithSubscribers",) . toJSON) _budgetsBudgetNotificationsWithSubscribers
-    ]
+instance ToResourceProperties BudgetsBudget where
+  toResourceProperties BudgetsBudget{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Budgets::Budget"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Budget",) . toJSON) _budgetsBudgetBudget
+        , fmap (("NotificationsWithSubscribers",) . toJSON) _budgetsBudgetNotificationsWithSubscribers
+        ]
+    }
 
 -- | Constructor for 'BudgetsBudget' containing required fields as arguments.
 budgetsBudget
diff --git a/library-gen/Stratosphere/Resources/CertificateManagerCertificate.hs b/library-gen/Stratosphere/Resources/CertificateManagerCertificate.hs
--- a/library-gen/Stratosphere/Resources/CertificateManagerCertificate.hs
+++ b/library-gen/Stratosphere/Resources/CertificateManagerCertificate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html
@@ -21,16 +22,19 @@
   , _certificateManagerCertificateValidationMethod :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON CertificateManagerCertificate where
-  toJSON CertificateManagerCertificate{..} =
-    object $
-    catMaybes
-    [ (Just . ("DomainName",) . toJSON) _certificateManagerCertificateDomainName
-    , fmap (("DomainValidationOptions",) . toJSON) _certificateManagerCertificateDomainValidationOptions
-    , fmap (("SubjectAlternativeNames",) . toJSON) _certificateManagerCertificateSubjectAlternativeNames
-    , fmap (("Tags",) . toJSON) _certificateManagerCertificateTags
-    , fmap (("ValidationMethod",) . toJSON) _certificateManagerCertificateValidationMethod
-    ]
+instance ToResourceProperties CertificateManagerCertificate where
+  toResourceProperties CertificateManagerCertificate{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CertificateManager::Certificate"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DomainName",) . toJSON) _certificateManagerCertificateDomainName
+        , fmap (("DomainValidationOptions",) . toJSON) _certificateManagerCertificateDomainValidationOptions
+        , fmap (("SubjectAlternativeNames",) . toJSON) _certificateManagerCertificateSubjectAlternativeNames
+        , fmap (("Tags",) . toJSON) _certificateManagerCertificateTags
+        , fmap (("ValidationMethod",) . toJSON) _certificateManagerCertificateValidationMethod
+        ]
+    }
 
 -- | Constructor for 'CertificateManagerCertificate' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/Cloud9EnvironmentEC2.hs b/library-gen/Stratosphere/Resources/Cloud9EnvironmentEC2.hs
--- a/library-gen/Stratosphere/Resources/Cloud9EnvironmentEC2.hs
+++ b/library-gen/Stratosphere/Resources/Cloud9EnvironmentEC2.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloud9-environmentec2.html
@@ -22,18 +23,21 @@
   , _cloud9EnvironmentEC2SubnetId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON Cloud9EnvironmentEC2 where
-  toJSON Cloud9EnvironmentEC2{..} =
-    object $
-    catMaybes
-    [ fmap (("AutomaticStopTimeMinutes",) . toJSON . fmap Integer') _cloud9EnvironmentEC2AutomaticStopTimeMinutes
-    , fmap (("Description",) . toJSON) _cloud9EnvironmentEC2Description
-    , (Just . ("InstanceType",) . toJSON) _cloud9EnvironmentEC2InstanceType
-    , fmap (("Name",) . toJSON) _cloud9EnvironmentEC2Name
-    , fmap (("OwnerArn",) . toJSON) _cloud9EnvironmentEC2OwnerArn
-    , fmap (("Repositories",) . toJSON) _cloud9EnvironmentEC2Repositories
-    , fmap (("SubnetId",) . toJSON) _cloud9EnvironmentEC2SubnetId
-    ]
+instance ToResourceProperties Cloud9EnvironmentEC2 where
+  toResourceProperties Cloud9EnvironmentEC2{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Cloud9::EnvironmentEC2"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AutomaticStopTimeMinutes",) . toJSON . fmap Integer') _cloud9EnvironmentEC2AutomaticStopTimeMinutes
+        , fmap (("Description",) . toJSON) _cloud9EnvironmentEC2Description
+        , (Just . ("InstanceType",) . toJSON) _cloud9EnvironmentEC2InstanceType
+        , fmap (("Name",) . toJSON) _cloud9EnvironmentEC2Name
+        , fmap (("OwnerArn",) . toJSON) _cloud9EnvironmentEC2OwnerArn
+        , fmap (("Repositories",) . toJSON) _cloud9EnvironmentEC2Repositories
+        , fmap (("SubnetId",) . toJSON) _cloud9EnvironmentEC2SubnetId
+        ]
+    }
 
 -- | Constructor for 'Cloud9EnvironmentEC2' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CloudFormationCustomResource.hs b/library-gen/Stratosphere/Resources/CloudFormationCustomResource.hs
--- a/library-gen/Stratosphere/Resources/CloudFormationCustomResource.hs
+++ b/library-gen/Stratosphere/Resources/CloudFormationCustomResource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cfn-customresource.html
@@ -16,12 +17,15 @@
   { _cloudFormationCustomResourceServiceToken :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON CloudFormationCustomResource where
-  toJSON CloudFormationCustomResource{..} =
-    object $
-    catMaybes
-    [ (Just . ("ServiceToken",) . toJSON) _cloudFormationCustomResourceServiceToken
-    ]
+instance ToResourceProperties CloudFormationCustomResource where
+  toResourceProperties CloudFormationCustomResource{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CloudFormation::CustomResource"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ServiceToken",) . toJSON) _cloudFormationCustomResourceServiceToken
+        ]
+    }
 
 -- | Constructor for 'CloudFormationCustomResource' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/CloudFormationMacro.hs b/library-gen/Stratosphere/Resources/CloudFormationMacro.hs
--- a/library-gen/Stratosphere/Resources/CloudFormationMacro.hs
+++ b/library-gen/Stratosphere/Resources/CloudFormationMacro.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudformation-macro.html
@@ -20,16 +21,19 @@
   , _cloudFormationMacroName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON CloudFormationMacro where
-  toJSON CloudFormationMacro{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _cloudFormationMacroDescription
-    , (Just . ("FunctionName",) . toJSON) _cloudFormationMacroFunctionName
-    , fmap (("LogGroupName",) . toJSON) _cloudFormationMacroLogGroupName
-    , fmap (("LogRoleARN",) . toJSON) _cloudFormationMacroLogRoleARN
-    , (Just . ("Name",) . toJSON) _cloudFormationMacroName
-    ]
+instance ToResourceProperties CloudFormationMacro where
+  toResourceProperties CloudFormationMacro{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CloudFormation::Macro"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _cloudFormationMacroDescription
+        , (Just . ("FunctionName",) . toJSON) _cloudFormationMacroFunctionName
+        , fmap (("LogGroupName",) . toJSON) _cloudFormationMacroLogGroupName
+        , fmap (("LogRoleARN",) . toJSON) _cloudFormationMacroLogRoleARN
+        , (Just . ("Name",) . toJSON) _cloudFormationMacroName
+        ]
+    }
 
 -- | Constructor for 'CloudFormationMacro' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CloudFormationStack.hs b/library-gen/Stratosphere/Resources/CloudFormationStack.hs
--- a/library-gen/Stratosphere/Resources/CloudFormationStack.hs
+++ b/library-gen/Stratosphere/Resources/CloudFormationStack.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html
@@ -20,16 +21,19 @@
   , _cloudFormationStackTimeoutInMinutes :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
-instance ToJSON CloudFormationStack where
-  toJSON CloudFormationStack{..} =
-    object $
-    catMaybes
-    [ fmap (("NotificationARNs",) . toJSON) _cloudFormationStackNotificationARNs
-    , fmap (("Parameters",) . toJSON) _cloudFormationStackParameters
-    , fmap (("Tags",) . toJSON) _cloudFormationStackTags
-    , (Just . ("TemplateURL",) . toJSON) _cloudFormationStackTemplateURL
-    , fmap (("TimeoutInMinutes",) . toJSON . fmap Integer') _cloudFormationStackTimeoutInMinutes
-    ]
+instance ToResourceProperties CloudFormationStack where
+  toResourceProperties CloudFormationStack{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CloudFormation::Stack"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("NotificationARNs",) . toJSON) _cloudFormationStackNotificationARNs
+        , fmap (("Parameters",) . toJSON) _cloudFormationStackParameters
+        , fmap (("Tags",) . toJSON) _cloudFormationStackTags
+        , (Just . ("TemplateURL",) . toJSON) _cloudFormationStackTemplateURL
+        , fmap (("TimeoutInMinutes",) . toJSON . fmap Integer') _cloudFormationStackTimeoutInMinutes
+        ]
+    }
 
 -- | Constructor for 'CloudFormationStack' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CloudFormationWaitCondition.hs b/library-gen/Stratosphere/Resources/CloudFormationWaitCondition.hs
--- a/library-gen/Stratosphere/Resources/CloudFormationWaitCondition.hs
+++ b/library-gen/Stratosphere/Resources/CloudFormationWaitCondition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waitcondition.html
@@ -18,14 +19,17 @@
   , _cloudFormationWaitConditionTimeout :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON CloudFormationWaitCondition where
-  toJSON CloudFormationWaitCondition{..} =
-    object $
-    catMaybes
-    [ fmap (("Count",) . toJSON . fmap Integer') _cloudFormationWaitConditionCount
-    , fmap (("Handle",) . toJSON) _cloudFormationWaitConditionHandle
-    , fmap (("Timeout",) . toJSON) _cloudFormationWaitConditionTimeout
-    ]
+instance ToResourceProperties CloudFormationWaitCondition where
+  toResourceProperties CloudFormationWaitCondition{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CloudFormation::WaitCondition"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Count",) . toJSON . fmap Integer') _cloudFormationWaitConditionCount
+        , fmap (("Handle",) . toJSON) _cloudFormationWaitConditionHandle
+        , fmap (("Timeout",) . toJSON) _cloudFormationWaitConditionTimeout
+        ]
+    }
 
 -- | Constructor for 'CloudFormationWaitCondition' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/CloudFormationWaitConditionHandle.hs b/library-gen/Stratosphere/Resources/CloudFormationWaitConditionHandle.hs
--- a/library-gen/Stratosphere/Resources/CloudFormationWaitConditionHandle.hs
+++ b/library-gen/Stratosphere/Resources/CloudFormationWaitConditionHandle.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waitconditionhandle.html
@@ -16,8 +17,12 @@
   { 
   } deriving (Show, Eq)
 
-instance ToJSON CloudFormationWaitConditionHandle where
-  toJSON _ = toJSON ([] :: [String])
+instance ToResourceProperties CloudFormationWaitConditionHandle where
+  toResourceProperties _ =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CloudFormation::WaitConditionHandle"
+    , resourcePropertiesProperties = hashMapEmpty
+    }
 
 -- | Constructor for 'CloudFormationWaitConditionHandle' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/CloudFrontCloudFrontOriginAccessIdentity.hs b/library-gen/Stratosphere/Resources/CloudFrontCloudFrontOriginAccessIdentity.hs
--- a/library-gen/Stratosphere/Resources/CloudFrontCloudFrontOriginAccessIdentity.hs
+++ b/library-gen/Stratosphere/Resources/CloudFrontCloudFrontOriginAccessIdentity.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-cloudfrontoriginaccessidentity.html
@@ -17,12 +18,15 @@
   { _cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig :: CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig
   } deriving (Show, Eq)
 
-instance ToJSON CloudFrontCloudFrontOriginAccessIdentity where
-  toJSON CloudFrontCloudFrontOriginAccessIdentity{..} =
-    object $
-    catMaybes
-    [ (Just . ("CloudFrontOriginAccessIdentityConfig",) . toJSON) _cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig
-    ]
+instance ToResourceProperties CloudFrontCloudFrontOriginAccessIdentity where
+  toResourceProperties CloudFrontCloudFrontOriginAccessIdentity{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CloudFront::CloudFrontOriginAccessIdentity"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("CloudFrontOriginAccessIdentityConfig",) . toJSON) _cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig
+        ]
+    }
 
 -- | Constructor for 'CloudFrontCloudFrontOriginAccessIdentity' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/CloudFrontDistribution.hs b/library-gen/Stratosphere/Resources/CloudFrontDistribution.hs
--- a/library-gen/Stratosphere/Resources/CloudFrontDistribution.hs
+++ b/library-gen/Stratosphere/Resources/CloudFrontDistribution.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-distribution.html
@@ -18,13 +19,16 @@
   , _cloudFrontDistributionTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON CloudFrontDistribution where
-  toJSON CloudFrontDistribution{..} =
-    object $
-    catMaybes
-    [ (Just . ("DistributionConfig",) . toJSON) _cloudFrontDistributionDistributionConfig
-    , fmap (("Tags",) . toJSON) _cloudFrontDistributionTags
-    ]
+instance ToResourceProperties CloudFrontDistribution where
+  toResourceProperties CloudFrontDistribution{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CloudFront::Distribution"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DistributionConfig",) . toJSON) _cloudFrontDistributionDistributionConfig
+        , fmap (("Tags",) . toJSON) _cloudFrontDistributionTags
+        ]
+    }
 
 -- | Constructor for 'CloudFrontDistribution' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CloudFrontStreamingDistribution.hs b/library-gen/Stratosphere/Resources/CloudFrontStreamingDistribution.hs
--- a/library-gen/Stratosphere/Resources/CloudFrontStreamingDistribution.hs
+++ b/library-gen/Stratosphere/Resources/CloudFrontStreamingDistribution.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-streamingdistribution.html
@@ -18,13 +19,16 @@
   , _cloudFrontStreamingDistributionTags :: [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON CloudFrontStreamingDistribution where
-  toJSON CloudFrontStreamingDistribution{..} =
-    object $
-    catMaybes
-    [ (Just . ("StreamingDistributionConfig",) . toJSON) _cloudFrontStreamingDistributionStreamingDistributionConfig
-    , (Just . ("Tags",) . toJSON) _cloudFrontStreamingDistributionTags
-    ]
+instance ToResourceProperties CloudFrontStreamingDistribution where
+  toResourceProperties CloudFrontStreamingDistribution{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CloudFront::StreamingDistribution"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("StreamingDistributionConfig",) . toJSON) _cloudFrontStreamingDistributionStreamingDistributionConfig
+        , (Just . ("Tags",) . toJSON) _cloudFrontStreamingDistributionTags
+        ]
+    }
 
 -- | Constructor for 'CloudFrontStreamingDistribution' containing required
 -- fields as arguments.
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html
@@ -29,24 +30,27 @@
   , _cloudTrailTrailTrailName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON CloudTrailTrail where
-  toJSON CloudTrailTrail{..} =
-    object $
-    catMaybes
-    [ 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
-    , fmap (("KMSKeyId",) . toJSON) _cloudTrailTrailKMSKeyId
-    , (Just . ("S3BucketName",) . toJSON) _cloudTrailTrailS3BucketName
-    , fmap (("S3KeyPrefix",) . toJSON) _cloudTrailTrailS3KeyPrefix
-    , fmap (("SnsTopicName",) . toJSON) _cloudTrailTrailSnsTopicName
-    , fmap (("Tags",) . toJSON) _cloudTrailTrailTags
-    , fmap (("TrailName",) . toJSON) _cloudTrailTrailTrailName
-    ]
+instance ToResourceProperties CloudTrailTrail where
+  toResourceProperties CloudTrailTrail{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CloudTrail::Trail"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ 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
+        , fmap (("KMSKeyId",) . toJSON) _cloudTrailTrailKMSKeyId
+        , (Just . ("S3BucketName",) . toJSON) _cloudTrailTrailS3BucketName
+        , fmap (("S3KeyPrefix",) . toJSON) _cloudTrailTrailS3KeyPrefix
+        , fmap (("SnsTopicName",) . toJSON) _cloudTrailTrailSnsTopicName
+        , fmap (("Tags",) . toJSON) _cloudTrailTrailTags
+        , fmap (("TrailName",) . toJSON) _cloudTrailTrailTrailName
+        ]
+    }
 
 -- | Constructor for 'CloudTrailTrail' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CloudWatchAlarm.hs b/library-gen/Stratosphere/Resources/CloudWatchAlarm.hs
--- a/library-gen/Stratosphere/Resources/CloudWatchAlarm.hs
+++ b/library-gen/Stratosphere/Resources/CloudWatchAlarm.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html
@@ -36,31 +37,34 @@
   , _cloudWatchAlarmUnit :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON CloudWatchAlarm where
-  toJSON CloudWatchAlarm{..} =
-    object $
-    catMaybes
-    [ fmap (("ActionsEnabled",) . toJSON . fmap Bool') _cloudWatchAlarmActionsEnabled
-    , fmap (("AlarmActions",) . toJSON) _cloudWatchAlarmAlarmActions
-    , fmap (("AlarmDescription",) . toJSON) _cloudWatchAlarmAlarmDescription
-    , fmap (("AlarmName",) . toJSON) _cloudWatchAlarmAlarmName
-    , (Just . ("ComparisonOperator",) . toJSON) _cloudWatchAlarmComparisonOperator
-    , fmap (("DatapointsToAlarm",) . toJSON . fmap Integer') _cloudWatchAlarmDatapointsToAlarm
-    , fmap (("Dimensions",) . toJSON) _cloudWatchAlarmDimensions
-    , fmap (("EvaluateLowSampleCountPercentile",) . toJSON) _cloudWatchAlarmEvaluateLowSampleCountPercentile
-    , (Just . ("EvaluationPeriods",) . toJSON . fmap Integer') _cloudWatchAlarmEvaluationPeriods
-    , fmap (("ExtendedStatistic",) . toJSON) _cloudWatchAlarmExtendedStatistic
-    , fmap (("InsufficientDataActions",) . toJSON) _cloudWatchAlarmInsufficientDataActions
-    , fmap (("MetricName",) . toJSON) _cloudWatchAlarmMetricName
-    , fmap (("Metrics",) . toJSON) _cloudWatchAlarmMetrics
-    , fmap (("Namespace",) . toJSON) _cloudWatchAlarmNamespace
-    , fmap (("OKActions",) . toJSON) _cloudWatchAlarmOKActions
-    , fmap (("Period",) . toJSON . fmap Integer') _cloudWatchAlarmPeriod
-    , fmap (("Statistic",) . toJSON) _cloudWatchAlarmStatistic
-    , (Just . ("Threshold",) . toJSON . fmap Double') _cloudWatchAlarmThreshold
-    , fmap (("TreatMissingData",) . toJSON) _cloudWatchAlarmTreatMissingData
-    , fmap (("Unit",) . toJSON) _cloudWatchAlarmUnit
-    ]
+instance ToResourceProperties CloudWatchAlarm where
+  toResourceProperties CloudWatchAlarm{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CloudWatch::Alarm"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ActionsEnabled",) . toJSON . fmap Bool') _cloudWatchAlarmActionsEnabled
+        , fmap (("AlarmActions",) . toJSON) _cloudWatchAlarmAlarmActions
+        , fmap (("AlarmDescription",) . toJSON) _cloudWatchAlarmAlarmDescription
+        , fmap (("AlarmName",) . toJSON) _cloudWatchAlarmAlarmName
+        , (Just . ("ComparisonOperator",) . toJSON) _cloudWatchAlarmComparisonOperator
+        , fmap (("DatapointsToAlarm",) . toJSON . fmap Integer') _cloudWatchAlarmDatapointsToAlarm
+        , fmap (("Dimensions",) . toJSON) _cloudWatchAlarmDimensions
+        , fmap (("EvaluateLowSampleCountPercentile",) . toJSON) _cloudWatchAlarmEvaluateLowSampleCountPercentile
+        , (Just . ("EvaluationPeriods",) . toJSON . fmap Integer') _cloudWatchAlarmEvaluationPeriods
+        , fmap (("ExtendedStatistic",) . toJSON) _cloudWatchAlarmExtendedStatistic
+        , fmap (("InsufficientDataActions",) . toJSON) _cloudWatchAlarmInsufficientDataActions
+        , fmap (("MetricName",) . toJSON) _cloudWatchAlarmMetricName
+        , fmap (("Metrics",) . toJSON) _cloudWatchAlarmMetrics
+        , fmap (("Namespace",) . toJSON) _cloudWatchAlarmNamespace
+        , fmap (("OKActions",) . toJSON) _cloudWatchAlarmOKActions
+        , fmap (("Period",) . toJSON . fmap Integer') _cloudWatchAlarmPeriod
+        , fmap (("Statistic",) . toJSON) _cloudWatchAlarmStatistic
+        , (Just . ("Threshold",) . toJSON . fmap Double') _cloudWatchAlarmThreshold
+        , fmap (("TreatMissingData",) . toJSON) _cloudWatchAlarmTreatMissingData
+        , fmap (("Unit",) . toJSON) _cloudWatchAlarmUnit
+        ]
+    }
 
 -- | Constructor for 'CloudWatchAlarm' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CloudWatchDashboard.hs b/library-gen/Stratosphere/Resources/CloudWatchDashboard.hs
--- a/library-gen/Stratosphere/Resources/CloudWatchDashboard.hs
+++ b/library-gen/Stratosphere/Resources/CloudWatchDashboard.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-dashboard.html
@@ -17,13 +18,16 @@
   , _cloudWatchDashboardDashboardName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON CloudWatchDashboard where
-  toJSON CloudWatchDashboard{..} =
-    object $
-    catMaybes
-    [ (Just . ("DashboardBody",) . toJSON) _cloudWatchDashboardDashboardBody
-    , fmap (("DashboardName",) . toJSON) _cloudWatchDashboardDashboardName
-    ]
+instance ToResourceProperties CloudWatchDashboard where
+  toResourceProperties CloudWatchDashboard{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CloudWatch::Dashboard"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DashboardBody",) . toJSON) _cloudWatchDashboardDashboardBody
+        , fmap (("DashboardName",) . toJSON) _cloudWatchDashboardDashboardName
+        ]
+    }
 
 -- | Constructor for 'CloudWatchDashboard' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CodeBuildProject.hs b/library-gen/Stratosphere/Resources/CodeBuildProject.hs
--- a/library-gen/Stratosphere/Resources/CodeBuildProject.hs
+++ b/library-gen/Stratosphere/Resources/CodeBuildProject.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html
@@ -39,28 +40,31 @@
   , _codeBuildProjectVpcConfig :: Maybe CodeBuildProjectVpcConfig
   } deriving (Show, Eq)
 
-instance ToJSON CodeBuildProject where
-  toJSON CodeBuildProject{..} =
-    object $
-    catMaybes
-    [ (Just . ("Artifacts",) . toJSON) _codeBuildProjectArtifacts
-    , fmap (("BadgeEnabled",) . toJSON . fmap Bool') _codeBuildProjectBadgeEnabled
-    , fmap (("Cache",) . toJSON) _codeBuildProjectCache
-    , fmap (("Description",) . toJSON) _codeBuildProjectDescription
-    , fmap (("EncryptionKey",) . toJSON) _codeBuildProjectEncryptionKey
-    , (Just . ("Environment",) . toJSON) _codeBuildProjectEnvironment
-    , fmap (("LogsConfig",) . toJSON) _codeBuildProjectLogsConfig
-    , fmap (("Name",) . toJSON) _codeBuildProjectName
-    , fmap (("QueuedTimeoutInMinutes",) . toJSON . fmap Integer') _codeBuildProjectQueuedTimeoutInMinutes
-    , fmap (("SecondaryArtifacts",) . toJSON) _codeBuildProjectSecondaryArtifacts
-    , fmap (("SecondarySources",) . toJSON) _codeBuildProjectSecondarySources
-    , (Just . ("ServiceRole",) . toJSON) _codeBuildProjectServiceRole
-    , (Just . ("Source",) . toJSON) _codeBuildProjectSource
-    , fmap (("Tags",) . toJSON) _codeBuildProjectTags
-    , fmap (("TimeoutInMinutes",) . toJSON . fmap Integer') _codeBuildProjectTimeoutInMinutes
-    , fmap (("Triggers",) . toJSON) _codeBuildProjectTriggers
-    , fmap (("VpcConfig",) . toJSON) _codeBuildProjectVpcConfig
-    ]
+instance ToResourceProperties CodeBuildProject where
+  toResourceProperties CodeBuildProject{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CodeBuild::Project"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Artifacts",) . toJSON) _codeBuildProjectArtifacts
+        , fmap (("BadgeEnabled",) . toJSON . fmap Bool') _codeBuildProjectBadgeEnabled
+        , fmap (("Cache",) . toJSON) _codeBuildProjectCache
+        , fmap (("Description",) . toJSON) _codeBuildProjectDescription
+        , fmap (("EncryptionKey",) . toJSON) _codeBuildProjectEncryptionKey
+        , (Just . ("Environment",) . toJSON) _codeBuildProjectEnvironment
+        , fmap (("LogsConfig",) . toJSON) _codeBuildProjectLogsConfig
+        , fmap (("Name",) . toJSON) _codeBuildProjectName
+        , fmap (("QueuedTimeoutInMinutes",) . toJSON . fmap Integer') _codeBuildProjectQueuedTimeoutInMinutes
+        , fmap (("SecondaryArtifacts",) . toJSON) _codeBuildProjectSecondaryArtifacts
+        , fmap (("SecondarySources",) . toJSON) _codeBuildProjectSecondarySources
+        , (Just . ("ServiceRole",) . toJSON) _codeBuildProjectServiceRole
+        , (Just . ("Source",) . toJSON) _codeBuildProjectSource
+        , fmap (("Tags",) . toJSON) _codeBuildProjectTags
+        , fmap (("TimeoutInMinutes",) . toJSON . fmap Integer') _codeBuildProjectTimeoutInMinutes
+        , fmap (("Triggers",) . toJSON) _codeBuildProjectTriggers
+        , fmap (("VpcConfig",) . toJSON) _codeBuildProjectVpcConfig
+        ]
+    }
 
 -- | Constructor for 'CodeBuildProject' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CodeCommitRepository.hs b/library-gen/Stratosphere/Resources/CodeCommitRepository.hs
--- a/library-gen/Stratosphere/Resources/CodeCommitRepository.hs
+++ b/library-gen/Stratosphere/Resources/CodeCommitRepository.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codecommit-repository.html
@@ -18,14 +19,17 @@
   , _codeCommitRepositoryTriggers :: Maybe [CodeCommitRepositoryRepositoryTrigger]
   } deriving (Show, Eq)
 
-instance ToJSON CodeCommitRepository where
-  toJSON CodeCommitRepository{..} =
-    object $
-    catMaybes
-    [ fmap (("RepositoryDescription",) . toJSON) _codeCommitRepositoryRepositoryDescription
-    , (Just . ("RepositoryName",) . toJSON) _codeCommitRepositoryRepositoryName
-    , fmap (("Triggers",) . toJSON) _codeCommitRepositoryTriggers
-    ]
+instance ToResourceProperties CodeCommitRepository where
+  toResourceProperties CodeCommitRepository{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CodeCommit::Repository"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("RepositoryDescription",) . toJSON) _codeCommitRepositoryRepositoryDescription
+        , (Just . ("RepositoryName",) . toJSON) _codeCommitRepositoryRepositoryName
+        , fmap (("Triggers",) . toJSON) _codeCommitRepositoryTriggers
+        ]
+    }
 
 -- | Constructor for 'CodeCommitRepository' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CodeDeployApplication.hs b/library-gen/Stratosphere/Resources/CodeDeployApplication.hs
--- a/library-gen/Stratosphere/Resources/CodeDeployApplication.hs
+++ b/library-gen/Stratosphere/Resources/CodeDeployApplication.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-application.html
@@ -17,13 +18,16 @@
   , _codeDeployApplicationComputePlatform :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON CodeDeployApplication where
-  toJSON CodeDeployApplication{..} =
-    object $
-    catMaybes
-    [ fmap (("ApplicationName",) . toJSON) _codeDeployApplicationApplicationName
-    , fmap (("ComputePlatform",) . toJSON) _codeDeployApplicationComputePlatform
-    ]
+instance ToResourceProperties CodeDeployApplication where
+  toResourceProperties CodeDeployApplication{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CodeDeploy::Application"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ApplicationName",) . toJSON) _codeDeployApplicationApplicationName
+        , fmap (("ComputePlatform",) . toJSON) _codeDeployApplicationComputePlatform
+        ]
+    }
 
 -- | Constructor for 'CodeDeployApplication' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CodeDeployDeploymentConfig.hs b/library-gen/Stratosphere/Resources/CodeDeployDeploymentConfig.hs
--- a/library-gen/Stratosphere/Resources/CodeDeployDeploymentConfig.hs
+++ b/library-gen/Stratosphere/Resources/CodeDeployDeploymentConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentconfig.html
@@ -17,13 +18,16 @@
   , _codeDeployDeploymentConfigMinimumHealthyHosts :: Maybe CodeDeployDeploymentConfigMinimumHealthyHosts
   } deriving (Show, Eq)
 
-instance ToJSON CodeDeployDeploymentConfig where
-  toJSON CodeDeployDeploymentConfig{..} =
-    object $
-    catMaybes
-    [ fmap (("DeploymentConfigName",) . toJSON) _codeDeployDeploymentConfigDeploymentConfigName
-    , fmap (("MinimumHealthyHosts",) . toJSON) _codeDeployDeploymentConfigMinimumHealthyHosts
-    ]
+instance ToResourceProperties CodeDeployDeploymentConfig where
+  toResourceProperties CodeDeployDeploymentConfig{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CodeDeploy::DeploymentConfig"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("DeploymentConfigName",) . toJSON) _codeDeployDeploymentConfigDeploymentConfigName
+        , fmap (("MinimumHealthyHosts",) . toJSON) _codeDeployDeploymentConfigMinimumHealthyHosts
+        ]
+    }
 
 -- | Constructor for 'CodeDeployDeploymentConfig' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/CodeDeployDeploymentGroup.hs b/library-gen/Stratosphere/Resources/CodeDeployDeploymentGroup.hs
--- a/library-gen/Stratosphere/Resources/CodeDeployDeploymentGroup.hs
+++ b/library-gen/Stratosphere/Resources/CodeDeployDeploymentGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html
@@ -39,26 +40,29 @@
   , _codeDeployDeploymentGroupTriggerConfigurations :: Maybe [CodeDeployDeploymentGroupTriggerConfig]
   } deriving (Show, Eq)
 
-instance ToJSON CodeDeployDeploymentGroup where
-  toJSON CodeDeployDeploymentGroup{..} =
-    object $
-    catMaybes
-    [ fmap (("AlarmConfiguration",) . toJSON) _codeDeployDeploymentGroupAlarmConfiguration
-    , (Just . ("ApplicationName",) . toJSON) _codeDeployDeploymentGroupApplicationName
-    , fmap (("AutoRollbackConfiguration",) . toJSON) _codeDeployDeploymentGroupAutoRollbackConfiguration
-    , fmap (("AutoScalingGroups",) . toJSON) _codeDeployDeploymentGroupAutoScalingGroups
-    , fmap (("Deployment",) . toJSON) _codeDeployDeploymentGroupDeployment
-    , fmap (("DeploymentConfigName",) . toJSON) _codeDeployDeploymentGroupDeploymentConfigName
-    , fmap (("DeploymentGroupName",) . toJSON) _codeDeployDeploymentGroupDeploymentGroupName
-    , fmap (("DeploymentStyle",) . toJSON) _codeDeployDeploymentGroupDeploymentStyle
-    , fmap (("Ec2TagFilters",) . toJSON) _codeDeployDeploymentGroupEc2TagFilters
-    , fmap (("Ec2TagSet",) . toJSON) _codeDeployDeploymentGroupEc2TagSet
-    , fmap (("LoadBalancerInfo",) . toJSON) _codeDeployDeploymentGroupLoadBalancerInfo
-    , fmap (("OnPremisesInstanceTagFilters",) . toJSON) _codeDeployDeploymentGroupOnPremisesInstanceTagFilters
-    , fmap (("OnPremisesTagSet",) . toJSON) _codeDeployDeploymentGroupOnPremisesTagSet
-    , (Just . ("ServiceRoleArn",) . toJSON) _codeDeployDeploymentGroupServiceRoleArn
-    , fmap (("TriggerConfigurations",) . toJSON) _codeDeployDeploymentGroupTriggerConfigurations
-    ]
+instance ToResourceProperties CodeDeployDeploymentGroup where
+  toResourceProperties CodeDeployDeploymentGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CodeDeploy::DeploymentGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AlarmConfiguration",) . toJSON) _codeDeployDeploymentGroupAlarmConfiguration
+        , (Just . ("ApplicationName",) . toJSON) _codeDeployDeploymentGroupApplicationName
+        , fmap (("AutoRollbackConfiguration",) . toJSON) _codeDeployDeploymentGroupAutoRollbackConfiguration
+        , fmap (("AutoScalingGroups",) . toJSON) _codeDeployDeploymentGroupAutoScalingGroups
+        , fmap (("Deployment",) . toJSON) _codeDeployDeploymentGroupDeployment
+        , fmap (("DeploymentConfigName",) . toJSON) _codeDeployDeploymentGroupDeploymentConfigName
+        , fmap (("DeploymentGroupName",) . toJSON) _codeDeployDeploymentGroupDeploymentGroupName
+        , fmap (("DeploymentStyle",) . toJSON) _codeDeployDeploymentGroupDeploymentStyle
+        , fmap (("Ec2TagFilters",) . toJSON) _codeDeployDeploymentGroupEc2TagFilters
+        , fmap (("Ec2TagSet",) . toJSON) _codeDeployDeploymentGroupEc2TagSet
+        , fmap (("LoadBalancerInfo",) . toJSON) _codeDeployDeploymentGroupLoadBalancerInfo
+        , fmap (("OnPremisesInstanceTagFilters",) . toJSON) _codeDeployDeploymentGroupOnPremisesInstanceTagFilters
+        , fmap (("OnPremisesTagSet",) . toJSON) _codeDeployDeploymentGroupOnPremisesTagSet
+        , (Just . ("ServiceRoleArn",) . toJSON) _codeDeployDeploymentGroupServiceRoleArn
+        , fmap (("TriggerConfigurations",) . toJSON) _codeDeployDeploymentGroupTriggerConfigurations
+        ]
+    }
 
 -- | Constructor for 'CodeDeployDeploymentGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CodePipelineCustomActionType.hs b/library-gen/Stratosphere/Resources/CodePipelineCustomActionType.hs
--- a/library-gen/Stratosphere/Resources/CodePipelineCustomActionType.hs
+++ b/library-gen/Stratosphere/Resources/CodePipelineCustomActionType.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html
@@ -24,18 +25,21 @@
   , _codePipelineCustomActionTypeVersion :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON CodePipelineCustomActionType where
-  toJSON CodePipelineCustomActionType{..} =
-    object $
-    catMaybes
-    [ (Just . ("Category",) . toJSON) _codePipelineCustomActionTypeCategory
-    , fmap (("ConfigurationProperties",) . toJSON) _codePipelineCustomActionTypeConfigurationProperties
-    , (Just . ("InputArtifactDetails",) . toJSON) _codePipelineCustomActionTypeInputArtifactDetails
-    , (Just . ("OutputArtifactDetails",) . toJSON) _codePipelineCustomActionTypeOutputArtifactDetails
-    , (Just . ("Provider",) . toJSON) _codePipelineCustomActionTypeProvider
-    , fmap (("Settings",) . toJSON) _codePipelineCustomActionTypeSettings
-    , fmap (("Version",) . toJSON) _codePipelineCustomActionTypeVersion
-    ]
+instance ToResourceProperties CodePipelineCustomActionType where
+  toResourceProperties CodePipelineCustomActionType{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CodePipeline::CustomActionType"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Category",) . toJSON) _codePipelineCustomActionTypeCategory
+        , fmap (("ConfigurationProperties",) . toJSON) _codePipelineCustomActionTypeConfigurationProperties
+        , (Just . ("InputArtifactDetails",) . toJSON) _codePipelineCustomActionTypeInputArtifactDetails
+        , (Just . ("OutputArtifactDetails",) . toJSON) _codePipelineCustomActionTypeOutputArtifactDetails
+        , (Just . ("Provider",) . toJSON) _codePipelineCustomActionTypeProvider
+        , fmap (("Settings",) . toJSON) _codePipelineCustomActionTypeSettings
+        , fmap (("Version",) . toJSON) _codePipelineCustomActionTypeVersion
+        ]
+    }
 
 -- | Constructor for 'CodePipelineCustomActionType' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/CodePipelinePipeline.hs b/library-gen/Stratosphere/Resources/CodePipelinePipeline.hs
--- a/library-gen/Stratosphere/Resources/CodePipelinePipeline.hs
+++ b/library-gen/Stratosphere/Resources/CodePipelinePipeline.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html
@@ -25,18 +26,21 @@
   , _codePipelinePipelineStages :: [CodePipelinePipelineStageDeclaration]
   } deriving (Show, Eq)
 
-instance ToJSON CodePipelinePipeline where
-  toJSON CodePipelinePipeline{..} =
-    object $
-    catMaybes
-    [ fmap (("ArtifactStore",) . toJSON) _codePipelinePipelineArtifactStore
-    , fmap (("ArtifactStores",) . toJSON) _codePipelinePipelineArtifactStores
-    , fmap (("DisableInboundStageTransitions",) . toJSON) _codePipelinePipelineDisableInboundStageTransitions
-    , fmap (("Name",) . toJSON) _codePipelinePipelineName
-    , fmap (("RestartExecutionOnUpdate",) . toJSON . fmap Bool') _codePipelinePipelineRestartExecutionOnUpdate
-    , (Just . ("RoleArn",) . toJSON) _codePipelinePipelineRoleArn
-    , (Just . ("Stages",) . toJSON) _codePipelinePipelineStages
-    ]
+instance ToResourceProperties CodePipelinePipeline where
+  toResourceProperties CodePipelinePipeline{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CodePipeline::Pipeline"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ArtifactStore",) . toJSON) _codePipelinePipelineArtifactStore
+        , fmap (("ArtifactStores",) . toJSON) _codePipelinePipelineArtifactStores
+        , fmap (("DisableInboundStageTransitions",) . toJSON) _codePipelinePipelineDisableInboundStageTransitions
+        , fmap (("Name",) . toJSON) _codePipelinePipelineName
+        , fmap (("RestartExecutionOnUpdate",) . toJSON . fmap Bool') _codePipelinePipelineRestartExecutionOnUpdate
+        , (Just . ("RoleArn",) . toJSON) _codePipelinePipelineRoleArn
+        , (Just . ("Stages",) . toJSON) _codePipelinePipelineStages
+        ]
+    }
 
 -- | Constructor for 'CodePipelinePipeline' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CodePipelineWebhook.hs b/library-gen/Stratosphere/Resources/CodePipelineWebhook.hs
--- a/library-gen/Stratosphere/Resources/CodePipelineWebhook.hs
+++ b/library-gen/Stratosphere/Resources/CodePipelineWebhook.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html
@@ -24,19 +25,22 @@
   , _codePipelineWebhookTargetPipelineVersion :: Val Integer
   } deriving (Show, Eq)
 
-instance ToJSON CodePipelineWebhook where
-  toJSON CodePipelineWebhook{..} =
-    object $
-    catMaybes
-    [ (Just . ("Authentication",) . toJSON) _codePipelineWebhookAuthentication
-    , (Just . ("AuthenticationConfiguration",) . toJSON) _codePipelineWebhookAuthenticationConfiguration
-    , (Just . ("Filters",) . toJSON) _codePipelineWebhookFilters
-    , fmap (("Name",) . toJSON) _codePipelineWebhookName
-    , fmap (("RegisterWithThirdParty",) . toJSON . fmap Bool') _codePipelineWebhookRegisterWithThirdParty
-    , (Just . ("TargetAction",) . toJSON) _codePipelineWebhookTargetAction
-    , (Just . ("TargetPipeline",) . toJSON) _codePipelineWebhookTargetPipeline
-    , (Just . ("TargetPipelineVersion",) . toJSON . fmap Integer') _codePipelineWebhookTargetPipelineVersion
-    ]
+instance ToResourceProperties CodePipelineWebhook where
+  toResourceProperties CodePipelineWebhook{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CodePipeline::Webhook"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Authentication",) . toJSON) _codePipelineWebhookAuthentication
+        , (Just . ("AuthenticationConfiguration",) . toJSON) _codePipelineWebhookAuthenticationConfiguration
+        , (Just . ("Filters",) . toJSON) _codePipelineWebhookFilters
+        , fmap (("Name",) . toJSON) _codePipelineWebhookName
+        , fmap (("RegisterWithThirdParty",) . toJSON . fmap Bool') _codePipelineWebhookRegisterWithThirdParty
+        , (Just . ("TargetAction",) . toJSON) _codePipelineWebhookTargetAction
+        , (Just . ("TargetPipeline",) . toJSON) _codePipelineWebhookTargetPipeline
+        , (Just . ("TargetPipelineVersion",) . toJSON . fmap Integer') _codePipelineWebhookTargetPipelineVersion
+        ]
+    }
 
 -- | Constructor for 'CodePipelineWebhook' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CognitoIdentityPool.hs b/library-gen/Stratosphere/Resources/CognitoIdentityPool.hs
--- a/library-gen/Stratosphere/Resources/CognitoIdentityPool.hs
+++ b/library-gen/Stratosphere/Resources/CognitoIdentityPool.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html
@@ -27,21 +28,24 @@
   , _cognitoIdentityPoolSupportedLoginProviders :: Maybe Object
   } deriving (Show, Eq)
 
-instance ToJSON CognitoIdentityPool where
-  toJSON CognitoIdentityPool{..} =
-    object $
-    catMaybes
-    [ (Just . ("AllowUnauthenticatedIdentities",) . toJSON . fmap Bool') _cognitoIdentityPoolAllowUnauthenticatedIdentities
-    , fmap (("CognitoEvents",) . toJSON) _cognitoIdentityPoolCognitoEvents
-    , fmap (("CognitoIdentityProviders",) . toJSON) _cognitoIdentityPoolCognitoIdentityProviders
-    , fmap (("CognitoStreams",) . toJSON) _cognitoIdentityPoolCognitoStreams
-    , fmap (("DeveloperProviderName",) . toJSON) _cognitoIdentityPoolDeveloperProviderName
-    , fmap (("IdentityPoolName",) . toJSON) _cognitoIdentityPoolIdentityPoolName
-    , fmap (("OpenIdConnectProviderARNs",) . toJSON) _cognitoIdentityPoolOpenIdConnectProviderARNs
-    , fmap (("PushSync",) . toJSON) _cognitoIdentityPoolPushSync
-    , fmap (("SamlProviderARNs",) . toJSON) _cognitoIdentityPoolSamlProviderARNs
-    , fmap (("SupportedLoginProviders",) . toJSON) _cognitoIdentityPoolSupportedLoginProviders
-    ]
+instance ToResourceProperties CognitoIdentityPool where
+  toResourceProperties CognitoIdentityPool{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Cognito::IdentityPool"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AllowUnauthenticatedIdentities",) . toJSON . fmap Bool') _cognitoIdentityPoolAllowUnauthenticatedIdentities
+        , fmap (("CognitoEvents",) . toJSON) _cognitoIdentityPoolCognitoEvents
+        , fmap (("CognitoIdentityProviders",) . toJSON) _cognitoIdentityPoolCognitoIdentityProviders
+        , fmap (("CognitoStreams",) . toJSON) _cognitoIdentityPoolCognitoStreams
+        , fmap (("DeveloperProviderName",) . toJSON) _cognitoIdentityPoolDeveloperProviderName
+        , fmap (("IdentityPoolName",) . toJSON) _cognitoIdentityPoolIdentityPoolName
+        , fmap (("OpenIdConnectProviderARNs",) . toJSON) _cognitoIdentityPoolOpenIdConnectProviderARNs
+        , fmap (("PushSync",) . toJSON) _cognitoIdentityPoolPushSync
+        , fmap (("SamlProviderARNs",) . toJSON) _cognitoIdentityPoolSamlProviderARNs
+        , fmap (("SupportedLoginProviders",) . toJSON) _cognitoIdentityPoolSupportedLoginProviders
+        ]
+    }
 
 -- | Constructor for 'CognitoIdentityPool' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CognitoIdentityPoolRoleAttachment.hs b/library-gen/Stratosphere/Resources/CognitoIdentityPoolRoleAttachment.hs
--- a/library-gen/Stratosphere/Resources/CognitoIdentityPoolRoleAttachment.hs
+++ b/library-gen/Stratosphere/Resources/CognitoIdentityPoolRoleAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypoolroleattachment.html
@@ -18,14 +19,17 @@
   , _cognitoIdentityPoolRoleAttachmentRoles :: Maybe Object
   } deriving (Show, Eq)
 
-instance ToJSON CognitoIdentityPoolRoleAttachment where
-  toJSON CognitoIdentityPoolRoleAttachment{..} =
-    object $
-    catMaybes
-    [ (Just . ("IdentityPoolId",) . toJSON) _cognitoIdentityPoolRoleAttachmentIdentityPoolId
-    , fmap (("RoleMappings",) . toJSON) _cognitoIdentityPoolRoleAttachmentRoleMappings
-    , fmap (("Roles",) . toJSON) _cognitoIdentityPoolRoleAttachmentRoles
-    ]
+instance ToResourceProperties CognitoIdentityPoolRoleAttachment where
+  toResourceProperties CognitoIdentityPoolRoleAttachment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Cognito::IdentityPoolRoleAttachment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("IdentityPoolId",) . toJSON) _cognitoIdentityPoolRoleAttachmentIdentityPoolId
+        , fmap (("RoleMappings",) . toJSON) _cognitoIdentityPoolRoleAttachmentRoleMappings
+        , fmap (("Roles",) . toJSON) _cognitoIdentityPoolRoleAttachmentRoles
+        ]
+    }
 
 -- | Constructor for 'CognitoIdentityPoolRoleAttachment' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/CognitoUserPool.hs b/library-gen/Stratosphere/Resources/CognitoUserPool.hs
--- a/library-gen/Stratosphere/Resources/CognitoUserPool.hs
+++ b/library-gen/Stratosphere/Resources/CognitoUserPool.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html
@@ -38,28 +39,31 @@
   , _cognitoUserPoolUsernameAttributes :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
-instance ToJSON CognitoUserPool where
-  toJSON CognitoUserPool{..} =
-    object $
-    catMaybes
-    [ fmap (("AdminCreateUserConfig",) . toJSON) _cognitoUserPoolAdminCreateUserConfig
-    , fmap (("AliasAttributes",) . toJSON) _cognitoUserPoolAliasAttributes
-    , fmap (("AutoVerifiedAttributes",) . toJSON) _cognitoUserPoolAutoVerifiedAttributes
-    , fmap (("DeviceConfiguration",) . toJSON) _cognitoUserPoolDeviceConfiguration
-    , fmap (("EmailConfiguration",) . toJSON) _cognitoUserPoolEmailConfiguration
-    , fmap (("EmailVerificationMessage",) . toJSON) _cognitoUserPoolEmailVerificationMessage
-    , fmap (("EmailVerificationSubject",) . toJSON) _cognitoUserPoolEmailVerificationSubject
-    , fmap (("LambdaConfig",) . toJSON) _cognitoUserPoolLambdaConfig
-    , fmap (("MfaConfiguration",) . toJSON) _cognitoUserPoolMfaConfiguration
-    , fmap (("Policies",) . toJSON) _cognitoUserPoolPolicies
-    , fmap (("Schema",) . toJSON) _cognitoUserPoolSchema
-    , fmap (("SmsAuthenticationMessage",) . toJSON) _cognitoUserPoolSmsAuthenticationMessage
-    , fmap (("SmsConfiguration",) . toJSON) _cognitoUserPoolSmsConfiguration
-    , fmap (("SmsVerificationMessage",) . toJSON) _cognitoUserPoolSmsVerificationMessage
-    , fmap (("UserPoolName",) . toJSON) _cognitoUserPoolUserPoolName
-    , fmap (("UserPoolTags",) . toJSON) _cognitoUserPoolUserPoolTags
-    , fmap (("UsernameAttributes",) . toJSON) _cognitoUserPoolUsernameAttributes
-    ]
+instance ToResourceProperties CognitoUserPool where
+  toResourceProperties CognitoUserPool{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Cognito::UserPool"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AdminCreateUserConfig",) . toJSON) _cognitoUserPoolAdminCreateUserConfig
+        , fmap (("AliasAttributes",) . toJSON) _cognitoUserPoolAliasAttributes
+        , fmap (("AutoVerifiedAttributes",) . toJSON) _cognitoUserPoolAutoVerifiedAttributes
+        , fmap (("DeviceConfiguration",) . toJSON) _cognitoUserPoolDeviceConfiguration
+        , fmap (("EmailConfiguration",) . toJSON) _cognitoUserPoolEmailConfiguration
+        , fmap (("EmailVerificationMessage",) . toJSON) _cognitoUserPoolEmailVerificationMessage
+        , fmap (("EmailVerificationSubject",) . toJSON) _cognitoUserPoolEmailVerificationSubject
+        , fmap (("LambdaConfig",) . toJSON) _cognitoUserPoolLambdaConfig
+        , fmap (("MfaConfiguration",) . toJSON) _cognitoUserPoolMfaConfiguration
+        , fmap (("Policies",) . toJSON) _cognitoUserPoolPolicies
+        , fmap (("Schema",) . toJSON) _cognitoUserPoolSchema
+        , fmap (("SmsAuthenticationMessage",) . toJSON) _cognitoUserPoolSmsAuthenticationMessage
+        , fmap (("SmsConfiguration",) . toJSON) _cognitoUserPoolSmsConfiguration
+        , fmap (("SmsVerificationMessage",) . toJSON) _cognitoUserPoolSmsVerificationMessage
+        , fmap (("UserPoolName",) . toJSON) _cognitoUserPoolUserPoolName
+        , fmap (("UserPoolTags",) . toJSON) _cognitoUserPoolUserPoolTags
+        , fmap (("UsernameAttributes",) . toJSON) _cognitoUserPoolUsernameAttributes
+        ]
+    }
 
 -- | Constructor for 'CognitoUserPool' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CognitoUserPoolClient.hs b/library-gen/Stratosphere/Resources/CognitoUserPoolClient.hs
--- a/library-gen/Stratosphere/Resources/CognitoUserPoolClient.hs
+++ b/library-gen/Stratosphere/Resources/CognitoUserPoolClient.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html
@@ -22,18 +23,21 @@
   , _cognitoUserPoolClientWriteAttributes :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
-instance ToJSON CognitoUserPoolClient where
-  toJSON CognitoUserPoolClient{..} =
-    object $
-    catMaybes
-    [ fmap (("ClientName",) . toJSON) _cognitoUserPoolClientClientName
-    , fmap (("ExplicitAuthFlows",) . toJSON) _cognitoUserPoolClientExplicitAuthFlows
-    , fmap (("GenerateSecret",) . toJSON . fmap Bool') _cognitoUserPoolClientGenerateSecret
-    , fmap (("ReadAttributes",) . toJSON) _cognitoUserPoolClientReadAttributes
-    , fmap (("RefreshTokenValidity",) . toJSON . fmap Double') _cognitoUserPoolClientRefreshTokenValidity
-    , (Just . ("UserPoolId",) . toJSON) _cognitoUserPoolClientUserPoolId
-    , fmap (("WriteAttributes",) . toJSON) _cognitoUserPoolClientWriteAttributes
-    ]
+instance ToResourceProperties CognitoUserPoolClient where
+  toResourceProperties CognitoUserPoolClient{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Cognito::UserPoolClient"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ClientName",) . toJSON) _cognitoUserPoolClientClientName
+        , fmap (("ExplicitAuthFlows",) . toJSON) _cognitoUserPoolClientExplicitAuthFlows
+        , fmap (("GenerateSecret",) . toJSON . fmap Bool') _cognitoUserPoolClientGenerateSecret
+        , fmap (("ReadAttributes",) . toJSON) _cognitoUserPoolClientReadAttributes
+        , fmap (("RefreshTokenValidity",) . toJSON . fmap Double') _cognitoUserPoolClientRefreshTokenValidity
+        , (Just . ("UserPoolId",) . toJSON) _cognitoUserPoolClientUserPoolId
+        , fmap (("WriteAttributes",) . toJSON) _cognitoUserPoolClientWriteAttributes
+        ]
+    }
 
 -- | Constructor for 'CognitoUserPoolClient' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CognitoUserPoolGroup.hs b/library-gen/Stratosphere/Resources/CognitoUserPoolGroup.hs
--- a/library-gen/Stratosphere/Resources/CognitoUserPoolGroup.hs
+++ b/library-gen/Stratosphere/Resources/CognitoUserPoolGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolgroup.html
@@ -20,16 +21,19 @@
   , _cognitoUserPoolGroupUserPoolId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON CognitoUserPoolGroup where
-  toJSON CognitoUserPoolGroup{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _cognitoUserPoolGroupDescription
-    , fmap (("GroupName",) . toJSON) _cognitoUserPoolGroupGroupName
-    , fmap (("Precedence",) . toJSON . fmap Double') _cognitoUserPoolGroupPrecedence
-    , fmap (("RoleArn",) . toJSON) _cognitoUserPoolGroupRoleArn
-    , (Just . ("UserPoolId",) . toJSON) _cognitoUserPoolGroupUserPoolId
-    ]
+instance ToResourceProperties CognitoUserPoolGroup where
+  toResourceProperties CognitoUserPoolGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Cognito::UserPoolGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _cognitoUserPoolGroupDescription
+        , fmap (("GroupName",) . toJSON) _cognitoUserPoolGroupGroupName
+        , fmap (("Precedence",) . toJSON . fmap Double') _cognitoUserPoolGroupPrecedence
+        , fmap (("RoleArn",) . toJSON) _cognitoUserPoolGroupRoleArn
+        , (Just . ("UserPoolId",) . toJSON) _cognitoUserPoolGroupUserPoolId
+        ]
+    }
 
 -- | Constructor for 'CognitoUserPoolGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CognitoUserPoolUser.hs b/library-gen/Stratosphere/Resources/CognitoUserPoolUser.hs
--- a/library-gen/Stratosphere/Resources/CognitoUserPoolUser.hs
+++ b/library-gen/Stratosphere/Resources/CognitoUserPoolUser.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html
@@ -22,18 +23,21 @@
   , _cognitoUserPoolUserValidationData :: Maybe [CognitoUserPoolUserAttributeType]
   } deriving (Show, Eq)
 
-instance ToJSON CognitoUserPoolUser where
-  toJSON CognitoUserPoolUser{..} =
-    object $
-    catMaybes
-    [ fmap (("DesiredDeliveryMediums",) . toJSON) _cognitoUserPoolUserDesiredDeliveryMediums
-    , fmap (("ForceAliasCreation",) . toJSON . fmap Bool') _cognitoUserPoolUserForceAliasCreation
-    , fmap (("MessageAction",) . toJSON) _cognitoUserPoolUserMessageAction
-    , fmap (("UserAttributes",) . toJSON) _cognitoUserPoolUserUserAttributes
-    , (Just . ("UserPoolId",) . toJSON) _cognitoUserPoolUserUserPoolId
-    , fmap (("Username",) . toJSON) _cognitoUserPoolUserUsername
-    , fmap (("ValidationData",) . toJSON) _cognitoUserPoolUserValidationData
-    ]
+instance ToResourceProperties CognitoUserPoolUser where
+  toResourceProperties CognitoUserPoolUser{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Cognito::UserPoolUser"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("DesiredDeliveryMediums",) . toJSON) _cognitoUserPoolUserDesiredDeliveryMediums
+        , fmap (("ForceAliasCreation",) . toJSON . fmap Bool') _cognitoUserPoolUserForceAliasCreation
+        , fmap (("MessageAction",) . toJSON) _cognitoUserPoolUserMessageAction
+        , fmap (("UserAttributes",) . toJSON) _cognitoUserPoolUserUserAttributes
+        , (Just . ("UserPoolId",) . toJSON) _cognitoUserPoolUserUserPoolId
+        , fmap (("Username",) . toJSON) _cognitoUserPoolUserUsername
+        , fmap (("ValidationData",) . toJSON) _cognitoUserPoolUserValidationData
+        ]
+    }
 
 -- | Constructor for 'CognitoUserPoolUser' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/CognitoUserPoolUserToGroupAttachment.hs b/library-gen/Stratosphere/Resources/CognitoUserPoolUserToGroupAttachment.hs
--- a/library-gen/Stratosphere/Resources/CognitoUserPoolUserToGroupAttachment.hs
+++ b/library-gen/Stratosphere/Resources/CognitoUserPoolUserToGroupAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolusertogroupattachment.html
@@ -18,14 +19,17 @@
   , _cognitoUserPoolUserToGroupAttachmentUsername :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON CognitoUserPoolUserToGroupAttachment where
-  toJSON CognitoUserPoolUserToGroupAttachment{..} =
-    object $
-    catMaybes
-    [ (Just . ("GroupName",) . toJSON) _cognitoUserPoolUserToGroupAttachmentGroupName
-    , (Just . ("UserPoolId",) . toJSON) _cognitoUserPoolUserToGroupAttachmentUserPoolId
-    , (Just . ("Username",) . toJSON) _cognitoUserPoolUserToGroupAttachmentUsername
-    ]
+instance ToResourceProperties CognitoUserPoolUserToGroupAttachment where
+  toResourceProperties CognitoUserPoolUserToGroupAttachment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Cognito::UserPoolUserToGroupAttachment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("GroupName",) . toJSON) _cognitoUserPoolUserToGroupAttachmentGroupName
+        , (Just . ("UserPoolId",) . toJSON) _cognitoUserPoolUserToGroupAttachmentUserPoolId
+        , (Just . ("Username",) . toJSON) _cognitoUserPoolUserToGroupAttachmentUsername
+        ]
+    }
 
 -- | Constructor for 'CognitoUserPoolUserToGroupAttachment' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ConfigAggregationAuthorization.hs b/library-gen/Stratosphere/Resources/ConfigAggregationAuthorization.hs
--- a/library-gen/Stratosphere/Resources/ConfigAggregationAuthorization.hs
+++ b/library-gen/Stratosphere/Resources/ConfigAggregationAuthorization.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-aggregationauthorization.html
@@ -17,13 +18,16 @@
   , _configAggregationAuthorizationAuthorizedAwsRegion :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ConfigAggregationAuthorization where
-  toJSON ConfigAggregationAuthorization{..} =
-    object $
-    catMaybes
-    [ (Just . ("AuthorizedAccountId",) . toJSON) _configAggregationAuthorizationAuthorizedAccountId
-    , (Just . ("AuthorizedAwsRegion",) . toJSON) _configAggregationAuthorizationAuthorizedAwsRegion
-    ]
+instance ToResourceProperties ConfigAggregationAuthorization where
+  toResourceProperties ConfigAggregationAuthorization{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Config::AggregationAuthorization"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AuthorizedAccountId",) . toJSON) _configAggregationAuthorizationAuthorizedAccountId
+        , (Just . ("AuthorizedAwsRegion",) . toJSON) _configAggregationAuthorizationAuthorizedAwsRegion
+        ]
+    }
 
 -- | Constructor for 'ConfigAggregationAuthorization' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ConfigConfigRule.hs b/library-gen/Stratosphere/Resources/ConfigConfigRule.hs
--- a/library-gen/Stratosphere/Resources/ConfigConfigRule.hs
+++ b/library-gen/Stratosphere/Resources/ConfigConfigRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html
@@ -22,17 +23,20 @@
   , _configConfigRuleSource :: ConfigConfigRuleSource
   } deriving (Show, Eq)
 
-instance ToJSON ConfigConfigRule where
-  toJSON ConfigConfigRule{..} =
-    object $
-    catMaybes
-    [ fmap (("ConfigRuleName",) . toJSON) _configConfigRuleConfigRuleName
-    , fmap (("Description",) . toJSON) _configConfigRuleDescription
-    , fmap (("InputParameters",) . toJSON) _configConfigRuleInputParameters
-    , fmap (("MaximumExecutionFrequency",) . toJSON) _configConfigRuleMaximumExecutionFrequency
-    , fmap (("Scope",) . toJSON) _configConfigRuleScope
-    , (Just . ("Source",) . toJSON) _configConfigRuleSource
-    ]
+instance ToResourceProperties ConfigConfigRule where
+  toResourceProperties ConfigConfigRule{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Config::ConfigRule"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ConfigRuleName",) . toJSON) _configConfigRuleConfigRuleName
+        , fmap (("Description",) . toJSON) _configConfigRuleDescription
+        , fmap (("InputParameters",) . toJSON) _configConfigRuleInputParameters
+        , fmap (("MaximumExecutionFrequency",) . toJSON) _configConfigRuleMaximumExecutionFrequency
+        , fmap (("Scope",) . toJSON) _configConfigRuleScope
+        , (Just . ("Source",) . toJSON) _configConfigRuleSource
+        ]
+    }
 
 -- | Constructor for 'ConfigConfigRule' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ConfigConfigurationAggregator.hs b/library-gen/Stratosphere/Resources/ConfigConfigurationAggregator.hs
--- a/library-gen/Stratosphere/Resources/ConfigConfigurationAggregator.hs
+++ b/library-gen/Stratosphere/Resources/ConfigConfigurationAggregator.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html
@@ -19,14 +20,17 @@
   , _configConfigurationAggregatorOrganizationAggregationSource :: Maybe ConfigConfigurationAggregatorOrganizationAggregationSource
   } deriving (Show, Eq)
 
-instance ToJSON ConfigConfigurationAggregator where
-  toJSON ConfigConfigurationAggregator{..} =
-    object $
-    catMaybes
-    [ fmap (("AccountAggregationSources",) . toJSON) _configConfigurationAggregatorAccountAggregationSources
-    , (Just . ("ConfigurationAggregatorName",) . toJSON) _configConfigurationAggregatorConfigurationAggregatorName
-    , fmap (("OrganizationAggregationSource",) . toJSON) _configConfigurationAggregatorOrganizationAggregationSource
-    ]
+instance ToResourceProperties ConfigConfigurationAggregator where
+  toResourceProperties ConfigConfigurationAggregator{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Config::ConfigurationAggregator"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AccountAggregationSources",) . toJSON) _configConfigurationAggregatorAccountAggregationSources
+        , (Just . ("ConfigurationAggregatorName",) . toJSON) _configConfigurationAggregatorConfigurationAggregatorName
+        , fmap (("OrganizationAggregationSource",) . toJSON) _configConfigurationAggregatorOrganizationAggregationSource
+        ]
+    }
 
 -- | Constructor for 'ConfigConfigurationAggregator' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ConfigConfigurationRecorder.hs b/library-gen/Stratosphere/Resources/ConfigConfigurationRecorder.hs
--- a/library-gen/Stratosphere/Resources/ConfigConfigurationRecorder.hs
+++ b/library-gen/Stratosphere/Resources/ConfigConfigurationRecorder.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html
@@ -18,14 +19,17 @@
   , _configConfigurationRecorderRoleARN :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ConfigConfigurationRecorder where
-  toJSON ConfigConfigurationRecorder{..} =
-    object $
-    catMaybes
-    [ fmap (("Name",) . toJSON) _configConfigurationRecorderName
-    , fmap (("RecordingGroup",) . toJSON) _configConfigurationRecorderRecordingGroup
-    , (Just . ("RoleARN",) . toJSON) _configConfigurationRecorderRoleARN
-    ]
+instance ToResourceProperties ConfigConfigurationRecorder where
+  toResourceProperties ConfigConfigurationRecorder{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Config::ConfigurationRecorder"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Name",) . toJSON) _configConfigurationRecorderName
+        , fmap (("RecordingGroup",) . toJSON) _configConfigurationRecorderRecordingGroup
+        , (Just . ("RoleARN",) . toJSON) _configConfigurationRecorderRoleARN
+        ]
+    }
 
 -- | Constructor for 'ConfigConfigurationRecorder' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/ConfigDeliveryChannel.hs b/library-gen/Stratosphere/Resources/ConfigDeliveryChannel.hs
--- a/library-gen/Stratosphere/Resources/ConfigDeliveryChannel.hs
+++ b/library-gen/Stratosphere/Resources/ConfigDeliveryChannel.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html
@@ -20,16 +21,19 @@
   , _configDeliveryChannelSnsTopicARN :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ConfigDeliveryChannel where
-  toJSON ConfigDeliveryChannel{..} =
-    object $
-    catMaybes
-    [ fmap (("ConfigSnapshotDeliveryProperties",) . toJSON) _configDeliveryChannelConfigSnapshotDeliveryProperties
-    , fmap (("Name",) . toJSON) _configDeliveryChannelName
-    , (Just . ("S3BucketName",) . toJSON) _configDeliveryChannelS3BucketName
-    , fmap (("S3KeyPrefix",) . toJSON) _configDeliveryChannelS3KeyPrefix
-    , fmap (("SnsTopicARN",) . toJSON) _configDeliveryChannelSnsTopicARN
-    ]
+instance ToResourceProperties ConfigDeliveryChannel where
+  toResourceProperties ConfigDeliveryChannel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Config::DeliveryChannel"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ConfigSnapshotDeliveryProperties",) . toJSON) _configDeliveryChannelConfigSnapshotDeliveryProperties
+        , fmap (("Name",) . toJSON) _configDeliveryChannelName
+        , (Just . ("S3BucketName",) . toJSON) _configDeliveryChannelS3BucketName
+        , fmap (("S3KeyPrefix",) . toJSON) _configDeliveryChannelS3KeyPrefix
+        , fmap (("SnsTopicARN",) . toJSON) _configDeliveryChannelSnsTopicARN
+        ]
+    }
 
 -- | Constructor for 'ConfigDeliveryChannel' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/DAXCluster.hs b/library-gen/Stratosphere/Resources/DAXCluster.hs
--- a/library-gen/Stratosphere/Resources/DAXCluster.hs
+++ b/library-gen/Stratosphere/Resources/DAXCluster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html
@@ -28,24 +29,27 @@
   , _dAXClusterTags :: Maybe Object
   } deriving (Show, Eq)
 
-instance ToJSON DAXCluster where
-  toJSON DAXCluster{..} =
-    object $
-    catMaybes
-    [ fmap (("AvailabilityZones",) . toJSON) _dAXClusterAvailabilityZones
-    , fmap (("ClusterName",) . toJSON) _dAXClusterClusterName
-    , fmap (("Description",) . toJSON) _dAXClusterDescription
-    , (Just . ("IAMRoleARN",) . toJSON) _dAXClusterIAMRoleARN
-    , (Just . ("NodeType",) . toJSON) _dAXClusterNodeType
-    , fmap (("NotificationTopicARN",) . toJSON) _dAXClusterNotificationTopicARN
-    , fmap (("ParameterGroupName",) . toJSON) _dAXClusterParameterGroupName
-    , fmap (("PreferredMaintenanceWindow",) . toJSON) _dAXClusterPreferredMaintenanceWindow
-    , (Just . ("ReplicationFactor",) . toJSON . fmap Integer') _dAXClusterReplicationFactor
-    , fmap (("SSESpecification",) . toJSON) _dAXClusterSSESpecification
-    , fmap (("SecurityGroupIds",) . toJSON) _dAXClusterSecurityGroupIds
-    , fmap (("SubnetGroupName",) . toJSON) _dAXClusterSubnetGroupName
-    , fmap (("Tags",) . toJSON) _dAXClusterTags
-    ]
+instance ToResourceProperties DAXCluster where
+  toResourceProperties DAXCluster{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DAX::Cluster"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AvailabilityZones",) . toJSON) _dAXClusterAvailabilityZones
+        , fmap (("ClusterName",) . toJSON) _dAXClusterClusterName
+        , fmap (("Description",) . toJSON) _dAXClusterDescription
+        , (Just . ("IAMRoleARN",) . toJSON) _dAXClusterIAMRoleARN
+        , (Just . ("NodeType",) . toJSON) _dAXClusterNodeType
+        , fmap (("NotificationTopicARN",) . toJSON) _dAXClusterNotificationTopicARN
+        , fmap (("ParameterGroupName",) . toJSON) _dAXClusterParameterGroupName
+        , fmap (("PreferredMaintenanceWindow",) . toJSON) _dAXClusterPreferredMaintenanceWindow
+        , (Just . ("ReplicationFactor",) . toJSON . fmap Integer') _dAXClusterReplicationFactor
+        , fmap (("SSESpecification",) . toJSON) _dAXClusterSSESpecification
+        , fmap (("SecurityGroupIds",) . toJSON) _dAXClusterSecurityGroupIds
+        , fmap (("SubnetGroupName",) . toJSON) _dAXClusterSubnetGroupName
+        , fmap (("Tags",) . toJSON) _dAXClusterTags
+        ]
+    }
 
 -- | Constructor for 'DAXCluster' containing required fields as arguments.
 daxCluster
diff --git a/library-gen/Stratosphere/Resources/DAXParameterGroup.hs b/library-gen/Stratosphere/Resources/DAXParameterGroup.hs
--- a/library-gen/Stratosphere/Resources/DAXParameterGroup.hs
+++ b/library-gen/Stratosphere/Resources/DAXParameterGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-parametergroup.html
@@ -18,14 +19,17 @@
   , _dAXParameterGroupParameterNameValues :: Maybe Object
   } deriving (Show, Eq)
 
-instance ToJSON DAXParameterGroup where
-  toJSON DAXParameterGroup{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _dAXParameterGroupDescription
-    , fmap (("ParameterGroupName",) . toJSON) _dAXParameterGroupParameterGroupName
-    , fmap (("ParameterNameValues",) . toJSON) _dAXParameterGroupParameterNameValues
-    ]
+instance ToResourceProperties DAXParameterGroup where
+  toResourceProperties DAXParameterGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DAX::ParameterGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _dAXParameterGroupDescription
+        , fmap (("ParameterGroupName",) . toJSON) _dAXParameterGroupParameterGroupName
+        , fmap (("ParameterNameValues",) . toJSON) _dAXParameterGroupParameterNameValues
+        ]
+    }
 
 -- | Constructor for 'DAXParameterGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/DAXSubnetGroup.hs b/library-gen/Stratosphere/Resources/DAXSubnetGroup.hs
--- a/library-gen/Stratosphere/Resources/DAXSubnetGroup.hs
+++ b/library-gen/Stratosphere/Resources/DAXSubnetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-subnetgroup.html
@@ -18,14 +19,17 @@
   , _dAXSubnetGroupSubnetIds :: ValList Text
   } deriving (Show, Eq)
 
-instance ToJSON DAXSubnetGroup where
-  toJSON DAXSubnetGroup{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _dAXSubnetGroupDescription
-    , fmap (("SubnetGroupName",) . toJSON) _dAXSubnetGroupSubnetGroupName
-    , (Just . ("SubnetIds",) . toJSON) _dAXSubnetGroupSubnetIds
-    ]
+instance ToResourceProperties DAXSubnetGroup where
+  toResourceProperties DAXSubnetGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DAX::SubnetGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _dAXSubnetGroupDescription
+        , fmap (("SubnetGroupName",) . toJSON) _dAXSubnetGroupSubnetGroupName
+        , (Just . ("SubnetIds",) . toJSON) _dAXSubnetGroupSubnetIds
+        ]
+    }
 
 -- | Constructor for 'DAXSubnetGroup' containing required fields as arguments.
 daxSubnetGroup
diff --git a/library-gen/Stratosphere/Resources/DLMLifecyclePolicy.hs b/library-gen/Stratosphere/Resources/DLMLifecyclePolicy.hs
--- a/library-gen/Stratosphere/Resources/DLMLifecyclePolicy.hs
+++ b/library-gen/Stratosphere/Resources/DLMLifecyclePolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dlm-lifecyclepolicy.html
@@ -19,15 +20,18 @@
   , _dLMLifecyclePolicyState :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON DLMLifecyclePolicy where
-  toJSON DLMLifecyclePolicy{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _dLMLifecyclePolicyDescription
-    , fmap (("ExecutionRoleArn",) . toJSON) _dLMLifecyclePolicyExecutionRoleArn
-    , fmap (("PolicyDetails",) . toJSON) _dLMLifecyclePolicyPolicyDetails
-    , fmap (("State",) . toJSON) _dLMLifecyclePolicyState
-    ]
+instance ToResourceProperties DLMLifecyclePolicy where
+  toResourceProperties DLMLifecyclePolicy{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DLM::LifecyclePolicy"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _dLMLifecyclePolicyDescription
+        , fmap (("ExecutionRoleArn",) . toJSON) _dLMLifecyclePolicyExecutionRoleArn
+        , fmap (("PolicyDetails",) . toJSON) _dLMLifecyclePolicyPolicyDetails
+        , fmap (("State",) . toJSON) _dLMLifecyclePolicyState
+        ]
+    }
 
 -- | Constructor for 'DLMLifecyclePolicy' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/DMSCertificate.hs b/library-gen/Stratosphere/Resources/DMSCertificate.hs
--- a/library-gen/Stratosphere/Resources/DMSCertificate.hs
+++ b/library-gen/Stratosphere/Resources/DMSCertificate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-certificate.html
@@ -18,14 +19,17 @@
   , _dMSCertificateCertificateWallet :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON DMSCertificate where
-  toJSON DMSCertificate{..} =
-    object $
-    catMaybes
-    [ fmap (("CertificateIdentifier",) . toJSON) _dMSCertificateCertificateIdentifier
-    , fmap (("CertificatePem",) . toJSON) _dMSCertificateCertificatePem
-    , fmap (("CertificateWallet",) . toJSON) _dMSCertificateCertificateWallet
-    ]
+instance ToResourceProperties DMSCertificate where
+  toResourceProperties DMSCertificate{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DMS::Certificate"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CertificateIdentifier",) . toJSON) _dMSCertificateCertificateIdentifier
+        , fmap (("CertificatePem",) . toJSON) _dMSCertificateCertificatePem
+        , fmap (("CertificateWallet",) . toJSON) _dMSCertificateCertificateWallet
+        ]
+    }
 
 -- | Constructor for 'DMSCertificate' containing required fields as arguments.
 dmsCertificate
diff --git a/library-gen/Stratosphere/Resources/DMSEndpoint.hs b/library-gen/Stratosphere/Resources/DMSEndpoint.hs
--- a/library-gen/Stratosphere/Resources/DMSEndpoint.hs
+++ b/library-gen/Stratosphere/Resources/DMSEndpoint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html
@@ -38,29 +39,32 @@
   , _dMSEndpointUsername :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON DMSEndpoint where
-  toJSON DMSEndpoint{..} =
-    object $
-    catMaybes
-    [ fmap (("CertificateArn",) . toJSON) _dMSEndpointCertificateArn
-    , fmap (("DatabaseName",) . toJSON) _dMSEndpointDatabaseName
-    , fmap (("DynamoDbSettings",) . toJSON) _dMSEndpointDynamoDbSettings
-    , fmap (("ElasticsearchSettings",) . toJSON) _dMSEndpointElasticsearchSettings
-    , fmap (("EndpointIdentifier",) . toJSON) _dMSEndpointEndpointIdentifier
-    , (Just . ("EndpointType",) . toJSON) _dMSEndpointEndpointType
-    , (Just . ("EngineName",) . toJSON) _dMSEndpointEngineName
-    , fmap (("ExtraConnectionAttributes",) . toJSON) _dMSEndpointExtraConnectionAttributes
-    , fmap (("KinesisSettings",) . toJSON) _dMSEndpointKinesisSettings
-    , fmap (("KmsKeyId",) . toJSON) _dMSEndpointKmsKeyId
-    , fmap (("MongoDbSettings",) . toJSON) _dMSEndpointMongoDbSettings
-    , fmap (("Password",) . toJSON) _dMSEndpointPassword
-    , fmap (("Port",) . toJSON . fmap Integer') _dMSEndpointPort
-    , fmap (("S3Settings",) . toJSON) _dMSEndpointS3Settings
-    , fmap (("ServerName",) . toJSON) _dMSEndpointServerName
-    , fmap (("SslMode",) . toJSON) _dMSEndpointSslMode
-    , fmap (("Tags",) . toJSON) _dMSEndpointTags
-    , fmap (("Username",) . toJSON) _dMSEndpointUsername
-    ]
+instance ToResourceProperties DMSEndpoint where
+  toResourceProperties DMSEndpoint{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DMS::Endpoint"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CertificateArn",) . toJSON) _dMSEndpointCertificateArn
+        , fmap (("DatabaseName",) . toJSON) _dMSEndpointDatabaseName
+        , fmap (("DynamoDbSettings",) . toJSON) _dMSEndpointDynamoDbSettings
+        , fmap (("ElasticsearchSettings",) . toJSON) _dMSEndpointElasticsearchSettings
+        , fmap (("EndpointIdentifier",) . toJSON) _dMSEndpointEndpointIdentifier
+        , (Just . ("EndpointType",) . toJSON) _dMSEndpointEndpointType
+        , (Just . ("EngineName",) . toJSON) _dMSEndpointEngineName
+        , fmap (("ExtraConnectionAttributes",) . toJSON) _dMSEndpointExtraConnectionAttributes
+        , fmap (("KinesisSettings",) . toJSON) _dMSEndpointKinesisSettings
+        , fmap (("KmsKeyId",) . toJSON) _dMSEndpointKmsKeyId
+        , fmap (("MongoDbSettings",) . toJSON) _dMSEndpointMongoDbSettings
+        , fmap (("Password",) . toJSON) _dMSEndpointPassword
+        , fmap (("Port",) . toJSON . fmap Integer') _dMSEndpointPort
+        , fmap (("S3Settings",) . toJSON) _dMSEndpointS3Settings
+        , fmap (("ServerName",) . toJSON) _dMSEndpointServerName
+        , fmap (("SslMode",) . toJSON) _dMSEndpointSslMode
+        , fmap (("Tags",) . toJSON) _dMSEndpointTags
+        , fmap (("Username",) . toJSON) _dMSEndpointUsername
+        ]
+    }
 
 -- | Constructor for 'DMSEndpoint' containing required fields as arguments.
 dmsEndpoint
diff --git a/library-gen/Stratosphere/Resources/DMSEventSubscription.hs b/library-gen/Stratosphere/Resources/DMSEventSubscription.hs
--- a/library-gen/Stratosphere/Resources/DMSEventSubscription.hs
+++ b/library-gen/Stratosphere/Resources/DMSEventSubscription.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html
@@ -22,18 +23,21 @@
   , _dMSEventSubscriptionTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON DMSEventSubscription where
-  toJSON DMSEventSubscription{..} =
-    object $
-    catMaybes
-    [ fmap (("Enabled",) . toJSON . fmap Bool') _dMSEventSubscriptionEnabled
-    , fmap (("EventCategories",) . toJSON) _dMSEventSubscriptionEventCategories
-    , (Just . ("SnsTopicArn",) . toJSON) _dMSEventSubscriptionSnsTopicArn
-    , fmap (("SourceIds",) . toJSON) _dMSEventSubscriptionSourceIds
-    , fmap (("SourceType",) . toJSON) _dMSEventSubscriptionSourceType
-    , fmap (("SubscriptionName",) . toJSON) _dMSEventSubscriptionSubscriptionName
-    , fmap (("Tags",) . toJSON) _dMSEventSubscriptionTags
-    ]
+instance ToResourceProperties DMSEventSubscription where
+  toResourceProperties DMSEventSubscription{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DMS::EventSubscription"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Enabled",) . toJSON . fmap Bool') _dMSEventSubscriptionEnabled
+        , fmap (("EventCategories",) . toJSON) _dMSEventSubscriptionEventCategories
+        , (Just . ("SnsTopicArn",) . toJSON) _dMSEventSubscriptionSnsTopicArn
+        , fmap (("SourceIds",) . toJSON) _dMSEventSubscriptionSourceIds
+        , fmap (("SourceType",) . toJSON) _dMSEventSubscriptionSourceType
+        , fmap (("SubscriptionName",) . toJSON) _dMSEventSubscriptionSubscriptionName
+        , fmap (("Tags",) . toJSON) _dMSEventSubscriptionTags
+        ]
+    }
 
 -- | Constructor for 'DMSEventSubscription' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/DMSReplicationInstance.hs b/library-gen/Stratosphere/Resources/DMSReplicationInstance.hs
--- a/library-gen/Stratosphere/Resources/DMSReplicationInstance.hs
+++ b/library-gen/Stratosphere/Resources/DMSReplicationInstance.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html
@@ -29,25 +30,28 @@
   , _dMSReplicationInstanceVpcSecurityGroupIds :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
-instance ToJSON DMSReplicationInstance where
-  toJSON DMSReplicationInstance{..} =
-    object $
-    catMaybes
-    [ fmap (("AllocatedStorage",) . toJSON . fmap Integer') _dMSReplicationInstanceAllocatedStorage
-    , fmap (("AllowMajorVersionUpgrade",) . toJSON . fmap Bool') _dMSReplicationInstanceAllowMajorVersionUpgrade
-    , fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _dMSReplicationInstanceAutoMinorVersionUpgrade
-    , fmap (("AvailabilityZone",) . toJSON) _dMSReplicationInstanceAvailabilityZone
-    , fmap (("EngineVersion",) . toJSON) _dMSReplicationInstanceEngineVersion
-    , fmap (("KmsKeyId",) . toJSON) _dMSReplicationInstanceKmsKeyId
-    , fmap (("MultiAZ",) . toJSON . fmap Bool') _dMSReplicationInstanceMultiAZ
-    , fmap (("PreferredMaintenanceWindow",) . toJSON) _dMSReplicationInstancePreferredMaintenanceWindow
-    , fmap (("PubliclyAccessible",) . toJSON . fmap Bool') _dMSReplicationInstancePubliclyAccessible
-    , (Just . ("ReplicationInstanceClass",) . toJSON) _dMSReplicationInstanceReplicationInstanceClass
-    , fmap (("ReplicationInstanceIdentifier",) . toJSON) _dMSReplicationInstanceReplicationInstanceIdentifier
-    , fmap (("ReplicationSubnetGroupIdentifier",) . toJSON) _dMSReplicationInstanceReplicationSubnetGroupIdentifier
-    , fmap (("Tags",) . toJSON) _dMSReplicationInstanceTags
-    , fmap (("VpcSecurityGroupIds",) . toJSON) _dMSReplicationInstanceVpcSecurityGroupIds
-    ]
+instance ToResourceProperties DMSReplicationInstance where
+  toResourceProperties DMSReplicationInstance{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DMS::ReplicationInstance"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AllocatedStorage",) . toJSON . fmap Integer') _dMSReplicationInstanceAllocatedStorage
+        , fmap (("AllowMajorVersionUpgrade",) . toJSON . fmap Bool') _dMSReplicationInstanceAllowMajorVersionUpgrade
+        , fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _dMSReplicationInstanceAutoMinorVersionUpgrade
+        , fmap (("AvailabilityZone",) . toJSON) _dMSReplicationInstanceAvailabilityZone
+        , fmap (("EngineVersion",) . toJSON) _dMSReplicationInstanceEngineVersion
+        , fmap (("KmsKeyId",) . toJSON) _dMSReplicationInstanceKmsKeyId
+        , fmap (("MultiAZ",) . toJSON . fmap Bool') _dMSReplicationInstanceMultiAZ
+        , fmap (("PreferredMaintenanceWindow",) . toJSON) _dMSReplicationInstancePreferredMaintenanceWindow
+        , fmap (("PubliclyAccessible",) . toJSON . fmap Bool') _dMSReplicationInstancePubliclyAccessible
+        , (Just . ("ReplicationInstanceClass",) . toJSON) _dMSReplicationInstanceReplicationInstanceClass
+        , fmap (("ReplicationInstanceIdentifier",) . toJSON) _dMSReplicationInstanceReplicationInstanceIdentifier
+        , fmap (("ReplicationSubnetGroupIdentifier",) . toJSON) _dMSReplicationInstanceReplicationSubnetGroupIdentifier
+        , fmap (("Tags",) . toJSON) _dMSReplicationInstanceTags
+        , fmap (("VpcSecurityGroupIds",) . toJSON) _dMSReplicationInstanceVpcSecurityGroupIds
+        ]
+    }
 
 -- | Constructor for 'DMSReplicationInstance' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/DMSReplicationSubnetGroup.hs b/library-gen/Stratosphere/Resources/DMSReplicationSubnetGroup.hs
--- a/library-gen/Stratosphere/Resources/DMSReplicationSubnetGroup.hs
+++ b/library-gen/Stratosphere/Resources/DMSReplicationSubnetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationsubnetgroup.html
@@ -19,15 +20,18 @@
   , _dMSReplicationSubnetGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON DMSReplicationSubnetGroup where
-  toJSON DMSReplicationSubnetGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("ReplicationSubnetGroupDescription",) . toJSON) _dMSReplicationSubnetGroupReplicationSubnetGroupDescription
-    , fmap (("ReplicationSubnetGroupIdentifier",) . toJSON) _dMSReplicationSubnetGroupReplicationSubnetGroupIdentifier
-    , (Just . ("SubnetIds",) . toJSON) _dMSReplicationSubnetGroupSubnetIds
-    , fmap (("Tags",) . toJSON) _dMSReplicationSubnetGroupTags
-    ]
+instance ToResourceProperties DMSReplicationSubnetGroup where
+  toResourceProperties DMSReplicationSubnetGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DMS::ReplicationSubnetGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ReplicationSubnetGroupDescription",) . toJSON) _dMSReplicationSubnetGroupReplicationSubnetGroupDescription
+        , fmap (("ReplicationSubnetGroupIdentifier",) . toJSON) _dMSReplicationSubnetGroupReplicationSubnetGroupIdentifier
+        , (Just . ("SubnetIds",) . toJSON) _dMSReplicationSubnetGroupSubnetIds
+        , fmap (("Tags",) . toJSON) _dMSReplicationSubnetGroupTags
+        ]
+    }
 
 -- | Constructor for 'DMSReplicationSubnetGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/DMSReplicationTask.hs b/library-gen/Stratosphere/Resources/DMSReplicationTask.hs
--- a/library-gen/Stratosphere/Resources/DMSReplicationTask.hs
+++ b/library-gen/Stratosphere/Resources/DMSReplicationTask.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html
@@ -24,20 +25,23 @@
   , _dMSReplicationTaskTargetEndpointArn :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON DMSReplicationTask where
-  toJSON DMSReplicationTask{..} =
-    object $
-    catMaybes
-    [ fmap (("CdcStartTime",) . toJSON . fmap Double') _dMSReplicationTaskCdcStartTime
-    , (Just . ("MigrationType",) . toJSON) _dMSReplicationTaskMigrationType
-    , (Just . ("ReplicationInstanceArn",) . toJSON) _dMSReplicationTaskReplicationInstanceArn
-    , fmap (("ReplicationTaskIdentifier",) . toJSON) _dMSReplicationTaskReplicationTaskIdentifier
-    , fmap (("ReplicationTaskSettings",) . toJSON) _dMSReplicationTaskReplicationTaskSettings
-    , (Just . ("SourceEndpointArn",) . toJSON) _dMSReplicationTaskSourceEndpointArn
-    , (Just . ("TableMappings",) . toJSON) _dMSReplicationTaskTableMappings
-    , fmap (("Tags",) . toJSON) _dMSReplicationTaskTags
-    , (Just . ("TargetEndpointArn",) . toJSON) _dMSReplicationTaskTargetEndpointArn
-    ]
+instance ToResourceProperties DMSReplicationTask where
+  toResourceProperties DMSReplicationTask{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DMS::ReplicationTask"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CdcStartTime",) . toJSON . fmap Double') _dMSReplicationTaskCdcStartTime
+        , (Just . ("MigrationType",) . toJSON) _dMSReplicationTaskMigrationType
+        , (Just . ("ReplicationInstanceArn",) . toJSON) _dMSReplicationTaskReplicationInstanceArn
+        , fmap (("ReplicationTaskIdentifier",) . toJSON) _dMSReplicationTaskReplicationTaskIdentifier
+        , fmap (("ReplicationTaskSettings",) . toJSON) _dMSReplicationTaskReplicationTaskSettings
+        , (Just . ("SourceEndpointArn",) . toJSON) _dMSReplicationTaskSourceEndpointArn
+        , (Just . ("TableMappings",) . toJSON) _dMSReplicationTaskTableMappings
+        , fmap (("Tags",) . toJSON) _dMSReplicationTaskTags
+        , (Just . ("TargetEndpointArn",) . toJSON) _dMSReplicationTaskTargetEndpointArn
+        ]
+    }
 
 -- | Constructor for 'DMSReplicationTask' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/DataPipelinePipeline.hs b/library-gen/Stratosphere/Resources/DataPipelinePipeline.hs
--- a/library-gen/Stratosphere/Resources/DataPipelinePipeline.hs
+++ b/library-gen/Stratosphere/Resources/DataPipelinePipeline.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html
@@ -25,18 +26,21 @@
   , _dataPipelinePipelinePipelineTags :: Maybe [DataPipelinePipelinePipelineTag]
   } deriving (Show, Eq)
 
-instance ToJSON DataPipelinePipeline where
-  toJSON DataPipelinePipeline{..} =
-    object $
-    catMaybes
-    [ fmap (("Activate",) . toJSON . fmap Bool') _dataPipelinePipelineActivate
-    , fmap (("Description",) . toJSON) _dataPipelinePipelineDescription
-    , (Just . ("Name",) . toJSON) _dataPipelinePipelineName
-    , (Just . ("ParameterObjects",) . toJSON) _dataPipelinePipelineParameterObjects
-    , fmap (("ParameterValues",) . toJSON) _dataPipelinePipelineParameterValues
-    , fmap (("PipelineObjects",) . toJSON) _dataPipelinePipelinePipelineObjects
-    , fmap (("PipelineTags",) . toJSON) _dataPipelinePipelinePipelineTags
-    ]
+instance ToResourceProperties DataPipelinePipeline where
+  toResourceProperties DataPipelinePipeline{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DataPipeline::Pipeline"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Activate",) . toJSON . fmap Bool') _dataPipelinePipelineActivate
+        , fmap (("Description",) . toJSON) _dataPipelinePipelineDescription
+        , (Just . ("Name",) . toJSON) _dataPipelinePipelineName
+        , (Just . ("ParameterObjects",) . toJSON) _dataPipelinePipelineParameterObjects
+        , fmap (("ParameterValues",) . toJSON) _dataPipelinePipelineParameterValues
+        , fmap (("PipelineObjects",) . toJSON) _dataPipelinePipelinePipelineObjects
+        , fmap (("PipelineTags",) . toJSON) _dataPipelinePipelinePipelineTags
+        ]
+    }
 
 -- | Constructor for 'DataPipelinePipeline' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/DirectoryServiceMicrosoftAD.hs b/library-gen/Stratosphere/Resources/DirectoryServiceMicrosoftAD.hs
--- a/library-gen/Stratosphere/Resources/DirectoryServiceMicrosoftAD.hs
+++ b/library-gen/Stratosphere/Resources/DirectoryServiceMicrosoftAD.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html
@@ -22,18 +23,21 @@
   , _directoryServiceMicrosoftADVpcSettings :: DirectoryServiceMicrosoftADVpcSettings
   } deriving (Show, Eq)
 
-instance ToJSON DirectoryServiceMicrosoftAD where
-  toJSON DirectoryServiceMicrosoftAD{..} =
-    object $
-    catMaybes
-    [ fmap (("CreateAlias",) . toJSON . fmap Bool') _directoryServiceMicrosoftADCreateAlias
-    , fmap (("Edition",) . toJSON) _directoryServiceMicrosoftADEdition
-    , fmap (("EnableSso",) . toJSON . fmap Bool') _directoryServiceMicrosoftADEnableSso
-    , (Just . ("Name",) . toJSON) _directoryServiceMicrosoftADName
-    , (Just . ("Password",) . toJSON) _directoryServiceMicrosoftADPassword
-    , fmap (("ShortName",) . toJSON) _directoryServiceMicrosoftADShortName
-    , (Just . ("VpcSettings",) . toJSON) _directoryServiceMicrosoftADVpcSettings
-    ]
+instance ToResourceProperties DirectoryServiceMicrosoftAD where
+  toResourceProperties DirectoryServiceMicrosoftAD{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DirectoryService::MicrosoftAD"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CreateAlias",) . toJSON . fmap Bool') _directoryServiceMicrosoftADCreateAlias
+        , fmap (("Edition",) . toJSON) _directoryServiceMicrosoftADEdition
+        , fmap (("EnableSso",) . toJSON . fmap Bool') _directoryServiceMicrosoftADEnableSso
+        , (Just . ("Name",) . toJSON) _directoryServiceMicrosoftADName
+        , (Just . ("Password",) . toJSON) _directoryServiceMicrosoftADPassword
+        , fmap (("ShortName",) . toJSON) _directoryServiceMicrosoftADShortName
+        , (Just . ("VpcSettings",) . toJSON) _directoryServiceMicrosoftADVpcSettings
+        ]
+    }
 
 -- | Constructor for 'DirectoryServiceMicrosoftAD' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/DirectoryServiceSimpleAD.hs b/library-gen/Stratosphere/Resources/DirectoryServiceSimpleAD.hs
--- a/library-gen/Stratosphere/Resources/DirectoryServiceSimpleAD.hs
+++ b/library-gen/Stratosphere/Resources/DirectoryServiceSimpleAD.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html
@@ -23,19 +24,22 @@
   , _directoryServiceSimpleADVpcSettings :: DirectoryServiceSimpleADVpcSettings
   } deriving (Show, Eq)
 
-instance ToJSON DirectoryServiceSimpleAD where
-  toJSON DirectoryServiceSimpleAD{..} =
-    object $
-    catMaybes
-    [ fmap (("CreateAlias",) . toJSON . fmap Bool') _directoryServiceSimpleADCreateAlias
-    , fmap (("Description",) . toJSON) _directoryServiceSimpleADDescription
-    , fmap (("EnableSso",) . toJSON . fmap Bool') _directoryServiceSimpleADEnableSso
-    , (Just . ("Name",) . toJSON) _directoryServiceSimpleADName
-    , (Just . ("Password",) . toJSON) _directoryServiceSimpleADPassword
-    , fmap (("ShortName",) . toJSON) _directoryServiceSimpleADShortName
-    , (Just . ("Size",) . toJSON) _directoryServiceSimpleADSize
-    , (Just . ("VpcSettings",) . toJSON) _directoryServiceSimpleADVpcSettings
-    ]
+instance ToResourceProperties DirectoryServiceSimpleAD where
+  toResourceProperties DirectoryServiceSimpleAD{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DirectoryService::SimpleAD"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CreateAlias",) . toJSON . fmap Bool') _directoryServiceSimpleADCreateAlias
+        , fmap (("Description",) . toJSON) _directoryServiceSimpleADDescription
+        , fmap (("EnableSso",) . toJSON . fmap Bool') _directoryServiceSimpleADEnableSso
+        , (Just . ("Name",) . toJSON) _directoryServiceSimpleADName
+        , (Just . ("Password",) . toJSON) _directoryServiceSimpleADPassword
+        , fmap (("ShortName",) . toJSON) _directoryServiceSimpleADShortName
+        , (Just . ("Size",) . toJSON) _directoryServiceSimpleADSize
+        , (Just . ("VpcSettings",) . toJSON) _directoryServiceSimpleADVpcSettings
+        ]
+    }
 
 -- | Constructor for 'DirectoryServiceSimpleAD' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/DocDBDBCluster.hs b/library-gen/Stratosphere/Resources/DocDBDBCluster.hs
--- a/library-gen/Stratosphere/Resources/DocDBDBCluster.hs
+++ b/library-gen/Stratosphere/Resources/DocDBDBCluster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-docdb-dbcluster.html
@@ -31,27 +32,30 @@
   , _docDBDBClusterVpcSecurityGroupIds :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
-instance ToJSON DocDBDBCluster where
-  toJSON DocDBDBCluster{..} =
-    object $
-    catMaybes
-    [ fmap (("AvailabilityZones",) . toJSON) _docDBDBClusterAvailabilityZones
-    , fmap (("BackupRetentionPeriod",) . toJSON . fmap Integer') _docDBDBClusterBackupRetentionPeriod
-    , fmap (("DBClusterIdentifier",) . toJSON) _docDBDBClusterDBClusterIdentifier
-    , fmap (("DBClusterParameterGroupName",) . toJSON) _docDBDBClusterDBClusterParameterGroupName
-    , fmap (("DBSubnetGroupName",) . toJSON) _docDBDBClusterDBSubnetGroupName
-    , fmap (("EngineVersion",) . toJSON) _docDBDBClusterEngineVersion
-    , fmap (("KmsKeyId",) . toJSON) _docDBDBClusterKmsKeyId
-    , fmap (("MasterUserPassword",) . toJSON) _docDBDBClusterMasterUserPassword
-    , fmap (("MasterUsername",) . toJSON) _docDBDBClusterMasterUsername
-    , fmap (("Port",) . toJSON . fmap Integer') _docDBDBClusterPort
-    , fmap (("PreferredBackupWindow",) . toJSON) _docDBDBClusterPreferredBackupWindow
-    , fmap (("PreferredMaintenanceWindow",) . toJSON) _docDBDBClusterPreferredMaintenanceWindow
-    , fmap (("SnapshotIdentifier",) . toJSON) _docDBDBClusterSnapshotIdentifier
-    , fmap (("StorageEncrypted",) . toJSON . fmap Bool') _docDBDBClusterStorageEncrypted
-    , fmap (("Tags",) . toJSON) _docDBDBClusterTags
-    , fmap (("VpcSecurityGroupIds",) . toJSON) _docDBDBClusterVpcSecurityGroupIds
-    ]
+instance ToResourceProperties DocDBDBCluster where
+  toResourceProperties DocDBDBCluster{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DocDB::DBCluster"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AvailabilityZones",) . toJSON) _docDBDBClusterAvailabilityZones
+        , fmap (("BackupRetentionPeriod",) . toJSON . fmap Integer') _docDBDBClusterBackupRetentionPeriod
+        , fmap (("DBClusterIdentifier",) . toJSON) _docDBDBClusterDBClusterIdentifier
+        , fmap (("DBClusterParameterGroupName",) . toJSON) _docDBDBClusterDBClusterParameterGroupName
+        , fmap (("DBSubnetGroupName",) . toJSON) _docDBDBClusterDBSubnetGroupName
+        , fmap (("EngineVersion",) . toJSON) _docDBDBClusterEngineVersion
+        , fmap (("KmsKeyId",) . toJSON) _docDBDBClusterKmsKeyId
+        , fmap (("MasterUserPassword",) . toJSON) _docDBDBClusterMasterUserPassword
+        , fmap (("MasterUsername",) . toJSON) _docDBDBClusterMasterUsername
+        , fmap (("Port",) . toJSON . fmap Integer') _docDBDBClusterPort
+        , fmap (("PreferredBackupWindow",) . toJSON) _docDBDBClusterPreferredBackupWindow
+        , fmap (("PreferredMaintenanceWindow",) . toJSON) _docDBDBClusterPreferredMaintenanceWindow
+        , fmap (("SnapshotIdentifier",) . toJSON) _docDBDBClusterSnapshotIdentifier
+        , fmap (("StorageEncrypted",) . toJSON . fmap Bool') _docDBDBClusterStorageEncrypted
+        , fmap (("Tags",) . toJSON) _docDBDBClusterTags
+        , fmap (("VpcSecurityGroupIds",) . toJSON) _docDBDBClusterVpcSecurityGroupIds
+        ]
+    }
 
 -- | Constructor for 'DocDBDBCluster' containing required fields as arguments.
 docDBDBCluster
diff --git a/library-gen/Stratosphere/Resources/DocDBDBClusterParameterGroup.hs b/library-gen/Stratosphere/Resources/DocDBDBClusterParameterGroup.hs
--- a/library-gen/Stratosphere/Resources/DocDBDBClusterParameterGroup.hs
+++ b/library-gen/Stratosphere/Resources/DocDBDBClusterParameterGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-docdb-dbclusterparametergroup.html
@@ -20,16 +21,19 @@
   , _docDBDBClusterParameterGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON DocDBDBClusterParameterGroup where
-  toJSON DocDBDBClusterParameterGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("Description",) . toJSON) _docDBDBClusterParameterGroupDescription
-    , (Just . ("Family",) . toJSON) _docDBDBClusterParameterGroupFamily
-    , fmap (("Name",) . toJSON) _docDBDBClusterParameterGroupName
-    , (Just . ("Parameters",) . toJSON) _docDBDBClusterParameterGroupParameters
-    , fmap (("Tags",) . toJSON) _docDBDBClusterParameterGroupTags
-    ]
+instance ToResourceProperties DocDBDBClusterParameterGroup where
+  toResourceProperties DocDBDBClusterParameterGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DocDB::DBClusterParameterGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Description",) . toJSON) _docDBDBClusterParameterGroupDescription
+        , (Just . ("Family",) . toJSON) _docDBDBClusterParameterGroupFamily
+        , fmap (("Name",) . toJSON) _docDBDBClusterParameterGroupName
+        , (Just . ("Parameters",) . toJSON) _docDBDBClusterParameterGroupParameters
+        , fmap (("Tags",) . toJSON) _docDBDBClusterParameterGroupTags
+        ]
+    }
 
 -- | Constructor for 'DocDBDBClusterParameterGroup' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/DocDBDBInstance.hs b/library-gen/Stratosphere/Resources/DocDBDBInstance.hs
--- a/library-gen/Stratosphere/Resources/DocDBDBInstance.hs
+++ b/library-gen/Stratosphere/Resources/DocDBDBInstance.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-docdb-dbinstance.html
@@ -22,18 +23,21 @@
   , _docDBDBInstanceTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON DocDBDBInstance where
-  toJSON DocDBDBInstance{..} =
-    object $
-    catMaybes
-    [ fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _docDBDBInstanceAutoMinorVersionUpgrade
-    , fmap (("AvailabilityZone",) . toJSON) _docDBDBInstanceAvailabilityZone
-    , (Just . ("DBClusterIdentifier",) . toJSON) _docDBDBInstanceDBClusterIdentifier
-    , (Just . ("DBInstanceClass",) . toJSON) _docDBDBInstanceDBInstanceClass
-    , fmap (("DBInstanceIdentifier",) . toJSON) _docDBDBInstanceDBInstanceIdentifier
-    , fmap (("PreferredMaintenanceWindow",) . toJSON) _docDBDBInstancePreferredMaintenanceWindow
-    , fmap (("Tags",) . toJSON) _docDBDBInstanceTags
-    ]
+instance ToResourceProperties DocDBDBInstance where
+  toResourceProperties DocDBDBInstance{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DocDB::DBInstance"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _docDBDBInstanceAutoMinorVersionUpgrade
+        , fmap (("AvailabilityZone",) . toJSON) _docDBDBInstanceAvailabilityZone
+        , (Just . ("DBClusterIdentifier",) . toJSON) _docDBDBInstanceDBClusterIdentifier
+        , (Just . ("DBInstanceClass",) . toJSON) _docDBDBInstanceDBInstanceClass
+        , fmap (("DBInstanceIdentifier",) . toJSON) _docDBDBInstanceDBInstanceIdentifier
+        , fmap (("PreferredMaintenanceWindow",) . toJSON) _docDBDBInstancePreferredMaintenanceWindow
+        , fmap (("Tags",) . toJSON) _docDBDBInstanceTags
+        ]
+    }
 
 -- | Constructor for 'DocDBDBInstance' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/DocDBDBSubnetGroup.hs b/library-gen/Stratosphere/Resources/DocDBDBSubnetGroup.hs
--- a/library-gen/Stratosphere/Resources/DocDBDBSubnetGroup.hs
+++ b/library-gen/Stratosphere/Resources/DocDBDBSubnetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-docdb-dbsubnetgroup.html
@@ -19,15 +20,18 @@
   , _docDBDBSubnetGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON DocDBDBSubnetGroup where
-  toJSON DocDBDBSubnetGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("DBSubnetGroupDescription",) . toJSON) _docDBDBSubnetGroupDBSubnetGroupDescription
-    , fmap (("DBSubnetGroupName",) . toJSON) _docDBDBSubnetGroupDBSubnetGroupName
-    , (Just . ("SubnetIds",) . toJSON) _docDBDBSubnetGroupSubnetIds
-    , fmap (("Tags",) . toJSON) _docDBDBSubnetGroupTags
-    ]
+instance ToResourceProperties DocDBDBSubnetGroup where
+  toResourceProperties DocDBDBSubnetGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DocDB::DBSubnetGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DBSubnetGroupDescription",) . toJSON) _docDBDBSubnetGroupDBSubnetGroupDescription
+        , fmap (("DBSubnetGroupName",) . toJSON) _docDBDBSubnetGroupDBSubnetGroupName
+        , (Just . ("SubnetIds",) . toJSON) _docDBDBSubnetGroupSubnetIds
+        , fmap (("Tags",) . toJSON) _docDBDBSubnetGroupTags
+        ]
+    }
 
 -- | Constructor for 'DocDBDBSubnetGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/DynamoDBTable.hs b/library-gen/Stratosphere/Resources/DynamoDBTable.hs
--- a/library-gen/Stratosphere/Resources/DynamoDBTable.hs
+++ b/library-gen/Stratosphere/Resources/DynamoDBTable.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html
@@ -36,23 +37,26 @@
   , _dynamoDBTableTimeToLiveSpecification :: Maybe DynamoDBTableTimeToLiveSpecification
   } deriving (Show, Eq)
 
-instance ToJSON DynamoDBTable where
-  toJSON DynamoDBTable{..} =
-    object $
-    catMaybes
-    [ fmap (("AttributeDefinitions",) . toJSON) _dynamoDBTableAttributeDefinitions
-    , fmap (("BillingMode",) . toJSON) _dynamoDBTableBillingMode
-    , fmap (("GlobalSecondaryIndexes",) . toJSON) _dynamoDBTableGlobalSecondaryIndexes
-    , (Just . ("KeySchema",) . toJSON) _dynamoDBTableKeySchema
-    , fmap (("LocalSecondaryIndexes",) . toJSON) _dynamoDBTableLocalSecondaryIndexes
-    , fmap (("PointInTimeRecoverySpecification",) . toJSON) _dynamoDBTablePointInTimeRecoverySpecification
-    , fmap (("ProvisionedThroughput",) . toJSON) _dynamoDBTableProvisionedThroughput
-    , fmap (("SSESpecification",) . toJSON) _dynamoDBTableSSESpecification
-    , fmap (("StreamSpecification",) . toJSON) _dynamoDBTableStreamSpecification
-    , fmap (("TableName",) . toJSON) _dynamoDBTableTableName
-    , fmap (("Tags",) . toJSON) _dynamoDBTableTags
-    , fmap (("TimeToLiveSpecification",) . toJSON) _dynamoDBTableTimeToLiveSpecification
-    ]
+instance ToResourceProperties DynamoDBTable where
+  toResourceProperties DynamoDBTable{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::DynamoDB::Table"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AttributeDefinitions",) . toJSON) _dynamoDBTableAttributeDefinitions
+        , fmap (("BillingMode",) . toJSON) _dynamoDBTableBillingMode
+        , fmap (("GlobalSecondaryIndexes",) . toJSON) _dynamoDBTableGlobalSecondaryIndexes
+        , (Just . ("KeySchema",) . toJSON) _dynamoDBTableKeySchema
+        , fmap (("LocalSecondaryIndexes",) . toJSON) _dynamoDBTableLocalSecondaryIndexes
+        , fmap (("PointInTimeRecoverySpecification",) . toJSON) _dynamoDBTablePointInTimeRecoverySpecification
+        , fmap (("ProvisionedThroughput",) . toJSON) _dynamoDBTableProvisionedThroughput
+        , fmap (("SSESpecification",) . toJSON) _dynamoDBTableSSESpecification
+        , fmap (("StreamSpecification",) . toJSON) _dynamoDBTableStreamSpecification
+        , fmap (("TableName",) . toJSON) _dynamoDBTableTableName
+        , fmap (("Tags",) . toJSON) _dynamoDBTableTags
+        , fmap (("TimeToLiveSpecification",) . toJSON) _dynamoDBTableTimeToLiveSpecification
+        ]
+    }
 
 -- | Constructor for 'DynamoDBTable' containing required fields as arguments.
 dynamoDBTable
diff --git a/library-gen/Stratosphere/Resources/EC2CustomerGateway.hs b/library-gen/Stratosphere/Resources/EC2CustomerGateway.hs
--- a/library-gen/Stratosphere/Resources/EC2CustomerGateway.hs
+++ b/library-gen/Stratosphere/Resources/EC2CustomerGateway.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customer-gateway.html
@@ -19,15 +20,18 @@
   , _eC2CustomerGatewayType :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2CustomerGateway where
-  toJSON EC2CustomerGateway{..} =
-    object $
-    catMaybes
-    [ (Just . ("BgpAsn",) . toJSON . fmap Integer') _eC2CustomerGatewayBgpAsn
-    , (Just . ("IpAddress",) . toJSON) _eC2CustomerGatewayIpAddress
-    , fmap (("Tags",) . toJSON) _eC2CustomerGatewayTags
-    , (Just . ("Type",) . toJSON) _eC2CustomerGatewayType
-    ]
+instance ToResourceProperties EC2CustomerGateway where
+  toResourceProperties EC2CustomerGateway{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::CustomerGateway"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("BgpAsn",) . toJSON . fmap Integer') _eC2CustomerGatewayBgpAsn
+        , (Just . ("IpAddress",) . toJSON) _eC2CustomerGatewayIpAddress
+        , fmap (("Tags",) . toJSON) _eC2CustomerGatewayTags
+        , (Just . ("Type",) . toJSON) _eC2CustomerGatewayType
+        ]
+    }
 
 -- | Constructor for 'EC2CustomerGateway' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2DHCPOptions.hs b/library-gen/Stratosphere/Resources/EC2DHCPOptions.hs
--- a/library-gen/Stratosphere/Resources/EC2DHCPOptions.hs
+++ b/library-gen/Stratosphere/Resources/EC2DHCPOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html
@@ -21,17 +22,20 @@
   , _eC2DHCPOptionsTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON EC2DHCPOptions where
-  toJSON EC2DHCPOptions{..} =
-    object $
-    catMaybes
-    [ fmap (("DomainName",) . toJSON) _eC2DHCPOptionsDomainName
-    , fmap (("DomainNameServers",) . toJSON) _eC2DHCPOptionsDomainNameServers
-    , fmap (("NetbiosNameServers",) . toJSON) _eC2DHCPOptionsNetbiosNameServers
-    , fmap (("NetbiosNodeType",) . toJSON . fmap Integer') _eC2DHCPOptionsNetbiosNodeType
-    , fmap (("NtpServers",) . toJSON) _eC2DHCPOptionsNtpServers
-    , fmap (("Tags",) . toJSON) _eC2DHCPOptionsTags
-    ]
+instance ToResourceProperties EC2DHCPOptions where
+  toResourceProperties EC2DHCPOptions{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::DHCPOptions"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("DomainName",) . toJSON) _eC2DHCPOptionsDomainName
+        , fmap (("DomainNameServers",) . toJSON) _eC2DHCPOptionsDomainNameServers
+        , fmap (("NetbiosNameServers",) . toJSON) _eC2DHCPOptionsNetbiosNameServers
+        , fmap (("NetbiosNodeType",) . toJSON . fmap Integer') _eC2DHCPOptionsNetbiosNodeType
+        , fmap (("NtpServers",) . toJSON) _eC2DHCPOptionsNtpServers
+        , fmap (("Tags",) . toJSON) _eC2DHCPOptionsTags
+        ]
+    }
 
 -- | Constructor for 'EC2DHCPOptions' containing required fields as arguments.
 ec2DHCPOptions
diff --git a/library-gen/Stratosphere/Resources/EC2EC2Fleet.hs b/library-gen/Stratosphere/Resources/EC2EC2Fleet.hs
--- a/library-gen/Stratosphere/Resources/EC2EC2Fleet.hs
+++ b/library-gen/Stratosphere/Resources/EC2EC2Fleet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html
@@ -30,22 +31,25 @@
   , _eC2EC2FleetValidUntil :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON EC2EC2Fleet where
-  toJSON EC2EC2Fleet{..} =
-    object $
-    catMaybes
-    [ fmap (("ExcessCapacityTerminationPolicy",) . toJSON) _eC2EC2FleetExcessCapacityTerminationPolicy
-    , (Just . ("LaunchTemplateConfigs",) . toJSON) _eC2EC2FleetLaunchTemplateConfigs
-    , fmap (("OnDemandOptions",) . toJSON) _eC2EC2FleetOnDemandOptions
-    , fmap (("ReplaceUnhealthyInstances",) . toJSON . fmap Bool') _eC2EC2FleetReplaceUnhealthyInstances
-    , fmap (("SpotOptions",) . toJSON) _eC2EC2FleetSpotOptions
-    , fmap (("TagSpecifications",) . toJSON) _eC2EC2FleetTagSpecifications
-    , (Just . ("TargetCapacitySpecification",) . toJSON) _eC2EC2FleetTargetCapacitySpecification
-    , fmap (("TerminateInstancesWithExpiration",) . toJSON . fmap Bool') _eC2EC2FleetTerminateInstancesWithExpiration
-    , fmap (("Type",) . toJSON) _eC2EC2FleetType
-    , fmap (("ValidFrom",) . toJSON) _eC2EC2FleetValidFrom
-    , fmap (("ValidUntil",) . toJSON) _eC2EC2FleetValidUntil
-    ]
+instance ToResourceProperties EC2EC2Fleet where
+  toResourceProperties EC2EC2Fleet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::EC2Fleet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ExcessCapacityTerminationPolicy",) . toJSON) _eC2EC2FleetExcessCapacityTerminationPolicy
+        , (Just . ("LaunchTemplateConfigs",) . toJSON) _eC2EC2FleetLaunchTemplateConfigs
+        , fmap (("OnDemandOptions",) . toJSON) _eC2EC2FleetOnDemandOptions
+        , fmap (("ReplaceUnhealthyInstances",) . toJSON . fmap Bool') _eC2EC2FleetReplaceUnhealthyInstances
+        , fmap (("SpotOptions",) . toJSON) _eC2EC2FleetSpotOptions
+        , fmap (("TagSpecifications",) . toJSON) _eC2EC2FleetTagSpecifications
+        , (Just . ("TargetCapacitySpecification",) . toJSON) _eC2EC2FleetTargetCapacitySpecification
+        , fmap (("TerminateInstancesWithExpiration",) . toJSON . fmap Bool') _eC2EC2FleetTerminateInstancesWithExpiration
+        , fmap (("Type",) . toJSON) _eC2EC2FleetType
+        , fmap (("ValidFrom",) . toJSON) _eC2EC2FleetValidFrom
+        , fmap (("ValidUntil",) . toJSON) _eC2EC2FleetValidUntil
+        ]
+    }
 
 -- | Constructor for 'EC2EC2Fleet' containing required fields as arguments.
 ec2EC2Fleet
diff --git a/library-gen/Stratosphere/Resources/EC2EIP.hs b/library-gen/Stratosphere/Resources/EC2EIP.hs
--- a/library-gen/Stratosphere/Resources/EC2EIP.hs
+++ b/library-gen/Stratosphere/Resources/EC2EIP.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html
@@ -18,14 +19,17 @@
   , _eC2EIPPublicIpv4Pool :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON EC2EIP where
-  toJSON EC2EIP{..} =
-    object $
-    catMaybes
-    [ fmap (("Domain",) . toJSON) _eC2EIPDomain
-    , fmap (("InstanceId",) . toJSON) _eC2EIPInstanceId
-    , fmap (("PublicIpv4Pool",) . toJSON) _eC2EIPPublicIpv4Pool
-    ]
+instance ToResourceProperties EC2EIP where
+  toResourceProperties EC2EIP{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::EIP"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Domain",) . toJSON) _eC2EIPDomain
+        , fmap (("InstanceId",) . toJSON) _eC2EIPInstanceId
+        , fmap (("PublicIpv4Pool",) . toJSON) _eC2EIPPublicIpv4Pool
+        ]
+    }
 
 -- | Constructor for 'EC2EIP' containing required fields as arguments.
 ec2EIP
diff --git a/library-gen/Stratosphere/Resources/EC2EIPAssociation.hs b/library-gen/Stratosphere/Resources/EC2EIPAssociation.hs
--- a/library-gen/Stratosphere/Resources/EC2EIPAssociation.hs
+++ b/library-gen/Stratosphere/Resources/EC2EIPAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip-association.html
@@ -20,16 +21,19 @@
   , _eC2EIPAssociationPrivateIpAddress :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON EC2EIPAssociation where
-  toJSON EC2EIPAssociation{..} =
-    object $
-    catMaybes
-    [ fmap (("AllocationId",) . toJSON) _eC2EIPAssociationAllocationId
-    , fmap (("EIP",) . toJSON) _eC2EIPAssociationEIP
-    , fmap (("InstanceId",) . toJSON) _eC2EIPAssociationInstanceId
-    , fmap (("NetworkInterfaceId",) . toJSON) _eC2EIPAssociationNetworkInterfaceId
-    , fmap (("PrivateIpAddress",) . toJSON) _eC2EIPAssociationPrivateIpAddress
-    ]
+instance ToResourceProperties EC2EIPAssociation where
+  toResourceProperties EC2EIPAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::EIPAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AllocationId",) . toJSON) _eC2EIPAssociationAllocationId
+        , fmap (("EIP",) . toJSON) _eC2EIPAssociationEIP
+        , fmap (("InstanceId",) . toJSON) _eC2EIPAssociationInstanceId
+        , fmap (("NetworkInterfaceId",) . toJSON) _eC2EIPAssociationNetworkInterfaceId
+        , fmap (("PrivateIpAddress",) . toJSON) _eC2EIPAssociationPrivateIpAddress
+        ]
+    }
 
 -- | Constructor for 'EC2EIPAssociation' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2EgressOnlyInternetGateway.hs b/library-gen/Stratosphere/Resources/EC2EgressOnlyInternetGateway.hs
--- a/library-gen/Stratosphere/Resources/EC2EgressOnlyInternetGateway.hs
+++ b/library-gen/Stratosphere/Resources/EC2EgressOnlyInternetGateway.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-egressonlyinternetgateway.html
@@ -16,12 +17,15 @@
   { _eC2EgressOnlyInternetGatewayVpcId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2EgressOnlyInternetGateway where
-  toJSON EC2EgressOnlyInternetGateway{..} =
-    object $
-    catMaybes
-    [ (Just . ("VpcId",) . toJSON) _eC2EgressOnlyInternetGatewayVpcId
-    ]
+instance ToResourceProperties EC2EgressOnlyInternetGateway where
+  toResourceProperties EC2EgressOnlyInternetGateway{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::EgressOnlyInternetGateway"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("VpcId",) . toJSON) _eC2EgressOnlyInternetGatewayVpcId
+        ]
+    }
 
 -- | Constructor for 'EC2EgressOnlyInternetGateway' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2FlowLog.hs b/library-gen/Stratosphere/Resources/EC2FlowLog.hs
--- a/library-gen/Stratosphere/Resources/EC2FlowLog.hs
+++ b/library-gen/Stratosphere/Resources/EC2FlowLog.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html
@@ -22,18 +23,21 @@
   , _eC2FlowLogTrafficType :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2FlowLog where
-  toJSON EC2FlowLog{..} =
-    object $
-    catMaybes
-    [ fmap (("DeliverLogsPermissionArn",) . toJSON) _eC2FlowLogDeliverLogsPermissionArn
-    , fmap (("LogDestination",) . toJSON) _eC2FlowLogLogDestination
-    , fmap (("LogDestinationType",) . toJSON) _eC2FlowLogLogDestinationType
-    , fmap (("LogGroupName",) . toJSON) _eC2FlowLogLogGroupName
-    , (Just . ("ResourceId",) . toJSON) _eC2FlowLogResourceId
-    , (Just . ("ResourceType",) . toJSON) _eC2FlowLogResourceType
-    , (Just . ("TrafficType",) . toJSON) _eC2FlowLogTrafficType
-    ]
+instance ToResourceProperties EC2FlowLog where
+  toResourceProperties EC2FlowLog{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::FlowLog"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("DeliverLogsPermissionArn",) . toJSON) _eC2FlowLogDeliverLogsPermissionArn
+        , fmap (("LogDestination",) . toJSON) _eC2FlowLogLogDestination
+        , fmap (("LogDestinationType",) . toJSON) _eC2FlowLogLogDestinationType
+        , fmap (("LogGroupName",) . toJSON) _eC2FlowLogLogGroupName
+        , (Just . ("ResourceId",) . toJSON) _eC2FlowLogResourceId
+        , (Just . ("ResourceType",) . toJSON) _eC2FlowLogResourceType
+        , (Just . ("TrafficType",) . toJSON) _eC2FlowLogTrafficType
+        ]
+    }
 
 -- | Constructor for 'EC2FlowLog' containing required fields as arguments.
 ec2FlowLog
diff --git a/library-gen/Stratosphere/Resources/EC2Host.hs b/library-gen/Stratosphere/Resources/EC2Host.hs
--- a/library-gen/Stratosphere/Resources/EC2Host.hs
+++ b/library-gen/Stratosphere/Resources/EC2Host.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html
@@ -18,14 +19,17 @@
   , _eC2HostInstanceType :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2Host where
-  toJSON EC2Host{..} =
-    object $
-    catMaybes
-    [ fmap (("AutoPlacement",) . toJSON) _eC2HostAutoPlacement
-    , (Just . ("AvailabilityZone",) . toJSON) _eC2HostAvailabilityZone
-    , (Just . ("InstanceType",) . toJSON) _eC2HostInstanceType
-    ]
+instance ToResourceProperties EC2Host where
+  toResourceProperties EC2Host{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::Host"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AutoPlacement",) . toJSON) _eC2HostAutoPlacement
+        , (Just . ("AvailabilityZone",) . toJSON) _eC2HostAvailabilityZone
+        , (Just . ("InstanceType",) . toJSON) _eC2HostInstanceType
+        ]
+    }
 
 -- | Constructor for 'EC2Host' containing required fields as arguments.
 ec2Host
diff --git a/library-gen/Stratosphere/Resources/EC2Instance.hs b/library-gen/Stratosphere/Resources/EC2Instance.hs
--- a/library-gen/Stratosphere/Resources/EC2Instance.hs
+++ b/library-gen/Stratosphere/Resources/EC2Instance.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html
@@ -59,45 +60,48 @@
   , _eC2InstanceVolumes :: Maybe [EC2InstanceVolume]
   } deriving (Show, Eq)
 
-instance ToJSON EC2Instance where
-  toJSON EC2Instance{..} =
-    object $
-    catMaybes
-    [ fmap (("AdditionalInfo",) . toJSON) _eC2InstanceAdditionalInfo
-    , fmap (("Affinity",) . toJSON) _eC2InstanceAffinity
-    , fmap (("AvailabilityZone",) . toJSON) _eC2InstanceAvailabilityZone
-    , fmap (("BlockDeviceMappings",) . toJSON) _eC2InstanceBlockDeviceMappings
-    , fmap (("CreditSpecification",) . toJSON) _eC2InstanceCreditSpecification
-    , fmap (("DisableApiTermination",) . toJSON . fmap Bool') _eC2InstanceDisableApiTermination
-    , fmap (("EbsOptimized",) . toJSON . fmap Bool') _eC2InstanceEbsOptimized
-    , fmap (("ElasticGpuSpecifications",) . toJSON) _eC2InstanceElasticGpuSpecifications
-    , fmap (("ElasticInferenceAccelerators",) . toJSON) _eC2InstanceElasticInferenceAccelerators
-    , fmap (("HostId",) . toJSON) _eC2InstanceHostId
-    , fmap (("IamInstanceProfile",) . toJSON) _eC2InstanceIamInstanceProfile
-    , fmap (("ImageId",) . toJSON) _eC2InstanceImageId
-    , fmap (("InstanceInitiatedShutdownBehavior",) . toJSON) _eC2InstanceInstanceInitiatedShutdownBehavior
-    , fmap (("InstanceType",) . toJSON) _eC2InstanceInstanceType
-    , fmap (("Ipv6AddressCount",) . toJSON . fmap Integer') _eC2InstanceIpv6AddressCount
-    , fmap (("Ipv6Addresses",) . toJSON) _eC2InstanceIpv6Addresses
-    , fmap (("KernelId",) . toJSON) _eC2InstanceKernelId
-    , fmap (("KeyName",) . toJSON) _eC2InstanceKeyName
-    , fmap (("LaunchTemplate",) . toJSON) _eC2InstanceLaunchTemplate
-    , fmap (("LicenseSpecifications",) . toJSON) _eC2InstanceLicenseSpecifications
-    , fmap (("Monitoring",) . toJSON . fmap Bool') _eC2InstanceMonitoring
-    , fmap (("NetworkInterfaces",) . toJSON) _eC2InstanceNetworkInterfaces
-    , fmap (("PlacementGroupName",) . toJSON) _eC2InstancePlacementGroupName
-    , fmap (("PrivateIpAddress",) . toJSON) _eC2InstancePrivateIpAddress
-    , fmap (("RamdiskId",) . toJSON) _eC2InstanceRamdiskId
-    , fmap (("SecurityGroupIds",) . toJSON) _eC2InstanceSecurityGroupIds
-    , fmap (("SecurityGroups",) . toJSON) _eC2InstanceSecurityGroups
-    , fmap (("SourceDestCheck",) . toJSON . fmap Bool') _eC2InstanceSourceDestCheck
-    , fmap (("SsmAssociations",) . toJSON) _eC2InstanceSsmAssociations
-    , fmap (("SubnetId",) . toJSON) _eC2InstanceSubnetId
-    , fmap (("Tags",) . toJSON) _eC2InstanceTags
-    , fmap (("Tenancy",) . toJSON) _eC2InstanceTenancy
-    , fmap (("UserData",) . toJSON) _eC2InstanceUserData
-    , fmap (("Volumes",) . toJSON) _eC2InstanceVolumes
-    ]
+instance ToResourceProperties EC2Instance where
+  toResourceProperties EC2Instance{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::Instance"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AdditionalInfo",) . toJSON) _eC2InstanceAdditionalInfo
+        , fmap (("Affinity",) . toJSON) _eC2InstanceAffinity
+        , fmap (("AvailabilityZone",) . toJSON) _eC2InstanceAvailabilityZone
+        , fmap (("BlockDeviceMappings",) . toJSON) _eC2InstanceBlockDeviceMappings
+        , fmap (("CreditSpecification",) . toJSON) _eC2InstanceCreditSpecification
+        , fmap (("DisableApiTermination",) . toJSON . fmap Bool') _eC2InstanceDisableApiTermination
+        , fmap (("EbsOptimized",) . toJSON . fmap Bool') _eC2InstanceEbsOptimized
+        , fmap (("ElasticGpuSpecifications",) . toJSON) _eC2InstanceElasticGpuSpecifications
+        , fmap (("ElasticInferenceAccelerators",) . toJSON) _eC2InstanceElasticInferenceAccelerators
+        , fmap (("HostId",) . toJSON) _eC2InstanceHostId
+        , fmap (("IamInstanceProfile",) . toJSON) _eC2InstanceIamInstanceProfile
+        , fmap (("ImageId",) . toJSON) _eC2InstanceImageId
+        , fmap (("InstanceInitiatedShutdownBehavior",) . toJSON) _eC2InstanceInstanceInitiatedShutdownBehavior
+        , fmap (("InstanceType",) . toJSON) _eC2InstanceInstanceType
+        , fmap (("Ipv6AddressCount",) . toJSON . fmap Integer') _eC2InstanceIpv6AddressCount
+        , fmap (("Ipv6Addresses",) . toJSON) _eC2InstanceIpv6Addresses
+        , fmap (("KernelId",) . toJSON) _eC2InstanceKernelId
+        , fmap (("KeyName",) . toJSON) _eC2InstanceKeyName
+        , fmap (("LaunchTemplate",) . toJSON) _eC2InstanceLaunchTemplate
+        , fmap (("LicenseSpecifications",) . toJSON) _eC2InstanceLicenseSpecifications
+        , fmap (("Monitoring",) . toJSON . fmap Bool') _eC2InstanceMonitoring
+        , fmap (("NetworkInterfaces",) . toJSON) _eC2InstanceNetworkInterfaces
+        , fmap (("PlacementGroupName",) . toJSON) _eC2InstancePlacementGroupName
+        , fmap (("PrivateIpAddress",) . toJSON) _eC2InstancePrivateIpAddress
+        , fmap (("RamdiskId",) . toJSON) _eC2InstanceRamdiskId
+        , fmap (("SecurityGroupIds",) . toJSON) _eC2InstanceSecurityGroupIds
+        , fmap (("SecurityGroups",) . toJSON) _eC2InstanceSecurityGroups
+        , fmap (("SourceDestCheck",) . toJSON . fmap Bool') _eC2InstanceSourceDestCheck
+        , fmap (("SsmAssociations",) . toJSON) _eC2InstanceSsmAssociations
+        , fmap (("SubnetId",) . toJSON) _eC2InstanceSubnetId
+        , fmap (("Tags",) . toJSON) _eC2InstanceTags
+        , fmap (("Tenancy",) . toJSON) _eC2InstanceTenancy
+        , fmap (("UserData",) . toJSON) _eC2InstanceUserData
+        , fmap (("Volumes",) . toJSON) _eC2InstanceVolumes
+        ]
+    }
 
 -- | Constructor for 'EC2Instance' containing required fields as arguments.
 ec2Instance
diff --git a/library-gen/Stratosphere/Resources/EC2InternetGateway.hs b/library-gen/Stratosphere/Resources/EC2InternetGateway.hs
--- a/library-gen/Stratosphere/Resources/EC2InternetGateway.hs
+++ b/library-gen/Stratosphere/Resources/EC2InternetGateway.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-internetgateway.html
@@ -16,12 +17,15 @@
   { _eC2InternetGatewayTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON EC2InternetGateway where
-  toJSON EC2InternetGateway{..} =
-    object $
-    catMaybes
-    [ fmap (("Tags",) . toJSON) _eC2InternetGatewayTags
-    ]
+instance ToResourceProperties EC2InternetGateway where
+  toResourceProperties EC2InternetGateway{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::InternetGateway"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Tags",) . toJSON) _eC2InternetGatewayTags
+        ]
+    }
 
 -- | Constructor for 'EC2InternetGateway' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2LaunchTemplate.hs b/library-gen/Stratosphere/Resources/EC2LaunchTemplate.hs
--- a/library-gen/Stratosphere/Resources/EC2LaunchTemplate.hs
+++ b/library-gen/Stratosphere/Resources/EC2LaunchTemplate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html
@@ -17,13 +18,16 @@
   , _eC2LaunchTemplateLaunchTemplateName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON EC2LaunchTemplate where
-  toJSON EC2LaunchTemplate{..} =
-    object $
-    catMaybes
-    [ fmap (("LaunchTemplateData",) . toJSON) _eC2LaunchTemplateLaunchTemplateData
-    , fmap (("LaunchTemplateName",) . toJSON) _eC2LaunchTemplateLaunchTemplateName
-    ]
+instance ToResourceProperties EC2LaunchTemplate where
+  toResourceProperties EC2LaunchTemplate{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::LaunchTemplate"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("LaunchTemplateData",) . toJSON) _eC2LaunchTemplateLaunchTemplateData
+        , fmap (("LaunchTemplateName",) . toJSON) _eC2LaunchTemplateLaunchTemplateName
+        ]
+    }
 
 -- | Constructor for 'EC2LaunchTemplate' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2NatGateway.hs b/library-gen/Stratosphere/Resources/EC2NatGateway.hs
--- a/library-gen/Stratosphere/Resources/EC2NatGateway.hs
+++ b/library-gen/Stratosphere/Resources/EC2NatGateway.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html
@@ -18,14 +19,17 @@
   , _eC2NatGatewayTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON EC2NatGateway where
-  toJSON EC2NatGateway{..} =
-    object $
-    catMaybes
-    [ (Just . ("AllocationId",) . toJSON) _eC2NatGatewayAllocationId
-    , (Just . ("SubnetId",) . toJSON) _eC2NatGatewaySubnetId
-    , fmap (("Tags",) . toJSON) _eC2NatGatewayTags
-    ]
+instance ToResourceProperties EC2NatGateway where
+  toResourceProperties EC2NatGateway{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::NatGateway"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AllocationId",) . toJSON) _eC2NatGatewayAllocationId
+        , (Just . ("SubnetId",) . toJSON) _eC2NatGatewaySubnetId
+        , fmap (("Tags",) . toJSON) _eC2NatGatewayTags
+        ]
+    }
 
 -- | Constructor for 'EC2NatGateway' containing required fields as arguments.
 ec2NatGateway
diff --git a/library-gen/Stratosphere/Resources/EC2NetworkAcl.hs b/library-gen/Stratosphere/Resources/EC2NetworkAcl.hs
--- a/library-gen/Stratosphere/Resources/EC2NetworkAcl.hs
+++ b/library-gen/Stratosphere/Resources/EC2NetworkAcl.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl.html
@@ -17,13 +18,16 @@
   , _eC2NetworkAclVpcId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2NetworkAcl where
-  toJSON EC2NetworkAcl{..} =
-    object $
-    catMaybes
-    [ fmap (("Tags",) . toJSON) _eC2NetworkAclTags
-    , (Just . ("VpcId",) . toJSON) _eC2NetworkAclVpcId
-    ]
+instance ToResourceProperties EC2NetworkAcl where
+  toResourceProperties EC2NetworkAcl{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::NetworkAcl"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Tags",) . toJSON) _eC2NetworkAclTags
+        , (Just . ("VpcId",) . toJSON) _eC2NetworkAclVpcId
+        ]
+    }
 
 -- | Constructor for 'EC2NetworkAcl' containing required fields as arguments.
 ec2NetworkAcl
diff --git a/library-gen/Stratosphere/Resources/EC2NetworkAclEntry.hs b/library-gen/Stratosphere/Resources/EC2NetworkAclEntry.hs
--- a/library-gen/Stratosphere/Resources/EC2NetworkAclEntry.hs
+++ b/library-gen/Stratosphere/Resources/EC2NetworkAclEntry.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html
@@ -25,20 +26,23 @@
   , _eC2NetworkAclEntryRuleNumber :: Val Integer
   } deriving (Show, Eq)
 
-instance ToJSON EC2NetworkAclEntry where
-  toJSON EC2NetworkAclEntry{..} =
-    object $
-    catMaybes
-    [ (Just . ("CidrBlock",) . toJSON) _eC2NetworkAclEntryCidrBlock
-    , fmap (("Egress",) . toJSON . fmap Bool') _eC2NetworkAclEntryEgress
-    , fmap (("Icmp",) . toJSON) _eC2NetworkAclEntryIcmp
-    , fmap (("Ipv6CidrBlock",) . toJSON) _eC2NetworkAclEntryIpv6CidrBlock
-    , (Just . ("NetworkAclId",) . toJSON) _eC2NetworkAclEntryNetworkAclId
-    , fmap (("PortRange",) . toJSON) _eC2NetworkAclEntryPortRange
-    , (Just . ("Protocol",) . toJSON . fmap Integer') _eC2NetworkAclEntryProtocol
-    , (Just . ("RuleAction",) . toJSON) _eC2NetworkAclEntryRuleAction
-    , (Just . ("RuleNumber",) . toJSON . fmap Integer') _eC2NetworkAclEntryRuleNumber
-    ]
+instance ToResourceProperties EC2NetworkAclEntry where
+  toResourceProperties EC2NetworkAclEntry{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::NetworkAclEntry"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("CidrBlock",) . toJSON) _eC2NetworkAclEntryCidrBlock
+        , fmap (("Egress",) . toJSON . fmap Bool') _eC2NetworkAclEntryEgress
+        , fmap (("Icmp",) . toJSON) _eC2NetworkAclEntryIcmp
+        , fmap (("Ipv6CidrBlock",) . toJSON) _eC2NetworkAclEntryIpv6CidrBlock
+        , (Just . ("NetworkAclId",) . toJSON) _eC2NetworkAclEntryNetworkAclId
+        , fmap (("PortRange",) . toJSON) _eC2NetworkAclEntryPortRange
+        , (Just . ("Protocol",) . toJSON . fmap Integer') _eC2NetworkAclEntryProtocol
+        , (Just . ("RuleAction",) . toJSON) _eC2NetworkAclEntryRuleAction
+        , (Just . ("RuleNumber",) . toJSON . fmap Integer') _eC2NetworkAclEntryRuleNumber
+        ]
+    }
 
 -- | Constructor for 'EC2NetworkAclEntry' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2NetworkInterface.hs b/library-gen/Stratosphere/Resources/EC2NetworkInterface.hs
--- a/library-gen/Stratosphere/Resources/EC2NetworkInterface.hs
+++ b/library-gen/Stratosphere/Resources/EC2NetworkInterface.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html
@@ -28,22 +29,25 @@
   , _eC2NetworkInterfaceTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON EC2NetworkInterface where
-  toJSON EC2NetworkInterface{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _eC2NetworkInterfaceDescription
-    , fmap (("GroupSet",) . toJSON) _eC2NetworkInterfaceGroupSet
-    , fmap (("InterfaceType",) . toJSON) _eC2NetworkInterfaceInterfaceType
-    , fmap (("Ipv6AddressCount",) . toJSON . fmap Integer') _eC2NetworkInterfaceIpv6AddressCount
-    , fmap (("Ipv6Addresses",) . toJSON) _eC2NetworkInterfaceIpv6Addresses
-    , fmap (("PrivateIpAddress",) . toJSON) _eC2NetworkInterfacePrivateIpAddress
-    , fmap (("PrivateIpAddresses",) . toJSON) _eC2NetworkInterfacePrivateIpAddresses
-    , fmap (("SecondaryPrivateIpAddressCount",) . toJSON . fmap Integer') _eC2NetworkInterfaceSecondaryPrivateIpAddressCount
-    , fmap (("SourceDestCheck",) . toJSON . fmap Bool') _eC2NetworkInterfaceSourceDestCheck
-    , (Just . ("SubnetId",) . toJSON) _eC2NetworkInterfaceSubnetId
-    , fmap (("Tags",) . toJSON) _eC2NetworkInterfaceTags
-    ]
+instance ToResourceProperties EC2NetworkInterface where
+  toResourceProperties EC2NetworkInterface{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::NetworkInterface"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _eC2NetworkInterfaceDescription
+        , fmap (("GroupSet",) . toJSON) _eC2NetworkInterfaceGroupSet
+        , fmap (("InterfaceType",) . toJSON) _eC2NetworkInterfaceInterfaceType
+        , fmap (("Ipv6AddressCount",) . toJSON . fmap Integer') _eC2NetworkInterfaceIpv6AddressCount
+        , fmap (("Ipv6Addresses",) . toJSON) _eC2NetworkInterfaceIpv6Addresses
+        , fmap (("PrivateIpAddress",) . toJSON) _eC2NetworkInterfacePrivateIpAddress
+        , fmap (("PrivateIpAddresses",) . toJSON) _eC2NetworkInterfacePrivateIpAddresses
+        , fmap (("SecondaryPrivateIpAddressCount",) . toJSON . fmap Integer') _eC2NetworkInterfaceSecondaryPrivateIpAddressCount
+        , fmap (("SourceDestCheck",) . toJSON . fmap Bool') _eC2NetworkInterfaceSourceDestCheck
+        , (Just . ("SubnetId",) . toJSON) _eC2NetworkInterfaceSubnetId
+        , fmap (("Tags",) . toJSON) _eC2NetworkInterfaceTags
+        ]
+    }
 
 -- | Constructor for 'EC2NetworkInterface' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2NetworkInterfaceAttachment.hs b/library-gen/Stratosphere/Resources/EC2NetworkInterfaceAttachment.hs
--- a/library-gen/Stratosphere/Resources/EC2NetworkInterfaceAttachment.hs
+++ b/library-gen/Stratosphere/Resources/EC2NetworkInterfaceAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface-attachment.html
@@ -19,15 +20,18 @@
   , _eC2NetworkInterfaceAttachmentNetworkInterfaceId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2NetworkInterfaceAttachment where
-  toJSON EC2NetworkInterfaceAttachment{..} =
-    object $
-    catMaybes
-    [ fmap (("DeleteOnTermination",) . toJSON . fmap Bool') _eC2NetworkInterfaceAttachmentDeleteOnTermination
-    , (Just . ("DeviceIndex",) . toJSON) _eC2NetworkInterfaceAttachmentDeviceIndex
-    , (Just . ("InstanceId",) . toJSON) _eC2NetworkInterfaceAttachmentInstanceId
-    , (Just . ("NetworkInterfaceId",) . toJSON) _eC2NetworkInterfaceAttachmentNetworkInterfaceId
-    ]
+instance ToResourceProperties EC2NetworkInterfaceAttachment where
+  toResourceProperties EC2NetworkInterfaceAttachment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::NetworkInterfaceAttachment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("DeleteOnTermination",) . toJSON . fmap Bool') _eC2NetworkInterfaceAttachmentDeleteOnTermination
+        , (Just . ("DeviceIndex",) . toJSON) _eC2NetworkInterfaceAttachmentDeviceIndex
+        , (Just . ("InstanceId",) . toJSON) _eC2NetworkInterfaceAttachmentInstanceId
+        , (Just . ("NetworkInterfaceId",) . toJSON) _eC2NetworkInterfaceAttachmentNetworkInterfaceId
+        ]
+    }
 
 -- | Constructor for 'EC2NetworkInterfaceAttachment' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2NetworkInterfacePermission.hs b/library-gen/Stratosphere/Resources/EC2NetworkInterfacePermission.hs
--- a/library-gen/Stratosphere/Resources/EC2NetworkInterfacePermission.hs
+++ b/library-gen/Stratosphere/Resources/EC2NetworkInterfacePermission.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinterfacepermission.html
@@ -18,14 +19,17 @@
   , _eC2NetworkInterfacePermissionPermission :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2NetworkInterfacePermission where
-  toJSON EC2NetworkInterfacePermission{..} =
-    object $
-    catMaybes
-    [ (Just . ("AwsAccountId",) . toJSON) _eC2NetworkInterfacePermissionAwsAccountId
-    , (Just . ("NetworkInterfaceId",) . toJSON) _eC2NetworkInterfacePermissionNetworkInterfaceId
-    , (Just . ("Permission",) . toJSON) _eC2NetworkInterfacePermissionPermission
-    ]
+instance ToResourceProperties EC2NetworkInterfacePermission where
+  toResourceProperties EC2NetworkInterfacePermission{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::NetworkInterfacePermission"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AwsAccountId",) . toJSON) _eC2NetworkInterfacePermissionAwsAccountId
+        , (Just . ("NetworkInterfaceId",) . toJSON) _eC2NetworkInterfacePermissionNetworkInterfaceId
+        , (Just . ("Permission",) . toJSON) _eC2NetworkInterfacePermissionPermission
+        ]
+    }
 
 -- | Constructor for 'EC2NetworkInterfacePermission' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2PlacementGroup.hs b/library-gen/Stratosphere/Resources/EC2PlacementGroup.hs
--- a/library-gen/Stratosphere/Resources/EC2PlacementGroup.hs
+++ b/library-gen/Stratosphere/Resources/EC2PlacementGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-placementgroup.html
@@ -16,12 +17,15 @@
   { _eC2PlacementGroupStrategy :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON EC2PlacementGroup where
-  toJSON EC2PlacementGroup{..} =
-    object $
-    catMaybes
-    [ fmap (("Strategy",) . toJSON) _eC2PlacementGroupStrategy
-    ]
+instance ToResourceProperties EC2PlacementGroup where
+  toResourceProperties EC2PlacementGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::PlacementGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Strategy",) . toJSON) _eC2PlacementGroupStrategy
+        ]
+    }
 
 -- | Constructor for 'EC2PlacementGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2Route.hs b/library-gen/Stratosphere/Resources/EC2Route.hs
--- a/library-gen/Stratosphere/Resources/EC2Route.hs
+++ b/library-gen/Stratosphere/Resources/EC2Route.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html
@@ -24,20 +25,23 @@
   , _eC2RouteVpcPeeringConnectionId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON EC2Route where
-  toJSON EC2Route{..} =
-    object $
-    catMaybes
-    [ fmap (("DestinationCidrBlock",) . toJSON) _eC2RouteDestinationCidrBlock
-    , fmap (("DestinationIpv6CidrBlock",) . toJSON) _eC2RouteDestinationIpv6CidrBlock
-    , fmap (("EgressOnlyInternetGatewayId",) . toJSON) _eC2RouteEgressOnlyInternetGatewayId
-    , fmap (("GatewayId",) . toJSON) _eC2RouteGatewayId
-    , fmap (("InstanceId",) . toJSON) _eC2RouteInstanceId
-    , fmap (("NatGatewayId",) . toJSON) _eC2RouteNatGatewayId
-    , fmap (("NetworkInterfaceId",) . toJSON) _eC2RouteNetworkInterfaceId
-    , (Just . ("RouteTableId",) . toJSON) _eC2RouteRouteTableId
-    , fmap (("VpcPeeringConnectionId",) . toJSON) _eC2RouteVpcPeeringConnectionId
-    ]
+instance ToResourceProperties EC2Route where
+  toResourceProperties EC2Route{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::Route"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("DestinationCidrBlock",) . toJSON) _eC2RouteDestinationCidrBlock
+        , fmap (("DestinationIpv6CidrBlock",) . toJSON) _eC2RouteDestinationIpv6CidrBlock
+        , fmap (("EgressOnlyInternetGatewayId",) . toJSON) _eC2RouteEgressOnlyInternetGatewayId
+        , fmap (("GatewayId",) . toJSON) _eC2RouteGatewayId
+        , fmap (("InstanceId",) . toJSON) _eC2RouteInstanceId
+        , fmap (("NatGatewayId",) . toJSON) _eC2RouteNatGatewayId
+        , fmap (("NetworkInterfaceId",) . toJSON) _eC2RouteNetworkInterfaceId
+        , (Just . ("RouteTableId",) . toJSON) _eC2RouteRouteTableId
+        , fmap (("VpcPeeringConnectionId",) . toJSON) _eC2RouteVpcPeeringConnectionId
+        ]
+    }
 
 -- | Constructor for 'EC2Route' containing required fields as arguments.
 ec2Route
diff --git a/library-gen/Stratosphere/Resources/EC2RouteTable.hs b/library-gen/Stratosphere/Resources/EC2RouteTable.hs
--- a/library-gen/Stratosphere/Resources/EC2RouteTable.hs
+++ b/library-gen/Stratosphere/Resources/EC2RouteTable.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route-table.html
@@ -17,13 +18,16 @@
   , _eC2RouteTableVpcId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2RouteTable where
-  toJSON EC2RouteTable{..} =
-    object $
-    catMaybes
-    [ fmap (("Tags",) . toJSON) _eC2RouteTableTags
-    , (Just . ("VpcId",) . toJSON) _eC2RouteTableVpcId
-    ]
+instance ToResourceProperties EC2RouteTable where
+  toResourceProperties EC2RouteTable{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::RouteTable"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Tags",) . toJSON) _eC2RouteTableTags
+        , (Just . ("VpcId",) . toJSON) _eC2RouteTableVpcId
+        ]
+    }
 
 -- | Constructor for 'EC2RouteTable' containing required fields as arguments.
 ec2RouteTable
diff --git a/library-gen/Stratosphere/Resources/EC2SecurityGroup.hs b/library-gen/Stratosphere/Resources/EC2SecurityGroup.hs
--- a/library-gen/Stratosphere/Resources/EC2SecurityGroup.hs
+++ b/library-gen/Stratosphere/Resources/EC2SecurityGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html
@@ -23,17 +24,20 @@
   , _eC2SecurityGroupVpcId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON EC2SecurityGroup where
-  toJSON EC2SecurityGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("GroupDescription",) . toJSON) _eC2SecurityGroupGroupDescription
-    , fmap (("GroupName",) . toJSON) _eC2SecurityGroupGroupName
-    , fmap (("SecurityGroupEgress",) . toJSON) _eC2SecurityGroupSecurityGroupEgress
-    , fmap (("SecurityGroupIngress",) . toJSON) _eC2SecurityGroupSecurityGroupIngress
-    , fmap (("Tags",) . toJSON) _eC2SecurityGroupTags
-    , fmap (("VpcId",) . toJSON) _eC2SecurityGroupVpcId
-    ]
+instance ToResourceProperties EC2SecurityGroup where
+  toResourceProperties EC2SecurityGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::SecurityGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("GroupDescription",) . toJSON) _eC2SecurityGroupGroupDescription
+        , fmap (("GroupName",) . toJSON) _eC2SecurityGroupGroupName
+        , fmap (("SecurityGroupEgress",) . toJSON) _eC2SecurityGroupSecurityGroupEgress
+        , fmap (("SecurityGroupIngress",) . toJSON) _eC2SecurityGroupSecurityGroupIngress
+        , fmap (("Tags",) . toJSON) _eC2SecurityGroupTags
+        , fmap (("VpcId",) . toJSON) _eC2SecurityGroupVpcId
+        ]
+    }
 
 -- | Constructor for 'EC2SecurityGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2SecurityGroupEgress.hs b/library-gen/Stratosphere/Resources/EC2SecurityGroupEgress.hs
--- a/library-gen/Stratosphere/Resources/EC2SecurityGroupEgress.hs
+++ b/library-gen/Stratosphere/Resources/EC2SecurityGroupEgress.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html
@@ -24,20 +25,23 @@
   , _eC2SecurityGroupEgressToPort :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
-instance ToJSON EC2SecurityGroupEgress where
-  toJSON EC2SecurityGroupEgress{..} =
-    object $
-    catMaybes
-    [ fmap (("CidrIp",) . toJSON) _eC2SecurityGroupEgressCidrIp
-    , fmap (("CidrIpv6",) . toJSON) _eC2SecurityGroupEgressCidrIpv6
-    , fmap (("Description",) . toJSON) _eC2SecurityGroupEgressDescription
-    , fmap (("DestinationPrefixListId",) . toJSON) _eC2SecurityGroupEgressDestinationPrefixListId
-    , fmap (("DestinationSecurityGroupId",) . toJSON) _eC2SecurityGroupEgressDestinationSecurityGroupId
-    , fmap (("FromPort",) . toJSON . fmap Integer') _eC2SecurityGroupEgressFromPort
-    , (Just . ("GroupId",) . toJSON) _eC2SecurityGroupEgressGroupId
-    , (Just . ("IpProtocol",) . toJSON) _eC2SecurityGroupEgressIpProtocol
-    , fmap (("ToPort",) . toJSON . fmap Integer') _eC2SecurityGroupEgressToPort
-    ]
+instance ToResourceProperties EC2SecurityGroupEgress where
+  toResourceProperties EC2SecurityGroupEgress{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::SecurityGroupEgress"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CidrIp",) . toJSON) _eC2SecurityGroupEgressCidrIp
+        , fmap (("CidrIpv6",) . toJSON) _eC2SecurityGroupEgressCidrIpv6
+        , fmap (("Description",) . toJSON) _eC2SecurityGroupEgressDescription
+        , fmap (("DestinationPrefixListId",) . toJSON) _eC2SecurityGroupEgressDestinationPrefixListId
+        , fmap (("DestinationSecurityGroupId",) . toJSON) _eC2SecurityGroupEgressDestinationSecurityGroupId
+        , fmap (("FromPort",) . toJSON . fmap Integer') _eC2SecurityGroupEgressFromPort
+        , (Just . ("GroupId",) . toJSON) _eC2SecurityGroupEgressGroupId
+        , (Just . ("IpProtocol",) . toJSON) _eC2SecurityGroupEgressIpProtocol
+        , fmap (("ToPort",) . toJSON . fmap Integer') _eC2SecurityGroupEgressToPort
+        ]
+    }
 
 -- | Constructor for 'EC2SecurityGroupEgress' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2SecurityGroupIngress.hs b/library-gen/Stratosphere/Resources/EC2SecurityGroupIngress.hs
--- a/library-gen/Stratosphere/Resources/EC2SecurityGroupIngress.hs
+++ b/library-gen/Stratosphere/Resources/EC2SecurityGroupIngress.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html
@@ -27,23 +28,26 @@
   , _eC2SecurityGroupIngressToPort :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
-instance ToJSON EC2SecurityGroupIngress where
-  toJSON EC2SecurityGroupIngress{..} =
-    object $
-    catMaybes
-    [ fmap (("CidrIp",) . toJSON) _eC2SecurityGroupIngressCidrIp
-    , fmap (("CidrIpv6",) . toJSON) _eC2SecurityGroupIngressCidrIpv6
-    , fmap (("Description",) . toJSON) _eC2SecurityGroupIngressDescription
-    , fmap (("FromPort",) . toJSON . fmap Integer') _eC2SecurityGroupIngressFromPort
-    , fmap (("GroupId",) . toJSON) _eC2SecurityGroupIngressGroupId
-    , fmap (("GroupName",) . toJSON) _eC2SecurityGroupIngressGroupName
-    , (Just . ("IpProtocol",) . toJSON) _eC2SecurityGroupIngressIpProtocol
-    , fmap (("SourcePrefixListId",) . toJSON) _eC2SecurityGroupIngressSourcePrefixListId
-    , fmap (("SourceSecurityGroupId",) . toJSON) _eC2SecurityGroupIngressSourceSecurityGroupId
-    , fmap (("SourceSecurityGroupName",) . toJSON) _eC2SecurityGroupIngressSourceSecurityGroupName
-    , fmap (("SourceSecurityGroupOwnerId",) . toJSON) _eC2SecurityGroupIngressSourceSecurityGroupOwnerId
-    , fmap (("ToPort",) . toJSON . fmap Integer') _eC2SecurityGroupIngressToPort
-    ]
+instance ToResourceProperties EC2SecurityGroupIngress where
+  toResourceProperties EC2SecurityGroupIngress{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::SecurityGroupIngress"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CidrIp",) . toJSON) _eC2SecurityGroupIngressCidrIp
+        , fmap (("CidrIpv6",) . toJSON) _eC2SecurityGroupIngressCidrIpv6
+        , fmap (("Description",) . toJSON) _eC2SecurityGroupIngressDescription
+        , fmap (("FromPort",) . toJSON . fmap Integer') _eC2SecurityGroupIngressFromPort
+        , fmap (("GroupId",) . toJSON) _eC2SecurityGroupIngressGroupId
+        , fmap (("GroupName",) . toJSON) _eC2SecurityGroupIngressGroupName
+        , (Just . ("IpProtocol",) . toJSON) _eC2SecurityGroupIngressIpProtocol
+        , fmap (("SourcePrefixListId",) . toJSON) _eC2SecurityGroupIngressSourcePrefixListId
+        , fmap (("SourceSecurityGroupId",) . toJSON) _eC2SecurityGroupIngressSourceSecurityGroupId
+        , fmap (("SourceSecurityGroupName",) . toJSON) _eC2SecurityGroupIngressSourceSecurityGroupName
+        , fmap (("SourceSecurityGroupOwnerId",) . toJSON) _eC2SecurityGroupIngressSourceSecurityGroupOwnerId
+        , fmap (("ToPort",) . toJSON . fmap Integer') _eC2SecurityGroupIngressToPort
+        ]
+    }
 
 -- | Constructor for 'EC2SecurityGroupIngress' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2SpotFleet.hs b/library-gen/Stratosphere/Resources/EC2SpotFleet.hs
--- a/library-gen/Stratosphere/Resources/EC2SpotFleet.hs
+++ b/library-gen/Stratosphere/Resources/EC2SpotFleet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-spotfleet.html
@@ -16,12 +17,15 @@
   { _eC2SpotFleetSpotFleetRequestConfigData :: EC2SpotFleetSpotFleetRequestConfigData
   } deriving (Show, Eq)
 
-instance ToJSON EC2SpotFleet where
-  toJSON EC2SpotFleet{..} =
-    object $
-    catMaybes
-    [ (Just . ("SpotFleetRequestConfigData",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigData
-    ]
+instance ToResourceProperties EC2SpotFleet where
+  toResourceProperties EC2SpotFleet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::SpotFleet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("SpotFleetRequestConfigData",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigData
+        ]
+    }
 
 -- | Constructor for 'EC2SpotFleet' containing required fields as arguments.
 ec2SpotFleet
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html
@@ -22,18 +23,21 @@
   , _eC2SubnetVpcId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2Subnet where
-  toJSON EC2Subnet{..} =
-    object $
-    catMaybes
-    [ 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
-    ]
+instance ToResourceProperties EC2Subnet where
+  toResourceProperties EC2Subnet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::Subnet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ 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
+        ]
+    }
 
 -- | Constructor for 'EC2Subnet' containing required fields as arguments.
 ec2Subnet
diff --git a/library-gen/Stratosphere/Resources/EC2SubnetCidrBlock.hs b/library-gen/Stratosphere/Resources/EC2SubnetCidrBlock.hs
--- a/library-gen/Stratosphere/Resources/EC2SubnetCidrBlock.hs
+++ b/library-gen/Stratosphere/Resources/EC2SubnetCidrBlock.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnetcidrblock.html
@@ -17,13 +18,16 @@
   , _eC2SubnetCidrBlockSubnetId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2SubnetCidrBlock where
-  toJSON EC2SubnetCidrBlock{..} =
-    object $
-    catMaybes
-    [ (Just . ("Ipv6CidrBlock",) . toJSON) _eC2SubnetCidrBlockIpv6CidrBlock
-    , (Just . ("SubnetId",) . toJSON) _eC2SubnetCidrBlockSubnetId
-    ]
+instance ToResourceProperties EC2SubnetCidrBlock where
+  toResourceProperties EC2SubnetCidrBlock{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::SubnetCidrBlock"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Ipv6CidrBlock",) . toJSON) _eC2SubnetCidrBlockIpv6CidrBlock
+        , (Just . ("SubnetId",) . toJSON) _eC2SubnetCidrBlockSubnetId
+        ]
+    }
 
 -- | Constructor for 'EC2SubnetCidrBlock' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2SubnetNetworkAclAssociation.hs b/library-gen/Stratosphere/Resources/EC2SubnetNetworkAclAssociation.hs
--- a/library-gen/Stratosphere/Resources/EC2SubnetNetworkAclAssociation.hs
+++ b/library-gen/Stratosphere/Resources/EC2SubnetNetworkAclAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-network-acl-assoc.html
@@ -17,13 +18,16 @@
   , _eC2SubnetNetworkAclAssociationSubnetId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2SubnetNetworkAclAssociation where
-  toJSON EC2SubnetNetworkAclAssociation{..} =
-    object $
-    catMaybes
-    [ (Just . ("NetworkAclId",) . toJSON) _eC2SubnetNetworkAclAssociationNetworkAclId
-    , (Just . ("SubnetId",) . toJSON) _eC2SubnetNetworkAclAssociationSubnetId
-    ]
+instance ToResourceProperties EC2SubnetNetworkAclAssociation where
+  toResourceProperties EC2SubnetNetworkAclAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::SubnetNetworkAclAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("NetworkAclId",) . toJSON) _eC2SubnetNetworkAclAssociationNetworkAclId
+        , (Just . ("SubnetId",) . toJSON) _eC2SubnetNetworkAclAssociationSubnetId
+        ]
+    }
 
 -- | Constructor for 'EC2SubnetNetworkAclAssociation' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2SubnetRouteTableAssociation.hs b/library-gen/Stratosphere/Resources/EC2SubnetRouteTableAssociation.hs
--- a/library-gen/Stratosphere/Resources/EC2SubnetRouteTableAssociation.hs
+++ b/library-gen/Stratosphere/Resources/EC2SubnetRouteTableAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-route-table-assoc.html
@@ -17,13 +18,16 @@
   , _eC2SubnetRouteTableAssociationSubnetId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2SubnetRouteTableAssociation where
-  toJSON EC2SubnetRouteTableAssociation{..} =
-    object $
-    catMaybes
-    [ (Just . ("RouteTableId",) . toJSON) _eC2SubnetRouteTableAssociationRouteTableId
-    , (Just . ("SubnetId",) . toJSON) _eC2SubnetRouteTableAssociationSubnetId
-    ]
+instance ToResourceProperties EC2SubnetRouteTableAssociation where
+  toResourceProperties EC2SubnetRouteTableAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::SubnetRouteTableAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("RouteTableId",) . toJSON) _eC2SubnetRouteTableAssociationRouteTableId
+        , (Just . ("SubnetId",) . toJSON) _eC2SubnetRouteTableAssociationSubnetId
+        ]
+    }
 
 -- | Constructor for 'EC2SubnetRouteTableAssociation' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2TransitGateway.hs b/library-gen/Stratosphere/Resources/EC2TransitGateway.hs
--- a/library-gen/Stratosphere/Resources/EC2TransitGateway.hs
+++ b/library-gen/Stratosphere/Resources/EC2TransitGateway.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-transitgateway.html
@@ -23,19 +24,22 @@
   , _eC2TransitGatewayVpnEcmpSupport :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON EC2TransitGateway where
-  toJSON EC2TransitGateway{..} =
-    object $
-    catMaybes
-    [ fmap (("AmazonSideAsn",) . toJSON . fmap Integer') _eC2TransitGatewayAmazonSideAsn
-    , fmap (("AutoAcceptSharedAttachments",) . toJSON) _eC2TransitGatewayAutoAcceptSharedAttachments
-    , fmap (("DefaultRouteTableAssociation",) . toJSON) _eC2TransitGatewayDefaultRouteTableAssociation
-    , fmap (("DefaultRouteTablePropagation",) . toJSON) _eC2TransitGatewayDefaultRouteTablePropagation
-    , fmap (("Description",) . toJSON) _eC2TransitGatewayDescription
-    , fmap (("DnsSupport",) . toJSON) _eC2TransitGatewayDnsSupport
-    , fmap (("Tags",) . toJSON) _eC2TransitGatewayTags
-    , fmap (("VpnEcmpSupport",) . toJSON) _eC2TransitGatewayVpnEcmpSupport
-    ]
+instance ToResourceProperties EC2TransitGateway where
+  toResourceProperties EC2TransitGateway{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::TransitGateway"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AmazonSideAsn",) . toJSON . fmap Integer') _eC2TransitGatewayAmazonSideAsn
+        , fmap (("AutoAcceptSharedAttachments",) . toJSON) _eC2TransitGatewayAutoAcceptSharedAttachments
+        , fmap (("DefaultRouteTableAssociation",) . toJSON) _eC2TransitGatewayDefaultRouteTableAssociation
+        , fmap (("DefaultRouteTablePropagation",) . toJSON) _eC2TransitGatewayDefaultRouteTablePropagation
+        , fmap (("Description",) . toJSON) _eC2TransitGatewayDescription
+        , fmap (("DnsSupport",) . toJSON) _eC2TransitGatewayDnsSupport
+        , fmap (("Tags",) . toJSON) _eC2TransitGatewayTags
+        , fmap (("VpnEcmpSupport",) . toJSON) _eC2TransitGatewayVpnEcmpSupport
+        ]
+    }
 
 -- | Constructor for 'EC2TransitGateway' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2TransitGatewayAttachment.hs b/library-gen/Stratosphere/Resources/EC2TransitGatewayAttachment.hs
--- a/library-gen/Stratosphere/Resources/EC2TransitGatewayAttachment.hs
+++ b/library-gen/Stratosphere/Resources/EC2TransitGatewayAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-transitgatewayattachment.html
@@ -19,15 +20,18 @@
   , _eC2TransitGatewayAttachmentVpcId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2TransitGatewayAttachment where
-  toJSON EC2TransitGatewayAttachment{..} =
-    object $
-    catMaybes
-    [ (Just . ("SubnetIds",) . toJSON) _eC2TransitGatewayAttachmentSubnetIds
-    , fmap (("Tags",) . toJSON) _eC2TransitGatewayAttachmentTags
-    , (Just . ("TransitGatewayId",) . toJSON) _eC2TransitGatewayAttachmentTransitGatewayId
-    , (Just . ("VpcId",) . toJSON) _eC2TransitGatewayAttachmentVpcId
-    ]
+instance ToResourceProperties EC2TransitGatewayAttachment where
+  toResourceProperties EC2TransitGatewayAttachment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::TransitGatewayAttachment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("SubnetIds",) . toJSON) _eC2TransitGatewayAttachmentSubnetIds
+        , fmap (("Tags",) . toJSON) _eC2TransitGatewayAttachmentTags
+        , (Just . ("TransitGatewayId",) . toJSON) _eC2TransitGatewayAttachmentTransitGatewayId
+        , (Just . ("VpcId",) . toJSON) _eC2TransitGatewayAttachmentVpcId
+        ]
+    }
 
 -- | Constructor for 'EC2TransitGatewayAttachment' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2TransitGatewayRoute.hs b/library-gen/Stratosphere/Resources/EC2TransitGatewayRoute.hs
--- a/library-gen/Stratosphere/Resources/EC2TransitGatewayRoute.hs
+++ b/library-gen/Stratosphere/Resources/EC2TransitGatewayRoute.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-transitgatewayroute.html
@@ -19,15 +20,18 @@
   , _eC2TransitGatewayRouteTransitGatewayRouteTableId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2TransitGatewayRoute where
-  toJSON EC2TransitGatewayRoute{..} =
-    object $
-    catMaybes
-    [ fmap (("Blackhole",) . toJSON . fmap Bool') _eC2TransitGatewayRouteBlackhole
-    , fmap (("DestinationCidrBlock",) . toJSON) _eC2TransitGatewayRouteDestinationCidrBlock
-    , fmap (("TransitGatewayAttachmentId",) . toJSON) _eC2TransitGatewayRouteTransitGatewayAttachmentId
-    , (Just . ("TransitGatewayRouteTableId",) . toJSON) _eC2TransitGatewayRouteTransitGatewayRouteTableId
-    ]
+instance ToResourceProperties EC2TransitGatewayRoute where
+  toResourceProperties EC2TransitGatewayRoute{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::TransitGatewayRoute"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Blackhole",) . toJSON . fmap Bool') _eC2TransitGatewayRouteBlackhole
+        , fmap (("DestinationCidrBlock",) . toJSON) _eC2TransitGatewayRouteDestinationCidrBlock
+        , fmap (("TransitGatewayAttachmentId",) . toJSON) _eC2TransitGatewayRouteTransitGatewayAttachmentId
+        , (Just . ("TransitGatewayRouteTableId",) . toJSON) _eC2TransitGatewayRouteTransitGatewayRouteTableId
+        ]
+    }
 
 -- | Constructor for 'EC2TransitGatewayRoute' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2TransitGatewayRouteTable.hs b/library-gen/Stratosphere/Resources/EC2TransitGatewayRouteTable.hs
--- a/library-gen/Stratosphere/Resources/EC2TransitGatewayRouteTable.hs
+++ b/library-gen/Stratosphere/Resources/EC2TransitGatewayRouteTable.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-transitgatewayroutetable.html
@@ -17,13 +18,16 @@
   , _eC2TransitGatewayRouteTableTransitGatewayId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2TransitGatewayRouteTable where
-  toJSON EC2TransitGatewayRouteTable{..} =
-    object $
-    catMaybes
-    [ fmap (("Tags",) . toJSON) _eC2TransitGatewayRouteTableTags
-    , (Just . ("TransitGatewayId",) . toJSON) _eC2TransitGatewayRouteTableTransitGatewayId
-    ]
+instance ToResourceProperties EC2TransitGatewayRouteTable where
+  toResourceProperties EC2TransitGatewayRouteTable{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::TransitGatewayRouteTable"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Tags",) . toJSON) _eC2TransitGatewayRouteTableTags
+        , (Just . ("TransitGatewayId",) . toJSON) _eC2TransitGatewayRouteTableTransitGatewayId
+        ]
+    }
 
 -- | Constructor for 'EC2TransitGatewayRouteTable' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2TransitGatewayRouteTableAssociation.hs b/library-gen/Stratosphere/Resources/EC2TransitGatewayRouteTableAssociation.hs
--- a/library-gen/Stratosphere/Resources/EC2TransitGatewayRouteTableAssociation.hs
+++ b/library-gen/Stratosphere/Resources/EC2TransitGatewayRouteTableAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-transitgatewayroutetableassociation.html
@@ -18,13 +19,16 @@
   , _eC2TransitGatewayRouteTableAssociationTransitGatewayRouteTableId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2TransitGatewayRouteTableAssociation where
-  toJSON EC2TransitGatewayRouteTableAssociation{..} =
-    object $
-    catMaybes
-    [ (Just . ("TransitGatewayAttachmentId",) . toJSON) _eC2TransitGatewayRouteTableAssociationTransitGatewayAttachmentId
-    , (Just . ("TransitGatewayRouteTableId",) . toJSON) _eC2TransitGatewayRouteTableAssociationTransitGatewayRouteTableId
-    ]
+instance ToResourceProperties EC2TransitGatewayRouteTableAssociation where
+  toResourceProperties EC2TransitGatewayRouteTableAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::TransitGatewayRouteTableAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("TransitGatewayAttachmentId",) . toJSON) _eC2TransitGatewayRouteTableAssociationTransitGatewayAttachmentId
+        , (Just . ("TransitGatewayRouteTableId",) . toJSON) _eC2TransitGatewayRouteTableAssociationTransitGatewayRouteTableId
+        ]
+    }
 
 -- | Constructor for 'EC2TransitGatewayRouteTableAssociation' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2TransitGatewayRouteTablePropagation.hs b/library-gen/Stratosphere/Resources/EC2TransitGatewayRouteTablePropagation.hs
--- a/library-gen/Stratosphere/Resources/EC2TransitGatewayRouteTablePropagation.hs
+++ b/library-gen/Stratosphere/Resources/EC2TransitGatewayRouteTablePropagation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-transitgatewayroutetablepropagation.html
@@ -18,13 +19,16 @@
   , _eC2TransitGatewayRouteTablePropagationTransitGatewayRouteTableId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2TransitGatewayRouteTablePropagation where
-  toJSON EC2TransitGatewayRouteTablePropagation{..} =
-    object $
-    catMaybes
-    [ (Just . ("TransitGatewayAttachmentId",) . toJSON) _eC2TransitGatewayRouteTablePropagationTransitGatewayAttachmentId
-    , (Just . ("TransitGatewayRouteTableId",) . toJSON) _eC2TransitGatewayRouteTablePropagationTransitGatewayRouteTableId
-    ]
+instance ToResourceProperties EC2TransitGatewayRouteTablePropagation where
+  toResourceProperties EC2TransitGatewayRouteTablePropagation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::TransitGatewayRouteTablePropagation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("TransitGatewayAttachmentId",) . toJSON) _eC2TransitGatewayRouteTablePropagationTransitGatewayAttachmentId
+        , (Just . ("TransitGatewayRouteTableId",) . toJSON) _eC2TransitGatewayRouteTablePropagationTransitGatewayRouteTableId
+        ]
+    }
 
 -- | Constructor for 'EC2TransitGatewayRouteTablePropagation' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2TrunkInterfaceAssociation.hs b/library-gen/Stratosphere/Resources/EC2TrunkInterfaceAssociation.hs
--- a/library-gen/Stratosphere/Resources/EC2TrunkInterfaceAssociation.hs
+++ b/library-gen/Stratosphere/Resources/EC2TrunkInterfaceAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trunkinterfaceassociation.html
@@ -19,15 +20,18 @@
   , _eC2TrunkInterfaceAssociationVLANId :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
-instance ToJSON EC2TrunkInterfaceAssociation where
-  toJSON EC2TrunkInterfaceAssociation{..} =
-    object $
-    catMaybes
-    [ (Just . ("BranchInterfaceId",) . toJSON) _eC2TrunkInterfaceAssociationBranchInterfaceId
-    , fmap (("GREKey",) . toJSON . fmap Integer') _eC2TrunkInterfaceAssociationGREKey
-    , (Just . ("TrunkInterfaceId",) . toJSON) _eC2TrunkInterfaceAssociationTrunkInterfaceId
-    , fmap (("VLANId",) . toJSON . fmap Integer') _eC2TrunkInterfaceAssociationVLANId
-    ]
+instance ToResourceProperties EC2TrunkInterfaceAssociation where
+  toResourceProperties EC2TrunkInterfaceAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::TrunkInterfaceAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("BranchInterfaceId",) . toJSON) _eC2TrunkInterfaceAssociationBranchInterfaceId
+        , fmap (("GREKey",) . toJSON . fmap Integer') _eC2TrunkInterfaceAssociationGREKey
+        , (Just . ("TrunkInterfaceId",) . toJSON) _eC2TrunkInterfaceAssociationTrunkInterfaceId
+        , fmap (("VLANId",) . toJSON . fmap Integer') _eC2TrunkInterfaceAssociationVLANId
+        ]
+    }
 
 -- | Constructor for 'EC2TrunkInterfaceAssociation' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2VPC.hs b/library-gen/Stratosphere/Resources/EC2VPC.hs
--- a/library-gen/Stratosphere/Resources/EC2VPC.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPC.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html
@@ -20,16 +21,19 @@
   , _eC2VPCTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON EC2VPC where
-  toJSON EC2VPC{..} =
-    object $
-    catMaybes
-    [ (Just . ("CidrBlock",) . toJSON) _eC2VPCCidrBlock
-    , fmap (("EnableDnsHostnames",) . toJSON . fmap Bool') _eC2VPCEnableDnsHostnames
-    , fmap (("EnableDnsSupport",) . toJSON . fmap Bool') _eC2VPCEnableDnsSupport
-    , fmap (("InstanceTenancy",) . toJSON) _eC2VPCInstanceTenancy
-    , fmap (("Tags",) . toJSON) _eC2VPCTags
-    ]
+instance ToResourceProperties EC2VPC where
+  toResourceProperties EC2VPC{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::VPC"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("CidrBlock",) . toJSON) _eC2VPCCidrBlock
+        , fmap (("EnableDnsHostnames",) . toJSON . fmap Bool') _eC2VPCEnableDnsHostnames
+        , fmap (("EnableDnsSupport",) . toJSON . fmap Bool') _eC2VPCEnableDnsSupport
+        , fmap (("InstanceTenancy",) . toJSON) _eC2VPCInstanceTenancy
+        , fmap (("Tags",) . toJSON) _eC2VPCTags
+        ]
+    }
 
 -- | Constructor for 'EC2VPC' containing required fields as arguments.
 ec2VPC
diff --git a/library-gen/Stratosphere/Resources/EC2VPCCidrBlock.hs b/library-gen/Stratosphere/Resources/EC2VPCCidrBlock.hs
--- a/library-gen/Stratosphere/Resources/EC2VPCCidrBlock.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPCCidrBlock.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpccidrblock.html
@@ -18,14 +19,17 @@
   , _eC2VPCCidrBlockVpcId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2VPCCidrBlock where
-  toJSON EC2VPCCidrBlock{..} =
-    object $
-    catMaybes
-    [ fmap (("AmazonProvidedIpv6CidrBlock",) . toJSON . fmap Bool') _eC2VPCCidrBlockAmazonProvidedIpv6CidrBlock
-    , fmap (("CidrBlock",) . toJSON) _eC2VPCCidrBlockCidrBlock
-    , (Just . ("VpcId",) . toJSON) _eC2VPCCidrBlockVpcId
-    ]
+instance ToResourceProperties EC2VPCCidrBlock where
+  toResourceProperties EC2VPCCidrBlock{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::VPCCidrBlock"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AmazonProvidedIpv6CidrBlock",) . toJSON . fmap Bool') _eC2VPCCidrBlockAmazonProvidedIpv6CidrBlock
+        , fmap (("CidrBlock",) . toJSON) _eC2VPCCidrBlockCidrBlock
+        , (Just . ("VpcId",) . toJSON) _eC2VPCCidrBlockVpcId
+        ]
+    }
 
 -- | Constructor for 'EC2VPCCidrBlock' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2VPCDHCPOptionsAssociation.hs b/library-gen/Stratosphere/Resources/EC2VPCDHCPOptionsAssociation.hs
--- a/library-gen/Stratosphere/Resources/EC2VPCDHCPOptionsAssociation.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPCDHCPOptionsAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-dhcp-options-assoc.html
@@ -17,13 +18,16 @@
   , _eC2VPCDHCPOptionsAssociationVpcId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2VPCDHCPOptionsAssociation where
-  toJSON EC2VPCDHCPOptionsAssociation{..} =
-    object $
-    catMaybes
-    [ (Just . ("DhcpOptionsId",) . toJSON) _eC2VPCDHCPOptionsAssociationDhcpOptionsId
-    , (Just . ("VpcId",) . toJSON) _eC2VPCDHCPOptionsAssociationVpcId
-    ]
+instance ToResourceProperties EC2VPCDHCPOptionsAssociation where
+  toResourceProperties EC2VPCDHCPOptionsAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::VPCDHCPOptionsAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DhcpOptionsId",) . toJSON) _eC2VPCDHCPOptionsAssociationDhcpOptionsId
+        , (Just . ("VpcId",) . toJSON) _eC2VPCDHCPOptionsAssociationVpcId
+        ]
+    }
 
 -- | Constructor for 'EC2VPCDHCPOptionsAssociation' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2VPCEndpoint.hs b/library-gen/Stratosphere/Resources/EC2VPCEndpoint.hs
--- a/library-gen/Stratosphere/Resources/EC2VPCEndpoint.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPCEndpoint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html
@@ -23,19 +24,22 @@
   , _eC2VPCEndpointVpcId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2VPCEndpoint where
-  toJSON EC2VPCEndpoint{..} =
-    object $
-    catMaybes
-    [ fmap (("PolicyDocument",) . toJSON) _eC2VPCEndpointPolicyDocument
-    , fmap (("PrivateDnsEnabled",) . toJSON . fmap Bool') _eC2VPCEndpointPrivateDnsEnabled
-    , fmap (("RouteTableIds",) . toJSON) _eC2VPCEndpointRouteTableIds
-    , fmap (("SecurityGroupIds",) . toJSON) _eC2VPCEndpointSecurityGroupIds
-    , (Just . ("ServiceName",) . toJSON) _eC2VPCEndpointServiceName
-    , fmap (("SubnetIds",) . toJSON) _eC2VPCEndpointSubnetIds
-    , fmap (("VpcEndpointType",) . toJSON) _eC2VPCEndpointVpcEndpointType
-    , (Just . ("VpcId",) . toJSON) _eC2VPCEndpointVpcId
-    ]
+instance ToResourceProperties EC2VPCEndpoint where
+  toResourceProperties EC2VPCEndpoint{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::VPCEndpoint"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("PolicyDocument",) . toJSON) _eC2VPCEndpointPolicyDocument
+        , fmap (("PrivateDnsEnabled",) . toJSON . fmap Bool') _eC2VPCEndpointPrivateDnsEnabled
+        , fmap (("RouteTableIds",) . toJSON) _eC2VPCEndpointRouteTableIds
+        , fmap (("SecurityGroupIds",) . toJSON) _eC2VPCEndpointSecurityGroupIds
+        , (Just . ("ServiceName",) . toJSON) _eC2VPCEndpointServiceName
+        , fmap (("SubnetIds",) . toJSON) _eC2VPCEndpointSubnetIds
+        , fmap (("VpcEndpointType",) . toJSON) _eC2VPCEndpointVpcEndpointType
+        , (Just . ("VpcId",) . toJSON) _eC2VPCEndpointVpcId
+        ]
+    }
 
 -- | Constructor for 'EC2VPCEndpoint' containing required fields as arguments.
 ec2VPCEndpoint
diff --git a/library-gen/Stratosphere/Resources/EC2VPCEndpointConnectionNotification.hs b/library-gen/Stratosphere/Resources/EC2VPCEndpointConnectionNotification.hs
--- a/library-gen/Stratosphere/Resources/EC2VPCEndpointConnectionNotification.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPCEndpointConnectionNotification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointconnectionnotification.html
@@ -19,15 +20,18 @@
   , _eC2VPCEndpointConnectionNotificationVPCEndpointId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON EC2VPCEndpointConnectionNotification where
-  toJSON EC2VPCEndpointConnectionNotification{..} =
-    object $
-    catMaybes
-    [ (Just . ("ConnectionEvents",) . toJSON) _eC2VPCEndpointConnectionNotificationConnectionEvents
-    , (Just . ("ConnectionNotificationArn",) . toJSON) _eC2VPCEndpointConnectionNotificationConnectionNotificationArn
-    , fmap (("ServiceId",) . toJSON) _eC2VPCEndpointConnectionNotificationServiceId
-    , fmap (("VPCEndpointId",) . toJSON) _eC2VPCEndpointConnectionNotificationVPCEndpointId
-    ]
+instance ToResourceProperties EC2VPCEndpointConnectionNotification where
+  toResourceProperties EC2VPCEndpointConnectionNotification{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::VPCEndpointConnectionNotification"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ConnectionEvents",) . toJSON) _eC2VPCEndpointConnectionNotificationConnectionEvents
+        , (Just . ("ConnectionNotificationArn",) . toJSON) _eC2VPCEndpointConnectionNotificationConnectionNotificationArn
+        , fmap (("ServiceId",) . toJSON) _eC2VPCEndpointConnectionNotificationServiceId
+        , fmap (("VPCEndpointId",) . toJSON) _eC2VPCEndpointConnectionNotificationVPCEndpointId
+        ]
+    }
 
 -- | Constructor for 'EC2VPCEndpointConnectionNotification' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2VPCEndpointServicePermissions.hs b/library-gen/Stratosphere/Resources/EC2VPCEndpointServicePermissions.hs
--- a/library-gen/Stratosphere/Resources/EC2VPCEndpointServicePermissions.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPCEndpointServicePermissions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointservicepermissions.html
@@ -17,13 +18,16 @@
   , _eC2VPCEndpointServicePermissionsServiceId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2VPCEndpointServicePermissions where
-  toJSON EC2VPCEndpointServicePermissions{..} =
-    object $
-    catMaybes
-    [ fmap (("AllowedPrincipals",) . toJSON) _eC2VPCEndpointServicePermissionsAllowedPrincipals
-    , (Just . ("ServiceId",) . toJSON) _eC2VPCEndpointServicePermissionsServiceId
-    ]
+instance ToResourceProperties EC2VPCEndpointServicePermissions where
+  toResourceProperties EC2VPCEndpointServicePermissions{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::VPCEndpointServicePermissions"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AllowedPrincipals",) . toJSON) _eC2VPCEndpointServicePermissionsAllowedPrincipals
+        , (Just . ("ServiceId",) . toJSON) _eC2VPCEndpointServicePermissionsServiceId
+        ]
+    }
 
 -- | Constructor for 'EC2VPCEndpointServicePermissions' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2VPCGatewayAttachment.hs b/library-gen/Stratosphere/Resources/EC2VPCGatewayAttachment.hs
--- a/library-gen/Stratosphere/Resources/EC2VPCGatewayAttachment.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPCGatewayAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html
@@ -18,14 +19,17 @@
   , _eC2VPCGatewayAttachmentVpnGatewayId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON EC2VPCGatewayAttachment where
-  toJSON EC2VPCGatewayAttachment{..} =
-    object $
-    catMaybes
-    [ fmap (("InternetGatewayId",) . toJSON) _eC2VPCGatewayAttachmentInternetGatewayId
-    , (Just . ("VpcId",) . toJSON) _eC2VPCGatewayAttachmentVpcId
-    , fmap (("VpnGatewayId",) . toJSON) _eC2VPCGatewayAttachmentVpnGatewayId
-    ]
+instance ToResourceProperties EC2VPCGatewayAttachment where
+  toResourceProperties EC2VPCGatewayAttachment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::VPCGatewayAttachment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("InternetGatewayId",) . toJSON) _eC2VPCGatewayAttachmentInternetGatewayId
+        , (Just . ("VpcId",) . toJSON) _eC2VPCGatewayAttachmentVpcId
+        , fmap (("VpnGatewayId",) . toJSON) _eC2VPCGatewayAttachmentVpnGatewayId
+        ]
+    }
 
 -- | Constructor for 'EC2VPCGatewayAttachment' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2VPCPeeringConnection.hs b/library-gen/Stratosphere/Resources/EC2VPCPeeringConnection.hs
--- a/library-gen/Stratosphere/Resources/EC2VPCPeeringConnection.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPCPeeringConnection.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcpeeringconnection.html
@@ -21,17 +22,20 @@
   , _eC2VPCPeeringConnectionVpcId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2VPCPeeringConnection where
-  toJSON EC2VPCPeeringConnection{..} =
-    object $
-    catMaybes
-    [ fmap (("PeerOwnerId",) . toJSON) _eC2VPCPeeringConnectionPeerOwnerId
-    , fmap (("PeerRegion",) . toJSON) _eC2VPCPeeringConnectionPeerRegion
-    , fmap (("PeerRoleArn",) . toJSON) _eC2VPCPeeringConnectionPeerRoleArn
-    , (Just . ("PeerVpcId",) . toJSON) _eC2VPCPeeringConnectionPeerVpcId
-    , fmap (("Tags",) . toJSON) _eC2VPCPeeringConnectionTags
-    , (Just . ("VpcId",) . toJSON) _eC2VPCPeeringConnectionVpcId
-    ]
+instance ToResourceProperties EC2VPCPeeringConnection where
+  toResourceProperties EC2VPCPeeringConnection{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::VPCPeeringConnection"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("PeerOwnerId",) . toJSON) _eC2VPCPeeringConnectionPeerOwnerId
+        , fmap (("PeerRegion",) . toJSON) _eC2VPCPeeringConnectionPeerRegion
+        , fmap (("PeerRoleArn",) . toJSON) _eC2VPCPeeringConnectionPeerRoleArn
+        , (Just . ("PeerVpcId",) . toJSON) _eC2VPCPeeringConnectionPeerVpcId
+        , fmap (("Tags",) . toJSON) _eC2VPCPeeringConnectionTags
+        , (Just . ("VpcId",) . toJSON) _eC2VPCPeeringConnectionVpcId
+        ]
+    }
 
 -- | Constructor for 'EC2VPCPeeringConnection' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2VPNConnection.hs b/library-gen/Stratosphere/Resources/EC2VPNConnection.hs
--- a/library-gen/Stratosphere/Resources/EC2VPNConnection.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPNConnection.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html
@@ -22,17 +23,20 @@
   , _eC2VPNConnectionVpnTunnelOptionsSpecifications :: Maybe [EC2VPNConnectionVpnTunnelOptionsSpecification]
   } deriving (Show, Eq)
 
-instance ToJSON EC2VPNConnection where
-  toJSON EC2VPNConnection{..} =
-    object $
-    catMaybes
-    [ (Just . ("CustomerGatewayId",) . toJSON) _eC2VPNConnectionCustomerGatewayId
-    , fmap (("StaticRoutesOnly",) . toJSON . fmap Bool') _eC2VPNConnectionStaticRoutesOnly
-    , fmap (("Tags",) . toJSON) _eC2VPNConnectionTags
-    , (Just . ("Type",) . toJSON) _eC2VPNConnectionType
-    , (Just . ("VpnGatewayId",) . toJSON) _eC2VPNConnectionVpnGatewayId
-    , fmap (("VpnTunnelOptionsSpecifications",) . toJSON) _eC2VPNConnectionVpnTunnelOptionsSpecifications
-    ]
+instance ToResourceProperties EC2VPNConnection where
+  toResourceProperties EC2VPNConnection{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::VPNConnection"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("CustomerGatewayId",) . toJSON) _eC2VPNConnectionCustomerGatewayId
+        , fmap (("StaticRoutesOnly",) . toJSON . fmap Bool') _eC2VPNConnectionStaticRoutesOnly
+        , fmap (("Tags",) . toJSON) _eC2VPNConnectionTags
+        , (Just . ("Type",) . toJSON) _eC2VPNConnectionType
+        , (Just . ("VpnGatewayId",) . toJSON) _eC2VPNConnectionVpnGatewayId
+        , fmap (("VpnTunnelOptionsSpecifications",) . toJSON) _eC2VPNConnectionVpnTunnelOptionsSpecifications
+        ]
+    }
 
 -- | Constructor for 'EC2VPNConnection' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2VPNConnectionRoute.hs b/library-gen/Stratosphere/Resources/EC2VPNConnectionRoute.hs
--- a/library-gen/Stratosphere/Resources/EC2VPNConnectionRoute.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPNConnectionRoute.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection-route.html
@@ -17,13 +18,16 @@
   , _eC2VPNConnectionRouteVpnConnectionId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2VPNConnectionRoute where
-  toJSON EC2VPNConnectionRoute{..} =
-    object $
-    catMaybes
-    [ (Just . ("DestinationCidrBlock",) . toJSON) _eC2VPNConnectionRouteDestinationCidrBlock
-    , (Just . ("VpnConnectionId",) . toJSON) _eC2VPNConnectionRouteVpnConnectionId
-    ]
+instance ToResourceProperties EC2VPNConnectionRoute where
+  toResourceProperties EC2VPNConnectionRoute{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::VPNConnectionRoute"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DestinationCidrBlock",) . toJSON) _eC2VPNConnectionRouteDestinationCidrBlock
+        , (Just . ("VpnConnectionId",) . toJSON) _eC2VPNConnectionRouteVpnConnectionId
+        ]
+    }
 
 -- | Constructor for 'EC2VPNConnectionRoute' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2VPNGateway.hs b/library-gen/Stratosphere/Resources/EC2VPNGateway.hs
--- a/library-gen/Stratosphere/Resources/EC2VPNGateway.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPNGateway.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gateway.html
@@ -18,14 +19,17 @@
   , _eC2VPNGatewayType :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2VPNGateway where
-  toJSON EC2VPNGateway{..} =
-    object $
-    catMaybes
-    [ fmap (("AmazonSideAsn",) . toJSON . fmap Integer') _eC2VPNGatewayAmazonSideAsn
-    , fmap (("Tags",) . toJSON) _eC2VPNGatewayTags
-    , (Just . ("Type",) . toJSON) _eC2VPNGatewayType
-    ]
+instance ToResourceProperties EC2VPNGateway where
+  toResourceProperties EC2VPNGateway{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::VPNGateway"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AmazonSideAsn",) . toJSON . fmap Integer') _eC2VPNGatewayAmazonSideAsn
+        , fmap (("Tags",) . toJSON) _eC2VPNGatewayTags
+        , (Just . ("Type",) . toJSON) _eC2VPNGatewayType
+        ]
+    }
 
 -- | Constructor for 'EC2VPNGateway' containing required fields as arguments.
 ec2VPNGateway
diff --git a/library-gen/Stratosphere/Resources/EC2VPNGatewayRoutePropagation.hs b/library-gen/Stratosphere/Resources/EC2VPNGatewayRoutePropagation.hs
--- a/library-gen/Stratosphere/Resources/EC2VPNGatewayRoutePropagation.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPNGatewayRoutePropagation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gatewayrouteprop.html
@@ -17,13 +18,16 @@
   , _eC2VPNGatewayRoutePropagationVpnGatewayId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2VPNGatewayRoutePropagation where
-  toJSON EC2VPNGatewayRoutePropagation{..} =
-    object $
-    catMaybes
-    [ (Just . ("RouteTableIds",) . toJSON) _eC2VPNGatewayRoutePropagationRouteTableIds
-    , (Just . ("VpnGatewayId",) . toJSON) _eC2VPNGatewayRoutePropagationVpnGatewayId
-    ]
+instance ToResourceProperties EC2VPNGatewayRoutePropagation where
+  toResourceProperties EC2VPNGatewayRoutePropagation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::VPNGatewayRoutePropagation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("RouteTableIds",) . toJSON) _eC2VPNGatewayRoutePropagationRouteTableIds
+        , (Just . ("VpnGatewayId",) . toJSON) _eC2VPNGatewayRoutePropagationVpnGatewayId
+        ]
+    }
 
 -- | Constructor for 'EC2VPNGatewayRoutePropagation' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2Volume.hs b/library-gen/Stratosphere/Resources/EC2Volume.hs
--- a/library-gen/Stratosphere/Resources/EC2Volume.hs
+++ b/library-gen/Stratosphere/Resources/EC2Volume.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html
@@ -24,20 +25,23 @@
   , _eC2VolumeVolumeType :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON EC2Volume where
-  toJSON EC2Volume{..} =
-    object $
-    catMaybes
-    [ fmap (("AutoEnableIO",) . toJSON . fmap Bool') _eC2VolumeAutoEnableIO
-    , (Just . ("AvailabilityZone",) . toJSON) _eC2VolumeAvailabilityZone
-    , fmap (("Encrypted",) . toJSON . fmap Bool') _eC2VolumeEncrypted
-    , fmap (("Iops",) . toJSON . fmap Integer') _eC2VolumeIops
-    , fmap (("KmsKeyId",) . toJSON) _eC2VolumeKmsKeyId
-    , fmap (("Size",) . toJSON . fmap Integer') _eC2VolumeSize
-    , fmap (("SnapshotId",) . toJSON) _eC2VolumeSnapshotId
-    , fmap (("Tags",) . toJSON) _eC2VolumeTags
-    , fmap (("VolumeType",) . toJSON) _eC2VolumeVolumeType
-    ]
+instance ToResourceProperties EC2Volume where
+  toResourceProperties EC2Volume{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::Volume"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AutoEnableIO",) . toJSON . fmap Bool') _eC2VolumeAutoEnableIO
+        , (Just . ("AvailabilityZone",) . toJSON) _eC2VolumeAvailabilityZone
+        , fmap (("Encrypted",) . toJSON . fmap Bool') _eC2VolumeEncrypted
+        , fmap (("Iops",) . toJSON . fmap Integer') _eC2VolumeIops
+        , fmap (("KmsKeyId",) . toJSON) _eC2VolumeKmsKeyId
+        , fmap (("Size",) . toJSON . fmap Integer') _eC2VolumeSize
+        , fmap (("SnapshotId",) . toJSON) _eC2VolumeSnapshotId
+        , fmap (("Tags",) . toJSON) _eC2VolumeTags
+        , fmap (("VolumeType",) . toJSON) _eC2VolumeVolumeType
+        ]
+    }
 
 -- | Constructor for 'EC2Volume' containing required fields as arguments.
 ec2Volume
diff --git a/library-gen/Stratosphere/Resources/EC2VolumeAttachment.hs b/library-gen/Stratosphere/Resources/EC2VolumeAttachment.hs
--- a/library-gen/Stratosphere/Resources/EC2VolumeAttachment.hs
+++ b/library-gen/Stratosphere/Resources/EC2VolumeAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volumeattachment.html
@@ -18,14 +19,17 @@
   , _eC2VolumeAttachmentVolumeId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EC2VolumeAttachment where
-  toJSON EC2VolumeAttachment{..} =
-    object $
-    catMaybes
-    [ (Just . ("Device",) . toJSON) _eC2VolumeAttachmentDevice
-    , (Just . ("InstanceId",) . toJSON) _eC2VolumeAttachmentInstanceId
-    , (Just . ("VolumeId",) . toJSON) _eC2VolumeAttachmentVolumeId
-    ]
+instance ToResourceProperties EC2VolumeAttachment where
+  toResourceProperties EC2VolumeAttachment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::VolumeAttachment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Device",) . toJSON) _eC2VolumeAttachmentDevice
+        , (Just . ("InstanceId",) . toJSON) _eC2VolumeAttachmentInstanceId
+        , (Just . ("VolumeId",) . toJSON) _eC2VolumeAttachmentVolumeId
+        ]
+    }
 
 -- | Constructor for 'EC2VolumeAttachment' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ECRRepository.hs b/library-gen/Stratosphere/Resources/ECRRepository.hs
--- a/library-gen/Stratosphere/Resources/ECRRepository.hs
+++ b/library-gen/Stratosphere/Resources/ECRRepository.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-repository.html
@@ -18,14 +19,17 @@
   , _eCRRepositoryRepositoryPolicyText :: Maybe Object
   } deriving (Show, Eq)
 
-instance ToJSON ECRRepository where
-  toJSON ECRRepository{..} =
-    object $
-    catMaybes
-    [ fmap (("LifecyclePolicy",) . toJSON) _eCRRepositoryLifecyclePolicy
-    , fmap (("RepositoryName",) . toJSON) _eCRRepositoryRepositoryName
-    , fmap (("RepositoryPolicyText",) . toJSON) _eCRRepositoryRepositoryPolicyText
-    ]
+instance ToResourceProperties ECRRepository where
+  toResourceProperties ECRRepository{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ECR::Repository"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("LifecyclePolicy",) . toJSON) _eCRRepositoryLifecyclePolicy
+        , fmap (("RepositoryName",) . toJSON) _eCRRepositoryRepositoryName
+        , fmap (("RepositoryPolicyText",) . toJSON) _eCRRepositoryRepositoryPolicyText
+        ]
+    }
 
 -- | Constructor for 'ECRRepository' containing required fields as arguments.
 ecrRepository
diff --git a/library-gen/Stratosphere/Resources/ECSCluster.hs b/library-gen/Stratosphere/Resources/ECSCluster.hs
--- a/library-gen/Stratosphere/Resources/ECSCluster.hs
+++ b/library-gen/Stratosphere/Resources/ECSCluster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html
@@ -16,12 +17,15 @@
   { _eCSClusterClusterName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ECSCluster where
-  toJSON ECSCluster{..} =
-    object $
-    catMaybes
-    [ fmap (("ClusterName",) . toJSON) _eCSClusterClusterName
-    ]
+instance ToResourceProperties ECSCluster where
+  toResourceProperties ECSCluster{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ECS::Cluster"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ClusterName",) . toJSON) _eCSClusterClusterName
+        ]
+    }
 
 -- | Constructor for 'ECSCluster' containing required fields as arguments.
 ecsCluster
diff --git a/library-gen/Stratosphere/Resources/ECSService.hs b/library-gen/Stratosphere/Resources/ECSService.hs
--- a/library-gen/Stratosphere/Resources/ECSService.hs
+++ b/library-gen/Stratosphere/Resources/ECSService.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html
@@ -35,26 +36,29 @@
   , _eCSServiceTaskDefinition :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ECSService where
-  toJSON ECSService{..} =
-    object $
-    catMaybes
-    [ fmap (("Cluster",) . toJSON) _eCSServiceCluster
-    , fmap (("DeploymentConfiguration",) . toJSON) _eCSServiceDeploymentConfiguration
-    , fmap (("DesiredCount",) . toJSON . fmap Integer') _eCSServiceDesiredCount
-    , fmap (("HealthCheckGracePeriodSeconds",) . toJSON . fmap Integer') _eCSServiceHealthCheckGracePeriodSeconds
-    , fmap (("LaunchType",) . toJSON) _eCSServiceLaunchType
-    , fmap (("LoadBalancers",) . toJSON) _eCSServiceLoadBalancers
-    , fmap (("NetworkConfiguration",) . toJSON) _eCSServiceNetworkConfiguration
-    , fmap (("PlacementConstraints",) . toJSON) _eCSServicePlacementConstraints
-    , fmap (("PlacementStrategies",) . toJSON) _eCSServicePlacementStrategies
-    , fmap (("PlatformVersion",) . toJSON) _eCSServicePlatformVersion
-    , fmap (("Role",) . toJSON) _eCSServiceRole
-    , fmap (("SchedulingStrategy",) . toJSON) _eCSServiceSchedulingStrategy
-    , fmap (("ServiceName",) . toJSON) _eCSServiceServiceName
-    , fmap (("ServiceRegistries",) . toJSON) _eCSServiceServiceRegistries
-    , (Just . ("TaskDefinition",) . toJSON) _eCSServiceTaskDefinition
-    ]
+instance ToResourceProperties ECSService where
+  toResourceProperties ECSService{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ECS::Service"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Cluster",) . toJSON) _eCSServiceCluster
+        , fmap (("DeploymentConfiguration",) . toJSON) _eCSServiceDeploymentConfiguration
+        , fmap (("DesiredCount",) . toJSON . fmap Integer') _eCSServiceDesiredCount
+        , fmap (("HealthCheckGracePeriodSeconds",) . toJSON . fmap Integer') _eCSServiceHealthCheckGracePeriodSeconds
+        , fmap (("LaunchType",) . toJSON) _eCSServiceLaunchType
+        , fmap (("LoadBalancers",) . toJSON) _eCSServiceLoadBalancers
+        , fmap (("NetworkConfiguration",) . toJSON) _eCSServiceNetworkConfiguration
+        , fmap (("PlacementConstraints",) . toJSON) _eCSServicePlacementConstraints
+        , fmap (("PlacementStrategies",) . toJSON) _eCSServicePlacementStrategies
+        , fmap (("PlatformVersion",) . toJSON) _eCSServicePlatformVersion
+        , fmap (("Role",) . toJSON) _eCSServiceRole
+        , fmap (("SchedulingStrategy",) . toJSON) _eCSServiceSchedulingStrategy
+        , fmap (("ServiceName",) . toJSON) _eCSServiceServiceName
+        , fmap (("ServiceRegistries",) . toJSON) _eCSServiceServiceRegistries
+        , (Just . ("TaskDefinition",) . toJSON) _eCSServiceTaskDefinition
+        ]
+    }
 
 -- | Constructor for 'ECSService' containing required fields as arguments.
 ecsService
diff --git a/library-gen/Stratosphere/Resources/ECSTaskDefinition.hs b/library-gen/Stratosphere/Resources/ECSTaskDefinition.hs
--- a/library-gen/Stratosphere/Resources/ECSTaskDefinition.hs
+++ b/library-gen/Stratosphere/Resources/ECSTaskDefinition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html
@@ -27,21 +28,24 @@
   , _eCSTaskDefinitionVolumes :: Maybe [ECSTaskDefinitionVolume]
   } deriving (Show, Eq)
 
-instance ToJSON ECSTaskDefinition where
-  toJSON ECSTaskDefinition{..} =
-    object $
-    catMaybes
-    [ fmap (("ContainerDefinitions",) . toJSON) _eCSTaskDefinitionContainerDefinitions
-    , fmap (("Cpu",) . toJSON) _eCSTaskDefinitionCpu
-    , fmap (("ExecutionRoleArn",) . toJSON) _eCSTaskDefinitionExecutionRoleArn
-    , fmap (("Family",) . toJSON) _eCSTaskDefinitionFamily
-    , fmap (("Memory",) . toJSON) _eCSTaskDefinitionMemory
-    , fmap (("NetworkMode",) . toJSON) _eCSTaskDefinitionNetworkMode
-    , fmap (("PlacementConstraints",) . toJSON) _eCSTaskDefinitionPlacementConstraints
-    , fmap (("RequiresCompatibilities",) . toJSON) _eCSTaskDefinitionRequiresCompatibilities
-    , fmap (("TaskRoleArn",) . toJSON) _eCSTaskDefinitionTaskRoleArn
-    , fmap (("Volumes",) . toJSON) _eCSTaskDefinitionVolumes
-    ]
+instance ToResourceProperties ECSTaskDefinition where
+  toResourceProperties ECSTaskDefinition{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ECS::TaskDefinition"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ContainerDefinitions",) . toJSON) _eCSTaskDefinitionContainerDefinitions
+        , fmap (("Cpu",) . toJSON) _eCSTaskDefinitionCpu
+        , fmap (("ExecutionRoleArn",) . toJSON) _eCSTaskDefinitionExecutionRoleArn
+        , fmap (("Family",) . toJSON) _eCSTaskDefinitionFamily
+        , fmap (("Memory",) . toJSON) _eCSTaskDefinitionMemory
+        , fmap (("NetworkMode",) . toJSON) _eCSTaskDefinitionNetworkMode
+        , fmap (("PlacementConstraints",) . toJSON) _eCSTaskDefinitionPlacementConstraints
+        , fmap (("RequiresCompatibilities",) . toJSON) _eCSTaskDefinitionRequiresCompatibilities
+        , fmap (("TaskRoleArn",) . toJSON) _eCSTaskDefinitionTaskRoleArn
+        , fmap (("Volumes",) . toJSON) _eCSTaskDefinitionVolumes
+        ]
+    }
 
 -- | Constructor for 'ECSTaskDefinition' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EFSFileSystem.hs b/library-gen/Stratosphere/Resources/EFSFileSystem.hs
--- a/library-gen/Stratosphere/Resources/EFSFileSystem.hs
+++ b/library-gen/Stratosphere/Resources/EFSFileSystem.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html
@@ -21,17 +22,20 @@
   , _eFSFileSystemThroughputMode :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON EFSFileSystem where
-  toJSON EFSFileSystem{..} =
-    object $
-    catMaybes
-    [ fmap (("Encrypted",) . toJSON . fmap Bool') _eFSFileSystemEncrypted
-    , fmap (("FileSystemTags",) . toJSON) _eFSFileSystemFileSystemTags
-    , fmap (("KmsKeyId",) . toJSON) _eFSFileSystemKmsKeyId
-    , fmap (("PerformanceMode",) . toJSON) _eFSFileSystemPerformanceMode
-    , fmap (("ProvisionedThroughputInMibps",) . toJSON . fmap Double') _eFSFileSystemProvisionedThroughputInMibps
-    , fmap (("ThroughputMode",) . toJSON) _eFSFileSystemThroughputMode
-    ]
+instance ToResourceProperties EFSFileSystem where
+  toResourceProperties EFSFileSystem{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EFS::FileSystem"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Encrypted",) . toJSON . fmap Bool') _eFSFileSystemEncrypted
+        , fmap (("FileSystemTags",) . toJSON) _eFSFileSystemFileSystemTags
+        , fmap (("KmsKeyId",) . toJSON) _eFSFileSystemKmsKeyId
+        , fmap (("PerformanceMode",) . toJSON) _eFSFileSystemPerformanceMode
+        , fmap (("ProvisionedThroughputInMibps",) . toJSON . fmap Double') _eFSFileSystemProvisionedThroughputInMibps
+        , fmap (("ThroughputMode",) . toJSON) _eFSFileSystemThroughputMode
+        ]
+    }
 
 -- | Constructor for 'EFSFileSystem' containing required fields as arguments.
 efsFileSystem
diff --git a/library-gen/Stratosphere/Resources/EFSMountTarget.hs b/library-gen/Stratosphere/Resources/EFSMountTarget.hs
--- a/library-gen/Stratosphere/Resources/EFSMountTarget.hs
+++ b/library-gen/Stratosphere/Resources/EFSMountTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html
@@ -19,15 +20,18 @@
   , _eFSMountTargetSubnetId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EFSMountTarget where
-  toJSON EFSMountTarget{..} =
-    object $
-    catMaybes
-    [ (Just . ("FileSystemId",) . toJSON) _eFSMountTargetFileSystemId
-    , fmap (("IpAddress",) . toJSON) _eFSMountTargetIpAddress
-    , (Just . ("SecurityGroups",) . toJSON) _eFSMountTargetSecurityGroups
-    , (Just . ("SubnetId",) . toJSON) _eFSMountTargetSubnetId
-    ]
+instance ToResourceProperties EFSMountTarget where
+  toResourceProperties EFSMountTarget{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EFS::MountTarget"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("FileSystemId",) . toJSON) _eFSMountTargetFileSystemId
+        , fmap (("IpAddress",) . toJSON) _eFSMountTargetIpAddress
+        , (Just . ("SecurityGroups",) . toJSON) _eFSMountTargetSecurityGroups
+        , (Just . ("SubnetId",) . toJSON) _eFSMountTargetSubnetId
+        ]
+    }
 
 -- | Constructor for 'EFSMountTarget' containing required fields as arguments.
 efsMountTarget
diff --git a/library-gen/Stratosphere/Resources/EKSCluster.hs b/library-gen/Stratosphere/Resources/EKSCluster.hs
--- a/library-gen/Stratosphere/Resources/EKSCluster.hs
+++ b/library-gen/Stratosphere/Resources/EKSCluster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-cluster.html
@@ -19,15 +20,18 @@
   , _eKSClusterVersion :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON EKSCluster where
-  toJSON EKSCluster{..} =
-    object $
-    catMaybes
-    [ fmap (("Name",) . toJSON) _eKSClusterName
-    , (Just . ("ResourcesVpcConfig",) . toJSON) _eKSClusterResourcesVpcConfig
-    , (Just . ("RoleArn",) . toJSON) _eKSClusterRoleArn
-    , fmap (("Version",) . toJSON) _eKSClusterVersion
-    ]
+instance ToResourceProperties EKSCluster where
+  toResourceProperties EKSCluster{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EKS::Cluster"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Name",) . toJSON) _eKSClusterName
+        , (Just . ("ResourcesVpcConfig",) . toJSON) _eKSClusterResourcesVpcConfig
+        , (Just . ("RoleArn",) . toJSON) _eKSClusterRoleArn
+        , fmap (("Version",) . toJSON) _eKSClusterVersion
+        ]
+    }
 
 -- | Constructor for 'EKSCluster' containing required fields as arguments.
 eksCluster
diff --git a/library-gen/Stratosphere/Resources/EMRCluster.hs b/library-gen/Stratosphere/Resources/EMRCluster.hs
--- a/library-gen/Stratosphere/Resources/EMRCluster.hs
+++ b/library-gen/Stratosphere/Resources/EMRCluster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html
@@ -40,30 +41,33 @@
   , _eMRClusterVisibleToAllUsers :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
-instance ToJSON EMRCluster where
-  toJSON EMRCluster{..} =
-    object $
-    catMaybes
-    [ fmap (("AdditionalInfo",) . toJSON) _eMRClusterAdditionalInfo
-    , fmap (("Applications",) . toJSON) _eMRClusterApplications
-    , fmap (("AutoScalingRole",) . toJSON) _eMRClusterAutoScalingRole
-    , fmap (("BootstrapActions",) . toJSON) _eMRClusterBootstrapActions
-    , fmap (("Configurations",) . toJSON) _eMRClusterConfigurations
-    , fmap (("CustomAmiId",) . toJSON) _eMRClusterCustomAmiId
-    , fmap (("EbsRootVolumeSize",) . toJSON . fmap Integer') _eMRClusterEbsRootVolumeSize
-    , (Just . ("Instances",) . toJSON) _eMRClusterInstances
-    , (Just . ("JobFlowRole",) . toJSON) _eMRClusterJobFlowRole
-    , fmap (("KerberosAttributes",) . toJSON) _eMRClusterKerberosAttributes
-    , fmap (("LogUri",) . toJSON) _eMRClusterLogUri
-    , (Just . ("Name",) . toJSON) _eMRClusterName
-    , fmap (("ReleaseLabel",) . toJSON) _eMRClusterReleaseLabel
-    , fmap (("ScaleDownBehavior",) . toJSON) _eMRClusterScaleDownBehavior
-    , fmap (("SecurityConfiguration",) . toJSON) _eMRClusterSecurityConfiguration
-    , (Just . ("ServiceRole",) . toJSON) _eMRClusterServiceRole
-    , fmap (("Steps",) . toJSON) _eMRClusterSteps
-    , fmap (("Tags",) . toJSON) _eMRClusterTags
-    , fmap (("VisibleToAllUsers",) . toJSON . fmap Bool') _eMRClusterVisibleToAllUsers
-    ]
+instance ToResourceProperties EMRCluster where
+  toResourceProperties EMRCluster{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EMR::Cluster"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AdditionalInfo",) . toJSON) _eMRClusterAdditionalInfo
+        , fmap (("Applications",) . toJSON) _eMRClusterApplications
+        , fmap (("AutoScalingRole",) . toJSON) _eMRClusterAutoScalingRole
+        , fmap (("BootstrapActions",) . toJSON) _eMRClusterBootstrapActions
+        , fmap (("Configurations",) . toJSON) _eMRClusterConfigurations
+        , fmap (("CustomAmiId",) . toJSON) _eMRClusterCustomAmiId
+        , fmap (("EbsRootVolumeSize",) . toJSON . fmap Integer') _eMRClusterEbsRootVolumeSize
+        , (Just . ("Instances",) . toJSON) _eMRClusterInstances
+        , (Just . ("JobFlowRole",) . toJSON) _eMRClusterJobFlowRole
+        , fmap (("KerberosAttributes",) . toJSON) _eMRClusterKerberosAttributes
+        , fmap (("LogUri",) . toJSON) _eMRClusterLogUri
+        , (Just . ("Name",) . toJSON) _eMRClusterName
+        , fmap (("ReleaseLabel",) . toJSON) _eMRClusterReleaseLabel
+        , fmap (("ScaleDownBehavior",) . toJSON) _eMRClusterScaleDownBehavior
+        , fmap (("SecurityConfiguration",) . toJSON) _eMRClusterSecurityConfiguration
+        , (Just . ("ServiceRole",) . toJSON) _eMRClusterServiceRole
+        , fmap (("Steps",) . toJSON) _eMRClusterSteps
+        , fmap (("Tags",) . toJSON) _eMRClusterTags
+        , fmap (("VisibleToAllUsers",) . toJSON . fmap Bool') _eMRClusterVisibleToAllUsers
+        ]
+    }
 
 -- | Constructor for 'EMRCluster' containing required fields as arguments.
 emrCluster
diff --git a/library-gen/Stratosphere/Resources/EMRInstanceFleetConfig.hs b/library-gen/Stratosphere/Resources/EMRInstanceFleetConfig.hs
--- a/library-gen/Stratosphere/Resources/EMRInstanceFleetConfig.hs
+++ b/library-gen/Stratosphere/Resources/EMRInstanceFleetConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-instancefleetconfig.html
@@ -23,18 +24,21 @@
   , _eMRInstanceFleetConfigTargetSpotCapacity :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
-instance ToJSON EMRInstanceFleetConfig where
-  toJSON EMRInstanceFleetConfig{..} =
-    object $
-    catMaybes
-    [ (Just . ("ClusterId",) . toJSON) _eMRInstanceFleetConfigClusterId
-    , (Just . ("InstanceFleetType",) . toJSON) _eMRInstanceFleetConfigInstanceFleetType
-    , fmap (("InstanceTypeConfigs",) . toJSON) _eMRInstanceFleetConfigInstanceTypeConfigs
-    , fmap (("LaunchSpecifications",) . toJSON) _eMRInstanceFleetConfigLaunchSpecifications
-    , fmap (("Name",) . toJSON) _eMRInstanceFleetConfigName
-    , fmap (("TargetOnDemandCapacity",) . toJSON . fmap Integer') _eMRInstanceFleetConfigTargetOnDemandCapacity
-    , fmap (("TargetSpotCapacity",) . toJSON . fmap Integer') _eMRInstanceFleetConfigTargetSpotCapacity
-    ]
+instance ToResourceProperties EMRInstanceFleetConfig where
+  toResourceProperties EMRInstanceFleetConfig{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EMR::InstanceFleetConfig"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ClusterId",) . toJSON) _eMRInstanceFleetConfigClusterId
+        , (Just . ("InstanceFleetType",) . toJSON) _eMRInstanceFleetConfigInstanceFleetType
+        , fmap (("InstanceTypeConfigs",) . toJSON) _eMRInstanceFleetConfigInstanceTypeConfigs
+        , fmap (("LaunchSpecifications",) . toJSON) _eMRInstanceFleetConfigLaunchSpecifications
+        , fmap (("Name",) . toJSON) _eMRInstanceFleetConfigName
+        , fmap (("TargetOnDemandCapacity",) . toJSON . fmap Integer') _eMRInstanceFleetConfigTargetOnDemandCapacity
+        , fmap (("TargetSpotCapacity",) . toJSON . fmap Integer') _eMRInstanceFleetConfigTargetSpotCapacity
+        ]
+    }
 
 -- | Constructor for 'EMRInstanceFleetConfig' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EMRInstanceGroupConfig.hs b/library-gen/Stratosphere/Resources/EMRInstanceGroupConfig.hs
--- a/library-gen/Stratosphere/Resources/EMRInstanceGroupConfig.hs
+++ b/library-gen/Stratosphere/Resources/EMRInstanceGroupConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html
@@ -27,21 +28,24 @@
   , _eMRInstanceGroupConfigName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON EMRInstanceGroupConfig where
-  toJSON EMRInstanceGroupConfig{..} =
-    object $
-    catMaybes
-    [ fmap (("AutoScalingPolicy",) . toJSON) _eMRInstanceGroupConfigAutoScalingPolicy
-    , fmap (("BidPrice",) . toJSON) _eMRInstanceGroupConfigBidPrice
-    , fmap (("Configurations",) . toJSON) _eMRInstanceGroupConfigConfigurations
-    , fmap (("EbsConfiguration",) . toJSON) _eMRInstanceGroupConfigEbsConfiguration
-    , (Just . ("InstanceCount",) . toJSON . fmap Integer') _eMRInstanceGroupConfigInstanceCount
-    , (Just . ("InstanceRole",) . toJSON) _eMRInstanceGroupConfigInstanceRole
-    , (Just . ("InstanceType",) . toJSON) _eMRInstanceGroupConfigInstanceType
-    , (Just . ("JobFlowId",) . toJSON) _eMRInstanceGroupConfigJobFlowId
-    , fmap (("Market",) . toJSON) _eMRInstanceGroupConfigMarket
-    , fmap (("Name",) . toJSON) _eMRInstanceGroupConfigName
-    ]
+instance ToResourceProperties EMRInstanceGroupConfig where
+  toResourceProperties EMRInstanceGroupConfig{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EMR::InstanceGroupConfig"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AutoScalingPolicy",) . toJSON) _eMRInstanceGroupConfigAutoScalingPolicy
+        , fmap (("BidPrice",) . toJSON) _eMRInstanceGroupConfigBidPrice
+        , fmap (("Configurations",) . toJSON) _eMRInstanceGroupConfigConfigurations
+        , fmap (("EbsConfiguration",) . toJSON) _eMRInstanceGroupConfigEbsConfiguration
+        , (Just . ("InstanceCount",) . toJSON . fmap Integer') _eMRInstanceGroupConfigInstanceCount
+        , (Just . ("InstanceRole",) . toJSON) _eMRInstanceGroupConfigInstanceRole
+        , (Just . ("InstanceType",) . toJSON) _eMRInstanceGroupConfigInstanceType
+        , (Just . ("JobFlowId",) . toJSON) _eMRInstanceGroupConfigJobFlowId
+        , fmap (("Market",) . toJSON) _eMRInstanceGroupConfigMarket
+        , fmap (("Name",) . toJSON) _eMRInstanceGroupConfigName
+        ]
+    }
 
 -- | Constructor for 'EMRInstanceGroupConfig' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EMRSecurityConfiguration.hs b/library-gen/Stratosphere/Resources/EMRSecurityConfiguration.hs
--- a/library-gen/Stratosphere/Resources/EMRSecurityConfiguration.hs
+++ b/library-gen/Stratosphere/Resources/EMRSecurityConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-securityconfiguration.html
@@ -17,13 +18,16 @@
   , _eMRSecurityConfigurationSecurityConfiguration :: Object
   } deriving (Show, Eq)
 
-instance ToJSON EMRSecurityConfiguration where
-  toJSON EMRSecurityConfiguration{..} =
-    object $
-    catMaybes
-    [ fmap (("Name",) . toJSON) _eMRSecurityConfigurationName
-    , (Just . ("SecurityConfiguration",) . toJSON) _eMRSecurityConfigurationSecurityConfiguration
-    ]
+instance ToResourceProperties EMRSecurityConfiguration where
+  toResourceProperties EMRSecurityConfiguration{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EMR::SecurityConfiguration"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Name",) . toJSON) _eMRSecurityConfigurationName
+        , (Just . ("SecurityConfiguration",) . toJSON) _eMRSecurityConfigurationSecurityConfiguration
+        ]
+    }
 
 -- | Constructor for 'EMRSecurityConfiguration' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EMRStep.hs b/library-gen/Stratosphere/Resources/EMRStep.hs
--- a/library-gen/Stratosphere/Resources/EMRStep.hs
+++ b/library-gen/Stratosphere/Resources/EMRStep.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-step.html
@@ -19,15 +20,18 @@
   , _eMRStepName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EMRStep where
-  toJSON EMRStep{..} =
-    object $
-    catMaybes
-    [ (Just . ("ActionOnFailure",) . toJSON) _eMRStepActionOnFailure
-    , (Just . ("HadoopJarStep",) . toJSON) _eMRStepHadoopJarStep
-    , (Just . ("JobFlowId",) . toJSON) _eMRStepJobFlowId
-    , (Just . ("Name",) . toJSON) _eMRStepName
-    ]
+instance ToResourceProperties EMRStep where
+  toResourceProperties EMRStep{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EMR::Step"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ActionOnFailure",) . toJSON) _eMRStepActionOnFailure
+        , (Just . ("HadoopJarStep",) . toJSON) _eMRStepHadoopJarStep
+        , (Just . ("JobFlowId",) . toJSON) _eMRStepJobFlowId
+        , (Just . ("Name",) . toJSON) _eMRStepName
+        ]
+    }
 
 -- | Constructor for 'EMRStep' containing required fields as arguments.
 emrStep
diff --git a/library-gen/Stratosphere/Resources/ElastiCacheCacheCluster.hs b/library-gen/Stratosphere/Resources/ElastiCacheCacheCluster.hs
--- a/library-gen/Stratosphere/Resources/ElastiCacheCacheCluster.hs
+++ b/library-gen/Stratosphere/Resources/ElastiCacheCacheCluster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html
@@ -36,32 +37,35 @@
   , _elastiCacheCacheClusterVpcSecurityGroupIds :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
-instance ToJSON ElastiCacheCacheCluster where
-  toJSON ElastiCacheCacheCluster{..} =
-    object $
-    catMaybes
-    [ fmap (("AZMode",) . toJSON) _elastiCacheCacheClusterAZMode
-    , fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _elastiCacheCacheClusterAutoMinorVersionUpgrade
-    , (Just . ("CacheNodeType",) . toJSON) _elastiCacheCacheClusterCacheNodeType
-    , fmap (("CacheParameterGroupName",) . toJSON) _elastiCacheCacheClusterCacheParameterGroupName
-    , fmap (("CacheSecurityGroupNames",) . toJSON) _elastiCacheCacheClusterCacheSecurityGroupNames
-    , fmap (("CacheSubnetGroupName",) . toJSON) _elastiCacheCacheClusterCacheSubnetGroupName
-    , fmap (("ClusterName",) . toJSON) _elastiCacheCacheClusterClusterName
-    , (Just . ("Engine",) . toJSON) _elastiCacheCacheClusterEngine
-    , fmap (("EngineVersion",) . toJSON) _elastiCacheCacheClusterEngineVersion
-    , fmap (("NotificationTopicArn",) . toJSON) _elastiCacheCacheClusterNotificationTopicArn
-    , (Just . ("NumCacheNodes",) . toJSON . fmap Integer') _elastiCacheCacheClusterNumCacheNodes
-    , fmap (("Port",) . toJSON . fmap Integer') _elastiCacheCacheClusterPort
-    , fmap (("PreferredAvailabilityZone",) . toJSON) _elastiCacheCacheClusterPreferredAvailabilityZone
-    , fmap (("PreferredAvailabilityZones",) . toJSON) _elastiCacheCacheClusterPreferredAvailabilityZones
-    , fmap (("PreferredMaintenanceWindow",) . toJSON) _elastiCacheCacheClusterPreferredMaintenanceWindow
-    , fmap (("SnapshotArns",) . toJSON) _elastiCacheCacheClusterSnapshotArns
-    , fmap (("SnapshotName",) . toJSON) _elastiCacheCacheClusterSnapshotName
-    , fmap (("SnapshotRetentionLimit",) . toJSON . fmap Integer') _elastiCacheCacheClusterSnapshotRetentionLimit
-    , fmap (("SnapshotWindow",) . toJSON) _elastiCacheCacheClusterSnapshotWindow
-    , fmap (("Tags",) . toJSON) _elastiCacheCacheClusterTags
-    , fmap (("VpcSecurityGroupIds",) . toJSON) _elastiCacheCacheClusterVpcSecurityGroupIds
-    ]
+instance ToResourceProperties ElastiCacheCacheCluster where
+  toResourceProperties ElastiCacheCacheCluster{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElastiCache::CacheCluster"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AZMode",) . toJSON) _elastiCacheCacheClusterAZMode
+        , fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _elastiCacheCacheClusterAutoMinorVersionUpgrade
+        , (Just . ("CacheNodeType",) . toJSON) _elastiCacheCacheClusterCacheNodeType
+        , fmap (("CacheParameterGroupName",) . toJSON) _elastiCacheCacheClusterCacheParameterGroupName
+        , fmap (("CacheSecurityGroupNames",) . toJSON) _elastiCacheCacheClusterCacheSecurityGroupNames
+        , fmap (("CacheSubnetGroupName",) . toJSON) _elastiCacheCacheClusterCacheSubnetGroupName
+        , fmap (("ClusterName",) . toJSON) _elastiCacheCacheClusterClusterName
+        , (Just . ("Engine",) . toJSON) _elastiCacheCacheClusterEngine
+        , fmap (("EngineVersion",) . toJSON) _elastiCacheCacheClusterEngineVersion
+        , fmap (("NotificationTopicArn",) . toJSON) _elastiCacheCacheClusterNotificationTopicArn
+        , (Just . ("NumCacheNodes",) . toJSON . fmap Integer') _elastiCacheCacheClusterNumCacheNodes
+        , fmap (("Port",) . toJSON . fmap Integer') _elastiCacheCacheClusterPort
+        , fmap (("PreferredAvailabilityZone",) . toJSON) _elastiCacheCacheClusterPreferredAvailabilityZone
+        , fmap (("PreferredAvailabilityZones",) . toJSON) _elastiCacheCacheClusterPreferredAvailabilityZones
+        , fmap (("PreferredMaintenanceWindow",) . toJSON) _elastiCacheCacheClusterPreferredMaintenanceWindow
+        , fmap (("SnapshotArns",) . toJSON) _elastiCacheCacheClusterSnapshotArns
+        , fmap (("SnapshotName",) . toJSON) _elastiCacheCacheClusterSnapshotName
+        , fmap (("SnapshotRetentionLimit",) . toJSON . fmap Integer') _elastiCacheCacheClusterSnapshotRetentionLimit
+        , fmap (("SnapshotWindow",) . toJSON) _elastiCacheCacheClusterSnapshotWindow
+        , fmap (("Tags",) . toJSON) _elastiCacheCacheClusterTags
+        , fmap (("VpcSecurityGroupIds",) . toJSON) _elastiCacheCacheClusterVpcSecurityGroupIds
+        ]
+    }
 
 -- | Constructor for 'ElastiCacheCacheCluster' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ElastiCacheParameterGroup.hs b/library-gen/Stratosphere/Resources/ElastiCacheParameterGroup.hs
--- a/library-gen/Stratosphere/Resources/ElastiCacheParameterGroup.hs
+++ b/library-gen/Stratosphere/Resources/ElastiCacheParameterGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-parameter-group.html
@@ -18,14 +19,17 @@
   , _elastiCacheParameterGroupProperties :: Maybe Object
   } deriving (Show, Eq)
 
-instance ToJSON ElastiCacheParameterGroup where
-  toJSON ElastiCacheParameterGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("CacheParameterGroupFamily",) . toJSON) _elastiCacheParameterGroupCacheParameterGroupFamily
-    , (Just . ("Description",) . toJSON) _elastiCacheParameterGroupDescription
-    , fmap (("Properties",) . toJSON) _elastiCacheParameterGroupProperties
-    ]
+instance ToResourceProperties ElastiCacheParameterGroup where
+  toResourceProperties ElastiCacheParameterGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElastiCache::ParameterGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("CacheParameterGroupFamily",) . toJSON) _elastiCacheParameterGroupCacheParameterGroupFamily
+        , (Just . ("Description",) . toJSON) _elastiCacheParameterGroupDescription
+        , fmap (("Properties",) . toJSON) _elastiCacheParameterGroupProperties
+        ]
+    }
 
 -- | Constructor for 'ElastiCacheParameterGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ElastiCacheReplicationGroup.hs b/library-gen/Stratosphere/Resources/ElastiCacheReplicationGroup.hs
--- a/library-gen/Stratosphere/Resources/ElastiCacheReplicationGroup.hs
+++ b/library-gen/Stratosphere/Resources/ElastiCacheReplicationGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html
@@ -45,40 +46,43 @@
   , _elastiCacheReplicationGroupTransitEncryptionEnabled :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
-instance ToJSON ElastiCacheReplicationGroup where
-  toJSON ElastiCacheReplicationGroup{..} =
-    object $
-    catMaybes
-    [ fmap (("AtRestEncryptionEnabled",) . toJSON . fmap Bool') _elastiCacheReplicationGroupAtRestEncryptionEnabled
-    , fmap (("AuthToken",) . toJSON) _elastiCacheReplicationGroupAuthToken
-    , fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _elastiCacheReplicationGroupAutoMinorVersionUpgrade
-    , fmap (("AutomaticFailoverEnabled",) . toJSON . fmap Bool') _elastiCacheReplicationGroupAutomaticFailoverEnabled
-    , fmap (("CacheNodeType",) . toJSON) _elastiCacheReplicationGroupCacheNodeType
-    , fmap (("CacheParameterGroupName",) . toJSON) _elastiCacheReplicationGroupCacheParameterGroupName
-    , fmap (("CacheSecurityGroupNames",) . toJSON) _elastiCacheReplicationGroupCacheSecurityGroupNames
-    , fmap (("CacheSubnetGroupName",) . toJSON) _elastiCacheReplicationGroupCacheSubnetGroupName
-    , fmap (("Engine",) . toJSON) _elastiCacheReplicationGroupEngine
-    , fmap (("EngineVersion",) . toJSON) _elastiCacheReplicationGroupEngineVersion
-    , fmap (("NodeGroupConfiguration",) . toJSON) _elastiCacheReplicationGroupNodeGroupConfiguration
-    , fmap (("NotificationTopicArn",) . toJSON) _elastiCacheReplicationGroupNotificationTopicArn
-    , fmap (("NumCacheClusters",) . toJSON . fmap Integer') _elastiCacheReplicationGroupNumCacheClusters
-    , fmap (("NumNodeGroups",) . toJSON . fmap Integer') _elastiCacheReplicationGroupNumNodeGroups
-    , fmap (("Port",) . toJSON . fmap Integer') _elastiCacheReplicationGroupPort
-    , fmap (("PreferredCacheClusterAZs",) . toJSON) _elastiCacheReplicationGroupPreferredCacheClusterAZs
-    , fmap (("PreferredMaintenanceWindow",) . toJSON) _elastiCacheReplicationGroupPreferredMaintenanceWindow
-    , fmap (("PrimaryClusterId",) . toJSON) _elastiCacheReplicationGroupPrimaryClusterId
-    , fmap (("ReplicasPerNodeGroup",) . toJSON . fmap Integer') _elastiCacheReplicationGroupReplicasPerNodeGroup
-    , (Just . ("ReplicationGroupDescription",) . toJSON) _elastiCacheReplicationGroupReplicationGroupDescription
-    , fmap (("ReplicationGroupId",) . toJSON) _elastiCacheReplicationGroupReplicationGroupId
-    , fmap (("SecurityGroupIds",) . toJSON) _elastiCacheReplicationGroupSecurityGroupIds
-    , fmap (("SnapshotArns",) . toJSON) _elastiCacheReplicationGroupSnapshotArns
-    , fmap (("SnapshotName",) . toJSON) _elastiCacheReplicationGroupSnapshotName
-    , fmap (("SnapshotRetentionLimit",) . toJSON . fmap Integer') _elastiCacheReplicationGroupSnapshotRetentionLimit
-    , fmap (("SnapshotWindow",) . toJSON) _elastiCacheReplicationGroupSnapshotWindow
-    , fmap (("SnapshottingClusterId",) . toJSON) _elastiCacheReplicationGroupSnapshottingClusterId
-    , fmap (("Tags",) . toJSON) _elastiCacheReplicationGroupTags
-    , fmap (("TransitEncryptionEnabled",) . toJSON . fmap Bool') _elastiCacheReplicationGroupTransitEncryptionEnabled
-    ]
+instance ToResourceProperties ElastiCacheReplicationGroup where
+  toResourceProperties ElastiCacheReplicationGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElastiCache::ReplicationGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AtRestEncryptionEnabled",) . toJSON . fmap Bool') _elastiCacheReplicationGroupAtRestEncryptionEnabled
+        , fmap (("AuthToken",) . toJSON) _elastiCacheReplicationGroupAuthToken
+        , fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _elastiCacheReplicationGroupAutoMinorVersionUpgrade
+        , fmap (("AutomaticFailoverEnabled",) . toJSON . fmap Bool') _elastiCacheReplicationGroupAutomaticFailoverEnabled
+        , fmap (("CacheNodeType",) . toJSON) _elastiCacheReplicationGroupCacheNodeType
+        , fmap (("CacheParameterGroupName",) . toJSON) _elastiCacheReplicationGroupCacheParameterGroupName
+        , fmap (("CacheSecurityGroupNames",) . toJSON) _elastiCacheReplicationGroupCacheSecurityGroupNames
+        , fmap (("CacheSubnetGroupName",) . toJSON) _elastiCacheReplicationGroupCacheSubnetGroupName
+        , fmap (("Engine",) . toJSON) _elastiCacheReplicationGroupEngine
+        , fmap (("EngineVersion",) . toJSON) _elastiCacheReplicationGroupEngineVersion
+        , fmap (("NodeGroupConfiguration",) . toJSON) _elastiCacheReplicationGroupNodeGroupConfiguration
+        , fmap (("NotificationTopicArn",) . toJSON) _elastiCacheReplicationGroupNotificationTopicArn
+        , fmap (("NumCacheClusters",) . toJSON . fmap Integer') _elastiCacheReplicationGroupNumCacheClusters
+        , fmap (("NumNodeGroups",) . toJSON . fmap Integer') _elastiCacheReplicationGroupNumNodeGroups
+        , fmap (("Port",) . toJSON . fmap Integer') _elastiCacheReplicationGroupPort
+        , fmap (("PreferredCacheClusterAZs",) . toJSON) _elastiCacheReplicationGroupPreferredCacheClusterAZs
+        , fmap (("PreferredMaintenanceWindow",) . toJSON) _elastiCacheReplicationGroupPreferredMaintenanceWindow
+        , fmap (("PrimaryClusterId",) . toJSON) _elastiCacheReplicationGroupPrimaryClusterId
+        , fmap (("ReplicasPerNodeGroup",) . toJSON . fmap Integer') _elastiCacheReplicationGroupReplicasPerNodeGroup
+        , (Just . ("ReplicationGroupDescription",) . toJSON) _elastiCacheReplicationGroupReplicationGroupDescription
+        , fmap (("ReplicationGroupId",) . toJSON) _elastiCacheReplicationGroupReplicationGroupId
+        , fmap (("SecurityGroupIds",) . toJSON) _elastiCacheReplicationGroupSecurityGroupIds
+        , fmap (("SnapshotArns",) . toJSON) _elastiCacheReplicationGroupSnapshotArns
+        , fmap (("SnapshotName",) . toJSON) _elastiCacheReplicationGroupSnapshotName
+        , fmap (("SnapshotRetentionLimit",) . toJSON . fmap Integer') _elastiCacheReplicationGroupSnapshotRetentionLimit
+        , fmap (("SnapshotWindow",) . toJSON) _elastiCacheReplicationGroupSnapshotWindow
+        , fmap (("SnapshottingClusterId",) . toJSON) _elastiCacheReplicationGroupSnapshottingClusterId
+        , fmap (("Tags",) . toJSON) _elastiCacheReplicationGroupTags
+        , fmap (("TransitEncryptionEnabled",) . toJSON . fmap Bool') _elastiCacheReplicationGroupTransitEncryptionEnabled
+        ]
+    }
 
 -- | Constructor for 'ElastiCacheReplicationGroup' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroup.hs b/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroup.hs
--- a/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroup.hs
+++ b/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group.html
@@ -16,12 +17,15 @@
   { _elastiCacheSecurityGroupDescription :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ElastiCacheSecurityGroup where
-  toJSON ElastiCacheSecurityGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("Description",) . toJSON) _elastiCacheSecurityGroupDescription
-    ]
+instance ToResourceProperties ElastiCacheSecurityGroup where
+  toResourceProperties ElastiCacheSecurityGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElastiCache::SecurityGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Description",) . toJSON) _elastiCacheSecurityGroupDescription
+        ]
+    }
 
 -- | Constructor for 'ElastiCacheSecurityGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroupIngress.hs b/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroupIngress.hs
--- a/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroupIngress.hs
+++ b/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroupIngress.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group-ingress.html
@@ -18,14 +19,17 @@
   , _elastiCacheSecurityGroupIngressEC2SecurityGroupOwnerId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ElastiCacheSecurityGroupIngress where
-  toJSON ElastiCacheSecurityGroupIngress{..} =
-    object $
-    catMaybes
-    [ (Just . ("CacheSecurityGroupName",) . toJSON) _elastiCacheSecurityGroupIngressCacheSecurityGroupName
-    , (Just . ("EC2SecurityGroupName",) . toJSON) _elastiCacheSecurityGroupIngressEC2SecurityGroupName
-    , fmap (("EC2SecurityGroupOwnerId",) . toJSON) _elastiCacheSecurityGroupIngressEC2SecurityGroupOwnerId
-    ]
+instance ToResourceProperties ElastiCacheSecurityGroupIngress where
+  toResourceProperties ElastiCacheSecurityGroupIngress{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElastiCache::SecurityGroupIngress"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("CacheSecurityGroupName",) . toJSON) _elastiCacheSecurityGroupIngressCacheSecurityGroupName
+        , (Just . ("EC2SecurityGroupName",) . toJSON) _elastiCacheSecurityGroupIngressEC2SecurityGroupName
+        , fmap (("EC2SecurityGroupOwnerId",) . toJSON) _elastiCacheSecurityGroupIngressEC2SecurityGroupOwnerId
+        ]
+    }
 
 -- | Constructor for 'ElastiCacheSecurityGroupIngress' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ElastiCacheSubnetGroup.hs b/library-gen/Stratosphere/Resources/ElastiCacheSubnetGroup.hs
--- a/library-gen/Stratosphere/Resources/ElastiCacheSubnetGroup.hs
+++ b/library-gen/Stratosphere/Resources/ElastiCacheSubnetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-subnetgroup.html
@@ -18,14 +19,17 @@
   , _elastiCacheSubnetGroupSubnetIds :: ValList Text
   } deriving (Show, Eq)
 
-instance ToJSON ElastiCacheSubnetGroup where
-  toJSON ElastiCacheSubnetGroup{..} =
-    object $
-    catMaybes
-    [ fmap (("CacheSubnetGroupName",) . toJSON) _elastiCacheSubnetGroupCacheSubnetGroupName
-    , (Just . ("Description",) . toJSON) _elastiCacheSubnetGroupDescription
-    , (Just . ("SubnetIds",) . toJSON) _elastiCacheSubnetGroupSubnetIds
-    ]
+instance ToResourceProperties ElastiCacheSubnetGroup where
+  toResourceProperties ElastiCacheSubnetGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElastiCache::SubnetGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CacheSubnetGroupName",) . toJSON) _elastiCacheSubnetGroupCacheSubnetGroupName
+        , (Just . ("Description",) . toJSON) _elastiCacheSubnetGroupDescription
+        , (Just . ("SubnetIds",) . toJSON) _elastiCacheSubnetGroupSubnetIds
+        ]
+    }
 
 -- | Constructor for 'ElastiCacheSubnetGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ElasticBeanstalkApplication.hs b/library-gen/Stratosphere/Resources/ElasticBeanstalkApplication.hs
--- a/library-gen/Stratosphere/Resources/ElasticBeanstalkApplication.hs
+++ b/library-gen/Stratosphere/Resources/ElasticBeanstalkApplication.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk.html
@@ -18,14 +19,17 @@
   , _elasticBeanstalkApplicationResourceLifecycleConfig :: Maybe ElasticBeanstalkApplicationApplicationResourceLifecycleConfig
   } deriving (Show, Eq)
 
-instance ToJSON ElasticBeanstalkApplication where
-  toJSON ElasticBeanstalkApplication{..} =
-    object $
-    catMaybes
-    [ fmap (("ApplicationName",) . toJSON) _elasticBeanstalkApplicationApplicationName
-    , fmap (("Description",) . toJSON) _elasticBeanstalkApplicationDescription
-    , fmap (("ResourceLifecycleConfig",) . toJSON) _elasticBeanstalkApplicationResourceLifecycleConfig
-    ]
+instance ToResourceProperties ElasticBeanstalkApplication where
+  toResourceProperties ElasticBeanstalkApplication{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElasticBeanstalk::Application"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ApplicationName",) . toJSON) _elasticBeanstalkApplicationApplicationName
+        , fmap (("Description",) . toJSON) _elasticBeanstalkApplicationDescription
+        , fmap (("ResourceLifecycleConfig",) . toJSON) _elasticBeanstalkApplicationResourceLifecycleConfig
+        ]
+    }
 
 -- | Constructor for 'ElasticBeanstalkApplication' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/ElasticBeanstalkApplicationVersion.hs b/library-gen/Stratosphere/Resources/ElasticBeanstalkApplicationVersion.hs
--- a/library-gen/Stratosphere/Resources/ElasticBeanstalkApplicationVersion.hs
+++ b/library-gen/Stratosphere/Resources/ElasticBeanstalkApplicationVersion.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-version.html
@@ -18,14 +19,17 @@
   , _elasticBeanstalkApplicationVersionSourceBundle :: ElasticBeanstalkApplicationVersionSourceBundle
   } deriving (Show, Eq)
 
-instance ToJSON ElasticBeanstalkApplicationVersion where
-  toJSON ElasticBeanstalkApplicationVersion{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApplicationName",) . toJSON) _elasticBeanstalkApplicationVersionApplicationName
-    , fmap (("Description",) . toJSON) _elasticBeanstalkApplicationVersionDescription
-    , (Just . ("SourceBundle",) . toJSON) _elasticBeanstalkApplicationVersionSourceBundle
-    ]
+instance ToResourceProperties ElasticBeanstalkApplicationVersion where
+  toResourceProperties ElasticBeanstalkApplicationVersion{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElasticBeanstalk::ApplicationVersion"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationName",) . toJSON) _elasticBeanstalkApplicationVersionApplicationName
+        , fmap (("Description",) . toJSON) _elasticBeanstalkApplicationVersionDescription
+        , (Just . ("SourceBundle",) . toJSON) _elasticBeanstalkApplicationVersionSourceBundle
+        ]
+    }
 
 -- | Constructor for 'ElasticBeanstalkApplicationVersion' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ElasticBeanstalkConfigurationTemplate.hs b/library-gen/Stratosphere/Resources/ElasticBeanstalkConfigurationTemplate.hs
--- a/library-gen/Stratosphere/Resources/ElasticBeanstalkConfigurationTemplate.hs
+++ b/library-gen/Stratosphere/Resources/ElasticBeanstalkConfigurationTemplate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticbeanstalk-configurationtemplate.html
@@ -24,18 +25,21 @@
   , _elasticBeanstalkConfigurationTemplateSourceConfiguration :: Maybe ElasticBeanstalkConfigurationTemplateSourceConfiguration
   } deriving (Show, Eq)
 
-instance ToJSON ElasticBeanstalkConfigurationTemplate where
-  toJSON ElasticBeanstalkConfigurationTemplate{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApplicationName",) . toJSON) _elasticBeanstalkConfigurationTemplateApplicationName
-    , fmap (("Description",) . toJSON) _elasticBeanstalkConfigurationTemplateDescription
-    , fmap (("EnvironmentId",) . toJSON) _elasticBeanstalkConfigurationTemplateEnvironmentId
-    , fmap (("OptionSettings",) . toJSON) _elasticBeanstalkConfigurationTemplateOptionSettings
-    , fmap (("PlatformArn",) . toJSON) _elasticBeanstalkConfigurationTemplatePlatformArn
-    , fmap (("SolutionStackName",) . toJSON) _elasticBeanstalkConfigurationTemplateSolutionStackName
-    , fmap (("SourceConfiguration",) . toJSON) _elasticBeanstalkConfigurationTemplateSourceConfiguration
-    ]
+instance ToResourceProperties ElasticBeanstalkConfigurationTemplate where
+  toResourceProperties ElasticBeanstalkConfigurationTemplate{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElasticBeanstalk::ConfigurationTemplate"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationName",) . toJSON) _elasticBeanstalkConfigurationTemplateApplicationName
+        , fmap (("Description",) . toJSON) _elasticBeanstalkConfigurationTemplateDescription
+        , fmap (("EnvironmentId",) . toJSON) _elasticBeanstalkConfigurationTemplateEnvironmentId
+        , fmap (("OptionSettings",) . toJSON) _elasticBeanstalkConfigurationTemplateOptionSettings
+        , fmap (("PlatformArn",) . toJSON) _elasticBeanstalkConfigurationTemplatePlatformArn
+        , fmap (("SolutionStackName",) . toJSON) _elasticBeanstalkConfigurationTemplateSolutionStackName
+        , fmap (("SourceConfiguration",) . toJSON) _elasticBeanstalkConfigurationTemplateSourceConfiguration
+        ]
+    }
 
 -- | Constructor for 'ElasticBeanstalkConfigurationTemplate' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ElasticBeanstalkEnvironment.hs b/library-gen/Stratosphere/Resources/ElasticBeanstalkEnvironment.hs
--- a/library-gen/Stratosphere/Resources/ElasticBeanstalkEnvironment.hs
+++ b/library-gen/Stratosphere/Resources/ElasticBeanstalkEnvironment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html
@@ -28,22 +29,25 @@
   , _elasticBeanstalkEnvironmentVersionLabel :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ElasticBeanstalkEnvironment where
-  toJSON ElasticBeanstalkEnvironment{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApplicationName",) . toJSON) _elasticBeanstalkEnvironmentApplicationName
-    , fmap (("CNAMEPrefix",) . toJSON) _elasticBeanstalkEnvironmentCNAMEPrefix
-    , fmap (("Description",) . toJSON) _elasticBeanstalkEnvironmentDescription
-    , fmap (("EnvironmentName",) . toJSON) _elasticBeanstalkEnvironmentEnvironmentName
-    , fmap (("OptionSettings",) . toJSON) _elasticBeanstalkEnvironmentOptionSettings
-    , fmap (("PlatformArn",) . toJSON) _elasticBeanstalkEnvironmentPlatformArn
-    , fmap (("SolutionStackName",) . toJSON) _elasticBeanstalkEnvironmentSolutionStackName
-    , fmap (("Tags",) . toJSON) _elasticBeanstalkEnvironmentTags
-    , fmap (("TemplateName",) . toJSON) _elasticBeanstalkEnvironmentTemplateName
-    , fmap (("Tier",) . toJSON) _elasticBeanstalkEnvironmentTier
-    , fmap (("VersionLabel",) . toJSON) _elasticBeanstalkEnvironmentVersionLabel
-    ]
+instance ToResourceProperties ElasticBeanstalkEnvironment where
+  toResourceProperties ElasticBeanstalkEnvironment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElasticBeanstalk::Environment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationName",) . toJSON) _elasticBeanstalkEnvironmentApplicationName
+        , fmap (("CNAMEPrefix",) . toJSON) _elasticBeanstalkEnvironmentCNAMEPrefix
+        , fmap (("Description",) . toJSON) _elasticBeanstalkEnvironmentDescription
+        , fmap (("EnvironmentName",) . toJSON) _elasticBeanstalkEnvironmentEnvironmentName
+        , fmap (("OptionSettings",) . toJSON) _elasticBeanstalkEnvironmentOptionSettings
+        , fmap (("PlatformArn",) . toJSON) _elasticBeanstalkEnvironmentPlatformArn
+        , fmap (("SolutionStackName",) . toJSON) _elasticBeanstalkEnvironmentSolutionStackName
+        , fmap (("Tags",) . toJSON) _elasticBeanstalkEnvironmentTags
+        , fmap (("TemplateName",) . toJSON) _elasticBeanstalkEnvironmentTemplateName
+        , fmap (("Tier",) . toJSON) _elasticBeanstalkEnvironmentTier
+        , fmap (("VersionLabel",) . toJSON) _elasticBeanstalkEnvironmentVersionLabel
+        ]
+    }
 
 -- | Constructor for 'ElasticBeanstalkEnvironment' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/ElasticLoadBalancingLoadBalancer.hs b/library-gen/Stratosphere/Resources/ElasticLoadBalancingLoadBalancer.hs
--- a/library-gen/Stratosphere/Resources/ElasticLoadBalancingLoadBalancer.hs
+++ b/library-gen/Stratosphere/Resources/ElasticLoadBalancingLoadBalancer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html
@@ -39,27 +40,30 @@
   , _elasticLoadBalancingLoadBalancerTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON ElasticLoadBalancingLoadBalancer where
-  toJSON ElasticLoadBalancingLoadBalancer{..} =
-    object $
-    catMaybes
-    [ fmap (("AccessLoggingPolicy",) . toJSON) _elasticLoadBalancingLoadBalancerAccessLoggingPolicy
-    , fmap (("AppCookieStickinessPolicy",) . toJSON) _elasticLoadBalancingLoadBalancerAppCookieStickinessPolicy
-    , fmap (("AvailabilityZones",) . toJSON) _elasticLoadBalancingLoadBalancerAvailabilityZones
-    , fmap (("ConnectionDrainingPolicy",) . toJSON) _elasticLoadBalancingLoadBalancerConnectionDrainingPolicy
-    , fmap (("ConnectionSettings",) . toJSON) _elasticLoadBalancingLoadBalancerConnectionSettings
-    , fmap (("CrossZone",) . toJSON . fmap Bool') _elasticLoadBalancingLoadBalancerCrossZone
-    , fmap (("HealthCheck",) . toJSON) _elasticLoadBalancingLoadBalancerHealthCheck
-    , fmap (("Instances",) . toJSON) _elasticLoadBalancingLoadBalancerInstances
-    , fmap (("LBCookieStickinessPolicy",) . toJSON) _elasticLoadBalancingLoadBalancerLBCookieStickinessPolicy
-    , (Just . ("Listeners",) . toJSON) _elasticLoadBalancingLoadBalancerListeners
-    , fmap (("LoadBalancerName",) . toJSON) _elasticLoadBalancingLoadBalancerLoadBalancerName
-    , fmap (("Policies",) . toJSON) _elasticLoadBalancingLoadBalancerPolicies
-    , fmap (("Scheme",) . toJSON) _elasticLoadBalancingLoadBalancerScheme
-    , fmap (("SecurityGroups",) . toJSON) _elasticLoadBalancingLoadBalancerSecurityGroups
-    , fmap (("Subnets",) . toJSON) _elasticLoadBalancingLoadBalancerSubnets
-    , fmap (("Tags",) . toJSON) _elasticLoadBalancingLoadBalancerTags
-    ]
+instance ToResourceProperties ElasticLoadBalancingLoadBalancer where
+  toResourceProperties ElasticLoadBalancingLoadBalancer{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElasticLoadBalancing::LoadBalancer"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AccessLoggingPolicy",) . toJSON) _elasticLoadBalancingLoadBalancerAccessLoggingPolicy
+        , fmap (("AppCookieStickinessPolicy",) . toJSON) _elasticLoadBalancingLoadBalancerAppCookieStickinessPolicy
+        , fmap (("AvailabilityZones",) . toJSON) _elasticLoadBalancingLoadBalancerAvailabilityZones
+        , fmap (("ConnectionDrainingPolicy",) . toJSON) _elasticLoadBalancingLoadBalancerConnectionDrainingPolicy
+        , fmap (("ConnectionSettings",) . toJSON) _elasticLoadBalancingLoadBalancerConnectionSettings
+        , fmap (("CrossZone",) . toJSON . fmap Bool') _elasticLoadBalancingLoadBalancerCrossZone
+        , fmap (("HealthCheck",) . toJSON) _elasticLoadBalancingLoadBalancerHealthCheck
+        , fmap (("Instances",) . toJSON) _elasticLoadBalancingLoadBalancerInstances
+        , fmap (("LBCookieStickinessPolicy",) . toJSON) _elasticLoadBalancingLoadBalancerLBCookieStickinessPolicy
+        , (Just . ("Listeners",) . toJSON) _elasticLoadBalancingLoadBalancerListeners
+        , fmap (("LoadBalancerName",) . toJSON) _elasticLoadBalancingLoadBalancerLoadBalancerName
+        , fmap (("Policies",) . toJSON) _elasticLoadBalancingLoadBalancerPolicies
+        , fmap (("Scheme",) . toJSON) _elasticLoadBalancingLoadBalancerScheme
+        , fmap (("SecurityGroups",) . toJSON) _elasticLoadBalancingLoadBalancerSecurityGroups
+        , fmap (("Subnets",) . toJSON) _elasticLoadBalancingLoadBalancerSubnets
+        , fmap (("Tags",) . toJSON) _elasticLoadBalancingLoadBalancerTags
+        ]
+    }
 
 -- | Constructor for 'ElasticLoadBalancingLoadBalancer' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2Listener.hs b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2Listener.hs
--- a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2Listener.hs
+++ b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2Listener.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html
@@ -22,17 +23,20 @@
   , _elasticLoadBalancingV2ListenerSslPolicy :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ElasticLoadBalancingV2Listener where
-  toJSON ElasticLoadBalancingV2Listener{..} =
-    object $
-    catMaybes
-    [ fmap (("Certificates",) . toJSON) _elasticLoadBalancingV2ListenerCertificates
-    , (Just . ("DefaultActions",) . toJSON) _elasticLoadBalancingV2ListenerDefaultActions
-    , (Just . ("LoadBalancerArn",) . toJSON) _elasticLoadBalancingV2ListenerLoadBalancerArn
-    , (Just . ("Port",) . toJSON . fmap Integer') _elasticLoadBalancingV2ListenerPort
-    , (Just . ("Protocol",) . toJSON) _elasticLoadBalancingV2ListenerProtocol
-    , fmap (("SslPolicy",) . toJSON) _elasticLoadBalancingV2ListenerSslPolicy
-    ]
+instance ToResourceProperties ElasticLoadBalancingV2Listener where
+  toResourceProperties ElasticLoadBalancingV2Listener{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElasticLoadBalancingV2::Listener"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Certificates",) . toJSON) _elasticLoadBalancingV2ListenerCertificates
+        , (Just . ("DefaultActions",) . toJSON) _elasticLoadBalancingV2ListenerDefaultActions
+        , (Just . ("LoadBalancerArn",) . toJSON) _elasticLoadBalancingV2ListenerLoadBalancerArn
+        , (Just . ("Port",) . toJSON . fmap Integer') _elasticLoadBalancingV2ListenerPort
+        , (Just . ("Protocol",) . toJSON) _elasticLoadBalancingV2ListenerProtocol
+        , fmap (("SslPolicy",) . toJSON) _elasticLoadBalancingV2ListenerSslPolicy
+        ]
+    }
 
 -- | Constructor for 'ElasticLoadBalancingV2Listener' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2ListenerCertificateResource.hs b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2ListenerCertificateResource.hs
--- a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2ListenerCertificateResource.hs
+++ b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2ListenerCertificateResource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenercertificate.html
@@ -19,13 +20,16 @@
   , _elasticLoadBalancingV2ListenerCertificateResourceListenerArn :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ElasticLoadBalancingV2ListenerCertificateResource where
-  toJSON ElasticLoadBalancingV2ListenerCertificateResource{..} =
-    object $
-    catMaybes
-    [ (Just . ("Certificates",) . toJSON) _elasticLoadBalancingV2ListenerCertificateResourceCertificates
-    , (Just . ("ListenerArn",) . toJSON) _elasticLoadBalancingV2ListenerCertificateResourceListenerArn
-    ]
+instance ToResourceProperties ElasticLoadBalancingV2ListenerCertificateResource where
+  toResourceProperties ElasticLoadBalancingV2ListenerCertificateResource{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElasticLoadBalancingV2::ListenerCertificate"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Certificates",) . toJSON) _elasticLoadBalancingV2ListenerCertificateResourceCertificates
+        , (Just . ("ListenerArn",) . toJSON) _elasticLoadBalancingV2ListenerCertificateResourceListenerArn
+        ]
+    }
 
 -- | Constructor for 'ElasticLoadBalancingV2ListenerCertificateResource'
 -- containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2ListenerRule.hs b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2ListenerRule.hs
--- a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2ListenerRule.hs
+++ b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2ListenerRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html
@@ -20,15 +21,18 @@
   , _elasticLoadBalancingV2ListenerRulePriority :: Val Integer
   } deriving (Show, Eq)
 
-instance ToJSON ElasticLoadBalancingV2ListenerRule where
-  toJSON ElasticLoadBalancingV2ListenerRule{..} =
-    object $
-    catMaybes
-    [ (Just . ("Actions",) . toJSON) _elasticLoadBalancingV2ListenerRuleActions
-    , (Just . ("Conditions",) . toJSON) _elasticLoadBalancingV2ListenerRuleConditions
-    , (Just . ("ListenerArn",) . toJSON) _elasticLoadBalancingV2ListenerRuleListenerArn
-    , (Just . ("Priority",) . toJSON . fmap Integer') _elasticLoadBalancingV2ListenerRulePriority
-    ]
+instance ToResourceProperties ElasticLoadBalancingV2ListenerRule where
+  toResourceProperties ElasticLoadBalancingV2ListenerRule{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElasticLoadBalancingV2::ListenerRule"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Actions",) . toJSON) _elasticLoadBalancingV2ListenerRuleActions
+        , (Just . ("Conditions",) . toJSON) _elasticLoadBalancingV2ListenerRuleConditions
+        , (Just . ("ListenerArn",) . toJSON) _elasticLoadBalancingV2ListenerRuleListenerArn
+        , (Just . ("Priority",) . toJSON . fmap Integer') _elasticLoadBalancingV2ListenerRulePriority
+        ]
+    }
 
 -- | Constructor for 'ElasticLoadBalancingV2ListenerRule' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2LoadBalancer.hs b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2LoadBalancer.hs
--- a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2LoadBalancer.hs
+++ b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2LoadBalancer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html
@@ -26,20 +27,23 @@
   , _elasticLoadBalancingV2LoadBalancerType :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ElasticLoadBalancingV2LoadBalancer where
-  toJSON ElasticLoadBalancingV2LoadBalancer{..} =
-    object $
-    catMaybes
-    [ fmap (("IpAddressType",) . toJSON) _elasticLoadBalancingV2LoadBalancerIpAddressType
-    , fmap (("LoadBalancerAttributes",) . toJSON) _elasticLoadBalancingV2LoadBalancerLoadBalancerAttributes
-    , fmap (("Name",) . toJSON) _elasticLoadBalancingV2LoadBalancerName
-    , fmap (("Scheme",) . toJSON) _elasticLoadBalancingV2LoadBalancerScheme
-    , fmap (("SecurityGroups",) . toJSON) _elasticLoadBalancingV2LoadBalancerSecurityGroups
-    , fmap (("SubnetMappings",) . toJSON) _elasticLoadBalancingV2LoadBalancerSubnetMappings
-    , fmap (("Subnets",) . toJSON) _elasticLoadBalancingV2LoadBalancerSubnets
-    , fmap (("Tags",) . toJSON) _elasticLoadBalancingV2LoadBalancerTags
-    , fmap (("Type",) . toJSON) _elasticLoadBalancingV2LoadBalancerType
-    ]
+instance ToResourceProperties ElasticLoadBalancingV2LoadBalancer where
+  toResourceProperties ElasticLoadBalancingV2LoadBalancer{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElasticLoadBalancingV2::LoadBalancer"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("IpAddressType",) . toJSON) _elasticLoadBalancingV2LoadBalancerIpAddressType
+        , fmap (("LoadBalancerAttributes",) . toJSON) _elasticLoadBalancingV2LoadBalancerLoadBalancerAttributes
+        , fmap (("Name",) . toJSON) _elasticLoadBalancingV2LoadBalancerName
+        , fmap (("Scheme",) . toJSON) _elasticLoadBalancingV2LoadBalancerScheme
+        , fmap (("SecurityGroups",) . toJSON) _elasticLoadBalancingV2LoadBalancerSecurityGroups
+        , fmap (("SubnetMappings",) . toJSON) _elasticLoadBalancingV2LoadBalancerSubnetMappings
+        , fmap (("Subnets",) . toJSON) _elasticLoadBalancingV2LoadBalancerSubnets
+        , fmap (("Tags",) . toJSON) _elasticLoadBalancingV2LoadBalancerTags
+        , fmap (("Type",) . toJSON) _elasticLoadBalancingV2LoadBalancerType
+        ]
+    }
 
 -- | Constructor for 'ElasticLoadBalancingV2LoadBalancer' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2TargetGroup.hs b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2TargetGroup.hs
--- a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2TargetGroup.hs
+++ b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2TargetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html
@@ -35,28 +36,31 @@
   , _elasticLoadBalancingV2TargetGroupVpcId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ElasticLoadBalancingV2TargetGroup where
-  toJSON ElasticLoadBalancingV2TargetGroup{..} =
-    object $
-    catMaybes
-    [ fmap (("HealthCheckEnabled",) . toJSON . fmap Bool') _elasticLoadBalancingV2TargetGroupHealthCheckEnabled
-    , fmap (("HealthCheckIntervalSeconds",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupHealthCheckIntervalSeconds
-    , fmap (("HealthCheckPath",) . toJSON) _elasticLoadBalancingV2TargetGroupHealthCheckPath
-    , fmap (("HealthCheckPort",) . toJSON) _elasticLoadBalancingV2TargetGroupHealthCheckPort
-    , fmap (("HealthCheckProtocol",) . toJSON) _elasticLoadBalancingV2TargetGroupHealthCheckProtocol
-    , fmap (("HealthCheckTimeoutSeconds",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupHealthCheckTimeoutSeconds
-    , fmap (("HealthyThresholdCount",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupHealthyThresholdCount
-    , fmap (("Matcher",) . toJSON) _elasticLoadBalancingV2TargetGroupMatcher
-    , fmap (("Name",) . toJSON) _elasticLoadBalancingV2TargetGroupName
-    , fmap (("Port",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupPort
-    , fmap (("Protocol",) . toJSON) _elasticLoadBalancingV2TargetGroupProtocol
-    , fmap (("Tags",) . toJSON) _elasticLoadBalancingV2TargetGroupTags
-    , fmap (("TargetGroupAttributes",) . toJSON) _elasticLoadBalancingV2TargetGroupTargetGroupAttributes
-    , fmap (("TargetType",) . toJSON) _elasticLoadBalancingV2TargetGroupTargetType
-    , fmap (("Targets",) . toJSON) _elasticLoadBalancingV2TargetGroupTargets
-    , fmap (("UnhealthyThresholdCount",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupUnhealthyThresholdCount
-    , fmap (("VpcId",) . toJSON) _elasticLoadBalancingV2TargetGroupVpcId
-    ]
+instance ToResourceProperties ElasticLoadBalancingV2TargetGroup where
+  toResourceProperties ElasticLoadBalancingV2TargetGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ElasticLoadBalancingV2::TargetGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("HealthCheckEnabled",) . toJSON . fmap Bool') _elasticLoadBalancingV2TargetGroupHealthCheckEnabled
+        , fmap (("HealthCheckIntervalSeconds",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupHealthCheckIntervalSeconds
+        , fmap (("HealthCheckPath",) . toJSON) _elasticLoadBalancingV2TargetGroupHealthCheckPath
+        , fmap (("HealthCheckPort",) . toJSON) _elasticLoadBalancingV2TargetGroupHealthCheckPort
+        , fmap (("HealthCheckProtocol",) . toJSON) _elasticLoadBalancingV2TargetGroupHealthCheckProtocol
+        , fmap (("HealthCheckTimeoutSeconds",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupHealthCheckTimeoutSeconds
+        , fmap (("HealthyThresholdCount",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupHealthyThresholdCount
+        , fmap (("Matcher",) . toJSON) _elasticLoadBalancingV2TargetGroupMatcher
+        , fmap (("Name",) . toJSON) _elasticLoadBalancingV2TargetGroupName
+        , fmap (("Port",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupPort
+        , fmap (("Protocol",) . toJSON) _elasticLoadBalancingV2TargetGroupProtocol
+        , fmap (("Tags",) . toJSON) _elasticLoadBalancingV2TargetGroupTags
+        , fmap (("TargetGroupAttributes",) . toJSON) _elasticLoadBalancingV2TargetGroupTargetGroupAttributes
+        , fmap (("TargetType",) . toJSON) _elasticLoadBalancingV2TargetGroupTargetType
+        , fmap (("Targets",) . toJSON) _elasticLoadBalancingV2TargetGroupTargets
+        , fmap (("UnhealthyThresholdCount",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupUnhealthyThresholdCount
+        , fmap (("VpcId",) . toJSON) _elasticLoadBalancingV2TargetGroupVpcId
+        ]
+    }
 
 -- | Constructor for 'ElasticLoadBalancingV2TargetGroup' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ElasticsearchDomain.hs b/library-gen/Stratosphere/Resources/ElasticsearchDomain.hs
--- a/library-gen/Stratosphere/Resources/ElasticsearchDomain.hs
+++ b/library-gen/Stratosphere/Resources/ElasticsearchDomain.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html
@@ -32,22 +33,25 @@
   , _elasticsearchDomainVPCOptions :: Maybe ElasticsearchDomainVPCOptions
   } deriving (Show, Eq)
 
-instance ToJSON ElasticsearchDomain where
-  toJSON ElasticsearchDomain{..} =
-    object $
-    catMaybes
-    [ fmap (("AccessPolicies",) . toJSON) _elasticsearchDomainAccessPolicies
-    , fmap (("AdvancedOptions",) . toJSON) _elasticsearchDomainAdvancedOptions
-    , fmap (("DomainName",) . toJSON) _elasticsearchDomainDomainName
-    , fmap (("EBSOptions",) . toJSON) _elasticsearchDomainEBSOptions
-    , fmap (("ElasticsearchClusterConfig",) . toJSON) _elasticsearchDomainElasticsearchClusterConfig
-    , fmap (("ElasticsearchVersion",) . toJSON) _elasticsearchDomainElasticsearchVersion
-    , fmap (("EncryptionAtRestOptions",) . toJSON) _elasticsearchDomainEncryptionAtRestOptions
-    , fmap (("NodeToNodeEncryptionOptions",) . toJSON) _elasticsearchDomainNodeToNodeEncryptionOptions
-    , fmap (("SnapshotOptions",) . toJSON) _elasticsearchDomainSnapshotOptions
-    , fmap (("Tags",) . toJSON) _elasticsearchDomainTags
-    , fmap (("VPCOptions",) . toJSON) _elasticsearchDomainVPCOptions
-    ]
+instance ToResourceProperties ElasticsearchDomain where
+  toResourceProperties ElasticsearchDomain{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Elasticsearch::Domain"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AccessPolicies",) . toJSON) _elasticsearchDomainAccessPolicies
+        , fmap (("AdvancedOptions",) . toJSON) _elasticsearchDomainAdvancedOptions
+        , fmap (("DomainName",) . toJSON) _elasticsearchDomainDomainName
+        , fmap (("EBSOptions",) . toJSON) _elasticsearchDomainEBSOptions
+        , fmap (("ElasticsearchClusterConfig",) . toJSON) _elasticsearchDomainElasticsearchClusterConfig
+        , fmap (("ElasticsearchVersion",) . toJSON) _elasticsearchDomainElasticsearchVersion
+        , fmap (("EncryptionAtRestOptions",) . toJSON) _elasticsearchDomainEncryptionAtRestOptions
+        , fmap (("NodeToNodeEncryptionOptions",) . toJSON) _elasticsearchDomainNodeToNodeEncryptionOptions
+        , fmap (("SnapshotOptions",) . toJSON) _elasticsearchDomainSnapshotOptions
+        , fmap (("Tags",) . toJSON) _elasticsearchDomainTags
+        , fmap (("VPCOptions",) . toJSON) _elasticsearchDomainVPCOptions
+        ]
+    }
 
 -- | Constructor for 'ElasticsearchDomain' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EventsEventBusPolicy.hs b/library-gen/Stratosphere/Resources/EventsEventBusPolicy.hs
--- a/library-gen/Stratosphere/Resources/EventsEventBusPolicy.hs
+++ b/library-gen/Stratosphere/Resources/EventsEventBusPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html
@@ -19,15 +20,18 @@
   , _eventsEventBusPolicyStatementId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON EventsEventBusPolicy where
-  toJSON EventsEventBusPolicy{..} =
-    object $
-    catMaybes
-    [ (Just . ("Action",) . toJSON) _eventsEventBusPolicyAction
-    , fmap (("Condition",) . toJSON) _eventsEventBusPolicyCondition
-    , (Just . ("Principal",) . toJSON) _eventsEventBusPolicyPrincipal
-    , (Just . ("StatementId",) . toJSON) _eventsEventBusPolicyStatementId
-    ]
+instance ToResourceProperties EventsEventBusPolicy where
+  toResourceProperties EventsEventBusPolicy{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Events::EventBusPolicy"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Action",) . toJSON) _eventsEventBusPolicyAction
+        , fmap (("Condition",) . toJSON) _eventsEventBusPolicyCondition
+        , (Just . ("Principal",) . toJSON) _eventsEventBusPolicyPrincipal
+        , (Just . ("StatementId",) . toJSON) _eventsEventBusPolicyStatementId
+        ]
+    }
 
 -- | Constructor for 'EventsEventBusPolicy' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/EventsRule.hs b/library-gen/Stratosphere/Resources/EventsRule.hs
--- a/library-gen/Stratosphere/Resources/EventsRule.hs
+++ b/library-gen/Stratosphere/Resources/EventsRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html
@@ -23,18 +24,21 @@
   , _eventsRuleTargets :: Maybe [EventsRuleTarget]
   } deriving (Show, Eq)
 
-instance ToJSON EventsRule where
-  toJSON EventsRule{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _eventsRuleDescription
-    , fmap (("EventPattern",) . toJSON) _eventsRuleEventPattern
-    , fmap (("Name",) . toJSON) _eventsRuleName
-    , fmap (("RoleArn",) . toJSON) _eventsRuleRoleArn
-    , fmap (("ScheduleExpression",) . toJSON) _eventsRuleScheduleExpression
-    , fmap (("State",) . toJSON) _eventsRuleState
-    , fmap (("Targets",) . toJSON) _eventsRuleTargets
-    ]
+instance ToResourceProperties EventsRule where
+  toResourceProperties EventsRule{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Events::Rule"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _eventsRuleDescription
+        , fmap (("EventPattern",) . toJSON) _eventsRuleEventPattern
+        , fmap (("Name",) . toJSON) _eventsRuleName
+        , fmap (("RoleArn",) . toJSON) _eventsRuleRoleArn
+        , fmap (("ScheduleExpression",) . toJSON) _eventsRuleScheduleExpression
+        , fmap (("State",) . toJSON) _eventsRuleState
+        , fmap (("Targets",) . toJSON) _eventsRuleTargets
+        ]
+    }
 
 -- | Constructor for 'EventsRule' containing required fields as arguments.
 eventsRule
diff --git a/library-gen/Stratosphere/Resources/FSxFileSystem.hs b/library-gen/Stratosphere/Resources/FSxFileSystem.hs
--- a/library-gen/Stratosphere/Resources/FSxFileSystem.hs
+++ b/library-gen/Stratosphere/Resources/FSxFileSystem.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html
@@ -26,20 +27,23 @@
   , _fSxFileSystemWindowsConfiguration :: Maybe FSxFileSystemWindowsConfiguration
   } deriving (Show, Eq)
 
-instance ToJSON FSxFileSystem where
-  toJSON FSxFileSystem{..} =
-    object $
-    catMaybes
-    [ fmap (("BackupId",) . toJSON) _fSxFileSystemBackupId
-    , fmap (("FileSystemType",) . toJSON) _fSxFileSystemFileSystemType
-    , fmap (("KmsKeyId",) . toJSON) _fSxFileSystemKmsKeyId
-    , fmap (("LustreConfiguration",) . toJSON) _fSxFileSystemLustreConfiguration
-    , fmap (("SecurityGroupIds",) . toJSON) _fSxFileSystemSecurityGroupIds
-    , fmap (("StorageCapacity",) . toJSON . fmap Integer') _fSxFileSystemStorageCapacity
-    , fmap (("SubnetIds",) . toJSON) _fSxFileSystemSubnetIds
-    , fmap (("Tags",) . toJSON) _fSxFileSystemTags
-    , fmap (("WindowsConfiguration",) . toJSON) _fSxFileSystemWindowsConfiguration
-    ]
+instance ToResourceProperties FSxFileSystem where
+  toResourceProperties FSxFileSystem{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::FSx::FileSystem"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("BackupId",) . toJSON) _fSxFileSystemBackupId
+        , fmap (("FileSystemType",) . toJSON) _fSxFileSystemFileSystemType
+        , fmap (("KmsKeyId",) . toJSON) _fSxFileSystemKmsKeyId
+        , fmap (("LustreConfiguration",) . toJSON) _fSxFileSystemLustreConfiguration
+        , fmap (("SecurityGroupIds",) . toJSON) _fSxFileSystemSecurityGroupIds
+        , fmap (("StorageCapacity",) . toJSON . fmap Integer') _fSxFileSystemStorageCapacity
+        , fmap (("SubnetIds",) . toJSON) _fSxFileSystemSubnetIds
+        , fmap (("Tags",) . toJSON) _fSxFileSystemTags
+        , fmap (("WindowsConfiguration",) . toJSON) _fSxFileSystemWindowsConfiguration
+        ]
+    }
 
 -- | Constructor for 'FSxFileSystem' containing required fields as arguments.
 fSxFileSystem
diff --git a/library-gen/Stratosphere/Resources/GameLiftAlias.hs b/library-gen/Stratosphere/Resources/GameLiftAlias.hs
--- a/library-gen/Stratosphere/Resources/GameLiftAlias.hs
+++ b/library-gen/Stratosphere/Resources/GameLiftAlias.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-alias.html
@@ -18,14 +19,17 @@
   , _gameLiftAliasRoutingStrategy :: GameLiftAliasRoutingStrategy
   } deriving (Show, Eq)
 
-instance ToJSON GameLiftAlias where
-  toJSON GameLiftAlias{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _gameLiftAliasDescription
-    , (Just . ("Name",) . toJSON) _gameLiftAliasName
-    , (Just . ("RoutingStrategy",) . toJSON) _gameLiftAliasRoutingStrategy
-    ]
+instance ToResourceProperties GameLiftAlias where
+  toResourceProperties GameLiftAlias{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::GameLift::Alias"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _gameLiftAliasDescription
+        , (Just . ("Name",) . toJSON) _gameLiftAliasName
+        , (Just . ("RoutingStrategy",) . toJSON) _gameLiftAliasRoutingStrategy
+        ]
+    }
 
 -- | Constructor for 'GameLiftAlias' containing required fields as arguments.
 gameLiftAlias
diff --git a/library-gen/Stratosphere/Resources/GameLiftBuild.hs b/library-gen/Stratosphere/Resources/GameLiftBuild.hs
--- a/library-gen/Stratosphere/Resources/GameLiftBuild.hs
+++ b/library-gen/Stratosphere/Resources/GameLiftBuild.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-build.html
@@ -18,14 +19,17 @@
   , _gameLiftBuildVersion :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON GameLiftBuild where
-  toJSON GameLiftBuild{..} =
-    object $
-    catMaybes
-    [ fmap (("Name",) . toJSON) _gameLiftBuildName
-    , fmap (("StorageLocation",) . toJSON) _gameLiftBuildStorageLocation
-    , fmap (("Version",) . toJSON) _gameLiftBuildVersion
-    ]
+instance ToResourceProperties GameLiftBuild where
+  toResourceProperties GameLiftBuild{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::GameLift::Build"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Name",) . toJSON) _gameLiftBuildName
+        , fmap (("StorageLocation",) . toJSON) _gameLiftBuildStorageLocation
+        , fmap (("Version",) . toJSON) _gameLiftBuildVersion
+        ]
+    }
 
 -- | Constructor for 'GameLiftBuild' containing required fields as arguments.
 gameLiftBuild
diff --git a/library-gen/Stratosphere/Resources/GameLiftFleet.hs b/library-gen/Stratosphere/Resources/GameLiftFleet.hs
--- a/library-gen/Stratosphere/Resources/GameLiftFleet.hs
+++ b/library-gen/Stratosphere/Resources/GameLiftFleet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html
@@ -26,22 +27,25 @@
   , _gameLiftFleetServerLaunchPath :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON GameLiftFleet where
-  toJSON GameLiftFleet{..} =
-    object $
-    catMaybes
-    [ (Just . ("BuildId",) . toJSON) _gameLiftFleetBuildId
-    , fmap (("Description",) . toJSON) _gameLiftFleetDescription
-    , (Just . ("DesiredEC2Instances",) . toJSON . fmap Integer') _gameLiftFleetDesiredEC2Instances
-    , fmap (("EC2InboundPermissions",) . toJSON) _gameLiftFleetEC2InboundPermissions
-    , (Just . ("EC2InstanceType",) . toJSON) _gameLiftFleetEC2InstanceType
-    , fmap (("LogPaths",) . toJSON) _gameLiftFleetLogPaths
-    , fmap (("MaxSize",) . toJSON . fmap Integer') _gameLiftFleetMaxSize
-    , fmap (("MinSize",) . toJSON . fmap Integer') _gameLiftFleetMinSize
-    , (Just . ("Name",) . toJSON) _gameLiftFleetName
-    , fmap (("ServerLaunchParameters",) . toJSON) _gameLiftFleetServerLaunchParameters
-    , (Just . ("ServerLaunchPath",) . toJSON) _gameLiftFleetServerLaunchPath
-    ]
+instance ToResourceProperties GameLiftFleet where
+  toResourceProperties GameLiftFleet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::GameLift::Fleet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("BuildId",) . toJSON) _gameLiftFleetBuildId
+        , fmap (("Description",) . toJSON) _gameLiftFleetDescription
+        , (Just . ("DesiredEC2Instances",) . toJSON . fmap Integer') _gameLiftFleetDesiredEC2Instances
+        , fmap (("EC2InboundPermissions",) . toJSON) _gameLiftFleetEC2InboundPermissions
+        , (Just . ("EC2InstanceType",) . toJSON) _gameLiftFleetEC2InstanceType
+        , fmap (("LogPaths",) . toJSON) _gameLiftFleetLogPaths
+        , fmap (("MaxSize",) . toJSON . fmap Integer') _gameLiftFleetMaxSize
+        , fmap (("MinSize",) . toJSON . fmap Integer') _gameLiftFleetMinSize
+        , (Just . ("Name",) . toJSON) _gameLiftFleetName
+        , fmap (("ServerLaunchParameters",) . toJSON) _gameLiftFleetServerLaunchParameters
+        , (Just . ("ServerLaunchPath",) . toJSON) _gameLiftFleetServerLaunchPath
+        ]
+    }
 
 -- | Constructor for 'GameLiftFleet' containing required fields as arguments.
 gameLiftFleet
diff --git a/library-gen/Stratosphere/Resources/GlueClassifier.hs b/library-gen/Stratosphere/Resources/GlueClassifier.hs
--- a/library-gen/Stratosphere/Resources/GlueClassifier.hs
+++ b/library-gen/Stratosphere/Resources/GlueClassifier.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-classifier.html
@@ -20,14 +21,17 @@
   , _glueClassifierXMLClassifier :: Maybe GlueClassifierXMLClassifier
   } deriving (Show, Eq)
 
-instance ToJSON GlueClassifier where
-  toJSON GlueClassifier{..} =
-    object $
-    catMaybes
-    [ fmap (("GrokClassifier",) . toJSON) _glueClassifierGrokClassifier
-    , fmap (("JsonClassifier",) . toJSON) _glueClassifierJsonClassifier
-    , fmap (("XMLClassifier",) . toJSON) _glueClassifierXMLClassifier
-    ]
+instance ToResourceProperties GlueClassifier where
+  toResourceProperties GlueClassifier{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Glue::Classifier"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("GrokClassifier",) . toJSON) _glueClassifierGrokClassifier
+        , fmap (("JsonClassifier",) . toJSON) _glueClassifierJsonClassifier
+        , fmap (("XMLClassifier",) . toJSON) _glueClassifierXMLClassifier
+        ]
+    }
 
 -- | Constructor for 'GlueClassifier' containing required fields as arguments.
 glueClassifier
diff --git a/library-gen/Stratosphere/Resources/GlueConnection.hs b/library-gen/Stratosphere/Resources/GlueConnection.hs
--- a/library-gen/Stratosphere/Resources/GlueConnection.hs
+++ b/library-gen/Stratosphere/Resources/GlueConnection.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-connection.html
@@ -17,13 +18,16 @@
   , _glueConnectionConnectionInput :: GlueConnectionConnectionInput
   } deriving (Show, Eq)
 
-instance ToJSON GlueConnection where
-  toJSON GlueConnection{..} =
-    object $
-    catMaybes
-    [ (Just . ("CatalogId",) . toJSON) _glueConnectionCatalogId
-    , (Just . ("ConnectionInput",) . toJSON) _glueConnectionConnectionInput
-    ]
+instance ToResourceProperties GlueConnection where
+  toResourceProperties GlueConnection{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Glue::Connection"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("CatalogId",) . toJSON) _glueConnectionCatalogId
+        , (Just . ("ConnectionInput",) . toJSON) _glueConnectionConnectionInput
+        ]
+    }
 
 -- | Constructor for 'GlueConnection' containing required fields as arguments.
 glueConnection
diff --git a/library-gen/Stratosphere/Resources/GlueCrawler.hs b/library-gen/Stratosphere/Resources/GlueCrawler.hs
--- a/library-gen/Stratosphere/Resources/GlueCrawler.hs
+++ b/library-gen/Stratosphere/Resources/GlueCrawler.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html
@@ -27,21 +28,24 @@
   , _glueCrawlerTargets :: GlueCrawlerTargets
   } deriving (Show, Eq)
 
-instance ToJSON GlueCrawler where
-  toJSON GlueCrawler{..} =
-    object $
-    catMaybes
-    [ fmap (("Classifiers",) . toJSON) _glueCrawlerClassifiers
-    , fmap (("Configuration",) . toJSON) _glueCrawlerConfiguration
-    , (Just . ("DatabaseName",) . toJSON) _glueCrawlerDatabaseName
-    , fmap (("Description",) . toJSON) _glueCrawlerDescription
-    , fmap (("Name",) . toJSON) _glueCrawlerName
-    , (Just . ("Role",) . toJSON) _glueCrawlerRole
-    , fmap (("Schedule",) . toJSON) _glueCrawlerSchedule
-    , fmap (("SchemaChangePolicy",) . toJSON) _glueCrawlerSchemaChangePolicy
-    , fmap (("TablePrefix",) . toJSON) _glueCrawlerTablePrefix
-    , (Just . ("Targets",) . toJSON) _glueCrawlerTargets
-    ]
+instance ToResourceProperties GlueCrawler where
+  toResourceProperties GlueCrawler{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Glue::Crawler"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Classifiers",) . toJSON) _glueCrawlerClassifiers
+        , fmap (("Configuration",) . toJSON) _glueCrawlerConfiguration
+        , (Just . ("DatabaseName",) . toJSON) _glueCrawlerDatabaseName
+        , fmap (("Description",) . toJSON) _glueCrawlerDescription
+        , fmap (("Name",) . toJSON) _glueCrawlerName
+        , (Just . ("Role",) . toJSON) _glueCrawlerRole
+        , fmap (("Schedule",) . toJSON) _glueCrawlerSchedule
+        , fmap (("SchemaChangePolicy",) . toJSON) _glueCrawlerSchemaChangePolicy
+        , fmap (("TablePrefix",) . toJSON) _glueCrawlerTablePrefix
+        , (Just . ("Targets",) . toJSON) _glueCrawlerTargets
+        ]
+    }
 
 -- | Constructor for 'GlueCrawler' containing required fields as arguments.
 glueCrawler
diff --git a/library-gen/Stratosphere/Resources/GlueDatabase.hs b/library-gen/Stratosphere/Resources/GlueDatabase.hs
--- a/library-gen/Stratosphere/Resources/GlueDatabase.hs
+++ b/library-gen/Stratosphere/Resources/GlueDatabase.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-database.html
@@ -17,13 +18,16 @@
   , _glueDatabaseDatabaseInput :: GlueDatabaseDatabaseInput
   } deriving (Show, Eq)
 
-instance ToJSON GlueDatabase where
-  toJSON GlueDatabase{..} =
-    object $
-    catMaybes
-    [ (Just . ("CatalogId",) . toJSON) _glueDatabaseCatalogId
-    , (Just . ("DatabaseInput",) . toJSON) _glueDatabaseDatabaseInput
-    ]
+instance ToResourceProperties GlueDatabase where
+  toResourceProperties GlueDatabase{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Glue::Database"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("CatalogId",) . toJSON) _glueDatabaseCatalogId
+        , (Just . ("DatabaseInput",) . toJSON) _glueDatabaseDatabaseInput
+        ]
+    }
 
 -- | Constructor for 'GlueDatabase' containing required fields as arguments.
 glueDatabase
diff --git a/library-gen/Stratosphere/Resources/GlueDevEndpoint.hs b/library-gen/Stratosphere/Resources/GlueDevEndpoint.hs
--- a/library-gen/Stratosphere/Resources/GlueDevEndpoint.hs
+++ b/library-gen/Stratosphere/Resources/GlueDevEndpoint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-devendpoint.html
@@ -23,19 +24,22 @@
   , _glueDevEndpointSubnetId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON GlueDevEndpoint where
-  toJSON GlueDevEndpoint{..} =
-    object $
-    catMaybes
-    [ fmap (("EndpointName",) . toJSON) _glueDevEndpointEndpointName
-    , fmap (("ExtraJarsS3Path",) . toJSON) _glueDevEndpointExtraJarsS3Path
-    , fmap (("ExtraPythonLibsS3Path",) . toJSON) _glueDevEndpointExtraPythonLibsS3Path
-    , fmap (("NumberOfNodes",) . toJSON . fmap Integer') _glueDevEndpointNumberOfNodes
-    , (Just . ("PublicKey",) . toJSON) _glueDevEndpointPublicKey
-    , (Just . ("RoleArn",) . toJSON) _glueDevEndpointRoleArn
-    , fmap (("SecurityGroupIds",) . toJSON) _glueDevEndpointSecurityGroupIds
-    , fmap (("SubnetId",) . toJSON) _glueDevEndpointSubnetId
-    ]
+instance ToResourceProperties GlueDevEndpoint where
+  toResourceProperties GlueDevEndpoint{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Glue::DevEndpoint"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("EndpointName",) . toJSON) _glueDevEndpointEndpointName
+        , fmap (("ExtraJarsS3Path",) . toJSON) _glueDevEndpointExtraJarsS3Path
+        , fmap (("ExtraPythonLibsS3Path",) . toJSON) _glueDevEndpointExtraPythonLibsS3Path
+        , fmap (("NumberOfNodes",) . toJSON . fmap Integer') _glueDevEndpointNumberOfNodes
+        , (Just . ("PublicKey",) . toJSON) _glueDevEndpointPublicKey
+        , (Just . ("RoleArn",) . toJSON) _glueDevEndpointRoleArn
+        , fmap (("SecurityGroupIds",) . toJSON) _glueDevEndpointSecurityGroupIds
+        , fmap (("SubnetId",) . toJSON) _glueDevEndpointSubnetId
+        ]
+    }
 
 -- | Constructor for 'GlueDevEndpoint' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/GlueJob.hs b/library-gen/Stratosphere/Resources/GlueJob.hs
--- a/library-gen/Stratosphere/Resources/GlueJob.hs
+++ b/library-gen/Stratosphere/Resources/GlueJob.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html
@@ -27,21 +28,24 @@
   , _glueJobRole :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON GlueJob where
-  toJSON GlueJob{..} =
-    object $
-    catMaybes
-    [ fmap (("AllocatedCapacity",) . toJSON . fmap Double') _glueJobAllocatedCapacity
-    , (Just . ("Command",) . toJSON) _glueJobCommand
-    , fmap (("Connections",) . toJSON) _glueJobConnections
-    , fmap (("DefaultArguments",) . toJSON) _glueJobDefaultArguments
-    , fmap (("Description",) . toJSON) _glueJobDescription
-    , fmap (("ExecutionProperty",) . toJSON) _glueJobExecutionProperty
-    , fmap (("LogUri",) . toJSON) _glueJobLogUri
-    , fmap (("MaxRetries",) . toJSON . fmap Double') _glueJobMaxRetries
-    , fmap (("Name",) . toJSON) _glueJobName
-    , (Just . ("Role",) . toJSON) _glueJobRole
-    ]
+instance ToResourceProperties GlueJob where
+  toResourceProperties GlueJob{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Glue::Job"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AllocatedCapacity",) . toJSON . fmap Double') _glueJobAllocatedCapacity
+        , (Just . ("Command",) . toJSON) _glueJobCommand
+        , fmap (("Connections",) . toJSON) _glueJobConnections
+        , fmap (("DefaultArguments",) . toJSON) _glueJobDefaultArguments
+        , fmap (("Description",) . toJSON) _glueJobDescription
+        , fmap (("ExecutionProperty",) . toJSON) _glueJobExecutionProperty
+        , fmap (("LogUri",) . toJSON) _glueJobLogUri
+        , fmap (("MaxRetries",) . toJSON . fmap Double') _glueJobMaxRetries
+        , fmap (("Name",) . toJSON) _glueJobName
+        , (Just . ("Role",) . toJSON) _glueJobRole
+        ]
+    }
 
 -- | Constructor for 'GlueJob' containing required fields as arguments.
 glueJob
diff --git a/library-gen/Stratosphere/Resources/GluePartition.hs b/library-gen/Stratosphere/Resources/GluePartition.hs
--- a/library-gen/Stratosphere/Resources/GluePartition.hs
+++ b/library-gen/Stratosphere/Resources/GluePartition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-partition.html
@@ -19,15 +20,18 @@
   , _gluePartitionTableName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON GluePartition where
-  toJSON GluePartition{..} =
-    object $
-    catMaybes
-    [ (Just . ("CatalogId",) . toJSON) _gluePartitionCatalogId
-    , (Just . ("DatabaseName",) . toJSON) _gluePartitionDatabaseName
-    , (Just . ("PartitionInput",) . toJSON) _gluePartitionPartitionInput
-    , (Just . ("TableName",) . toJSON) _gluePartitionTableName
-    ]
+instance ToResourceProperties GluePartition where
+  toResourceProperties GluePartition{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Glue::Partition"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("CatalogId",) . toJSON) _gluePartitionCatalogId
+        , (Just . ("DatabaseName",) . toJSON) _gluePartitionDatabaseName
+        , (Just . ("PartitionInput",) . toJSON) _gluePartitionPartitionInput
+        , (Just . ("TableName",) . toJSON) _gluePartitionTableName
+        ]
+    }
 
 -- | Constructor for 'GluePartition' containing required fields as arguments.
 gluePartition
diff --git a/library-gen/Stratosphere/Resources/GlueTable.hs b/library-gen/Stratosphere/Resources/GlueTable.hs
--- a/library-gen/Stratosphere/Resources/GlueTable.hs
+++ b/library-gen/Stratosphere/Resources/GlueTable.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-table.html
@@ -18,14 +19,17 @@
   , _glueTableTableInput :: GlueTableTableInput
   } deriving (Show, Eq)
 
-instance ToJSON GlueTable where
-  toJSON GlueTable{..} =
-    object $
-    catMaybes
-    [ (Just . ("CatalogId",) . toJSON) _glueTableCatalogId
-    , (Just . ("DatabaseName",) . toJSON) _glueTableDatabaseName
-    , (Just . ("TableInput",) . toJSON) _glueTableTableInput
-    ]
+instance ToResourceProperties GlueTable where
+  toResourceProperties GlueTable{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Glue::Table"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("CatalogId",) . toJSON) _glueTableCatalogId
+        , (Just . ("DatabaseName",) . toJSON) _glueTableDatabaseName
+        , (Just . ("TableInput",) . toJSON) _glueTableTableInput
+        ]
+    }
 
 -- | Constructor for 'GlueTable' containing required fields as arguments.
 glueTable
diff --git a/library-gen/Stratosphere/Resources/GlueTrigger.hs b/library-gen/Stratosphere/Resources/GlueTrigger.hs
--- a/library-gen/Stratosphere/Resources/GlueTrigger.hs
+++ b/library-gen/Stratosphere/Resources/GlueTrigger.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-trigger.html
@@ -22,17 +23,20 @@
   , _glueTriggerType :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON GlueTrigger where
-  toJSON GlueTrigger{..} =
-    object $
-    catMaybes
-    [ (Just . ("Actions",) . toJSON) _glueTriggerActions
-    , fmap (("Description",) . toJSON) _glueTriggerDescription
-    , fmap (("Name",) . toJSON) _glueTriggerName
-    , fmap (("Predicate",) . toJSON) _glueTriggerPredicate
-    , fmap (("Schedule",) . toJSON) _glueTriggerSchedule
-    , (Just . ("Type",) . toJSON) _glueTriggerType
-    ]
+instance ToResourceProperties GlueTrigger where
+  toResourceProperties GlueTrigger{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Glue::Trigger"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Actions",) . toJSON) _glueTriggerActions
+        , fmap (("Description",) . toJSON) _glueTriggerDescription
+        , fmap (("Name",) . toJSON) _glueTriggerName
+        , fmap (("Predicate",) . toJSON) _glueTriggerPredicate
+        , fmap (("Schedule",) . toJSON) _glueTriggerSchedule
+        , (Just . ("Type",) . toJSON) _glueTriggerType
+        ]
+    }
 
 -- | Constructor for 'GlueTrigger' containing required fields as arguments.
 glueTrigger
diff --git a/library-gen/Stratosphere/Resources/GuardDutyDetector.hs b/library-gen/Stratosphere/Resources/GuardDutyDetector.hs
--- a/library-gen/Stratosphere/Resources/GuardDutyDetector.hs
+++ b/library-gen/Stratosphere/Resources/GuardDutyDetector.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-detector.html
@@ -17,13 +18,16 @@
   , _guardDutyDetectorFindingPublishingFrequency :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON GuardDutyDetector where
-  toJSON GuardDutyDetector{..} =
-    object $
-    catMaybes
-    [ (Just . ("Enable",) . toJSON . fmap Bool') _guardDutyDetectorEnable
-    , fmap (("FindingPublishingFrequency",) . toJSON) _guardDutyDetectorFindingPublishingFrequency
-    ]
+instance ToResourceProperties GuardDutyDetector where
+  toResourceProperties GuardDutyDetector{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::GuardDuty::Detector"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Enable",) . toJSON . fmap Bool') _guardDutyDetectorEnable
+        , fmap (("FindingPublishingFrequency",) . toJSON) _guardDutyDetectorFindingPublishingFrequency
+        ]
+    }
 
 -- | Constructor for 'GuardDutyDetector' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/GuardDutyFilter.hs b/library-gen/Stratosphere/Resources/GuardDutyFilter.hs
--- a/library-gen/Stratosphere/Resources/GuardDutyFilter.hs
+++ b/library-gen/Stratosphere/Resources/GuardDutyFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html
@@ -21,17 +22,20 @@
   , _guardDutyFilterRank :: Val Integer
   } deriving (Show, Eq)
 
-instance ToJSON GuardDutyFilter where
-  toJSON GuardDutyFilter{..} =
-    object $
-    catMaybes
-    [ (Just . ("Action",) . toJSON) _guardDutyFilterAction
-    , (Just . ("Description",) . toJSON) _guardDutyFilterDescription
-    , (Just . ("DetectorId",) . toJSON) _guardDutyFilterDetectorId
-    , (Just . ("FindingCriteria",) . toJSON) _guardDutyFilterFindingCriteria
-    , fmap (("Name",) . toJSON) _guardDutyFilterName
-    , (Just . ("Rank",) . toJSON . fmap Integer') _guardDutyFilterRank
-    ]
+instance ToResourceProperties GuardDutyFilter where
+  toResourceProperties GuardDutyFilter{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::GuardDuty::Filter"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Action",) . toJSON) _guardDutyFilterAction
+        , (Just . ("Description",) . toJSON) _guardDutyFilterDescription
+        , (Just . ("DetectorId",) . toJSON) _guardDutyFilterDetectorId
+        , (Just . ("FindingCriteria",) . toJSON) _guardDutyFilterFindingCriteria
+        , fmap (("Name",) . toJSON) _guardDutyFilterName
+        , (Just . ("Rank",) . toJSON . fmap Integer') _guardDutyFilterRank
+        ]
+    }
 
 -- | Constructor for 'GuardDutyFilter' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/GuardDutyIPSet.hs b/library-gen/Stratosphere/Resources/GuardDutyIPSet.hs
--- a/library-gen/Stratosphere/Resources/GuardDutyIPSet.hs
+++ b/library-gen/Stratosphere/Resources/GuardDutyIPSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-ipset.html
@@ -20,16 +21,19 @@
   , _guardDutyIPSetName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON GuardDutyIPSet where
-  toJSON GuardDutyIPSet{..} =
-    object $
-    catMaybes
-    [ (Just . ("Activate",) . toJSON . fmap Bool') _guardDutyIPSetActivate
-    , (Just . ("DetectorId",) . toJSON) _guardDutyIPSetDetectorId
-    , (Just . ("Format",) . toJSON) _guardDutyIPSetFormat
-    , (Just . ("Location",) . toJSON) _guardDutyIPSetLocation
-    , fmap (("Name",) . toJSON) _guardDutyIPSetName
-    ]
+instance ToResourceProperties GuardDutyIPSet where
+  toResourceProperties GuardDutyIPSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::GuardDuty::IPSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Activate",) . toJSON . fmap Bool') _guardDutyIPSetActivate
+        , (Just . ("DetectorId",) . toJSON) _guardDutyIPSetDetectorId
+        , (Just . ("Format",) . toJSON) _guardDutyIPSetFormat
+        , (Just . ("Location",) . toJSON) _guardDutyIPSetLocation
+        , fmap (("Name",) . toJSON) _guardDutyIPSetName
+        ]
+    }
 
 -- | Constructor for 'GuardDutyIPSet' containing required fields as arguments.
 guardDutyIPSet
diff --git a/library-gen/Stratosphere/Resources/GuardDutyMaster.hs b/library-gen/Stratosphere/Resources/GuardDutyMaster.hs
--- a/library-gen/Stratosphere/Resources/GuardDutyMaster.hs
+++ b/library-gen/Stratosphere/Resources/GuardDutyMaster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-master.html
@@ -18,14 +19,17 @@
   , _guardDutyMasterMasterId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON GuardDutyMaster where
-  toJSON GuardDutyMaster{..} =
-    object $
-    catMaybes
-    [ (Just . ("DetectorId",) . toJSON) _guardDutyMasterDetectorId
-    , fmap (("InvitationId",) . toJSON) _guardDutyMasterInvitationId
-    , (Just . ("MasterId",) . toJSON) _guardDutyMasterMasterId
-    ]
+instance ToResourceProperties GuardDutyMaster where
+  toResourceProperties GuardDutyMaster{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::GuardDuty::Master"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DetectorId",) . toJSON) _guardDutyMasterDetectorId
+        , fmap (("InvitationId",) . toJSON) _guardDutyMasterInvitationId
+        , (Just . ("MasterId",) . toJSON) _guardDutyMasterMasterId
+        ]
+    }
 
 -- | Constructor for 'GuardDutyMaster' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/GuardDutyMember.hs b/library-gen/Stratosphere/Resources/GuardDutyMember.hs
--- a/library-gen/Stratosphere/Resources/GuardDutyMember.hs
+++ b/library-gen/Stratosphere/Resources/GuardDutyMember.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-member.html
@@ -21,17 +22,20 @@
   , _guardDutyMemberStatus :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON GuardDutyMember where
-  toJSON GuardDutyMember{..} =
-    object $
-    catMaybes
-    [ (Just . ("DetectorId",) . toJSON) _guardDutyMemberDetectorId
-    , fmap (("DisableEmailNotification",) . toJSON . fmap Bool') _guardDutyMemberDisableEmailNotification
-    , (Just . ("Email",) . toJSON) _guardDutyMemberEmail
-    , (Just . ("MemberId",) . toJSON) _guardDutyMemberMemberId
-    , fmap (("Message",) . toJSON) _guardDutyMemberMessage
-    , fmap (("Status",) . toJSON) _guardDutyMemberStatus
-    ]
+instance ToResourceProperties GuardDutyMember where
+  toResourceProperties GuardDutyMember{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::GuardDuty::Member"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DetectorId",) . toJSON) _guardDutyMemberDetectorId
+        , fmap (("DisableEmailNotification",) . toJSON . fmap Bool') _guardDutyMemberDisableEmailNotification
+        , (Just . ("Email",) . toJSON) _guardDutyMemberEmail
+        , (Just . ("MemberId",) . toJSON) _guardDutyMemberMemberId
+        , fmap (("Message",) . toJSON) _guardDutyMemberMessage
+        , fmap (("Status",) . toJSON) _guardDutyMemberStatus
+        ]
+    }
 
 -- | Constructor for 'GuardDutyMember' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/GuardDutyThreatIntelSet.hs b/library-gen/Stratosphere/Resources/GuardDutyThreatIntelSet.hs
--- a/library-gen/Stratosphere/Resources/GuardDutyThreatIntelSet.hs
+++ b/library-gen/Stratosphere/Resources/GuardDutyThreatIntelSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-threatintelset.html
@@ -20,16 +21,19 @@
   , _guardDutyThreatIntelSetName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON GuardDutyThreatIntelSet where
-  toJSON GuardDutyThreatIntelSet{..} =
-    object $
-    catMaybes
-    [ (Just . ("Activate",) . toJSON . fmap Bool') _guardDutyThreatIntelSetActivate
-    , (Just . ("DetectorId",) . toJSON) _guardDutyThreatIntelSetDetectorId
-    , (Just . ("Format",) . toJSON) _guardDutyThreatIntelSetFormat
-    , (Just . ("Location",) . toJSON) _guardDutyThreatIntelSetLocation
-    , fmap (("Name",) . toJSON) _guardDutyThreatIntelSetName
-    ]
+instance ToResourceProperties GuardDutyThreatIntelSet where
+  toResourceProperties GuardDutyThreatIntelSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::GuardDuty::ThreatIntelSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Activate",) . toJSON . fmap Bool') _guardDutyThreatIntelSetActivate
+        , (Just . ("DetectorId",) . toJSON) _guardDutyThreatIntelSetDetectorId
+        , (Just . ("Format",) . toJSON) _guardDutyThreatIntelSetFormat
+        , (Just . ("Location",) . toJSON) _guardDutyThreatIntelSetLocation
+        , fmap (("Name",) . toJSON) _guardDutyThreatIntelSetName
+        ]
+    }
 
 -- | Constructor for 'GuardDutyThreatIntelSet' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/IAMAccessKey.hs b/library-gen/Stratosphere/Resources/IAMAccessKey.hs
--- a/library-gen/Stratosphere/Resources/IAMAccessKey.hs
+++ b/library-gen/Stratosphere/Resources/IAMAccessKey.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html
@@ -18,14 +19,17 @@
   , _iAMAccessKeyUserName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON IAMAccessKey where
-  toJSON IAMAccessKey{..} =
-    object $
-    catMaybes
-    [ fmap (("Serial",) . toJSON . fmap Integer') _iAMAccessKeySerial
-    , fmap (("Status",) . toJSON) _iAMAccessKeyStatus
-    , (Just . ("UserName",) . toJSON) _iAMAccessKeyUserName
-    ]
+instance ToResourceProperties IAMAccessKey where
+  toResourceProperties IAMAccessKey{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IAM::AccessKey"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Serial",) . toJSON . fmap Integer') _iAMAccessKeySerial
+        , fmap (("Status",) . toJSON) _iAMAccessKeyStatus
+        , (Just . ("UserName",) . toJSON) _iAMAccessKeyUserName
+        ]
+    }
 
 -- | Constructor for 'IAMAccessKey' containing required fields as arguments.
 iamAccessKey
diff --git a/library-gen/Stratosphere/Resources/IAMGroup.hs b/library-gen/Stratosphere/Resources/IAMGroup.hs
--- a/library-gen/Stratosphere/Resources/IAMGroup.hs
+++ b/library-gen/Stratosphere/Resources/IAMGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html
@@ -19,15 +20,18 @@
   , _iAMGroupPolicies :: Maybe [IAMGroupPolicy]
   } deriving (Show, Eq)
 
-instance ToJSON IAMGroup where
-  toJSON IAMGroup{..} =
-    object $
-    catMaybes
-    [ fmap (("GroupName",) . toJSON) _iAMGroupGroupName
-    , fmap (("ManagedPolicyArns",) . toJSON) _iAMGroupManagedPolicyArns
-    , fmap (("Path",) . toJSON) _iAMGroupPath
-    , fmap (("Policies",) . toJSON) _iAMGroupPolicies
-    ]
+instance ToResourceProperties IAMGroup where
+  toResourceProperties IAMGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IAM::Group"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("GroupName",) . toJSON) _iAMGroupGroupName
+        , fmap (("ManagedPolicyArns",) . toJSON) _iAMGroupManagedPolicyArns
+        , fmap (("Path",) . toJSON) _iAMGroupPath
+        , fmap (("Policies",) . toJSON) _iAMGroupPolicies
+        ]
+    }
 
 -- | Constructor for 'IAMGroup' containing required fields as arguments.
 iamGroup
diff --git a/library-gen/Stratosphere/Resources/IAMInstanceProfile.hs b/library-gen/Stratosphere/Resources/IAMInstanceProfile.hs
--- a/library-gen/Stratosphere/Resources/IAMInstanceProfile.hs
+++ b/library-gen/Stratosphere/Resources/IAMInstanceProfile.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html
@@ -18,14 +19,17 @@
   , _iAMInstanceProfileRoles :: ValList Text
   } deriving (Show, Eq)
 
-instance ToJSON IAMInstanceProfile where
-  toJSON IAMInstanceProfile{..} =
-    object $
-    catMaybes
-    [ fmap (("InstanceProfileName",) . toJSON) _iAMInstanceProfileInstanceProfileName
-    , fmap (("Path",) . toJSON) _iAMInstanceProfilePath
-    , (Just . ("Roles",) . toJSON) _iAMInstanceProfileRoles
-    ]
+instance ToResourceProperties IAMInstanceProfile where
+  toResourceProperties IAMInstanceProfile{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IAM::InstanceProfile"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("InstanceProfileName",) . toJSON) _iAMInstanceProfileInstanceProfileName
+        , fmap (("Path",) . toJSON) _iAMInstanceProfilePath
+        , (Just . ("Roles",) . toJSON) _iAMInstanceProfileRoles
+        ]
+    }
 
 -- | Constructor for 'IAMInstanceProfile' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/IAMManagedPolicy.hs b/library-gen/Stratosphere/Resources/IAMManagedPolicy.hs
--- a/library-gen/Stratosphere/Resources/IAMManagedPolicy.hs
+++ b/library-gen/Stratosphere/Resources/IAMManagedPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html
@@ -22,18 +23,21 @@
   , _iAMManagedPolicyUsers :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
-instance ToJSON IAMManagedPolicy where
-  toJSON IAMManagedPolicy{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _iAMManagedPolicyDescription
-    , fmap (("Groups",) . toJSON) _iAMManagedPolicyGroups
-    , fmap (("ManagedPolicyName",) . toJSON) _iAMManagedPolicyManagedPolicyName
-    , fmap (("Path",) . toJSON) _iAMManagedPolicyPath
-    , (Just . ("PolicyDocument",) . toJSON) _iAMManagedPolicyPolicyDocument
-    , fmap (("Roles",) . toJSON) _iAMManagedPolicyRoles
-    , fmap (("Users",) . toJSON) _iAMManagedPolicyUsers
-    ]
+instance ToResourceProperties IAMManagedPolicy where
+  toResourceProperties IAMManagedPolicy{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IAM::ManagedPolicy"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _iAMManagedPolicyDescription
+        , fmap (("Groups",) . toJSON) _iAMManagedPolicyGroups
+        , fmap (("ManagedPolicyName",) . toJSON) _iAMManagedPolicyManagedPolicyName
+        , fmap (("Path",) . toJSON) _iAMManagedPolicyPath
+        , (Just . ("PolicyDocument",) . toJSON) _iAMManagedPolicyPolicyDocument
+        , fmap (("Roles",) . toJSON) _iAMManagedPolicyRoles
+        , fmap (("Users",) . toJSON) _iAMManagedPolicyUsers
+        ]
+    }
 
 -- | Constructor for 'IAMManagedPolicy' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/IAMPolicy.hs b/library-gen/Stratosphere/Resources/IAMPolicy.hs
--- a/library-gen/Stratosphere/Resources/IAMPolicy.hs
+++ b/library-gen/Stratosphere/Resources/IAMPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html
@@ -20,16 +21,19 @@
   , _iAMPolicyUsers :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
-instance ToJSON IAMPolicy where
-  toJSON IAMPolicy{..} =
-    object $
-    catMaybes
-    [ fmap (("Groups",) . toJSON) _iAMPolicyGroups
-    , (Just . ("PolicyDocument",) . toJSON) _iAMPolicyPolicyDocument
-    , (Just . ("PolicyName",) . toJSON) _iAMPolicyPolicyName
-    , fmap (("Roles",) . toJSON) _iAMPolicyRoles
-    , fmap (("Users",) . toJSON) _iAMPolicyUsers
-    ]
+instance ToResourceProperties IAMPolicy where
+  toResourceProperties IAMPolicy{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IAM::Policy"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Groups",) . toJSON) _iAMPolicyGroups
+        , (Just . ("PolicyDocument",) . toJSON) _iAMPolicyPolicyDocument
+        , (Just . ("PolicyName",) . toJSON) _iAMPolicyPolicyName
+        , fmap (("Roles",) . toJSON) _iAMPolicyRoles
+        , fmap (("Users",) . toJSON) _iAMPolicyUsers
+        ]
+    }
 
 -- | Constructor for 'IAMPolicy' containing required fields as arguments.
 iamPolicy
diff --git a/library-gen/Stratosphere/Resources/IAMRole.hs b/library-gen/Stratosphere/Resources/IAMRole.hs
--- a/library-gen/Stratosphere/Resources/IAMRole.hs
+++ b/library-gen/Stratosphere/Resources/IAMRole.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html
@@ -22,18 +23,21 @@
   , _iAMRoleRoleName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON IAMRole where
-  toJSON IAMRole{..} =
-    object $
-    catMaybes
-    [ (Just . ("AssumeRolePolicyDocument",) . toJSON) _iAMRoleAssumeRolePolicyDocument
-    , fmap (("ManagedPolicyArns",) . toJSON) _iAMRoleManagedPolicyArns
-    , fmap (("MaxSessionDuration",) . toJSON . fmap Integer') _iAMRoleMaxSessionDuration
-    , fmap (("Path",) . toJSON) _iAMRolePath
-    , fmap (("PermissionsBoundary",) . toJSON) _iAMRolePermissionsBoundary
-    , fmap (("Policies",) . toJSON) _iAMRolePolicies
-    , fmap (("RoleName",) . toJSON) _iAMRoleRoleName
-    ]
+instance ToResourceProperties IAMRole where
+  toResourceProperties IAMRole{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IAM::Role"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AssumeRolePolicyDocument",) . toJSON) _iAMRoleAssumeRolePolicyDocument
+        , fmap (("ManagedPolicyArns",) . toJSON) _iAMRoleManagedPolicyArns
+        , fmap (("MaxSessionDuration",) . toJSON . fmap Integer') _iAMRoleMaxSessionDuration
+        , fmap (("Path",) . toJSON) _iAMRolePath
+        , fmap (("PermissionsBoundary",) . toJSON) _iAMRolePermissionsBoundary
+        , fmap (("Policies",) . toJSON) _iAMRolePolicies
+        , fmap (("RoleName",) . toJSON) _iAMRoleRoleName
+        ]
+    }
 
 -- | Constructor for 'IAMRole' containing required fields as arguments.
 iamRole
diff --git a/library-gen/Stratosphere/Resources/IAMServiceLinkedRole.hs b/library-gen/Stratosphere/Resources/IAMServiceLinkedRole.hs
--- a/library-gen/Stratosphere/Resources/IAMServiceLinkedRole.hs
+++ b/library-gen/Stratosphere/Resources/IAMServiceLinkedRole.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-servicelinkedrole.html
@@ -18,14 +19,17 @@
   , _iAMServiceLinkedRoleDescription :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON IAMServiceLinkedRole where
-  toJSON IAMServiceLinkedRole{..} =
-    object $
-    catMaybes
-    [ (Just . ("AWSServiceName",) . toJSON) _iAMServiceLinkedRoleAWSServiceName
-    , fmap (("CustomSuffix",) . toJSON) _iAMServiceLinkedRoleCustomSuffix
-    , fmap (("Description",) . toJSON) _iAMServiceLinkedRoleDescription
-    ]
+instance ToResourceProperties IAMServiceLinkedRole where
+  toResourceProperties IAMServiceLinkedRole{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IAM::ServiceLinkedRole"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AWSServiceName",) . toJSON) _iAMServiceLinkedRoleAWSServiceName
+        , fmap (("CustomSuffix",) . toJSON) _iAMServiceLinkedRoleCustomSuffix
+        , fmap (("Description",) . toJSON) _iAMServiceLinkedRoleDescription
+        ]
+    }
 
 -- | Constructor for 'IAMServiceLinkedRole' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/IAMUser.hs b/library-gen/Stratosphere/Resources/IAMUser.hs
--- a/library-gen/Stratosphere/Resources/IAMUser.hs
+++ b/library-gen/Stratosphere/Resources/IAMUser.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html
@@ -23,18 +24,21 @@
   , _iAMUserUserName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON IAMUser where
-  toJSON IAMUser{..} =
-    object $
-    catMaybes
-    [ fmap (("Groups",) . toJSON) _iAMUserGroups
-    , fmap (("LoginProfile",) . toJSON) _iAMUserLoginProfile
-    , fmap (("ManagedPolicyArns",) . toJSON) _iAMUserManagedPolicyArns
-    , fmap (("Path",) . toJSON) _iAMUserPath
-    , fmap (("PermissionsBoundary",) . toJSON) _iAMUserPermissionsBoundary
-    , fmap (("Policies",) . toJSON) _iAMUserPolicies
-    , fmap (("UserName",) . toJSON) _iAMUserUserName
-    ]
+instance ToResourceProperties IAMUser where
+  toResourceProperties IAMUser{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IAM::User"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Groups",) . toJSON) _iAMUserGroups
+        , fmap (("LoginProfile",) . toJSON) _iAMUserLoginProfile
+        , fmap (("ManagedPolicyArns",) . toJSON) _iAMUserManagedPolicyArns
+        , fmap (("Path",) . toJSON) _iAMUserPath
+        , fmap (("PermissionsBoundary",) . toJSON) _iAMUserPermissionsBoundary
+        , fmap (("Policies",) . toJSON) _iAMUserPolicies
+        , fmap (("UserName",) . toJSON) _iAMUserUserName
+        ]
+    }
 
 -- | Constructor for 'IAMUser' containing required fields as arguments.
 iamUser
diff --git a/library-gen/Stratosphere/Resources/IAMUserToGroupAddition.hs b/library-gen/Stratosphere/Resources/IAMUserToGroupAddition.hs
--- a/library-gen/Stratosphere/Resources/IAMUserToGroupAddition.hs
+++ b/library-gen/Stratosphere/Resources/IAMUserToGroupAddition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html
@@ -17,13 +18,16 @@
   , _iAMUserToGroupAdditionUsers :: ValList Text
   } deriving (Show, Eq)
 
-instance ToJSON IAMUserToGroupAddition where
-  toJSON IAMUserToGroupAddition{..} =
-    object $
-    catMaybes
-    [ (Just . ("GroupName",) . toJSON) _iAMUserToGroupAdditionGroupName
-    , (Just . ("Users",) . toJSON) _iAMUserToGroupAdditionUsers
-    ]
+instance ToResourceProperties IAMUserToGroupAddition where
+  toResourceProperties IAMUserToGroupAddition{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IAM::UserToGroupAddition"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("GroupName",) . toJSON) _iAMUserToGroupAdditionGroupName
+        , (Just . ("Users",) . toJSON) _iAMUserToGroupAdditionUsers
+        ]
+    }
 
 -- | Constructor for 'IAMUserToGroupAddition' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/InspectorAssessmentTarget.hs b/library-gen/Stratosphere/Resources/InspectorAssessmentTarget.hs
--- a/library-gen/Stratosphere/Resources/InspectorAssessmentTarget.hs
+++ b/library-gen/Stratosphere/Resources/InspectorAssessmentTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-inspector-assessmenttarget.html
@@ -17,13 +18,16 @@
   , _inspectorAssessmentTargetResourceGroupArn :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON InspectorAssessmentTarget where
-  toJSON InspectorAssessmentTarget{..} =
-    object $
-    catMaybes
-    [ fmap (("AssessmentTargetName",) . toJSON) _inspectorAssessmentTargetAssessmentTargetName
-    , fmap (("ResourceGroupArn",) . toJSON) _inspectorAssessmentTargetResourceGroupArn
-    ]
+instance ToResourceProperties InspectorAssessmentTarget where
+  toResourceProperties InspectorAssessmentTarget{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Inspector::AssessmentTarget"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AssessmentTargetName",) . toJSON) _inspectorAssessmentTargetAssessmentTargetName
+        , fmap (("ResourceGroupArn",) . toJSON) _inspectorAssessmentTargetResourceGroupArn
+        ]
+    }
 
 -- | Constructor for 'InspectorAssessmentTarget' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/InspectorAssessmentTemplate.hs b/library-gen/Stratosphere/Resources/InspectorAssessmentTemplate.hs
--- a/library-gen/Stratosphere/Resources/InspectorAssessmentTemplate.hs
+++ b/library-gen/Stratosphere/Resources/InspectorAssessmentTemplate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-inspector-assessmenttemplate.html
@@ -20,16 +21,19 @@
   , _inspectorAssessmentTemplateUserAttributesForFindings :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON InspectorAssessmentTemplate where
-  toJSON InspectorAssessmentTemplate{..} =
-    object $
-    catMaybes
-    [ (Just . ("AssessmentTargetArn",) . toJSON) _inspectorAssessmentTemplateAssessmentTargetArn
-    , fmap (("AssessmentTemplateName",) . toJSON) _inspectorAssessmentTemplateAssessmentTemplateName
-    , (Just . ("DurationInSeconds",) . toJSON . fmap Integer') _inspectorAssessmentTemplateDurationInSeconds
-    , (Just . ("RulesPackageArns",) . toJSON) _inspectorAssessmentTemplateRulesPackageArns
-    , fmap (("UserAttributesForFindings",) . toJSON) _inspectorAssessmentTemplateUserAttributesForFindings
-    ]
+instance ToResourceProperties InspectorAssessmentTemplate where
+  toResourceProperties InspectorAssessmentTemplate{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Inspector::AssessmentTemplate"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AssessmentTargetArn",) . toJSON) _inspectorAssessmentTemplateAssessmentTargetArn
+        , fmap (("AssessmentTemplateName",) . toJSON) _inspectorAssessmentTemplateAssessmentTemplateName
+        , (Just . ("DurationInSeconds",) . toJSON . fmap Integer') _inspectorAssessmentTemplateDurationInSeconds
+        , (Just . ("RulesPackageArns",) . toJSON) _inspectorAssessmentTemplateRulesPackageArns
+        , fmap (("UserAttributesForFindings",) . toJSON) _inspectorAssessmentTemplateUserAttributesForFindings
+        ]
+    }
 
 -- | Constructor for 'InspectorAssessmentTemplate' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/InspectorResourceGroup.hs b/library-gen/Stratosphere/Resources/InspectorResourceGroup.hs
--- a/library-gen/Stratosphere/Resources/InspectorResourceGroup.hs
+++ b/library-gen/Stratosphere/Resources/InspectorResourceGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-inspector-resourcegroup.html
@@ -16,12 +17,15 @@
   { _inspectorResourceGroupResourceGroupTags :: [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON InspectorResourceGroup where
-  toJSON InspectorResourceGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("ResourceGroupTags",) . toJSON) _inspectorResourceGroupResourceGroupTags
-    ]
+instance ToResourceProperties InspectorResourceGroup where
+  toResourceProperties InspectorResourceGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Inspector::ResourceGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ResourceGroupTags",) . toJSON) _inspectorResourceGroupResourceGroupTags
+        ]
+    }
 
 -- | Constructor for 'InspectorResourceGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/IoT1ClickDevice.hs b/library-gen/Stratosphere/Resources/IoT1ClickDevice.hs
--- a/library-gen/Stratosphere/Resources/IoT1ClickDevice.hs
+++ b/library-gen/Stratosphere/Resources/IoT1ClickDevice.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot1click-device.html
@@ -17,13 +18,16 @@
   , _ioT1ClickDeviceEnabled :: Val Bool
   } deriving (Show, Eq)
 
-instance ToJSON IoT1ClickDevice where
-  toJSON IoT1ClickDevice{..} =
-    object $
-    catMaybes
-    [ (Just . ("DeviceId",) . toJSON) _ioT1ClickDeviceDeviceId
-    , (Just . ("Enabled",) . toJSON . fmap Bool') _ioT1ClickDeviceEnabled
-    ]
+instance ToResourceProperties IoT1ClickDevice where
+  toResourceProperties IoT1ClickDevice{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IoT1Click::Device"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DeviceId",) . toJSON) _ioT1ClickDeviceDeviceId
+        , (Just . ("Enabled",) . toJSON . fmap Bool') _ioT1ClickDeviceEnabled
+        ]
+    }
 
 -- | Constructor for 'IoT1ClickDevice' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/IoT1ClickPlacement.hs b/library-gen/Stratosphere/Resources/IoT1ClickPlacement.hs
--- a/library-gen/Stratosphere/Resources/IoT1ClickPlacement.hs
+++ b/library-gen/Stratosphere/Resources/IoT1ClickPlacement.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot1click-placement.html
@@ -19,15 +20,18 @@
   , _ioT1ClickPlacementProjectName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON IoT1ClickPlacement where
-  toJSON IoT1ClickPlacement{..} =
-    object $
-    catMaybes
-    [ fmap (("AssociatedDevices",) . toJSON) _ioT1ClickPlacementAssociatedDevices
-    , fmap (("Attributes",) . toJSON) _ioT1ClickPlacementAttributes
-    , fmap (("PlacementName",) . toJSON) _ioT1ClickPlacementPlacementName
-    , (Just . ("ProjectName",) . toJSON) _ioT1ClickPlacementProjectName
-    ]
+instance ToResourceProperties IoT1ClickPlacement where
+  toResourceProperties IoT1ClickPlacement{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IoT1Click::Placement"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AssociatedDevices",) . toJSON) _ioT1ClickPlacementAssociatedDevices
+        , fmap (("Attributes",) . toJSON) _ioT1ClickPlacementAttributes
+        , fmap (("PlacementName",) . toJSON) _ioT1ClickPlacementPlacementName
+        , (Just . ("ProjectName",) . toJSON) _ioT1ClickPlacementProjectName
+        ]
+    }
 
 -- | Constructor for 'IoT1ClickPlacement' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/IoT1ClickProject.hs b/library-gen/Stratosphere/Resources/IoT1ClickProject.hs
--- a/library-gen/Stratosphere/Resources/IoT1ClickProject.hs
+++ b/library-gen/Stratosphere/Resources/IoT1ClickProject.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot1click-project.html
@@ -18,14 +19,17 @@
   , _ioT1ClickProjectProjectName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON IoT1ClickProject where
-  toJSON IoT1ClickProject{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _ioT1ClickProjectDescription
-    , (Just . ("PlacementTemplate",) . toJSON) _ioT1ClickProjectPlacementTemplate
-    , fmap (("ProjectName",) . toJSON) _ioT1ClickProjectProjectName
-    ]
+instance ToResourceProperties IoT1ClickProject where
+  toResourceProperties IoT1ClickProject{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IoT1Click::Project"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _ioT1ClickProjectDescription
+        , (Just . ("PlacementTemplate",) . toJSON) _ioT1ClickProjectPlacementTemplate
+        , fmap (("ProjectName",) . toJSON) _ioT1ClickProjectProjectName
+        ]
+    }
 
 -- | Constructor for 'IoT1ClickProject' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/IoTAnalyticsChannel.hs b/library-gen/Stratosphere/Resources/IoTAnalyticsChannel.hs
--- a/library-gen/Stratosphere/Resources/IoTAnalyticsChannel.hs
+++ b/library-gen/Stratosphere/Resources/IoTAnalyticsChannel.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-channel.html
@@ -19,14 +20,17 @@
   , _ioTAnalyticsChannelTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON IoTAnalyticsChannel where
-  toJSON IoTAnalyticsChannel{..} =
-    object $
-    catMaybes
-    [ fmap (("ChannelName",) . toJSON) _ioTAnalyticsChannelChannelName
-    , fmap (("RetentionPeriod",) . toJSON) _ioTAnalyticsChannelRetentionPeriod
-    , fmap (("Tags",) . toJSON) _ioTAnalyticsChannelTags
-    ]
+instance ToResourceProperties IoTAnalyticsChannel where
+  toResourceProperties IoTAnalyticsChannel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IoTAnalytics::Channel"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ChannelName",) . toJSON) _ioTAnalyticsChannelChannelName
+        , fmap (("RetentionPeriod",) . toJSON) _ioTAnalyticsChannelRetentionPeriod
+        , fmap (("Tags",) . toJSON) _ioTAnalyticsChannelTags
+        ]
+    }
 
 -- | Constructor for 'IoTAnalyticsChannel' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/IoTAnalyticsDataset.hs b/library-gen/Stratosphere/Resources/IoTAnalyticsDataset.hs
--- a/library-gen/Stratosphere/Resources/IoTAnalyticsDataset.hs
+++ b/library-gen/Stratosphere/Resources/IoTAnalyticsDataset.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-dataset.html
@@ -23,16 +24,19 @@
   , _ioTAnalyticsDatasetTriggers :: Maybe [IoTAnalyticsDatasetTrigger]
   } deriving (Show, Eq)
 
-instance ToJSON IoTAnalyticsDataset where
-  toJSON IoTAnalyticsDataset{..} =
-    object $
-    catMaybes
-    [ (Just . ("Actions",) . toJSON) _ioTAnalyticsDatasetActions
-    , fmap (("DatasetName",) . toJSON) _ioTAnalyticsDatasetDatasetName
-    , fmap (("RetentionPeriod",) . toJSON) _ioTAnalyticsDatasetRetentionPeriod
-    , fmap (("Tags",) . toJSON) _ioTAnalyticsDatasetTags
-    , fmap (("Triggers",) . toJSON) _ioTAnalyticsDatasetTriggers
-    ]
+instance ToResourceProperties IoTAnalyticsDataset where
+  toResourceProperties IoTAnalyticsDataset{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IoTAnalytics::Dataset"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Actions",) . toJSON) _ioTAnalyticsDatasetActions
+        , fmap (("DatasetName",) . toJSON) _ioTAnalyticsDatasetDatasetName
+        , fmap (("RetentionPeriod",) . toJSON) _ioTAnalyticsDatasetRetentionPeriod
+        , fmap (("Tags",) . toJSON) _ioTAnalyticsDatasetTags
+        , fmap (("Triggers",) . toJSON) _ioTAnalyticsDatasetTriggers
+        ]
+    }
 
 -- | Constructor for 'IoTAnalyticsDataset' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/IoTAnalyticsDatastore.hs b/library-gen/Stratosphere/Resources/IoTAnalyticsDatastore.hs
--- a/library-gen/Stratosphere/Resources/IoTAnalyticsDatastore.hs
+++ b/library-gen/Stratosphere/Resources/IoTAnalyticsDatastore.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-datastore.html
@@ -19,14 +20,17 @@
   , _ioTAnalyticsDatastoreTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON IoTAnalyticsDatastore where
-  toJSON IoTAnalyticsDatastore{..} =
-    object $
-    catMaybes
-    [ fmap (("DatastoreName",) . toJSON) _ioTAnalyticsDatastoreDatastoreName
-    , fmap (("RetentionPeriod",) . toJSON) _ioTAnalyticsDatastoreRetentionPeriod
-    , fmap (("Tags",) . toJSON) _ioTAnalyticsDatastoreTags
-    ]
+instance ToResourceProperties IoTAnalyticsDatastore where
+  toResourceProperties IoTAnalyticsDatastore{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IoTAnalytics::Datastore"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("DatastoreName",) . toJSON) _ioTAnalyticsDatastoreDatastoreName
+        , fmap (("RetentionPeriod",) . toJSON) _ioTAnalyticsDatastoreRetentionPeriod
+        , fmap (("Tags",) . toJSON) _ioTAnalyticsDatastoreTags
+        ]
+    }
 
 -- | Constructor for 'IoTAnalyticsDatastore' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/IoTAnalyticsPipeline.hs b/library-gen/Stratosphere/Resources/IoTAnalyticsPipeline.hs
--- a/library-gen/Stratosphere/Resources/IoTAnalyticsPipeline.hs
+++ b/library-gen/Stratosphere/Resources/IoTAnalyticsPipeline.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-pipeline.html
@@ -19,14 +20,17 @@
   , _ioTAnalyticsPipelineTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON IoTAnalyticsPipeline where
-  toJSON IoTAnalyticsPipeline{..} =
-    object $
-    catMaybes
-    [ (Just . ("PipelineActivities",) . toJSON) _ioTAnalyticsPipelinePipelineActivities
-    , fmap (("PipelineName",) . toJSON) _ioTAnalyticsPipelinePipelineName
-    , fmap (("Tags",) . toJSON) _ioTAnalyticsPipelineTags
-    ]
+instance ToResourceProperties IoTAnalyticsPipeline where
+  toResourceProperties IoTAnalyticsPipeline{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IoTAnalytics::Pipeline"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("PipelineActivities",) . toJSON) _ioTAnalyticsPipelinePipelineActivities
+        , fmap (("PipelineName",) . toJSON) _ioTAnalyticsPipelinePipelineName
+        , fmap (("Tags",) . toJSON) _ioTAnalyticsPipelineTags
+        ]
+    }
 
 -- | Constructor for 'IoTAnalyticsPipeline' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/IoTCertificate.hs b/library-gen/Stratosphere/Resources/IoTCertificate.hs
--- a/library-gen/Stratosphere/Resources/IoTCertificate.hs
+++ b/library-gen/Stratosphere/Resources/IoTCertificate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-certificate.html
@@ -17,13 +18,16 @@
   , _ioTCertificateStatus :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON IoTCertificate where
-  toJSON IoTCertificate{..} =
-    object $
-    catMaybes
-    [ (Just . ("CertificateSigningRequest",) . toJSON) _ioTCertificateCertificateSigningRequest
-    , (Just . ("Status",) . toJSON) _ioTCertificateStatus
-    ]
+instance ToResourceProperties IoTCertificate where
+  toResourceProperties IoTCertificate{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IoT::Certificate"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("CertificateSigningRequest",) . toJSON) _ioTCertificateCertificateSigningRequest
+        , (Just . ("Status",) . toJSON) _ioTCertificateStatus
+        ]
+    }
 
 -- | Constructor for 'IoTCertificate' containing required fields as arguments.
 ioTCertificate
diff --git a/library-gen/Stratosphere/Resources/IoTPolicy.hs b/library-gen/Stratosphere/Resources/IoTPolicy.hs
--- a/library-gen/Stratosphere/Resources/IoTPolicy.hs
+++ b/library-gen/Stratosphere/Resources/IoTPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-policy.html
@@ -17,13 +18,16 @@
   , _ioTPolicyPolicyName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON IoTPolicy where
-  toJSON IoTPolicy{..} =
-    object $
-    catMaybes
-    [ (Just . ("PolicyDocument",) . toJSON) _ioTPolicyPolicyDocument
-    , fmap (("PolicyName",) . toJSON) _ioTPolicyPolicyName
-    ]
+instance ToResourceProperties IoTPolicy where
+  toResourceProperties IoTPolicy{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IoT::Policy"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("PolicyDocument",) . toJSON) _ioTPolicyPolicyDocument
+        , fmap (("PolicyName",) . toJSON) _ioTPolicyPolicyName
+        ]
+    }
 
 -- | Constructor for 'IoTPolicy' containing required fields as arguments.
 ioTPolicy
diff --git a/library-gen/Stratosphere/Resources/IoTPolicyPrincipalAttachment.hs b/library-gen/Stratosphere/Resources/IoTPolicyPrincipalAttachment.hs
--- a/library-gen/Stratosphere/Resources/IoTPolicyPrincipalAttachment.hs
+++ b/library-gen/Stratosphere/Resources/IoTPolicyPrincipalAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-policyprincipalattachment.html
@@ -17,13 +18,16 @@
   , _ioTPolicyPrincipalAttachmentPrincipal :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON IoTPolicyPrincipalAttachment where
-  toJSON IoTPolicyPrincipalAttachment{..} =
-    object $
-    catMaybes
-    [ (Just . ("PolicyName",) . toJSON) _ioTPolicyPrincipalAttachmentPolicyName
-    , (Just . ("Principal",) . toJSON) _ioTPolicyPrincipalAttachmentPrincipal
-    ]
+instance ToResourceProperties IoTPolicyPrincipalAttachment where
+  toResourceProperties IoTPolicyPrincipalAttachment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IoT::PolicyPrincipalAttachment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("PolicyName",) . toJSON) _ioTPolicyPrincipalAttachmentPolicyName
+        , (Just . ("Principal",) . toJSON) _ioTPolicyPrincipalAttachmentPrincipal
+        ]
+    }
 
 -- | Constructor for 'IoTPolicyPrincipalAttachment' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/IoTThing.hs b/library-gen/Stratosphere/Resources/IoTThing.hs
--- a/library-gen/Stratosphere/Resources/IoTThing.hs
+++ b/library-gen/Stratosphere/Resources/IoTThing.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thing.html
@@ -17,13 +18,16 @@
   , _ioTThingThingName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON IoTThing where
-  toJSON IoTThing{..} =
-    object $
-    catMaybes
-    [ fmap (("AttributePayload",) . toJSON) _ioTThingAttributePayload
-    , fmap (("ThingName",) . toJSON) _ioTThingThingName
-    ]
+instance ToResourceProperties IoTThing where
+  toResourceProperties IoTThing{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IoT::Thing"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AttributePayload",) . toJSON) _ioTThingAttributePayload
+        , fmap (("ThingName",) . toJSON) _ioTThingThingName
+        ]
+    }
 
 -- | Constructor for 'IoTThing' containing required fields as arguments.
 ioTThing
diff --git a/library-gen/Stratosphere/Resources/IoTThingPrincipalAttachment.hs b/library-gen/Stratosphere/Resources/IoTThingPrincipalAttachment.hs
--- a/library-gen/Stratosphere/Resources/IoTThingPrincipalAttachment.hs
+++ b/library-gen/Stratosphere/Resources/IoTThingPrincipalAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thingprincipalattachment.html
@@ -17,13 +18,16 @@
   , _ioTThingPrincipalAttachmentThingName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON IoTThingPrincipalAttachment where
-  toJSON IoTThingPrincipalAttachment{..} =
-    object $
-    catMaybes
-    [ (Just . ("Principal",) . toJSON) _ioTThingPrincipalAttachmentPrincipal
-    , (Just . ("ThingName",) . toJSON) _ioTThingPrincipalAttachmentThingName
-    ]
+instance ToResourceProperties IoTThingPrincipalAttachment where
+  toResourceProperties IoTThingPrincipalAttachment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IoT::ThingPrincipalAttachment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Principal",) . toJSON) _ioTThingPrincipalAttachmentPrincipal
+        , (Just . ("ThingName",) . toJSON) _ioTThingPrincipalAttachmentThingName
+        ]
+    }
 
 -- | Constructor for 'IoTThingPrincipalAttachment' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/IoTTopicRule.hs b/library-gen/Stratosphere/Resources/IoTTopicRule.hs
--- a/library-gen/Stratosphere/Resources/IoTTopicRule.hs
+++ b/library-gen/Stratosphere/Resources/IoTTopicRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-topicrule.html
@@ -17,13 +18,16 @@
   , _ioTTopicRuleTopicRulePayload :: IoTTopicRuleTopicRulePayload
   } deriving (Show, Eq)
 
-instance ToJSON IoTTopicRule where
-  toJSON IoTTopicRule{..} =
-    object $
-    catMaybes
-    [ fmap (("RuleName",) . toJSON) _ioTTopicRuleRuleName
-    , (Just . ("TopicRulePayload",) . toJSON) _ioTTopicRuleTopicRulePayload
-    ]
+instance ToResourceProperties IoTTopicRule where
+  toResourceProperties IoTTopicRule{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IoT::TopicRule"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("RuleName",) . toJSON) _ioTTopicRuleRuleName
+        , (Just . ("TopicRulePayload",) . toJSON) _ioTTopicRuleTopicRulePayload
+        ]
+    }
 
 -- | Constructor for 'IoTTopicRule' containing required fields as arguments.
 ioTTopicRule
diff --git a/library-gen/Stratosphere/Resources/KMSAlias.hs b/library-gen/Stratosphere/Resources/KMSAlias.hs
--- a/library-gen/Stratosphere/Resources/KMSAlias.hs
+++ b/library-gen/Stratosphere/Resources/KMSAlias.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html
@@ -17,13 +18,16 @@
   , _kMSAliasTargetKeyId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON KMSAlias where
-  toJSON KMSAlias{..} =
-    object $
-    catMaybes
-    [ (Just . ("AliasName",) . toJSON) _kMSAliasAliasName
-    , (Just . ("TargetKeyId",) . toJSON) _kMSAliasTargetKeyId
-    ]
+instance ToResourceProperties KMSAlias where
+  toResourceProperties KMSAlias{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::KMS::Alias"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AliasName",) . toJSON) _kMSAliasAliasName
+        , (Just . ("TargetKeyId",) . toJSON) _kMSAliasTargetKeyId
+        ]
+    }
 
 -- | Constructor for 'KMSAlias' containing required fields as arguments.
 kmsAlias
diff --git a/library-gen/Stratosphere/Resources/KMSKey.hs b/library-gen/Stratosphere/Resources/KMSKey.hs
--- a/library-gen/Stratosphere/Resources/KMSKey.hs
+++ b/library-gen/Stratosphere/Resources/KMSKey.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html
@@ -22,18 +23,21 @@
   , _kMSKeyTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON KMSKey where
-  toJSON KMSKey{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _kMSKeyDescription
-    , fmap (("EnableKeyRotation",) . toJSON . fmap Bool') _kMSKeyEnableKeyRotation
-    , fmap (("Enabled",) . toJSON . fmap Bool') _kMSKeyEnabled
-    , (Just . ("KeyPolicy",) . toJSON) _kMSKeyKeyPolicy
-    , fmap (("KeyUsage",) . toJSON) _kMSKeyKeyUsage
-    , fmap (("PendingWindowInDays",) . toJSON . fmap Integer') _kMSKeyPendingWindowInDays
-    , fmap (("Tags",) . toJSON) _kMSKeyTags
-    ]
+instance ToResourceProperties KMSKey where
+  toResourceProperties KMSKey{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::KMS::Key"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _kMSKeyDescription
+        , fmap (("EnableKeyRotation",) . toJSON . fmap Bool') _kMSKeyEnableKeyRotation
+        , fmap (("Enabled",) . toJSON . fmap Bool') _kMSKeyEnabled
+        , (Just . ("KeyPolicy",) . toJSON) _kMSKeyKeyPolicy
+        , fmap (("KeyUsage",) . toJSON) _kMSKeyKeyUsage
+        , fmap (("PendingWindowInDays",) . toJSON . fmap Integer') _kMSKeyPendingWindowInDays
+        , fmap (("Tags",) . toJSON) _kMSKeyTags
+        ]
+    }
 
 -- | Constructor for 'KMSKey' containing required fields as arguments.
 kmsKey
diff --git a/library-gen/Stratosphere/Resources/KinesisAnalyticsApplication.hs b/library-gen/Stratosphere/Resources/KinesisAnalyticsApplication.hs
--- a/library-gen/Stratosphere/Resources/KinesisAnalyticsApplication.hs
+++ b/library-gen/Stratosphere/Resources/KinesisAnalyticsApplication.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-application.html
@@ -19,15 +20,18 @@
   , _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 ToResourceProperties KinesisAnalyticsApplication where
+  toResourceProperties KinesisAnalyticsApplication{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::KinesisAnalytics::Application"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ApplicationCode",) . toJSON) _kinesisAnalyticsApplicationApplicationCode
+        , fmap (("ApplicationDescription",) . toJSON) _kinesisAnalyticsApplicationApplicationDescription
+        , fmap (("ApplicationName",) . toJSON) _kinesisAnalyticsApplicationApplicationName
+        , (Just . ("Inputs",) . toJSON) _kinesisAnalyticsApplicationInputs
+        ]
+    }
 
 -- | Constructor for 'KinesisAnalyticsApplication' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/KinesisAnalyticsApplicationOutput.hs b/library-gen/Stratosphere/Resources/KinesisAnalyticsApplicationOutput.hs
--- a/library-gen/Stratosphere/Resources/KinesisAnalyticsApplicationOutput.hs
+++ b/library-gen/Stratosphere/Resources/KinesisAnalyticsApplicationOutput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationoutput.html
@@ -17,13 +18,16 @@
   , _kinesisAnalyticsApplicationOutputOutput :: KinesisAnalyticsApplicationOutputOutput
   } deriving (Show, Eq)
 
-instance ToJSON KinesisAnalyticsApplicationOutput where
-  toJSON KinesisAnalyticsApplicationOutput{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApplicationName",) . toJSON) _kinesisAnalyticsApplicationOutputApplicationName
-    , (Just . ("Output",) . toJSON) _kinesisAnalyticsApplicationOutputOutput
-    ]
+instance ToResourceProperties KinesisAnalyticsApplicationOutput where
+  toResourceProperties KinesisAnalyticsApplicationOutput{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::KinesisAnalytics::ApplicationOutput"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationName",) . toJSON) _kinesisAnalyticsApplicationOutputApplicationName
+        , (Just . ("Output",) . toJSON) _kinesisAnalyticsApplicationOutputOutput
+        ]
+    }
 
 -- | Constructor for 'KinesisAnalyticsApplicationOutput' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/KinesisAnalyticsApplicationReferenceDataSource.hs b/library-gen/Stratosphere/Resources/KinesisAnalyticsApplicationReferenceDataSource.hs
--- a/library-gen/Stratosphere/Resources/KinesisAnalyticsApplicationReferenceDataSource.hs
+++ b/library-gen/Stratosphere/Resources/KinesisAnalyticsApplicationReferenceDataSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationreferencedatasource.html
@@ -19,13 +20,16 @@
   , _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource :: KinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource
   } deriving (Show, Eq)
 
-instance ToJSON KinesisAnalyticsApplicationReferenceDataSource where
-  toJSON KinesisAnalyticsApplicationReferenceDataSource{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApplicationName",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceApplicationName
-    , (Just . ("ReferenceDataSource",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource
-    ]
+instance ToResourceProperties KinesisAnalyticsApplicationReferenceDataSource where
+  toResourceProperties KinesisAnalyticsApplicationReferenceDataSource{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::KinesisAnalytics::ApplicationReferenceDataSource"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationName",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceApplicationName
+        , (Just . ("ReferenceDataSource",) . toJSON) _kinesisAnalyticsApplicationReferenceDataSourceReferenceDataSource
+        ]
+    }
 
 -- | Constructor for 'KinesisAnalyticsApplicationReferenceDataSource'
 -- containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/KinesisAnalyticsV2Application.hs b/library-gen/Stratosphere/Resources/KinesisAnalyticsV2Application.hs
--- a/library-gen/Stratosphere/Resources/KinesisAnalyticsV2Application.hs
+++ b/library-gen/Stratosphere/Resources/KinesisAnalyticsV2Application.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalyticsv2-application.html
@@ -20,16 +21,19 @@
   , _kinesisAnalyticsV2ApplicationServiceExecutionRole :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON KinesisAnalyticsV2Application where
-  toJSON KinesisAnalyticsV2Application{..} =
-    object $
-    catMaybes
-    [ fmap (("ApplicationConfiguration",) . toJSON) _kinesisAnalyticsV2ApplicationApplicationConfiguration
-    , fmap (("ApplicationDescription",) . toJSON) _kinesisAnalyticsV2ApplicationApplicationDescription
-    , fmap (("ApplicationName",) . toJSON) _kinesisAnalyticsV2ApplicationApplicationName
-    , (Just . ("RuntimeEnvironment",) . toJSON) _kinesisAnalyticsV2ApplicationRuntimeEnvironment
-    , (Just . ("ServiceExecutionRole",) . toJSON) _kinesisAnalyticsV2ApplicationServiceExecutionRole
-    ]
+instance ToResourceProperties KinesisAnalyticsV2Application where
+  toResourceProperties KinesisAnalyticsV2Application{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::KinesisAnalyticsV2::Application"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ApplicationConfiguration",) . toJSON) _kinesisAnalyticsV2ApplicationApplicationConfiguration
+        , fmap (("ApplicationDescription",) . toJSON) _kinesisAnalyticsV2ApplicationApplicationDescription
+        , fmap (("ApplicationName",) . toJSON) _kinesisAnalyticsV2ApplicationApplicationName
+        , (Just . ("RuntimeEnvironment",) . toJSON) _kinesisAnalyticsV2ApplicationRuntimeEnvironment
+        , (Just . ("ServiceExecutionRole",) . toJSON) _kinesisAnalyticsV2ApplicationServiceExecutionRole
+        ]
+    }
 
 -- | Constructor for 'KinesisAnalyticsV2Application' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/KinesisAnalyticsV2ApplicationCloudWatchLoggingOption.hs b/library-gen/Stratosphere/Resources/KinesisAnalyticsV2ApplicationCloudWatchLoggingOption.hs
--- a/library-gen/Stratosphere/Resources/KinesisAnalyticsV2ApplicationCloudWatchLoggingOption.hs
+++ b/library-gen/Stratosphere/Resources/KinesisAnalyticsV2ApplicationCloudWatchLoggingOption.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalyticsv2-applicationcloudwatchloggingoption.html
@@ -19,13 +20,16 @@
   , _kinesisAnalyticsV2ApplicationCloudWatchLoggingOptionCloudWatchLoggingOption :: KinesisAnalyticsV2ApplicationCloudWatchLoggingOptionCloudWatchLoggingOption
   } deriving (Show, Eq)
 
-instance ToJSON KinesisAnalyticsV2ApplicationCloudWatchLoggingOption where
-  toJSON KinesisAnalyticsV2ApplicationCloudWatchLoggingOption{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApplicationName",) . toJSON) _kinesisAnalyticsV2ApplicationCloudWatchLoggingOptionApplicationName
-    , (Just . ("CloudWatchLoggingOption",) . toJSON) _kinesisAnalyticsV2ApplicationCloudWatchLoggingOptionCloudWatchLoggingOption
-    ]
+instance ToResourceProperties KinesisAnalyticsV2ApplicationCloudWatchLoggingOption where
+  toResourceProperties KinesisAnalyticsV2ApplicationCloudWatchLoggingOption{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::KinesisAnalyticsV2::ApplicationCloudWatchLoggingOption"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationName",) . toJSON) _kinesisAnalyticsV2ApplicationCloudWatchLoggingOptionApplicationName
+        , (Just . ("CloudWatchLoggingOption",) . toJSON) _kinesisAnalyticsV2ApplicationCloudWatchLoggingOptionCloudWatchLoggingOption
+        ]
+    }
 
 -- | Constructor for 'KinesisAnalyticsV2ApplicationCloudWatchLoggingOption'
 -- containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/KinesisAnalyticsV2ApplicationOutput.hs b/library-gen/Stratosphere/Resources/KinesisAnalyticsV2ApplicationOutput.hs
--- a/library-gen/Stratosphere/Resources/KinesisAnalyticsV2ApplicationOutput.hs
+++ b/library-gen/Stratosphere/Resources/KinesisAnalyticsV2ApplicationOutput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalyticsv2-applicationoutput.html
@@ -17,13 +18,16 @@
   , _kinesisAnalyticsV2ApplicationOutputOutput :: KinesisAnalyticsV2ApplicationOutputOutput
   } deriving (Show, Eq)
 
-instance ToJSON KinesisAnalyticsV2ApplicationOutput where
-  toJSON KinesisAnalyticsV2ApplicationOutput{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApplicationName",) . toJSON) _kinesisAnalyticsV2ApplicationOutputApplicationName
-    , (Just . ("Output",) . toJSON) _kinesisAnalyticsV2ApplicationOutputOutput
-    ]
+instance ToResourceProperties KinesisAnalyticsV2ApplicationOutput where
+  toResourceProperties KinesisAnalyticsV2ApplicationOutput{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::KinesisAnalyticsV2::ApplicationOutput"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationName",) . toJSON) _kinesisAnalyticsV2ApplicationOutputApplicationName
+        , (Just . ("Output",) . toJSON) _kinesisAnalyticsV2ApplicationOutputOutput
+        ]
+    }
 
 -- | Constructor for 'KinesisAnalyticsV2ApplicationOutput' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/KinesisAnalyticsV2ApplicationReferenceDataSource.hs b/library-gen/Stratosphere/Resources/KinesisAnalyticsV2ApplicationReferenceDataSource.hs
--- a/library-gen/Stratosphere/Resources/KinesisAnalyticsV2ApplicationReferenceDataSource.hs
+++ b/library-gen/Stratosphere/Resources/KinesisAnalyticsV2ApplicationReferenceDataSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalyticsv2-applicationreferencedatasource.html
@@ -19,13 +20,16 @@
   , _kinesisAnalyticsV2ApplicationReferenceDataSourceReferenceDataSource :: KinesisAnalyticsV2ApplicationReferenceDataSourceReferenceDataSource
   } deriving (Show, Eq)
 
-instance ToJSON KinesisAnalyticsV2ApplicationReferenceDataSource where
-  toJSON KinesisAnalyticsV2ApplicationReferenceDataSource{..} =
-    object $
-    catMaybes
-    [ (Just . ("ApplicationName",) . toJSON) _kinesisAnalyticsV2ApplicationReferenceDataSourceApplicationName
-    , (Just . ("ReferenceDataSource",) . toJSON) _kinesisAnalyticsV2ApplicationReferenceDataSourceReferenceDataSource
-    ]
+instance ToResourceProperties KinesisAnalyticsV2ApplicationReferenceDataSource where
+  toResourceProperties KinesisAnalyticsV2ApplicationReferenceDataSource{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::KinesisAnalyticsV2::ApplicationReferenceDataSource"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationName",) . toJSON) _kinesisAnalyticsV2ApplicationReferenceDataSourceApplicationName
+        , (Just . ("ReferenceDataSource",) . toJSON) _kinesisAnalyticsV2ApplicationReferenceDataSourceReferenceDataSource
+        ]
+    }
 
 -- | Constructor for 'KinesisAnalyticsV2ApplicationReferenceDataSource'
 -- containing required fields as arguments.
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html
@@ -28,19 +29,22 @@
   , _kinesisFirehoseDeliveryStreamSplunkDestinationConfiguration :: Maybe KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration
   } deriving (Show, Eq)
 
-instance ToJSON KinesisFirehoseDeliveryStream where
-  toJSON KinesisFirehoseDeliveryStream{..} =
-    object $
-    catMaybes
-    [ fmap (("DeliveryStreamName",) . toJSON) _kinesisFirehoseDeliveryStreamDeliveryStreamName
-    , fmap (("DeliveryStreamType",) . toJSON) _kinesisFirehoseDeliveryStreamDeliveryStreamType
-    , fmap (("ElasticsearchDestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration
-    , fmap (("ExtendedS3DestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
-    , fmap (("KinesisStreamSourceConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration
-    , fmap (("RedshiftDestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
-    , fmap (("S3DestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfiguration
-    , fmap (("SplunkDestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamSplunkDestinationConfiguration
-    ]
+instance ToResourceProperties KinesisFirehoseDeliveryStream where
+  toResourceProperties KinesisFirehoseDeliveryStream{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::KinesisFirehose::DeliveryStream"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("DeliveryStreamName",) . toJSON) _kinesisFirehoseDeliveryStreamDeliveryStreamName
+        , fmap (("DeliveryStreamType",) . toJSON) _kinesisFirehoseDeliveryStreamDeliveryStreamType
+        , fmap (("ElasticsearchDestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration
+        , fmap (("ExtendedS3DestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
+        , fmap (("KinesisStreamSourceConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration
+        , fmap (("RedshiftDestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
+        , fmap (("S3DestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfiguration
+        , fmap (("SplunkDestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamSplunkDestinationConfiguration
+        ]
+    }
 
 -- | Constructor for 'KinesisFirehoseDeliveryStream' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/KinesisStream.hs b/library-gen/Stratosphere/Resources/KinesisStream.hs
--- a/library-gen/Stratosphere/Resources/KinesisStream.hs
+++ b/library-gen/Stratosphere/Resources/KinesisStream.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-stream.html
@@ -21,16 +22,19 @@
   , _kinesisStreamTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON KinesisStream where
-  toJSON KinesisStream{..} =
-    object $
-    catMaybes
-    [ fmap (("Name",) . toJSON) _kinesisStreamName
-    , fmap (("RetentionPeriodHours",) . toJSON . fmap Integer') _kinesisStreamRetentionPeriodHours
-    , (Just . ("ShardCount",) . toJSON . fmap Integer') _kinesisStreamShardCount
-    , fmap (("StreamEncryption",) . toJSON) _kinesisStreamStreamEncryption
-    , fmap (("Tags",) . toJSON) _kinesisStreamTags
-    ]
+instance ToResourceProperties KinesisStream where
+  toResourceProperties KinesisStream{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Kinesis::Stream"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Name",) . toJSON) _kinesisStreamName
+        , fmap (("RetentionPeriodHours",) . toJSON . fmap Integer') _kinesisStreamRetentionPeriodHours
+        , (Just . ("ShardCount",) . toJSON . fmap Integer') _kinesisStreamShardCount
+        , fmap (("StreamEncryption",) . toJSON) _kinesisStreamStreamEncryption
+        , fmap (("Tags",) . toJSON) _kinesisStreamTags
+        ]
+    }
 
 -- | Constructor for 'KinesisStream' containing required fields as arguments.
 kinesisStream
diff --git a/library-gen/Stratosphere/Resources/KinesisStreamConsumer.hs b/library-gen/Stratosphere/Resources/KinesisStreamConsumer.hs
--- a/library-gen/Stratosphere/Resources/KinesisStreamConsumer.hs
+++ b/library-gen/Stratosphere/Resources/KinesisStreamConsumer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-streamconsumer.html
@@ -17,13 +18,16 @@
   , _kinesisStreamConsumerStreamARN :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON KinesisStreamConsumer where
-  toJSON KinesisStreamConsumer{..} =
-    object $
-    catMaybes
-    [ (Just . ("ConsumerName",) . toJSON) _kinesisStreamConsumerConsumerName
-    , (Just . ("StreamARN",) . toJSON) _kinesisStreamConsumerStreamARN
-    ]
+instance ToResourceProperties KinesisStreamConsumer where
+  toResourceProperties KinesisStreamConsumer{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Kinesis::StreamConsumer"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ConsumerName",) . toJSON) _kinesisStreamConsumerConsumerName
+        , (Just . ("StreamARN",) . toJSON) _kinesisStreamConsumerStreamARN
+        ]
+    }
 
 -- | Constructor for 'KinesisStreamConsumer' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/LambdaAlias.hs b/library-gen/Stratosphere/Resources/LambdaAlias.hs
--- a/library-gen/Stratosphere/Resources/LambdaAlias.hs
+++ b/library-gen/Stratosphere/Resources/LambdaAlias.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html
@@ -20,16 +21,19 @@
   , _lambdaAliasRoutingConfig :: Maybe LambdaAliasAliasRoutingConfiguration
   } deriving (Show, Eq)
 
-instance ToJSON LambdaAlias where
-  toJSON LambdaAlias{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _lambdaAliasDescription
-    , (Just . ("FunctionName",) . toJSON) _lambdaAliasFunctionName
-    , (Just . ("FunctionVersion",) . toJSON) _lambdaAliasFunctionVersion
-    , (Just . ("Name",) . toJSON) _lambdaAliasName
-    , fmap (("RoutingConfig",) . toJSON) _lambdaAliasRoutingConfig
-    ]
+instance ToResourceProperties LambdaAlias where
+  toResourceProperties LambdaAlias{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Lambda::Alias"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _lambdaAliasDescription
+        , (Just . ("FunctionName",) . toJSON) _lambdaAliasFunctionName
+        , (Just . ("FunctionVersion",) . toJSON) _lambdaAliasFunctionVersion
+        , (Just . ("Name",) . toJSON) _lambdaAliasName
+        , fmap (("RoutingConfig",) . toJSON) _lambdaAliasRoutingConfig
+        ]
+    }
 
 -- | Constructor for 'LambdaAlias' containing required fields as arguments.
 lambdaAlias
diff --git a/library-gen/Stratosphere/Resources/LambdaEventSourceMapping.hs b/library-gen/Stratosphere/Resources/LambdaEventSourceMapping.hs
--- a/library-gen/Stratosphere/Resources/LambdaEventSourceMapping.hs
+++ b/library-gen/Stratosphere/Resources/LambdaEventSourceMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html
@@ -20,16 +21,19 @@
   , _lambdaEventSourceMappingStartingPosition :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON LambdaEventSourceMapping where
-  toJSON LambdaEventSourceMapping{..} =
-    object $
-    catMaybes
-    [ fmap (("BatchSize",) . toJSON . fmap Integer') _lambdaEventSourceMappingBatchSize
-    , fmap (("Enabled",) . toJSON . fmap Bool') _lambdaEventSourceMappingEnabled
-    , (Just . ("EventSourceArn",) . toJSON) _lambdaEventSourceMappingEventSourceArn
-    , (Just . ("FunctionName",) . toJSON) _lambdaEventSourceMappingFunctionName
-    , fmap (("StartingPosition",) . toJSON) _lambdaEventSourceMappingStartingPosition
-    ]
+instance ToResourceProperties LambdaEventSourceMapping where
+  toResourceProperties LambdaEventSourceMapping{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Lambda::EventSourceMapping"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("BatchSize",) . toJSON . fmap Integer') _lambdaEventSourceMappingBatchSize
+        , fmap (("Enabled",) . toJSON . fmap Bool') _lambdaEventSourceMappingEnabled
+        , (Just . ("EventSourceArn",) . toJSON) _lambdaEventSourceMappingEventSourceArn
+        , (Just . ("FunctionName",) . toJSON) _lambdaEventSourceMappingFunctionName
+        , fmap (("StartingPosition",) . toJSON) _lambdaEventSourceMappingStartingPosition
+        ]
+    }
 
 -- | Constructor for 'LambdaEventSourceMapping' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/LambdaFunction.hs b/library-gen/Stratosphere/Resources/LambdaFunction.hs
--- a/library-gen/Stratosphere/Resources/LambdaFunction.hs
+++ b/library-gen/Stratosphere/Resources/LambdaFunction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html
@@ -37,27 +38,30 @@
   , _lambdaFunctionVpcConfig :: Maybe LambdaFunctionVpcConfig
   } deriving (Show, Eq)
 
-instance ToJSON LambdaFunction where
-  toJSON LambdaFunction{..} =
-    object $
-    catMaybes
-    [ (Just . ("Code",) . toJSON) _lambdaFunctionCode
-    , fmap (("DeadLetterConfig",) . toJSON) _lambdaFunctionDeadLetterConfig
-    , fmap (("Description",) . toJSON) _lambdaFunctionDescription
-    , fmap (("Environment",) . toJSON) _lambdaFunctionEnvironment
-    , fmap (("FunctionName",) . toJSON) _lambdaFunctionFunctionName
-    , (Just . ("Handler",) . toJSON) _lambdaFunctionHandler
-    , fmap (("KmsKeyArn",) . toJSON) _lambdaFunctionKmsKeyArn
-    , fmap (("Layers",) . toJSON) _lambdaFunctionLayers
-    , fmap (("MemorySize",) . toJSON . fmap Integer') _lambdaFunctionMemorySize
-    , fmap (("ReservedConcurrentExecutions",) . toJSON . fmap Integer') _lambdaFunctionReservedConcurrentExecutions
-    , (Just . ("Role",) . toJSON) _lambdaFunctionRole
-    , (Just . ("Runtime",) . toJSON) _lambdaFunctionRuntime
-    , fmap (("Tags",) . toJSON) _lambdaFunctionTags
-    , fmap (("Timeout",) . toJSON . fmap Integer') _lambdaFunctionTimeout
-    , fmap (("TracingConfig",) . toJSON) _lambdaFunctionTracingConfig
-    , fmap (("VpcConfig",) . toJSON) _lambdaFunctionVpcConfig
-    ]
+instance ToResourceProperties LambdaFunction where
+  toResourceProperties LambdaFunction{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Lambda::Function"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Code",) . toJSON) _lambdaFunctionCode
+        , fmap (("DeadLetterConfig",) . toJSON) _lambdaFunctionDeadLetterConfig
+        , fmap (("Description",) . toJSON) _lambdaFunctionDescription
+        , fmap (("Environment",) . toJSON) _lambdaFunctionEnvironment
+        , fmap (("FunctionName",) . toJSON) _lambdaFunctionFunctionName
+        , (Just . ("Handler",) . toJSON) _lambdaFunctionHandler
+        , fmap (("KmsKeyArn",) . toJSON) _lambdaFunctionKmsKeyArn
+        , fmap (("Layers",) . toJSON) _lambdaFunctionLayers
+        , fmap (("MemorySize",) . toJSON . fmap Integer') _lambdaFunctionMemorySize
+        , fmap (("ReservedConcurrentExecutions",) . toJSON . fmap Integer') _lambdaFunctionReservedConcurrentExecutions
+        , (Just . ("Role",) . toJSON) _lambdaFunctionRole
+        , (Just . ("Runtime",) . toJSON) _lambdaFunctionRuntime
+        , fmap (("Tags",) . toJSON) _lambdaFunctionTags
+        , fmap (("Timeout",) . toJSON . fmap Integer') _lambdaFunctionTimeout
+        , fmap (("TracingConfig",) . toJSON) _lambdaFunctionTracingConfig
+        , fmap (("VpcConfig",) . toJSON) _lambdaFunctionVpcConfig
+        ]
+    }
 
 -- | Constructor for 'LambdaFunction' containing required fields as arguments.
 lambdaFunction
diff --git a/library-gen/Stratosphere/Resources/LambdaLayerVersion.hs b/library-gen/Stratosphere/Resources/LambdaLayerVersion.hs
--- a/library-gen/Stratosphere/Resources/LambdaLayerVersion.hs
+++ b/library-gen/Stratosphere/Resources/LambdaLayerVersion.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversion.html
@@ -20,16 +21,19 @@
   , _lambdaLayerVersionLicenseInfo :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON LambdaLayerVersion where
-  toJSON LambdaLayerVersion{..} =
-    object $
-    catMaybes
-    [ fmap (("CompatibleRuntimes",) . toJSON) _lambdaLayerVersionCompatibleRuntimes
-    , (Just . ("Content",) . toJSON) _lambdaLayerVersionContent
-    , fmap (("Description",) . toJSON) _lambdaLayerVersionDescription
-    , fmap (("LayerName",) . toJSON) _lambdaLayerVersionLayerName
-    , fmap (("LicenseInfo",) . toJSON) _lambdaLayerVersionLicenseInfo
-    ]
+instance ToResourceProperties LambdaLayerVersion where
+  toResourceProperties LambdaLayerVersion{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Lambda::LayerVersion"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CompatibleRuntimes",) . toJSON) _lambdaLayerVersionCompatibleRuntimes
+        , (Just . ("Content",) . toJSON) _lambdaLayerVersionContent
+        , fmap (("Description",) . toJSON) _lambdaLayerVersionDescription
+        , fmap (("LayerName",) . toJSON) _lambdaLayerVersionLayerName
+        , fmap (("LicenseInfo",) . toJSON) _lambdaLayerVersionLicenseInfo
+        ]
+    }
 
 -- | Constructor for 'LambdaLayerVersion' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/LambdaLayerVersionPermission.hs b/library-gen/Stratosphere/Resources/LambdaLayerVersionPermission.hs
--- a/library-gen/Stratosphere/Resources/LambdaLayerVersionPermission.hs
+++ b/library-gen/Stratosphere/Resources/LambdaLayerVersionPermission.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversionpermission.html
@@ -19,15 +20,18 @@
   , _lambdaLayerVersionPermissionPrincipal :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON LambdaLayerVersionPermission where
-  toJSON LambdaLayerVersionPermission{..} =
-    object $
-    catMaybes
-    [ (Just . ("Action",) . toJSON) _lambdaLayerVersionPermissionAction
-    , (Just . ("LayerVersionArn",) . toJSON) _lambdaLayerVersionPermissionLayerVersionArn
-    , fmap (("OrganizationId",) . toJSON) _lambdaLayerVersionPermissionOrganizationId
-    , (Just . ("Principal",) . toJSON) _lambdaLayerVersionPermissionPrincipal
-    ]
+instance ToResourceProperties LambdaLayerVersionPermission where
+  toResourceProperties LambdaLayerVersionPermission{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Lambda::LayerVersionPermission"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Action",) . toJSON) _lambdaLayerVersionPermissionAction
+        , (Just . ("LayerVersionArn",) . toJSON) _lambdaLayerVersionPermissionLayerVersionArn
+        , fmap (("OrganizationId",) . toJSON) _lambdaLayerVersionPermissionOrganizationId
+        , (Just . ("Principal",) . toJSON) _lambdaLayerVersionPermissionPrincipal
+        ]
+    }
 
 -- | Constructor for 'LambdaLayerVersionPermission' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/LambdaPermission.hs b/library-gen/Stratosphere/Resources/LambdaPermission.hs
--- a/library-gen/Stratosphere/Resources/LambdaPermission.hs
+++ b/library-gen/Stratosphere/Resources/LambdaPermission.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html
@@ -21,17 +22,20 @@
   , _lambdaPermissionSourceArn :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON LambdaPermission where
-  toJSON LambdaPermission{..} =
-    object $
-    catMaybes
-    [ (Just . ("Action",) . toJSON) _lambdaPermissionAction
-    , fmap (("EventSourceToken",) . toJSON) _lambdaPermissionEventSourceToken
-    , (Just . ("FunctionName",) . toJSON) _lambdaPermissionFunctionName
-    , (Just . ("Principal",) . toJSON) _lambdaPermissionPrincipal
-    , fmap (("SourceAccount",) . toJSON) _lambdaPermissionSourceAccount
-    , fmap (("SourceArn",) . toJSON) _lambdaPermissionSourceArn
-    ]
+instance ToResourceProperties LambdaPermission where
+  toResourceProperties LambdaPermission{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Lambda::Permission"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Action",) . toJSON) _lambdaPermissionAction
+        , fmap (("EventSourceToken",) . toJSON) _lambdaPermissionEventSourceToken
+        , (Just . ("FunctionName",) . toJSON) _lambdaPermissionFunctionName
+        , (Just . ("Principal",) . toJSON) _lambdaPermissionPrincipal
+        , fmap (("SourceAccount",) . toJSON) _lambdaPermissionSourceAccount
+        , fmap (("SourceArn",) . toJSON) _lambdaPermissionSourceArn
+        ]
+    }
 
 -- | Constructor for 'LambdaPermission' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/LambdaVersion.hs b/library-gen/Stratosphere/Resources/LambdaVersion.hs
--- a/library-gen/Stratosphere/Resources/LambdaVersion.hs
+++ b/library-gen/Stratosphere/Resources/LambdaVersion.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html
@@ -18,14 +19,17 @@
   , _lambdaVersionFunctionName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON LambdaVersion where
-  toJSON LambdaVersion{..} =
-    object $
-    catMaybes
-    [ fmap (("CodeSha256",) . toJSON) _lambdaVersionCodeSha256
-    , fmap (("Description",) . toJSON) _lambdaVersionDescription
-    , (Just . ("FunctionName",) . toJSON) _lambdaVersionFunctionName
-    ]
+instance ToResourceProperties LambdaVersion where
+  toResourceProperties LambdaVersion{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Lambda::Version"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CodeSha256",) . toJSON) _lambdaVersionCodeSha256
+        , fmap (("Description",) . toJSON) _lambdaVersionDescription
+        , (Just . ("FunctionName",) . toJSON) _lambdaVersionFunctionName
+        ]
+    }
 
 -- | Constructor for 'LambdaVersion' containing required fields as arguments.
 lambdaVersion
diff --git a/library-gen/Stratosphere/Resources/LogsDestination.hs b/library-gen/Stratosphere/Resources/LogsDestination.hs
--- a/library-gen/Stratosphere/Resources/LogsDestination.hs
+++ b/library-gen/Stratosphere/Resources/LogsDestination.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-destination.html
@@ -19,15 +20,18 @@
   , _logsDestinationTargetArn :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON LogsDestination where
-  toJSON LogsDestination{..} =
-    object $
-    catMaybes
-    [ (Just . ("DestinationName",) . toJSON) _logsDestinationDestinationName
-    , (Just . ("DestinationPolicy",) . toJSON) _logsDestinationDestinationPolicy
-    , (Just . ("RoleArn",) . toJSON) _logsDestinationRoleArn
-    , (Just . ("TargetArn",) . toJSON) _logsDestinationTargetArn
-    ]
+instance ToResourceProperties LogsDestination where
+  toResourceProperties LogsDestination{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Logs::Destination"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DestinationName",) . toJSON) _logsDestinationDestinationName
+        , (Just . ("DestinationPolicy",) . toJSON) _logsDestinationDestinationPolicy
+        , (Just . ("RoleArn",) . toJSON) _logsDestinationRoleArn
+        , (Just . ("TargetArn",) . toJSON) _logsDestinationTargetArn
+        ]
+    }
 
 -- | Constructor for 'LogsDestination' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/LogsLogGroup.hs b/library-gen/Stratosphere/Resources/LogsLogGroup.hs
--- a/library-gen/Stratosphere/Resources/LogsLogGroup.hs
+++ b/library-gen/Stratosphere/Resources/LogsLogGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html
@@ -17,13 +18,16 @@
   , _logsLogGroupRetentionInDays :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
-instance ToJSON LogsLogGroup where
-  toJSON LogsLogGroup{..} =
-    object $
-    catMaybes
-    [ fmap (("LogGroupName",) . toJSON) _logsLogGroupLogGroupName
-    , fmap (("RetentionInDays",) . toJSON . fmap Integer') _logsLogGroupRetentionInDays
-    ]
+instance ToResourceProperties LogsLogGroup where
+  toResourceProperties LogsLogGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Logs::LogGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("LogGroupName",) . toJSON) _logsLogGroupLogGroupName
+        , fmap (("RetentionInDays",) . toJSON . fmap Integer') _logsLogGroupRetentionInDays
+        ]
+    }
 
 -- | Constructor for 'LogsLogGroup' containing required fields as arguments.
 logsLogGroup
diff --git a/library-gen/Stratosphere/Resources/LogsLogStream.hs b/library-gen/Stratosphere/Resources/LogsLogStream.hs
--- a/library-gen/Stratosphere/Resources/LogsLogStream.hs
+++ b/library-gen/Stratosphere/Resources/LogsLogStream.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-logstream.html
@@ -17,13 +18,16 @@
   , _logsLogStreamLogStreamName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON LogsLogStream where
-  toJSON LogsLogStream{..} =
-    object $
-    catMaybes
-    [ (Just . ("LogGroupName",) . toJSON) _logsLogStreamLogGroupName
-    , fmap (("LogStreamName",) . toJSON) _logsLogStreamLogStreamName
-    ]
+instance ToResourceProperties LogsLogStream where
+  toResourceProperties LogsLogStream{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Logs::LogStream"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("LogGroupName",) . toJSON) _logsLogStreamLogGroupName
+        , fmap (("LogStreamName",) . toJSON) _logsLogStreamLogStreamName
+        ]
+    }
 
 -- | Constructor for 'LogsLogStream' containing required fields as arguments.
 logsLogStream
diff --git a/library-gen/Stratosphere/Resources/LogsMetricFilter.hs b/library-gen/Stratosphere/Resources/LogsMetricFilter.hs
--- a/library-gen/Stratosphere/Resources/LogsMetricFilter.hs
+++ b/library-gen/Stratosphere/Resources/LogsMetricFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-metricfilter.html
@@ -18,14 +19,17 @@
   , _logsMetricFilterMetricTransformations :: [LogsMetricFilterMetricTransformation]
   } deriving (Show, Eq)
 
-instance ToJSON LogsMetricFilter where
-  toJSON LogsMetricFilter{..} =
-    object $
-    catMaybes
-    [ (Just . ("FilterPattern",) . toJSON) _logsMetricFilterFilterPattern
-    , (Just . ("LogGroupName",) . toJSON) _logsMetricFilterLogGroupName
-    , (Just . ("MetricTransformations",) . toJSON) _logsMetricFilterMetricTransformations
-    ]
+instance ToResourceProperties LogsMetricFilter where
+  toResourceProperties LogsMetricFilter{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Logs::MetricFilter"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("FilterPattern",) . toJSON) _logsMetricFilterFilterPattern
+        , (Just . ("LogGroupName",) . toJSON) _logsMetricFilterLogGroupName
+        , (Just . ("MetricTransformations",) . toJSON) _logsMetricFilterMetricTransformations
+        ]
+    }
 
 -- | Constructor for 'LogsMetricFilter' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/LogsSubscriptionFilter.hs b/library-gen/Stratosphere/Resources/LogsSubscriptionFilter.hs
--- a/library-gen/Stratosphere/Resources/LogsSubscriptionFilter.hs
+++ b/library-gen/Stratosphere/Resources/LogsSubscriptionFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html
@@ -19,15 +20,18 @@
   , _logsSubscriptionFilterRoleArn :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON LogsSubscriptionFilter where
-  toJSON LogsSubscriptionFilter{..} =
-    object $
-    catMaybes
-    [ (Just . ("DestinationArn",) . toJSON) _logsSubscriptionFilterDestinationArn
-    , (Just . ("FilterPattern",) . toJSON) _logsSubscriptionFilterFilterPattern
-    , (Just . ("LogGroupName",) . toJSON) _logsSubscriptionFilterLogGroupName
-    , fmap (("RoleArn",) . toJSON) _logsSubscriptionFilterRoleArn
-    ]
+instance ToResourceProperties LogsSubscriptionFilter where
+  toResourceProperties LogsSubscriptionFilter{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Logs::SubscriptionFilter"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DestinationArn",) . toJSON) _logsSubscriptionFilterDestinationArn
+        , (Just . ("FilterPattern",) . toJSON) _logsSubscriptionFilterFilterPattern
+        , (Just . ("LogGroupName",) . toJSON) _logsSubscriptionFilterLogGroupName
+        , fmap (("RoleArn",) . toJSON) _logsSubscriptionFilterRoleArn
+        ]
+    }
 
 -- | Constructor for 'LogsSubscriptionFilter' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/NeptuneDBCluster.hs b/library-gen/Stratosphere/Resources/NeptuneDBCluster.hs
--- a/library-gen/Stratosphere/Resources/NeptuneDBCluster.hs
+++ b/library-gen/Stratosphere/Resources/NeptuneDBCluster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-neptune-dbcluster.html
@@ -29,25 +30,28 @@
   , _neptuneDBClusterVpcSecurityGroupIds :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
-instance ToJSON NeptuneDBCluster where
-  toJSON NeptuneDBCluster{..} =
-    object $
-    catMaybes
-    [ fmap (("AvailabilityZones",) . toJSON) _neptuneDBClusterAvailabilityZones
-    , fmap (("BackupRetentionPeriod",) . toJSON . fmap Integer') _neptuneDBClusterBackupRetentionPeriod
-    , fmap (("DBClusterIdentifier",) . toJSON) _neptuneDBClusterDBClusterIdentifier
-    , fmap (("DBClusterParameterGroupName",) . toJSON) _neptuneDBClusterDBClusterParameterGroupName
-    , fmap (("DBSubnetGroupName",) . toJSON) _neptuneDBClusterDBSubnetGroupName
-    , fmap (("IamAuthEnabled",) . toJSON . fmap Bool') _neptuneDBClusterIamAuthEnabled
-    , fmap (("KmsKeyId",) . toJSON) _neptuneDBClusterKmsKeyId
-    , fmap (("Port",) . toJSON . fmap Integer') _neptuneDBClusterPort
-    , fmap (("PreferredBackupWindow",) . toJSON) _neptuneDBClusterPreferredBackupWindow
-    , fmap (("PreferredMaintenanceWindow",) . toJSON) _neptuneDBClusterPreferredMaintenanceWindow
-    , fmap (("SnapshotIdentifier",) . toJSON) _neptuneDBClusterSnapshotIdentifier
-    , fmap (("StorageEncrypted",) . toJSON . fmap Bool') _neptuneDBClusterStorageEncrypted
-    , fmap (("Tags",) . toJSON) _neptuneDBClusterTags
-    , fmap (("VpcSecurityGroupIds",) . toJSON) _neptuneDBClusterVpcSecurityGroupIds
-    ]
+instance ToResourceProperties NeptuneDBCluster where
+  toResourceProperties NeptuneDBCluster{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Neptune::DBCluster"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AvailabilityZones",) . toJSON) _neptuneDBClusterAvailabilityZones
+        , fmap (("BackupRetentionPeriod",) . toJSON . fmap Integer') _neptuneDBClusterBackupRetentionPeriod
+        , fmap (("DBClusterIdentifier",) . toJSON) _neptuneDBClusterDBClusterIdentifier
+        , fmap (("DBClusterParameterGroupName",) . toJSON) _neptuneDBClusterDBClusterParameterGroupName
+        , fmap (("DBSubnetGroupName",) . toJSON) _neptuneDBClusterDBSubnetGroupName
+        , fmap (("IamAuthEnabled",) . toJSON . fmap Bool') _neptuneDBClusterIamAuthEnabled
+        , fmap (("KmsKeyId",) . toJSON) _neptuneDBClusterKmsKeyId
+        , fmap (("Port",) . toJSON . fmap Integer') _neptuneDBClusterPort
+        , fmap (("PreferredBackupWindow",) . toJSON) _neptuneDBClusterPreferredBackupWindow
+        , fmap (("PreferredMaintenanceWindow",) . toJSON) _neptuneDBClusterPreferredMaintenanceWindow
+        , fmap (("SnapshotIdentifier",) . toJSON) _neptuneDBClusterSnapshotIdentifier
+        , fmap (("StorageEncrypted",) . toJSON . fmap Bool') _neptuneDBClusterStorageEncrypted
+        , fmap (("Tags",) . toJSON) _neptuneDBClusterTags
+        , fmap (("VpcSecurityGroupIds",) . toJSON) _neptuneDBClusterVpcSecurityGroupIds
+        ]
+    }
 
 -- | Constructor for 'NeptuneDBCluster' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/NeptuneDBClusterParameterGroup.hs b/library-gen/Stratosphere/Resources/NeptuneDBClusterParameterGroup.hs
--- a/library-gen/Stratosphere/Resources/NeptuneDBClusterParameterGroup.hs
+++ b/library-gen/Stratosphere/Resources/NeptuneDBClusterParameterGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-neptune-dbclusterparametergroup.html
@@ -20,16 +21,19 @@
   , _neptuneDBClusterParameterGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON NeptuneDBClusterParameterGroup where
-  toJSON NeptuneDBClusterParameterGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("Description",) . toJSON) _neptuneDBClusterParameterGroupDescription
-    , (Just . ("Family",) . toJSON) _neptuneDBClusterParameterGroupFamily
-    , fmap (("Name",) . toJSON) _neptuneDBClusterParameterGroupName
-    , (Just . ("Parameters",) . toJSON) _neptuneDBClusterParameterGroupParameters
-    , fmap (("Tags",) . toJSON) _neptuneDBClusterParameterGroupTags
-    ]
+instance ToResourceProperties NeptuneDBClusterParameterGroup where
+  toResourceProperties NeptuneDBClusterParameterGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Neptune::DBClusterParameterGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Description",) . toJSON) _neptuneDBClusterParameterGroupDescription
+        , (Just . ("Family",) . toJSON) _neptuneDBClusterParameterGroupFamily
+        , fmap (("Name",) . toJSON) _neptuneDBClusterParameterGroupName
+        , (Just . ("Parameters",) . toJSON) _neptuneDBClusterParameterGroupParameters
+        , fmap (("Tags",) . toJSON) _neptuneDBClusterParameterGroupTags
+        ]
+    }
 
 -- | Constructor for 'NeptuneDBClusterParameterGroup' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/NeptuneDBInstance.hs b/library-gen/Stratosphere/Resources/NeptuneDBInstance.hs
--- a/library-gen/Stratosphere/Resources/NeptuneDBInstance.hs
+++ b/library-gen/Stratosphere/Resources/NeptuneDBInstance.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-neptune-dbinstance.html
@@ -26,22 +27,25 @@
   , _neptuneDBInstanceTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON NeptuneDBInstance where
-  toJSON NeptuneDBInstance{..} =
-    object $
-    catMaybes
-    [ fmap (("AllowMajorVersionUpgrade",) . toJSON . fmap Bool') _neptuneDBInstanceAllowMajorVersionUpgrade
-    , fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _neptuneDBInstanceAutoMinorVersionUpgrade
-    , fmap (("AvailabilityZone",) . toJSON) _neptuneDBInstanceAvailabilityZone
-    , fmap (("DBClusterIdentifier",) . toJSON) _neptuneDBInstanceDBClusterIdentifier
-    , (Just . ("DBInstanceClass",) . toJSON) _neptuneDBInstanceDBInstanceClass
-    , fmap (("DBInstanceIdentifier",) . toJSON) _neptuneDBInstanceDBInstanceIdentifier
-    , fmap (("DBParameterGroupName",) . toJSON) _neptuneDBInstanceDBParameterGroupName
-    , fmap (("DBSnapshotIdentifier",) . toJSON) _neptuneDBInstanceDBSnapshotIdentifier
-    , fmap (("DBSubnetGroupName",) . toJSON) _neptuneDBInstanceDBSubnetGroupName
-    , fmap (("PreferredMaintenanceWindow",) . toJSON) _neptuneDBInstancePreferredMaintenanceWindow
-    , fmap (("Tags",) . toJSON) _neptuneDBInstanceTags
-    ]
+instance ToResourceProperties NeptuneDBInstance where
+  toResourceProperties NeptuneDBInstance{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Neptune::DBInstance"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AllowMajorVersionUpgrade",) . toJSON . fmap Bool') _neptuneDBInstanceAllowMajorVersionUpgrade
+        , fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _neptuneDBInstanceAutoMinorVersionUpgrade
+        , fmap (("AvailabilityZone",) . toJSON) _neptuneDBInstanceAvailabilityZone
+        , fmap (("DBClusterIdentifier",) . toJSON) _neptuneDBInstanceDBClusterIdentifier
+        , (Just . ("DBInstanceClass",) . toJSON) _neptuneDBInstanceDBInstanceClass
+        , fmap (("DBInstanceIdentifier",) . toJSON) _neptuneDBInstanceDBInstanceIdentifier
+        , fmap (("DBParameterGroupName",) . toJSON) _neptuneDBInstanceDBParameterGroupName
+        , fmap (("DBSnapshotIdentifier",) . toJSON) _neptuneDBInstanceDBSnapshotIdentifier
+        , fmap (("DBSubnetGroupName",) . toJSON) _neptuneDBInstanceDBSubnetGroupName
+        , fmap (("PreferredMaintenanceWindow",) . toJSON) _neptuneDBInstancePreferredMaintenanceWindow
+        , fmap (("Tags",) . toJSON) _neptuneDBInstanceTags
+        ]
+    }
 
 -- | Constructor for 'NeptuneDBInstance' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/NeptuneDBParameterGroup.hs b/library-gen/Stratosphere/Resources/NeptuneDBParameterGroup.hs
--- a/library-gen/Stratosphere/Resources/NeptuneDBParameterGroup.hs
+++ b/library-gen/Stratosphere/Resources/NeptuneDBParameterGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-neptune-dbparametergroup.html
@@ -20,16 +21,19 @@
   , _neptuneDBParameterGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON NeptuneDBParameterGroup where
-  toJSON NeptuneDBParameterGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("Description",) . toJSON) _neptuneDBParameterGroupDescription
-    , (Just . ("Family",) . toJSON) _neptuneDBParameterGroupFamily
-    , fmap (("Name",) . toJSON) _neptuneDBParameterGroupName
-    , (Just . ("Parameters",) . toJSON) _neptuneDBParameterGroupParameters
-    , fmap (("Tags",) . toJSON) _neptuneDBParameterGroupTags
-    ]
+instance ToResourceProperties NeptuneDBParameterGroup where
+  toResourceProperties NeptuneDBParameterGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Neptune::DBParameterGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Description",) . toJSON) _neptuneDBParameterGroupDescription
+        , (Just . ("Family",) . toJSON) _neptuneDBParameterGroupFamily
+        , fmap (("Name",) . toJSON) _neptuneDBParameterGroupName
+        , (Just . ("Parameters",) . toJSON) _neptuneDBParameterGroupParameters
+        , fmap (("Tags",) . toJSON) _neptuneDBParameterGroupTags
+        ]
+    }
 
 -- | Constructor for 'NeptuneDBParameterGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/NeptuneDBSubnetGroup.hs b/library-gen/Stratosphere/Resources/NeptuneDBSubnetGroup.hs
--- a/library-gen/Stratosphere/Resources/NeptuneDBSubnetGroup.hs
+++ b/library-gen/Stratosphere/Resources/NeptuneDBSubnetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-neptune-dbsubnetgroup.html
@@ -19,15 +20,18 @@
   , _neptuneDBSubnetGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON NeptuneDBSubnetGroup where
-  toJSON NeptuneDBSubnetGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("DBSubnetGroupDescription",) . toJSON) _neptuneDBSubnetGroupDBSubnetGroupDescription
-    , fmap (("DBSubnetGroupName",) . toJSON) _neptuneDBSubnetGroupDBSubnetGroupName
-    , (Just . ("SubnetIds",) . toJSON) _neptuneDBSubnetGroupSubnetIds
-    , fmap (("Tags",) . toJSON) _neptuneDBSubnetGroupTags
-    ]
+instance ToResourceProperties NeptuneDBSubnetGroup where
+  toResourceProperties NeptuneDBSubnetGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Neptune::DBSubnetGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DBSubnetGroupDescription",) . toJSON) _neptuneDBSubnetGroupDBSubnetGroupDescription
+        , fmap (("DBSubnetGroupName",) . toJSON) _neptuneDBSubnetGroupDBSubnetGroupName
+        , (Just . ("SubnetIds",) . toJSON) _neptuneDBSubnetGroupSubnetIds
+        , fmap (("Tags",) . toJSON) _neptuneDBSubnetGroupTags
+        ]
+    }
 
 -- | Constructor for 'NeptuneDBSubnetGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/OpsWorksApp.hs b/library-gen/Stratosphere/Resources/OpsWorksApp.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksApp.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksApp.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html
@@ -30,23 +31,26 @@
   , _opsWorksAppType :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON OpsWorksApp where
-  toJSON OpsWorksApp{..} =
-    object $
-    catMaybes
-    [ fmap (("AppSource",) . toJSON) _opsWorksAppAppSource
-    , fmap (("Attributes",) . toJSON) _opsWorksAppAttributes
-    , fmap (("DataSources",) . toJSON) _opsWorksAppDataSources
-    , fmap (("Description",) . toJSON) _opsWorksAppDescription
-    , fmap (("Domains",) . toJSON) _opsWorksAppDomains
-    , fmap (("EnableSsl",) . toJSON . fmap Bool') _opsWorksAppEnableSsl
-    , fmap (("Environment",) . toJSON) _opsWorksAppEnvironment
-    , (Just . ("Name",) . toJSON) _opsWorksAppName
-    , fmap (("Shortname",) . toJSON) _opsWorksAppShortname
-    , fmap (("SslConfiguration",) . toJSON) _opsWorksAppSslConfiguration
-    , (Just . ("StackId",) . toJSON) _opsWorksAppStackId
-    , (Just . ("Type",) . toJSON) _opsWorksAppType
-    ]
+instance ToResourceProperties OpsWorksApp where
+  toResourceProperties OpsWorksApp{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::OpsWorks::App"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AppSource",) . toJSON) _opsWorksAppAppSource
+        , fmap (("Attributes",) . toJSON) _opsWorksAppAttributes
+        , fmap (("DataSources",) . toJSON) _opsWorksAppDataSources
+        , fmap (("Description",) . toJSON) _opsWorksAppDescription
+        , fmap (("Domains",) . toJSON) _opsWorksAppDomains
+        , fmap (("EnableSsl",) . toJSON . fmap Bool') _opsWorksAppEnableSsl
+        , fmap (("Environment",) . toJSON) _opsWorksAppEnvironment
+        , (Just . ("Name",) . toJSON) _opsWorksAppName
+        , fmap (("Shortname",) . toJSON) _opsWorksAppShortname
+        , fmap (("SslConfiguration",) . toJSON) _opsWorksAppSslConfiguration
+        , (Just . ("StackId",) . toJSON) _opsWorksAppStackId
+        , (Just . ("Type",) . toJSON) _opsWorksAppType
+        ]
+    }
 
 -- | Constructor for 'OpsWorksApp' containing required fields as arguments.
 opsWorksApp
diff --git a/library-gen/Stratosphere/Resources/OpsWorksCMServer.hs b/library-gen/Stratosphere/Resources/OpsWorksCMServer.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksCMServer.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksCMServer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html
@@ -32,28 +33,31 @@
   , _opsWorksCMServerSubnetIds :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
-instance ToJSON OpsWorksCMServer where
-  toJSON OpsWorksCMServer{..} =
-    object $
-    catMaybes
-    [ fmap (("AssociatePublicIpAddress",) . toJSON . fmap Bool') _opsWorksCMServerAssociatePublicIpAddress
-    , fmap (("BackupId",) . toJSON) _opsWorksCMServerBackupId
-    , fmap (("BackupRetentionCount",) . toJSON . fmap Integer') _opsWorksCMServerBackupRetentionCount
-    , fmap (("DisableAutomatedBackup",) . toJSON . fmap Bool') _opsWorksCMServerDisableAutomatedBackup
-    , fmap (("Engine",) . toJSON) _opsWorksCMServerEngine
-    , fmap (("EngineAttributes",) . toJSON) _opsWorksCMServerEngineAttributes
-    , fmap (("EngineModel",) . toJSON) _opsWorksCMServerEngineModel
-    , fmap (("EngineVersion",) . toJSON) _opsWorksCMServerEngineVersion
-    , (Just . ("InstanceProfileArn",) . toJSON) _opsWorksCMServerInstanceProfileArn
-    , (Just . ("InstanceType",) . toJSON) _opsWorksCMServerInstanceType
-    , fmap (("KeyPair",) . toJSON) _opsWorksCMServerKeyPair
-    , fmap (("PreferredBackupWindow",) . toJSON) _opsWorksCMServerPreferredBackupWindow
-    , fmap (("PreferredMaintenanceWindow",) . toJSON) _opsWorksCMServerPreferredMaintenanceWindow
-    , fmap (("SecurityGroupIds",) . toJSON) _opsWorksCMServerSecurityGroupIds
-    , fmap (("ServerName",) . toJSON) _opsWorksCMServerServerName
-    , (Just . ("ServiceRoleArn",) . toJSON) _opsWorksCMServerServiceRoleArn
-    , fmap (("SubnetIds",) . toJSON) _opsWorksCMServerSubnetIds
-    ]
+instance ToResourceProperties OpsWorksCMServer where
+  toResourceProperties OpsWorksCMServer{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::OpsWorksCM::Server"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AssociatePublicIpAddress",) . toJSON . fmap Bool') _opsWorksCMServerAssociatePublicIpAddress
+        , fmap (("BackupId",) . toJSON) _opsWorksCMServerBackupId
+        , fmap (("BackupRetentionCount",) . toJSON . fmap Integer') _opsWorksCMServerBackupRetentionCount
+        , fmap (("DisableAutomatedBackup",) . toJSON . fmap Bool') _opsWorksCMServerDisableAutomatedBackup
+        , fmap (("Engine",) . toJSON) _opsWorksCMServerEngine
+        , fmap (("EngineAttributes",) . toJSON) _opsWorksCMServerEngineAttributes
+        , fmap (("EngineModel",) . toJSON) _opsWorksCMServerEngineModel
+        , fmap (("EngineVersion",) . toJSON) _opsWorksCMServerEngineVersion
+        , (Just . ("InstanceProfileArn",) . toJSON) _opsWorksCMServerInstanceProfileArn
+        , (Just . ("InstanceType",) . toJSON) _opsWorksCMServerInstanceType
+        , fmap (("KeyPair",) . toJSON) _opsWorksCMServerKeyPair
+        , fmap (("PreferredBackupWindow",) . toJSON) _opsWorksCMServerPreferredBackupWindow
+        , fmap (("PreferredMaintenanceWindow",) . toJSON) _opsWorksCMServerPreferredMaintenanceWindow
+        , fmap (("SecurityGroupIds",) . toJSON) _opsWorksCMServerSecurityGroupIds
+        , fmap (("ServerName",) . toJSON) _opsWorksCMServerServerName
+        , (Just . ("ServiceRoleArn",) . toJSON) _opsWorksCMServerServiceRoleArn
+        , fmap (("SubnetIds",) . toJSON) _opsWorksCMServerSubnetIds
+        ]
+    }
 
 -- | Constructor for 'OpsWorksCMServer' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/OpsWorksElasticLoadBalancerAttachment.hs b/library-gen/Stratosphere/Resources/OpsWorksElasticLoadBalancerAttachment.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksElasticLoadBalancerAttachment.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksElasticLoadBalancerAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-elbattachment.html
@@ -18,13 +19,16 @@
   , _opsWorksElasticLoadBalancerAttachmentLayerId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON OpsWorksElasticLoadBalancerAttachment where
-  toJSON OpsWorksElasticLoadBalancerAttachment{..} =
-    object $
-    catMaybes
-    [ (Just . ("ElasticLoadBalancerName",) . toJSON) _opsWorksElasticLoadBalancerAttachmentElasticLoadBalancerName
-    , (Just . ("LayerId",) . toJSON) _opsWorksElasticLoadBalancerAttachmentLayerId
-    ]
+instance ToResourceProperties OpsWorksElasticLoadBalancerAttachment where
+  toResourceProperties OpsWorksElasticLoadBalancerAttachment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::OpsWorks::ElasticLoadBalancerAttachment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ElasticLoadBalancerName",) . toJSON) _opsWorksElasticLoadBalancerAttachmentElasticLoadBalancerName
+        , (Just . ("LayerId",) . toJSON) _opsWorksElasticLoadBalancerAttachmentLayerId
+        ]
+    }
 
 -- | Constructor for 'OpsWorksElasticLoadBalancerAttachment' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/OpsWorksInstance.hs b/library-gen/Stratosphere/Resources/OpsWorksInstance.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksInstance.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksInstance.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html
@@ -37,32 +38,35 @@
   , _opsWorksInstanceVolumes :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
-instance ToJSON OpsWorksInstance where
-  toJSON OpsWorksInstance{..} =
-    object $
-    catMaybes
-    [ fmap (("AgentVersion",) . toJSON) _opsWorksInstanceAgentVersion
-    , fmap (("AmiId",) . toJSON) _opsWorksInstanceAmiId
-    , fmap (("Architecture",) . toJSON) _opsWorksInstanceArchitecture
-    , fmap (("AutoScalingType",) . toJSON) _opsWorksInstanceAutoScalingType
-    , fmap (("AvailabilityZone",) . toJSON) _opsWorksInstanceAvailabilityZone
-    , fmap (("BlockDeviceMappings",) . toJSON) _opsWorksInstanceBlockDeviceMappings
-    , fmap (("EbsOptimized",) . toJSON . fmap Bool') _opsWorksInstanceEbsOptimized
-    , fmap (("ElasticIps",) . toJSON) _opsWorksInstanceElasticIps
-    , fmap (("Hostname",) . toJSON) _opsWorksInstanceHostname
-    , fmap (("InstallUpdatesOnBoot",) . toJSON . fmap Bool') _opsWorksInstanceInstallUpdatesOnBoot
-    , (Just . ("InstanceType",) . toJSON) _opsWorksInstanceInstanceType
-    , (Just . ("LayerIds",) . toJSON) _opsWorksInstanceLayerIds
-    , fmap (("Os",) . toJSON) _opsWorksInstanceOs
-    , fmap (("RootDeviceType",) . toJSON) _opsWorksInstanceRootDeviceType
-    , fmap (("SshKeyName",) . toJSON) _opsWorksInstanceSshKeyName
-    , (Just . ("StackId",) . toJSON) _opsWorksInstanceStackId
-    , fmap (("SubnetId",) . toJSON) _opsWorksInstanceSubnetId
-    , fmap (("Tenancy",) . toJSON) _opsWorksInstanceTenancy
-    , fmap (("TimeBasedAutoScaling",) . toJSON) _opsWorksInstanceTimeBasedAutoScaling
-    , fmap (("VirtualizationType",) . toJSON) _opsWorksInstanceVirtualizationType
-    , fmap (("Volumes",) . toJSON) _opsWorksInstanceVolumes
-    ]
+instance ToResourceProperties OpsWorksInstance where
+  toResourceProperties OpsWorksInstance{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::OpsWorks::Instance"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AgentVersion",) . toJSON) _opsWorksInstanceAgentVersion
+        , fmap (("AmiId",) . toJSON) _opsWorksInstanceAmiId
+        , fmap (("Architecture",) . toJSON) _opsWorksInstanceArchitecture
+        , fmap (("AutoScalingType",) . toJSON) _opsWorksInstanceAutoScalingType
+        , fmap (("AvailabilityZone",) . toJSON) _opsWorksInstanceAvailabilityZone
+        , fmap (("BlockDeviceMappings",) . toJSON) _opsWorksInstanceBlockDeviceMappings
+        , fmap (("EbsOptimized",) . toJSON . fmap Bool') _opsWorksInstanceEbsOptimized
+        , fmap (("ElasticIps",) . toJSON) _opsWorksInstanceElasticIps
+        , fmap (("Hostname",) . toJSON) _opsWorksInstanceHostname
+        , fmap (("InstallUpdatesOnBoot",) . toJSON . fmap Bool') _opsWorksInstanceInstallUpdatesOnBoot
+        , (Just . ("InstanceType",) . toJSON) _opsWorksInstanceInstanceType
+        , (Just . ("LayerIds",) . toJSON) _opsWorksInstanceLayerIds
+        , fmap (("Os",) . toJSON) _opsWorksInstanceOs
+        , fmap (("RootDeviceType",) . toJSON) _opsWorksInstanceRootDeviceType
+        , fmap (("SshKeyName",) . toJSON) _opsWorksInstanceSshKeyName
+        , (Just . ("StackId",) . toJSON) _opsWorksInstanceStackId
+        , fmap (("SubnetId",) . toJSON) _opsWorksInstanceSubnetId
+        , fmap (("Tenancy",) . toJSON) _opsWorksInstanceTenancy
+        , fmap (("TimeBasedAutoScaling",) . toJSON) _opsWorksInstanceTimeBasedAutoScaling
+        , fmap (("VirtualizationType",) . toJSON) _opsWorksInstanceVirtualizationType
+        , fmap (("Volumes",) . toJSON) _opsWorksInstanceVolumes
+        ]
+    }
 
 -- | Constructor for 'OpsWorksInstance' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/OpsWorksLayer.hs b/library-gen/Stratosphere/Resources/OpsWorksLayer.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksLayer.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksLayer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html
@@ -38,30 +39,33 @@
   , _opsWorksLayerVolumeConfigurations :: Maybe [OpsWorksLayerVolumeConfiguration]
   } deriving (Show, Eq)
 
-instance ToJSON OpsWorksLayer where
-  toJSON OpsWorksLayer{..} =
-    object $
-    catMaybes
-    [ fmap (("Attributes",) . toJSON) _opsWorksLayerAttributes
-    , (Just . ("AutoAssignElasticIps",) . toJSON . fmap Bool') _opsWorksLayerAutoAssignElasticIps
-    , (Just . ("AutoAssignPublicIps",) . toJSON . fmap Bool') _opsWorksLayerAutoAssignPublicIps
-    , fmap (("CustomInstanceProfileArn",) . toJSON) _opsWorksLayerCustomInstanceProfileArn
-    , fmap (("CustomJson",) . toJSON) _opsWorksLayerCustomJson
-    , fmap (("CustomRecipes",) . toJSON) _opsWorksLayerCustomRecipes
-    , fmap (("CustomSecurityGroupIds",) . toJSON) _opsWorksLayerCustomSecurityGroupIds
-    , (Just . ("EnableAutoHealing",) . toJSON . fmap Bool') _opsWorksLayerEnableAutoHealing
-    , fmap (("InstallUpdatesOnBoot",) . toJSON . fmap Bool') _opsWorksLayerInstallUpdatesOnBoot
-    , fmap (("LifecycleEventConfiguration",) . toJSON) _opsWorksLayerLifecycleEventConfiguration
-    , fmap (("LoadBasedAutoScaling",) . toJSON) _opsWorksLayerLoadBasedAutoScaling
-    , (Just . ("Name",) . toJSON) _opsWorksLayerName
-    , fmap (("Packages",) . toJSON) _opsWorksLayerPackages
-    , (Just . ("Shortname",) . toJSON) _opsWorksLayerShortname
-    , (Just . ("StackId",) . toJSON) _opsWorksLayerStackId
-    , fmap (("Tags",) . toJSON) _opsWorksLayerTags
-    , (Just . ("Type",) . toJSON) _opsWorksLayerType
-    , fmap (("UseEbsOptimizedInstances",) . toJSON . fmap Bool') _opsWorksLayerUseEbsOptimizedInstances
-    , fmap (("VolumeConfigurations",) . toJSON) _opsWorksLayerVolumeConfigurations
-    ]
+instance ToResourceProperties OpsWorksLayer where
+  toResourceProperties OpsWorksLayer{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::OpsWorks::Layer"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Attributes",) . toJSON) _opsWorksLayerAttributes
+        , (Just . ("AutoAssignElasticIps",) . toJSON . fmap Bool') _opsWorksLayerAutoAssignElasticIps
+        , (Just . ("AutoAssignPublicIps",) . toJSON . fmap Bool') _opsWorksLayerAutoAssignPublicIps
+        , fmap (("CustomInstanceProfileArn",) . toJSON) _opsWorksLayerCustomInstanceProfileArn
+        , fmap (("CustomJson",) . toJSON) _opsWorksLayerCustomJson
+        , fmap (("CustomRecipes",) . toJSON) _opsWorksLayerCustomRecipes
+        , fmap (("CustomSecurityGroupIds",) . toJSON) _opsWorksLayerCustomSecurityGroupIds
+        , (Just . ("EnableAutoHealing",) . toJSON . fmap Bool') _opsWorksLayerEnableAutoHealing
+        , fmap (("InstallUpdatesOnBoot",) . toJSON . fmap Bool') _opsWorksLayerInstallUpdatesOnBoot
+        , fmap (("LifecycleEventConfiguration",) . toJSON) _opsWorksLayerLifecycleEventConfiguration
+        , fmap (("LoadBasedAutoScaling",) . toJSON) _opsWorksLayerLoadBasedAutoScaling
+        , (Just . ("Name",) . toJSON) _opsWorksLayerName
+        , fmap (("Packages",) . toJSON) _opsWorksLayerPackages
+        , (Just . ("Shortname",) . toJSON) _opsWorksLayerShortname
+        , (Just . ("StackId",) . toJSON) _opsWorksLayerStackId
+        , fmap (("Tags",) . toJSON) _opsWorksLayerTags
+        , (Just . ("Type",) . toJSON) _opsWorksLayerType
+        , fmap (("UseEbsOptimizedInstances",) . toJSON . fmap Bool') _opsWorksLayerUseEbsOptimizedInstances
+        , fmap (("VolumeConfigurations",) . toJSON) _opsWorksLayerVolumeConfigurations
+        ]
+    }
 
 -- | Constructor for 'OpsWorksLayer' containing required fields as arguments.
 opsWorksLayer
diff --git a/library-gen/Stratosphere/Resources/OpsWorksStack.hs b/library-gen/Stratosphere/Resources/OpsWorksStack.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksStack.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksStack.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html
@@ -45,36 +46,39 @@
   , _opsWorksStackVpcId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON OpsWorksStack where
-  toJSON OpsWorksStack{..} =
-    object $
-    catMaybes
-    [ fmap (("AgentVersion",) . toJSON) _opsWorksStackAgentVersion
-    , fmap (("Attributes",) . toJSON) _opsWorksStackAttributes
-    , fmap (("ChefConfiguration",) . toJSON) _opsWorksStackChefConfiguration
-    , fmap (("CloneAppIds",) . toJSON) _opsWorksStackCloneAppIds
-    , fmap (("ClonePermissions",) . toJSON . fmap Bool') _opsWorksStackClonePermissions
-    , fmap (("ConfigurationManager",) . toJSON) _opsWorksStackConfigurationManager
-    , fmap (("CustomCookbooksSource",) . toJSON) _opsWorksStackCustomCookbooksSource
-    , fmap (("CustomJson",) . toJSON) _opsWorksStackCustomJson
-    , fmap (("DefaultAvailabilityZone",) . toJSON) _opsWorksStackDefaultAvailabilityZone
-    , (Just . ("DefaultInstanceProfileArn",) . toJSON) _opsWorksStackDefaultInstanceProfileArn
-    , fmap (("DefaultOs",) . toJSON) _opsWorksStackDefaultOs
-    , fmap (("DefaultRootDeviceType",) . toJSON) _opsWorksStackDefaultRootDeviceType
-    , fmap (("DefaultSshKeyName",) . toJSON) _opsWorksStackDefaultSshKeyName
-    , fmap (("DefaultSubnetId",) . toJSON) _opsWorksStackDefaultSubnetId
-    , fmap (("EcsClusterArn",) . toJSON) _opsWorksStackEcsClusterArn
-    , fmap (("ElasticIps",) . toJSON) _opsWorksStackElasticIps
-    , fmap (("HostnameTheme",) . toJSON) _opsWorksStackHostnameTheme
-    , (Just . ("Name",) . toJSON) _opsWorksStackName
-    , fmap (("RdsDbInstances",) . toJSON) _opsWorksStackRdsDbInstances
-    , (Just . ("ServiceRoleArn",) . toJSON) _opsWorksStackServiceRoleArn
-    , fmap (("SourceStackId",) . toJSON) _opsWorksStackSourceStackId
-    , fmap (("Tags",) . toJSON) _opsWorksStackTags
-    , fmap (("UseCustomCookbooks",) . toJSON . fmap Bool') _opsWorksStackUseCustomCookbooks
-    , fmap (("UseOpsworksSecurityGroups",) . toJSON . fmap Bool') _opsWorksStackUseOpsworksSecurityGroups
-    , fmap (("VpcId",) . toJSON) _opsWorksStackVpcId
-    ]
+instance ToResourceProperties OpsWorksStack where
+  toResourceProperties OpsWorksStack{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::OpsWorks::Stack"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AgentVersion",) . toJSON) _opsWorksStackAgentVersion
+        , fmap (("Attributes",) . toJSON) _opsWorksStackAttributes
+        , fmap (("ChefConfiguration",) . toJSON) _opsWorksStackChefConfiguration
+        , fmap (("CloneAppIds",) . toJSON) _opsWorksStackCloneAppIds
+        , fmap (("ClonePermissions",) . toJSON . fmap Bool') _opsWorksStackClonePermissions
+        , fmap (("ConfigurationManager",) . toJSON) _opsWorksStackConfigurationManager
+        , fmap (("CustomCookbooksSource",) . toJSON) _opsWorksStackCustomCookbooksSource
+        , fmap (("CustomJson",) . toJSON) _opsWorksStackCustomJson
+        , fmap (("DefaultAvailabilityZone",) . toJSON) _opsWorksStackDefaultAvailabilityZone
+        , (Just . ("DefaultInstanceProfileArn",) . toJSON) _opsWorksStackDefaultInstanceProfileArn
+        , fmap (("DefaultOs",) . toJSON) _opsWorksStackDefaultOs
+        , fmap (("DefaultRootDeviceType",) . toJSON) _opsWorksStackDefaultRootDeviceType
+        , fmap (("DefaultSshKeyName",) . toJSON) _opsWorksStackDefaultSshKeyName
+        , fmap (("DefaultSubnetId",) . toJSON) _opsWorksStackDefaultSubnetId
+        , fmap (("EcsClusterArn",) . toJSON) _opsWorksStackEcsClusterArn
+        , fmap (("ElasticIps",) . toJSON) _opsWorksStackElasticIps
+        , fmap (("HostnameTheme",) . toJSON) _opsWorksStackHostnameTheme
+        , (Just . ("Name",) . toJSON) _opsWorksStackName
+        , fmap (("RdsDbInstances",) . toJSON) _opsWorksStackRdsDbInstances
+        , (Just . ("ServiceRoleArn",) . toJSON) _opsWorksStackServiceRoleArn
+        , fmap (("SourceStackId",) . toJSON) _opsWorksStackSourceStackId
+        , fmap (("Tags",) . toJSON) _opsWorksStackTags
+        , fmap (("UseCustomCookbooks",) . toJSON . fmap Bool') _opsWorksStackUseCustomCookbooks
+        , fmap (("UseOpsworksSecurityGroups",) . toJSON . fmap Bool') _opsWorksStackUseOpsworksSecurityGroups
+        , fmap (("VpcId",) . toJSON) _opsWorksStackVpcId
+        ]
+    }
 
 -- | Constructor for 'OpsWorksStack' containing required fields as arguments.
 opsWorksStack
diff --git a/library-gen/Stratosphere/Resources/OpsWorksUserProfile.hs b/library-gen/Stratosphere/Resources/OpsWorksUserProfile.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksUserProfile.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksUserProfile.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-userprofile.html
@@ -19,15 +20,18 @@
   , _opsWorksUserProfileSshUsername :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON OpsWorksUserProfile where
-  toJSON OpsWorksUserProfile{..} =
-    object $
-    catMaybes
-    [ fmap (("AllowSelfManagement",) . toJSON . fmap Bool') _opsWorksUserProfileAllowSelfManagement
-    , (Just . ("IamUserArn",) . toJSON) _opsWorksUserProfileIamUserArn
-    , fmap (("SshPublicKey",) . toJSON) _opsWorksUserProfileSshPublicKey
-    , fmap (("SshUsername",) . toJSON) _opsWorksUserProfileSshUsername
-    ]
+instance ToResourceProperties OpsWorksUserProfile where
+  toResourceProperties OpsWorksUserProfile{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::OpsWorks::UserProfile"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AllowSelfManagement",) . toJSON . fmap Bool') _opsWorksUserProfileAllowSelfManagement
+        , (Just . ("IamUserArn",) . toJSON) _opsWorksUserProfileIamUserArn
+        , fmap (("SshPublicKey",) . toJSON) _opsWorksUserProfileSshPublicKey
+        , fmap (("SshUsername",) . toJSON) _opsWorksUserProfileSshUsername
+        ]
+    }
 
 -- | Constructor for 'OpsWorksUserProfile' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/OpsWorksVolume.hs b/library-gen/Stratosphere/Resources/OpsWorksVolume.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksVolume.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksVolume.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html
@@ -19,15 +20,18 @@
   , _opsWorksVolumeStackId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON OpsWorksVolume where
-  toJSON OpsWorksVolume{..} =
-    object $
-    catMaybes
-    [ (Just . ("Ec2VolumeId",) . toJSON) _opsWorksVolumeEc2VolumeId
-    , fmap (("MountPoint",) . toJSON) _opsWorksVolumeMountPoint
-    , fmap (("Name",) . toJSON) _opsWorksVolumeName
-    , (Just . ("StackId",) . toJSON) _opsWorksVolumeStackId
-    ]
+instance ToResourceProperties OpsWorksVolume where
+  toResourceProperties OpsWorksVolume{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::OpsWorks::Volume"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Ec2VolumeId",) . toJSON) _opsWorksVolumeEc2VolumeId
+        , fmap (("MountPoint",) . toJSON) _opsWorksVolumeMountPoint
+        , fmap (("Name",) . toJSON) _opsWorksVolumeName
+        , (Just . ("StackId",) . toJSON) _opsWorksVolumeStackId
+        ]
+    }
 
 -- | Constructor for 'OpsWorksVolume' containing required fields as arguments.
 opsWorksVolume
diff --git a/library-gen/Stratosphere/Resources/RAMResourceShare.hs b/library-gen/Stratosphere/Resources/RAMResourceShare.hs
--- a/library-gen/Stratosphere/Resources/RAMResourceShare.hs
+++ b/library-gen/Stratosphere/Resources/RAMResourceShare.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ram-resourceshare.html
@@ -20,16 +21,19 @@
   , _rAMResourceShareTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON RAMResourceShare where
-  toJSON RAMResourceShare{..} =
-    object $
-    catMaybes
-    [ fmap (("AllowExternalPrincipals",) . toJSON . fmap Bool') _rAMResourceShareAllowExternalPrincipals
-    , (Just . ("Name",) . toJSON) _rAMResourceShareName
-    , fmap (("Principals",) . toJSON) _rAMResourceSharePrincipals
-    , fmap (("ResourceArns",) . toJSON) _rAMResourceShareResourceArns
-    , fmap (("Tags",) . toJSON) _rAMResourceShareTags
-    ]
+instance ToResourceProperties RAMResourceShare where
+  toResourceProperties RAMResourceShare{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RAM::ResourceShare"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AllowExternalPrincipals",) . toJSON . fmap Bool') _rAMResourceShareAllowExternalPrincipals
+        , (Just . ("Name",) . toJSON) _rAMResourceShareName
+        , fmap (("Principals",) . toJSON) _rAMResourceSharePrincipals
+        , fmap (("ResourceArns",) . toJSON) _rAMResourceShareResourceArns
+        , fmap (("Tags",) . toJSON) _rAMResourceShareTags
+        ]
+    }
 
 -- | Constructor for 'RAMResourceShare' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/RDSDBCluster.hs b/library-gen/Stratosphere/Resources/RDSDBCluster.hs
--- a/library-gen/Stratosphere/Resources/RDSDBCluster.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBCluster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html
@@ -42,37 +43,40 @@
   , _rDSDBClusterVpcSecurityGroupIds :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
-instance ToJSON RDSDBCluster where
-  toJSON RDSDBCluster{..} =
-    object $
-    catMaybes
-    [ fmap (("AvailabilityZones",) . toJSON) _rDSDBClusterAvailabilityZones
-    , fmap (("BacktrackWindow",) . toJSON . fmap Integer') _rDSDBClusterBacktrackWindow
-    , fmap (("BackupRetentionPeriod",) . toJSON . fmap Integer') _rDSDBClusterBackupRetentionPeriod
-    , fmap (("DBClusterIdentifier",) . toJSON) _rDSDBClusterDBClusterIdentifier
-    , fmap (("DBClusterParameterGroupName",) . toJSON) _rDSDBClusterDBClusterParameterGroupName
-    , fmap (("DBSubnetGroupName",) . toJSON) _rDSDBClusterDBSubnetGroupName
-    , fmap (("DatabaseName",) . toJSON) _rDSDBClusterDatabaseName
-    , fmap (("DeletionProtection",) . toJSON . fmap Bool') _rDSDBClusterDeletionProtection
-    , fmap (("EnableCloudwatchLogsExports",) . toJSON) _rDSDBClusterEnableCloudwatchLogsExports
-    , fmap (("EnableIAMDatabaseAuthentication",) . toJSON . fmap Bool') _rDSDBClusterEnableIAMDatabaseAuthentication
-    , (Just . ("Engine",) . toJSON) _rDSDBClusterEngine
-    , fmap (("EngineMode",) . toJSON) _rDSDBClusterEngineMode
-    , fmap (("EngineVersion",) . toJSON) _rDSDBClusterEngineVersion
-    , fmap (("KmsKeyId",) . toJSON) _rDSDBClusterKmsKeyId
-    , fmap (("MasterUserPassword",) . toJSON) _rDSDBClusterMasterUserPassword
-    , fmap (("MasterUsername",) . toJSON) _rDSDBClusterMasterUsername
-    , fmap (("Port",) . toJSON . fmap Integer') _rDSDBClusterPort
-    , fmap (("PreferredBackupWindow",) . toJSON) _rDSDBClusterPreferredBackupWindow
-    , fmap (("PreferredMaintenanceWindow",) . toJSON) _rDSDBClusterPreferredMaintenanceWindow
-    , fmap (("ReplicationSourceIdentifier",) . toJSON) _rDSDBClusterReplicationSourceIdentifier
-    , fmap (("ScalingConfiguration",) . toJSON) _rDSDBClusterScalingConfiguration
-    , fmap (("SnapshotIdentifier",) . toJSON) _rDSDBClusterSnapshotIdentifier
-    , fmap (("SourceRegion",) . toJSON) _rDSDBClusterSourceRegion
-    , fmap (("StorageEncrypted",) . toJSON . fmap Bool') _rDSDBClusterStorageEncrypted
-    , fmap (("Tags",) . toJSON) _rDSDBClusterTags
-    , fmap (("VpcSecurityGroupIds",) . toJSON) _rDSDBClusterVpcSecurityGroupIds
-    ]
+instance ToResourceProperties RDSDBCluster where
+  toResourceProperties RDSDBCluster{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RDS::DBCluster"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AvailabilityZones",) . toJSON) _rDSDBClusterAvailabilityZones
+        , fmap (("BacktrackWindow",) . toJSON . fmap Integer') _rDSDBClusterBacktrackWindow
+        , fmap (("BackupRetentionPeriod",) . toJSON . fmap Integer') _rDSDBClusterBackupRetentionPeriod
+        , fmap (("DBClusterIdentifier",) . toJSON) _rDSDBClusterDBClusterIdentifier
+        , fmap (("DBClusterParameterGroupName",) . toJSON) _rDSDBClusterDBClusterParameterGroupName
+        , fmap (("DBSubnetGroupName",) . toJSON) _rDSDBClusterDBSubnetGroupName
+        , fmap (("DatabaseName",) . toJSON) _rDSDBClusterDatabaseName
+        , fmap (("DeletionProtection",) . toJSON . fmap Bool') _rDSDBClusterDeletionProtection
+        , fmap (("EnableCloudwatchLogsExports",) . toJSON) _rDSDBClusterEnableCloudwatchLogsExports
+        , fmap (("EnableIAMDatabaseAuthentication",) . toJSON . fmap Bool') _rDSDBClusterEnableIAMDatabaseAuthentication
+        , (Just . ("Engine",) . toJSON) _rDSDBClusterEngine
+        , fmap (("EngineMode",) . toJSON) _rDSDBClusterEngineMode
+        , fmap (("EngineVersion",) . toJSON) _rDSDBClusterEngineVersion
+        , fmap (("KmsKeyId",) . toJSON) _rDSDBClusterKmsKeyId
+        , fmap (("MasterUserPassword",) . toJSON) _rDSDBClusterMasterUserPassword
+        , fmap (("MasterUsername",) . toJSON) _rDSDBClusterMasterUsername
+        , fmap (("Port",) . toJSON . fmap Integer') _rDSDBClusterPort
+        , fmap (("PreferredBackupWindow",) . toJSON) _rDSDBClusterPreferredBackupWindow
+        , fmap (("PreferredMaintenanceWindow",) . toJSON) _rDSDBClusterPreferredMaintenanceWindow
+        , fmap (("ReplicationSourceIdentifier",) . toJSON) _rDSDBClusterReplicationSourceIdentifier
+        , fmap (("ScalingConfiguration",) . toJSON) _rDSDBClusterScalingConfiguration
+        , fmap (("SnapshotIdentifier",) . toJSON) _rDSDBClusterSnapshotIdentifier
+        , fmap (("SourceRegion",) . toJSON) _rDSDBClusterSourceRegion
+        , fmap (("StorageEncrypted",) . toJSON . fmap Bool') _rDSDBClusterStorageEncrypted
+        , fmap (("Tags",) . toJSON) _rDSDBClusterTags
+        , fmap (("VpcSecurityGroupIds",) . toJSON) _rDSDBClusterVpcSecurityGroupIds
+        ]
+    }
 
 -- | Constructor for 'RDSDBCluster' containing required fields as arguments.
 rdsdbCluster
diff --git a/library-gen/Stratosphere/Resources/RDSDBClusterParameterGroup.hs b/library-gen/Stratosphere/Resources/RDSDBClusterParameterGroup.hs
--- a/library-gen/Stratosphere/Resources/RDSDBClusterParameterGroup.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBClusterParameterGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html
@@ -19,15 +20,18 @@
   , _rDSDBClusterParameterGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON RDSDBClusterParameterGroup where
-  toJSON RDSDBClusterParameterGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("Description",) . toJSON) _rDSDBClusterParameterGroupDescription
-    , (Just . ("Family",) . toJSON) _rDSDBClusterParameterGroupFamily
-    , (Just . ("Parameters",) . toJSON) _rDSDBClusterParameterGroupParameters
-    , fmap (("Tags",) . toJSON) _rDSDBClusterParameterGroupTags
-    ]
+instance ToResourceProperties RDSDBClusterParameterGroup where
+  toResourceProperties RDSDBClusterParameterGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RDS::DBClusterParameterGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Description",) . toJSON) _rDSDBClusterParameterGroupDescription
+        , (Just . ("Family",) . toJSON) _rDSDBClusterParameterGroupFamily
+        , (Just . ("Parameters",) . toJSON) _rDSDBClusterParameterGroupParameters
+        , fmap (("Tags",) . toJSON) _rDSDBClusterParameterGroupTags
+        ]
+    }
 
 -- | Constructor for 'RDSDBClusterParameterGroup' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/RDSDBInstance.hs b/library-gen/Stratosphere/Resources/RDSDBInstance.hs
--- a/library-gen/Stratosphere/Resources/RDSDBInstance.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBInstance.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html
@@ -65,60 +66,63 @@
   , _rDSDBInstanceVPCSecurityGroups :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
-instance ToJSON RDSDBInstance where
-  toJSON RDSDBInstance{..} =
-    object $
-    catMaybes
-    [ fmap (("AllocatedStorage",) . toJSON) _rDSDBInstanceAllocatedStorage
-    , fmap (("AllowMajorVersionUpgrade",) . toJSON . fmap Bool') _rDSDBInstanceAllowMajorVersionUpgrade
-    , fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _rDSDBInstanceAutoMinorVersionUpgrade
-    , fmap (("AvailabilityZone",) . toJSON) _rDSDBInstanceAvailabilityZone
-    , fmap (("BackupRetentionPeriod",) . toJSON) _rDSDBInstanceBackupRetentionPeriod
-    , fmap (("CharacterSetName",) . toJSON) _rDSDBInstanceCharacterSetName
-    , fmap (("CopyTagsToSnapshot",) . toJSON . fmap Bool') _rDSDBInstanceCopyTagsToSnapshot
-    , fmap (("DBClusterIdentifier",) . toJSON) _rDSDBInstanceDBClusterIdentifier
-    , (Just . ("DBInstanceClass",) . toJSON) _rDSDBInstanceDBInstanceClass
-    , fmap (("DBInstanceIdentifier",) . toJSON) _rDSDBInstanceDBInstanceIdentifier
-    , fmap (("DBName",) . toJSON) _rDSDBInstanceDBName
-    , fmap (("DBParameterGroupName",) . toJSON) _rDSDBInstanceDBParameterGroupName
-    , fmap (("DBSecurityGroups",) . toJSON) _rDSDBInstanceDBSecurityGroups
-    , fmap (("DBSnapshotIdentifier",) . toJSON) _rDSDBInstanceDBSnapshotIdentifier
-    , fmap (("DBSubnetGroupName",) . toJSON) _rDSDBInstanceDBSubnetGroupName
-    , fmap (("DeleteAutomatedBackups",) . toJSON . fmap Bool') _rDSDBInstanceDeleteAutomatedBackups
-    , fmap (("DeletionProtection",) . toJSON . fmap Bool') _rDSDBInstanceDeletionProtection
-    , fmap (("Domain",) . toJSON) _rDSDBInstanceDomain
-    , fmap (("DomainIAMRoleName",) . toJSON) _rDSDBInstanceDomainIAMRoleName
-    , fmap (("EnableCloudwatchLogsExports",) . toJSON) _rDSDBInstanceEnableCloudwatchLogsExports
-    , fmap (("EnableIAMDatabaseAuthentication",) . toJSON . fmap Bool') _rDSDBInstanceEnableIAMDatabaseAuthentication
-    , fmap (("EnablePerformanceInsights",) . toJSON . fmap Bool') _rDSDBInstanceEnablePerformanceInsights
-    , fmap (("Engine",) . toJSON) _rDSDBInstanceEngine
-    , fmap (("EngineVersion",) . toJSON) _rDSDBInstanceEngineVersion
-    , fmap (("Iops",) . toJSON . fmap Integer') _rDSDBInstanceIops
-    , fmap (("KmsKeyId",) . toJSON) _rDSDBInstanceKmsKeyId
-    , fmap (("LicenseModel",) . toJSON) _rDSDBInstanceLicenseModel
-    , fmap (("MasterUserPassword",) . toJSON) _rDSDBInstanceMasterUserPassword
-    , fmap (("MasterUsername",) . toJSON) _rDSDBInstanceMasterUsername
-    , fmap (("MonitoringInterval",) . toJSON . fmap Integer') _rDSDBInstanceMonitoringInterval
-    , fmap (("MonitoringRoleArn",) . toJSON) _rDSDBInstanceMonitoringRoleArn
-    , fmap (("MultiAZ",) . toJSON . fmap Bool') _rDSDBInstanceMultiAZ
-    , fmap (("OptionGroupName",) . toJSON) _rDSDBInstanceOptionGroupName
-    , fmap (("PerformanceInsightsKMSKeyId",) . toJSON) _rDSDBInstancePerformanceInsightsKMSKeyId
-    , fmap (("PerformanceInsightsRetentionPeriod",) . toJSON . fmap Integer') _rDSDBInstancePerformanceInsightsRetentionPeriod
-    , fmap (("Port",) . toJSON) _rDSDBInstancePort
-    , fmap (("PreferredBackupWindow",) . toJSON) _rDSDBInstancePreferredBackupWindow
-    , fmap (("PreferredMaintenanceWindow",) . toJSON) _rDSDBInstancePreferredMaintenanceWindow
-    , fmap (("ProcessorFeatures",) . toJSON) _rDSDBInstanceProcessorFeatures
-    , fmap (("PromotionTier",) . toJSON . fmap Integer') _rDSDBInstancePromotionTier
-    , fmap (("PubliclyAccessible",) . toJSON . fmap Bool') _rDSDBInstancePubliclyAccessible
-    , fmap (("SourceDBInstanceIdentifier",) . toJSON) _rDSDBInstanceSourceDBInstanceIdentifier
-    , fmap (("SourceRegion",) . toJSON) _rDSDBInstanceSourceRegion
-    , fmap (("StorageEncrypted",) . toJSON . fmap Bool') _rDSDBInstanceStorageEncrypted
-    , fmap (("StorageType",) . toJSON) _rDSDBInstanceStorageType
-    , fmap (("Tags",) . toJSON) _rDSDBInstanceTags
-    , fmap (("Timezone",) . toJSON) _rDSDBInstanceTimezone
-    , fmap (("UseDefaultProcessorFeatures",) . toJSON . fmap Bool') _rDSDBInstanceUseDefaultProcessorFeatures
-    , fmap (("VPCSecurityGroups",) . toJSON) _rDSDBInstanceVPCSecurityGroups
-    ]
+instance ToResourceProperties RDSDBInstance where
+  toResourceProperties RDSDBInstance{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RDS::DBInstance"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AllocatedStorage",) . toJSON) _rDSDBInstanceAllocatedStorage
+        , fmap (("AllowMajorVersionUpgrade",) . toJSON . fmap Bool') _rDSDBInstanceAllowMajorVersionUpgrade
+        , fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _rDSDBInstanceAutoMinorVersionUpgrade
+        , fmap (("AvailabilityZone",) . toJSON) _rDSDBInstanceAvailabilityZone
+        , fmap (("BackupRetentionPeriod",) . toJSON) _rDSDBInstanceBackupRetentionPeriod
+        , fmap (("CharacterSetName",) . toJSON) _rDSDBInstanceCharacterSetName
+        , fmap (("CopyTagsToSnapshot",) . toJSON . fmap Bool') _rDSDBInstanceCopyTagsToSnapshot
+        , fmap (("DBClusterIdentifier",) . toJSON) _rDSDBInstanceDBClusterIdentifier
+        , (Just . ("DBInstanceClass",) . toJSON) _rDSDBInstanceDBInstanceClass
+        , fmap (("DBInstanceIdentifier",) . toJSON) _rDSDBInstanceDBInstanceIdentifier
+        , fmap (("DBName",) . toJSON) _rDSDBInstanceDBName
+        , fmap (("DBParameterGroupName",) . toJSON) _rDSDBInstanceDBParameterGroupName
+        , fmap (("DBSecurityGroups",) . toJSON) _rDSDBInstanceDBSecurityGroups
+        , fmap (("DBSnapshotIdentifier",) . toJSON) _rDSDBInstanceDBSnapshotIdentifier
+        , fmap (("DBSubnetGroupName",) . toJSON) _rDSDBInstanceDBSubnetGroupName
+        , fmap (("DeleteAutomatedBackups",) . toJSON . fmap Bool') _rDSDBInstanceDeleteAutomatedBackups
+        , fmap (("DeletionProtection",) . toJSON . fmap Bool') _rDSDBInstanceDeletionProtection
+        , fmap (("Domain",) . toJSON) _rDSDBInstanceDomain
+        , fmap (("DomainIAMRoleName",) . toJSON) _rDSDBInstanceDomainIAMRoleName
+        , fmap (("EnableCloudwatchLogsExports",) . toJSON) _rDSDBInstanceEnableCloudwatchLogsExports
+        , fmap (("EnableIAMDatabaseAuthentication",) . toJSON . fmap Bool') _rDSDBInstanceEnableIAMDatabaseAuthentication
+        , fmap (("EnablePerformanceInsights",) . toJSON . fmap Bool') _rDSDBInstanceEnablePerformanceInsights
+        , fmap (("Engine",) . toJSON) _rDSDBInstanceEngine
+        , fmap (("EngineVersion",) . toJSON) _rDSDBInstanceEngineVersion
+        , fmap (("Iops",) . toJSON . fmap Integer') _rDSDBInstanceIops
+        , fmap (("KmsKeyId",) . toJSON) _rDSDBInstanceKmsKeyId
+        , fmap (("LicenseModel",) . toJSON) _rDSDBInstanceLicenseModel
+        , fmap (("MasterUserPassword",) . toJSON) _rDSDBInstanceMasterUserPassword
+        , fmap (("MasterUsername",) . toJSON) _rDSDBInstanceMasterUsername
+        , fmap (("MonitoringInterval",) . toJSON . fmap Integer') _rDSDBInstanceMonitoringInterval
+        , fmap (("MonitoringRoleArn",) . toJSON) _rDSDBInstanceMonitoringRoleArn
+        , fmap (("MultiAZ",) . toJSON . fmap Bool') _rDSDBInstanceMultiAZ
+        , fmap (("OptionGroupName",) . toJSON) _rDSDBInstanceOptionGroupName
+        , fmap (("PerformanceInsightsKMSKeyId",) . toJSON) _rDSDBInstancePerformanceInsightsKMSKeyId
+        , fmap (("PerformanceInsightsRetentionPeriod",) . toJSON . fmap Integer') _rDSDBInstancePerformanceInsightsRetentionPeriod
+        , fmap (("Port",) . toJSON) _rDSDBInstancePort
+        , fmap (("PreferredBackupWindow",) . toJSON) _rDSDBInstancePreferredBackupWindow
+        , fmap (("PreferredMaintenanceWindow",) . toJSON) _rDSDBInstancePreferredMaintenanceWindow
+        , fmap (("ProcessorFeatures",) . toJSON) _rDSDBInstanceProcessorFeatures
+        , fmap (("PromotionTier",) . toJSON . fmap Integer') _rDSDBInstancePromotionTier
+        , fmap (("PubliclyAccessible",) . toJSON . fmap Bool') _rDSDBInstancePubliclyAccessible
+        , fmap (("SourceDBInstanceIdentifier",) . toJSON) _rDSDBInstanceSourceDBInstanceIdentifier
+        , fmap (("SourceRegion",) . toJSON) _rDSDBInstanceSourceRegion
+        , fmap (("StorageEncrypted",) . toJSON . fmap Bool') _rDSDBInstanceStorageEncrypted
+        , fmap (("StorageType",) . toJSON) _rDSDBInstanceStorageType
+        , fmap (("Tags",) . toJSON) _rDSDBInstanceTags
+        , fmap (("Timezone",) . toJSON) _rDSDBInstanceTimezone
+        , fmap (("UseDefaultProcessorFeatures",) . toJSON . fmap Bool') _rDSDBInstanceUseDefaultProcessorFeatures
+        , fmap (("VPCSecurityGroups",) . toJSON) _rDSDBInstanceVPCSecurityGroups
+        ]
+    }
 
 -- | Constructor for 'RDSDBInstance' containing required fields as arguments.
 rdsdbInstance
diff --git a/library-gen/Stratosphere/Resources/RDSDBParameterGroup.hs b/library-gen/Stratosphere/Resources/RDSDBParameterGroup.hs
--- a/library-gen/Stratosphere/Resources/RDSDBParameterGroup.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBParameterGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html
@@ -19,15 +20,18 @@
   , _rDSDBParameterGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON RDSDBParameterGroup where
-  toJSON RDSDBParameterGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("Description",) . toJSON) _rDSDBParameterGroupDescription
-    , (Just . ("Family",) . toJSON) _rDSDBParameterGroupFamily
-    , fmap (("Parameters",) . toJSON) _rDSDBParameterGroupParameters
-    , fmap (("Tags",) . toJSON) _rDSDBParameterGroupTags
-    ]
+instance ToResourceProperties RDSDBParameterGroup where
+  toResourceProperties RDSDBParameterGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RDS::DBParameterGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Description",) . toJSON) _rDSDBParameterGroupDescription
+        , (Just . ("Family",) . toJSON) _rDSDBParameterGroupFamily
+        , fmap (("Parameters",) . toJSON) _rDSDBParameterGroupParameters
+        , fmap (("Tags",) . toJSON) _rDSDBParameterGroupTags
+        ]
+    }
 
 -- | Constructor for 'RDSDBParameterGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/RDSDBSecurityGroup.hs b/library-gen/Stratosphere/Resources/RDSDBSecurityGroup.hs
--- a/library-gen/Stratosphere/Resources/RDSDBSecurityGroup.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBSecurityGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group.html
@@ -20,15 +21,18 @@
   , _rDSDBSecurityGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON RDSDBSecurityGroup where
-  toJSON RDSDBSecurityGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("DBSecurityGroupIngress",) . toJSON) _rDSDBSecurityGroupDBSecurityGroupIngress
-    , fmap (("EC2VpcId",) . toJSON) _rDSDBSecurityGroupEC2VpcId
-    , (Just . ("GroupDescription",) . toJSON) _rDSDBSecurityGroupGroupDescription
-    , fmap (("Tags",) . toJSON) _rDSDBSecurityGroupTags
-    ]
+instance ToResourceProperties RDSDBSecurityGroup where
+  toResourceProperties RDSDBSecurityGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RDS::DBSecurityGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DBSecurityGroupIngress",) . toJSON) _rDSDBSecurityGroupDBSecurityGroupIngress
+        , fmap (("EC2VpcId",) . toJSON) _rDSDBSecurityGroupEC2VpcId
+        , (Just . ("GroupDescription",) . toJSON) _rDSDBSecurityGroupGroupDescription
+        , fmap (("Tags",) . toJSON) _rDSDBSecurityGroupTags
+        ]
+    }
 
 -- | Constructor for 'RDSDBSecurityGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/RDSDBSecurityGroupIngress.hs b/library-gen/Stratosphere/Resources/RDSDBSecurityGroupIngress.hs
--- a/library-gen/Stratosphere/Resources/RDSDBSecurityGroupIngress.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBSecurityGroupIngress.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-security-group-ingress.html
@@ -20,16 +21,19 @@
   , _rDSDBSecurityGroupIngressEC2SecurityGroupOwnerId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON RDSDBSecurityGroupIngress where
-  toJSON RDSDBSecurityGroupIngress{..} =
-    object $
-    catMaybes
-    [ fmap (("CIDRIP",) . toJSON) _rDSDBSecurityGroupIngressCIDRIP
-    , (Just . ("DBSecurityGroupName",) . toJSON) _rDSDBSecurityGroupIngressDBSecurityGroupName
-    , fmap (("EC2SecurityGroupId",) . toJSON) _rDSDBSecurityGroupIngressEC2SecurityGroupId
-    , fmap (("EC2SecurityGroupName",) . toJSON) _rDSDBSecurityGroupIngressEC2SecurityGroupName
-    , fmap (("EC2SecurityGroupOwnerId",) . toJSON) _rDSDBSecurityGroupIngressEC2SecurityGroupOwnerId
-    ]
+instance ToResourceProperties RDSDBSecurityGroupIngress where
+  toResourceProperties RDSDBSecurityGroupIngress{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RDS::DBSecurityGroupIngress"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CIDRIP",) . toJSON) _rDSDBSecurityGroupIngressCIDRIP
+        , (Just . ("DBSecurityGroupName",) . toJSON) _rDSDBSecurityGroupIngressDBSecurityGroupName
+        , fmap (("EC2SecurityGroupId",) . toJSON) _rDSDBSecurityGroupIngressEC2SecurityGroupId
+        , fmap (("EC2SecurityGroupName",) . toJSON) _rDSDBSecurityGroupIngressEC2SecurityGroupName
+        , fmap (("EC2SecurityGroupOwnerId",) . toJSON) _rDSDBSecurityGroupIngressEC2SecurityGroupOwnerId
+        ]
+    }
 
 -- | Constructor for 'RDSDBSecurityGroupIngress' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/RDSDBSubnetGroup.hs b/library-gen/Stratosphere/Resources/RDSDBSubnetGroup.hs
--- a/library-gen/Stratosphere/Resources/RDSDBSubnetGroup.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBSubnetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnet-group.html
@@ -19,15 +20,18 @@
   , _rDSDBSubnetGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON RDSDBSubnetGroup where
-  toJSON RDSDBSubnetGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("DBSubnetGroupDescription",) . toJSON) _rDSDBSubnetGroupDBSubnetGroupDescription
-    , fmap (("DBSubnetGroupName",) . toJSON) _rDSDBSubnetGroupDBSubnetGroupName
-    , (Just . ("SubnetIds",) . toJSON) _rDSDBSubnetGroupSubnetIds
-    , fmap (("Tags",) . toJSON) _rDSDBSubnetGroupTags
-    ]
+instance ToResourceProperties RDSDBSubnetGroup where
+  toResourceProperties RDSDBSubnetGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RDS::DBSubnetGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DBSubnetGroupDescription",) . toJSON) _rDSDBSubnetGroupDBSubnetGroupDescription
+        , fmap (("DBSubnetGroupName",) . toJSON) _rDSDBSubnetGroupDBSubnetGroupName
+        , (Just . ("SubnetIds",) . toJSON) _rDSDBSubnetGroupSubnetIds
+        , fmap (("Tags",) . toJSON) _rDSDBSubnetGroupTags
+        ]
+    }
 
 -- | Constructor for 'RDSDBSubnetGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/RDSEventSubscription.hs b/library-gen/Stratosphere/Resources/RDSEventSubscription.hs
--- a/library-gen/Stratosphere/Resources/RDSEventSubscription.hs
+++ b/library-gen/Stratosphere/Resources/RDSEventSubscription.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html
@@ -20,16 +21,19 @@
   , _rDSEventSubscriptionSourceType :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON RDSEventSubscription where
-  toJSON RDSEventSubscription{..} =
-    object $
-    catMaybes
-    [ fmap (("Enabled",) . toJSON . fmap Bool') _rDSEventSubscriptionEnabled
-    , fmap (("EventCategories",) . toJSON) _rDSEventSubscriptionEventCategories
-    , (Just . ("SnsTopicArn",) . toJSON) _rDSEventSubscriptionSnsTopicArn
-    , fmap (("SourceIds",) . toJSON) _rDSEventSubscriptionSourceIds
-    , fmap (("SourceType",) . toJSON) _rDSEventSubscriptionSourceType
-    ]
+instance ToResourceProperties RDSEventSubscription where
+  toResourceProperties RDSEventSubscription{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RDS::EventSubscription"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Enabled",) . toJSON . fmap Bool') _rDSEventSubscriptionEnabled
+        , fmap (("EventCategories",) . toJSON) _rDSEventSubscriptionEventCategories
+        , (Just . ("SnsTopicArn",) . toJSON) _rDSEventSubscriptionSnsTopicArn
+        , fmap (("SourceIds",) . toJSON) _rDSEventSubscriptionSourceIds
+        , fmap (("SourceType",) . toJSON) _rDSEventSubscriptionSourceType
+        ]
+    }
 
 -- | Constructor for 'RDSEventSubscription' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/RDSOptionGroup.hs b/library-gen/Stratosphere/Resources/RDSOptionGroup.hs
--- a/library-gen/Stratosphere/Resources/RDSOptionGroup.hs
+++ b/library-gen/Stratosphere/Resources/RDSOptionGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html
@@ -21,16 +22,19 @@
   , _rDSOptionGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON RDSOptionGroup where
-  toJSON RDSOptionGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("EngineName",) . toJSON) _rDSOptionGroupEngineName
-    , (Just . ("MajorEngineVersion",) . toJSON) _rDSOptionGroupMajorEngineVersion
-    , (Just . ("OptionConfigurations",) . toJSON) _rDSOptionGroupOptionConfigurations
-    , (Just . ("OptionGroupDescription",) . toJSON) _rDSOptionGroupOptionGroupDescription
-    , fmap (("Tags",) . toJSON) _rDSOptionGroupTags
-    ]
+instance ToResourceProperties RDSOptionGroup where
+  toResourceProperties RDSOptionGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RDS::OptionGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("EngineName",) . toJSON) _rDSOptionGroupEngineName
+        , (Just . ("MajorEngineVersion",) . toJSON) _rDSOptionGroupMajorEngineVersion
+        , (Just . ("OptionConfigurations",) . toJSON) _rDSOptionGroupOptionConfigurations
+        , (Just . ("OptionGroupDescription",) . toJSON) _rDSOptionGroupOptionGroupDescription
+        , fmap (("Tags",) . toJSON) _rDSOptionGroupTags
+        ]
+    }
 
 -- | Constructor for 'RDSOptionGroup' containing required fields as arguments.
 rdsOptionGroup
diff --git a/library-gen/Stratosphere/Resources/RedshiftCluster.hs b/library-gen/Stratosphere/Resources/RedshiftCluster.hs
--- a/library-gen/Stratosphere/Resources/RedshiftCluster.hs
+++ b/library-gen/Stratosphere/Resources/RedshiftCluster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html
@@ -45,40 +46,43 @@
   , _redshiftClusterVpcSecurityGroupIds :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
-instance ToJSON RedshiftCluster where
-  toJSON RedshiftCluster{..} =
-    object $
-    catMaybes
-    [ fmap (("AllowVersionUpgrade",) . toJSON . fmap Bool') _redshiftClusterAllowVersionUpgrade
-    , fmap (("AutomatedSnapshotRetentionPeriod",) . toJSON . fmap Integer') _redshiftClusterAutomatedSnapshotRetentionPeriod
-    , fmap (("AvailabilityZone",) . toJSON) _redshiftClusterAvailabilityZone
-    , fmap (("ClusterIdentifier",) . toJSON) _redshiftClusterClusterIdentifier
-    , fmap (("ClusterParameterGroupName",) . toJSON) _redshiftClusterClusterParameterGroupName
-    , fmap (("ClusterSecurityGroups",) . toJSON) _redshiftClusterClusterSecurityGroups
-    , fmap (("ClusterSubnetGroupName",) . toJSON) _redshiftClusterClusterSubnetGroupName
-    , (Just . ("ClusterType",) . toJSON) _redshiftClusterClusterType
-    , fmap (("ClusterVersion",) . toJSON) _redshiftClusterClusterVersion
-    , (Just . ("DBName",) . toJSON) _redshiftClusterDBName
-    , fmap (("ElasticIp",) . toJSON) _redshiftClusterElasticIp
-    , fmap (("Encrypted",) . toJSON . fmap Bool') _redshiftClusterEncrypted
-    , fmap (("HsmClientCertificateIdentifier",) . toJSON) _redshiftClusterHsmClientCertificateIdentifier
-    , fmap (("HsmConfigurationIdentifier",) . toJSON) _redshiftClusterHsmConfigurationIdentifier
-    , fmap (("IamRoles",) . toJSON) _redshiftClusterIamRoles
-    , fmap (("KmsKeyId",) . toJSON) _redshiftClusterKmsKeyId
-    , fmap (("LoggingProperties",) . toJSON) _redshiftClusterLoggingProperties
-    , (Just . ("MasterUserPassword",) . toJSON) _redshiftClusterMasterUserPassword
-    , (Just . ("MasterUsername",) . toJSON) _redshiftClusterMasterUsername
-    , (Just . ("NodeType",) . toJSON) _redshiftClusterNodeType
-    , fmap (("NumberOfNodes",) . toJSON . fmap Integer') _redshiftClusterNumberOfNodes
-    , fmap (("OwnerAccount",) . toJSON) _redshiftClusterOwnerAccount
-    , fmap (("Port",) . toJSON . fmap Integer') _redshiftClusterPort
-    , fmap (("PreferredMaintenanceWindow",) . toJSON) _redshiftClusterPreferredMaintenanceWindow
-    , fmap (("PubliclyAccessible",) . toJSON . fmap Bool') _redshiftClusterPubliclyAccessible
-    , fmap (("SnapshotClusterIdentifier",) . toJSON) _redshiftClusterSnapshotClusterIdentifier
-    , fmap (("SnapshotIdentifier",) . toJSON) _redshiftClusterSnapshotIdentifier
-    , fmap (("Tags",) . toJSON) _redshiftClusterTags
-    , fmap (("VpcSecurityGroupIds",) . toJSON) _redshiftClusterVpcSecurityGroupIds
-    ]
+instance ToResourceProperties RedshiftCluster where
+  toResourceProperties RedshiftCluster{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Redshift::Cluster"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AllowVersionUpgrade",) . toJSON . fmap Bool') _redshiftClusterAllowVersionUpgrade
+        , fmap (("AutomatedSnapshotRetentionPeriod",) . toJSON . fmap Integer') _redshiftClusterAutomatedSnapshotRetentionPeriod
+        , fmap (("AvailabilityZone",) . toJSON) _redshiftClusterAvailabilityZone
+        , fmap (("ClusterIdentifier",) . toJSON) _redshiftClusterClusterIdentifier
+        , fmap (("ClusterParameterGroupName",) . toJSON) _redshiftClusterClusterParameterGroupName
+        , fmap (("ClusterSecurityGroups",) . toJSON) _redshiftClusterClusterSecurityGroups
+        , fmap (("ClusterSubnetGroupName",) . toJSON) _redshiftClusterClusterSubnetGroupName
+        , (Just . ("ClusterType",) . toJSON) _redshiftClusterClusterType
+        , fmap (("ClusterVersion",) . toJSON) _redshiftClusterClusterVersion
+        , (Just . ("DBName",) . toJSON) _redshiftClusterDBName
+        , fmap (("ElasticIp",) . toJSON) _redshiftClusterElasticIp
+        , fmap (("Encrypted",) . toJSON . fmap Bool') _redshiftClusterEncrypted
+        , fmap (("HsmClientCertificateIdentifier",) . toJSON) _redshiftClusterHsmClientCertificateIdentifier
+        , fmap (("HsmConfigurationIdentifier",) . toJSON) _redshiftClusterHsmConfigurationIdentifier
+        , fmap (("IamRoles",) . toJSON) _redshiftClusterIamRoles
+        , fmap (("KmsKeyId",) . toJSON) _redshiftClusterKmsKeyId
+        , fmap (("LoggingProperties",) . toJSON) _redshiftClusterLoggingProperties
+        , (Just . ("MasterUserPassword",) . toJSON) _redshiftClusterMasterUserPassword
+        , (Just . ("MasterUsername",) . toJSON) _redshiftClusterMasterUsername
+        , (Just . ("NodeType",) . toJSON) _redshiftClusterNodeType
+        , fmap (("NumberOfNodes",) . toJSON . fmap Integer') _redshiftClusterNumberOfNodes
+        , fmap (("OwnerAccount",) . toJSON) _redshiftClusterOwnerAccount
+        , fmap (("Port",) . toJSON . fmap Integer') _redshiftClusterPort
+        , fmap (("PreferredMaintenanceWindow",) . toJSON) _redshiftClusterPreferredMaintenanceWindow
+        , fmap (("PubliclyAccessible",) . toJSON . fmap Bool') _redshiftClusterPubliclyAccessible
+        , fmap (("SnapshotClusterIdentifier",) . toJSON) _redshiftClusterSnapshotClusterIdentifier
+        , fmap (("SnapshotIdentifier",) . toJSON) _redshiftClusterSnapshotIdentifier
+        , fmap (("Tags",) . toJSON) _redshiftClusterTags
+        , fmap (("VpcSecurityGroupIds",) . toJSON) _redshiftClusterVpcSecurityGroupIds
+        ]
+    }
 
 -- | Constructor for 'RedshiftCluster' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/RedshiftClusterParameterGroup.hs b/library-gen/Stratosphere/Resources/RedshiftClusterParameterGroup.hs
--- a/library-gen/Stratosphere/Resources/RedshiftClusterParameterGroup.hs
+++ b/library-gen/Stratosphere/Resources/RedshiftClusterParameterGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clusterparametergroup.html
@@ -20,15 +21,18 @@
   , _redshiftClusterParameterGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON RedshiftClusterParameterGroup where
-  toJSON RedshiftClusterParameterGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("Description",) . toJSON) _redshiftClusterParameterGroupDescription
-    , (Just . ("ParameterGroupFamily",) . toJSON) _redshiftClusterParameterGroupParameterGroupFamily
-    , fmap (("Parameters",) . toJSON) _redshiftClusterParameterGroupParameters
-    , fmap (("Tags",) . toJSON) _redshiftClusterParameterGroupTags
-    ]
+instance ToResourceProperties RedshiftClusterParameterGroup where
+  toResourceProperties RedshiftClusterParameterGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Redshift::ClusterParameterGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Description",) . toJSON) _redshiftClusterParameterGroupDescription
+        , (Just . ("ParameterGroupFamily",) . toJSON) _redshiftClusterParameterGroupParameterGroupFamily
+        , fmap (("Parameters",) . toJSON) _redshiftClusterParameterGroupParameters
+        , fmap (("Tags",) . toJSON) _redshiftClusterParameterGroupTags
+        ]
+    }
 
 -- | Constructor for 'RedshiftClusterParameterGroup' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroup.hs b/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroup.hs
--- a/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroup.hs
+++ b/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroup.html
@@ -17,13 +18,16 @@
   , _redshiftClusterSecurityGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON RedshiftClusterSecurityGroup where
-  toJSON RedshiftClusterSecurityGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("Description",) . toJSON) _redshiftClusterSecurityGroupDescription
-    , fmap (("Tags",) . toJSON) _redshiftClusterSecurityGroupTags
-    ]
+instance ToResourceProperties RedshiftClusterSecurityGroup where
+  toResourceProperties RedshiftClusterSecurityGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Redshift::ClusterSecurityGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Description",) . toJSON) _redshiftClusterSecurityGroupDescription
+        , fmap (("Tags",) . toJSON) _redshiftClusterSecurityGroupTags
+        ]
+    }
 
 -- | Constructor for 'RedshiftClusterSecurityGroup' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroupIngress.hs b/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroupIngress.hs
--- a/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroupIngress.hs
+++ b/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroupIngress.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroupingress.html
@@ -19,15 +20,18 @@
   , _redshiftClusterSecurityGroupIngressEC2SecurityGroupOwnerId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON RedshiftClusterSecurityGroupIngress where
-  toJSON RedshiftClusterSecurityGroupIngress{..} =
-    object $
-    catMaybes
-    [ fmap (("CIDRIP",) . toJSON) _redshiftClusterSecurityGroupIngressCIDRIP
-    , (Just . ("ClusterSecurityGroupName",) . toJSON) _redshiftClusterSecurityGroupIngressClusterSecurityGroupName
-    , fmap (("EC2SecurityGroupName",) . toJSON) _redshiftClusterSecurityGroupIngressEC2SecurityGroupName
-    , fmap (("EC2SecurityGroupOwnerId",) . toJSON) _redshiftClusterSecurityGroupIngressEC2SecurityGroupOwnerId
-    ]
+instance ToResourceProperties RedshiftClusterSecurityGroupIngress where
+  toResourceProperties RedshiftClusterSecurityGroupIngress{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Redshift::ClusterSecurityGroupIngress"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CIDRIP",) . toJSON) _redshiftClusterSecurityGroupIngressCIDRIP
+        , (Just . ("ClusterSecurityGroupName",) . toJSON) _redshiftClusterSecurityGroupIngressClusterSecurityGroupName
+        , fmap (("EC2SecurityGroupName",) . toJSON) _redshiftClusterSecurityGroupIngressEC2SecurityGroupName
+        , fmap (("EC2SecurityGroupOwnerId",) . toJSON) _redshiftClusterSecurityGroupIngressEC2SecurityGroupOwnerId
+        ]
+    }
 
 -- | Constructor for 'RedshiftClusterSecurityGroupIngress' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/RedshiftClusterSubnetGroup.hs b/library-gen/Stratosphere/Resources/RedshiftClusterSubnetGroup.hs
--- a/library-gen/Stratosphere/Resources/RedshiftClusterSubnetGroup.hs
+++ b/library-gen/Stratosphere/Resources/RedshiftClusterSubnetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersubnetgroup.html
@@ -18,14 +19,17 @@
   , _redshiftClusterSubnetGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON RedshiftClusterSubnetGroup where
-  toJSON RedshiftClusterSubnetGroup{..} =
-    object $
-    catMaybes
-    [ (Just . ("Description",) . toJSON) _redshiftClusterSubnetGroupDescription
-    , (Just . ("SubnetIds",) . toJSON) _redshiftClusterSubnetGroupSubnetIds
-    , fmap (("Tags",) . toJSON) _redshiftClusterSubnetGroupTags
-    ]
+instance ToResourceProperties RedshiftClusterSubnetGroup where
+  toResourceProperties RedshiftClusterSubnetGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Redshift::ClusterSubnetGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Description",) . toJSON) _redshiftClusterSubnetGroupDescription
+        , (Just . ("SubnetIds",) . toJSON) _redshiftClusterSubnetGroupSubnetIds
+        , fmap (("Tags",) . toJSON) _redshiftClusterSubnetGroupTags
+        ]
+    }
 
 -- | Constructor for 'RedshiftClusterSubnetGroup' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/RoboMakerFleet.hs b/library-gen/Stratosphere/Resources/RoboMakerFleet.hs
--- a/library-gen/Stratosphere/Resources/RoboMakerFleet.hs
+++ b/library-gen/Stratosphere/Resources/RoboMakerFleet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-robomaker-fleet.html
@@ -17,13 +18,16 @@
   , _roboMakerFleetTags :: Maybe Object
   } deriving (Show, Eq)
 
-instance ToJSON RoboMakerFleet where
-  toJSON RoboMakerFleet{..} =
-    object $
-    catMaybes
-    [ fmap (("Name",) . toJSON) _roboMakerFleetName
-    , fmap (("Tags",) . toJSON) _roboMakerFleetTags
-    ]
+instance ToResourceProperties RoboMakerFleet where
+  toResourceProperties RoboMakerFleet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RoboMaker::Fleet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Name",) . toJSON) _roboMakerFleetName
+        , fmap (("Tags",) . toJSON) _roboMakerFleetTags
+        ]
+    }
 
 -- | Constructor for 'RoboMakerFleet' containing required fields as arguments.
 roboMakerFleet
diff --git a/library-gen/Stratosphere/Resources/RoboMakerRobot.hs b/library-gen/Stratosphere/Resources/RoboMakerRobot.hs
--- a/library-gen/Stratosphere/Resources/RoboMakerRobot.hs
+++ b/library-gen/Stratosphere/Resources/RoboMakerRobot.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-robomaker-robot.html
@@ -20,16 +21,19 @@
   , _roboMakerRobotTags :: Maybe Object
   } deriving (Show, Eq)
 
-instance ToJSON RoboMakerRobot where
-  toJSON RoboMakerRobot{..} =
-    object $
-    catMaybes
-    [ (Just . ("Architecture",) . toJSON) _roboMakerRobotArchitecture
-    , fmap (("Fleet",) . toJSON) _roboMakerRobotFleet
-    , (Just . ("GreengrassGroupId",) . toJSON) _roboMakerRobotGreengrassGroupId
-    , fmap (("Name",) . toJSON) _roboMakerRobotName
-    , fmap (("Tags",) . toJSON) _roboMakerRobotTags
-    ]
+instance ToResourceProperties RoboMakerRobot where
+  toResourceProperties RoboMakerRobot{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RoboMaker::Robot"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Architecture",) . toJSON) _roboMakerRobotArchitecture
+        , fmap (("Fleet",) . toJSON) _roboMakerRobotFleet
+        , (Just . ("GreengrassGroupId",) . toJSON) _roboMakerRobotGreengrassGroupId
+        , fmap (("Name",) . toJSON) _roboMakerRobotName
+        , fmap (("Tags",) . toJSON) _roboMakerRobotTags
+        ]
+    }
 
 -- | Constructor for 'RoboMakerRobot' containing required fields as arguments.
 roboMakerRobot
diff --git a/library-gen/Stratosphere/Resources/RoboMakerRobotApplication.hs b/library-gen/Stratosphere/Resources/RoboMakerRobotApplication.hs
--- a/library-gen/Stratosphere/Resources/RoboMakerRobotApplication.hs
+++ b/library-gen/Stratosphere/Resources/RoboMakerRobotApplication.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-robomaker-robotapplication.html
@@ -21,16 +22,19 @@
   , _roboMakerRobotApplicationTags :: Maybe Object
   } deriving (Show, Eq)
 
-instance ToJSON RoboMakerRobotApplication where
-  toJSON RoboMakerRobotApplication{..} =
-    object $
-    catMaybes
-    [ fmap (("CurrentRevisionId",) . toJSON) _roboMakerRobotApplicationCurrentRevisionId
-    , fmap (("Name",) . toJSON) _roboMakerRobotApplicationName
-    , (Just . ("RobotSoftwareSuite",) . toJSON) _roboMakerRobotApplicationRobotSoftwareSuite
-    , (Just . ("Sources",) . toJSON) _roboMakerRobotApplicationSources
-    , fmap (("Tags",) . toJSON) _roboMakerRobotApplicationTags
-    ]
+instance ToResourceProperties RoboMakerRobotApplication where
+  toResourceProperties RoboMakerRobotApplication{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RoboMaker::RobotApplication"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CurrentRevisionId",) . toJSON) _roboMakerRobotApplicationCurrentRevisionId
+        , fmap (("Name",) . toJSON) _roboMakerRobotApplicationName
+        , (Just . ("RobotSoftwareSuite",) . toJSON) _roboMakerRobotApplicationRobotSoftwareSuite
+        , (Just . ("Sources",) . toJSON) _roboMakerRobotApplicationSources
+        , fmap (("Tags",) . toJSON) _roboMakerRobotApplicationTags
+        ]
+    }
 
 -- | Constructor for 'RoboMakerRobotApplication' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/RoboMakerRobotApplicationVersion.hs b/library-gen/Stratosphere/Resources/RoboMakerRobotApplicationVersion.hs
--- a/library-gen/Stratosphere/Resources/RoboMakerRobotApplicationVersion.hs
+++ b/library-gen/Stratosphere/Resources/RoboMakerRobotApplicationVersion.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-robomaker-robotapplicationversion.html
@@ -17,13 +18,16 @@
   , _roboMakerRobotApplicationVersionCurrentRevisionId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON RoboMakerRobotApplicationVersion where
-  toJSON RoboMakerRobotApplicationVersion{..} =
-    object $
-    catMaybes
-    [ (Just . ("Application",) . toJSON) _roboMakerRobotApplicationVersionApplication
-    , fmap (("CurrentRevisionId",) . toJSON) _roboMakerRobotApplicationVersionCurrentRevisionId
-    ]
+instance ToResourceProperties RoboMakerRobotApplicationVersion where
+  toResourceProperties RoboMakerRobotApplicationVersion{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RoboMaker::RobotApplicationVersion"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Application",) . toJSON) _roboMakerRobotApplicationVersionApplication
+        , fmap (("CurrentRevisionId",) . toJSON) _roboMakerRobotApplicationVersionCurrentRevisionId
+        ]
+    }
 
 -- | Constructor for 'RoboMakerRobotApplicationVersion' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/RoboMakerSimulationApplication.hs b/library-gen/Stratosphere/Resources/RoboMakerSimulationApplication.hs
--- a/library-gen/Stratosphere/Resources/RoboMakerSimulationApplication.hs
+++ b/library-gen/Stratosphere/Resources/RoboMakerSimulationApplication.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-robomaker-simulationapplication.html
@@ -25,18 +26,21 @@
   , _roboMakerSimulationApplicationTags :: Maybe Object
   } deriving (Show, Eq)
 
-instance ToJSON RoboMakerSimulationApplication where
-  toJSON RoboMakerSimulationApplication{..} =
-    object $
-    catMaybes
-    [ fmap (("CurrentRevisionId",) . toJSON) _roboMakerSimulationApplicationCurrentRevisionId
-    , fmap (("Name",) . toJSON) _roboMakerSimulationApplicationName
-    , (Just . ("RenderingEngine",) . toJSON) _roboMakerSimulationApplicationRenderingEngine
-    , (Just . ("RobotSoftwareSuite",) . toJSON) _roboMakerSimulationApplicationRobotSoftwareSuite
-    , (Just . ("SimulationSoftwareSuite",) . toJSON) _roboMakerSimulationApplicationSimulationSoftwareSuite
-    , (Just . ("Sources",) . toJSON) _roboMakerSimulationApplicationSources
-    , fmap (("Tags",) . toJSON) _roboMakerSimulationApplicationTags
-    ]
+instance ToResourceProperties RoboMakerSimulationApplication where
+  toResourceProperties RoboMakerSimulationApplication{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RoboMaker::SimulationApplication"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CurrentRevisionId",) . toJSON) _roboMakerSimulationApplicationCurrentRevisionId
+        , fmap (("Name",) . toJSON) _roboMakerSimulationApplicationName
+        , (Just . ("RenderingEngine",) . toJSON) _roboMakerSimulationApplicationRenderingEngine
+        , (Just . ("RobotSoftwareSuite",) . toJSON) _roboMakerSimulationApplicationRobotSoftwareSuite
+        , (Just . ("SimulationSoftwareSuite",) . toJSON) _roboMakerSimulationApplicationSimulationSoftwareSuite
+        , (Just . ("Sources",) . toJSON) _roboMakerSimulationApplicationSources
+        , fmap (("Tags",) . toJSON) _roboMakerSimulationApplicationTags
+        ]
+    }
 
 -- | Constructor for 'RoboMakerSimulationApplication' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/RoboMakerSimulationApplicationVersion.hs b/library-gen/Stratosphere/Resources/RoboMakerSimulationApplicationVersion.hs
--- a/library-gen/Stratosphere/Resources/RoboMakerSimulationApplicationVersion.hs
+++ b/library-gen/Stratosphere/Resources/RoboMakerSimulationApplicationVersion.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-robomaker-simulationapplicationversion.html
@@ -18,13 +19,16 @@
   , _roboMakerSimulationApplicationVersionCurrentRevisionId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON RoboMakerSimulationApplicationVersion where
-  toJSON RoboMakerSimulationApplicationVersion{..} =
-    object $
-    catMaybes
-    [ (Just . ("Application",) . toJSON) _roboMakerSimulationApplicationVersionApplication
-    , fmap (("CurrentRevisionId",) . toJSON) _roboMakerSimulationApplicationVersionCurrentRevisionId
-    ]
+instance ToResourceProperties RoboMakerSimulationApplicationVersion where
+  toResourceProperties RoboMakerSimulationApplicationVersion{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::RoboMaker::SimulationApplicationVersion"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Application",) . toJSON) _roboMakerSimulationApplicationVersionApplication
+        , fmap (("CurrentRevisionId",) . toJSON) _roboMakerSimulationApplicationVersionCurrentRevisionId
+        ]
+    }
 
 -- | Constructor for 'RoboMakerSimulationApplicationVersion' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/Route53HealthCheck.hs b/library-gen/Stratosphere/Resources/Route53HealthCheck.hs
--- a/library-gen/Stratosphere/Resources/Route53HealthCheck.hs
+++ b/library-gen/Stratosphere/Resources/Route53HealthCheck.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-healthcheck.html
@@ -18,13 +19,16 @@
   , _route53HealthCheckHealthCheckTags :: Maybe [Route53HealthCheckHealthCheckTag]
   } deriving (Show, Eq)
 
-instance ToJSON Route53HealthCheck where
-  toJSON Route53HealthCheck{..} =
-    object $
-    catMaybes
-    [ (Just . ("HealthCheckConfig",) . toJSON) _route53HealthCheckHealthCheckConfig
-    , fmap (("HealthCheckTags",) . toJSON) _route53HealthCheckHealthCheckTags
-    ]
+instance ToResourceProperties Route53HealthCheck where
+  toResourceProperties Route53HealthCheck{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Route53::HealthCheck"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("HealthCheckConfig",) . toJSON) _route53HealthCheckHealthCheckConfig
+        , fmap (("HealthCheckTags",) . toJSON) _route53HealthCheckHealthCheckTags
+        ]
+    }
 
 -- | Constructor for 'Route53HealthCheck' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/Route53HostedZone.hs b/library-gen/Stratosphere/Resources/Route53HostedZone.hs
--- a/library-gen/Stratosphere/Resources/Route53HostedZone.hs
+++ b/library-gen/Stratosphere/Resources/Route53HostedZone.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone.html
@@ -23,16 +24,19 @@
   , _route53HostedZoneVPCs :: Maybe [Route53HostedZoneVPC]
   } deriving (Show, Eq)
 
-instance ToJSON Route53HostedZone where
-  toJSON Route53HostedZone{..} =
-    object $
-    catMaybes
-    [ fmap (("HostedZoneConfig",) . toJSON) _route53HostedZoneHostedZoneConfig
-    , fmap (("HostedZoneTags",) . toJSON) _route53HostedZoneHostedZoneTags
-    , (Just . ("Name",) . toJSON) _route53HostedZoneName
-    , fmap (("QueryLoggingConfig",) . toJSON) _route53HostedZoneQueryLoggingConfig
-    , fmap (("VPCs",) . toJSON) _route53HostedZoneVPCs
-    ]
+instance ToResourceProperties Route53HostedZone where
+  toResourceProperties Route53HostedZone{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Route53::HostedZone"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("HostedZoneConfig",) . toJSON) _route53HostedZoneHostedZoneConfig
+        , fmap (("HostedZoneTags",) . toJSON) _route53HostedZoneHostedZoneTags
+        , (Just . ("Name",) . toJSON) _route53HostedZoneName
+        , fmap (("QueryLoggingConfig",) . toJSON) _route53HostedZoneQueryLoggingConfig
+        , fmap (("VPCs",) . toJSON) _route53HostedZoneVPCs
+        ]
+    }
 
 -- | Constructor for 'Route53HostedZone' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/Route53RecordSet.hs b/library-gen/Stratosphere/Resources/Route53RecordSet.hs
--- a/library-gen/Stratosphere/Resources/Route53RecordSet.hs
+++ b/library-gen/Stratosphere/Resources/Route53RecordSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html
@@ -31,26 +32,29 @@
   , _route53RecordSetWeight :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
-instance ToJSON Route53RecordSet where
-  toJSON Route53RecordSet{..} =
-    object $
-    catMaybes
-    [ fmap (("AliasTarget",) . toJSON) _route53RecordSetAliasTarget
-    , fmap (("Comment",) . toJSON) _route53RecordSetComment
-    , fmap (("Failover",) . toJSON) _route53RecordSetFailover
-    , fmap (("GeoLocation",) . toJSON) _route53RecordSetGeoLocation
-    , fmap (("HealthCheckId",) . toJSON) _route53RecordSetHealthCheckId
-    , fmap (("HostedZoneId",) . toJSON) _route53RecordSetHostedZoneId
-    , fmap (("HostedZoneName",) . toJSON) _route53RecordSetHostedZoneName
-    , fmap (("MultiValueAnswer",) . toJSON . fmap Bool') _route53RecordSetMultiValueAnswer
-    , (Just . ("Name",) . toJSON) _route53RecordSetName
-    , fmap (("Region",) . toJSON) _route53RecordSetRegion
-    , fmap (("ResourceRecords",) . toJSON) _route53RecordSetResourceRecords
-    , fmap (("SetIdentifier",) . toJSON) _route53RecordSetSetIdentifier
-    , fmap (("TTL",) . toJSON) _route53RecordSetTTL
-    , (Just . ("Type",) . toJSON) _route53RecordSetType
-    , fmap (("Weight",) . toJSON . fmap Integer') _route53RecordSetWeight
-    ]
+instance ToResourceProperties Route53RecordSet where
+  toResourceProperties Route53RecordSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Route53::RecordSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AliasTarget",) . toJSON) _route53RecordSetAliasTarget
+        , fmap (("Comment",) . toJSON) _route53RecordSetComment
+        , fmap (("Failover",) . toJSON) _route53RecordSetFailover
+        , fmap (("GeoLocation",) . toJSON) _route53RecordSetGeoLocation
+        , fmap (("HealthCheckId",) . toJSON) _route53RecordSetHealthCheckId
+        , fmap (("HostedZoneId",) . toJSON) _route53RecordSetHostedZoneId
+        , fmap (("HostedZoneName",) . toJSON) _route53RecordSetHostedZoneName
+        , fmap (("MultiValueAnswer",) . toJSON . fmap Bool') _route53RecordSetMultiValueAnswer
+        , (Just . ("Name",) . toJSON) _route53RecordSetName
+        , fmap (("Region",) . toJSON) _route53RecordSetRegion
+        , fmap (("ResourceRecords",) . toJSON) _route53RecordSetResourceRecords
+        , fmap (("SetIdentifier",) . toJSON) _route53RecordSetSetIdentifier
+        , fmap (("TTL",) . toJSON) _route53RecordSetTTL
+        , (Just . ("Type",) . toJSON) _route53RecordSetType
+        , fmap (("Weight",) . toJSON . fmap Integer') _route53RecordSetWeight
+        ]
+    }
 
 -- | Constructor for 'Route53RecordSet' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/Route53RecordSetGroup.hs b/library-gen/Stratosphere/Resources/Route53RecordSetGroup.hs
--- a/library-gen/Stratosphere/Resources/Route53RecordSetGroup.hs
+++ b/library-gen/Stratosphere/Resources/Route53RecordSetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-recordsetgroup.html
@@ -19,15 +20,18 @@
   , _route53RecordSetGroupRecordSets :: Maybe [Route53RecordSetGroupRecordSet]
   } deriving (Show, Eq)
 
-instance ToJSON Route53RecordSetGroup where
-  toJSON Route53RecordSetGroup{..} =
-    object $
-    catMaybes
-    [ fmap (("Comment",) . toJSON) _route53RecordSetGroupComment
-    , fmap (("HostedZoneId",) . toJSON) _route53RecordSetGroupHostedZoneId
-    , fmap (("HostedZoneName",) . toJSON) _route53RecordSetGroupHostedZoneName
-    , fmap (("RecordSets",) . toJSON) _route53RecordSetGroupRecordSets
-    ]
+instance ToResourceProperties Route53RecordSetGroup where
+  toResourceProperties Route53RecordSetGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Route53::RecordSetGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Comment",) . toJSON) _route53RecordSetGroupComment
+        , fmap (("HostedZoneId",) . toJSON) _route53RecordSetGroupHostedZoneId
+        , fmap (("HostedZoneName",) . toJSON) _route53RecordSetGroupHostedZoneName
+        , fmap (("RecordSets",) . toJSON) _route53RecordSetGroupRecordSets
+        ]
+    }
 
 -- | Constructor for 'Route53RecordSetGroup' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/Route53ResolverResolverEndpoint.hs b/library-gen/Stratosphere/Resources/Route53ResolverResolverEndpoint.hs
--- a/library-gen/Stratosphere/Resources/Route53ResolverResolverEndpoint.hs
+++ b/library-gen/Stratosphere/Resources/Route53ResolverResolverEndpoint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverendpoint.html
@@ -21,16 +22,19 @@
   , _route53ResolverResolverEndpointTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON Route53ResolverResolverEndpoint where
-  toJSON Route53ResolverResolverEndpoint{..} =
-    object $
-    catMaybes
-    [ (Just . ("Direction",) . toJSON) _route53ResolverResolverEndpointDirection
-    , (Just . ("IpAddresses",) . toJSON) _route53ResolverResolverEndpointIpAddresses
-    , fmap (("Name",) . toJSON) _route53ResolverResolverEndpointName
-    , (Just . ("SecurityGroupIds",) . toJSON) _route53ResolverResolverEndpointSecurityGroupIds
-    , fmap (("Tags",) . toJSON) _route53ResolverResolverEndpointTags
-    ]
+instance ToResourceProperties Route53ResolverResolverEndpoint where
+  toResourceProperties Route53ResolverResolverEndpoint{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Route53Resolver::ResolverEndpoint"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Direction",) . toJSON) _route53ResolverResolverEndpointDirection
+        , (Just . ("IpAddresses",) . toJSON) _route53ResolverResolverEndpointIpAddresses
+        , fmap (("Name",) . toJSON) _route53ResolverResolverEndpointName
+        , (Just . ("SecurityGroupIds",) . toJSON) _route53ResolverResolverEndpointSecurityGroupIds
+        , fmap (("Tags",) . toJSON) _route53ResolverResolverEndpointTags
+        ]
+    }
 
 -- | Constructor for 'Route53ResolverResolverEndpoint' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/Route53ResolverResolverRule.hs b/library-gen/Stratosphere/Resources/Route53ResolverResolverRule.hs
--- a/library-gen/Stratosphere/Resources/Route53ResolverResolverRule.hs
+++ b/library-gen/Stratosphere/Resources/Route53ResolverResolverRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverrule.html
@@ -22,17 +23,20 @@
   , _route53ResolverResolverRuleTargetIps :: Maybe [Route53ResolverResolverRuleTargetAddress]
   } deriving (Show, Eq)
 
-instance ToJSON Route53ResolverResolverRule where
-  toJSON Route53ResolverResolverRule{..} =
-    object $
-    catMaybes
-    [ (Just . ("DomainName",) . toJSON) _route53ResolverResolverRuleDomainName
-    , fmap (("Name",) . toJSON) _route53ResolverResolverRuleName
-    , fmap (("ResolverEndpointId",) . toJSON) _route53ResolverResolverRuleResolverEndpointId
-    , (Just . ("RuleType",) . toJSON) _route53ResolverResolverRuleRuleType
-    , fmap (("Tags",) . toJSON) _route53ResolverResolverRuleTags
-    , fmap (("TargetIps",) . toJSON) _route53ResolverResolverRuleTargetIps
-    ]
+instance ToResourceProperties Route53ResolverResolverRule where
+  toResourceProperties Route53ResolverResolverRule{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Route53Resolver::ResolverRule"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DomainName",) . toJSON) _route53ResolverResolverRuleDomainName
+        , fmap (("Name",) . toJSON) _route53ResolverResolverRuleName
+        , fmap (("ResolverEndpointId",) . toJSON) _route53ResolverResolverRuleResolverEndpointId
+        , (Just . ("RuleType",) . toJSON) _route53ResolverResolverRuleRuleType
+        , fmap (("Tags",) . toJSON) _route53ResolverResolverRuleTags
+        , fmap (("TargetIps",) . toJSON) _route53ResolverResolverRuleTargetIps
+        ]
+    }
 
 -- | Constructor for 'Route53ResolverResolverRule' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/Route53ResolverResolverRuleAssociation.hs b/library-gen/Stratosphere/Resources/Route53ResolverResolverRuleAssociation.hs
--- a/library-gen/Stratosphere/Resources/Route53ResolverResolverRuleAssociation.hs
+++ b/library-gen/Stratosphere/Resources/Route53ResolverResolverRuleAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverruleassociation.html
@@ -19,14 +20,17 @@
   , _route53ResolverResolverRuleAssociationVPCId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON Route53ResolverResolverRuleAssociation where
-  toJSON Route53ResolverResolverRuleAssociation{..} =
-    object $
-    catMaybes
-    [ fmap (("Name",) . toJSON) _route53ResolverResolverRuleAssociationName
-    , (Just . ("ResolverRuleId",) . toJSON) _route53ResolverResolverRuleAssociationResolverRuleId
-    , (Just . ("VPCId",) . toJSON) _route53ResolverResolverRuleAssociationVPCId
-    ]
+instance ToResourceProperties Route53ResolverResolverRuleAssociation where
+  toResourceProperties Route53ResolverResolverRuleAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Route53Resolver::ResolverRuleAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Name",) . toJSON) _route53ResolverResolverRuleAssociationName
+        , (Just . ("ResolverRuleId",) . toJSON) _route53ResolverResolverRuleAssociationResolverRuleId
+        , (Just . ("VPCId",) . toJSON) _route53ResolverResolverRuleAssociationVPCId
+        ]
+    }
 
 -- | Constructor for 'Route53ResolverResolverRuleAssociation' containing
 -- required fields as arguments.
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html
@@ -45,27 +46,30 @@
   , _s3BucketWebsiteConfiguration :: Maybe S3BucketWebsiteConfiguration
   } deriving (Show, Eq)
 
-instance ToJSON S3Bucket where
-  toJSON S3Bucket{..} =
-    object $
-    catMaybes
-    [ fmap (("AccelerateConfiguration",) . toJSON) _s3BucketAccelerateConfiguration
-    , fmap (("AccessControl",) . toJSON) _s3BucketAccessControl
-    , fmap (("AnalyticsConfigurations",) . toJSON) _s3BucketAnalyticsConfigurations
-    , fmap (("BucketEncryption",) . toJSON) _s3BucketBucketEncryption
-    , fmap (("BucketName",) . toJSON) _s3BucketBucketName
-    , fmap (("CorsConfiguration",) . toJSON) _s3BucketCorsConfiguration
-    , fmap (("InventoryConfigurations",) . toJSON) _s3BucketInventoryConfigurations
-    , fmap (("LifecycleConfiguration",) . toJSON) _s3BucketLifecycleConfiguration
-    , fmap (("LoggingConfiguration",) . toJSON) _s3BucketLoggingConfiguration
-    , fmap (("MetricsConfigurations",) . toJSON) _s3BucketMetricsConfigurations
-    , fmap (("NotificationConfiguration",) . toJSON) _s3BucketNotificationConfiguration
-    , fmap (("PublicAccessBlockConfiguration",) . toJSON) _s3BucketPublicAccessBlockConfiguration
-    , fmap (("ReplicationConfiguration",) . toJSON) _s3BucketReplicationConfiguration
-    , fmap (("Tags",) . toJSON) _s3BucketTags
-    , fmap (("VersioningConfiguration",) . toJSON) _s3BucketVersioningConfiguration
-    , fmap (("WebsiteConfiguration",) . toJSON) _s3BucketWebsiteConfiguration
-    ]
+instance ToResourceProperties S3Bucket where
+  toResourceProperties S3Bucket{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::S3::Bucket"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AccelerateConfiguration",) . toJSON) _s3BucketAccelerateConfiguration
+        , fmap (("AccessControl",) . toJSON) _s3BucketAccessControl
+        , fmap (("AnalyticsConfigurations",) . toJSON) _s3BucketAnalyticsConfigurations
+        , fmap (("BucketEncryption",) . toJSON) _s3BucketBucketEncryption
+        , fmap (("BucketName",) . toJSON) _s3BucketBucketName
+        , fmap (("CorsConfiguration",) . toJSON) _s3BucketCorsConfiguration
+        , fmap (("InventoryConfigurations",) . toJSON) _s3BucketInventoryConfigurations
+        , fmap (("LifecycleConfiguration",) . toJSON) _s3BucketLifecycleConfiguration
+        , fmap (("LoggingConfiguration",) . toJSON) _s3BucketLoggingConfiguration
+        , fmap (("MetricsConfigurations",) . toJSON) _s3BucketMetricsConfigurations
+        , fmap (("NotificationConfiguration",) . toJSON) _s3BucketNotificationConfiguration
+        , fmap (("PublicAccessBlockConfiguration",) . toJSON) _s3BucketPublicAccessBlockConfiguration
+        , fmap (("ReplicationConfiguration",) . toJSON) _s3BucketReplicationConfiguration
+        , fmap (("Tags",) . toJSON) _s3BucketTags
+        , fmap (("VersioningConfiguration",) . toJSON) _s3BucketVersioningConfiguration
+        , fmap (("WebsiteConfiguration",) . toJSON) _s3BucketWebsiteConfiguration
+        ]
+    }
 
 -- | Constructor for 'S3Bucket' containing required fields as arguments.
 s3Bucket
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html
@@ -17,13 +18,16 @@
   , _s3BucketPolicyPolicyDocument :: Object
   } deriving (Show, Eq)
 
-instance ToJSON S3BucketPolicy where
-  toJSON S3BucketPolicy{..} =
-    object $
-    catMaybes
-    [ (Just . ("Bucket",) . toJSON) _s3BucketPolicyBucket
-    , (Just . ("PolicyDocument",) . toJSON) _s3BucketPolicyPolicyDocument
-    ]
+instance ToResourceProperties S3BucketPolicy where
+  toResourceProperties S3BucketPolicy{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::S3::BucketPolicy"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Bucket",) . toJSON) _s3BucketPolicyBucket
+        , (Just . ("PolicyDocument",) . toJSON) _s3BucketPolicyPolicyDocument
+        ]
+    }
 
 -- | Constructor for 'S3BucketPolicy' containing required fields as arguments.
 s3BucketPolicy
diff --git a/library-gen/Stratosphere/Resources/SDBDomain.hs b/library-gen/Stratosphere/Resources/SDBDomain.hs
--- a/library-gen/Stratosphere/Resources/SDBDomain.hs
+++ b/library-gen/Stratosphere/Resources/SDBDomain.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-simpledb.html
@@ -16,12 +17,15 @@
   { _sDBDomainDescription :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON SDBDomain where
-  toJSON SDBDomain{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _sDBDomainDescription
-    ]
+instance ToResourceProperties SDBDomain where
+  toResourceProperties SDBDomain{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SDB::Domain"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _sDBDomainDescription
+        ]
+    }
 
 -- | Constructor for 'SDBDomain' containing required fields as arguments.
 sdbDomain
diff --git a/library-gen/Stratosphere/Resources/SESConfigurationSet.hs b/library-gen/Stratosphere/Resources/SESConfigurationSet.hs
--- a/library-gen/Stratosphere/Resources/SESConfigurationSet.hs
+++ b/library-gen/Stratosphere/Resources/SESConfigurationSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-configurationset.html
@@ -16,12 +17,15 @@
   { _sESConfigurationSetName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON SESConfigurationSet where
-  toJSON SESConfigurationSet{..} =
-    object $
-    catMaybes
-    [ fmap (("Name",) . toJSON) _sESConfigurationSetName
-    ]
+instance ToResourceProperties SESConfigurationSet where
+  toResourceProperties SESConfigurationSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SES::ConfigurationSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Name",) . toJSON) _sESConfigurationSetName
+        ]
+    }
 
 -- | Constructor for 'SESConfigurationSet' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/SESConfigurationSetEventDestination.hs b/library-gen/Stratosphere/Resources/SESConfigurationSetEventDestination.hs
--- a/library-gen/Stratosphere/Resources/SESConfigurationSetEventDestination.hs
+++ b/library-gen/Stratosphere/Resources/SESConfigurationSetEventDestination.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-configurationseteventdestination.html
@@ -17,13 +18,16 @@
   , _sESConfigurationSetEventDestinationEventDestination :: SESConfigurationSetEventDestinationEventDestination
   } deriving (Show, Eq)
 
-instance ToJSON SESConfigurationSetEventDestination where
-  toJSON SESConfigurationSetEventDestination{..} =
-    object $
-    catMaybes
-    [ (Just . ("ConfigurationSetName",) . toJSON) _sESConfigurationSetEventDestinationConfigurationSetName
-    , (Just . ("EventDestination",) . toJSON) _sESConfigurationSetEventDestinationEventDestination
-    ]
+instance ToResourceProperties SESConfigurationSetEventDestination where
+  toResourceProperties SESConfigurationSetEventDestination{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SES::ConfigurationSetEventDestination"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ConfigurationSetName",) . toJSON) _sESConfigurationSetEventDestinationConfigurationSetName
+        , (Just . ("EventDestination",) . toJSON) _sESConfigurationSetEventDestinationEventDestination
+        ]
+    }
 
 -- | Constructor for 'SESConfigurationSetEventDestination' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/SESReceiptFilter.hs b/library-gen/Stratosphere/Resources/SESReceiptFilter.hs
--- a/library-gen/Stratosphere/Resources/SESReceiptFilter.hs
+++ b/library-gen/Stratosphere/Resources/SESReceiptFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-receiptfilter.html
@@ -16,12 +17,15 @@
   { _sESReceiptFilterFilter :: SESReceiptFilterFilter
   } deriving (Show, Eq)
 
-instance ToJSON SESReceiptFilter where
-  toJSON SESReceiptFilter{..} =
-    object $
-    catMaybes
-    [ (Just . ("Filter",) . toJSON) _sESReceiptFilterFilter
-    ]
+instance ToResourceProperties SESReceiptFilter where
+  toResourceProperties SESReceiptFilter{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SES::ReceiptFilter"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Filter",) . toJSON) _sESReceiptFilterFilter
+        ]
+    }
 
 -- | Constructor for 'SESReceiptFilter' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/SESReceiptRule.hs b/library-gen/Stratosphere/Resources/SESReceiptRule.hs
--- a/library-gen/Stratosphere/Resources/SESReceiptRule.hs
+++ b/library-gen/Stratosphere/Resources/SESReceiptRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-receiptrule.html
@@ -18,14 +19,17 @@
   , _sESReceiptRuleRuleSetName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON SESReceiptRule where
-  toJSON SESReceiptRule{..} =
-    object $
-    catMaybes
-    [ fmap (("After",) . toJSON) _sESReceiptRuleAfter
-    , (Just . ("Rule",) . toJSON) _sESReceiptRuleRule
-    , (Just . ("RuleSetName",) . toJSON) _sESReceiptRuleRuleSetName
-    ]
+instance ToResourceProperties SESReceiptRule where
+  toResourceProperties SESReceiptRule{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SES::ReceiptRule"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("After",) . toJSON) _sESReceiptRuleAfter
+        , (Just . ("Rule",) . toJSON) _sESReceiptRuleRule
+        , (Just . ("RuleSetName",) . toJSON) _sESReceiptRuleRuleSetName
+        ]
+    }
 
 -- | Constructor for 'SESReceiptRule' containing required fields as arguments.
 sesReceiptRule
diff --git a/library-gen/Stratosphere/Resources/SESReceiptRuleSet.hs b/library-gen/Stratosphere/Resources/SESReceiptRuleSet.hs
--- a/library-gen/Stratosphere/Resources/SESReceiptRuleSet.hs
+++ b/library-gen/Stratosphere/Resources/SESReceiptRuleSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-receiptruleset.html
@@ -16,12 +17,15 @@
   { _sESReceiptRuleSetRuleSetName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON SESReceiptRuleSet where
-  toJSON SESReceiptRuleSet{..} =
-    object $
-    catMaybes
-    [ fmap (("RuleSetName",) . toJSON) _sESReceiptRuleSetRuleSetName
-    ]
+instance ToResourceProperties SESReceiptRuleSet where
+  toResourceProperties SESReceiptRuleSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SES::ReceiptRuleSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("RuleSetName",) . toJSON) _sESReceiptRuleSetRuleSetName
+        ]
+    }
 
 -- | Constructor for 'SESReceiptRuleSet' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/SESTemplate.hs b/library-gen/Stratosphere/Resources/SESTemplate.hs
--- a/library-gen/Stratosphere/Resources/SESTemplate.hs
+++ b/library-gen/Stratosphere/Resources/SESTemplate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-template.html
@@ -16,12 +17,15 @@
   { _sESTemplateTemplate :: Maybe SESTemplateTemplate
   } deriving (Show, Eq)
 
-instance ToJSON SESTemplate where
-  toJSON SESTemplate{..} =
-    object $
-    catMaybes
-    [ fmap (("Template",) . toJSON) _sESTemplateTemplate
-    ]
+instance ToResourceProperties SESTemplate where
+  toResourceProperties SESTemplate{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SES::Template"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Template",) . toJSON) _sESTemplateTemplate
+        ]
+    }
 
 -- | Constructor for 'SESTemplate' containing required fields as arguments.
 sesTemplate
diff --git a/library-gen/Stratosphere/Resources/SNSSubscription.hs b/library-gen/Stratosphere/Resources/SNSSubscription.hs
--- a/library-gen/Stratosphere/Resources/SNSSubscription.hs
+++ b/library-gen/Stratosphere/Resources/SNSSubscription.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html
@@ -22,18 +23,21 @@
   , _sNSSubscriptionTopicArn :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON SNSSubscription where
-  toJSON SNSSubscription{..} =
-    object $
-    catMaybes
-    [ fmap (("DeliveryPolicy",) . toJSON) _sNSSubscriptionDeliveryPolicy
-    , fmap (("Endpoint",) . toJSON) _sNSSubscriptionEndpoint
-    , fmap (("FilterPolicy",) . toJSON) _sNSSubscriptionFilterPolicy
-    , (Just . ("Protocol",) . toJSON) _sNSSubscriptionProtocol
-    , fmap (("RawMessageDelivery",) . toJSON . fmap Bool') _sNSSubscriptionRawMessageDelivery
-    , fmap (("Region",) . toJSON) _sNSSubscriptionRegion
-    , (Just . ("TopicArn",) . toJSON) _sNSSubscriptionTopicArn
-    ]
+instance ToResourceProperties SNSSubscription where
+  toResourceProperties SNSSubscription{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SNS::Subscription"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("DeliveryPolicy",) . toJSON) _sNSSubscriptionDeliveryPolicy
+        , fmap (("Endpoint",) . toJSON) _sNSSubscriptionEndpoint
+        , fmap (("FilterPolicy",) . toJSON) _sNSSubscriptionFilterPolicy
+        , (Just . ("Protocol",) . toJSON) _sNSSubscriptionProtocol
+        , fmap (("RawMessageDelivery",) . toJSON . fmap Bool') _sNSSubscriptionRawMessageDelivery
+        , fmap (("Region",) . toJSON) _sNSSubscriptionRegion
+        , (Just . ("TopicArn",) . toJSON) _sNSSubscriptionTopicArn
+        ]
+    }
 
 -- | Constructor for 'SNSSubscription' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/SNSTopic.hs b/library-gen/Stratosphere/Resources/SNSTopic.hs
--- a/library-gen/Stratosphere/Resources/SNSTopic.hs
+++ b/library-gen/Stratosphere/Resources/SNSTopic.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html
@@ -19,15 +20,18 @@
   , _sNSTopicTopicName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON SNSTopic where
-  toJSON SNSTopic{..} =
-    object $
-    catMaybes
-    [ fmap (("DisplayName",) . toJSON) _sNSTopicDisplayName
-    , fmap (("KmsMasterKeyId",) . toJSON) _sNSTopicKmsMasterKeyId
-    , fmap (("Subscription",) . toJSON) _sNSTopicSubscription
-    , fmap (("TopicName",) . toJSON) _sNSTopicTopicName
-    ]
+instance ToResourceProperties SNSTopic where
+  toResourceProperties SNSTopic{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SNS::Topic"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("DisplayName",) . toJSON) _sNSTopicDisplayName
+        , fmap (("KmsMasterKeyId",) . toJSON) _sNSTopicKmsMasterKeyId
+        , fmap (("Subscription",) . toJSON) _sNSTopicSubscription
+        , fmap (("TopicName",) . toJSON) _sNSTopicTopicName
+        ]
+    }
 
 -- | Constructor for 'SNSTopic' containing required fields as arguments.
 snsTopic
diff --git a/library-gen/Stratosphere/Resources/SNSTopicPolicy.hs b/library-gen/Stratosphere/Resources/SNSTopicPolicy.hs
--- a/library-gen/Stratosphere/Resources/SNSTopicPolicy.hs
+++ b/library-gen/Stratosphere/Resources/SNSTopicPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html
@@ -17,13 +18,16 @@
   , _sNSTopicPolicyTopics :: ValList Text
   } deriving (Show, Eq)
 
-instance ToJSON SNSTopicPolicy where
-  toJSON SNSTopicPolicy{..} =
-    object $
-    catMaybes
-    [ (Just . ("PolicyDocument",) . toJSON) _sNSTopicPolicyPolicyDocument
-    , (Just . ("Topics",) . toJSON) _sNSTopicPolicyTopics
-    ]
+instance ToResourceProperties SNSTopicPolicy where
+  toResourceProperties SNSTopicPolicy{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SNS::TopicPolicy"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("PolicyDocument",) . toJSON) _sNSTopicPolicyPolicyDocument
+        , (Just . ("Topics",) . toJSON) _sNSTopicPolicyTopics
+        ]
+    }
 
 -- | Constructor for 'SNSTopicPolicy' containing required fields as arguments.
 snsTopicPolicy
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
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html
@@ -27,23 +28,26 @@
   , _sQSQueueVisibilityTimeout :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
-instance ToJSON SQSQueue where
-  toJSON SQSQueue{..} =
-    object $
-    catMaybes
-    [ 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
-    , fmap (("ReceiveMessageWaitTimeSeconds",) . toJSON . fmap Integer') _sQSQueueReceiveMessageWaitTimeSeconds
-    , fmap (("RedrivePolicy",) . toJSON) _sQSQueueRedrivePolicy
-    , fmap (("Tags",) . toJSON) _sQSQueueTags
-    , fmap (("VisibilityTimeout",) . toJSON . fmap Integer') _sQSQueueVisibilityTimeout
-    ]
+instance ToResourceProperties SQSQueue where
+  toResourceProperties SQSQueue{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SQS::Queue"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ 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
+        , fmap (("ReceiveMessageWaitTimeSeconds",) . toJSON . fmap Integer') _sQSQueueReceiveMessageWaitTimeSeconds
+        , fmap (("RedrivePolicy",) . toJSON) _sQSQueueRedrivePolicy
+        , fmap (("Tags",) . toJSON) _sQSQueueTags
+        , fmap (("VisibilityTimeout",) . toJSON . fmap Integer') _sQSQueueVisibilityTimeout
+        ]
+    }
 
 -- | Constructor for 'SQSQueue' containing required fields as arguments.
 sqsQueue
diff --git a/library-gen/Stratosphere/Resources/SQSQueuePolicy.hs b/library-gen/Stratosphere/Resources/SQSQueuePolicy.hs
--- a/library-gen/Stratosphere/Resources/SQSQueuePolicy.hs
+++ b/library-gen/Stratosphere/Resources/SQSQueuePolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html
@@ -17,13 +18,16 @@
   , _sQSQueuePolicyQueues :: ValList Text
   } deriving (Show, Eq)
 
-instance ToJSON SQSQueuePolicy where
-  toJSON SQSQueuePolicy{..} =
-    object $
-    catMaybes
-    [ (Just . ("PolicyDocument",) . toJSON) _sQSQueuePolicyPolicyDocument
-    , (Just . ("Queues",) . toJSON) _sQSQueuePolicyQueues
-    ]
+instance ToResourceProperties SQSQueuePolicy where
+  toResourceProperties SQSQueuePolicy{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SQS::QueuePolicy"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("PolicyDocument",) . toJSON) _sQSQueuePolicyPolicyDocument
+        , (Just . ("Queues",) . toJSON) _sQSQueuePolicyQueues
+        ]
+    }
 
 -- | Constructor for 'SQSQueuePolicy' containing required fields as arguments.
 sqsQueuePolicy
diff --git a/library-gen/Stratosphere/Resources/SSMAssociation.hs b/library-gen/Stratosphere/Resources/SSMAssociation.hs
--- a/library-gen/Stratosphere/Resources/SSMAssociation.hs
+++ b/library-gen/Stratosphere/Resources/SSMAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html
@@ -25,19 +26,22 @@
   , _sSMAssociationTargets :: Maybe [SSMAssociationTarget]
   } deriving (Show, Eq)
 
-instance ToJSON SSMAssociation where
-  toJSON SSMAssociation{..} =
-    object $
-    catMaybes
-    [ fmap (("AssociationName",) . toJSON) _sSMAssociationAssociationName
-    , fmap (("DocumentVersion",) . toJSON) _sSMAssociationDocumentVersion
-    , fmap (("InstanceId",) . toJSON) _sSMAssociationInstanceId
-    , (Just . ("Name",) . toJSON) _sSMAssociationName
-    , fmap (("OutputLocation",) . toJSON) _sSMAssociationOutputLocation
-    , fmap (("Parameters",) . toJSON) _sSMAssociationParameters
-    , fmap (("ScheduleExpression",) . toJSON) _sSMAssociationScheduleExpression
-    , fmap (("Targets",) . toJSON) _sSMAssociationTargets
-    ]
+instance ToResourceProperties SSMAssociation where
+  toResourceProperties SSMAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SSM::Association"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AssociationName",) . toJSON) _sSMAssociationAssociationName
+        , fmap (("DocumentVersion",) . toJSON) _sSMAssociationDocumentVersion
+        , fmap (("InstanceId",) . toJSON) _sSMAssociationInstanceId
+        , (Just . ("Name",) . toJSON) _sSMAssociationName
+        , fmap (("OutputLocation",) . toJSON) _sSMAssociationOutputLocation
+        , fmap (("Parameters",) . toJSON) _sSMAssociationParameters
+        , fmap (("ScheduleExpression",) . toJSON) _sSMAssociationScheduleExpression
+        , fmap (("Targets",) . toJSON) _sSMAssociationTargets
+        ]
+    }
 
 -- | Constructor for 'SSMAssociation' containing required fields as arguments.
 ssmAssociation
diff --git a/library-gen/Stratosphere/Resources/SSMDocument.hs b/library-gen/Stratosphere/Resources/SSMDocument.hs
--- a/library-gen/Stratosphere/Resources/SSMDocument.hs
+++ b/library-gen/Stratosphere/Resources/SSMDocument.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-document.html
@@ -18,14 +19,17 @@
   , _sSMDocumentTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON SSMDocument where
-  toJSON SSMDocument{..} =
-    object $
-    catMaybes
-    [ (Just . ("Content",) . toJSON) _sSMDocumentContent
-    , fmap (("DocumentType",) . toJSON) _sSMDocumentDocumentType
-    , fmap (("Tags",) . toJSON) _sSMDocumentTags
-    ]
+instance ToResourceProperties SSMDocument where
+  toResourceProperties SSMDocument{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SSM::Document"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Content",) . toJSON) _sSMDocumentContent
+        , fmap (("DocumentType",) . toJSON) _sSMDocumentDocumentType
+        , fmap (("Tags",) . toJSON) _sSMDocumentTags
+        ]
+    }
 
 -- | Constructor for 'SSMDocument' containing required fields as arguments.
 ssmDocument
diff --git a/library-gen/Stratosphere/Resources/SSMMaintenanceWindow.hs b/library-gen/Stratosphere/Resources/SSMMaintenanceWindow.hs
--- a/library-gen/Stratosphere/Resources/SSMMaintenanceWindow.hs
+++ b/library-gen/Stratosphere/Resources/SSMMaintenanceWindow.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindow.html
@@ -25,21 +26,24 @@
   , _sSMMaintenanceWindowTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON SSMMaintenanceWindow where
-  toJSON SSMMaintenanceWindow{..} =
-    object $
-    catMaybes
-    [ (Just . ("AllowUnassociatedTargets",) . toJSON . fmap Bool') _sSMMaintenanceWindowAllowUnassociatedTargets
-    , (Just . ("Cutoff",) . toJSON . fmap Integer') _sSMMaintenanceWindowCutoff
-    , fmap (("Description",) . toJSON) _sSMMaintenanceWindowDescription
-    , (Just . ("Duration",) . toJSON . fmap Integer') _sSMMaintenanceWindowDuration
-    , fmap (("EndDate",) . toJSON) _sSMMaintenanceWindowEndDate
-    , (Just . ("Name",) . toJSON) _sSMMaintenanceWindowName
-    , (Just . ("Schedule",) . toJSON) _sSMMaintenanceWindowSchedule
-    , fmap (("ScheduleTimezone",) . toJSON) _sSMMaintenanceWindowScheduleTimezone
-    , fmap (("StartDate",) . toJSON) _sSMMaintenanceWindowStartDate
-    , fmap (("Tags",) . toJSON) _sSMMaintenanceWindowTags
-    ]
+instance ToResourceProperties SSMMaintenanceWindow where
+  toResourceProperties SSMMaintenanceWindow{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SSM::MaintenanceWindow"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AllowUnassociatedTargets",) . toJSON . fmap Bool') _sSMMaintenanceWindowAllowUnassociatedTargets
+        , (Just . ("Cutoff",) . toJSON . fmap Integer') _sSMMaintenanceWindowCutoff
+        , fmap (("Description",) . toJSON) _sSMMaintenanceWindowDescription
+        , (Just . ("Duration",) . toJSON . fmap Integer') _sSMMaintenanceWindowDuration
+        , fmap (("EndDate",) . toJSON) _sSMMaintenanceWindowEndDate
+        , (Just . ("Name",) . toJSON) _sSMMaintenanceWindowName
+        , (Just . ("Schedule",) . toJSON) _sSMMaintenanceWindowSchedule
+        , fmap (("ScheduleTimezone",) . toJSON) _sSMMaintenanceWindowScheduleTimezone
+        , fmap (("StartDate",) . toJSON) _sSMMaintenanceWindowStartDate
+        , fmap (("Tags",) . toJSON) _sSMMaintenanceWindowTags
+        ]
+    }
 
 -- | Constructor for 'SSMMaintenanceWindow' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/SSMMaintenanceWindowTask.hs b/library-gen/Stratosphere/Resources/SSMMaintenanceWindowTask.hs
--- a/library-gen/Stratosphere/Resources/SSMMaintenanceWindowTask.hs
+++ b/library-gen/Stratosphere/Resources/SSMMaintenanceWindowTask.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html
@@ -30,24 +31,27 @@
   , _sSMMaintenanceWindowTaskWindowId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON SSMMaintenanceWindowTask where
-  toJSON SSMMaintenanceWindowTask{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _sSMMaintenanceWindowTaskDescription
-    , fmap (("LoggingInfo",) . toJSON) _sSMMaintenanceWindowTaskLoggingInfo
-    , (Just . ("MaxConcurrency",) . toJSON) _sSMMaintenanceWindowTaskMaxConcurrency
-    , (Just . ("MaxErrors",) . toJSON) _sSMMaintenanceWindowTaskMaxErrors
-    , fmap (("Name",) . toJSON) _sSMMaintenanceWindowTaskName
-    , (Just . ("Priority",) . toJSON . fmap Integer') _sSMMaintenanceWindowTaskPriority
-    , (Just . ("ServiceRoleArn",) . toJSON) _sSMMaintenanceWindowTaskServiceRoleArn
-    , (Just . ("Targets",) . toJSON) _sSMMaintenanceWindowTaskTargets
-    , (Just . ("TaskArn",) . toJSON) _sSMMaintenanceWindowTaskTaskArn
-    , fmap (("TaskInvocationParameters",) . toJSON) _sSMMaintenanceWindowTaskTaskInvocationParameters
-    , fmap (("TaskParameters",) . toJSON) _sSMMaintenanceWindowTaskTaskParameters
-    , (Just . ("TaskType",) . toJSON) _sSMMaintenanceWindowTaskTaskType
-    , fmap (("WindowId",) . toJSON) _sSMMaintenanceWindowTaskWindowId
-    ]
+instance ToResourceProperties SSMMaintenanceWindowTask where
+  toResourceProperties SSMMaintenanceWindowTask{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SSM::MaintenanceWindowTask"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _sSMMaintenanceWindowTaskDescription
+        , fmap (("LoggingInfo",) . toJSON) _sSMMaintenanceWindowTaskLoggingInfo
+        , (Just . ("MaxConcurrency",) . toJSON) _sSMMaintenanceWindowTaskMaxConcurrency
+        , (Just . ("MaxErrors",) . toJSON) _sSMMaintenanceWindowTaskMaxErrors
+        , fmap (("Name",) . toJSON) _sSMMaintenanceWindowTaskName
+        , (Just . ("Priority",) . toJSON . fmap Integer') _sSMMaintenanceWindowTaskPriority
+        , (Just . ("ServiceRoleArn",) . toJSON) _sSMMaintenanceWindowTaskServiceRoleArn
+        , (Just . ("Targets",) . toJSON) _sSMMaintenanceWindowTaskTargets
+        , (Just . ("TaskArn",) . toJSON) _sSMMaintenanceWindowTaskTaskArn
+        , fmap (("TaskInvocationParameters",) . toJSON) _sSMMaintenanceWindowTaskTaskInvocationParameters
+        , fmap (("TaskParameters",) . toJSON) _sSMMaintenanceWindowTaskTaskParameters
+        , (Just . ("TaskType",) . toJSON) _sSMMaintenanceWindowTaskTaskType
+        , fmap (("WindowId",) . toJSON) _sSMMaintenanceWindowTaskWindowId
+        ]
+    }
 
 -- | Constructor for 'SSMMaintenanceWindowTask' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/SSMParameter.hs b/library-gen/Stratosphere/Resources/SSMParameter.hs
--- a/library-gen/Stratosphere/Resources/SSMParameter.hs
+++ b/library-gen/Stratosphere/Resources/SSMParameter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html
@@ -20,16 +21,19 @@
   , _sSMParameterValue :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON SSMParameter where
-  toJSON SSMParameter{..} =
-    object $
-    catMaybes
-    [ fmap (("AllowedPattern",) . toJSON) _sSMParameterAllowedPattern
-    , fmap (("Description",) . toJSON) _sSMParameterDescription
-    , fmap (("Name",) . toJSON) _sSMParameterName
-    , (Just . ("Type",) . toJSON) _sSMParameterType
-    , (Just . ("Value",) . toJSON) _sSMParameterValue
-    ]
+instance ToResourceProperties SSMParameter where
+  toResourceProperties SSMParameter{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SSM::Parameter"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AllowedPattern",) . toJSON) _sSMParameterAllowedPattern
+        , fmap (("Description",) . toJSON) _sSMParameterDescription
+        , fmap (("Name",) . toJSON) _sSMParameterName
+        , (Just . ("Type",) . toJSON) _sSMParameterType
+        , (Just . ("Value",) . toJSON) _sSMParameterValue
+        ]
+    }
 
 -- | Constructor for 'SSMParameter' containing required fields as arguments.
 ssmParameter
diff --git a/library-gen/Stratosphere/Resources/SSMPatchBaseline.hs b/library-gen/Stratosphere/Resources/SSMPatchBaseline.hs
--- a/library-gen/Stratosphere/Resources/SSMPatchBaseline.hs
+++ b/library-gen/Stratosphere/Resources/SSMPatchBaseline.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-patchbaseline.html
@@ -29,23 +30,26 @@
   , _sSMPatchBaselineSources :: Maybe [SSMPatchBaselinePatchSource]
   } deriving (Show, Eq)
 
-instance ToJSON SSMPatchBaseline where
-  toJSON SSMPatchBaseline{..} =
-    object $
-    catMaybes
-    [ fmap (("ApprovalRules",) . toJSON) _sSMPatchBaselineApprovalRules
-    , fmap (("ApprovedPatches",) . toJSON) _sSMPatchBaselineApprovedPatches
-    , fmap (("ApprovedPatchesComplianceLevel",) . toJSON) _sSMPatchBaselineApprovedPatchesComplianceLevel
-    , fmap (("ApprovedPatchesEnableNonSecurity",) . toJSON . fmap Bool') _sSMPatchBaselineApprovedPatchesEnableNonSecurity
-    , fmap (("Description",) . toJSON) _sSMPatchBaselineDescription
-    , fmap (("GlobalFilters",) . toJSON) _sSMPatchBaselineGlobalFilters
-    , (Just . ("Name",) . toJSON) _sSMPatchBaselineName
-    , fmap (("OperatingSystem",) . toJSON) _sSMPatchBaselineOperatingSystem
-    , fmap (("PatchGroups",) . toJSON) _sSMPatchBaselinePatchGroups
-    , fmap (("RejectedPatches",) . toJSON) _sSMPatchBaselineRejectedPatches
-    , fmap (("RejectedPatchesAction",) . toJSON) _sSMPatchBaselineRejectedPatchesAction
-    , fmap (("Sources",) . toJSON) _sSMPatchBaselineSources
-    ]
+instance ToResourceProperties SSMPatchBaseline where
+  toResourceProperties SSMPatchBaseline{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SSM::PatchBaseline"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ApprovalRules",) . toJSON) _sSMPatchBaselineApprovalRules
+        , fmap (("ApprovedPatches",) . toJSON) _sSMPatchBaselineApprovedPatches
+        , fmap (("ApprovedPatchesComplianceLevel",) . toJSON) _sSMPatchBaselineApprovedPatchesComplianceLevel
+        , fmap (("ApprovedPatchesEnableNonSecurity",) . toJSON . fmap Bool') _sSMPatchBaselineApprovedPatchesEnableNonSecurity
+        , fmap (("Description",) . toJSON) _sSMPatchBaselineDescription
+        , fmap (("GlobalFilters",) . toJSON) _sSMPatchBaselineGlobalFilters
+        , (Just . ("Name",) . toJSON) _sSMPatchBaselineName
+        , fmap (("OperatingSystem",) . toJSON) _sSMPatchBaselineOperatingSystem
+        , fmap (("PatchGroups",) . toJSON) _sSMPatchBaselinePatchGroups
+        , fmap (("RejectedPatches",) . toJSON) _sSMPatchBaselineRejectedPatches
+        , fmap (("RejectedPatchesAction",) . toJSON) _sSMPatchBaselineRejectedPatchesAction
+        , fmap (("Sources",) . toJSON) _sSMPatchBaselineSources
+        ]
+    }
 
 -- | Constructor for 'SSMPatchBaseline' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/SSMResourceDataSync.hs b/library-gen/Stratosphere/Resources/SSMResourceDataSync.hs
--- a/library-gen/Stratosphere/Resources/SSMResourceDataSync.hs
+++ b/library-gen/Stratosphere/Resources/SSMResourceDataSync.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html
@@ -21,17 +22,20 @@
   , _sSMResourceDataSyncSyncName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON SSMResourceDataSync where
-  toJSON SSMResourceDataSync{..} =
-    object $
-    catMaybes
-    [ (Just . ("BucketName",) . toJSON) _sSMResourceDataSyncBucketName
-    , fmap (("BucketPrefix",) . toJSON) _sSMResourceDataSyncBucketPrefix
-    , (Just . ("BucketRegion",) . toJSON) _sSMResourceDataSyncBucketRegion
-    , fmap (("KMSKeyArn",) . toJSON) _sSMResourceDataSyncKMSKeyArn
-    , (Just . ("SyncFormat",) . toJSON) _sSMResourceDataSyncSyncFormat
-    , (Just . ("SyncName",) . toJSON) _sSMResourceDataSyncSyncName
-    ]
+instance ToResourceProperties SSMResourceDataSync where
+  toResourceProperties SSMResourceDataSync{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SSM::ResourceDataSync"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("BucketName",) . toJSON) _sSMResourceDataSyncBucketName
+        , fmap (("BucketPrefix",) . toJSON) _sSMResourceDataSyncBucketPrefix
+        , (Just . ("BucketRegion",) . toJSON) _sSMResourceDataSyncBucketRegion
+        , fmap (("KMSKeyArn",) . toJSON) _sSMResourceDataSyncKMSKeyArn
+        , (Just . ("SyncFormat",) . toJSON) _sSMResourceDataSyncSyncFormat
+        , (Just . ("SyncName",) . toJSON) _sSMResourceDataSyncSyncName
+        ]
+    }
 
 -- | Constructor for 'SSMResourceDataSync' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/SageMakerEndpoint.hs b/library-gen/Stratosphere/Resources/SageMakerEndpoint.hs
--- a/library-gen/Stratosphere/Resources/SageMakerEndpoint.hs
+++ b/library-gen/Stratosphere/Resources/SageMakerEndpoint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpoint.html
@@ -18,14 +19,17 @@
   , _sageMakerEndpointTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON SageMakerEndpoint where
-  toJSON SageMakerEndpoint{..} =
-    object $
-    catMaybes
-    [ (Just . ("EndpointConfigName",) . toJSON) _sageMakerEndpointEndpointConfigName
-    , fmap (("EndpointName",) . toJSON) _sageMakerEndpointEndpointName
-    , fmap (("Tags",) . toJSON) _sageMakerEndpointTags
-    ]
+instance ToResourceProperties SageMakerEndpoint where
+  toResourceProperties SageMakerEndpoint{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SageMaker::Endpoint"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("EndpointConfigName",) . toJSON) _sageMakerEndpointEndpointConfigName
+        , fmap (("EndpointName",) . toJSON) _sageMakerEndpointEndpointName
+        , fmap (("Tags",) . toJSON) _sageMakerEndpointTags
+        ]
+    }
 
 -- | Constructor for 'SageMakerEndpoint' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/SageMakerEndpointConfig.hs b/library-gen/Stratosphere/Resources/SageMakerEndpointConfig.hs
--- a/library-gen/Stratosphere/Resources/SageMakerEndpointConfig.hs
+++ b/library-gen/Stratosphere/Resources/SageMakerEndpointConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html
@@ -20,15 +21,18 @@
   , _sageMakerEndpointConfigTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON SageMakerEndpointConfig where
-  toJSON SageMakerEndpointConfig{..} =
-    object $
-    catMaybes
-    [ fmap (("EndpointConfigName",) . toJSON) _sageMakerEndpointConfigEndpointConfigName
-    , fmap (("KmsKeyId",) . toJSON) _sageMakerEndpointConfigKmsKeyId
-    , (Just . ("ProductionVariants",) . toJSON) _sageMakerEndpointConfigProductionVariants
-    , fmap (("Tags",) . toJSON) _sageMakerEndpointConfigTags
-    ]
+instance ToResourceProperties SageMakerEndpointConfig where
+  toResourceProperties SageMakerEndpointConfig{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SageMaker::EndpointConfig"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("EndpointConfigName",) . toJSON) _sageMakerEndpointConfigEndpointConfigName
+        , fmap (("KmsKeyId",) . toJSON) _sageMakerEndpointConfigKmsKeyId
+        , (Just . ("ProductionVariants",) . toJSON) _sageMakerEndpointConfigProductionVariants
+        , fmap (("Tags",) . toJSON) _sageMakerEndpointConfigTags
+        ]
+    }
 
 -- | Constructor for 'SageMakerEndpointConfig' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/SageMakerModel.hs b/library-gen/Stratosphere/Resources/SageMakerModel.hs
--- a/library-gen/Stratosphere/Resources/SageMakerModel.hs
+++ b/library-gen/Stratosphere/Resources/SageMakerModel.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html
@@ -23,17 +24,20 @@
   , _sageMakerModelVpcConfig :: Maybe SageMakerModelVpcConfig
   } deriving (Show, Eq)
 
-instance ToJSON SageMakerModel where
-  toJSON SageMakerModel{..} =
-    object $
-    catMaybes
-    [ fmap (("Containers",) . toJSON) _sageMakerModelContainers
-    , (Just . ("ExecutionRoleArn",) . toJSON) _sageMakerModelExecutionRoleArn
-    , fmap (("ModelName",) . toJSON) _sageMakerModelModelName
-    , fmap (("PrimaryContainer",) . toJSON) _sageMakerModelPrimaryContainer
-    , fmap (("Tags",) . toJSON) _sageMakerModelTags
-    , fmap (("VpcConfig",) . toJSON) _sageMakerModelVpcConfig
-    ]
+instance ToResourceProperties SageMakerModel where
+  toResourceProperties SageMakerModel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SageMaker::Model"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Containers",) . toJSON) _sageMakerModelContainers
+        , (Just . ("ExecutionRoleArn",) . toJSON) _sageMakerModelExecutionRoleArn
+        , fmap (("ModelName",) . toJSON) _sageMakerModelModelName
+        , fmap (("PrimaryContainer",) . toJSON) _sageMakerModelPrimaryContainer
+        , fmap (("Tags",) . toJSON) _sageMakerModelTags
+        , fmap (("VpcConfig",) . toJSON) _sageMakerModelVpcConfig
+        ]
+    }
 
 -- | Constructor for 'SageMakerModel' containing required fields as arguments.
 sageMakerModel
diff --git a/library-gen/Stratosphere/Resources/SageMakerNotebookInstance.hs b/library-gen/Stratosphere/Resources/SageMakerNotebookInstance.hs
--- a/library-gen/Stratosphere/Resources/SageMakerNotebookInstance.hs
+++ b/library-gen/Stratosphere/Resources/SageMakerNotebookInstance.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html
@@ -25,21 +26,24 @@
   , _sageMakerNotebookInstanceVolumeSizeInGB :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
-instance ToJSON SageMakerNotebookInstance where
-  toJSON SageMakerNotebookInstance{..} =
-    object $
-    catMaybes
-    [ fmap (("DirectInternetAccess",) . toJSON) _sageMakerNotebookInstanceDirectInternetAccess
-    , (Just . ("InstanceType",) . toJSON) _sageMakerNotebookInstanceInstanceType
-    , fmap (("KmsKeyId",) . toJSON) _sageMakerNotebookInstanceKmsKeyId
-    , fmap (("LifecycleConfigName",) . toJSON) _sageMakerNotebookInstanceLifecycleConfigName
-    , fmap (("NotebookInstanceName",) . toJSON) _sageMakerNotebookInstanceNotebookInstanceName
-    , (Just . ("RoleArn",) . toJSON) _sageMakerNotebookInstanceRoleArn
-    , fmap (("SecurityGroupIds",) . toJSON) _sageMakerNotebookInstanceSecurityGroupIds
-    , fmap (("SubnetId",) . toJSON) _sageMakerNotebookInstanceSubnetId
-    , fmap (("Tags",) . toJSON) _sageMakerNotebookInstanceTags
-    , fmap (("VolumeSizeInGB",) . toJSON . fmap Integer') _sageMakerNotebookInstanceVolumeSizeInGB
-    ]
+instance ToResourceProperties SageMakerNotebookInstance where
+  toResourceProperties SageMakerNotebookInstance{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SageMaker::NotebookInstance"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("DirectInternetAccess",) . toJSON) _sageMakerNotebookInstanceDirectInternetAccess
+        , (Just . ("InstanceType",) . toJSON) _sageMakerNotebookInstanceInstanceType
+        , fmap (("KmsKeyId",) . toJSON) _sageMakerNotebookInstanceKmsKeyId
+        , fmap (("LifecycleConfigName",) . toJSON) _sageMakerNotebookInstanceLifecycleConfigName
+        , fmap (("NotebookInstanceName",) . toJSON) _sageMakerNotebookInstanceNotebookInstanceName
+        , (Just . ("RoleArn",) . toJSON) _sageMakerNotebookInstanceRoleArn
+        , fmap (("SecurityGroupIds",) . toJSON) _sageMakerNotebookInstanceSecurityGroupIds
+        , fmap (("SubnetId",) . toJSON) _sageMakerNotebookInstanceSubnetId
+        , fmap (("Tags",) . toJSON) _sageMakerNotebookInstanceTags
+        , fmap (("VolumeSizeInGB",) . toJSON . fmap Integer') _sageMakerNotebookInstanceVolumeSizeInGB
+        ]
+    }
 
 -- | Constructor for 'SageMakerNotebookInstance' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/SageMakerNotebookInstanceLifecycleConfig.hs b/library-gen/Stratosphere/Resources/SageMakerNotebookInstanceLifecycleConfig.hs
--- a/library-gen/Stratosphere/Resources/SageMakerNotebookInstanceLifecycleConfig.hs
+++ b/library-gen/Stratosphere/Resources/SageMakerNotebookInstanceLifecycleConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstancelifecycleconfig.html
@@ -19,14 +20,17 @@
   , _sageMakerNotebookInstanceLifecycleConfigOnStart :: Maybe [SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook]
   } deriving (Show, Eq)
 
-instance ToJSON SageMakerNotebookInstanceLifecycleConfig where
-  toJSON SageMakerNotebookInstanceLifecycleConfig{..} =
-    object $
-    catMaybes
-    [ fmap (("NotebookInstanceLifecycleConfigName",) . toJSON) _sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleConfigName
-    , fmap (("OnCreate",) . toJSON) _sageMakerNotebookInstanceLifecycleConfigOnCreate
-    , fmap (("OnStart",) . toJSON) _sageMakerNotebookInstanceLifecycleConfigOnStart
-    ]
+instance ToResourceProperties SageMakerNotebookInstanceLifecycleConfig where
+  toResourceProperties SageMakerNotebookInstanceLifecycleConfig{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SageMaker::NotebookInstanceLifecycleConfig"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("NotebookInstanceLifecycleConfigName",) . toJSON) _sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleConfigName
+        , fmap (("OnCreate",) . toJSON) _sageMakerNotebookInstanceLifecycleConfigOnCreate
+        , fmap (("OnStart",) . toJSON) _sageMakerNotebookInstanceLifecycleConfigOnStart
+        ]
+    }
 
 -- | Constructor for 'SageMakerNotebookInstanceLifecycleConfig' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/SecretsManagerResourcePolicy.hs b/library-gen/Stratosphere/Resources/SecretsManagerResourcePolicy.hs
--- a/library-gen/Stratosphere/Resources/SecretsManagerResourcePolicy.hs
+++ b/library-gen/Stratosphere/Resources/SecretsManagerResourcePolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-resourcepolicy.html
@@ -17,13 +18,16 @@
   , _secretsManagerResourcePolicySecretId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON SecretsManagerResourcePolicy where
-  toJSON SecretsManagerResourcePolicy{..} =
-    object $
-    catMaybes
-    [ (Just . ("ResourcePolicy",) . toJSON) _secretsManagerResourcePolicyResourcePolicy
-    , (Just . ("SecretId",) . toJSON) _secretsManagerResourcePolicySecretId
-    ]
+instance ToResourceProperties SecretsManagerResourcePolicy where
+  toResourceProperties SecretsManagerResourcePolicy{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SecretsManager::ResourcePolicy"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ResourcePolicy",) . toJSON) _secretsManagerResourcePolicyResourcePolicy
+        , (Just . ("SecretId",) . toJSON) _secretsManagerResourcePolicySecretId
+        ]
+    }
 
 -- | Constructor for 'SecretsManagerResourcePolicy' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/SecretsManagerRotationSchedule.hs b/library-gen/Stratosphere/Resources/SecretsManagerRotationSchedule.hs
--- a/library-gen/Stratosphere/Resources/SecretsManagerRotationSchedule.hs
+++ b/library-gen/Stratosphere/Resources/SecretsManagerRotationSchedule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html
@@ -18,14 +19,17 @@
   , _secretsManagerRotationScheduleSecretId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON SecretsManagerRotationSchedule where
-  toJSON SecretsManagerRotationSchedule{..} =
-    object $
-    catMaybes
-    [ fmap (("RotationLambdaARN",) . toJSON) _secretsManagerRotationScheduleRotationLambdaARN
-    , fmap (("RotationRules",) . toJSON) _secretsManagerRotationScheduleRotationRules
-    , (Just . ("SecretId",) . toJSON) _secretsManagerRotationScheduleSecretId
-    ]
+instance ToResourceProperties SecretsManagerRotationSchedule where
+  toResourceProperties SecretsManagerRotationSchedule{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SecretsManager::RotationSchedule"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("RotationLambdaARN",) . toJSON) _secretsManagerRotationScheduleRotationLambdaARN
+        , fmap (("RotationRules",) . toJSON) _secretsManagerRotationScheduleRotationRules
+        , (Just . ("SecretId",) . toJSON) _secretsManagerRotationScheduleSecretId
+        ]
+    }
 
 -- | Constructor for 'SecretsManagerRotationSchedule' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/SecretsManagerSecret.hs b/library-gen/Stratosphere/Resources/SecretsManagerSecret.hs
--- a/library-gen/Stratosphere/Resources/SecretsManagerSecret.hs
+++ b/library-gen/Stratosphere/Resources/SecretsManagerSecret.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html
@@ -22,17 +23,20 @@
   , _secretsManagerSecretTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON SecretsManagerSecret where
-  toJSON SecretsManagerSecret{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _secretsManagerSecretDescription
-    , fmap (("GenerateSecretString",) . toJSON) _secretsManagerSecretGenerateSecretString
-    , fmap (("KmsKeyId",) . toJSON) _secretsManagerSecretKmsKeyId
-    , fmap (("Name",) . toJSON) _secretsManagerSecretName
-    , fmap (("SecretString",) . toJSON) _secretsManagerSecretSecretString
-    , fmap (("Tags",) . toJSON) _secretsManagerSecretTags
-    ]
+instance ToResourceProperties SecretsManagerSecret where
+  toResourceProperties SecretsManagerSecret{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SecretsManager::Secret"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _secretsManagerSecretDescription
+        , fmap (("GenerateSecretString",) . toJSON) _secretsManagerSecretGenerateSecretString
+        , fmap (("KmsKeyId",) . toJSON) _secretsManagerSecretKmsKeyId
+        , fmap (("Name",) . toJSON) _secretsManagerSecretName
+        , fmap (("SecretString",) . toJSON) _secretsManagerSecretSecretString
+        , fmap (("Tags",) . toJSON) _secretsManagerSecretTags
+        ]
+    }
 
 -- | Constructor for 'SecretsManagerSecret' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/SecretsManagerSecretTargetAttachment.hs b/library-gen/Stratosphere/Resources/SecretsManagerSecretTargetAttachment.hs
--- a/library-gen/Stratosphere/Resources/SecretsManagerSecretTargetAttachment.hs
+++ b/library-gen/Stratosphere/Resources/SecretsManagerSecretTargetAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html
@@ -18,14 +19,17 @@
   , _secretsManagerSecretTargetAttachmentTargetType :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON SecretsManagerSecretTargetAttachment where
-  toJSON SecretsManagerSecretTargetAttachment{..} =
-    object $
-    catMaybes
-    [ (Just . ("SecretId",) . toJSON) _secretsManagerSecretTargetAttachmentSecretId
-    , (Just . ("TargetId",) . toJSON) _secretsManagerSecretTargetAttachmentTargetId
-    , (Just . ("TargetType",) . toJSON) _secretsManagerSecretTargetAttachmentTargetType
-    ]
+instance ToResourceProperties SecretsManagerSecretTargetAttachment where
+  toResourceProperties SecretsManagerSecretTargetAttachment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::SecretsManager::SecretTargetAttachment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("SecretId",) . toJSON) _secretsManagerSecretTargetAttachmentSecretId
+        , (Just . ("TargetId",) . toJSON) _secretsManagerSecretTargetAttachmentTargetId
+        , (Just . ("TargetType",) . toJSON) _secretsManagerSecretTargetAttachmentTargetType
+        ]
+    }
 
 -- | Constructor for 'SecretsManagerSecretTargetAttachment' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogAcceptedPortfolioShare.hs b/library-gen/Stratosphere/Resources/ServiceCatalogAcceptedPortfolioShare.hs
--- a/library-gen/Stratosphere/Resources/ServiceCatalogAcceptedPortfolioShare.hs
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogAcceptedPortfolioShare.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-acceptedportfolioshare.html
@@ -17,13 +18,16 @@
   , _serviceCatalogAcceptedPortfolioSharePortfolioId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ServiceCatalogAcceptedPortfolioShare where
-  toJSON ServiceCatalogAcceptedPortfolioShare{..} =
-    object $
-    catMaybes
-    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogAcceptedPortfolioShareAcceptLanguage
-    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogAcceptedPortfolioSharePortfolioId
-    ]
+instance ToResourceProperties ServiceCatalogAcceptedPortfolioShare where
+  toResourceProperties ServiceCatalogAcceptedPortfolioShare{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceCatalog::AcceptedPortfolioShare"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogAcceptedPortfolioShareAcceptLanguage
+        , (Just . ("PortfolioId",) . toJSON) _serviceCatalogAcceptedPortfolioSharePortfolioId
+        ]
+    }
 
 -- | Constructor for 'ServiceCatalogAcceptedPortfolioShare' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogCloudFormationProduct.hs b/library-gen/Stratosphere/Resources/ServiceCatalogCloudFormationProduct.hs
--- a/library-gen/Stratosphere/Resources/ServiceCatalogCloudFormationProduct.hs
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogCloudFormationProduct.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationproduct.html
@@ -26,21 +27,24 @@
   , _serviceCatalogCloudFormationProductTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON ServiceCatalogCloudFormationProduct where
-  toJSON ServiceCatalogCloudFormationProduct{..} =
-    object $
-    catMaybes
-    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogCloudFormationProductAcceptLanguage
-    , fmap (("Description",) . toJSON) _serviceCatalogCloudFormationProductDescription
-    , fmap (("Distributor",) . toJSON) _serviceCatalogCloudFormationProductDistributor
-    , (Just . ("Name",) . toJSON) _serviceCatalogCloudFormationProductName
-    , (Just . ("Owner",) . toJSON) _serviceCatalogCloudFormationProductOwner
-    , (Just . ("ProvisioningArtifactParameters",) . toJSON) _serviceCatalogCloudFormationProductProvisioningArtifactParameters
-    , fmap (("SupportDescription",) . toJSON) _serviceCatalogCloudFormationProductSupportDescription
-    , fmap (("SupportEmail",) . toJSON) _serviceCatalogCloudFormationProductSupportEmail
-    , fmap (("SupportUrl",) . toJSON) _serviceCatalogCloudFormationProductSupportUrl
-    , fmap (("Tags",) . toJSON) _serviceCatalogCloudFormationProductTags
-    ]
+instance ToResourceProperties ServiceCatalogCloudFormationProduct where
+  toResourceProperties ServiceCatalogCloudFormationProduct{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceCatalog::CloudFormationProduct"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogCloudFormationProductAcceptLanguage
+        , fmap (("Description",) . toJSON) _serviceCatalogCloudFormationProductDescription
+        , fmap (("Distributor",) . toJSON) _serviceCatalogCloudFormationProductDistributor
+        , (Just . ("Name",) . toJSON) _serviceCatalogCloudFormationProductName
+        , (Just . ("Owner",) . toJSON) _serviceCatalogCloudFormationProductOwner
+        , (Just . ("ProvisioningArtifactParameters",) . toJSON) _serviceCatalogCloudFormationProductProvisioningArtifactParameters
+        , fmap (("SupportDescription",) . toJSON) _serviceCatalogCloudFormationProductSupportDescription
+        , fmap (("SupportEmail",) . toJSON) _serviceCatalogCloudFormationProductSupportEmail
+        , fmap (("SupportUrl",) . toJSON) _serviceCatalogCloudFormationProductSupportUrl
+        , fmap (("Tags",) . toJSON) _serviceCatalogCloudFormationProductTags
+        ]
+    }
 
 -- | Constructor for 'ServiceCatalogCloudFormationProduct' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogCloudFormationProvisionedProduct.hs b/library-gen/Stratosphere/Resources/ServiceCatalogCloudFormationProvisionedProduct.hs
--- a/library-gen/Stratosphere/Resources/ServiceCatalogCloudFormationProvisionedProduct.hs
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogCloudFormationProvisionedProduct.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html
@@ -28,21 +29,24 @@
   , _serviceCatalogCloudFormationProvisionedProductTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON ServiceCatalogCloudFormationProvisionedProduct where
-  toJSON ServiceCatalogCloudFormationProvisionedProduct{..} =
-    object $
-    catMaybes
-    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogCloudFormationProvisionedProductAcceptLanguage
-    , fmap (("NotificationArns",) . toJSON) _serviceCatalogCloudFormationProvisionedProductNotificationArns
-    , fmap (("PathId",) . toJSON) _serviceCatalogCloudFormationProvisionedProductPathId
-    , fmap (("ProductId",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProductId
-    , fmap (("ProductName",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProductName
-    , fmap (("ProvisionedProductName",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProvisionedProductName
-    , fmap (("ProvisioningArtifactId",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProvisioningArtifactId
-    , fmap (("ProvisioningArtifactName",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProvisioningArtifactName
-    , fmap (("ProvisioningParameters",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProvisioningParameters
-    , fmap (("Tags",) . toJSON) _serviceCatalogCloudFormationProvisionedProductTags
-    ]
+instance ToResourceProperties ServiceCatalogCloudFormationProvisionedProduct where
+  toResourceProperties ServiceCatalogCloudFormationProvisionedProduct{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceCatalog::CloudFormationProvisionedProduct"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogCloudFormationProvisionedProductAcceptLanguage
+        , fmap (("NotificationArns",) . toJSON) _serviceCatalogCloudFormationProvisionedProductNotificationArns
+        , fmap (("PathId",) . toJSON) _serviceCatalogCloudFormationProvisionedProductPathId
+        , fmap (("ProductId",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProductId
+        , fmap (("ProductName",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProductName
+        , fmap (("ProvisionedProductName",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProvisionedProductName
+        , fmap (("ProvisioningArtifactId",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProvisioningArtifactId
+        , fmap (("ProvisioningArtifactName",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProvisioningArtifactName
+        , fmap (("ProvisioningParameters",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProvisioningParameters
+        , fmap (("Tags",) . toJSON) _serviceCatalogCloudFormationProvisionedProductTags
+        ]
+    }
 
 -- | Constructor for 'ServiceCatalogCloudFormationProvisionedProduct'
 -- containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogLaunchNotificationConstraint.hs b/library-gen/Stratosphere/Resources/ServiceCatalogLaunchNotificationConstraint.hs
--- a/library-gen/Stratosphere/Resources/ServiceCatalogLaunchNotificationConstraint.hs
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogLaunchNotificationConstraint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchnotificationconstraint.html
@@ -21,16 +22,19 @@
   , _serviceCatalogLaunchNotificationConstraintProductId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ServiceCatalogLaunchNotificationConstraint where
-  toJSON ServiceCatalogLaunchNotificationConstraint{..} =
-    object $
-    catMaybes
-    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogLaunchNotificationConstraintAcceptLanguage
-    , fmap (("Description",) . toJSON) _serviceCatalogLaunchNotificationConstraintDescription
-    , (Just . ("NotificationArns",) . toJSON) _serviceCatalogLaunchNotificationConstraintNotificationArns
-    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogLaunchNotificationConstraintPortfolioId
-    , (Just . ("ProductId",) . toJSON) _serviceCatalogLaunchNotificationConstraintProductId
-    ]
+instance ToResourceProperties ServiceCatalogLaunchNotificationConstraint where
+  toResourceProperties ServiceCatalogLaunchNotificationConstraint{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceCatalog::LaunchNotificationConstraint"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogLaunchNotificationConstraintAcceptLanguage
+        , fmap (("Description",) . toJSON) _serviceCatalogLaunchNotificationConstraintDescription
+        , (Just . ("NotificationArns",) . toJSON) _serviceCatalogLaunchNotificationConstraintNotificationArns
+        , (Just . ("PortfolioId",) . toJSON) _serviceCatalogLaunchNotificationConstraintPortfolioId
+        , (Just . ("ProductId",) . toJSON) _serviceCatalogLaunchNotificationConstraintProductId
+        ]
+    }
 
 -- | Constructor for 'ServiceCatalogLaunchNotificationConstraint' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogLaunchRoleConstraint.hs b/library-gen/Stratosphere/Resources/ServiceCatalogLaunchRoleConstraint.hs
--- a/library-gen/Stratosphere/Resources/ServiceCatalogLaunchRoleConstraint.hs
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogLaunchRoleConstraint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchroleconstraint.html
@@ -20,16 +21,19 @@
   , _serviceCatalogLaunchRoleConstraintRoleArn :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ServiceCatalogLaunchRoleConstraint where
-  toJSON ServiceCatalogLaunchRoleConstraint{..} =
-    object $
-    catMaybes
-    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogLaunchRoleConstraintAcceptLanguage
-    , fmap (("Description",) . toJSON) _serviceCatalogLaunchRoleConstraintDescription
-    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogLaunchRoleConstraintPortfolioId
-    , (Just . ("ProductId",) . toJSON) _serviceCatalogLaunchRoleConstraintProductId
-    , (Just . ("RoleArn",) . toJSON) _serviceCatalogLaunchRoleConstraintRoleArn
-    ]
+instance ToResourceProperties ServiceCatalogLaunchRoleConstraint where
+  toResourceProperties ServiceCatalogLaunchRoleConstraint{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceCatalog::LaunchRoleConstraint"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogLaunchRoleConstraintAcceptLanguage
+        , fmap (("Description",) . toJSON) _serviceCatalogLaunchRoleConstraintDescription
+        , (Just . ("PortfolioId",) . toJSON) _serviceCatalogLaunchRoleConstraintPortfolioId
+        , (Just . ("ProductId",) . toJSON) _serviceCatalogLaunchRoleConstraintProductId
+        , (Just . ("RoleArn",) . toJSON) _serviceCatalogLaunchRoleConstraintRoleArn
+        ]
+    }
 
 -- | Constructor for 'ServiceCatalogLaunchRoleConstraint' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogLaunchTemplateConstraint.hs b/library-gen/Stratosphere/Resources/ServiceCatalogLaunchTemplateConstraint.hs
--- a/library-gen/Stratosphere/Resources/ServiceCatalogLaunchTemplateConstraint.hs
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogLaunchTemplateConstraint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchtemplateconstraint.html
@@ -21,16 +22,19 @@
   , _serviceCatalogLaunchTemplateConstraintRules :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ServiceCatalogLaunchTemplateConstraint where
-  toJSON ServiceCatalogLaunchTemplateConstraint{..} =
-    object $
-    catMaybes
-    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogLaunchTemplateConstraintAcceptLanguage
-    , fmap (("Description",) . toJSON) _serviceCatalogLaunchTemplateConstraintDescription
-    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogLaunchTemplateConstraintPortfolioId
-    , (Just . ("ProductId",) . toJSON) _serviceCatalogLaunchTemplateConstraintProductId
-    , (Just . ("Rules",) . toJSON) _serviceCatalogLaunchTemplateConstraintRules
-    ]
+instance ToResourceProperties ServiceCatalogLaunchTemplateConstraint where
+  toResourceProperties ServiceCatalogLaunchTemplateConstraint{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceCatalog::LaunchTemplateConstraint"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogLaunchTemplateConstraintAcceptLanguage
+        , fmap (("Description",) . toJSON) _serviceCatalogLaunchTemplateConstraintDescription
+        , (Just . ("PortfolioId",) . toJSON) _serviceCatalogLaunchTemplateConstraintPortfolioId
+        , (Just . ("ProductId",) . toJSON) _serviceCatalogLaunchTemplateConstraintProductId
+        , (Just . ("Rules",) . toJSON) _serviceCatalogLaunchTemplateConstraintRules
+        ]
+    }
 
 -- | Constructor for 'ServiceCatalogLaunchTemplateConstraint' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogPortfolio.hs b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolio.hs
--- a/library-gen/Stratosphere/Resources/ServiceCatalogPortfolio.hs
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolio.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolio.html
@@ -20,16 +21,19 @@
   , _serviceCatalogPortfolioTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
-instance ToJSON ServiceCatalogPortfolio where
-  toJSON ServiceCatalogPortfolio{..} =
-    object $
-    catMaybes
-    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogPortfolioAcceptLanguage
-    , fmap (("Description",) . toJSON) _serviceCatalogPortfolioDescription
-    , (Just . ("DisplayName",) . toJSON) _serviceCatalogPortfolioDisplayName
-    , (Just . ("ProviderName",) . toJSON) _serviceCatalogPortfolioProviderName
-    , fmap (("Tags",) . toJSON) _serviceCatalogPortfolioTags
-    ]
+instance ToResourceProperties ServiceCatalogPortfolio where
+  toResourceProperties ServiceCatalogPortfolio{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceCatalog::Portfolio"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogPortfolioAcceptLanguage
+        , fmap (("Description",) . toJSON) _serviceCatalogPortfolioDescription
+        , (Just . ("DisplayName",) . toJSON) _serviceCatalogPortfolioDisplayName
+        , (Just . ("ProviderName",) . toJSON) _serviceCatalogPortfolioProviderName
+        , fmap (("Tags",) . toJSON) _serviceCatalogPortfolioTags
+        ]
+    }
 
 -- | Constructor for 'ServiceCatalogPortfolio' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioPrincipalAssociation.hs b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioPrincipalAssociation.hs
--- a/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioPrincipalAssociation.hs
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioPrincipalAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioprincipalassociation.html
@@ -21,15 +22,18 @@
   , _serviceCatalogPortfolioPrincipalAssociationPrincipalType :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ServiceCatalogPortfolioPrincipalAssociation where
-  toJSON ServiceCatalogPortfolioPrincipalAssociation{..} =
-    object $
-    catMaybes
-    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationAcceptLanguage
-    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationPortfolioId
-    , (Just . ("PrincipalARN",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationPrincipalARN
-    , (Just . ("PrincipalType",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationPrincipalType
-    ]
+instance ToResourceProperties ServiceCatalogPortfolioPrincipalAssociation where
+  toResourceProperties ServiceCatalogPortfolioPrincipalAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceCatalog::PortfolioPrincipalAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationAcceptLanguage
+        , (Just . ("PortfolioId",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationPortfolioId
+        , (Just . ("PrincipalARN",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationPrincipalARN
+        , (Just . ("PrincipalType",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationPrincipalType
+        ]
+    }
 
 -- | Constructor for 'ServiceCatalogPortfolioPrincipalAssociation' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioProductAssociation.hs b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioProductAssociation.hs
--- a/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioProductAssociation.hs
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioProductAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioproductassociation.html
@@ -20,15 +21,18 @@
   , _serviceCatalogPortfolioProductAssociationSourcePortfolioId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ServiceCatalogPortfolioProductAssociation where
-  toJSON ServiceCatalogPortfolioProductAssociation{..} =
-    object $
-    catMaybes
-    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogPortfolioProductAssociationAcceptLanguage
-    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogPortfolioProductAssociationPortfolioId
-    , (Just . ("ProductId",) . toJSON) _serviceCatalogPortfolioProductAssociationProductId
-    , fmap (("SourcePortfolioId",) . toJSON) _serviceCatalogPortfolioProductAssociationSourcePortfolioId
-    ]
+instance ToResourceProperties ServiceCatalogPortfolioProductAssociation where
+  toResourceProperties ServiceCatalogPortfolioProductAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceCatalog::PortfolioProductAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogPortfolioProductAssociationAcceptLanguage
+        , (Just . ("PortfolioId",) . toJSON) _serviceCatalogPortfolioProductAssociationPortfolioId
+        , (Just . ("ProductId",) . toJSON) _serviceCatalogPortfolioProductAssociationProductId
+        , fmap (("SourcePortfolioId",) . toJSON) _serviceCatalogPortfolioProductAssociationSourcePortfolioId
+        ]
+    }
 
 -- | Constructor for 'ServiceCatalogPortfolioProductAssociation' containing
 -- required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioShare.hs b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioShare.hs
--- a/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioShare.hs
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioShare.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioshare.html
@@ -18,14 +19,17 @@
   , _serviceCatalogPortfolioSharePortfolioId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ServiceCatalogPortfolioShare where
-  toJSON ServiceCatalogPortfolioShare{..} =
-    object $
-    catMaybes
-    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogPortfolioShareAcceptLanguage
-    , (Just . ("AccountId",) . toJSON) _serviceCatalogPortfolioShareAccountId
-    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogPortfolioSharePortfolioId
-    ]
+instance ToResourceProperties ServiceCatalogPortfolioShare where
+  toResourceProperties ServiceCatalogPortfolioShare{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceCatalog::PortfolioShare"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogPortfolioShareAcceptLanguage
+        , (Just . ("AccountId",) . toJSON) _serviceCatalogPortfolioShareAccountId
+        , (Just . ("PortfolioId",) . toJSON) _serviceCatalogPortfolioSharePortfolioId
+        ]
+    }
 
 -- | Constructor for 'ServiceCatalogPortfolioShare' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogTagOption.hs b/library-gen/Stratosphere/Resources/ServiceCatalogTagOption.hs
--- a/library-gen/Stratosphere/Resources/ServiceCatalogTagOption.hs
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogTagOption.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-tagoption.html
@@ -18,14 +19,17 @@
   , _serviceCatalogTagOptionValue :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ServiceCatalogTagOption where
-  toJSON ServiceCatalogTagOption{..} =
-    object $
-    catMaybes
-    [ fmap (("Active",) . toJSON . fmap Bool') _serviceCatalogTagOptionActive
-    , (Just . ("Key",) . toJSON) _serviceCatalogTagOptionKey
-    , (Just . ("Value",) . toJSON) _serviceCatalogTagOptionValue
-    ]
+instance ToResourceProperties ServiceCatalogTagOption where
+  toResourceProperties ServiceCatalogTagOption{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceCatalog::TagOption"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Active",) . toJSON . fmap Bool') _serviceCatalogTagOptionActive
+        , (Just . ("Key",) . toJSON) _serviceCatalogTagOptionKey
+        , (Just . ("Value",) . toJSON) _serviceCatalogTagOptionValue
+        ]
+    }
 
 -- | Constructor for 'ServiceCatalogTagOption' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogTagOptionAssociation.hs b/library-gen/Stratosphere/Resources/ServiceCatalogTagOptionAssociation.hs
--- a/library-gen/Stratosphere/Resources/ServiceCatalogTagOptionAssociation.hs
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogTagOptionAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-tagoptionassociation.html
@@ -17,13 +18,16 @@
   , _serviceCatalogTagOptionAssociationTagOptionId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ServiceCatalogTagOptionAssociation where
-  toJSON ServiceCatalogTagOptionAssociation{..} =
-    object $
-    catMaybes
-    [ (Just . ("ResourceId",) . toJSON) _serviceCatalogTagOptionAssociationResourceId
-    , (Just . ("TagOptionId",) . toJSON) _serviceCatalogTagOptionAssociationTagOptionId
-    ]
+instance ToResourceProperties ServiceCatalogTagOptionAssociation where
+  toResourceProperties ServiceCatalogTagOptionAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceCatalog::TagOptionAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ResourceId",) . toJSON) _serviceCatalogTagOptionAssociationResourceId
+        , (Just . ("TagOptionId",) . toJSON) _serviceCatalogTagOptionAssociationTagOptionId
+        ]
+    }
 
 -- | Constructor for 'ServiceCatalogTagOptionAssociation' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceDiscoveryHttpNamespace.hs b/library-gen/Stratosphere/Resources/ServiceDiscoveryHttpNamespace.hs
--- a/library-gen/Stratosphere/Resources/ServiceDiscoveryHttpNamespace.hs
+++ b/library-gen/Stratosphere/Resources/ServiceDiscoveryHttpNamespace.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-httpnamespace.html
@@ -17,13 +18,16 @@
   , _serviceDiscoveryHttpNamespaceName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ServiceDiscoveryHttpNamespace where
-  toJSON ServiceDiscoveryHttpNamespace{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _serviceDiscoveryHttpNamespaceDescription
-    , (Just . ("Name",) . toJSON) _serviceDiscoveryHttpNamespaceName
-    ]
+instance ToResourceProperties ServiceDiscoveryHttpNamespace where
+  toResourceProperties ServiceDiscoveryHttpNamespace{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceDiscovery::HttpNamespace"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _serviceDiscoveryHttpNamespaceDescription
+        , (Just . ("Name",) . toJSON) _serviceDiscoveryHttpNamespaceName
+        ]
+    }
 
 -- | Constructor for 'ServiceDiscoveryHttpNamespace' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceDiscoveryInstance.hs b/library-gen/Stratosphere/Resources/ServiceDiscoveryInstance.hs
--- a/library-gen/Stratosphere/Resources/ServiceDiscoveryInstance.hs
+++ b/library-gen/Stratosphere/Resources/ServiceDiscoveryInstance.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-instance.html
@@ -18,14 +19,17 @@
   , _serviceDiscoveryInstanceServiceId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ServiceDiscoveryInstance where
-  toJSON ServiceDiscoveryInstance{..} =
-    object $
-    catMaybes
-    [ (Just . ("InstanceAttributes",) . toJSON) _serviceDiscoveryInstanceInstanceAttributes
-    , fmap (("InstanceId",) . toJSON) _serviceDiscoveryInstanceInstanceId
-    , (Just . ("ServiceId",) . toJSON) _serviceDiscoveryInstanceServiceId
-    ]
+instance ToResourceProperties ServiceDiscoveryInstance where
+  toResourceProperties ServiceDiscoveryInstance{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceDiscovery::Instance"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("InstanceAttributes",) . toJSON) _serviceDiscoveryInstanceInstanceAttributes
+        , fmap (("InstanceId",) . toJSON) _serviceDiscoveryInstanceInstanceId
+        , (Just . ("ServiceId",) . toJSON) _serviceDiscoveryInstanceServiceId
+        ]
+    }
 
 -- | Constructor for 'ServiceDiscoveryInstance' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceDiscoveryPrivateDnsNamespace.hs b/library-gen/Stratosphere/Resources/ServiceDiscoveryPrivateDnsNamespace.hs
--- a/library-gen/Stratosphere/Resources/ServiceDiscoveryPrivateDnsNamespace.hs
+++ b/library-gen/Stratosphere/Resources/ServiceDiscoveryPrivateDnsNamespace.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-privatednsnamespace.html
@@ -18,14 +19,17 @@
   , _serviceDiscoveryPrivateDnsNamespaceVpc :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ServiceDiscoveryPrivateDnsNamespace where
-  toJSON ServiceDiscoveryPrivateDnsNamespace{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _serviceDiscoveryPrivateDnsNamespaceDescription
-    , (Just . ("Name",) . toJSON) _serviceDiscoveryPrivateDnsNamespaceName
-    , (Just . ("Vpc",) . toJSON) _serviceDiscoveryPrivateDnsNamespaceVpc
-    ]
+instance ToResourceProperties ServiceDiscoveryPrivateDnsNamespace where
+  toResourceProperties ServiceDiscoveryPrivateDnsNamespace{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceDiscovery::PrivateDnsNamespace"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _serviceDiscoveryPrivateDnsNamespaceDescription
+        , (Just . ("Name",) . toJSON) _serviceDiscoveryPrivateDnsNamespaceName
+        , (Just . ("Vpc",) . toJSON) _serviceDiscoveryPrivateDnsNamespaceVpc
+        ]
+    }
 
 -- | Constructor for 'ServiceDiscoveryPrivateDnsNamespace' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceDiscoveryPublicDnsNamespace.hs b/library-gen/Stratosphere/Resources/ServiceDiscoveryPublicDnsNamespace.hs
--- a/library-gen/Stratosphere/Resources/ServiceDiscoveryPublicDnsNamespace.hs
+++ b/library-gen/Stratosphere/Resources/ServiceDiscoveryPublicDnsNamespace.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-publicdnsnamespace.html
@@ -17,13 +18,16 @@
   , _serviceDiscoveryPublicDnsNamespaceName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON ServiceDiscoveryPublicDnsNamespace where
-  toJSON ServiceDiscoveryPublicDnsNamespace{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _serviceDiscoveryPublicDnsNamespaceDescription
-    , (Just . ("Name",) . toJSON) _serviceDiscoveryPublicDnsNamespaceName
-    ]
+instance ToResourceProperties ServiceDiscoveryPublicDnsNamespace where
+  toResourceProperties ServiceDiscoveryPublicDnsNamespace{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceDiscovery::PublicDnsNamespace"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _serviceDiscoveryPublicDnsNamespaceDescription
+        , (Just . ("Name",) . toJSON) _serviceDiscoveryPublicDnsNamespaceName
+        ]
+    }
 
 -- | Constructor for 'ServiceDiscoveryPublicDnsNamespace' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ServiceDiscoveryService.hs b/library-gen/Stratosphere/Resources/ServiceDiscoveryService.hs
--- a/library-gen/Stratosphere/Resources/ServiceDiscoveryService.hs
+++ b/library-gen/Stratosphere/Resources/ServiceDiscoveryService.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-service.html
@@ -23,17 +24,20 @@
   , _serviceDiscoveryServiceNamespaceId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON ServiceDiscoveryService where
-  toJSON ServiceDiscoveryService{..} =
-    object $
-    catMaybes
-    [ fmap (("Description",) . toJSON) _serviceDiscoveryServiceDescription
-    , fmap (("DnsConfig",) . toJSON) _serviceDiscoveryServiceDnsConfig
-    , fmap (("HealthCheckConfig",) . toJSON) _serviceDiscoveryServiceHealthCheckConfig
-    , fmap (("HealthCheckCustomConfig",) . toJSON) _serviceDiscoveryServiceHealthCheckCustomConfig
-    , fmap (("Name",) . toJSON) _serviceDiscoveryServiceName
-    , fmap (("NamespaceId",) . toJSON) _serviceDiscoveryServiceNamespaceId
-    ]
+instance ToResourceProperties ServiceDiscoveryService where
+  toResourceProperties ServiceDiscoveryService{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ServiceDiscovery::Service"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _serviceDiscoveryServiceDescription
+        , fmap (("DnsConfig",) . toJSON) _serviceDiscoveryServiceDnsConfig
+        , fmap (("HealthCheckConfig",) . toJSON) _serviceDiscoveryServiceHealthCheckConfig
+        , fmap (("HealthCheckCustomConfig",) . toJSON) _serviceDiscoveryServiceHealthCheckCustomConfig
+        , fmap (("Name",) . toJSON) _serviceDiscoveryServiceName
+        , fmap (("NamespaceId",) . toJSON) _serviceDiscoveryServiceNamespaceId
+        ]
+    }
 
 -- | Constructor for 'ServiceDiscoveryService' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/StepFunctionsActivity.hs b/library-gen/Stratosphere/Resources/StepFunctionsActivity.hs
--- a/library-gen/Stratosphere/Resources/StepFunctionsActivity.hs
+++ b/library-gen/Stratosphere/Resources/StepFunctionsActivity.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-activity.html
@@ -16,12 +17,15 @@
   { _stepFunctionsActivityName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON StepFunctionsActivity where
-  toJSON StepFunctionsActivity{..} =
-    object $
-    catMaybes
-    [ (Just . ("Name",) . toJSON) _stepFunctionsActivityName
-    ]
+instance ToResourceProperties StepFunctionsActivity where
+  toResourceProperties StepFunctionsActivity{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::StepFunctions::Activity"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Name",) . toJSON) _stepFunctionsActivityName
+        ]
+    }
 
 -- | Constructor for 'StepFunctionsActivity' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/StepFunctionsStateMachine.hs b/library-gen/Stratosphere/Resources/StepFunctionsStateMachine.hs
--- a/library-gen/Stratosphere/Resources/StepFunctionsStateMachine.hs
+++ b/library-gen/Stratosphere/Resources/StepFunctionsStateMachine.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html
@@ -18,14 +19,17 @@
   , _stepFunctionsStateMachineStateMachineName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
-instance ToJSON StepFunctionsStateMachine where
-  toJSON StepFunctionsStateMachine{..} =
-    object $
-    catMaybes
-    [ (Just . ("DefinitionString",) . toJSON) _stepFunctionsStateMachineDefinitionString
-    , (Just . ("RoleArn",) . toJSON) _stepFunctionsStateMachineRoleArn
-    , fmap (("StateMachineName",) . toJSON) _stepFunctionsStateMachineStateMachineName
-    ]
+instance ToResourceProperties StepFunctionsStateMachine where
+  toResourceProperties StepFunctionsStateMachine{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::StepFunctions::StateMachine"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DefinitionString",) . toJSON) _stepFunctionsStateMachineDefinitionString
+        , (Just . ("RoleArn",) . toJSON) _stepFunctionsStateMachineRoleArn
+        , fmap (("StateMachineName",) . toJSON) _stepFunctionsStateMachineStateMachineName
+        ]
+    }
 
 -- | Constructor for 'StepFunctionsStateMachine' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFByteMatchSet.hs b/library-gen/Stratosphere/Resources/WAFByteMatchSet.hs
--- a/library-gen/Stratosphere/Resources/WAFByteMatchSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFByteMatchSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-bytematchset.html
@@ -17,13 +18,16 @@
   , _wAFByteMatchSetName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON WAFByteMatchSet where
-  toJSON WAFByteMatchSet{..} =
-    object $
-    catMaybes
-    [ fmap (("ByteMatchTuples",) . toJSON) _wAFByteMatchSetByteMatchTuples
-    , (Just . ("Name",) . toJSON) _wAFByteMatchSetName
-    ]
+instance ToResourceProperties WAFByteMatchSet where
+  toResourceProperties WAFByteMatchSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAF::ByteMatchSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ByteMatchTuples",) . toJSON) _wAFByteMatchSetByteMatchTuples
+        , (Just . ("Name",) . toJSON) _wAFByteMatchSetName
+        ]
+    }
 
 -- | Constructor for 'WAFByteMatchSet' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFIPSet.hs b/library-gen/Stratosphere/Resources/WAFIPSet.hs
--- a/library-gen/Stratosphere/Resources/WAFIPSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFIPSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-ipset.html
@@ -17,13 +18,16 @@
   , _wAFIPSetName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON WAFIPSet where
-  toJSON WAFIPSet{..} =
-    object $
-    catMaybes
-    [ fmap (("IPSetDescriptors",) . toJSON) _wAFIPSetIPSetDescriptors
-    , (Just . ("Name",) . toJSON) _wAFIPSetName
-    ]
+instance ToResourceProperties WAFIPSet where
+  toResourceProperties WAFIPSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAF::IPSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("IPSetDescriptors",) . toJSON) _wAFIPSetIPSetDescriptors
+        , (Just . ("Name",) . toJSON) _wAFIPSetName
+        ]
+    }
 
 -- | Constructor for 'WAFIPSet' containing required fields as arguments.
 wafipSet
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalByteMatchSet.hs b/library-gen/Stratosphere/Resources/WAFRegionalByteMatchSet.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalByteMatchSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalByteMatchSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-bytematchset.html
@@ -17,13 +18,16 @@
   , _wAFRegionalByteMatchSetName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON WAFRegionalByteMatchSet where
-  toJSON WAFRegionalByteMatchSet{..} =
-    object $
-    catMaybes
-    [ fmap (("ByteMatchTuples",) . toJSON) _wAFRegionalByteMatchSetByteMatchTuples
-    , (Just . ("Name",) . toJSON) _wAFRegionalByteMatchSetName
-    ]
+instance ToResourceProperties WAFRegionalByteMatchSet where
+  toResourceProperties WAFRegionalByteMatchSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAFRegional::ByteMatchSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ByteMatchTuples",) . toJSON) _wAFRegionalByteMatchSetByteMatchTuples
+        , (Just . ("Name",) . toJSON) _wAFRegionalByteMatchSetName
+        ]
+    }
 
 -- | Constructor for 'WAFRegionalByteMatchSet' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalIPSet.hs b/library-gen/Stratosphere/Resources/WAFRegionalIPSet.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalIPSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalIPSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-ipset.html
@@ -17,13 +18,16 @@
   , _wAFRegionalIPSetName :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON WAFRegionalIPSet where
-  toJSON WAFRegionalIPSet{..} =
-    object $
-    catMaybes
-    [ fmap (("IPSetDescriptors",) . toJSON) _wAFRegionalIPSetIPSetDescriptors
-    , (Just . ("Name",) . toJSON) _wAFRegionalIPSetName
-    ]
+instance ToResourceProperties WAFRegionalIPSet where
+  toResourceProperties WAFRegionalIPSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAFRegional::IPSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("IPSetDescriptors",) . toJSON) _wAFRegionalIPSetIPSetDescriptors
+        , (Just . ("Name",) . toJSON) _wAFRegionalIPSetName
+        ]
+    }
 
 -- | Constructor for 'WAFRegionalIPSet' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalRule.hs b/library-gen/Stratosphere/Resources/WAFRegionalRule.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalRule.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-rule.html
@@ -18,14 +19,17 @@
   , _wAFRegionalRulePredicates :: Maybe [WAFRegionalRulePredicate]
   } deriving (Show, Eq)
 
-instance ToJSON WAFRegionalRule where
-  toJSON WAFRegionalRule{..} =
-    object $
-    catMaybes
-    [ (Just . ("MetricName",) . toJSON) _wAFRegionalRuleMetricName
-    , (Just . ("Name",) . toJSON) _wAFRegionalRuleName
-    , fmap (("Predicates",) . toJSON) _wAFRegionalRulePredicates
-    ]
+instance ToResourceProperties WAFRegionalRule where
+  toResourceProperties WAFRegionalRule{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAFRegional::Rule"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("MetricName",) . toJSON) _wAFRegionalRuleMetricName
+        , (Just . ("Name",) . toJSON) _wAFRegionalRuleName
+        , fmap (("Predicates",) . toJSON) _wAFRegionalRulePredicates
+        ]
+    }
 
 -- | Constructor for 'WAFRegionalRule' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalSizeConstraintSet.hs b/library-gen/Stratosphere/Resources/WAFRegionalSizeConstraintSet.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalSizeConstraintSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalSizeConstraintSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-sizeconstraintset.html
@@ -17,13 +18,16 @@
   , _wAFRegionalSizeConstraintSetSizeConstraints :: Maybe [WAFRegionalSizeConstraintSetSizeConstraint]
   } deriving (Show, Eq)
 
-instance ToJSON WAFRegionalSizeConstraintSet where
-  toJSON WAFRegionalSizeConstraintSet{..} =
-    object $
-    catMaybes
-    [ (Just . ("Name",) . toJSON) _wAFRegionalSizeConstraintSetName
-    , fmap (("SizeConstraints",) . toJSON) _wAFRegionalSizeConstraintSetSizeConstraints
-    ]
+instance ToResourceProperties WAFRegionalSizeConstraintSet where
+  toResourceProperties WAFRegionalSizeConstraintSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAFRegional::SizeConstraintSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Name",) . toJSON) _wAFRegionalSizeConstraintSetName
+        , fmap (("SizeConstraints",) . toJSON) _wAFRegionalSizeConstraintSetSizeConstraints
+        ]
+    }
 
 -- | Constructor for 'WAFRegionalSizeConstraintSet' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalSqlInjectionMatchSet.hs b/library-gen/Stratosphere/Resources/WAFRegionalSqlInjectionMatchSet.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalSqlInjectionMatchSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalSqlInjectionMatchSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-sqlinjectionmatchset.html
@@ -17,13 +18,16 @@
   , _wAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuples :: Maybe [WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple]
   } deriving (Show, Eq)
 
-instance ToJSON WAFRegionalSqlInjectionMatchSet where
-  toJSON WAFRegionalSqlInjectionMatchSet{..} =
-    object $
-    catMaybes
-    [ (Just . ("Name",) . toJSON) _wAFRegionalSqlInjectionMatchSetName
-    , fmap (("SqlInjectionMatchTuples",) . toJSON) _wAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuples
-    ]
+instance ToResourceProperties WAFRegionalSqlInjectionMatchSet where
+  toResourceProperties WAFRegionalSqlInjectionMatchSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAFRegional::SqlInjectionMatchSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Name",) . toJSON) _wAFRegionalSqlInjectionMatchSetName
+        , fmap (("SqlInjectionMatchTuples",) . toJSON) _wAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuples
+        ]
+    }
 
 -- | Constructor for 'WAFRegionalSqlInjectionMatchSet' containing required
 -- fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalWebACL.hs b/library-gen/Stratosphere/Resources/WAFRegionalWebACL.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalWebACL.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalWebACL.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-webacl.html
@@ -20,15 +21,18 @@
   , _wAFRegionalWebACLRules :: Maybe [WAFRegionalWebACLRule]
   } deriving (Show, Eq)
 
-instance ToJSON WAFRegionalWebACL where
-  toJSON WAFRegionalWebACL{..} =
-    object $
-    catMaybes
-    [ (Just . ("DefaultAction",) . toJSON) _wAFRegionalWebACLDefaultAction
-    , (Just . ("MetricName",) . toJSON) _wAFRegionalWebACLMetricName
-    , (Just . ("Name",) . toJSON) _wAFRegionalWebACLName
-    , fmap (("Rules",) . toJSON) _wAFRegionalWebACLRules
-    ]
+instance ToResourceProperties WAFRegionalWebACL where
+  toResourceProperties WAFRegionalWebACL{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAFRegional::WebACL"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DefaultAction",) . toJSON) _wAFRegionalWebACLDefaultAction
+        , (Just . ("MetricName",) . toJSON) _wAFRegionalWebACLMetricName
+        , (Just . ("Name",) . toJSON) _wAFRegionalWebACLName
+        , fmap (("Rules",) . toJSON) _wAFRegionalWebACLRules
+        ]
+    }
 
 -- | Constructor for 'WAFRegionalWebACL' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalWebACLAssociation.hs b/library-gen/Stratosphere/Resources/WAFRegionalWebACLAssociation.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalWebACLAssociation.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalWebACLAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-webaclassociation.html
@@ -17,13 +18,16 @@
   , _wAFRegionalWebACLAssociationWebACLId :: Val Text
   } deriving (Show, Eq)
 
-instance ToJSON WAFRegionalWebACLAssociation where
-  toJSON WAFRegionalWebACLAssociation{..} =
-    object $
-    catMaybes
-    [ (Just . ("ResourceArn",) . toJSON) _wAFRegionalWebACLAssociationResourceArn
-    , (Just . ("WebACLId",) . toJSON) _wAFRegionalWebACLAssociationWebACLId
-    ]
+instance ToResourceProperties WAFRegionalWebACLAssociation where
+  toResourceProperties WAFRegionalWebACLAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAFRegional::WebACLAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ResourceArn",) . toJSON) _wAFRegionalWebACLAssociationResourceArn
+        , (Just . ("WebACLId",) . toJSON) _wAFRegionalWebACLAssociationWebACLId
+        ]
+    }
 
 -- | Constructor for 'WAFRegionalWebACLAssociation' containing required fields
 -- as arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalXssMatchSet.hs b/library-gen/Stratosphere/Resources/WAFRegionalXssMatchSet.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalXssMatchSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalXssMatchSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-xssmatchset.html
@@ -17,13 +18,16 @@
   , _wAFRegionalXssMatchSetXssMatchTuples :: Maybe [WAFRegionalXssMatchSetXssMatchTuple]
   } deriving (Show, Eq)
 
-instance ToJSON WAFRegionalXssMatchSet where
-  toJSON WAFRegionalXssMatchSet{..} =
-    object $
-    catMaybes
-    [ (Just . ("Name",) . toJSON) _wAFRegionalXssMatchSetName
-    , fmap (("XssMatchTuples",) . toJSON) _wAFRegionalXssMatchSetXssMatchTuples
-    ]
+instance ToResourceProperties WAFRegionalXssMatchSet where
+  toResourceProperties WAFRegionalXssMatchSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAFRegional::XssMatchSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Name",) . toJSON) _wAFRegionalXssMatchSetName
+        , fmap (("XssMatchTuples",) . toJSON) _wAFRegionalXssMatchSetXssMatchTuples
+        ]
+    }
 
 -- | Constructor for 'WAFRegionalXssMatchSet' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFRule.hs b/library-gen/Stratosphere/Resources/WAFRule.hs
--- a/library-gen/Stratosphere/Resources/WAFRule.hs
+++ b/library-gen/Stratosphere/Resources/WAFRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-rule.html
@@ -18,14 +19,17 @@
   , _wAFRulePredicates :: Maybe [WAFRulePredicate]
   } deriving (Show, Eq)
 
-instance ToJSON WAFRule where
-  toJSON WAFRule{..} =
-    object $
-    catMaybes
-    [ (Just . ("MetricName",) . toJSON) _wAFRuleMetricName
-    , (Just . ("Name",) . toJSON) _wAFRuleName
-    , fmap (("Predicates",) . toJSON) _wAFRulePredicates
-    ]
+instance ToResourceProperties WAFRule where
+  toResourceProperties WAFRule{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAF::Rule"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("MetricName",) . toJSON) _wAFRuleMetricName
+        , (Just . ("Name",) . toJSON) _wAFRuleName
+        , fmap (("Predicates",) . toJSON) _wAFRulePredicates
+        ]
+    }
 
 -- | Constructor for 'WAFRule' containing required fields as arguments.
 wafRule
diff --git a/library-gen/Stratosphere/Resources/WAFSizeConstraintSet.hs b/library-gen/Stratosphere/Resources/WAFSizeConstraintSet.hs
--- a/library-gen/Stratosphere/Resources/WAFSizeConstraintSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFSizeConstraintSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-sizeconstraintset.html
@@ -17,13 +18,16 @@
   , _wAFSizeConstraintSetSizeConstraints :: [WAFSizeConstraintSetSizeConstraint]
   } deriving (Show, Eq)
 
-instance ToJSON WAFSizeConstraintSet where
-  toJSON WAFSizeConstraintSet{..} =
-    object $
-    catMaybes
-    [ (Just . ("Name",) . toJSON) _wAFSizeConstraintSetName
-    , (Just . ("SizeConstraints",) . toJSON) _wAFSizeConstraintSetSizeConstraints
-    ]
+instance ToResourceProperties WAFSizeConstraintSet where
+  toResourceProperties WAFSizeConstraintSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAF::SizeConstraintSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Name",) . toJSON) _wAFSizeConstraintSetName
+        , (Just . ("SizeConstraints",) . toJSON) _wAFSizeConstraintSetSizeConstraints
+        ]
+    }
 
 -- | Constructor for 'WAFSizeConstraintSet' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFSqlInjectionMatchSet.hs b/library-gen/Stratosphere/Resources/WAFSqlInjectionMatchSet.hs
--- a/library-gen/Stratosphere/Resources/WAFSqlInjectionMatchSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFSqlInjectionMatchSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-sqlinjectionmatchset.html
@@ -17,13 +18,16 @@
   , _wAFSqlInjectionMatchSetSqlInjectionMatchTuples :: Maybe [WAFSqlInjectionMatchSetSqlInjectionMatchTuple]
   } deriving (Show, Eq)
 
-instance ToJSON WAFSqlInjectionMatchSet where
-  toJSON WAFSqlInjectionMatchSet{..} =
-    object $
-    catMaybes
-    [ (Just . ("Name",) . toJSON) _wAFSqlInjectionMatchSetName
-    , fmap (("SqlInjectionMatchTuples",) . toJSON) _wAFSqlInjectionMatchSetSqlInjectionMatchTuples
-    ]
+instance ToResourceProperties WAFSqlInjectionMatchSet where
+  toResourceProperties WAFSqlInjectionMatchSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAF::SqlInjectionMatchSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Name",) . toJSON) _wAFSqlInjectionMatchSetName
+        , fmap (("SqlInjectionMatchTuples",) . toJSON) _wAFSqlInjectionMatchSetSqlInjectionMatchTuples
+        ]
+    }
 
 -- | Constructor for 'WAFSqlInjectionMatchSet' containing required fields as
 -- arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFWebACL.hs b/library-gen/Stratosphere/Resources/WAFWebACL.hs
--- a/library-gen/Stratosphere/Resources/WAFWebACL.hs
+++ b/library-gen/Stratosphere/Resources/WAFWebACL.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-webacl.html
@@ -20,15 +21,18 @@
   , _wAFWebACLRules :: Maybe [WAFWebACLActivatedRule]
   } deriving (Show, Eq)
 
-instance ToJSON WAFWebACL where
-  toJSON WAFWebACL{..} =
-    object $
-    catMaybes
-    [ (Just . ("DefaultAction",) . toJSON) _wAFWebACLDefaultAction
-    , (Just . ("MetricName",) . toJSON) _wAFWebACLMetricName
-    , (Just . ("Name",) . toJSON) _wAFWebACLName
-    , fmap (("Rules",) . toJSON) _wAFWebACLRules
-    ]
+instance ToResourceProperties WAFWebACL where
+  toResourceProperties WAFWebACL{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAF::WebACL"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DefaultAction",) . toJSON) _wAFWebACLDefaultAction
+        , (Just . ("MetricName",) . toJSON) _wAFWebACLMetricName
+        , (Just . ("Name",) . toJSON) _wAFWebACLName
+        , fmap (("Rules",) . toJSON) _wAFWebACLRules
+        ]
+    }
 
 -- | Constructor for 'WAFWebACL' containing required fields as arguments.
 wafWebACL
diff --git a/library-gen/Stratosphere/Resources/WAFXssMatchSet.hs b/library-gen/Stratosphere/Resources/WAFXssMatchSet.hs
--- a/library-gen/Stratosphere/Resources/WAFXssMatchSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFXssMatchSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-xssmatchset.html
@@ -17,13 +18,16 @@
   , _wAFXssMatchSetXssMatchTuples :: [WAFXssMatchSetXssMatchTuple]
   } deriving (Show, Eq)
 
-instance ToJSON WAFXssMatchSet where
-  toJSON WAFXssMatchSet{..} =
-    object $
-    catMaybes
-    [ (Just . ("Name",) . toJSON) _wAFXssMatchSetName
-    , (Just . ("XssMatchTuples",) . toJSON) _wAFXssMatchSetXssMatchTuples
-    ]
+instance ToResourceProperties WAFXssMatchSet where
+  toResourceProperties WAFXssMatchSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAF::XssMatchSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Name",) . toJSON) _wAFXssMatchSetName
+        , (Just . ("XssMatchTuples",) . toJSON) _wAFXssMatchSetXssMatchTuples
+        ]
+    }
 
 -- | Constructor for 'WAFXssMatchSet' containing required fields as arguments.
 wafXssMatchSet
diff --git a/library-gen/Stratosphere/Resources/WorkSpacesWorkspace.hs b/library-gen/Stratosphere/Resources/WorkSpacesWorkspace.hs
--- a/library-gen/Stratosphere/Resources/WorkSpacesWorkspace.hs
+++ b/library-gen/Stratosphere/Resources/WorkSpacesWorkspace.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-workspaces-workspace.html
@@ -24,19 +25,22 @@
   , _workSpacesWorkspaceWorkspaceProperties :: Maybe WorkSpacesWorkspaceWorkspaceProperties
   } deriving (Show, Eq)
 
-instance ToJSON WorkSpacesWorkspace where
-  toJSON WorkSpacesWorkspace{..} =
-    object $
-    catMaybes
-    [ (Just . ("BundleId",) . toJSON) _workSpacesWorkspaceBundleId
-    , (Just . ("DirectoryId",) . toJSON) _workSpacesWorkspaceDirectoryId
-    , fmap (("RootVolumeEncryptionEnabled",) . toJSON . fmap Bool') _workSpacesWorkspaceRootVolumeEncryptionEnabled
-    , fmap (("Tags",) . toJSON) _workSpacesWorkspaceTags
-    , (Just . ("UserName",) . toJSON) _workSpacesWorkspaceUserName
-    , fmap (("UserVolumeEncryptionEnabled",) . toJSON . fmap Bool') _workSpacesWorkspaceUserVolumeEncryptionEnabled
-    , fmap (("VolumeEncryptionKey",) . toJSON) _workSpacesWorkspaceVolumeEncryptionKey
-    , fmap (("WorkspaceProperties",) . toJSON) _workSpacesWorkspaceWorkspaceProperties
-    ]
+instance ToResourceProperties WorkSpacesWorkspace where
+  toResourceProperties WorkSpacesWorkspace{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WorkSpaces::Workspace"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("BundleId",) . toJSON) _workSpacesWorkspaceBundleId
+        , (Just . ("DirectoryId",) . toJSON) _workSpacesWorkspaceDirectoryId
+        , fmap (("RootVolumeEncryptionEnabled",) . toJSON . fmap Bool') _workSpacesWorkspaceRootVolumeEncryptionEnabled
+        , fmap (("Tags",) . toJSON) _workSpacesWorkspaceTags
+        , (Just . ("UserName",) . toJSON) _workSpacesWorkspaceUserName
+        , fmap (("UserVolumeEncryptionEnabled",) . toJSON . fmap Bool') _workSpacesWorkspaceUserVolumeEncryptionEnabled
+        , fmap (("VolumeEncryptionKey",) . toJSON) _workSpacesWorkspaceVolumeEncryptionKey
+        , fmap (("WorkspaceProperties",) . toJSON) _workSpacesWorkspaceWorkspaceProperties
+        ]
+    }
 
 -- | Constructor for 'WorkSpacesWorkspace' containing required fields as
 -- arguments.
diff --git a/library/Stratosphere/ResourceImports.hs b/library/Stratosphere/ResourceImports.hs
--- a/library/Stratosphere/ResourceImports.hs
+++ b/library/Stratosphere/ResourceImports.hs
@@ -1,5 +1,7 @@
 module Stratosphere.ResourceImports
   ( module X
+  , hashMapFromList
+  , hashMapEmpty
   ) where
 
 import Control.Lens as X (Lens', lens)
@@ -9,4 +11,17 @@
 import Data.Map.Strict as X
 import Data.Monoid as X (mempty)
 import Data.Text as X (Text)
+import Stratosphere.ResourceProperties as X
 import Stratosphere.Values as X
+
+import Data.Hashable (Hashable)
+import Data.HashMap.Strict (HashMap)
+import qualified Data.HashMap.Strict as HM
+
+-- Re-export hashmap functions so we don't need a qualified import
+
+hashMapFromList :: (Eq k, Hashable k) => [(k, v)] -> HashMap k v
+hashMapFromList = HM.fromList
+
+hashMapEmpty :: HashMap k v
+hashMapEmpty = HM.empty
diff --git a/library/Stratosphere/ResourceProperties.hs b/library/Stratosphere/ResourceProperties.hs
new file mode 100644
--- /dev/null
+++ b/library/Stratosphere/ResourceProperties.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+
+module Stratosphere.ResourceProperties
+  ( ResourceProperties(..)
+  , ToResourceProperties(..)
+  , resourcePropertiesJSON
+  ) where
+
+import Data.Aeson
+import Data.Aeson.Types (Pair)
+import Data.Text (Text)
+
+data ResourceProperties
+  = ResourceProperties
+  { resourcePropertiesType :: Text
+  , resourcePropertiesProperties :: Object
+  } deriving (Show, Eq)
+
+class ToResourceProperties a where
+  toResourceProperties :: a -> ResourceProperties
+
+resourcePropertiesJSON :: ResourceProperties -> [Pair]
+resourcePropertiesJSON (ResourceProperties ty props) =
+  [ "Type" .= ty
+  , "Properties" .= props
+  ]
diff --git a/stratosphere.cabal b/stratosphere.cabal
--- a/stratosphere.cabal
+++ b/stratosphere.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: e12fa823bbfa5eea3d5d782df67bf0c2196b69e40d7b58f656b038b178d6fee8
+-- hash: 6ff77e8e3bd40e985dc748a7c22623e7996ea7e968eee12559ca1900207a0e68
 
 name:           stratosphere
-version:        0.32.0
+version:        0.33.0
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
@@ -45,6 +45,7 @@
       Stratosphere.ResourceAttributes.ResourceSignal
       Stratosphere.ResourceAttributes.UpdatePolicy
       Stratosphere.ResourceImports
+      Stratosphere.ResourceProperties
       Stratosphere.Template
       Stratosphere.Types
       Stratosphere.Values
