diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,20 @@
+Copyright (c) 2016 David Reaver
+Copyright (c) 2022 Markus Schirp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/gen/Stratosphere/Config/AggregationAuthorization.hs b/gen/Stratosphere/Config/AggregationAuthorization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/AggregationAuthorization.hs
@@ -0,0 +1,57 @@
+module Stratosphere.Config.AggregationAuthorization (
+        AggregationAuthorization(..), mkAggregationAuthorization
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data AggregationAuthorization
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-aggregationauthorization.html>
+    AggregationAuthorization {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-aggregationauthorization.html#cfn-config-aggregationauthorization-authorizedaccountid>
+                              authorizedAccountId :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-aggregationauthorization.html#cfn-config-aggregationauthorization-authorizedawsregion>
+                              authorizedAwsRegion :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-aggregationauthorization.html#cfn-config-aggregationauthorization-tags>
+                              tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAggregationAuthorization ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> AggregationAuthorization
+mkAggregationAuthorization authorizedAccountId authorizedAwsRegion
+  = AggregationAuthorization
+      {haddock_workaround_ = (),
+       authorizedAccountId = authorizedAccountId,
+       authorizedAwsRegion = authorizedAwsRegion, tags = Prelude.Nothing}
+instance ToResourceProperties AggregationAuthorization where
+  toResourceProperties AggregationAuthorization {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::AggregationAuthorization",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AuthorizedAccountId" JSON..= authorizedAccountId,
+                            "AuthorizedAwsRegion" JSON..= authorizedAwsRegion]
+                           (Prelude.catMaybes [(JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON AggregationAuthorization where
+  toJSON AggregationAuthorization {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AuthorizedAccountId" JSON..= authorizedAccountId,
+               "AuthorizedAwsRegion" JSON..= authorizedAwsRegion]
+              (Prelude.catMaybes [(JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "AuthorizedAccountId" AggregationAuthorization where
+  type PropertyType "AuthorizedAccountId" AggregationAuthorization = Value Prelude.Text
+  set newValue AggregationAuthorization {..}
+    = AggregationAuthorization {authorizedAccountId = newValue, ..}
+instance Property "AuthorizedAwsRegion" AggregationAuthorization where
+  type PropertyType "AuthorizedAwsRegion" AggregationAuthorization = Value Prelude.Text
+  set newValue AggregationAuthorization {..}
+    = AggregationAuthorization {authorizedAwsRegion = newValue, ..}
+instance Property "Tags" AggregationAuthorization where
+  type PropertyType "Tags" AggregationAuthorization = [Tag]
+  set newValue AggregationAuthorization {..}
+    = AggregationAuthorization {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigRule.hs b/gen/Stratosphere/Config/ConfigRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigRule.hs
@@ -0,0 +1,104 @@
+module Stratosphere.Config.ConfigRule (
+        module Exports, ConfigRule(..), mkConfigRule
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Config.ConfigRule.ComplianceProperty as Exports
+import {-# SOURCE #-} Stratosphere.Config.ConfigRule.EvaluationModeConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.Config.ConfigRule.ScopeProperty as Exports
+import {-# SOURCE #-} Stratosphere.Config.ConfigRule.SourceProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ConfigRule
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html>
+    ConfigRule {haddock_workaround_ :: (),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-compliance>
+                compliance :: (Prelude.Maybe ComplianceProperty),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-configrulename>
+                configRuleName :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-description>
+                description :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-evaluationmodes>
+                evaluationModes :: (Prelude.Maybe [EvaluationModeConfigurationProperty]),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-inputparameters>
+                inputParameters :: (Prelude.Maybe JSON.Object),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-maximumexecutionfrequency>
+                maximumExecutionFrequency :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-scope>
+                scope :: (Prelude.Maybe ScopeProperty),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-source>
+                source :: SourceProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConfigRule :: SourceProperty -> ConfigRule
+mkConfigRule source
+  = ConfigRule
+      {haddock_workaround_ = (), source = source,
+       compliance = Prelude.Nothing, configRuleName = Prelude.Nothing,
+       description = Prelude.Nothing, evaluationModes = Prelude.Nothing,
+       inputParameters = Prelude.Nothing,
+       maximumExecutionFrequency = Prelude.Nothing,
+       scope = Prelude.Nothing}
+instance ToResourceProperties ConfigRule where
+  toResourceProperties ConfigRule {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigRule", supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Source" JSON..= source]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Compliance" Prelude.<$> compliance,
+                               (JSON..=) "ConfigRuleName" Prelude.<$> configRuleName,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "EvaluationModes" Prelude.<$> evaluationModes,
+                               (JSON..=) "InputParameters" Prelude.<$> inputParameters,
+                               (JSON..=) "MaximumExecutionFrequency"
+                                 Prelude.<$> maximumExecutionFrequency,
+                               (JSON..=) "Scope" Prelude.<$> scope]))}
+instance JSON.ToJSON ConfigRule where
+  toJSON ConfigRule {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Source" JSON..= source]
+              (Prelude.catMaybes
+                 [(JSON..=) "Compliance" Prelude.<$> compliance,
+                  (JSON..=) "ConfigRuleName" Prelude.<$> configRuleName,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "EvaluationModes" Prelude.<$> evaluationModes,
+                  (JSON..=) "InputParameters" Prelude.<$> inputParameters,
+                  (JSON..=) "MaximumExecutionFrequency"
+                    Prelude.<$> maximumExecutionFrequency,
+                  (JSON..=) "Scope" Prelude.<$> scope])))
+instance Property "Compliance" ConfigRule where
+  type PropertyType "Compliance" ConfigRule = ComplianceProperty
+  set newValue ConfigRule {..}
+    = ConfigRule {compliance = Prelude.pure newValue, ..}
+instance Property "ConfigRuleName" ConfigRule where
+  type PropertyType "ConfigRuleName" ConfigRule = Value Prelude.Text
+  set newValue ConfigRule {..}
+    = ConfigRule {configRuleName = Prelude.pure newValue, ..}
+instance Property "Description" ConfigRule where
+  type PropertyType "Description" ConfigRule = Value Prelude.Text
+  set newValue ConfigRule {..}
+    = ConfigRule {description = Prelude.pure newValue, ..}
+instance Property "EvaluationModes" ConfigRule where
+  type PropertyType "EvaluationModes" ConfigRule = [EvaluationModeConfigurationProperty]
+  set newValue ConfigRule {..}
+    = ConfigRule {evaluationModes = Prelude.pure newValue, ..}
+instance Property "InputParameters" ConfigRule where
+  type PropertyType "InputParameters" ConfigRule = JSON.Object
+  set newValue ConfigRule {..}
+    = ConfigRule {inputParameters = Prelude.pure newValue, ..}
+instance Property "MaximumExecutionFrequency" ConfigRule where
+  type PropertyType "MaximumExecutionFrequency" ConfigRule = Value Prelude.Text
+  set newValue ConfigRule {..}
+    = ConfigRule
+        {maximumExecutionFrequency = Prelude.pure newValue, ..}
+instance Property "Scope" ConfigRule where
+  type PropertyType "Scope" ConfigRule = ScopeProperty
+  set newValue ConfigRule {..}
+    = ConfigRule {scope = Prelude.pure newValue, ..}
+instance Property "Source" ConfigRule where
+  type PropertyType "Source" ConfigRule = SourceProperty
+  set newValue ConfigRule {..} = ConfigRule {source = newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigRule/ComplianceProperty.hs b/gen/Stratosphere/Config/ConfigRule/ComplianceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigRule/ComplianceProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.Config.ConfigRule.ComplianceProperty (
+        ComplianceProperty(..), mkComplianceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ComplianceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-compliance.html>
+    ComplianceProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-compliance.html#cfn-config-configrule-compliance-type>
+                        type' :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkComplianceProperty :: ComplianceProperty
+mkComplianceProperty
+  = ComplianceProperty
+      {haddock_workaround_ = (), type' = Prelude.Nothing}
+instance ToResourceProperties ComplianceProperty where
+  toResourceProperties ComplianceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigRule.Compliance",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Type" Prelude.<$> type'])}
+instance JSON.ToJSON ComplianceProperty where
+  toJSON ComplianceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Type" Prelude.<$> type']))
+instance Property "Type" ComplianceProperty where
+  type PropertyType "Type" ComplianceProperty = Value Prelude.Text
+  set newValue ComplianceProperty {..}
+    = ComplianceProperty {type' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigRule/ComplianceProperty.hs-boot b/gen/Stratosphere/Config/ConfigRule/ComplianceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigRule/ComplianceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConfigRule.ComplianceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ComplianceProperty :: Prelude.Type
+instance ToResourceProperties ComplianceProperty
+instance Prelude.Eq ComplianceProperty
+instance Prelude.Show ComplianceProperty
+instance JSON.ToJSON ComplianceProperty
diff --git a/gen/Stratosphere/Config/ConfigRule/CustomPolicyDetailsProperty.hs b/gen/Stratosphere/Config/ConfigRule/CustomPolicyDetailsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigRule/CustomPolicyDetailsProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.Config.ConfigRule.CustomPolicyDetailsProperty (
+        CustomPolicyDetailsProperty(..), mkCustomPolicyDetailsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CustomPolicyDetailsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-custompolicydetails.html>
+    CustomPolicyDetailsProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-custompolicydetails.html#cfn-config-configrule-custompolicydetails-enabledebuglogdelivery>
+                                 enableDebugLogDelivery :: (Prelude.Maybe (Value Prelude.Bool)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-custompolicydetails.html#cfn-config-configrule-custompolicydetails-policyruntime>
+                                 policyRuntime :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-custompolicydetails.html#cfn-config-configrule-custompolicydetails-policytext>
+                                 policyText :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCustomPolicyDetailsProperty :: CustomPolicyDetailsProperty
+mkCustomPolicyDetailsProperty
+  = CustomPolicyDetailsProperty
+      {haddock_workaround_ = (),
+       enableDebugLogDelivery = Prelude.Nothing,
+       policyRuntime = Prelude.Nothing, policyText = Prelude.Nothing}
+instance ToResourceProperties CustomPolicyDetailsProperty where
+  toResourceProperties CustomPolicyDetailsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigRule.CustomPolicyDetails",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "EnableDebugLogDelivery"
+                              Prelude.<$> enableDebugLogDelivery,
+                            (JSON..=) "PolicyRuntime" Prelude.<$> policyRuntime,
+                            (JSON..=) "PolicyText" Prelude.<$> policyText])}
+instance JSON.ToJSON CustomPolicyDetailsProperty where
+  toJSON CustomPolicyDetailsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "EnableDebugLogDelivery"
+                 Prelude.<$> enableDebugLogDelivery,
+               (JSON..=) "PolicyRuntime" Prelude.<$> policyRuntime,
+               (JSON..=) "PolicyText" Prelude.<$> policyText]))
+instance Property "EnableDebugLogDelivery" CustomPolicyDetailsProperty where
+  type PropertyType "EnableDebugLogDelivery" CustomPolicyDetailsProperty = Value Prelude.Bool
+  set newValue CustomPolicyDetailsProperty {..}
+    = CustomPolicyDetailsProperty
+        {enableDebugLogDelivery = Prelude.pure newValue, ..}
+instance Property "PolicyRuntime" CustomPolicyDetailsProperty where
+  type PropertyType "PolicyRuntime" CustomPolicyDetailsProperty = Value Prelude.Text
+  set newValue CustomPolicyDetailsProperty {..}
+    = CustomPolicyDetailsProperty
+        {policyRuntime = Prelude.pure newValue, ..}
+instance Property "PolicyText" CustomPolicyDetailsProperty where
+  type PropertyType "PolicyText" CustomPolicyDetailsProperty = Value Prelude.Text
+  set newValue CustomPolicyDetailsProperty {..}
+    = CustomPolicyDetailsProperty
+        {policyText = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigRule/CustomPolicyDetailsProperty.hs-boot b/gen/Stratosphere/Config/ConfigRule/CustomPolicyDetailsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigRule/CustomPolicyDetailsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConfigRule.CustomPolicyDetailsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CustomPolicyDetailsProperty :: Prelude.Type
+instance ToResourceProperties CustomPolicyDetailsProperty
+instance Prelude.Eq CustomPolicyDetailsProperty
+instance Prelude.Show CustomPolicyDetailsProperty
+instance JSON.ToJSON CustomPolicyDetailsProperty
diff --git a/gen/Stratosphere/Config/ConfigRule/EvaluationModeConfigurationProperty.hs b/gen/Stratosphere/Config/ConfigRule/EvaluationModeConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigRule/EvaluationModeConfigurationProperty.hs
@@ -0,0 +1,37 @@
+module Stratosphere.Config.ConfigRule.EvaluationModeConfigurationProperty (
+        EvaluationModeConfigurationProperty(..),
+        mkEvaluationModeConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EvaluationModeConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-evaluationmodeconfiguration.html>
+    EvaluationModeConfigurationProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-evaluationmodeconfiguration.html#cfn-config-configrule-evaluationmodeconfiguration-mode>
+                                         mode :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationModeConfigurationProperty ::
+  EvaluationModeConfigurationProperty
+mkEvaluationModeConfigurationProperty
+  = EvaluationModeConfigurationProperty
+      {haddock_workaround_ = (), mode = Prelude.Nothing}
+instance ToResourceProperties EvaluationModeConfigurationProperty where
+  toResourceProperties EvaluationModeConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigRule.EvaluationModeConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Mode" Prelude.<$> mode])}
+instance JSON.ToJSON EvaluationModeConfigurationProperty where
+  toJSON EvaluationModeConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Mode" Prelude.<$> mode]))
+instance Property "Mode" EvaluationModeConfigurationProperty where
+  type PropertyType "Mode" EvaluationModeConfigurationProperty = Value Prelude.Text
+  set newValue EvaluationModeConfigurationProperty {..}
+    = EvaluationModeConfigurationProperty
+        {mode = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigRule/EvaluationModeConfigurationProperty.hs-boot b/gen/Stratosphere/Config/ConfigRule/EvaluationModeConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigRule/EvaluationModeConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConfigRule.EvaluationModeConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationModeConfigurationProperty :: Prelude.Type
+instance ToResourceProperties EvaluationModeConfigurationProperty
+instance Prelude.Eq EvaluationModeConfigurationProperty
+instance Prelude.Show EvaluationModeConfigurationProperty
+instance JSON.ToJSON EvaluationModeConfigurationProperty
diff --git a/gen/Stratosphere/Config/ConfigRule/ScopeProperty.hs b/gen/Stratosphere/Config/ConfigRule/ScopeProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigRule/ScopeProperty.hs
@@ -0,0 +1,65 @@
+module Stratosphere.Config.ConfigRule.ScopeProperty (
+        ScopeProperty(..), mkScopeProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ScopeProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html>
+    ScopeProperty {haddock_workaround_ :: (),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html#cfn-config-configrule-scope-complianceresourceid>
+                   complianceResourceId :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html#cfn-config-configrule-scope-complianceresourcetypes>
+                   complianceResourceTypes :: (Prelude.Maybe (ValueList Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html#cfn-config-configrule-scope-tagkey>
+                   tagKey :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html#cfn-config-configrule-scope-tagvalue>
+                   tagValue :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScopeProperty :: ScopeProperty
+mkScopeProperty
+  = ScopeProperty
+      {haddock_workaround_ = (), complianceResourceId = Prelude.Nothing,
+       complianceResourceTypes = Prelude.Nothing,
+       tagKey = Prelude.Nothing, tagValue = Prelude.Nothing}
+instance ToResourceProperties ScopeProperty where
+  toResourceProperties ScopeProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigRule.Scope",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ComplianceResourceId" Prelude.<$> complianceResourceId,
+                            (JSON..=) "ComplianceResourceTypes"
+                              Prelude.<$> complianceResourceTypes,
+                            (JSON..=) "TagKey" Prelude.<$> tagKey,
+                            (JSON..=) "TagValue" Prelude.<$> tagValue])}
+instance JSON.ToJSON ScopeProperty where
+  toJSON ScopeProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ComplianceResourceId" Prelude.<$> complianceResourceId,
+               (JSON..=) "ComplianceResourceTypes"
+                 Prelude.<$> complianceResourceTypes,
+               (JSON..=) "TagKey" Prelude.<$> tagKey,
+               (JSON..=) "TagValue" Prelude.<$> tagValue]))
+instance Property "ComplianceResourceId" ScopeProperty where
+  type PropertyType "ComplianceResourceId" ScopeProperty = Value Prelude.Text
+  set newValue ScopeProperty {..}
+    = ScopeProperty {complianceResourceId = Prelude.pure newValue, ..}
+instance Property "ComplianceResourceTypes" ScopeProperty where
+  type PropertyType "ComplianceResourceTypes" ScopeProperty = ValueList Prelude.Text
+  set newValue ScopeProperty {..}
+    = ScopeProperty
+        {complianceResourceTypes = Prelude.pure newValue, ..}
+instance Property "TagKey" ScopeProperty where
+  type PropertyType "TagKey" ScopeProperty = Value Prelude.Text
+  set newValue ScopeProperty {..}
+    = ScopeProperty {tagKey = Prelude.pure newValue, ..}
+instance Property "TagValue" ScopeProperty where
+  type PropertyType "TagValue" ScopeProperty = Value Prelude.Text
+  set newValue ScopeProperty {..}
+    = ScopeProperty {tagValue = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigRule/ScopeProperty.hs-boot b/gen/Stratosphere/Config/ConfigRule/ScopeProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigRule/ScopeProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConfigRule.ScopeProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ScopeProperty :: Prelude.Type
+instance ToResourceProperties ScopeProperty
+instance Prelude.Eq ScopeProperty
+instance Prelude.Show ScopeProperty
+instance JSON.ToJSON ScopeProperty
diff --git a/gen/Stratosphere/Config/ConfigRule/SourceDetailProperty.hs b/gen/Stratosphere/Config/ConfigRule/SourceDetailProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigRule/SourceDetailProperty.hs
@@ -0,0 +1,60 @@
+module Stratosphere.Config.ConfigRule.SourceDetailProperty (
+        SourceDetailProperty(..), mkSourceDetailProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SourceDetailProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-sourcedetail.html>
+    SourceDetailProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-sourcedetail.html#cfn-config-configrule-sourcedetail-eventsource>
+                          eventSource :: (Value Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-sourcedetail.html#cfn-config-configrule-sourcedetail-maximumexecutionfrequency>
+                          maximumExecutionFrequency :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-sourcedetail.html#cfn-config-configrule-sourcedetail-messagetype>
+                          messageType :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSourceDetailProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> SourceDetailProperty
+mkSourceDetailProperty eventSource messageType
+  = SourceDetailProperty
+      {haddock_workaround_ = (), eventSource = eventSource,
+       messageType = messageType,
+       maximumExecutionFrequency = Prelude.Nothing}
+instance ToResourceProperties SourceDetailProperty where
+  toResourceProperties SourceDetailProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigRule.SourceDetail",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["EventSource" JSON..= eventSource,
+                            "MessageType" JSON..= messageType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "MaximumExecutionFrequency"
+                                 Prelude.<$> maximumExecutionFrequency]))}
+instance JSON.ToJSON SourceDetailProperty where
+  toJSON SourceDetailProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["EventSource" JSON..= eventSource,
+               "MessageType" JSON..= messageType]
+              (Prelude.catMaybes
+                 [(JSON..=) "MaximumExecutionFrequency"
+                    Prelude.<$> maximumExecutionFrequency])))
+instance Property "EventSource" SourceDetailProperty where
+  type PropertyType "EventSource" SourceDetailProperty = Value Prelude.Text
+  set newValue SourceDetailProperty {..}
+    = SourceDetailProperty {eventSource = newValue, ..}
+instance Property "MaximumExecutionFrequency" SourceDetailProperty where
+  type PropertyType "MaximumExecutionFrequency" SourceDetailProperty = Value Prelude.Text
+  set newValue SourceDetailProperty {..}
+    = SourceDetailProperty
+        {maximumExecutionFrequency = Prelude.pure newValue, ..}
+instance Property "MessageType" SourceDetailProperty where
+  type PropertyType "MessageType" SourceDetailProperty = Value Prelude.Text
+  set newValue SourceDetailProperty {..}
+    = SourceDetailProperty {messageType = newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigRule/SourceDetailProperty.hs-boot b/gen/Stratosphere/Config/ConfigRule/SourceDetailProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigRule/SourceDetailProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConfigRule.SourceDetailProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SourceDetailProperty :: Prelude.Type
+instance ToResourceProperties SourceDetailProperty
+instance Prelude.Eq SourceDetailProperty
+instance Prelude.Show SourceDetailProperty
+instance JSON.ToJSON SourceDetailProperty
diff --git a/gen/Stratosphere/Config/ConfigRule/SourceProperty.hs b/gen/Stratosphere/Config/ConfigRule/SourceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigRule/SourceProperty.hs
@@ -0,0 +1,67 @@
+module Stratosphere.Config.ConfigRule.SourceProperty (
+        module Exports, SourceProperty(..), mkSourceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Config.ConfigRule.CustomPolicyDetailsProperty as Exports
+import {-# SOURCE #-} Stratosphere.Config.ConfigRule.SourceDetailProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SourceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source.html>
+    SourceProperty {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source.html#cfn-config-configrule-source-custompolicydetails>
+                    customPolicyDetails :: (Prelude.Maybe CustomPolicyDetailsProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source.html#cfn-config-configrule-source-owner>
+                    owner :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source.html#cfn-config-configrule-source-sourcedetails>
+                    sourceDetails :: (Prelude.Maybe [SourceDetailProperty]),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source.html#cfn-config-configrule-source-sourceidentifier>
+                    sourceIdentifier :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSourceProperty :: Value Prelude.Text -> SourceProperty
+mkSourceProperty owner
+  = SourceProperty
+      {haddock_workaround_ = (), owner = owner,
+       customPolicyDetails = Prelude.Nothing,
+       sourceDetails = Prelude.Nothing,
+       sourceIdentifier = Prelude.Nothing}
+instance ToResourceProperties SourceProperty where
+  toResourceProperties SourceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigRule.Source",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Owner" JSON..= owner]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CustomPolicyDetails" Prelude.<$> customPolicyDetails,
+                               (JSON..=) "SourceDetails" Prelude.<$> sourceDetails,
+                               (JSON..=) "SourceIdentifier" Prelude.<$> sourceIdentifier]))}
+instance JSON.ToJSON SourceProperty where
+  toJSON SourceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Owner" JSON..= owner]
+              (Prelude.catMaybes
+                 [(JSON..=) "CustomPolicyDetails" Prelude.<$> customPolicyDetails,
+                  (JSON..=) "SourceDetails" Prelude.<$> sourceDetails,
+                  (JSON..=) "SourceIdentifier" Prelude.<$> sourceIdentifier])))
+instance Property "CustomPolicyDetails" SourceProperty where
+  type PropertyType "CustomPolicyDetails" SourceProperty = CustomPolicyDetailsProperty
+  set newValue SourceProperty {..}
+    = SourceProperty {customPolicyDetails = Prelude.pure newValue, ..}
+instance Property "Owner" SourceProperty where
+  type PropertyType "Owner" SourceProperty = Value Prelude.Text
+  set newValue SourceProperty {..}
+    = SourceProperty {owner = newValue, ..}
+instance Property "SourceDetails" SourceProperty where
+  type PropertyType "SourceDetails" SourceProperty = [SourceDetailProperty]
+  set newValue SourceProperty {..}
+    = SourceProperty {sourceDetails = Prelude.pure newValue, ..}
+instance Property "SourceIdentifier" SourceProperty where
+  type PropertyType "SourceIdentifier" SourceProperty = Value Prelude.Text
+  set newValue SourceProperty {..}
+    = SourceProperty {sourceIdentifier = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigRule/SourceProperty.hs-boot b/gen/Stratosphere/Config/ConfigRule/SourceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigRule/SourceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConfigRule.SourceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SourceProperty :: Prelude.Type
+instance ToResourceProperties SourceProperty
+instance Prelude.Eq SourceProperty
+instance Prelude.Show SourceProperty
+instance JSON.ToJSON SourceProperty
diff --git a/gen/Stratosphere/Config/ConfigurationAggregator.hs b/gen/Stratosphere/Config/ConfigurationAggregator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationAggregator.hs
@@ -0,0 +1,77 @@
+module Stratosphere.Config.ConfigurationAggregator (
+        module Exports, ConfigurationAggregator(..),
+        mkConfigurationAggregator
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Config.ConfigurationAggregator.AccountAggregationSourceProperty as Exports
+import {-# SOURCE #-} Stratosphere.Config.ConfigurationAggregator.OrganizationAggregationSourceProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data ConfigurationAggregator
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html>
+    ConfigurationAggregator {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html#cfn-config-configurationaggregator-accountaggregationsources>
+                             accountAggregationSources :: (Prelude.Maybe [AccountAggregationSourceProperty]),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html#cfn-config-configurationaggregator-configurationaggregatorname>
+                             configurationAggregatorName :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html#cfn-config-configurationaggregator-organizationaggregationsource>
+                             organizationAggregationSource :: (Prelude.Maybe OrganizationAggregationSourceProperty),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html#cfn-config-configurationaggregator-tags>
+                             tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConfigurationAggregator :: ConfigurationAggregator
+mkConfigurationAggregator
+  = ConfigurationAggregator
+      {haddock_workaround_ = (),
+       accountAggregationSources = Prelude.Nothing,
+       configurationAggregatorName = Prelude.Nothing,
+       organizationAggregationSource = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties ConfigurationAggregator where
+  toResourceProperties ConfigurationAggregator {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigurationAggregator",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AccountAggregationSources"
+                              Prelude.<$> accountAggregationSources,
+                            (JSON..=) "ConfigurationAggregatorName"
+                              Prelude.<$> configurationAggregatorName,
+                            (JSON..=) "OrganizationAggregationSource"
+                              Prelude.<$> organizationAggregationSource,
+                            (JSON..=) "Tags" Prelude.<$> tags])}
+instance JSON.ToJSON ConfigurationAggregator where
+  toJSON ConfigurationAggregator {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AccountAggregationSources"
+                 Prelude.<$> accountAggregationSources,
+               (JSON..=) "ConfigurationAggregatorName"
+                 Prelude.<$> configurationAggregatorName,
+               (JSON..=) "OrganizationAggregationSource"
+                 Prelude.<$> organizationAggregationSource,
+               (JSON..=) "Tags" Prelude.<$> tags]))
+instance Property "AccountAggregationSources" ConfigurationAggregator where
+  type PropertyType "AccountAggregationSources" ConfigurationAggregator = [AccountAggregationSourceProperty]
+  set newValue ConfigurationAggregator {..}
+    = ConfigurationAggregator
+        {accountAggregationSources = Prelude.pure newValue, ..}
+instance Property "ConfigurationAggregatorName" ConfigurationAggregator where
+  type PropertyType "ConfigurationAggregatorName" ConfigurationAggregator = Value Prelude.Text
+  set newValue ConfigurationAggregator {..}
+    = ConfigurationAggregator
+        {configurationAggregatorName = Prelude.pure newValue, ..}
+instance Property "OrganizationAggregationSource" ConfigurationAggregator where
+  type PropertyType "OrganizationAggregationSource" ConfigurationAggregator = OrganizationAggregationSourceProperty
+  set newValue ConfigurationAggregator {..}
+    = ConfigurationAggregator
+        {organizationAggregationSource = Prelude.pure newValue, ..}
+instance Property "Tags" ConfigurationAggregator where
+  type PropertyType "Tags" ConfigurationAggregator = [Tag]
+  set newValue ConfigurationAggregator {..}
+    = ConfigurationAggregator {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigurationAggregator/AccountAggregationSourceProperty.hs b/gen/Stratosphere/Config/ConfigurationAggregator/AccountAggregationSourceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationAggregator/AccountAggregationSourceProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.Config.ConfigurationAggregator.AccountAggregationSourceProperty (
+        AccountAggregationSourceProperty(..),
+        mkAccountAggregationSourceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AccountAggregationSourceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-accountaggregationsource.html>
+    AccountAggregationSourceProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-accountaggregationsource.html#cfn-config-configurationaggregator-accountaggregationsource-accountids>
+                                      accountIds :: (ValueList Prelude.Text),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-accountaggregationsource.html#cfn-config-configurationaggregator-accountaggregationsource-allawsregions>
+                                      allAwsRegions :: (Prelude.Maybe (Value Prelude.Bool)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-accountaggregationsource.html#cfn-config-configurationaggregator-accountaggregationsource-awsregions>
+                                      awsRegions :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAccountAggregationSourceProperty ::
+  ValueList Prelude.Text -> AccountAggregationSourceProperty
+mkAccountAggregationSourceProperty accountIds
+  = AccountAggregationSourceProperty
+      {haddock_workaround_ = (), accountIds = accountIds,
+       allAwsRegions = Prelude.Nothing, awsRegions = Prelude.Nothing}
+instance ToResourceProperties AccountAggregationSourceProperty where
+  toResourceProperties AccountAggregationSourceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigurationAggregator.AccountAggregationSource",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AccountIds" JSON..= accountIds]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AllAwsRegions" Prelude.<$> allAwsRegions,
+                               (JSON..=) "AwsRegions" Prelude.<$> awsRegions]))}
+instance JSON.ToJSON AccountAggregationSourceProperty where
+  toJSON AccountAggregationSourceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AccountIds" JSON..= accountIds]
+              (Prelude.catMaybes
+                 [(JSON..=) "AllAwsRegions" Prelude.<$> allAwsRegions,
+                  (JSON..=) "AwsRegions" Prelude.<$> awsRegions])))
+instance Property "AccountIds" AccountAggregationSourceProperty where
+  type PropertyType "AccountIds" AccountAggregationSourceProperty = ValueList Prelude.Text
+  set newValue AccountAggregationSourceProperty {..}
+    = AccountAggregationSourceProperty {accountIds = newValue, ..}
+instance Property "AllAwsRegions" AccountAggregationSourceProperty where
+  type PropertyType "AllAwsRegions" AccountAggregationSourceProperty = Value Prelude.Bool
+  set newValue AccountAggregationSourceProperty {..}
+    = AccountAggregationSourceProperty
+        {allAwsRegions = Prelude.pure newValue, ..}
+instance Property "AwsRegions" AccountAggregationSourceProperty where
+  type PropertyType "AwsRegions" AccountAggregationSourceProperty = ValueList Prelude.Text
+  set newValue AccountAggregationSourceProperty {..}
+    = AccountAggregationSourceProperty
+        {awsRegions = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigurationAggregator/AccountAggregationSourceProperty.hs-boot b/gen/Stratosphere/Config/ConfigurationAggregator/AccountAggregationSourceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationAggregator/AccountAggregationSourceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConfigurationAggregator.AccountAggregationSourceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AccountAggregationSourceProperty :: Prelude.Type
+instance ToResourceProperties AccountAggregationSourceProperty
+instance Prelude.Eq AccountAggregationSourceProperty
+instance Prelude.Show AccountAggregationSourceProperty
+instance JSON.ToJSON AccountAggregationSourceProperty
diff --git a/gen/Stratosphere/Config/ConfigurationAggregator/OrganizationAggregationSourceProperty.hs b/gen/Stratosphere/Config/ConfigurationAggregator/OrganizationAggregationSourceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationAggregator/OrganizationAggregationSourceProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.Config.ConfigurationAggregator.OrganizationAggregationSourceProperty (
+        OrganizationAggregationSourceProperty(..),
+        mkOrganizationAggregationSourceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OrganizationAggregationSourceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-organizationaggregationsource.html>
+    OrganizationAggregationSourceProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-organizationaggregationsource.html#cfn-config-configurationaggregator-organizationaggregationsource-allawsregions>
+                                           allAwsRegions :: (Prelude.Maybe (Value Prelude.Bool)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-organizationaggregationsource.html#cfn-config-configurationaggregator-organizationaggregationsource-awsregions>
+                                           awsRegions :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-organizationaggregationsource.html#cfn-config-configurationaggregator-organizationaggregationsource-rolearn>
+                                           roleArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOrganizationAggregationSourceProperty ::
+  Value Prelude.Text -> OrganizationAggregationSourceProperty
+mkOrganizationAggregationSourceProperty roleArn
+  = OrganizationAggregationSourceProperty
+      {haddock_workaround_ = (), roleArn = roleArn,
+       allAwsRegions = Prelude.Nothing, awsRegions = Prelude.Nothing}
+instance ToResourceProperties OrganizationAggregationSourceProperty where
+  toResourceProperties OrganizationAggregationSourceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigurationAggregator.OrganizationAggregationSource",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["RoleArn" JSON..= roleArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AllAwsRegions" Prelude.<$> allAwsRegions,
+                               (JSON..=) "AwsRegions" Prelude.<$> awsRegions]))}
+instance JSON.ToJSON OrganizationAggregationSourceProperty where
+  toJSON OrganizationAggregationSourceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["RoleArn" JSON..= roleArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "AllAwsRegions" Prelude.<$> allAwsRegions,
+                  (JSON..=) "AwsRegions" Prelude.<$> awsRegions])))
+instance Property "AllAwsRegions" OrganizationAggregationSourceProperty where
+  type PropertyType "AllAwsRegions" OrganizationAggregationSourceProperty = Value Prelude.Bool
+  set newValue OrganizationAggregationSourceProperty {..}
+    = OrganizationAggregationSourceProperty
+        {allAwsRegions = Prelude.pure newValue, ..}
+instance Property "AwsRegions" OrganizationAggregationSourceProperty where
+  type PropertyType "AwsRegions" OrganizationAggregationSourceProperty = ValueList Prelude.Text
+  set newValue OrganizationAggregationSourceProperty {..}
+    = OrganizationAggregationSourceProperty
+        {awsRegions = Prelude.pure newValue, ..}
+instance Property "RoleArn" OrganizationAggregationSourceProperty where
+  type PropertyType "RoleArn" OrganizationAggregationSourceProperty = Value Prelude.Text
+  set newValue OrganizationAggregationSourceProperty {..}
+    = OrganizationAggregationSourceProperty {roleArn = newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigurationAggregator/OrganizationAggregationSourceProperty.hs-boot b/gen/Stratosphere/Config/ConfigurationAggregator/OrganizationAggregationSourceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationAggregator/OrganizationAggregationSourceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConfigurationAggregator.OrganizationAggregationSourceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OrganizationAggregationSourceProperty :: Prelude.Type
+instance ToResourceProperties OrganizationAggregationSourceProperty
+instance Prelude.Eq OrganizationAggregationSourceProperty
+instance Prelude.Show OrganizationAggregationSourceProperty
+instance JSON.ToJSON OrganizationAggregationSourceProperty
diff --git a/gen/Stratosphere/Config/ConfigurationRecorder.hs b/gen/Stratosphere/Config/ConfigurationRecorder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationRecorder.hs
@@ -0,0 +1,68 @@
+module Stratosphere.Config.ConfigurationRecorder (
+        module Exports, ConfigurationRecorder(..), mkConfigurationRecorder
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Config.ConfigurationRecorder.RecordingGroupProperty as Exports
+import {-# SOURCE #-} Stratosphere.Config.ConfigurationRecorder.RecordingModeProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ConfigurationRecorder
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html>
+    ConfigurationRecorder {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html#cfn-config-configurationrecorder-name>
+                           name :: (Prelude.Maybe (Value Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html#cfn-config-configurationrecorder-recordinggroup>
+                           recordingGroup :: (Prelude.Maybe RecordingGroupProperty),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html#cfn-config-configurationrecorder-recordingmode>
+                           recordingMode :: (Prelude.Maybe RecordingModeProperty),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html#cfn-config-configurationrecorder-rolearn>
+                           roleARN :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConfigurationRecorder ::
+  Value Prelude.Text -> ConfigurationRecorder
+mkConfigurationRecorder roleARN
+  = ConfigurationRecorder
+      {haddock_workaround_ = (), roleARN = roleARN,
+       name = Prelude.Nothing, recordingGroup = Prelude.Nothing,
+       recordingMode = Prelude.Nothing}
+instance ToResourceProperties ConfigurationRecorder where
+  toResourceProperties ConfigurationRecorder {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigurationRecorder",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["RoleARN" JSON..= roleARN]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Name" Prelude.<$> name,
+                               (JSON..=) "RecordingGroup" Prelude.<$> recordingGroup,
+                               (JSON..=) "RecordingMode" Prelude.<$> recordingMode]))}
+instance JSON.ToJSON ConfigurationRecorder where
+  toJSON ConfigurationRecorder {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["RoleARN" JSON..= roleARN]
+              (Prelude.catMaybes
+                 [(JSON..=) "Name" Prelude.<$> name,
+                  (JSON..=) "RecordingGroup" Prelude.<$> recordingGroup,
+                  (JSON..=) "RecordingMode" Prelude.<$> recordingMode])))
+instance Property "Name" ConfigurationRecorder where
+  type PropertyType "Name" ConfigurationRecorder = Value Prelude.Text
+  set newValue ConfigurationRecorder {..}
+    = ConfigurationRecorder {name = Prelude.pure newValue, ..}
+instance Property "RecordingGroup" ConfigurationRecorder where
+  type PropertyType "RecordingGroup" ConfigurationRecorder = RecordingGroupProperty
+  set newValue ConfigurationRecorder {..}
+    = ConfigurationRecorder
+        {recordingGroup = Prelude.pure newValue, ..}
+instance Property "RecordingMode" ConfigurationRecorder where
+  type PropertyType "RecordingMode" ConfigurationRecorder = RecordingModeProperty
+  set newValue ConfigurationRecorder {..}
+    = ConfigurationRecorder {recordingMode = Prelude.pure newValue, ..}
+instance Property "RoleARN" ConfigurationRecorder where
+  type PropertyType "RoleARN" ConfigurationRecorder = Value Prelude.Text
+  set newValue ConfigurationRecorder {..}
+    = ConfigurationRecorder {roleARN = newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigurationRecorder/ExclusionByResourceTypesProperty.hs b/gen/Stratosphere/Config/ConfigurationRecorder/ExclusionByResourceTypesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationRecorder/ExclusionByResourceTypesProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.Config.ConfigurationRecorder.ExclusionByResourceTypesProperty (
+        ExclusionByResourceTypesProperty(..),
+        mkExclusionByResourceTypesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ExclusionByResourceTypesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-exclusionbyresourcetypes.html>
+    ExclusionByResourceTypesProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-exclusionbyresourcetypes.html#cfn-config-configurationrecorder-exclusionbyresourcetypes-resourcetypes>
+                                      resourceTypes :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkExclusionByResourceTypesProperty ::
+  ValueList Prelude.Text -> ExclusionByResourceTypesProperty
+mkExclusionByResourceTypesProperty resourceTypes
+  = ExclusionByResourceTypesProperty
+      {haddock_workaround_ = (), resourceTypes = resourceTypes}
+instance ToResourceProperties ExclusionByResourceTypesProperty where
+  toResourceProperties ExclusionByResourceTypesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigurationRecorder.ExclusionByResourceTypes",
+         supportsTags = Prelude.False,
+         properties = ["ResourceTypes" JSON..= resourceTypes]}
+instance JSON.ToJSON ExclusionByResourceTypesProperty where
+  toJSON ExclusionByResourceTypesProperty {..}
+    = JSON.object ["ResourceTypes" JSON..= resourceTypes]
+instance Property "ResourceTypes" ExclusionByResourceTypesProperty where
+  type PropertyType "ResourceTypes" ExclusionByResourceTypesProperty = ValueList Prelude.Text
+  set newValue ExclusionByResourceTypesProperty {..}
+    = ExclusionByResourceTypesProperty {resourceTypes = newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigurationRecorder/ExclusionByResourceTypesProperty.hs-boot b/gen/Stratosphere/Config/ConfigurationRecorder/ExclusionByResourceTypesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationRecorder/ExclusionByResourceTypesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConfigurationRecorder.ExclusionByResourceTypesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ExclusionByResourceTypesProperty :: Prelude.Type
+instance ToResourceProperties ExclusionByResourceTypesProperty
+instance Prelude.Eq ExclusionByResourceTypesProperty
+instance Prelude.Show ExclusionByResourceTypesProperty
+instance JSON.ToJSON ExclusionByResourceTypesProperty
diff --git a/gen/Stratosphere/Config/ConfigurationRecorder/RecordingGroupProperty.hs b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingGroupProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingGroupProperty.hs
@@ -0,0 +1,83 @@
+module Stratosphere.Config.ConfigurationRecorder.RecordingGroupProperty (
+        module Exports, RecordingGroupProperty(..),
+        mkRecordingGroupProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Config.ConfigurationRecorder.ExclusionByResourceTypesProperty as Exports
+import {-# SOURCE #-} Stratosphere.Config.ConfigurationRecorder.RecordingStrategyProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RecordingGroupProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html>
+    RecordingGroupProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html#cfn-config-configurationrecorder-recordinggroup-allsupported>
+                            allSupported :: (Prelude.Maybe (Value Prelude.Bool)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html#cfn-config-configurationrecorder-recordinggroup-exclusionbyresourcetypes>
+                            exclusionByResourceTypes :: (Prelude.Maybe ExclusionByResourceTypesProperty),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html#cfn-config-configurationrecorder-recordinggroup-includeglobalresourcetypes>
+                            includeGlobalResourceTypes :: (Prelude.Maybe (Value Prelude.Bool)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html#cfn-config-configurationrecorder-recordinggroup-recordingstrategy>
+                            recordingStrategy :: (Prelude.Maybe RecordingStrategyProperty),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html#cfn-config-configurationrecorder-recordinggroup-resourcetypes>
+                            resourceTypes :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRecordingGroupProperty :: RecordingGroupProperty
+mkRecordingGroupProperty
+  = RecordingGroupProperty
+      {haddock_workaround_ = (), allSupported = Prelude.Nothing,
+       exclusionByResourceTypes = Prelude.Nothing,
+       includeGlobalResourceTypes = Prelude.Nothing,
+       recordingStrategy = Prelude.Nothing,
+       resourceTypes = Prelude.Nothing}
+instance ToResourceProperties RecordingGroupProperty where
+  toResourceProperties RecordingGroupProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigurationRecorder.RecordingGroup",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AllSupported" Prelude.<$> allSupported,
+                            (JSON..=) "ExclusionByResourceTypes"
+                              Prelude.<$> exclusionByResourceTypes,
+                            (JSON..=) "IncludeGlobalResourceTypes"
+                              Prelude.<$> includeGlobalResourceTypes,
+                            (JSON..=) "RecordingStrategy" Prelude.<$> recordingStrategy,
+                            (JSON..=) "ResourceTypes" Prelude.<$> resourceTypes])}
+instance JSON.ToJSON RecordingGroupProperty where
+  toJSON RecordingGroupProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AllSupported" Prelude.<$> allSupported,
+               (JSON..=) "ExclusionByResourceTypes"
+                 Prelude.<$> exclusionByResourceTypes,
+               (JSON..=) "IncludeGlobalResourceTypes"
+                 Prelude.<$> includeGlobalResourceTypes,
+               (JSON..=) "RecordingStrategy" Prelude.<$> recordingStrategy,
+               (JSON..=) "ResourceTypes" Prelude.<$> resourceTypes]))
+instance Property "AllSupported" RecordingGroupProperty where
+  type PropertyType "AllSupported" RecordingGroupProperty = Value Prelude.Bool
+  set newValue RecordingGroupProperty {..}
+    = RecordingGroupProperty {allSupported = Prelude.pure newValue, ..}
+instance Property "ExclusionByResourceTypes" RecordingGroupProperty where
+  type PropertyType "ExclusionByResourceTypes" RecordingGroupProperty = ExclusionByResourceTypesProperty
+  set newValue RecordingGroupProperty {..}
+    = RecordingGroupProperty
+        {exclusionByResourceTypes = Prelude.pure newValue, ..}
+instance Property "IncludeGlobalResourceTypes" RecordingGroupProperty where
+  type PropertyType "IncludeGlobalResourceTypes" RecordingGroupProperty = Value Prelude.Bool
+  set newValue RecordingGroupProperty {..}
+    = RecordingGroupProperty
+        {includeGlobalResourceTypes = Prelude.pure newValue, ..}
+instance Property "RecordingStrategy" RecordingGroupProperty where
+  type PropertyType "RecordingStrategy" RecordingGroupProperty = RecordingStrategyProperty
+  set newValue RecordingGroupProperty {..}
+    = RecordingGroupProperty
+        {recordingStrategy = Prelude.pure newValue, ..}
+instance Property "ResourceTypes" RecordingGroupProperty where
+  type PropertyType "ResourceTypes" RecordingGroupProperty = ValueList Prelude.Text
+  set newValue RecordingGroupProperty {..}
+    = RecordingGroupProperty
+        {resourceTypes = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigurationRecorder/RecordingGroupProperty.hs-boot b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingGroupProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingGroupProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConfigurationRecorder.RecordingGroupProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RecordingGroupProperty :: Prelude.Type
+instance ToResourceProperties RecordingGroupProperty
+instance Prelude.Eq RecordingGroupProperty
+instance Prelude.Show RecordingGroupProperty
+instance JSON.ToJSON RecordingGroupProperty
diff --git a/gen/Stratosphere/Config/ConfigurationRecorder/RecordingModeOverrideProperty.hs b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingModeOverrideProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingModeOverrideProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.Config.ConfigurationRecorder.RecordingModeOverrideProperty (
+        RecordingModeOverrideProperty(..), mkRecordingModeOverrideProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RecordingModeOverrideProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordingmodeoverride.html>
+    RecordingModeOverrideProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordingmodeoverride.html#cfn-config-configurationrecorder-recordingmodeoverride-description>
+                                   description :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordingmodeoverride.html#cfn-config-configurationrecorder-recordingmodeoverride-recordingfrequency>
+                                   recordingFrequency :: (Value Prelude.Text),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordingmodeoverride.html#cfn-config-configurationrecorder-recordingmodeoverride-resourcetypes>
+                                   resourceTypes :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRecordingModeOverrideProperty ::
+  Value Prelude.Text
+  -> ValueList Prelude.Text -> RecordingModeOverrideProperty
+mkRecordingModeOverrideProperty recordingFrequency resourceTypes
+  = RecordingModeOverrideProperty
+      {haddock_workaround_ = (), recordingFrequency = recordingFrequency,
+       resourceTypes = resourceTypes, description = Prelude.Nothing}
+instance ToResourceProperties RecordingModeOverrideProperty where
+  toResourceProperties RecordingModeOverrideProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigurationRecorder.RecordingModeOverride",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["RecordingFrequency" JSON..= recordingFrequency,
+                            "ResourceTypes" JSON..= resourceTypes]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description]))}
+instance JSON.ToJSON RecordingModeOverrideProperty where
+  toJSON RecordingModeOverrideProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["RecordingFrequency" JSON..= recordingFrequency,
+               "ResourceTypes" JSON..= resourceTypes]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description])))
+instance Property "Description" RecordingModeOverrideProperty where
+  type PropertyType "Description" RecordingModeOverrideProperty = Value Prelude.Text
+  set newValue RecordingModeOverrideProperty {..}
+    = RecordingModeOverrideProperty
+        {description = Prelude.pure newValue, ..}
+instance Property "RecordingFrequency" RecordingModeOverrideProperty where
+  type PropertyType "RecordingFrequency" RecordingModeOverrideProperty = Value Prelude.Text
+  set newValue RecordingModeOverrideProperty {..}
+    = RecordingModeOverrideProperty {recordingFrequency = newValue, ..}
+instance Property "ResourceTypes" RecordingModeOverrideProperty where
+  type PropertyType "ResourceTypes" RecordingModeOverrideProperty = ValueList Prelude.Text
+  set newValue RecordingModeOverrideProperty {..}
+    = RecordingModeOverrideProperty {resourceTypes = newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigurationRecorder/RecordingModeOverrideProperty.hs-boot b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingModeOverrideProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingModeOverrideProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConfigurationRecorder.RecordingModeOverrideProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RecordingModeOverrideProperty :: Prelude.Type
+instance ToResourceProperties RecordingModeOverrideProperty
+instance Prelude.Eq RecordingModeOverrideProperty
+instance Prelude.Show RecordingModeOverrideProperty
+instance JSON.ToJSON RecordingModeOverrideProperty
diff --git a/gen/Stratosphere/Config/ConfigurationRecorder/RecordingModeProperty.hs b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingModeProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingModeProperty.hs
@@ -0,0 +1,52 @@
+module Stratosphere.Config.ConfigurationRecorder.RecordingModeProperty (
+        module Exports, RecordingModeProperty(..), mkRecordingModeProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Config.ConfigurationRecorder.RecordingModeOverrideProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RecordingModeProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordingmode.html>
+    RecordingModeProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordingmode.html#cfn-config-configurationrecorder-recordingmode-recordingfrequency>
+                           recordingFrequency :: (Value Prelude.Text),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordingmode.html#cfn-config-configurationrecorder-recordingmode-recordingmodeoverrides>
+                           recordingModeOverrides :: (Prelude.Maybe [RecordingModeOverrideProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRecordingModeProperty ::
+  Value Prelude.Text -> RecordingModeProperty
+mkRecordingModeProperty recordingFrequency
+  = RecordingModeProperty
+      {haddock_workaround_ = (), recordingFrequency = recordingFrequency,
+       recordingModeOverrides = Prelude.Nothing}
+instance ToResourceProperties RecordingModeProperty where
+  toResourceProperties RecordingModeProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigurationRecorder.RecordingMode",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["RecordingFrequency" JSON..= recordingFrequency]
+                           (Prelude.catMaybes
+                              [(JSON..=) "RecordingModeOverrides"
+                                 Prelude.<$> recordingModeOverrides]))}
+instance JSON.ToJSON RecordingModeProperty where
+  toJSON RecordingModeProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["RecordingFrequency" JSON..= recordingFrequency]
+              (Prelude.catMaybes
+                 [(JSON..=) "RecordingModeOverrides"
+                    Prelude.<$> recordingModeOverrides])))
+instance Property "RecordingFrequency" RecordingModeProperty where
+  type PropertyType "RecordingFrequency" RecordingModeProperty = Value Prelude.Text
+  set newValue RecordingModeProperty {..}
+    = RecordingModeProperty {recordingFrequency = newValue, ..}
+instance Property "RecordingModeOverrides" RecordingModeProperty where
+  type PropertyType "RecordingModeOverrides" RecordingModeProperty = [RecordingModeOverrideProperty]
+  set newValue RecordingModeProperty {..}
+    = RecordingModeProperty
+        {recordingModeOverrides = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigurationRecorder/RecordingModeProperty.hs-boot b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingModeProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingModeProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConfigurationRecorder.RecordingModeProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RecordingModeProperty :: Prelude.Type
+instance ToResourceProperties RecordingModeProperty
+instance Prelude.Eq RecordingModeProperty
+instance Prelude.Show RecordingModeProperty
+instance JSON.ToJSON RecordingModeProperty
diff --git a/gen/Stratosphere/Config/ConfigurationRecorder/RecordingStrategyProperty.hs b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingStrategyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingStrategyProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.Config.ConfigurationRecorder.RecordingStrategyProperty (
+        RecordingStrategyProperty(..), mkRecordingStrategyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RecordingStrategyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordingstrategy.html>
+    RecordingStrategyProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordingstrategy.html#cfn-config-configurationrecorder-recordingstrategy-useonly>
+                               useOnly :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRecordingStrategyProperty ::
+  Value Prelude.Text -> RecordingStrategyProperty
+mkRecordingStrategyProperty useOnly
+  = RecordingStrategyProperty
+      {haddock_workaround_ = (), useOnly = useOnly}
+instance ToResourceProperties RecordingStrategyProperty where
+  toResourceProperties RecordingStrategyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConfigurationRecorder.RecordingStrategy",
+         supportsTags = Prelude.False,
+         properties = ["UseOnly" JSON..= useOnly]}
+instance JSON.ToJSON RecordingStrategyProperty where
+  toJSON RecordingStrategyProperty {..}
+    = JSON.object ["UseOnly" JSON..= useOnly]
+instance Property "UseOnly" RecordingStrategyProperty where
+  type PropertyType "UseOnly" RecordingStrategyProperty = Value Prelude.Text
+  set newValue RecordingStrategyProperty {..}
+    = RecordingStrategyProperty {useOnly = newValue, ..}
diff --git a/gen/Stratosphere/Config/ConfigurationRecorder/RecordingStrategyProperty.hs-boot b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingStrategyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConfigurationRecorder/RecordingStrategyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConfigurationRecorder.RecordingStrategyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RecordingStrategyProperty :: Prelude.Type
+instance ToResourceProperties RecordingStrategyProperty
+instance Prelude.Eq RecordingStrategyProperty
+instance Prelude.Show RecordingStrategyProperty
+instance JSON.ToJSON RecordingStrategyProperty
diff --git a/gen/Stratosphere/Config/ConformancePack.hs b/gen/Stratosphere/Config/ConformancePack.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConformancePack.hs
@@ -0,0 +1,100 @@
+module Stratosphere.Config.ConformancePack (
+        module Exports, ConformancePack(..), mkConformancePack
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Config.ConformancePack.ConformancePackInputParameterProperty as Exports
+import {-# SOURCE #-} Stratosphere.Config.ConformancePack.TemplateSSMDocumentDetailsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ConformancePack
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html>
+    ConformancePack {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html#cfn-config-conformancepack-conformancepackinputparameters>
+                     conformancePackInputParameters :: (Prelude.Maybe [ConformancePackInputParameterProperty]),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html#cfn-config-conformancepack-conformancepackname>
+                     conformancePackName :: (Value Prelude.Text),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html#cfn-config-conformancepack-deliverys3bucket>
+                     deliveryS3Bucket :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html#cfn-config-conformancepack-deliverys3keyprefix>
+                     deliveryS3KeyPrefix :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html#cfn-config-conformancepack-templatebody>
+                     templateBody :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html#cfn-config-conformancepack-templates3uri>
+                     templateS3Uri :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html#cfn-config-conformancepack-templatessmdocumentdetails>
+                     templateSSMDocumentDetails :: (Prelude.Maybe TemplateSSMDocumentDetailsProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConformancePack :: Value Prelude.Text -> ConformancePack
+mkConformancePack conformancePackName
+  = ConformancePack
+      {haddock_workaround_ = (),
+       conformancePackName = conformancePackName,
+       conformancePackInputParameters = Prelude.Nothing,
+       deliveryS3Bucket = Prelude.Nothing,
+       deliveryS3KeyPrefix = Prelude.Nothing,
+       templateBody = Prelude.Nothing, templateS3Uri = Prelude.Nothing,
+       templateSSMDocumentDetails = Prelude.Nothing}
+instance ToResourceProperties ConformancePack where
+  toResourceProperties ConformancePack {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConformancePack",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ConformancePackName" JSON..= conformancePackName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ConformancePackInputParameters"
+                                 Prelude.<$> conformancePackInputParameters,
+                               (JSON..=) "DeliveryS3Bucket" Prelude.<$> deliveryS3Bucket,
+                               (JSON..=) "DeliveryS3KeyPrefix" Prelude.<$> deliveryS3KeyPrefix,
+                               (JSON..=) "TemplateBody" Prelude.<$> templateBody,
+                               (JSON..=) "TemplateS3Uri" Prelude.<$> templateS3Uri,
+                               (JSON..=) "TemplateSSMDocumentDetails"
+                                 Prelude.<$> templateSSMDocumentDetails]))}
+instance JSON.ToJSON ConformancePack where
+  toJSON ConformancePack {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ConformancePackName" JSON..= conformancePackName]
+              (Prelude.catMaybes
+                 [(JSON..=) "ConformancePackInputParameters"
+                    Prelude.<$> conformancePackInputParameters,
+                  (JSON..=) "DeliveryS3Bucket" Prelude.<$> deliveryS3Bucket,
+                  (JSON..=) "DeliveryS3KeyPrefix" Prelude.<$> deliveryS3KeyPrefix,
+                  (JSON..=) "TemplateBody" Prelude.<$> templateBody,
+                  (JSON..=) "TemplateS3Uri" Prelude.<$> templateS3Uri,
+                  (JSON..=) "TemplateSSMDocumentDetails"
+                    Prelude.<$> templateSSMDocumentDetails])))
+instance Property "ConformancePackInputParameters" ConformancePack where
+  type PropertyType "ConformancePackInputParameters" ConformancePack = [ConformancePackInputParameterProperty]
+  set newValue ConformancePack {..}
+    = ConformancePack
+        {conformancePackInputParameters = Prelude.pure newValue, ..}
+instance Property "ConformancePackName" ConformancePack where
+  type PropertyType "ConformancePackName" ConformancePack = Value Prelude.Text
+  set newValue ConformancePack {..}
+    = ConformancePack {conformancePackName = newValue, ..}
+instance Property "DeliveryS3Bucket" ConformancePack where
+  type PropertyType "DeliveryS3Bucket" ConformancePack = Value Prelude.Text
+  set newValue ConformancePack {..}
+    = ConformancePack {deliveryS3Bucket = Prelude.pure newValue, ..}
+instance Property "DeliveryS3KeyPrefix" ConformancePack where
+  type PropertyType "DeliveryS3KeyPrefix" ConformancePack = Value Prelude.Text
+  set newValue ConformancePack {..}
+    = ConformancePack {deliveryS3KeyPrefix = Prelude.pure newValue, ..}
+instance Property "TemplateBody" ConformancePack where
+  type PropertyType "TemplateBody" ConformancePack = Value Prelude.Text
+  set newValue ConformancePack {..}
+    = ConformancePack {templateBody = Prelude.pure newValue, ..}
+instance Property "TemplateS3Uri" ConformancePack where
+  type PropertyType "TemplateS3Uri" ConformancePack = Value Prelude.Text
+  set newValue ConformancePack {..}
+    = ConformancePack {templateS3Uri = Prelude.pure newValue, ..}
+instance Property "TemplateSSMDocumentDetails" ConformancePack where
+  type PropertyType "TemplateSSMDocumentDetails" ConformancePack = TemplateSSMDocumentDetailsProperty
+  set newValue ConformancePack {..}
+    = ConformancePack
+        {templateSSMDocumentDetails = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/ConformancePack/ConformancePackInputParameterProperty.hs b/gen/Stratosphere/Config/ConformancePack/ConformancePackInputParameterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConformancePack/ConformancePackInputParameterProperty.hs
@@ -0,0 +1,48 @@
+module Stratosphere.Config.ConformancePack.ConformancePackInputParameterProperty (
+        ConformancePackInputParameterProperty(..),
+        mkConformancePackInputParameterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ConformancePackInputParameterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-conformancepack-conformancepackinputparameter.html>
+    ConformancePackInputParameterProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-conformancepack-conformancepackinputparameter.html#cfn-config-conformancepack-conformancepackinputparameter-parametername>
+                                           parameterName :: (Value Prelude.Text),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-conformancepack-conformancepackinputparameter.html#cfn-config-conformancepack-conformancepackinputparameter-parametervalue>
+                                           parameterValue :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConformancePackInputParameterProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> ConformancePackInputParameterProperty
+mkConformancePackInputParameterProperty
+  parameterName
+  parameterValue
+  = ConformancePackInputParameterProperty
+      {haddock_workaround_ = (), parameterName = parameterName,
+       parameterValue = parameterValue}
+instance ToResourceProperties ConformancePackInputParameterProperty where
+  toResourceProperties ConformancePackInputParameterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConformancePack.ConformancePackInputParameter",
+         supportsTags = Prelude.False,
+         properties = ["ParameterName" JSON..= parameterName,
+                       "ParameterValue" JSON..= parameterValue]}
+instance JSON.ToJSON ConformancePackInputParameterProperty where
+  toJSON ConformancePackInputParameterProperty {..}
+    = JSON.object
+        ["ParameterName" JSON..= parameterName,
+         "ParameterValue" JSON..= parameterValue]
+instance Property "ParameterName" ConformancePackInputParameterProperty where
+  type PropertyType "ParameterName" ConformancePackInputParameterProperty = Value Prelude.Text
+  set newValue ConformancePackInputParameterProperty {..}
+    = ConformancePackInputParameterProperty
+        {parameterName = newValue, ..}
+instance Property "ParameterValue" ConformancePackInputParameterProperty where
+  type PropertyType "ParameterValue" ConformancePackInputParameterProperty = Value Prelude.Text
+  set newValue ConformancePackInputParameterProperty {..}
+    = ConformancePackInputParameterProperty
+        {parameterValue = newValue, ..}
diff --git a/gen/Stratosphere/Config/ConformancePack/ConformancePackInputParameterProperty.hs-boot b/gen/Stratosphere/Config/ConformancePack/ConformancePackInputParameterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConformancePack/ConformancePackInputParameterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConformancePack.ConformancePackInputParameterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConformancePackInputParameterProperty :: Prelude.Type
+instance ToResourceProperties ConformancePackInputParameterProperty
+instance Prelude.Eq ConformancePackInputParameterProperty
+instance Prelude.Show ConformancePackInputParameterProperty
+instance JSON.ToJSON ConformancePackInputParameterProperty
diff --git a/gen/Stratosphere/Config/ConformancePack/TemplateSSMDocumentDetailsProperty.hs b/gen/Stratosphere/Config/ConformancePack/TemplateSSMDocumentDetailsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConformancePack/TemplateSSMDocumentDetailsProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.Config.ConformancePack.TemplateSSMDocumentDetailsProperty (
+        TemplateSSMDocumentDetailsProperty(..),
+        mkTemplateSSMDocumentDetailsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TemplateSSMDocumentDetailsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-conformancepack-templatessmdocumentdetails.html>
+    TemplateSSMDocumentDetailsProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-conformancepack-templatessmdocumentdetails.html#cfn-config-conformancepack-templatessmdocumentdetails-documentname>
+                                        documentName :: (Prelude.Maybe (Value Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-conformancepack-templatessmdocumentdetails.html#cfn-config-conformancepack-templatessmdocumentdetails-documentversion>
+                                        documentVersion :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTemplateSSMDocumentDetailsProperty ::
+  TemplateSSMDocumentDetailsProperty
+mkTemplateSSMDocumentDetailsProperty
+  = TemplateSSMDocumentDetailsProperty
+      {haddock_workaround_ = (), documentName = Prelude.Nothing,
+       documentVersion = Prelude.Nothing}
+instance ToResourceProperties TemplateSSMDocumentDetailsProperty where
+  toResourceProperties TemplateSSMDocumentDetailsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::ConformancePack.TemplateSSMDocumentDetails",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DocumentName" Prelude.<$> documentName,
+                            (JSON..=) "DocumentVersion" Prelude.<$> documentVersion])}
+instance JSON.ToJSON TemplateSSMDocumentDetailsProperty where
+  toJSON TemplateSSMDocumentDetailsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DocumentName" Prelude.<$> documentName,
+               (JSON..=) "DocumentVersion" Prelude.<$> documentVersion]))
+instance Property "DocumentName" TemplateSSMDocumentDetailsProperty where
+  type PropertyType "DocumentName" TemplateSSMDocumentDetailsProperty = Value Prelude.Text
+  set newValue TemplateSSMDocumentDetailsProperty {..}
+    = TemplateSSMDocumentDetailsProperty
+        {documentName = Prelude.pure newValue, ..}
+instance Property "DocumentVersion" TemplateSSMDocumentDetailsProperty where
+  type PropertyType "DocumentVersion" TemplateSSMDocumentDetailsProperty = Value Prelude.Text
+  set newValue TemplateSSMDocumentDetailsProperty {..}
+    = TemplateSSMDocumentDetailsProperty
+        {documentVersion = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/ConformancePack/TemplateSSMDocumentDetailsProperty.hs-boot b/gen/Stratosphere/Config/ConformancePack/TemplateSSMDocumentDetailsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/ConformancePack/TemplateSSMDocumentDetailsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.ConformancePack.TemplateSSMDocumentDetailsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TemplateSSMDocumentDetailsProperty :: Prelude.Type
+instance ToResourceProperties TemplateSSMDocumentDetailsProperty
+instance Prelude.Eq TemplateSSMDocumentDetailsProperty
+instance Prelude.Show TemplateSSMDocumentDetailsProperty
+instance JSON.ToJSON TemplateSSMDocumentDetailsProperty
diff --git a/gen/Stratosphere/Config/DeliveryChannel.hs b/gen/Stratosphere/Config/DeliveryChannel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/DeliveryChannel.hs
@@ -0,0 +1,85 @@
+module Stratosphere.Config.DeliveryChannel (
+        module Exports, DeliveryChannel(..), mkDeliveryChannel
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Config.DeliveryChannel.ConfigSnapshotDeliveryPropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DeliveryChannel
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html>
+    DeliveryChannel {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html#cfn-config-deliverychannel-configsnapshotdeliveryproperties>
+                     configSnapshotDeliveryProperties :: (Prelude.Maybe ConfigSnapshotDeliveryPropertiesProperty),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html#cfn-config-deliverychannel-name>
+                     name :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html#cfn-config-deliverychannel-s3bucketname>
+                     s3BucketName :: (Value Prelude.Text),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html#cfn-config-deliverychannel-s3keyprefix>
+                     s3KeyPrefix :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html#cfn-config-deliverychannel-s3kmskeyarn>
+                     s3KmsKeyArn :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html#cfn-config-deliverychannel-snstopicarn>
+                     snsTopicARN :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDeliveryChannel :: Value Prelude.Text -> DeliveryChannel
+mkDeliveryChannel s3BucketName
+  = DeliveryChannel
+      {haddock_workaround_ = (), s3BucketName = s3BucketName,
+       configSnapshotDeliveryProperties = Prelude.Nothing,
+       name = Prelude.Nothing, s3KeyPrefix = Prelude.Nothing,
+       s3KmsKeyArn = Prelude.Nothing, snsTopicARN = Prelude.Nothing}
+instance ToResourceProperties DeliveryChannel where
+  toResourceProperties DeliveryChannel {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::DeliveryChannel",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["S3BucketName" JSON..= s3BucketName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ConfigSnapshotDeliveryProperties"
+                                 Prelude.<$> configSnapshotDeliveryProperties,
+                               (JSON..=) "Name" Prelude.<$> name,
+                               (JSON..=) "S3KeyPrefix" Prelude.<$> s3KeyPrefix,
+                               (JSON..=) "S3KmsKeyArn" Prelude.<$> s3KmsKeyArn,
+                               (JSON..=) "SnsTopicARN" Prelude.<$> snsTopicARN]))}
+instance JSON.ToJSON DeliveryChannel where
+  toJSON DeliveryChannel {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["S3BucketName" JSON..= s3BucketName]
+              (Prelude.catMaybes
+                 [(JSON..=) "ConfigSnapshotDeliveryProperties"
+                    Prelude.<$> configSnapshotDeliveryProperties,
+                  (JSON..=) "Name" Prelude.<$> name,
+                  (JSON..=) "S3KeyPrefix" Prelude.<$> s3KeyPrefix,
+                  (JSON..=) "S3KmsKeyArn" Prelude.<$> s3KmsKeyArn,
+                  (JSON..=) "SnsTopicARN" Prelude.<$> snsTopicARN])))
+instance Property "ConfigSnapshotDeliveryProperties" DeliveryChannel where
+  type PropertyType "ConfigSnapshotDeliveryProperties" DeliveryChannel = ConfigSnapshotDeliveryPropertiesProperty
+  set newValue DeliveryChannel {..}
+    = DeliveryChannel
+        {configSnapshotDeliveryProperties = Prelude.pure newValue, ..}
+instance Property "Name" DeliveryChannel where
+  type PropertyType "Name" DeliveryChannel = Value Prelude.Text
+  set newValue DeliveryChannel {..}
+    = DeliveryChannel {name = Prelude.pure newValue, ..}
+instance Property "S3BucketName" DeliveryChannel where
+  type PropertyType "S3BucketName" DeliveryChannel = Value Prelude.Text
+  set newValue DeliveryChannel {..}
+    = DeliveryChannel {s3BucketName = newValue, ..}
+instance Property "S3KeyPrefix" DeliveryChannel where
+  type PropertyType "S3KeyPrefix" DeliveryChannel = Value Prelude.Text
+  set newValue DeliveryChannel {..}
+    = DeliveryChannel {s3KeyPrefix = Prelude.pure newValue, ..}
+instance Property "S3KmsKeyArn" DeliveryChannel where
+  type PropertyType "S3KmsKeyArn" DeliveryChannel = Value Prelude.Text
+  set newValue DeliveryChannel {..}
+    = DeliveryChannel {s3KmsKeyArn = Prelude.pure newValue, ..}
+instance Property "SnsTopicARN" DeliveryChannel where
+  type PropertyType "SnsTopicARN" DeliveryChannel = Value Prelude.Text
+  set newValue DeliveryChannel {..}
+    = DeliveryChannel {snsTopicARN = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/DeliveryChannel/ConfigSnapshotDeliveryPropertiesProperty.hs b/gen/Stratosphere/Config/DeliveryChannel/ConfigSnapshotDeliveryPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/DeliveryChannel/ConfigSnapshotDeliveryPropertiesProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.Config.DeliveryChannel.ConfigSnapshotDeliveryPropertiesProperty (
+        ConfigSnapshotDeliveryPropertiesProperty(..),
+        mkConfigSnapshotDeliveryPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ConfigSnapshotDeliveryPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-deliverychannel-configsnapshotdeliveryproperties.html>
+    ConfigSnapshotDeliveryPropertiesProperty {haddock_workaround_ :: (),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-deliverychannel-configsnapshotdeliveryproperties.html#cfn-config-deliverychannel-configsnapshotdeliveryproperties-deliveryfrequency>
+                                              deliveryFrequency :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConfigSnapshotDeliveryPropertiesProperty ::
+  ConfigSnapshotDeliveryPropertiesProperty
+mkConfigSnapshotDeliveryPropertiesProperty
+  = ConfigSnapshotDeliveryPropertiesProperty
+      {haddock_workaround_ = (), deliveryFrequency = Prelude.Nothing}
+instance ToResourceProperties ConfigSnapshotDeliveryPropertiesProperty where
+  toResourceProperties ConfigSnapshotDeliveryPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::DeliveryChannel.ConfigSnapshotDeliveryProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DeliveryFrequency" Prelude.<$> deliveryFrequency])}
+instance JSON.ToJSON ConfigSnapshotDeliveryPropertiesProperty where
+  toJSON ConfigSnapshotDeliveryPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DeliveryFrequency" Prelude.<$> deliveryFrequency]))
+instance Property "DeliveryFrequency" ConfigSnapshotDeliveryPropertiesProperty where
+  type PropertyType "DeliveryFrequency" ConfigSnapshotDeliveryPropertiesProperty = Value Prelude.Text
+  set newValue ConfigSnapshotDeliveryPropertiesProperty {..}
+    = ConfigSnapshotDeliveryPropertiesProperty
+        {deliveryFrequency = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/DeliveryChannel/ConfigSnapshotDeliveryPropertiesProperty.hs-boot b/gen/Stratosphere/Config/DeliveryChannel/ConfigSnapshotDeliveryPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/DeliveryChannel/ConfigSnapshotDeliveryPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.DeliveryChannel.ConfigSnapshotDeliveryPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConfigSnapshotDeliveryPropertiesProperty :: Prelude.Type
+instance ToResourceProperties ConfigSnapshotDeliveryPropertiesProperty
+instance Prelude.Eq ConfigSnapshotDeliveryPropertiesProperty
+instance Prelude.Show ConfigSnapshotDeliveryPropertiesProperty
+instance JSON.ToJSON ConfigSnapshotDeliveryPropertiesProperty
diff --git a/gen/Stratosphere/Config/OrganizationConfigRule.hs b/gen/Stratosphere/Config/OrganizationConfigRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/OrganizationConfigRule.hs
@@ -0,0 +1,91 @@
+module Stratosphere.Config.OrganizationConfigRule (
+        module Exports, OrganizationConfigRule(..),
+        mkOrganizationConfigRule
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Config.OrganizationConfigRule.OrganizationCustomPolicyRuleMetadataProperty as Exports
+import {-# SOURCE #-} Stratosphere.Config.OrganizationConfigRule.OrganizationCustomRuleMetadataProperty as Exports
+import {-# SOURCE #-} Stratosphere.Config.OrganizationConfigRule.OrganizationManagedRuleMetadataProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OrganizationConfigRule
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconfigrule.html>
+    OrganizationConfigRule {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconfigrule.html#cfn-config-organizationconfigrule-excludedaccounts>
+                            excludedAccounts :: (Prelude.Maybe (ValueList Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconfigrule.html#cfn-config-organizationconfigrule-organizationconfigrulename>
+                            organizationConfigRuleName :: (Value Prelude.Text),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconfigrule.html#cfn-config-organizationconfigrule-organizationcustompolicyrulemetadata>
+                            organizationCustomPolicyRuleMetadata :: (Prelude.Maybe OrganizationCustomPolicyRuleMetadataProperty),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconfigrule.html#cfn-config-organizationconfigrule-organizationcustomrulemetadata>
+                            organizationCustomRuleMetadata :: (Prelude.Maybe OrganizationCustomRuleMetadataProperty),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconfigrule.html#cfn-config-organizationconfigrule-organizationmanagedrulemetadata>
+                            organizationManagedRuleMetadata :: (Prelude.Maybe OrganizationManagedRuleMetadataProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOrganizationConfigRule ::
+  Value Prelude.Text -> OrganizationConfigRule
+mkOrganizationConfigRule organizationConfigRuleName
+  = OrganizationConfigRule
+      {haddock_workaround_ = (),
+       organizationConfigRuleName = organizationConfigRuleName,
+       excludedAccounts = Prelude.Nothing,
+       organizationCustomPolicyRuleMetadata = Prelude.Nothing,
+       organizationCustomRuleMetadata = Prelude.Nothing,
+       organizationManagedRuleMetadata = Prelude.Nothing}
+instance ToResourceProperties OrganizationConfigRule where
+  toResourceProperties OrganizationConfigRule {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::OrganizationConfigRule",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["OrganizationConfigRuleName" JSON..= organizationConfigRuleName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ExcludedAccounts" Prelude.<$> excludedAccounts,
+                               (JSON..=) "OrganizationCustomPolicyRuleMetadata"
+                                 Prelude.<$> organizationCustomPolicyRuleMetadata,
+                               (JSON..=) "OrganizationCustomRuleMetadata"
+                                 Prelude.<$> organizationCustomRuleMetadata,
+                               (JSON..=) "OrganizationManagedRuleMetadata"
+                                 Prelude.<$> organizationManagedRuleMetadata]))}
+instance JSON.ToJSON OrganizationConfigRule where
+  toJSON OrganizationConfigRule {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["OrganizationConfigRuleName" JSON..= organizationConfigRuleName]
+              (Prelude.catMaybes
+                 [(JSON..=) "ExcludedAccounts" Prelude.<$> excludedAccounts,
+                  (JSON..=) "OrganizationCustomPolicyRuleMetadata"
+                    Prelude.<$> organizationCustomPolicyRuleMetadata,
+                  (JSON..=) "OrganizationCustomRuleMetadata"
+                    Prelude.<$> organizationCustomRuleMetadata,
+                  (JSON..=) "OrganizationManagedRuleMetadata"
+                    Prelude.<$> organizationManagedRuleMetadata])))
+instance Property "ExcludedAccounts" OrganizationConfigRule where
+  type PropertyType "ExcludedAccounts" OrganizationConfigRule = ValueList Prelude.Text
+  set newValue OrganizationConfigRule {..}
+    = OrganizationConfigRule
+        {excludedAccounts = Prelude.pure newValue, ..}
+instance Property "OrganizationConfigRuleName" OrganizationConfigRule where
+  type PropertyType "OrganizationConfigRuleName" OrganizationConfigRule = Value Prelude.Text
+  set newValue OrganizationConfigRule {..}
+    = OrganizationConfigRule
+        {organizationConfigRuleName = newValue, ..}
+instance Property "OrganizationCustomPolicyRuleMetadata" OrganizationConfigRule where
+  type PropertyType "OrganizationCustomPolicyRuleMetadata" OrganizationConfigRule = OrganizationCustomPolicyRuleMetadataProperty
+  set newValue OrganizationConfigRule {..}
+    = OrganizationConfigRule
+        {organizationCustomPolicyRuleMetadata = Prelude.pure newValue, ..}
+instance Property "OrganizationCustomRuleMetadata" OrganizationConfigRule where
+  type PropertyType "OrganizationCustomRuleMetadata" OrganizationConfigRule = OrganizationCustomRuleMetadataProperty
+  set newValue OrganizationConfigRule {..}
+    = OrganizationConfigRule
+        {organizationCustomRuleMetadata = Prelude.pure newValue, ..}
+instance Property "OrganizationManagedRuleMetadata" OrganizationConfigRule where
+  type PropertyType "OrganizationManagedRuleMetadata" OrganizationConfigRule = OrganizationManagedRuleMetadataProperty
+  set newValue OrganizationConfigRule {..}
+    = OrganizationConfigRule
+        {organizationManagedRuleMetadata = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationCustomPolicyRuleMetadataProperty.hs b/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationCustomPolicyRuleMetadataProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationCustomPolicyRuleMetadataProperty.hs
@@ -0,0 +1,145 @@
+module Stratosphere.Config.OrganizationConfigRule.OrganizationCustomPolicyRuleMetadataProperty (
+        OrganizationCustomPolicyRuleMetadataProperty(..),
+        mkOrganizationCustomPolicyRuleMetadataProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OrganizationCustomPolicyRuleMetadataProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustompolicyrulemetadata.html>
+    OrganizationCustomPolicyRuleMetadataProperty {haddock_workaround_ :: (),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustompolicyrulemetadata.html#cfn-config-organizationconfigrule-organizationcustompolicyrulemetadata-debuglogdeliveryaccounts>
+                                                  debugLogDeliveryAccounts :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustompolicyrulemetadata.html#cfn-config-organizationconfigrule-organizationcustompolicyrulemetadata-description>
+                                                  description :: (Prelude.Maybe (Value Prelude.Text)),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustompolicyrulemetadata.html#cfn-config-organizationconfigrule-organizationcustompolicyrulemetadata-inputparameters>
+                                                  inputParameters :: (Prelude.Maybe (Value Prelude.Text)),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustompolicyrulemetadata.html#cfn-config-organizationconfigrule-organizationcustompolicyrulemetadata-maximumexecutionfrequency>
+                                                  maximumExecutionFrequency :: (Prelude.Maybe (Value Prelude.Text)),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustompolicyrulemetadata.html#cfn-config-organizationconfigrule-organizationcustompolicyrulemetadata-organizationconfigruletriggertypes>
+                                                  organizationConfigRuleTriggerTypes :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustompolicyrulemetadata.html#cfn-config-organizationconfigrule-organizationcustompolicyrulemetadata-policytext>
+                                                  policyText :: (Value Prelude.Text),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustompolicyrulemetadata.html#cfn-config-organizationconfigrule-organizationcustompolicyrulemetadata-resourceidscope>
+                                                  resourceIdScope :: (Prelude.Maybe (Value Prelude.Text)),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustompolicyrulemetadata.html#cfn-config-organizationconfigrule-organizationcustompolicyrulemetadata-resourcetypesscope>
+                                                  resourceTypesScope :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustompolicyrulemetadata.html#cfn-config-organizationconfigrule-organizationcustompolicyrulemetadata-runtime>
+                                                  runtime :: (Value Prelude.Text),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustompolicyrulemetadata.html#cfn-config-organizationconfigrule-organizationcustompolicyrulemetadata-tagkeyscope>
+                                                  tagKeyScope :: (Prelude.Maybe (Value Prelude.Text)),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustompolicyrulemetadata.html#cfn-config-organizationconfigrule-organizationcustompolicyrulemetadata-tagvaluescope>
+                                                  tagValueScope :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOrganizationCustomPolicyRuleMetadataProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> OrganizationCustomPolicyRuleMetadataProperty
+mkOrganizationCustomPolicyRuleMetadataProperty policyText runtime
+  = OrganizationCustomPolicyRuleMetadataProperty
+      {haddock_workaround_ = (), policyText = policyText,
+       runtime = runtime, debugLogDeliveryAccounts = Prelude.Nothing,
+       description = Prelude.Nothing, inputParameters = Prelude.Nothing,
+       maximumExecutionFrequency = Prelude.Nothing,
+       organizationConfigRuleTriggerTypes = Prelude.Nothing,
+       resourceIdScope = Prelude.Nothing,
+       resourceTypesScope = Prelude.Nothing,
+       tagKeyScope = Prelude.Nothing, tagValueScope = Prelude.Nothing}
+instance ToResourceProperties OrganizationCustomPolicyRuleMetadataProperty where
+  toResourceProperties
+    OrganizationCustomPolicyRuleMetadataProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::OrganizationConfigRule.OrganizationCustomPolicyRuleMetadata",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["PolicyText" JSON..= policyText, "Runtime" JSON..= runtime]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DebugLogDeliveryAccounts"
+                                 Prelude.<$> debugLogDeliveryAccounts,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "InputParameters" Prelude.<$> inputParameters,
+                               (JSON..=) "MaximumExecutionFrequency"
+                                 Prelude.<$> maximumExecutionFrequency,
+                               (JSON..=) "OrganizationConfigRuleTriggerTypes"
+                                 Prelude.<$> organizationConfigRuleTriggerTypes,
+                               (JSON..=) "ResourceIdScope" Prelude.<$> resourceIdScope,
+                               (JSON..=) "ResourceTypesScope" Prelude.<$> resourceTypesScope,
+                               (JSON..=) "TagKeyScope" Prelude.<$> tagKeyScope,
+                               (JSON..=) "TagValueScope" Prelude.<$> tagValueScope]))}
+instance JSON.ToJSON OrganizationCustomPolicyRuleMetadataProperty where
+  toJSON OrganizationCustomPolicyRuleMetadataProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["PolicyText" JSON..= policyText, "Runtime" JSON..= runtime]
+              (Prelude.catMaybes
+                 [(JSON..=) "DebugLogDeliveryAccounts"
+                    Prelude.<$> debugLogDeliveryAccounts,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "InputParameters" Prelude.<$> inputParameters,
+                  (JSON..=) "MaximumExecutionFrequency"
+                    Prelude.<$> maximumExecutionFrequency,
+                  (JSON..=) "OrganizationConfigRuleTriggerTypes"
+                    Prelude.<$> organizationConfigRuleTriggerTypes,
+                  (JSON..=) "ResourceIdScope" Prelude.<$> resourceIdScope,
+                  (JSON..=) "ResourceTypesScope" Prelude.<$> resourceTypesScope,
+                  (JSON..=) "TagKeyScope" Prelude.<$> tagKeyScope,
+                  (JSON..=) "TagValueScope" Prelude.<$> tagValueScope])))
+instance Property "DebugLogDeliveryAccounts" OrganizationCustomPolicyRuleMetadataProperty where
+  type PropertyType "DebugLogDeliveryAccounts" OrganizationCustomPolicyRuleMetadataProperty = ValueList Prelude.Text
+  set newValue OrganizationCustomPolicyRuleMetadataProperty {..}
+    = OrganizationCustomPolicyRuleMetadataProperty
+        {debugLogDeliveryAccounts = Prelude.pure newValue, ..}
+instance Property "Description" OrganizationCustomPolicyRuleMetadataProperty where
+  type PropertyType "Description" OrganizationCustomPolicyRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomPolicyRuleMetadataProperty {..}
+    = OrganizationCustomPolicyRuleMetadataProperty
+        {description = Prelude.pure newValue, ..}
+instance Property "InputParameters" OrganizationCustomPolicyRuleMetadataProperty where
+  type PropertyType "InputParameters" OrganizationCustomPolicyRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomPolicyRuleMetadataProperty {..}
+    = OrganizationCustomPolicyRuleMetadataProperty
+        {inputParameters = Prelude.pure newValue, ..}
+instance Property "MaximumExecutionFrequency" OrganizationCustomPolicyRuleMetadataProperty where
+  type PropertyType "MaximumExecutionFrequency" OrganizationCustomPolicyRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomPolicyRuleMetadataProperty {..}
+    = OrganizationCustomPolicyRuleMetadataProperty
+        {maximumExecutionFrequency = Prelude.pure newValue, ..}
+instance Property "OrganizationConfigRuleTriggerTypes" OrganizationCustomPolicyRuleMetadataProperty where
+  type PropertyType "OrganizationConfigRuleTriggerTypes" OrganizationCustomPolicyRuleMetadataProperty = ValueList Prelude.Text
+  set newValue OrganizationCustomPolicyRuleMetadataProperty {..}
+    = OrganizationCustomPolicyRuleMetadataProperty
+        {organizationConfigRuleTriggerTypes = Prelude.pure newValue, ..}
+instance Property "PolicyText" OrganizationCustomPolicyRuleMetadataProperty where
+  type PropertyType "PolicyText" OrganizationCustomPolicyRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomPolicyRuleMetadataProperty {..}
+    = OrganizationCustomPolicyRuleMetadataProperty
+        {policyText = newValue, ..}
+instance Property "ResourceIdScope" OrganizationCustomPolicyRuleMetadataProperty where
+  type PropertyType "ResourceIdScope" OrganizationCustomPolicyRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomPolicyRuleMetadataProperty {..}
+    = OrganizationCustomPolicyRuleMetadataProperty
+        {resourceIdScope = Prelude.pure newValue, ..}
+instance Property "ResourceTypesScope" OrganizationCustomPolicyRuleMetadataProperty where
+  type PropertyType "ResourceTypesScope" OrganizationCustomPolicyRuleMetadataProperty = ValueList Prelude.Text
+  set newValue OrganizationCustomPolicyRuleMetadataProperty {..}
+    = OrganizationCustomPolicyRuleMetadataProperty
+        {resourceTypesScope = Prelude.pure newValue, ..}
+instance Property "Runtime" OrganizationCustomPolicyRuleMetadataProperty where
+  type PropertyType "Runtime" OrganizationCustomPolicyRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomPolicyRuleMetadataProperty {..}
+    = OrganizationCustomPolicyRuleMetadataProperty
+        {runtime = newValue, ..}
+instance Property "TagKeyScope" OrganizationCustomPolicyRuleMetadataProperty where
+  type PropertyType "TagKeyScope" OrganizationCustomPolicyRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomPolicyRuleMetadataProperty {..}
+    = OrganizationCustomPolicyRuleMetadataProperty
+        {tagKeyScope = Prelude.pure newValue, ..}
+instance Property "TagValueScope" OrganizationCustomPolicyRuleMetadataProperty where
+  type PropertyType "TagValueScope" OrganizationCustomPolicyRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomPolicyRuleMetadataProperty {..}
+    = OrganizationCustomPolicyRuleMetadataProperty
+        {tagValueScope = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationCustomPolicyRuleMetadataProperty.hs-boot b/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationCustomPolicyRuleMetadataProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationCustomPolicyRuleMetadataProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.OrganizationConfigRule.OrganizationCustomPolicyRuleMetadataProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OrganizationCustomPolicyRuleMetadataProperty :: Prelude.Type
+instance ToResourceProperties OrganizationCustomPolicyRuleMetadataProperty
+instance Prelude.Eq OrganizationCustomPolicyRuleMetadataProperty
+instance Prelude.Show OrganizationCustomPolicyRuleMetadataProperty
+instance JSON.ToJSON OrganizationCustomPolicyRuleMetadataProperty
diff --git a/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationCustomRuleMetadataProperty.hs b/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationCustomRuleMetadataProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationCustomRuleMetadataProperty.hs
@@ -0,0 +1,126 @@
+module Stratosphere.Config.OrganizationConfigRule.OrganizationCustomRuleMetadataProperty (
+        OrganizationCustomRuleMetadataProperty(..),
+        mkOrganizationCustomRuleMetadataProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OrganizationCustomRuleMetadataProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustomrulemetadata.html>
+    OrganizationCustomRuleMetadataProperty {haddock_workaround_ :: (),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustomrulemetadata.html#cfn-config-organizationconfigrule-organizationcustomrulemetadata-description>
+                                            description :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustomrulemetadata.html#cfn-config-organizationconfigrule-organizationcustomrulemetadata-inputparameters>
+                                            inputParameters :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustomrulemetadata.html#cfn-config-organizationconfigrule-organizationcustomrulemetadata-lambdafunctionarn>
+                                            lambdaFunctionArn :: (Value Prelude.Text),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustomrulemetadata.html#cfn-config-organizationconfigrule-organizationcustomrulemetadata-maximumexecutionfrequency>
+                                            maximumExecutionFrequency :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustomrulemetadata.html#cfn-config-organizationconfigrule-organizationcustomrulemetadata-organizationconfigruletriggertypes>
+                                            organizationConfigRuleTriggerTypes :: (ValueList Prelude.Text),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustomrulemetadata.html#cfn-config-organizationconfigrule-organizationcustomrulemetadata-resourceidscope>
+                                            resourceIdScope :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustomrulemetadata.html#cfn-config-organizationconfigrule-organizationcustomrulemetadata-resourcetypesscope>
+                                            resourceTypesScope :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustomrulemetadata.html#cfn-config-organizationconfigrule-organizationcustomrulemetadata-tagkeyscope>
+                                            tagKeyScope :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustomrulemetadata.html#cfn-config-organizationconfigrule-organizationcustomrulemetadata-tagvaluescope>
+                                            tagValueScope :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOrganizationCustomRuleMetadataProperty ::
+  Value Prelude.Text
+  -> ValueList Prelude.Text -> OrganizationCustomRuleMetadataProperty
+mkOrganizationCustomRuleMetadataProperty
+  lambdaFunctionArn
+  organizationConfigRuleTriggerTypes
+  = OrganizationCustomRuleMetadataProperty
+      {haddock_workaround_ = (), lambdaFunctionArn = lambdaFunctionArn,
+       organizationConfigRuleTriggerTypes = organizationConfigRuleTriggerTypes,
+       description = Prelude.Nothing, inputParameters = Prelude.Nothing,
+       maximumExecutionFrequency = Prelude.Nothing,
+       resourceIdScope = Prelude.Nothing,
+       resourceTypesScope = Prelude.Nothing,
+       tagKeyScope = Prelude.Nothing, tagValueScope = Prelude.Nothing}
+instance ToResourceProperties OrganizationCustomRuleMetadataProperty where
+  toResourceProperties OrganizationCustomRuleMetadataProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::OrganizationConfigRule.OrganizationCustomRuleMetadata",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["LambdaFunctionArn" JSON..= lambdaFunctionArn,
+                            "OrganizationConfigRuleTriggerTypes"
+                              JSON..= organizationConfigRuleTriggerTypes]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "InputParameters" Prelude.<$> inputParameters,
+                               (JSON..=) "MaximumExecutionFrequency"
+                                 Prelude.<$> maximumExecutionFrequency,
+                               (JSON..=) "ResourceIdScope" Prelude.<$> resourceIdScope,
+                               (JSON..=) "ResourceTypesScope" Prelude.<$> resourceTypesScope,
+                               (JSON..=) "TagKeyScope" Prelude.<$> tagKeyScope,
+                               (JSON..=) "TagValueScope" Prelude.<$> tagValueScope]))}
+instance JSON.ToJSON OrganizationCustomRuleMetadataProperty where
+  toJSON OrganizationCustomRuleMetadataProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["LambdaFunctionArn" JSON..= lambdaFunctionArn,
+               "OrganizationConfigRuleTriggerTypes"
+                 JSON..= organizationConfigRuleTriggerTypes]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "InputParameters" Prelude.<$> inputParameters,
+                  (JSON..=) "MaximumExecutionFrequency"
+                    Prelude.<$> maximumExecutionFrequency,
+                  (JSON..=) "ResourceIdScope" Prelude.<$> resourceIdScope,
+                  (JSON..=) "ResourceTypesScope" Prelude.<$> resourceTypesScope,
+                  (JSON..=) "TagKeyScope" Prelude.<$> tagKeyScope,
+                  (JSON..=) "TagValueScope" Prelude.<$> tagValueScope])))
+instance Property "Description" OrganizationCustomRuleMetadataProperty where
+  type PropertyType "Description" OrganizationCustomRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomRuleMetadataProperty {..}
+    = OrganizationCustomRuleMetadataProperty
+        {description = Prelude.pure newValue, ..}
+instance Property "InputParameters" OrganizationCustomRuleMetadataProperty where
+  type PropertyType "InputParameters" OrganizationCustomRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomRuleMetadataProperty {..}
+    = OrganizationCustomRuleMetadataProperty
+        {inputParameters = Prelude.pure newValue, ..}
+instance Property "LambdaFunctionArn" OrganizationCustomRuleMetadataProperty where
+  type PropertyType "LambdaFunctionArn" OrganizationCustomRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomRuleMetadataProperty {..}
+    = OrganizationCustomRuleMetadataProperty
+        {lambdaFunctionArn = newValue, ..}
+instance Property "MaximumExecutionFrequency" OrganizationCustomRuleMetadataProperty where
+  type PropertyType "MaximumExecutionFrequency" OrganizationCustomRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomRuleMetadataProperty {..}
+    = OrganizationCustomRuleMetadataProperty
+        {maximumExecutionFrequency = Prelude.pure newValue, ..}
+instance Property "OrganizationConfigRuleTriggerTypes" OrganizationCustomRuleMetadataProperty where
+  type PropertyType "OrganizationConfigRuleTriggerTypes" OrganizationCustomRuleMetadataProperty = ValueList Prelude.Text
+  set newValue OrganizationCustomRuleMetadataProperty {..}
+    = OrganizationCustomRuleMetadataProperty
+        {organizationConfigRuleTriggerTypes = newValue, ..}
+instance Property "ResourceIdScope" OrganizationCustomRuleMetadataProperty where
+  type PropertyType "ResourceIdScope" OrganizationCustomRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomRuleMetadataProperty {..}
+    = OrganizationCustomRuleMetadataProperty
+        {resourceIdScope = Prelude.pure newValue, ..}
+instance Property "ResourceTypesScope" OrganizationCustomRuleMetadataProperty where
+  type PropertyType "ResourceTypesScope" OrganizationCustomRuleMetadataProperty = ValueList Prelude.Text
+  set newValue OrganizationCustomRuleMetadataProperty {..}
+    = OrganizationCustomRuleMetadataProperty
+        {resourceTypesScope = Prelude.pure newValue, ..}
+instance Property "TagKeyScope" OrganizationCustomRuleMetadataProperty where
+  type PropertyType "TagKeyScope" OrganizationCustomRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomRuleMetadataProperty {..}
+    = OrganizationCustomRuleMetadataProperty
+        {tagKeyScope = Prelude.pure newValue, ..}
+instance Property "TagValueScope" OrganizationCustomRuleMetadataProperty where
+  type PropertyType "TagValueScope" OrganizationCustomRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationCustomRuleMetadataProperty {..}
+    = OrganizationCustomRuleMetadataProperty
+        {tagValueScope = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationCustomRuleMetadataProperty.hs-boot b/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationCustomRuleMetadataProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationCustomRuleMetadataProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.OrganizationConfigRule.OrganizationCustomRuleMetadataProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OrganizationCustomRuleMetadataProperty :: Prelude.Type
+instance ToResourceProperties OrganizationCustomRuleMetadataProperty
+instance Prelude.Eq OrganizationCustomRuleMetadataProperty
+instance Prelude.Show OrganizationCustomRuleMetadataProperty
+instance JSON.ToJSON OrganizationCustomRuleMetadataProperty
diff --git a/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationManagedRuleMetadataProperty.hs b/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationManagedRuleMetadataProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationManagedRuleMetadataProperty.hs
@@ -0,0 +1,111 @@
+module Stratosphere.Config.OrganizationConfigRule.OrganizationManagedRuleMetadataProperty (
+        OrganizationManagedRuleMetadataProperty(..),
+        mkOrganizationManagedRuleMetadataProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OrganizationManagedRuleMetadataProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationmanagedrulemetadata.html>
+    OrganizationManagedRuleMetadataProperty {haddock_workaround_ :: (),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationmanagedrulemetadata.html#cfn-config-organizationconfigrule-organizationmanagedrulemetadata-description>
+                                             description :: (Prelude.Maybe (Value Prelude.Text)),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationmanagedrulemetadata.html#cfn-config-organizationconfigrule-organizationmanagedrulemetadata-inputparameters>
+                                             inputParameters :: (Prelude.Maybe (Value Prelude.Text)),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationmanagedrulemetadata.html#cfn-config-organizationconfigrule-organizationmanagedrulemetadata-maximumexecutionfrequency>
+                                             maximumExecutionFrequency :: (Prelude.Maybe (Value Prelude.Text)),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationmanagedrulemetadata.html#cfn-config-organizationconfigrule-organizationmanagedrulemetadata-resourceidscope>
+                                             resourceIdScope :: (Prelude.Maybe (Value Prelude.Text)),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationmanagedrulemetadata.html#cfn-config-organizationconfigrule-organizationmanagedrulemetadata-resourcetypesscope>
+                                             resourceTypesScope :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationmanagedrulemetadata.html#cfn-config-organizationconfigrule-organizationmanagedrulemetadata-ruleidentifier>
+                                             ruleIdentifier :: (Value Prelude.Text),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationmanagedrulemetadata.html#cfn-config-organizationconfigrule-organizationmanagedrulemetadata-tagkeyscope>
+                                             tagKeyScope :: (Prelude.Maybe (Value Prelude.Text)),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationmanagedrulemetadata.html#cfn-config-organizationconfigrule-organizationmanagedrulemetadata-tagvaluescope>
+                                             tagValueScope :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOrganizationManagedRuleMetadataProperty ::
+  Value Prelude.Text -> OrganizationManagedRuleMetadataProperty
+mkOrganizationManagedRuleMetadataProperty ruleIdentifier
+  = OrganizationManagedRuleMetadataProperty
+      {haddock_workaround_ = (), ruleIdentifier = ruleIdentifier,
+       description = Prelude.Nothing, inputParameters = Prelude.Nothing,
+       maximumExecutionFrequency = Prelude.Nothing,
+       resourceIdScope = Prelude.Nothing,
+       resourceTypesScope = Prelude.Nothing,
+       tagKeyScope = Prelude.Nothing, tagValueScope = Prelude.Nothing}
+instance ToResourceProperties OrganizationManagedRuleMetadataProperty where
+  toResourceProperties OrganizationManagedRuleMetadataProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::OrganizationConfigRule.OrganizationManagedRuleMetadata",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["RuleIdentifier" JSON..= ruleIdentifier]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "InputParameters" Prelude.<$> inputParameters,
+                               (JSON..=) "MaximumExecutionFrequency"
+                                 Prelude.<$> maximumExecutionFrequency,
+                               (JSON..=) "ResourceIdScope" Prelude.<$> resourceIdScope,
+                               (JSON..=) "ResourceTypesScope" Prelude.<$> resourceTypesScope,
+                               (JSON..=) "TagKeyScope" Prelude.<$> tagKeyScope,
+                               (JSON..=) "TagValueScope" Prelude.<$> tagValueScope]))}
+instance JSON.ToJSON OrganizationManagedRuleMetadataProperty where
+  toJSON OrganizationManagedRuleMetadataProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["RuleIdentifier" JSON..= ruleIdentifier]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "InputParameters" Prelude.<$> inputParameters,
+                  (JSON..=) "MaximumExecutionFrequency"
+                    Prelude.<$> maximumExecutionFrequency,
+                  (JSON..=) "ResourceIdScope" Prelude.<$> resourceIdScope,
+                  (JSON..=) "ResourceTypesScope" Prelude.<$> resourceTypesScope,
+                  (JSON..=) "TagKeyScope" Prelude.<$> tagKeyScope,
+                  (JSON..=) "TagValueScope" Prelude.<$> tagValueScope])))
+instance Property "Description" OrganizationManagedRuleMetadataProperty where
+  type PropertyType "Description" OrganizationManagedRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationManagedRuleMetadataProperty {..}
+    = OrganizationManagedRuleMetadataProperty
+        {description = Prelude.pure newValue, ..}
+instance Property "InputParameters" OrganizationManagedRuleMetadataProperty where
+  type PropertyType "InputParameters" OrganizationManagedRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationManagedRuleMetadataProperty {..}
+    = OrganizationManagedRuleMetadataProperty
+        {inputParameters = Prelude.pure newValue, ..}
+instance Property "MaximumExecutionFrequency" OrganizationManagedRuleMetadataProperty where
+  type PropertyType "MaximumExecutionFrequency" OrganizationManagedRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationManagedRuleMetadataProperty {..}
+    = OrganizationManagedRuleMetadataProperty
+        {maximumExecutionFrequency = Prelude.pure newValue, ..}
+instance Property "ResourceIdScope" OrganizationManagedRuleMetadataProperty where
+  type PropertyType "ResourceIdScope" OrganizationManagedRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationManagedRuleMetadataProperty {..}
+    = OrganizationManagedRuleMetadataProperty
+        {resourceIdScope = Prelude.pure newValue, ..}
+instance Property "ResourceTypesScope" OrganizationManagedRuleMetadataProperty where
+  type PropertyType "ResourceTypesScope" OrganizationManagedRuleMetadataProperty = ValueList Prelude.Text
+  set newValue OrganizationManagedRuleMetadataProperty {..}
+    = OrganizationManagedRuleMetadataProperty
+        {resourceTypesScope = Prelude.pure newValue, ..}
+instance Property "RuleIdentifier" OrganizationManagedRuleMetadataProperty where
+  type PropertyType "RuleIdentifier" OrganizationManagedRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationManagedRuleMetadataProperty {..}
+    = OrganizationManagedRuleMetadataProperty
+        {ruleIdentifier = newValue, ..}
+instance Property "TagKeyScope" OrganizationManagedRuleMetadataProperty where
+  type PropertyType "TagKeyScope" OrganizationManagedRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationManagedRuleMetadataProperty {..}
+    = OrganizationManagedRuleMetadataProperty
+        {tagKeyScope = Prelude.pure newValue, ..}
+instance Property "TagValueScope" OrganizationManagedRuleMetadataProperty where
+  type PropertyType "TagValueScope" OrganizationManagedRuleMetadataProperty = Value Prelude.Text
+  set newValue OrganizationManagedRuleMetadataProperty {..}
+    = OrganizationManagedRuleMetadataProperty
+        {tagValueScope = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationManagedRuleMetadataProperty.hs-boot b/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationManagedRuleMetadataProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/OrganizationConfigRule/OrganizationManagedRuleMetadataProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.OrganizationConfigRule.OrganizationManagedRuleMetadataProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OrganizationManagedRuleMetadataProperty :: Prelude.Type
+instance ToResourceProperties OrganizationManagedRuleMetadataProperty
+instance Prelude.Eq OrganizationManagedRuleMetadataProperty
+instance Prelude.Show OrganizationManagedRuleMetadataProperty
+instance JSON.ToJSON OrganizationManagedRuleMetadataProperty
diff --git a/gen/Stratosphere/Config/OrganizationConformancePack.hs b/gen/Stratosphere/Config/OrganizationConformancePack.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/OrganizationConformancePack.hs
@@ -0,0 +1,106 @@
+module Stratosphere.Config.OrganizationConformancePack (
+        module Exports, OrganizationConformancePack(..),
+        mkOrganizationConformancePack
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Config.OrganizationConformancePack.ConformancePackInputParameterProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OrganizationConformancePack
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html>
+    OrganizationConformancePack {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html#cfn-config-organizationconformancepack-conformancepackinputparameters>
+                                 conformancePackInputParameters :: (Prelude.Maybe [ConformancePackInputParameterProperty]),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html#cfn-config-organizationconformancepack-deliverys3bucket>
+                                 deliveryS3Bucket :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html#cfn-config-organizationconformancepack-deliverys3keyprefix>
+                                 deliveryS3KeyPrefix :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html#cfn-config-organizationconformancepack-excludedaccounts>
+                                 excludedAccounts :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html#cfn-config-organizationconformancepack-organizationconformancepackname>
+                                 organizationConformancePackName :: (Value Prelude.Text),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html#cfn-config-organizationconformancepack-templatebody>
+                                 templateBody :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html#cfn-config-organizationconformancepack-templates3uri>
+                                 templateS3Uri :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOrganizationConformancePack ::
+  Value Prelude.Text -> OrganizationConformancePack
+mkOrganizationConformancePack organizationConformancePackName
+  = OrganizationConformancePack
+      {haddock_workaround_ = (),
+       organizationConformancePackName = organizationConformancePackName,
+       conformancePackInputParameters = Prelude.Nothing,
+       deliveryS3Bucket = Prelude.Nothing,
+       deliveryS3KeyPrefix = Prelude.Nothing,
+       excludedAccounts = Prelude.Nothing, templateBody = Prelude.Nothing,
+       templateS3Uri = Prelude.Nothing}
+instance ToResourceProperties OrganizationConformancePack where
+  toResourceProperties OrganizationConformancePack {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::OrganizationConformancePack",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["OrganizationConformancePackName"
+                              JSON..= organizationConformancePackName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ConformancePackInputParameters"
+                                 Prelude.<$> conformancePackInputParameters,
+                               (JSON..=) "DeliveryS3Bucket" Prelude.<$> deliveryS3Bucket,
+                               (JSON..=) "DeliveryS3KeyPrefix" Prelude.<$> deliveryS3KeyPrefix,
+                               (JSON..=) "ExcludedAccounts" Prelude.<$> excludedAccounts,
+                               (JSON..=) "TemplateBody" Prelude.<$> templateBody,
+                               (JSON..=) "TemplateS3Uri" Prelude.<$> templateS3Uri]))}
+instance JSON.ToJSON OrganizationConformancePack where
+  toJSON OrganizationConformancePack {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["OrganizationConformancePackName"
+                 JSON..= organizationConformancePackName]
+              (Prelude.catMaybes
+                 [(JSON..=) "ConformancePackInputParameters"
+                    Prelude.<$> conformancePackInputParameters,
+                  (JSON..=) "DeliveryS3Bucket" Prelude.<$> deliveryS3Bucket,
+                  (JSON..=) "DeliveryS3KeyPrefix" Prelude.<$> deliveryS3KeyPrefix,
+                  (JSON..=) "ExcludedAccounts" Prelude.<$> excludedAccounts,
+                  (JSON..=) "TemplateBody" Prelude.<$> templateBody,
+                  (JSON..=) "TemplateS3Uri" Prelude.<$> templateS3Uri])))
+instance Property "ConformancePackInputParameters" OrganizationConformancePack where
+  type PropertyType "ConformancePackInputParameters" OrganizationConformancePack = [ConformancePackInputParameterProperty]
+  set newValue OrganizationConformancePack {..}
+    = OrganizationConformancePack
+        {conformancePackInputParameters = Prelude.pure newValue, ..}
+instance Property "DeliveryS3Bucket" OrganizationConformancePack where
+  type PropertyType "DeliveryS3Bucket" OrganizationConformancePack = Value Prelude.Text
+  set newValue OrganizationConformancePack {..}
+    = OrganizationConformancePack
+        {deliveryS3Bucket = Prelude.pure newValue, ..}
+instance Property "DeliveryS3KeyPrefix" OrganizationConformancePack where
+  type PropertyType "DeliveryS3KeyPrefix" OrganizationConformancePack = Value Prelude.Text
+  set newValue OrganizationConformancePack {..}
+    = OrganizationConformancePack
+        {deliveryS3KeyPrefix = Prelude.pure newValue, ..}
+instance Property "ExcludedAccounts" OrganizationConformancePack where
+  type PropertyType "ExcludedAccounts" OrganizationConformancePack = ValueList Prelude.Text
+  set newValue OrganizationConformancePack {..}
+    = OrganizationConformancePack
+        {excludedAccounts = Prelude.pure newValue, ..}
+instance Property "OrganizationConformancePackName" OrganizationConformancePack where
+  type PropertyType "OrganizationConformancePackName" OrganizationConformancePack = Value Prelude.Text
+  set newValue OrganizationConformancePack {..}
+    = OrganizationConformancePack
+        {organizationConformancePackName = newValue, ..}
+instance Property "TemplateBody" OrganizationConformancePack where
+  type PropertyType "TemplateBody" OrganizationConformancePack = Value Prelude.Text
+  set newValue OrganizationConformancePack {..}
+    = OrganizationConformancePack
+        {templateBody = Prelude.pure newValue, ..}
+instance Property "TemplateS3Uri" OrganizationConformancePack where
+  type PropertyType "TemplateS3Uri" OrganizationConformancePack = Value Prelude.Text
+  set newValue OrganizationConformancePack {..}
+    = OrganizationConformancePack
+        {templateS3Uri = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/OrganizationConformancePack/ConformancePackInputParameterProperty.hs b/gen/Stratosphere/Config/OrganizationConformancePack/ConformancePackInputParameterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/OrganizationConformancePack/ConformancePackInputParameterProperty.hs
@@ -0,0 +1,48 @@
+module Stratosphere.Config.OrganizationConformancePack.ConformancePackInputParameterProperty (
+        ConformancePackInputParameterProperty(..),
+        mkConformancePackInputParameterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ConformancePackInputParameterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconformancepack-conformancepackinputparameter.html>
+    ConformancePackInputParameterProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconformancepack-conformancepackinputparameter.html#cfn-config-organizationconformancepack-conformancepackinputparameter-parametername>
+                                           parameterName :: (Value Prelude.Text),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconformancepack-conformancepackinputparameter.html#cfn-config-organizationconformancepack-conformancepackinputparameter-parametervalue>
+                                           parameterValue :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConformancePackInputParameterProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> ConformancePackInputParameterProperty
+mkConformancePackInputParameterProperty
+  parameterName
+  parameterValue
+  = ConformancePackInputParameterProperty
+      {haddock_workaround_ = (), parameterName = parameterName,
+       parameterValue = parameterValue}
+instance ToResourceProperties ConformancePackInputParameterProperty where
+  toResourceProperties ConformancePackInputParameterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::OrganizationConformancePack.ConformancePackInputParameter",
+         supportsTags = Prelude.False,
+         properties = ["ParameterName" JSON..= parameterName,
+                       "ParameterValue" JSON..= parameterValue]}
+instance JSON.ToJSON ConformancePackInputParameterProperty where
+  toJSON ConformancePackInputParameterProperty {..}
+    = JSON.object
+        ["ParameterName" JSON..= parameterName,
+         "ParameterValue" JSON..= parameterValue]
+instance Property "ParameterName" ConformancePackInputParameterProperty where
+  type PropertyType "ParameterName" ConformancePackInputParameterProperty = Value Prelude.Text
+  set newValue ConformancePackInputParameterProperty {..}
+    = ConformancePackInputParameterProperty
+        {parameterName = newValue, ..}
+instance Property "ParameterValue" ConformancePackInputParameterProperty where
+  type PropertyType "ParameterValue" ConformancePackInputParameterProperty = Value Prelude.Text
+  set newValue ConformancePackInputParameterProperty {..}
+    = ConformancePackInputParameterProperty
+        {parameterValue = newValue, ..}
diff --git a/gen/Stratosphere/Config/OrganizationConformancePack/ConformancePackInputParameterProperty.hs-boot b/gen/Stratosphere/Config/OrganizationConformancePack/ConformancePackInputParameterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/OrganizationConformancePack/ConformancePackInputParameterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.OrganizationConformancePack.ConformancePackInputParameterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConformancePackInputParameterProperty :: Prelude.Type
+instance ToResourceProperties ConformancePackInputParameterProperty
+instance Prelude.Eq ConformancePackInputParameterProperty
+instance Prelude.Show ConformancePackInputParameterProperty
+instance JSON.ToJSON ConformancePackInputParameterProperty
diff --git a/gen/Stratosphere/Config/RemediationConfiguration.hs b/gen/Stratosphere/Config/RemediationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/RemediationConfiguration.hs
@@ -0,0 +1,126 @@
+module Stratosphere.Config.RemediationConfiguration (
+        module Exports, RemediationConfiguration(..),
+        mkRemediationConfiguration
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Config.RemediationConfiguration.ExecutionControlsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RemediationConfiguration
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html>
+    RemediationConfiguration {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-automatic>
+                              automatic :: (Prelude.Maybe (Value Prelude.Bool)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-configrulename>
+                              configRuleName :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-executioncontrols>
+                              executionControls :: (Prelude.Maybe ExecutionControlsProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-maximumautomaticattempts>
+                              maximumAutomaticAttempts :: (Prelude.Maybe (Value Prelude.Integer)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-parameters>
+                              parameters :: (Prelude.Maybe JSON.Object),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-resourcetype>
+                              resourceType :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-retryattemptseconds>
+                              retryAttemptSeconds :: (Prelude.Maybe (Value Prelude.Integer)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-targetid>
+                              targetId :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-targettype>
+                              targetType :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-targetversion>
+                              targetVersion :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRemediationConfiguration ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> RemediationConfiguration
+mkRemediationConfiguration configRuleName targetId targetType
+  = RemediationConfiguration
+      {haddock_workaround_ = (), configRuleName = configRuleName,
+       targetId = targetId, targetType = targetType,
+       automatic = Prelude.Nothing, executionControls = Prelude.Nothing,
+       maximumAutomaticAttempts = Prelude.Nothing,
+       parameters = Prelude.Nothing, resourceType = Prelude.Nothing,
+       retryAttemptSeconds = Prelude.Nothing,
+       targetVersion = Prelude.Nothing}
+instance ToResourceProperties RemediationConfiguration where
+  toResourceProperties RemediationConfiguration {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::RemediationConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ConfigRuleName" JSON..= configRuleName,
+                            "TargetId" JSON..= targetId, "TargetType" JSON..= targetType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Automatic" Prelude.<$> automatic,
+                               (JSON..=) "ExecutionControls" Prelude.<$> executionControls,
+                               (JSON..=) "MaximumAutomaticAttempts"
+                                 Prelude.<$> maximumAutomaticAttempts,
+                               (JSON..=) "Parameters" Prelude.<$> parameters,
+                               (JSON..=) "ResourceType" Prelude.<$> resourceType,
+                               (JSON..=) "RetryAttemptSeconds" Prelude.<$> retryAttemptSeconds,
+                               (JSON..=) "TargetVersion" Prelude.<$> targetVersion]))}
+instance JSON.ToJSON RemediationConfiguration where
+  toJSON RemediationConfiguration {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ConfigRuleName" JSON..= configRuleName,
+               "TargetId" JSON..= targetId, "TargetType" JSON..= targetType]
+              (Prelude.catMaybes
+                 [(JSON..=) "Automatic" Prelude.<$> automatic,
+                  (JSON..=) "ExecutionControls" Prelude.<$> executionControls,
+                  (JSON..=) "MaximumAutomaticAttempts"
+                    Prelude.<$> maximumAutomaticAttempts,
+                  (JSON..=) "Parameters" Prelude.<$> parameters,
+                  (JSON..=) "ResourceType" Prelude.<$> resourceType,
+                  (JSON..=) "RetryAttemptSeconds" Prelude.<$> retryAttemptSeconds,
+                  (JSON..=) "TargetVersion" Prelude.<$> targetVersion])))
+instance Property "Automatic" RemediationConfiguration where
+  type PropertyType "Automatic" RemediationConfiguration = Value Prelude.Bool
+  set newValue RemediationConfiguration {..}
+    = RemediationConfiguration {automatic = Prelude.pure newValue, ..}
+instance Property "ConfigRuleName" RemediationConfiguration where
+  type PropertyType "ConfigRuleName" RemediationConfiguration = Value Prelude.Text
+  set newValue RemediationConfiguration {..}
+    = RemediationConfiguration {configRuleName = newValue, ..}
+instance Property "ExecutionControls" RemediationConfiguration where
+  type PropertyType "ExecutionControls" RemediationConfiguration = ExecutionControlsProperty
+  set newValue RemediationConfiguration {..}
+    = RemediationConfiguration
+        {executionControls = Prelude.pure newValue, ..}
+instance Property "MaximumAutomaticAttempts" RemediationConfiguration where
+  type PropertyType "MaximumAutomaticAttempts" RemediationConfiguration = Value Prelude.Integer
+  set newValue RemediationConfiguration {..}
+    = RemediationConfiguration
+        {maximumAutomaticAttempts = Prelude.pure newValue, ..}
+instance Property "Parameters" RemediationConfiguration where
+  type PropertyType "Parameters" RemediationConfiguration = JSON.Object
+  set newValue RemediationConfiguration {..}
+    = RemediationConfiguration {parameters = Prelude.pure newValue, ..}
+instance Property "ResourceType" RemediationConfiguration where
+  type PropertyType "ResourceType" RemediationConfiguration = Value Prelude.Text
+  set newValue RemediationConfiguration {..}
+    = RemediationConfiguration
+        {resourceType = Prelude.pure newValue, ..}
+instance Property "RetryAttemptSeconds" RemediationConfiguration where
+  type PropertyType "RetryAttemptSeconds" RemediationConfiguration = Value Prelude.Integer
+  set newValue RemediationConfiguration {..}
+    = RemediationConfiguration
+        {retryAttemptSeconds = Prelude.pure newValue, ..}
+instance Property "TargetId" RemediationConfiguration where
+  type PropertyType "TargetId" RemediationConfiguration = Value Prelude.Text
+  set newValue RemediationConfiguration {..}
+    = RemediationConfiguration {targetId = newValue, ..}
+instance Property "TargetType" RemediationConfiguration where
+  type PropertyType "TargetType" RemediationConfiguration = Value Prelude.Text
+  set newValue RemediationConfiguration {..}
+    = RemediationConfiguration {targetType = newValue, ..}
+instance Property "TargetVersion" RemediationConfiguration where
+  type PropertyType "TargetVersion" RemediationConfiguration = Value Prelude.Text
+  set newValue RemediationConfiguration {..}
+    = RemediationConfiguration
+        {targetVersion = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/RemediationConfiguration/ExecutionControlsProperty.hs b/gen/Stratosphere/Config/RemediationConfiguration/ExecutionControlsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/RemediationConfiguration/ExecutionControlsProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.Config.RemediationConfiguration.ExecutionControlsProperty (
+        module Exports, ExecutionControlsProperty(..),
+        mkExecutionControlsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Config.RemediationConfiguration.SsmControlsProperty as Exports
+import Stratosphere.ResourceProperties
+data ExecutionControlsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-executioncontrols.html>
+    ExecutionControlsProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-executioncontrols.html#cfn-config-remediationconfiguration-executioncontrols-ssmcontrols>
+                               ssmControls :: (Prelude.Maybe SsmControlsProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkExecutionControlsProperty :: ExecutionControlsProperty
+mkExecutionControlsProperty
+  = ExecutionControlsProperty
+      {haddock_workaround_ = (), ssmControls = Prelude.Nothing}
+instance ToResourceProperties ExecutionControlsProperty where
+  toResourceProperties ExecutionControlsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::RemediationConfiguration.ExecutionControls",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "SsmControls" Prelude.<$> ssmControls])}
+instance JSON.ToJSON ExecutionControlsProperty where
+  toJSON ExecutionControlsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "SsmControls" Prelude.<$> ssmControls]))
+instance Property "SsmControls" ExecutionControlsProperty where
+  type PropertyType "SsmControls" ExecutionControlsProperty = SsmControlsProperty
+  set newValue ExecutionControlsProperty {..}
+    = ExecutionControlsProperty
+        {ssmControls = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/RemediationConfiguration/ExecutionControlsProperty.hs-boot b/gen/Stratosphere/Config/RemediationConfiguration/ExecutionControlsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/RemediationConfiguration/ExecutionControlsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.RemediationConfiguration.ExecutionControlsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ExecutionControlsProperty :: Prelude.Type
+instance ToResourceProperties ExecutionControlsProperty
+instance Prelude.Eq ExecutionControlsProperty
+instance Prelude.Show ExecutionControlsProperty
+instance JSON.ToJSON ExecutionControlsProperty
diff --git a/gen/Stratosphere/Config/RemediationConfiguration/RemediationParameterValueProperty.hs b/gen/Stratosphere/Config/RemediationConfiguration/RemediationParameterValueProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/RemediationConfiguration/RemediationParameterValueProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.Config.RemediationConfiguration.RemediationParameterValueProperty (
+        module Exports, RemediationParameterValueProperty(..),
+        mkRemediationParameterValueProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Config.RemediationConfiguration.ResourceValueProperty as Exports
+import {-# SOURCE #-} Stratosphere.Config.RemediationConfiguration.StaticValueProperty as Exports
+import Stratosphere.ResourceProperties
+data RemediationParameterValueProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-remediationparametervalue.html>
+    RemediationParameterValueProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-remediationparametervalue.html#cfn-config-remediationconfiguration-remediationparametervalue-resourcevalue>
+                                       resourceValue :: (Prelude.Maybe ResourceValueProperty),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-remediationparametervalue.html#cfn-config-remediationconfiguration-remediationparametervalue-staticvalue>
+                                       staticValue :: (Prelude.Maybe StaticValueProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRemediationParameterValueProperty ::
+  RemediationParameterValueProperty
+mkRemediationParameterValueProperty
+  = RemediationParameterValueProperty
+      {haddock_workaround_ = (), resourceValue = Prelude.Nothing,
+       staticValue = Prelude.Nothing}
+instance ToResourceProperties RemediationParameterValueProperty where
+  toResourceProperties RemediationParameterValueProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::RemediationConfiguration.RemediationParameterValue",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ResourceValue" Prelude.<$> resourceValue,
+                            (JSON..=) "StaticValue" Prelude.<$> staticValue])}
+instance JSON.ToJSON RemediationParameterValueProperty where
+  toJSON RemediationParameterValueProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ResourceValue" Prelude.<$> resourceValue,
+               (JSON..=) "StaticValue" Prelude.<$> staticValue]))
+instance Property "ResourceValue" RemediationParameterValueProperty where
+  type PropertyType "ResourceValue" RemediationParameterValueProperty = ResourceValueProperty
+  set newValue RemediationParameterValueProperty {..}
+    = RemediationParameterValueProperty
+        {resourceValue = Prelude.pure newValue, ..}
+instance Property "StaticValue" RemediationParameterValueProperty where
+  type PropertyType "StaticValue" RemediationParameterValueProperty = StaticValueProperty
+  set newValue RemediationParameterValueProperty {..}
+    = RemediationParameterValueProperty
+        {staticValue = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/RemediationConfiguration/RemediationParameterValueProperty.hs-boot b/gen/Stratosphere/Config/RemediationConfiguration/RemediationParameterValueProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/RemediationConfiguration/RemediationParameterValueProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.RemediationConfiguration.RemediationParameterValueProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RemediationParameterValueProperty :: Prelude.Type
+instance ToResourceProperties RemediationParameterValueProperty
+instance Prelude.Eq RemediationParameterValueProperty
+instance Prelude.Show RemediationParameterValueProperty
+instance JSON.ToJSON RemediationParameterValueProperty
diff --git a/gen/Stratosphere/Config/RemediationConfiguration/ResourceValueProperty.hs b/gen/Stratosphere/Config/RemediationConfiguration/ResourceValueProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/RemediationConfiguration/ResourceValueProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.Config.RemediationConfiguration.ResourceValueProperty (
+        ResourceValueProperty(..), mkResourceValueProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ResourceValueProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-resourcevalue.html>
+    ResourceValueProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-resourcevalue.html#cfn-config-remediationconfiguration-resourcevalue-value>
+                           value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkResourceValueProperty :: ResourceValueProperty
+mkResourceValueProperty
+  = ResourceValueProperty
+      {haddock_workaround_ = (), value = Prelude.Nothing}
+instance ToResourceProperties ResourceValueProperty where
+  toResourceProperties ResourceValueProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::RemediationConfiguration.ResourceValue",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON ResourceValueProperty where
+  toJSON ResourceValueProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Value" Prelude.<$> value]))
+instance Property "Value" ResourceValueProperty where
+  type PropertyType "Value" ResourceValueProperty = Value Prelude.Text
+  set newValue ResourceValueProperty {..}
+    = ResourceValueProperty {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/RemediationConfiguration/ResourceValueProperty.hs-boot b/gen/Stratosphere/Config/RemediationConfiguration/ResourceValueProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/RemediationConfiguration/ResourceValueProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.RemediationConfiguration.ResourceValueProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ResourceValueProperty :: Prelude.Type
+instance ToResourceProperties ResourceValueProperty
+instance Prelude.Eq ResourceValueProperty
+instance Prelude.Show ResourceValueProperty
+instance JSON.ToJSON ResourceValueProperty
diff --git a/gen/Stratosphere/Config/RemediationConfiguration/SsmControlsProperty.hs b/gen/Stratosphere/Config/RemediationConfiguration/SsmControlsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/RemediationConfiguration/SsmControlsProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.Config.RemediationConfiguration.SsmControlsProperty (
+        SsmControlsProperty(..), mkSsmControlsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SsmControlsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-ssmcontrols.html>
+    SsmControlsProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-ssmcontrols.html#cfn-config-remediationconfiguration-ssmcontrols-concurrentexecutionratepercentage>
+                         concurrentExecutionRatePercentage :: (Prelude.Maybe (Value Prelude.Integer)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-ssmcontrols.html#cfn-config-remediationconfiguration-ssmcontrols-errorpercentage>
+                         errorPercentage :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSsmControlsProperty :: SsmControlsProperty
+mkSsmControlsProperty
+  = SsmControlsProperty
+      {haddock_workaround_ = (),
+       concurrentExecutionRatePercentage = Prelude.Nothing,
+       errorPercentage = Prelude.Nothing}
+instance ToResourceProperties SsmControlsProperty where
+  toResourceProperties SsmControlsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::RemediationConfiguration.SsmControls",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ConcurrentExecutionRatePercentage"
+                              Prelude.<$> concurrentExecutionRatePercentage,
+                            (JSON..=) "ErrorPercentage" Prelude.<$> errorPercentage])}
+instance JSON.ToJSON SsmControlsProperty where
+  toJSON SsmControlsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ConcurrentExecutionRatePercentage"
+                 Prelude.<$> concurrentExecutionRatePercentage,
+               (JSON..=) "ErrorPercentage" Prelude.<$> errorPercentage]))
+instance Property "ConcurrentExecutionRatePercentage" SsmControlsProperty where
+  type PropertyType "ConcurrentExecutionRatePercentage" SsmControlsProperty = Value Prelude.Integer
+  set newValue SsmControlsProperty {..}
+    = SsmControlsProperty
+        {concurrentExecutionRatePercentage = Prelude.pure newValue, ..}
+instance Property "ErrorPercentage" SsmControlsProperty where
+  type PropertyType "ErrorPercentage" SsmControlsProperty = Value Prelude.Integer
+  set newValue SsmControlsProperty {..}
+    = SsmControlsProperty {errorPercentage = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/RemediationConfiguration/SsmControlsProperty.hs-boot b/gen/Stratosphere/Config/RemediationConfiguration/SsmControlsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/RemediationConfiguration/SsmControlsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.RemediationConfiguration.SsmControlsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SsmControlsProperty :: Prelude.Type
+instance ToResourceProperties SsmControlsProperty
+instance Prelude.Eq SsmControlsProperty
+instance Prelude.Show SsmControlsProperty
+instance JSON.ToJSON SsmControlsProperty
diff --git a/gen/Stratosphere/Config/RemediationConfiguration/StaticValueProperty.hs b/gen/Stratosphere/Config/RemediationConfiguration/StaticValueProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/RemediationConfiguration/StaticValueProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.Config.RemediationConfiguration.StaticValueProperty (
+        StaticValueProperty(..), mkStaticValueProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data StaticValueProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-staticvalue.html>
+    StaticValueProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-staticvalue.html#cfn-config-remediationconfiguration-staticvalue-values>
+                         values :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkStaticValueProperty :: StaticValueProperty
+mkStaticValueProperty
+  = StaticValueProperty
+      {haddock_workaround_ = (), values = Prelude.Nothing}
+instance ToResourceProperties StaticValueProperty where
+  toResourceProperties StaticValueProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::RemediationConfiguration.StaticValue",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Values" Prelude.<$> values])}
+instance JSON.ToJSON StaticValueProperty where
+  toJSON StaticValueProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Values" Prelude.<$> values]))
+instance Property "Values" StaticValueProperty where
+  type PropertyType "Values" StaticValueProperty = ValueList Prelude.Text
+  set newValue StaticValueProperty {..}
+    = StaticValueProperty {values = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Config/RemediationConfiguration/StaticValueProperty.hs-boot b/gen/Stratosphere/Config/RemediationConfiguration/StaticValueProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/RemediationConfiguration/StaticValueProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Config.RemediationConfiguration.StaticValueProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data StaticValueProperty :: Prelude.Type
+instance ToResourceProperties StaticValueProperty
+instance Prelude.Eq StaticValueProperty
+instance Prelude.Show StaticValueProperty
+instance JSON.ToJSON StaticValueProperty
diff --git a/gen/Stratosphere/Config/StoredQuery.hs b/gen/Stratosphere/Config/StoredQuery.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Config/StoredQuery.hs
@@ -0,0 +1,65 @@
+module Stratosphere.Config.StoredQuery (
+        StoredQuery(..), mkStoredQuery
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data StoredQuery
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html>
+    StoredQuery {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html#cfn-config-storedquery-querydescription>
+                 queryDescription :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html#cfn-config-storedquery-queryexpression>
+                 queryExpression :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html#cfn-config-storedquery-queryname>
+                 queryName :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html#cfn-config-storedquery-tags>
+                 tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkStoredQuery ::
+  Value Prelude.Text -> Value Prelude.Text -> StoredQuery
+mkStoredQuery queryExpression queryName
+  = StoredQuery
+      {haddock_workaround_ = (), queryExpression = queryExpression,
+       queryName = queryName, queryDescription = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties StoredQuery where
+  toResourceProperties StoredQuery {..}
+    = ResourceProperties
+        {awsType = "AWS::Config::StoredQuery", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["QueryExpression" JSON..= queryExpression,
+                            "QueryName" JSON..= queryName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "QueryDescription" Prelude.<$> queryDescription,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON StoredQuery where
+  toJSON StoredQuery {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["QueryExpression" JSON..= queryExpression,
+               "QueryName" JSON..= queryName]
+              (Prelude.catMaybes
+                 [(JSON..=) "QueryDescription" Prelude.<$> queryDescription,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "QueryDescription" StoredQuery where
+  type PropertyType "QueryDescription" StoredQuery = Value Prelude.Text
+  set newValue StoredQuery {..}
+    = StoredQuery {queryDescription = Prelude.pure newValue, ..}
+instance Property "QueryExpression" StoredQuery where
+  type PropertyType "QueryExpression" StoredQuery = Value Prelude.Text
+  set newValue StoredQuery {..}
+    = StoredQuery {queryExpression = newValue, ..}
+instance Property "QueryName" StoredQuery where
+  type PropertyType "QueryName" StoredQuery = Value Prelude.Text
+  set newValue StoredQuery {..}
+    = StoredQuery {queryName = newValue, ..}
+instance Property "Tags" StoredQuery where
+  type PropertyType "Tags" StoredQuery = [Tag]
+  set newValue StoredQuery {..}
+    = StoredQuery {tags = Prelude.pure newValue, ..}
diff --git a/stratosphere-config.cabal b/stratosphere-config.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-config.cabal
@@ -0,0 +1,107 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.38.2.
+--
+-- see: https://github.com/sol/hpack
+
+name:           stratosphere-config
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS Config.
+description:    Integration into stratosphere to generate resources and properties for AWS Config
+category:       AWS, Cloud, Config
+stability:      experimental
+homepage:       https://github.com/mbj/stratosphere#readme
+bug-reports:    https://github.com/mbj/stratosphere/issues
+maintainer:     Markus Schirp
+license:        MIT
+license-file:   LICENSE.md
+build-type:     Simple
+
+source-repository head
+  type: git
+  location: https://github.com/mbj/stratosphere
+
+flag development
+  description: Run GHC with development flags
+  manual: True
+  default: False
+
+library
+  exposed-modules:
+      Stratosphere.Config.AggregationAuthorization
+      Stratosphere.Config.ConfigRule
+      Stratosphere.Config.ConfigRule.ComplianceProperty
+      Stratosphere.Config.ConfigRule.CustomPolicyDetailsProperty
+      Stratosphere.Config.ConfigRule.EvaluationModeConfigurationProperty
+      Stratosphere.Config.ConfigRule.ScopeProperty
+      Stratosphere.Config.ConfigRule.SourceDetailProperty
+      Stratosphere.Config.ConfigRule.SourceProperty
+      Stratosphere.Config.ConfigurationAggregator
+      Stratosphere.Config.ConfigurationAggregator.AccountAggregationSourceProperty
+      Stratosphere.Config.ConfigurationAggregator.OrganizationAggregationSourceProperty
+      Stratosphere.Config.ConfigurationRecorder
+      Stratosphere.Config.ConfigurationRecorder.ExclusionByResourceTypesProperty
+      Stratosphere.Config.ConfigurationRecorder.RecordingGroupProperty
+      Stratosphere.Config.ConfigurationRecorder.RecordingModeOverrideProperty
+      Stratosphere.Config.ConfigurationRecorder.RecordingModeProperty
+      Stratosphere.Config.ConfigurationRecorder.RecordingStrategyProperty
+      Stratosphere.Config.ConformancePack
+      Stratosphere.Config.ConformancePack.ConformancePackInputParameterProperty
+      Stratosphere.Config.ConformancePack.TemplateSSMDocumentDetailsProperty
+      Stratosphere.Config.DeliveryChannel
+      Stratosphere.Config.DeliveryChannel.ConfigSnapshotDeliveryPropertiesProperty
+      Stratosphere.Config.OrganizationConfigRule
+      Stratosphere.Config.OrganizationConfigRule.OrganizationCustomPolicyRuleMetadataProperty
+      Stratosphere.Config.OrganizationConfigRule.OrganizationCustomRuleMetadataProperty
+      Stratosphere.Config.OrganizationConfigRule.OrganizationManagedRuleMetadataProperty
+      Stratosphere.Config.OrganizationConformancePack
+      Stratosphere.Config.OrganizationConformancePack.ConformancePackInputParameterProperty
+      Stratosphere.Config.RemediationConfiguration
+      Stratosphere.Config.RemediationConfiguration.ExecutionControlsProperty
+      Stratosphere.Config.RemediationConfiguration.RemediationParameterValueProperty
+      Stratosphere.Config.RemediationConfiguration.ResourceValueProperty
+      Stratosphere.Config.RemediationConfiguration.SsmControlsProperty
+      Stratosphere.Config.RemediationConfiguration.StaticValueProperty
+      Stratosphere.Config.StoredQuery
+  other-modules:
+      Paths_stratosphere_config
+  hs-source-dirs:
+      gen
+  default-extensions:
+      DataKinds
+      DeriveGeneric
+      DerivingStrategies
+      DerivingVia
+      DuplicateRecordFields
+      FlexibleContexts
+      FlexibleInstances
+      GADTs
+      GeneralizedNewtypeDeriving
+      InstanceSigs
+      LambdaCase
+      MultiParamTypeClasses
+      NoFieldSelectors
+      NoImplicitPrelude
+      NumericUnderscores
+      OverloadedLists
+      OverloadedRecordDot
+      OverloadedStrings
+      PolyKinds
+      RecordWildCards
+      ScopedTypeVariables
+      StandaloneDeriving
+      Strict
+      TemplateHaskell
+      TupleSections
+      TypeApplications
+      TypeFamilies
+  ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-local-signatures -Wmissing-signatures -Wmonomorphism-restriction -Wredundant-constraints -fhide-source-paths -funbox-strict-fields -optP-Wno-nonportable-include-path -Wno-unused-imports
+  build-depends:
+      aeson ==2.*
+    , base >=4.8 && <4.22
+    , stratosphere ==1.0.0
+  default-language: Haskell2010
+  if flag(development)
+    ghc-options: -Werror
+  else
+    ghc-options: -Wwarn
