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/AppConfig/Application.hs b/gen/Stratosphere/AppConfig/Application.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/Application.hs
@@ -0,0 +1,55 @@
+module Stratosphere.AppConfig.Application (
+        module Exports, Application(..), mkApplication
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppConfig.Application.TagsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Application
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-application.html>
+    Application {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-application.html#cfn-appconfig-application-description>
+                 description :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-application.html#cfn-appconfig-application-name>
+                 name :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-application.html#cfn-appconfig-application-tags>
+                 tags :: (Prelude.Maybe [TagsProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApplication :: Value Prelude.Text -> Application
+mkApplication name
+  = Application
+      {haddock_workaround_ = (), name = name,
+       description = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties Application where
+  toResourceProperties Application {..}
+    = ResourceProperties
+        {awsType = "AWS::AppConfig::Application",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Application where
+  toJSON Application {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Description" Application where
+  type PropertyType "Description" Application = Value Prelude.Text
+  set newValue Application {..}
+    = Application {description = Prelude.pure newValue, ..}
+instance Property "Name" Application where
+  type PropertyType "Name" Application = Value Prelude.Text
+  set newValue Application {..} = Application {name = newValue, ..}
+instance Property "Tags" Application where
+  type PropertyType "Tags" Application = [TagsProperty]
+  set newValue Application {..}
+    = Application {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppConfig/Application/TagsProperty.hs b/gen/Stratosphere/AppConfig/Application/TagsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/Application/TagsProperty.hs
@@ -0,0 +1,36 @@
+module Stratosphere.AppConfig.Application.TagsProperty (
+        TagsProperty(..), mkTagsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TagsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-application-tags.html>
+    TagsProperty {haddock_workaround_ :: (),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-application-tags.html#cfn-appconfig-application-tags-key>
+                  key :: (Value Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-application-tags.html#cfn-appconfig-application-tags-value>
+                  value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTagsProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> TagsProperty
+mkTagsProperty key value
+  = TagsProperty {haddock_workaround_ = (), key = key, value = value}
+instance ToResourceProperties TagsProperty where
+  toResourceProperties TagsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppConfig::Application.Tags",
+         supportsTags = Prelude.False,
+         properties = ["Key" JSON..= key, "Value" JSON..= value]}
+instance JSON.ToJSON TagsProperty where
+  toJSON TagsProperty {..}
+    = JSON.object ["Key" JSON..= key, "Value" JSON..= value]
+instance Property "Key" TagsProperty where
+  type PropertyType "Key" TagsProperty = Value Prelude.Text
+  set newValue TagsProperty {..} = TagsProperty {key = newValue, ..}
+instance Property "Value" TagsProperty where
+  type PropertyType "Value" TagsProperty = Value Prelude.Text
+  set newValue TagsProperty {..}
+    = TagsProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/AppConfig/Application/TagsProperty.hs-boot b/gen/Stratosphere/AppConfig/Application/TagsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/Application/TagsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppConfig.Application.TagsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TagsProperty :: Prelude.Type
+instance ToResourceProperties TagsProperty
+instance Prelude.Eq TagsProperty
+instance Prelude.Show TagsProperty
+instance JSON.ToJSON TagsProperty
diff --git a/gen/Stratosphere/AppConfig/ConfigurationProfile.hs b/gen/Stratosphere/AppConfig/ConfigurationProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/ConfigurationProfile.hs
@@ -0,0 +1,122 @@
+module Stratosphere.AppConfig.ConfigurationProfile (
+        module Exports, ConfigurationProfile(..), mkConfigurationProfile
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppConfig.ConfigurationProfile.TagsProperty as Exports
+import {-# SOURCE #-} Stratosphere.AppConfig.ConfigurationProfile.ValidatorsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ConfigurationProfile
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html>
+    ConfigurationProfile {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-applicationid>
+                          applicationId :: (Value Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-deletionprotectioncheck>
+                          deletionProtectionCheck :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-description>
+                          description :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-kmskeyidentifier>
+                          kmsKeyIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-locationuri>
+                          locationUri :: (Value Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-name>
+                          name :: (Value Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-retrievalrolearn>
+                          retrievalRoleArn :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-tags>
+                          tags :: (Prelude.Maybe [TagsProperty]),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-type>
+                          type' :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-validators>
+                          validators :: (Prelude.Maybe [ValidatorsProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConfigurationProfile ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> ConfigurationProfile
+mkConfigurationProfile applicationId locationUri name
+  = ConfigurationProfile
+      {haddock_workaround_ = (), applicationId = applicationId,
+       locationUri = locationUri, name = name,
+       deletionProtectionCheck = Prelude.Nothing,
+       description = Prelude.Nothing, kmsKeyIdentifier = Prelude.Nothing,
+       retrievalRoleArn = Prelude.Nothing, tags = Prelude.Nothing,
+       type' = Prelude.Nothing, validators = Prelude.Nothing}
+instance ToResourceProperties ConfigurationProfile where
+  toResourceProperties ConfigurationProfile {..}
+    = ResourceProperties
+        {awsType = "AWS::AppConfig::ConfigurationProfile",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApplicationId" JSON..= applicationId,
+                            "LocationUri" JSON..= locationUri, "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DeletionProtectionCheck"
+                                 Prelude.<$> deletionProtectionCheck,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "KmsKeyIdentifier" Prelude.<$> kmsKeyIdentifier,
+                               (JSON..=) "RetrievalRoleArn" Prelude.<$> retrievalRoleArn,
+                               (JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "Type" Prelude.<$> type',
+                               (JSON..=) "Validators" Prelude.<$> validators]))}
+instance JSON.ToJSON ConfigurationProfile where
+  toJSON ConfigurationProfile {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApplicationId" JSON..= applicationId,
+               "LocationUri" JSON..= locationUri, "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "DeletionProtectionCheck"
+                    Prelude.<$> deletionProtectionCheck,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "KmsKeyIdentifier" Prelude.<$> kmsKeyIdentifier,
+                  (JSON..=) "RetrievalRoleArn" Prelude.<$> retrievalRoleArn,
+                  (JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "Type" Prelude.<$> type',
+                  (JSON..=) "Validators" Prelude.<$> validators])))
+instance Property "ApplicationId" ConfigurationProfile where
+  type PropertyType "ApplicationId" ConfigurationProfile = Value Prelude.Text
+  set newValue ConfigurationProfile {..}
+    = ConfigurationProfile {applicationId = newValue, ..}
+instance Property "DeletionProtectionCheck" ConfigurationProfile where
+  type PropertyType "DeletionProtectionCheck" ConfigurationProfile = Value Prelude.Text
+  set newValue ConfigurationProfile {..}
+    = ConfigurationProfile
+        {deletionProtectionCheck = Prelude.pure newValue, ..}
+instance Property "Description" ConfigurationProfile where
+  type PropertyType "Description" ConfigurationProfile = Value Prelude.Text
+  set newValue ConfigurationProfile {..}
+    = ConfigurationProfile {description = Prelude.pure newValue, ..}
+instance Property "KmsKeyIdentifier" ConfigurationProfile where
+  type PropertyType "KmsKeyIdentifier" ConfigurationProfile = Value Prelude.Text
+  set newValue ConfigurationProfile {..}
+    = ConfigurationProfile
+        {kmsKeyIdentifier = Prelude.pure newValue, ..}
+instance Property "LocationUri" ConfigurationProfile where
+  type PropertyType "LocationUri" ConfigurationProfile = Value Prelude.Text
+  set newValue ConfigurationProfile {..}
+    = ConfigurationProfile {locationUri = newValue, ..}
+instance Property "Name" ConfigurationProfile where
+  type PropertyType "Name" ConfigurationProfile = Value Prelude.Text
+  set newValue ConfigurationProfile {..}
+    = ConfigurationProfile {name = newValue, ..}
+instance Property "RetrievalRoleArn" ConfigurationProfile where
+  type PropertyType "RetrievalRoleArn" ConfigurationProfile = Value Prelude.Text
+  set newValue ConfigurationProfile {..}
+    = ConfigurationProfile
+        {retrievalRoleArn = Prelude.pure newValue, ..}
+instance Property "Tags" ConfigurationProfile where
+  type PropertyType "Tags" ConfigurationProfile = [TagsProperty]
+  set newValue ConfigurationProfile {..}
+    = ConfigurationProfile {tags = Prelude.pure newValue, ..}
+instance Property "Type" ConfigurationProfile where
+  type PropertyType "Type" ConfigurationProfile = Value Prelude.Text
+  set newValue ConfigurationProfile {..}
+    = ConfigurationProfile {type' = Prelude.pure newValue, ..}
+instance Property "Validators" ConfigurationProfile where
+  type PropertyType "Validators" ConfigurationProfile = [ValidatorsProperty]
+  set newValue ConfigurationProfile {..}
+    = ConfigurationProfile {validators = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppConfig/ConfigurationProfile/TagsProperty.hs b/gen/Stratosphere/AppConfig/ConfigurationProfile/TagsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/ConfigurationProfile/TagsProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.AppConfig.ConfigurationProfile.TagsProperty (
+        TagsProperty(..), mkTagsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TagsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-tags.html>
+    TagsProperty {haddock_workaround_ :: (),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-tags.html#cfn-appconfig-configurationprofile-tags-key>
+                  key :: (Prelude.Maybe (Value Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-tags.html#cfn-appconfig-configurationprofile-tags-value>
+                  value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTagsProperty :: TagsProperty
+mkTagsProperty
+  = TagsProperty
+      {haddock_workaround_ = (), key = Prelude.Nothing,
+       value = Prelude.Nothing}
+instance ToResourceProperties TagsProperty where
+  toResourceProperties TagsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppConfig::ConfigurationProfile.Tags",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Key" Prelude.<$> key,
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON TagsProperty where
+  toJSON TagsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Key" Prelude.<$> key,
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "Key" TagsProperty where
+  type PropertyType "Key" TagsProperty = Value Prelude.Text
+  set newValue TagsProperty {..}
+    = TagsProperty {key = Prelude.pure newValue, ..}
+instance Property "Value" TagsProperty where
+  type PropertyType "Value" TagsProperty = Value Prelude.Text
+  set newValue TagsProperty {..}
+    = TagsProperty {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppConfig/ConfigurationProfile/TagsProperty.hs-boot b/gen/Stratosphere/AppConfig/ConfigurationProfile/TagsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/ConfigurationProfile/TagsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppConfig.ConfigurationProfile.TagsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TagsProperty :: Prelude.Type
+instance ToResourceProperties TagsProperty
+instance Prelude.Eq TagsProperty
+instance Prelude.Show TagsProperty
+instance JSON.ToJSON TagsProperty
diff --git a/gen/Stratosphere/AppConfig/ConfigurationProfile/ValidatorsProperty.hs b/gen/Stratosphere/AppConfig/ConfigurationProfile/ValidatorsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/ConfigurationProfile/ValidatorsProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.AppConfig.ConfigurationProfile.ValidatorsProperty (
+        ValidatorsProperty(..), mkValidatorsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ValidatorsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-validators.html>
+    ValidatorsProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-validators.html#cfn-appconfig-configurationprofile-validators-content>
+                        content :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-validators.html#cfn-appconfig-configurationprofile-validators-type>
+                        type' :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkValidatorsProperty :: ValidatorsProperty
+mkValidatorsProperty
+  = ValidatorsProperty
+      {haddock_workaround_ = (), content = Prelude.Nothing,
+       type' = Prelude.Nothing}
+instance ToResourceProperties ValidatorsProperty where
+  toResourceProperties ValidatorsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppConfig::ConfigurationProfile.Validators",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Content" Prelude.<$> content,
+                            (JSON..=) "Type" Prelude.<$> type'])}
+instance JSON.ToJSON ValidatorsProperty where
+  toJSON ValidatorsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Content" Prelude.<$> content,
+               (JSON..=) "Type" Prelude.<$> type']))
+instance Property "Content" ValidatorsProperty where
+  type PropertyType "Content" ValidatorsProperty = Value Prelude.Text
+  set newValue ValidatorsProperty {..}
+    = ValidatorsProperty {content = Prelude.pure newValue, ..}
+instance Property "Type" ValidatorsProperty where
+  type PropertyType "Type" ValidatorsProperty = Value Prelude.Text
+  set newValue ValidatorsProperty {..}
+    = ValidatorsProperty {type' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppConfig/ConfigurationProfile/ValidatorsProperty.hs-boot b/gen/Stratosphere/AppConfig/ConfigurationProfile/ValidatorsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/ConfigurationProfile/ValidatorsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppConfig.ConfigurationProfile.ValidatorsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ValidatorsProperty :: Prelude.Type
+instance ToResourceProperties ValidatorsProperty
+instance Prelude.Eq ValidatorsProperty
+instance Prelude.Show ValidatorsProperty
+instance JSON.ToJSON ValidatorsProperty
diff --git a/gen/Stratosphere/AppConfig/Deployment.hs b/gen/Stratosphere/AppConfig/Deployment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/Deployment.hs
@@ -0,0 +1,122 @@
+module Stratosphere.AppConfig.Deployment (
+        module Exports, Deployment(..), mkDeployment
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppConfig.Deployment.DynamicExtensionParametersProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Deployment
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html>
+    Deployment {haddock_workaround_ :: (),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-applicationid>
+                applicationId :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-configurationprofileid>
+                configurationProfileId :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-configurationversion>
+                configurationVersion :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-deploymentstrategyid>
+                deploymentStrategyId :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-description>
+                description :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-dynamicextensionparameters>
+                dynamicExtensionParameters :: (Prelude.Maybe [DynamicExtensionParametersProperty]),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-environmentid>
+                environmentId :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-kmskeyidentifier>
+                kmsKeyIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-tags>
+                tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDeployment ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text
+        -> Value Prelude.Text -> Value Prelude.Text -> Deployment
+mkDeployment
+  applicationId
+  configurationProfileId
+  configurationVersion
+  deploymentStrategyId
+  environmentId
+  = Deployment
+      {haddock_workaround_ = (), applicationId = applicationId,
+       configurationProfileId = configurationProfileId,
+       configurationVersion = configurationVersion,
+       deploymentStrategyId = deploymentStrategyId,
+       environmentId = environmentId, description = Prelude.Nothing,
+       dynamicExtensionParameters = Prelude.Nothing,
+       kmsKeyIdentifier = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties Deployment where
+  toResourceProperties Deployment {..}
+    = ResourceProperties
+        {awsType = "AWS::AppConfig::Deployment",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApplicationId" JSON..= applicationId,
+                            "ConfigurationProfileId" JSON..= configurationProfileId,
+                            "ConfigurationVersion" JSON..= configurationVersion,
+                            "DeploymentStrategyId" JSON..= deploymentStrategyId,
+                            "EnvironmentId" JSON..= environmentId]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "DynamicExtensionParameters"
+                                 Prelude.<$> dynamicExtensionParameters,
+                               (JSON..=) "KmsKeyIdentifier" Prelude.<$> kmsKeyIdentifier,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Deployment where
+  toJSON Deployment {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApplicationId" JSON..= applicationId,
+               "ConfigurationProfileId" JSON..= configurationProfileId,
+               "ConfigurationVersion" JSON..= configurationVersion,
+               "DeploymentStrategyId" JSON..= deploymentStrategyId,
+               "EnvironmentId" JSON..= environmentId]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "DynamicExtensionParameters"
+                    Prelude.<$> dynamicExtensionParameters,
+                  (JSON..=) "KmsKeyIdentifier" Prelude.<$> kmsKeyIdentifier,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "ApplicationId" Deployment where
+  type PropertyType "ApplicationId" Deployment = Value Prelude.Text
+  set newValue Deployment {..}
+    = Deployment {applicationId = newValue, ..}
+instance Property "ConfigurationProfileId" Deployment where
+  type PropertyType "ConfigurationProfileId" Deployment = Value Prelude.Text
+  set newValue Deployment {..}
+    = Deployment {configurationProfileId = newValue, ..}
+instance Property "ConfigurationVersion" Deployment where
+  type PropertyType "ConfigurationVersion" Deployment = Value Prelude.Text
+  set newValue Deployment {..}
+    = Deployment {configurationVersion = newValue, ..}
+instance Property "DeploymentStrategyId" Deployment where
+  type PropertyType "DeploymentStrategyId" Deployment = Value Prelude.Text
+  set newValue Deployment {..}
+    = Deployment {deploymentStrategyId = newValue, ..}
+instance Property "Description" Deployment where
+  type PropertyType "Description" Deployment = Value Prelude.Text
+  set newValue Deployment {..}
+    = Deployment {description = Prelude.pure newValue, ..}
+instance Property "DynamicExtensionParameters" Deployment where
+  type PropertyType "DynamicExtensionParameters" Deployment = [DynamicExtensionParametersProperty]
+  set newValue Deployment {..}
+    = Deployment
+        {dynamicExtensionParameters = Prelude.pure newValue, ..}
+instance Property "EnvironmentId" Deployment where
+  type PropertyType "EnvironmentId" Deployment = Value Prelude.Text
+  set newValue Deployment {..}
+    = Deployment {environmentId = newValue, ..}
+instance Property "KmsKeyIdentifier" Deployment where
+  type PropertyType "KmsKeyIdentifier" Deployment = Value Prelude.Text
+  set newValue Deployment {..}
+    = Deployment {kmsKeyIdentifier = Prelude.pure newValue, ..}
+instance Property "Tags" Deployment where
+  type PropertyType "Tags" Deployment = [Tag]
+  set newValue Deployment {..}
+    = Deployment {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppConfig/Deployment/DynamicExtensionParametersProperty.hs b/gen/Stratosphere/AppConfig/Deployment/DynamicExtensionParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/Deployment/DynamicExtensionParametersProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.AppConfig.Deployment.DynamicExtensionParametersProperty (
+        DynamicExtensionParametersProperty(..),
+        mkDynamicExtensionParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DynamicExtensionParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deployment-dynamicextensionparameters.html>
+    DynamicExtensionParametersProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deployment-dynamicextensionparameters.html#cfn-appconfig-deployment-dynamicextensionparameters-extensionreference>
+                                        extensionReference :: (Prelude.Maybe (Value Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deployment-dynamicextensionparameters.html#cfn-appconfig-deployment-dynamicextensionparameters-parametername>
+                                        parameterName :: (Prelude.Maybe (Value Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deployment-dynamicextensionparameters.html#cfn-appconfig-deployment-dynamicextensionparameters-parametervalue>
+                                        parameterValue :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDynamicExtensionParametersProperty ::
+  DynamicExtensionParametersProperty
+mkDynamicExtensionParametersProperty
+  = DynamicExtensionParametersProperty
+      {haddock_workaround_ = (), extensionReference = Prelude.Nothing,
+       parameterName = Prelude.Nothing, parameterValue = Prelude.Nothing}
+instance ToResourceProperties DynamicExtensionParametersProperty where
+  toResourceProperties DynamicExtensionParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppConfig::Deployment.DynamicExtensionParameters",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ExtensionReference" Prelude.<$> extensionReference,
+                            (JSON..=) "ParameterName" Prelude.<$> parameterName,
+                            (JSON..=) "ParameterValue" Prelude.<$> parameterValue])}
+instance JSON.ToJSON DynamicExtensionParametersProperty where
+  toJSON DynamicExtensionParametersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ExtensionReference" Prelude.<$> extensionReference,
+               (JSON..=) "ParameterName" Prelude.<$> parameterName,
+               (JSON..=) "ParameterValue" Prelude.<$> parameterValue]))
+instance Property "ExtensionReference" DynamicExtensionParametersProperty where
+  type PropertyType "ExtensionReference" DynamicExtensionParametersProperty = Value Prelude.Text
+  set newValue DynamicExtensionParametersProperty {..}
+    = DynamicExtensionParametersProperty
+        {extensionReference = Prelude.pure newValue, ..}
+instance Property "ParameterName" DynamicExtensionParametersProperty where
+  type PropertyType "ParameterName" DynamicExtensionParametersProperty = Value Prelude.Text
+  set newValue DynamicExtensionParametersProperty {..}
+    = DynamicExtensionParametersProperty
+        {parameterName = Prelude.pure newValue, ..}
+instance Property "ParameterValue" DynamicExtensionParametersProperty where
+  type PropertyType "ParameterValue" DynamicExtensionParametersProperty = Value Prelude.Text
+  set newValue DynamicExtensionParametersProperty {..}
+    = DynamicExtensionParametersProperty
+        {parameterValue = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppConfig/Deployment/DynamicExtensionParametersProperty.hs-boot b/gen/Stratosphere/AppConfig/Deployment/DynamicExtensionParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/Deployment/DynamicExtensionParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppConfig.Deployment.DynamicExtensionParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DynamicExtensionParametersProperty :: Prelude.Type
+instance ToResourceProperties DynamicExtensionParametersProperty
+instance Prelude.Eq DynamicExtensionParametersProperty
+instance Prelude.Show DynamicExtensionParametersProperty
+instance JSON.ToJSON DynamicExtensionParametersProperty
diff --git a/gen/Stratosphere/AppConfig/DeploymentStrategy.hs b/gen/Stratosphere/AppConfig/DeploymentStrategy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/DeploymentStrategy.hs
@@ -0,0 +1,108 @@
+module Stratosphere.AppConfig.DeploymentStrategy (
+        DeploymentStrategy(..), mkDeploymentStrategy
+    ) 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 DeploymentStrategy
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html>
+    DeploymentStrategy {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-deploymentdurationinminutes>
+                        deploymentDurationInMinutes :: (Value Prelude.Double),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-description>
+                        description :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-finalbaketimeinminutes>
+                        finalBakeTimeInMinutes :: (Prelude.Maybe (Value Prelude.Double)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-growthfactor>
+                        growthFactor :: (Value Prelude.Double),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-growthtype>
+                        growthType :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-name>
+                        name :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-replicateto>
+                        replicateTo :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-tags>
+                        tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDeploymentStrategy ::
+  Value Prelude.Double
+  -> Value Prelude.Double
+     -> Value Prelude.Text -> Value Prelude.Text -> DeploymentStrategy
+mkDeploymentStrategy
+  deploymentDurationInMinutes
+  growthFactor
+  name
+  replicateTo
+  = DeploymentStrategy
+      {haddock_workaround_ = (),
+       deploymentDurationInMinutes = deploymentDurationInMinutes,
+       growthFactor = growthFactor, name = name,
+       replicateTo = replicateTo, description = Prelude.Nothing,
+       finalBakeTimeInMinutes = Prelude.Nothing,
+       growthType = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties DeploymentStrategy where
+  toResourceProperties DeploymentStrategy {..}
+    = ResourceProperties
+        {awsType = "AWS::AppConfig::DeploymentStrategy",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DeploymentDurationInMinutes" JSON..= deploymentDurationInMinutes,
+                            "GrowthFactor" JSON..= growthFactor, "Name" JSON..= name,
+                            "ReplicateTo" JSON..= replicateTo]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "FinalBakeTimeInMinutes"
+                                 Prelude.<$> finalBakeTimeInMinutes,
+                               (JSON..=) "GrowthType" Prelude.<$> growthType,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON DeploymentStrategy where
+  toJSON DeploymentStrategy {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DeploymentDurationInMinutes" JSON..= deploymentDurationInMinutes,
+               "GrowthFactor" JSON..= growthFactor, "Name" JSON..= name,
+               "ReplicateTo" JSON..= replicateTo]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "FinalBakeTimeInMinutes"
+                    Prelude.<$> finalBakeTimeInMinutes,
+                  (JSON..=) "GrowthType" Prelude.<$> growthType,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "DeploymentDurationInMinutes" DeploymentStrategy where
+  type PropertyType "DeploymentDurationInMinutes" DeploymentStrategy = Value Prelude.Double
+  set newValue DeploymentStrategy {..}
+    = DeploymentStrategy {deploymentDurationInMinutes = newValue, ..}
+instance Property "Description" DeploymentStrategy where
+  type PropertyType "Description" DeploymentStrategy = Value Prelude.Text
+  set newValue DeploymentStrategy {..}
+    = DeploymentStrategy {description = Prelude.pure newValue, ..}
+instance Property "FinalBakeTimeInMinutes" DeploymentStrategy where
+  type PropertyType "FinalBakeTimeInMinutes" DeploymentStrategy = Value Prelude.Double
+  set newValue DeploymentStrategy {..}
+    = DeploymentStrategy
+        {finalBakeTimeInMinutes = Prelude.pure newValue, ..}
+instance Property "GrowthFactor" DeploymentStrategy where
+  type PropertyType "GrowthFactor" DeploymentStrategy = Value Prelude.Double
+  set newValue DeploymentStrategy {..}
+    = DeploymentStrategy {growthFactor = newValue, ..}
+instance Property "GrowthType" DeploymentStrategy where
+  type PropertyType "GrowthType" DeploymentStrategy = Value Prelude.Text
+  set newValue DeploymentStrategy {..}
+    = DeploymentStrategy {growthType = Prelude.pure newValue, ..}
+instance Property "Name" DeploymentStrategy where
+  type PropertyType "Name" DeploymentStrategy = Value Prelude.Text
+  set newValue DeploymentStrategy {..}
+    = DeploymentStrategy {name = newValue, ..}
+instance Property "ReplicateTo" DeploymentStrategy where
+  type PropertyType "ReplicateTo" DeploymentStrategy = Value Prelude.Text
+  set newValue DeploymentStrategy {..}
+    = DeploymentStrategy {replicateTo = newValue, ..}
+instance Property "Tags" DeploymentStrategy where
+  type PropertyType "Tags" DeploymentStrategy = [Tag]
+  set newValue DeploymentStrategy {..}
+    = DeploymentStrategy {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppConfig/Environment.hs b/gen/Stratosphere/AppConfig/Environment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/Environment.hs
@@ -0,0 +1,83 @@
+module Stratosphere.AppConfig.Environment (
+        module Exports, Environment(..), mkEnvironment
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppConfig.Environment.MonitorProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Environment
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html>
+    Environment {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-applicationid>
+                 applicationId :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-deletionprotectioncheck>
+                 deletionProtectionCheck :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-description>
+                 description :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-monitors>
+                 monitors :: (Prelude.Maybe [MonitorProperty]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-name>
+                 name :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-tags>
+                 tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironment ::
+  Value Prelude.Text -> Value Prelude.Text -> Environment
+mkEnvironment applicationId name
+  = Environment
+      {haddock_workaround_ = (), applicationId = applicationId,
+       name = name, deletionProtectionCheck = Prelude.Nothing,
+       description = Prelude.Nothing, monitors = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties Environment where
+  toResourceProperties Environment {..}
+    = ResourceProperties
+        {awsType = "AWS::AppConfig::Environment",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApplicationId" JSON..= applicationId, "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DeletionProtectionCheck"
+                                 Prelude.<$> deletionProtectionCheck,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Monitors" Prelude.<$> monitors,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Environment where
+  toJSON Environment {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApplicationId" JSON..= applicationId, "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "DeletionProtectionCheck"
+                    Prelude.<$> deletionProtectionCheck,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Monitors" Prelude.<$> monitors,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "ApplicationId" Environment where
+  type PropertyType "ApplicationId" Environment = Value Prelude.Text
+  set newValue Environment {..}
+    = Environment {applicationId = newValue, ..}
+instance Property "DeletionProtectionCheck" Environment where
+  type PropertyType "DeletionProtectionCheck" Environment = Value Prelude.Text
+  set newValue Environment {..}
+    = Environment {deletionProtectionCheck = Prelude.pure newValue, ..}
+instance Property "Description" Environment where
+  type PropertyType "Description" Environment = Value Prelude.Text
+  set newValue Environment {..}
+    = Environment {description = Prelude.pure newValue, ..}
+instance Property "Monitors" Environment where
+  type PropertyType "Monitors" Environment = [MonitorProperty]
+  set newValue Environment {..}
+    = Environment {monitors = Prelude.pure newValue, ..}
+instance Property "Name" Environment where
+  type PropertyType "Name" Environment = Value Prelude.Text
+  set newValue Environment {..} = Environment {name = newValue, ..}
+instance Property "Tags" Environment where
+  type PropertyType "Tags" Environment = [Tag]
+  set newValue Environment {..}
+    = Environment {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppConfig/Environment/MonitorProperty.hs b/gen/Stratosphere/AppConfig/Environment/MonitorProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/Environment/MonitorProperty.hs
@@ -0,0 +1,47 @@
+module Stratosphere.AppConfig.Environment.MonitorProperty (
+        MonitorProperty(..), mkMonitorProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MonitorProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-monitor.html>
+    MonitorProperty {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-monitor.html#cfn-appconfig-environment-monitor-alarmarn>
+                     alarmArn :: (Value Prelude.Text),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-monitor.html#cfn-appconfig-environment-monitor-alarmrolearn>
+                     alarmRoleArn :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMonitorProperty :: Value Prelude.Text -> MonitorProperty
+mkMonitorProperty alarmArn
+  = MonitorProperty
+      {haddock_workaround_ = (), alarmArn = alarmArn,
+       alarmRoleArn = Prelude.Nothing}
+instance ToResourceProperties MonitorProperty where
+  toResourceProperties MonitorProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppConfig::Environment.Monitor",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AlarmArn" JSON..= alarmArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AlarmRoleArn" Prelude.<$> alarmRoleArn]))}
+instance JSON.ToJSON MonitorProperty where
+  toJSON MonitorProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AlarmArn" JSON..= alarmArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "AlarmRoleArn" Prelude.<$> alarmRoleArn])))
+instance Property "AlarmArn" MonitorProperty where
+  type PropertyType "AlarmArn" MonitorProperty = Value Prelude.Text
+  set newValue MonitorProperty {..}
+    = MonitorProperty {alarmArn = newValue, ..}
+instance Property "AlarmRoleArn" MonitorProperty where
+  type PropertyType "AlarmRoleArn" MonitorProperty = Value Prelude.Text
+  set newValue MonitorProperty {..}
+    = MonitorProperty {alarmRoleArn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppConfig/Environment/MonitorProperty.hs-boot b/gen/Stratosphere/AppConfig/Environment/MonitorProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/Environment/MonitorProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppConfig.Environment.MonitorProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MonitorProperty :: Prelude.Type
+instance ToResourceProperties MonitorProperty
+instance Prelude.Eq MonitorProperty
+instance Prelude.Show MonitorProperty
+instance JSON.ToJSON MonitorProperty
diff --git a/gen/Stratosphere/AppConfig/Extension.hs b/gen/Stratosphere/AppConfig/Extension.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/Extension.hs
@@ -0,0 +1,79 @@
+module Stratosphere.AppConfig.Extension (
+        module Exports, Extension(..), mkExtension
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppConfig.Extension.ParameterProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Extension
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-extension.html>
+    Extension {haddock_workaround_ :: (),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-extension.html#cfn-appconfig-extension-actions>
+               actions :: JSON.Object,
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-extension.html#cfn-appconfig-extension-description>
+               description :: (Prelude.Maybe (Value Prelude.Text)),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-extension.html#cfn-appconfig-extension-latestversionnumber>
+               latestVersionNumber :: (Prelude.Maybe (Value Prelude.Integer)),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-extension.html#cfn-appconfig-extension-name>
+               name :: (Value Prelude.Text),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-extension.html#cfn-appconfig-extension-parameters>
+               parameters :: (Prelude.Maybe (Prelude.Map Prelude.Text ParameterProperty)),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-extension.html#cfn-appconfig-extension-tags>
+               tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkExtension :: JSON.Object -> Value Prelude.Text -> Extension
+mkExtension actions name
+  = Extension
+      {haddock_workaround_ = (), actions = actions, name = name,
+       description = Prelude.Nothing,
+       latestVersionNumber = Prelude.Nothing,
+       parameters = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties Extension where
+  toResourceProperties Extension {..}
+    = ResourceProperties
+        {awsType = "AWS::AppConfig::Extension",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Actions" JSON..= actions, "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "LatestVersionNumber" Prelude.<$> latestVersionNumber,
+                               (JSON..=) "Parameters" Prelude.<$> parameters,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Extension where
+  toJSON Extension {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Actions" JSON..= actions, "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "LatestVersionNumber" Prelude.<$> latestVersionNumber,
+                  (JSON..=) "Parameters" Prelude.<$> parameters,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Actions" Extension where
+  type PropertyType "Actions" Extension = JSON.Object
+  set newValue Extension {..} = Extension {actions = newValue, ..}
+instance Property "Description" Extension where
+  type PropertyType "Description" Extension = Value Prelude.Text
+  set newValue Extension {..}
+    = Extension {description = Prelude.pure newValue, ..}
+instance Property "LatestVersionNumber" Extension where
+  type PropertyType "LatestVersionNumber" Extension = Value Prelude.Integer
+  set newValue Extension {..}
+    = Extension {latestVersionNumber = Prelude.pure newValue, ..}
+instance Property "Name" Extension where
+  type PropertyType "Name" Extension = Value Prelude.Text
+  set newValue Extension {..} = Extension {name = newValue, ..}
+instance Property "Parameters" Extension where
+  type PropertyType "Parameters" Extension = Prelude.Map Prelude.Text ParameterProperty
+  set newValue Extension {..}
+    = Extension {parameters = Prelude.pure newValue, ..}
+instance Property "Tags" Extension where
+  type PropertyType "Tags" Extension = [Tag]
+  set newValue Extension {..}
+    = Extension {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppConfig/Extension/ParameterProperty.hs b/gen/Stratosphere/AppConfig/Extension/ParameterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/Extension/ParameterProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.AppConfig.Extension.ParameterProperty (
+        ParameterProperty(..), mkParameterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ParameterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-extension-parameter.html>
+    ParameterProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-extension-parameter.html#cfn-appconfig-extension-parameter-description>
+                       description :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-extension-parameter.html#cfn-appconfig-extension-parameter-dynamic>
+                       dynamic :: (Prelude.Maybe (Value Prelude.Bool)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-extension-parameter.html#cfn-appconfig-extension-parameter-required>
+                       required :: (Value Prelude.Bool)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkParameterProperty :: Value Prelude.Bool -> ParameterProperty
+mkParameterProperty required
+  = ParameterProperty
+      {haddock_workaround_ = (), required = required,
+       description = Prelude.Nothing, dynamic = Prelude.Nothing}
+instance ToResourceProperties ParameterProperty where
+  toResourceProperties ParameterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppConfig::Extension.Parameter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Required" JSON..= required]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Dynamic" Prelude.<$> dynamic]))}
+instance JSON.ToJSON ParameterProperty where
+  toJSON ParameterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Required" JSON..= required]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Dynamic" Prelude.<$> dynamic])))
+instance Property "Description" ParameterProperty where
+  type PropertyType "Description" ParameterProperty = Value Prelude.Text
+  set newValue ParameterProperty {..}
+    = ParameterProperty {description = Prelude.pure newValue, ..}
+instance Property "Dynamic" ParameterProperty where
+  type PropertyType "Dynamic" ParameterProperty = Value Prelude.Bool
+  set newValue ParameterProperty {..}
+    = ParameterProperty {dynamic = Prelude.pure newValue, ..}
+instance Property "Required" ParameterProperty where
+  type PropertyType "Required" ParameterProperty = Value Prelude.Bool
+  set newValue ParameterProperty {..}
+    = ParameterProperty {required = newValue, ..}
diff --git a/gen/Stratosphere/AppConfig/Extension/ParameterProperty.hs-boot b/gen/Stratosphere/AppConfig/Extension/ParameterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/Extension/ParameterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppConfig.Extension.ParameterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ParameterProperty :: Prelude.Type
+instance ToResourceProperties ParameterProperty
+instance Prelude.Eq ParameterProperty
+instance Prelude.Show ParameterProperty
+instance JSON.ToJSON ParameterProperty
diff --git a/gen/Stratosphere/AppConfig/ExtensionAssociation.hs b/gen/Stratosphere/AppConfig/ExtensionAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/ExtensionAssociation.hs
@@ -0,0 +1,77 @@
+module Stratosphere.AppConfig.ExtensionAssociation (
+        ExtensionAssociation(..), mkExtensionAssociation
+    ) 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 ExtensionAssociation
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-extensionassociation.html>
+    ExtensionAssociation {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-extensionassociation.html#cfn-appconfig-extensionassociation-extensionidentifier>
+                          extensionIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-extensionassociation.html#cfn-appconfig-extensionassociation-extensionversionnumber>
+                          extensionVersionNumber :: (Prelude.Maybe (Value Prelude.Integer)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-extensionassociation.html#cfn-appconfig-extensionassociation-parameters>
+                          parameters :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-extensionassociation.html#cfn-appconfig-extensionassociation-resourceidentifier>
+                          resourceIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-extensionassociation.html#cfn-appconfig-extensionassociation-tags>
+                          tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkExtensionAssociation :: ExtensionAssociation
+mkExtensionAssociation
+  = ExtensionAssociation
+      {haddock_workaround_ = (), extensionIdentifier = Prelude.Nothing,
+       extensionVersionNumber = Prelude.Nothing,
+       parameters = Prelude.Nothing, resourceIdentifier = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties ExtensionAssociation where
+  toResourceProperties ExtensionAssociation {..}
+    = ResourceProperties
+        {awsType = "AWS::AppConfig::ExtensionAssociation",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ExtensionIdentifier" Prelude.<$> extensionIdentifier,
+                            (JSON..=) "ExtensionVersionNumber"
+                              Prelude.<$> extensionVersionNumber,
+                            (JSON..=) "Parameters" Prelude.<$> parameters,
+                            (JSON..=) "ResourceIdentifier" Prelude.<$> resourceIdentifier,
+                            (JSON..=) "Tags" Prelude.<$> tags])}
+instance JSON.ToJSON ExtensionAssociation where
+  toJSON ExtensionAssociation {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ExtensionIdentifier" Prelude.<$> extensionIdentifier,
+               (JSON..=) "ExtensionVersionNumber"
+                 Prelude.<$> extensionVersionNumber,
+               (JSON..=) "Parameters" Prelude.<$> parameters,
+               (JSON..=) "ResourceIdentifier" Prelude.<$> resourceIdentifier,
+               (JSON..=) "Tags" Prelude.<$> tags]))
+instance Property "ExtensionIdentifier" ExtensionAssociation where
+  type PropertyType "ExtensionIdentifier" ExtensionAssociation = Value Prelude.Text
+  set newValue ExtensionAssociation {..}
+    = ExtensionAssociation
+        {extensionIdentifier = Prelude.pure newValue, ..}
+instance Property "ExtensionVersionNumber" ExtensionAssociation where
+  type PropertyType "ExtensionVersionNumber" ExtensionAssociation = Value Prelude.Integer
+  set newValue ExtensionAssociation {..}
+    = ExtensionAssociation
+        {extensionVersionNumber = Prelude.pure newValue, ..}
+instance Property "Parameters" ExtensionAssociation where
+  type PropertyType "Parameters" ExtensionAssociation = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue ExtensionAssociation {..}
+    = ExtensionAssociation {parameters = Prelude.pure newValue, ..}
+instance Property "ResourceIdentifier" ExtensionAssociation where
+  type PropertyType "ResourceIdentifier" ExtensionAssociation = Value Prelude.Text
+  set newValue ExtensionAssociation {..}
+    = ExtensionAssociation
+        {resourceIdentifier = Prelude.pure newValue, ..}
+instance Property "Tags" ExtensionAssociation where
+  type PropertyType "Tags" ExtensionAssociation = [Tag]
+  set newValue ExtensionAssociation {..}
+    = ExtensionAssociation {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppConfig/HostedConfigurationVersion.hs b/gen/Stratosphere/AppConfig/HostedConfigurationVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppConfig/HostedConfigurationVersion.hs
@@ -0,0 +1,100 @@
+module Stratosphere.AppConfig.HostedConfigurationVersion (
+        HostedConfigurationVersion(..), mkHostedConfigurationVersion
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data HostedConfigurationVersion
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-hostedconfigurationversion.html>
+    HostedConfigurationVersion {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-hostedconfigurationversion.html#cfn-appconfig-hostedconfigurationversion-applicationid>
+                                applicationId :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-hostedconfigurationversion.html#cfn-appconfig-hostedconfigurationversion-configurationprofileid>
+                                configurationProfileId :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-hostedconfigurationversion.html#cfn-appconfig-hostedconfigurationversion-content>
+                                content :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-hostedconfigurationversion.html#cfn-appconfig-hostedconfigurationversion-contenttype>
+                                contentType :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-hostedconfigurationversion.html#cfn-appconfig-hostedconfigurationversion-description>
+                                description :: (Prelude.Maybe (Value Prelude.Text)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-hostedconfigurationversion.html#cfn-appconfig-hostedconfigurationversion-latestversionnumber>
+                                latestVersionNumber :: (Prelude.Maybe (Value Prelude.Integer)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-hostedconfigurationversion.html#cfn-appconfig-hostedconfigurationversion-versionlabel>
+                                versionLabel :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkHostedConfigurationVersion ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text
+        -> Value Prelude.Text -> HostedConfigurationVersion
+mkHostedConfigurationVersion
+  applicationId
+  configurationProfileId
+  content
+  contentType
+  = HostedConfigurationVersion
+      {haddock_workaround_ = (), applicationId = applicationId,
+       configurationProfileId = configurationProfileId, content = content,
+       contentType = contentType, description = Prelude.Nothing,
+       latestVersionNumber = Prelude.Nothing,
+       versionLabel = Prelude.Nothing}
+instance ToResourceProperties HostedConfigurationVersion where
+  toResourceProperties HostedConfigurationVersion {..}
+    = ResourceProperties
+        {awsType = "AWS::AppConfig::HostedConfigurationVersion",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApplicationId" JSON..= applicationId,
+                            "ConfigurationProfileId" JSON..= configurationProfileId,
+                            "Content" JSON..= content, "ContentType" JSON..= contentType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "LatestVersionNumber" Prelude.<$> latestVersionNumber,
+                               (JSON..=) "VersionLabel" Prelude.<$> versionLabel]))}
+instance JSON.ToJSON HostedConfigurationVersion where
+  toJSON HostedConfigurationVersion {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApplicationId" JSON..= applicationId,
+               "ConfigurationProfileId" JSON..= configurationProfileId,
+               "Content" JSON..= content, "ContentType" JSON..= contentType]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "LatestVersionNumber" Prelude.<$> latestVersionNumber,
+                  (JSON..=) "VersionLabel" Prelude.<$> versionLabel])))
+instance Property "ApplicationId" HostedConfigurationVersion where
+  type PropertyType "ApplicationId" HostedConfigurationVersion = Value Prelude.Text
+  set newValue HostedConfigurationVersion {..}
+    = HostedConfigurationVersion {applicationId = newValue, ..}
+instance Property "ConfigurationProfileId" HostedConfigurationVersion where
+  type PropertyType "ConfigurationProfileId" HostedConfigurationVersion = Value Prelude.Text
+  set newValue HostedConfigurationVersion {..}
+    = HostedConfigurationVersion
+        {configurationProfileId = newValue, ..}
+instance Property "Content" HostedConfigurationVersion where
+  type PropertyType "Content" HostedConfigurationVersion = Value Prelude.Text
+  set newValue HostedConfigurationVersion {..}
+    = HostedConfigurationVersion {content = newValue, ..}
+instance Property "ContentType" HostedConfigurationVersion where
+  type PropertyType "ContentType" HostedConfigurationVersion = Value Prelude.Text
+  set newValue HostedConfigurationVersion {..}
+    = HostedConfigurationVersion {contentType = newValue, ..}
+instance Property "Description" HostedConfigurationVersion where
+  type PropertyType "Description" HostedConfigurationVersion = Value Prelude.Text
+  set newValue HostedConfigurationVersion {..}
+    = HostedConfigurationVersion
+        {description = Prelude.pure newValue, ..}
+instance Property "LatestVersionNumber" HostedConfigurationVersion where
+  type PropertyType "LatestVersionNumber" HostedConfigurationVersion = Value Prelude.Integer
+  set newValue HostedConfigurationVersion {..}
+    = HostedConfigurationVersion
+        {latestVersionNumber = Prelude.pure newValue, ..}
+instance Property "VersionLabel" HostedConfigurationVersion where
+  type PropertyType "VersionLabel" HostedConfigurationVersion = Value Prelude.Text
+  set newValue HostedConfigurationVersion {..}
+    = HostedConfigurationVersion
+        {versionLabel = Prelude.pure newValue, ..}
diff --git a/stratosphere-appconfig.cabal b/stratosphere-appconfig.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-appconfig.cabal
@@ -0,0 +1,86 @@
+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-appconfig
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS AppConfig.
+description:    Integration into stratosphere to generate resources and properties for AWS AppConfig
+category:       AWS, Cloud, AppConfig
+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.AppConfig.Application
+      Stratosphere.AppConfig.Application.TagsProperty
+      Stratosphere.AppConfig.ConfigurationProfile
+      Stratosphere.AppConfig.ConfigurationProfile.TagsProperty
+      Stratosphere.AppConfig.ConfigurationProfile.ValidatorsProperty
+      Stratosphere.AppConfig.Deployment
+      Stratosphere.AppConfig.Deployment.DynamicExtensionParametersProperty
+      Stratosphere.AppConfig.DeploymentStrategy
+      Stratosphere.AppConfig.Environment
+      Stratosphere.AppConfig.Environment.MonitorProperty
+      Stratosphere.AppConfig.Extension
+      Stratosphere.AppConfig.Extension.ParameterProperty
+      Stratosphere.AppConfig.ExtensionAssociation
+      Stratosphere.AppConfig.HostedConfigurationVersion
+  other-modules:
+      Paths_stratosphere_appconfig
+  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
