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/AutoScalingPlans/ScalingPlan.hs b/gen/Stratosphere/AutoScalingPlans/ScalingPlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan.hs
@@ -0,0 +1,44 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan (
+        module Exports, ScalingPlan(..), mkScalingPlan
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.ApplicationSourceProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.ScalingInstructionProperty as Exports
+import Stratosphere.ResourceProperties
+data ScalingPlan
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscalingplans-scalingplan.html>
+    ScalingPlan {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscalingplans-scalingplan.html#cfn-autoscalingplans-scalingplan-applicationsource>
+                 applicationSource :: ApplicationSourceProperty,
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscalingplans-scalingplan.html#cfn-autoscalingplans-scalingplan-scalinginstructions>
+                 scalingInstructions :: [ScalingInstructionProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScalingPlan ::
+  ApplicationSourceProperty
+  -> [ScalingInstructionProperty] -> ScalingPlan
+mkScalingPlan applicationSource scalingInstructions
+  = ScalingPlan
+      {haddock_workaround_ = (), applicationSource = applicationSource,
+       scalingInstructions = scalingInstructions}
+instance ToResourceProperties ScalingPlan where
+  toResourceProperties ScalingPlan {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScalingPlans::ScalingPlan",
+         supportsTags = Prelude.False,
+         properties = ["ApplicationSource" JSON..= applicationSource,
+                       "ScalingInstructions" JSON..= scalingInstructions]}
+instance JSON.ToJSON ScalingPlan where
+  toJSON ScalingPlan {..}
+    = JSON.object
+        ["ApplicationSource" JSON..= applicationSource,
+         "ScalingInstructions" JSON..= scalingInstructions]
+instance Property "ApplicationSource" ScalingPlan where
+  type PropertyType "ApplicationSource" ScalingPlan = ApplicationSourceProperty
+  set newValue ScalingPlan {..}
+    = ScalingPlan {applicationSource = newValue, ..}
+instance Property "ScalingInstructions" ScalingPlan where
+  type PropertyType "ScalingInstructions" ScalingPlan = [ScalingInstructionProperty]
+  set newValue ScalingPlan {..}
+    = ScalingPlan {scalingInstructions = newValue, ..}
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/ApplicationSourceProperty.hs b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/ApplicationSourceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/ApplicationSourceProperty.hs
@@ -0,0 +1,52 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.ApplicationSourceProperty (
+        module Exports, ApplicationSourceProperty(..),
+        mkApplicationSourceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.TagFilterProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ApplicationSourceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-applicationsource.html>
+    ApplicationSourceProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-applicationsource.html#cfn-autoscalingplans-scalingplan-applicationsource-cloudformationstackarn>
+                               cloudFormationStackARN :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-applicationsource.html#cfn-autoscalingplans-scalingplan-applicationsource-tagfilters>
+                               tagFilters :: (Prelude.Maybe [TagFilterProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApplicationSourceProperty :: ApplicationSourceProperty
+mkApplicationSourceProperty
+  = ApplicationSourceProperty
+      {haddock_workaround_ = (),
+       cloudFormationStackARN = Prelude.Nothing,
+       tagFilters = Prelude.Nothing}
+instance ToResourceProperties ApplicationSourceProperty where
+  toResourceProperties ApplicationSourceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScalingPlans::ScalingPlan.ApplicationSource",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "CloudFormationStackARN"
+                              Prelude.<$> cloudFormationStackARN,
+                            (JSON..=) "TagFilters" Prelude.<$> tagFilters])}
+instance JSON.ToJSON ApplicationSourceProperty where
+  toJSON ApplicationSourceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "CloudFormationStackARN"
+                 Prelude.<$> cloudFormationStackARN,
+               (JSON..=) "TagFilters" Prelude.<$> tagFilters]))
+instance Property "CloudFormationStackARN" ApplicationSourceProperty where
+  type PropertyType "CloudFormationStackARN" ApplicationSourceProperty = Value Prelude.Text
+  set newValue ApplicationSourceProperty {..}
+    = ApplicationSourceProperty
+        {cloudFormationStackARN = Prelude.pure newValue, ..}
+instance Property "TagFilters" ApplicationSourceProperty where
+  type PropertyType "TagFilters" ApplicationSourceProperty = [TagFilterProperty]
+  set newValue ApplicationSourceProperty {..}
+    = ApplicationSourceProperty
+        {tagFilters = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/ApplicationSourceProperty.hs-boot b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/ApplicationSourceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/ApplicationSourceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.ApplicationSourceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ApplicationSourceProperty :: Prelude.Type
+instance ToResourceProperties ApplicationSourceProperty
+instance Prelude.Eq ApplicationSourceProperty
+instance Prelude.Show ApplicationSourceProperty
+instance JSON.ToJSON ApplicationSourceProperty
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/CustomizedLoadMetricSpecificationProperty.hs b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/CustomizedLoadMetricSpecificationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/CustomizedLoadMetricSpecificationProperty.hs
@@ -0,0 +1,83 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.CustomizedLoadMetricSpecificationProperty (
+        module Exports, CustomizedLoadMetricSpecificationProperty(..),
+        mkCustomizedLoadMetricSpecificationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.MetricDimensionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CustomizedLoadMetricSpecificationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedloadmetricspecification.html>
+    CustomizedLoadMetricSpecificationProperty {haddock_workaround_ :: (),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedloadmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedloadmetricspecification-dimensions>
+                                               dimensions :: (Prelude.Maybe [MetricDimensionProperty]),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedloadmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedloadmetricspecification-metricname>
+                                               metricName :: (Value Prelude.Text),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedloadmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedloadmetricspecification-namespace>
+                                               namespace :: (Value Prelude.Text),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedloadmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedloadmetricspecification-statistic>
+                                               statistic :: (Value Prelude.Text),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedloadmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedloadmetricspecification-unit>
+                                               unit :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCustomizedLoadMetricSpecificationProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> CustomizedLoadMetricSpecificationProperty
+mkCustomizedLoadMetricSpecificationProperty
+  metricName
+  namespace
+  statistic
+  = CustomizedLoadMetricSpecificationProperty
+      {haddock_workaround_ = (), metricName = metricName,
+       namespace = namespace, statistic = statistic,
+       dimensions = Prelude.Nothing, unit = Prelude.Nothing}
+instance ToResourceProperties CustomizedLoadMetricSpecificationProperty where
+  toResourceProperties CustomizedLoadMetricSpecificationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScalingPlans::ScalingPlan.CustomizedLoadMetricSpecification",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["MetricName" JSON..= metricName, "Namespace" JSON..= namespace,
+                            "Statistic" JSON..= statistic]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Dimensions" Prelude.<$> dimensions,
+                               (JSON..=) "Unit" Prelude.<$> unit]))}
+instance JSON.ToJSON CustomizedLoadMetricSpecificationProperty where
+  toJSON CustomizedLoadMetricSpecificationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["MetricName" JSON..= metricName, "Namespace" JSON..= namespace,
+               "Statistic" JSON..= statistic]
+              (Prelude.catMaybes
+                 [(JSON..=) "Dimensions" Prelude.<$> dimensions,
+                  (JSON..=) "Unit" Prelude.<$> unit])))
+instance Property "Dimensions" CustomizedLoadMetricSpecificationProperty where
+  type PropertyType "Dimensions" CustomizedLoadMetricSpecificationProperty = [MetricDimensionProperty]
+  set newValue CustomizedLoadMetricSpecificationProperty {..}
+    = CustomizedLoadMetricSpecificationProperty
+        {dimensions = Prelude.pure newValue, ..}
+instance Property "MetricName" CustomizedLoadMetricSpecificationProperty where
+  type PropertyType "MetricName" CustomizedLoadMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedLoadMetricSpecificationProperty {..}
+    = CustomizedLoadMetricSpecificationProperty
+        {metricName = newValue, ..}
+instance Property "Namespace" CustomizedLoadMetricSpecificationProperty where
+  type PropertyType "Namespace" CustomizedLoadMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedLoadMetricSpecificationProperty {..}
+    = CustomizedLoadMetricSpecificationProperty
+        {namespace = newValue, ..}
+instance Property "Statistic" CustomizedLoadMetricSpecificationProperty where
+  type PropertyType "Statistic" CustomizedLoadMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedLoadMetricSpecificationProperty {..}
+    = CustomizedLoadMetricSpecificationProperty
+        {statistic = newValue, ..}
+instance Property "Unit" CustomizedLoadMetricSpecificationProperty where
+  type PropertyType "Unit" CustomizedLoadMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedLoadMetricSpecificationProperty {..}
+    = CustomizedLoadMetricSpecificationProperty
+        {unit = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/CustomizedLoadMetricSpecificationProperty.hs-boot b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/CustomizedLoadMetricSpecificationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/CustomizedLoadMetricSpecificationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.CustomizedLoadMetricSpecificationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CustomizedLoadMetricSpecificationProperty :: Prelude.Type
+instance ToResourceProperties CustomizedLoadMetricSpecificationProperty
+instance Prelude.Eq CustomizedLoadMetricSpecificationProperty
+instance Prelude.Show CustomizedLoadMetricSpecificationProperty
+instance JSON.ToJSON CustomizedLoadMetricSpecificationProperty
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/CustomizedScalingMetricSpecificationProperty.hs b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/CustomizedScalingMetricSpecificationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/CustomizedScalingMetricSpecificationProperty.hs
@@ -0,0 +1,85 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.CustomizedScalingMetricSpecificationProperty (
+        module Exports, CustomizedScalingMetricSpecificationProperty(..),
+        mkCustomizedScalingMetricSpecificationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.MetricDimensionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CustomizedScalingMetricSpecificationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedscalingmetricspecification.html>
+    CustomizedScalingMetricSpecificationProperty {haddock_workaround_ :: (),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedscalingmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedscalingmetricspecification-dimensions>
+                                                  dimensions :: (Prelude.Maybe [MetricDimensionProperty]),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedscalingmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedscalingmetricspecification-metricname>
+                                                  metricName :: (Value Prelude.Text),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedscalingmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedscalingmetricspecification-namespace>
+                                                  namespace :: (Value Prelude.Text),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedscalingmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedscalingmetricspecification-statistic>
+                                                  statistic :: (Value Prelude.Text),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedscalingmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedscalingmetricspecification-unit>
+                                                  unit :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCustomizedScalingMetricSpecificationProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text
+        -> CustomizedScalingMetricSpecificationProperty
+mkCustomizedScalingMetricSpecificationProperty
+  metricName
+  namespace
+  statistic
+  = CustomizedScalingMetricSpecificationProperty
+      {haddock_workaround_ = (), metricName = metricName,
+       namespace = namespace, statistic = statistic,
+       dimensions = Prelude.Nothing, unit = Prelude.Nothing}
+instance ToResourceProperties CustomizedScalingMetricSpecificationProperty where
+  toResourceProperties
+    CustomizedScalingMetricSpecificationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScalingPlans::ScalingPlan.CustomizedScalingMetricSpecification",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["MetricName" JSON..= metricName, "Namespace" JSON..= namespace,
+                            "Statistic" JSON..= statistic]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Dimensions" Prelude.<$> dimensions,
+                               (JSON..=) "Unit" Prelude.<$> unit]))}
+instance JSON.ToJSON CustomizedScalingMetricSpecificationProperty where
+  toJSON CustomizedScalingMetricSpecificationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["MetricName" JSON..= metricName, "Namespace" JSON..= namespace,
+               "Statistic" JSON..= statistic]
+              (Prelude.catMaybes
+                 [(JSON..=) "Dimensions" Prelude.<$> dimensions,
+                  (JSON..=) "Unit" Prelude.<$> unit])))
+instance Property "Dimensions" CustomizedScalingMetricSpecificationProperty where
+  type PropertyType "Dimensions" CustomizedScalingMetricSpecificationProperty = [MetricDimensionProperty]
+  set newValue CustomizedScalingMetricSpecificationProperty {..}
+    = CustomizedScalingMetricSpecificationProperty
+        {dimensions = Prelude.pure newValue, ..}
+instance Property "MetricName" CustomizedScalingMetricSpecificationProperty where
+  type PropertyType "MetricName" CustomizedScalingMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedScalingMetricSpecificationProperty {..}
+    = CustomizedScalingMetricSpecificationProperty
+        {metricName = newValue, ..}
+instance Property "Namespace" CustomizedScalingMetricSpecificationProperty where
+  type PropertyType "Namespace" CustomizedScalingMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedScalingMetricSpecificationProperty {..}
+    = CustomizedScalingMetricSpecificationProperty
+        {namespace = newValue, ..}
+instance Property "Statistic" CustomizedScalingMetricSpecificationProperty where
+  type PropertyType "Statistic" CustomizedScalingMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedScalingMetricSpecificationProperty {..}
+    = CustomizedScalingMetricSpecificationProperty
+        {statistic = newValue, ..}
+instance Property "Unit" CustomizedScalingMetricSpecificationProperty where
+  type PropertyType "Unit" CustomizedScalingMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedScalingMetricSpecificationProperty {..}
+    = CustomizedScalingMetricSpecificationProperty
+        {unit = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/CustomizedScalingMetricSpecificationProperty.hs-boot b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/CustomizedScalingMetricSpecificationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/CustomizedScalingMetricSpecificationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.CustomizedScalingMetricSpecificationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CustomizedScalingMetricSpecificationProperty :: Prelude.Type
+instance ToResourceProperties CustomizedScalingMetricSpecificationProperty
+instance Prelude.Eq CustomizedScalingMetricSpecificationProperty
+instance Prelude.Show CustomizedScalingMetricSpecificationProperty
+instance JSON.ToJSON CustomizedScalingMetricSpecificationProperty
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/MetricDimensionProperty.hs b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/MetricDimensionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/MetricDimensionProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.MetricDimensionProperty (
+        MetricDimensionProperty(..), mkMetricDimensionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MetricDimensionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-metricdimension.html>
+    MetricDimensionProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-metricdimension.html#cfn-autoscalingplans-scalingplan-metricdimension-name>
+                             name :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-metricdimension.html#cfn-autoscalingplans-scalingplan-metricdimension-value>
+                             value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMetricDimensionProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> MetricDimensionProperty
+mkMetricDimensionProperty name value
+  = MetricDimensionProperty
+      {haddock_workaround_ = (), name = name, value = value}
+instance ToResourceProperties MetricDimensionProperty where
+  toResourceProperties MetricDimensionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScalingPlans::ScalingPlan.MetricDimension",
+         supportsTags = Prelude.False,
+         properties = ["Name" JSON..= name, "Value" JSON..= value]}
+instance JSON.ToJSON MetricDimensionProperty where
+  toJSON MetricDimensionProperty {..}
+    = JSON.object ["Name" JSON..= name, "Value" JSON..= value]
+instance Property "Name" MetricDimensionProperty where
+  type PropertyType "Name" MetricDimensionProperty = Value Prelude.Text
+  set newValue MetricDimensionProperty {..}
+    = MetricDimensionProperty {name = newValue, ..}
+instance Property "Value" MetricDimensionProperty where
+  type PropertyType "Value" MetricDimensionProperty = Value Prelude.Text
+  set newValue MetricDimensionProperty {..}
+    = MetricDimensionProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/MetricDimensionProperty.hs-boot b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/MetricDimensionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/MetricDimensionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.MetricDimensionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MetricDimensionProperty :: Prelude.Type
+instance ToResourceProperties MetricDimensionProperty
+instance Prelude.Eq MetricDimensionProperty
+instance Prelude.Show MetricDimensionProperty
+instance JSON.ToJSON MetricDimensionProperty
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/PredefinedLoadMetricSpecificationProperty.hs b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/PredefinedLoadMetricSpecificationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/PredefinedLoadMetricSpecificationProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.PredefinedLoadMetricSpecificationProperty (
+        PredefinedLoadMetricSpecificationProperty(..),
+        mkPredefinedLoadMetricSpecificationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredefinedLoadMetricSpecificationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-predefinedloadmetricspecification.html>
+    PredefinedLoadMetricSpecificationProperty {haddock_workaround_ :: (),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-predefinedloadmetricspecification.html#cfn-autoscalingplans-scalingplan-predefinedloadmetricspecification-predefinedloadmetrictype>
+                                               predefinedLoadMetricType :: (Value Prelude.Text),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-predefinedloadmetricspecification.html#cfn-autoscalingplans-scalingplan-predefinedloadmetricspecification-resourcelabel>
+                                               resourceLabel :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredefinedLoadMetricSpecificationProperty ::
+  Value Prelude.Text -> PredefinedLoadMetricSpecificationProperty
+mkPredefinedLoadMetricSpecificationProperty
+  predefinedLoadMetricType
+  = PredefinedLoadMetricSpecificationProperty
+      {haddock_workaround_ = (),
+       predefinedLoadMetricType = predefinedLoadMetricType,
+       resourceLabel = Prelude.Nothing}
+instance ToResourceProperties PredefinedLoadMetricSpecificationProperty where
+  toResourceProperties PredefinedLoadMetricSpecificationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScalingPlans::ScalingPlan.PredefinedLoadMetricSpecification",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["PredefinedLoadMetricType" JSON..= predefinedLoadMetricType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel]))}
+instance JSON.ToJSON PredefinedLoadMetricSpecificationProperty where
+  toJSON PredefinedLoadMetricSpecificationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["PredefinedLoadMetricType" JSON..= predefinedLoadMetricType]
+              (Prelude.catMaybes
+                 [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel])))
+instance Property "PredefinedLoadMetricType" PredefinedLoadMetricSpecificationProperty where
+  type PropertyType "PredefinedLoadMetricType" PredefinedLoadMetricSpecificationProperty = Value Prelude.Text
+  set newValue PredefinedLoadMetricSpecificationProperty {..}
+    = PredefinedLoadMetricSpecificationProperty
+        {predefinedLoadMetricType = newValue, ..}
+instance Property "ResourceLabel" PredefinedLoadMetricSpecificationProperty where
+  type PropertyType "ResourceLabel" PredefinedLoadMetricSpecificationProperty = Value Prelude.Text
+  set newValue PredefinedLoadMetricSpecificationProperty {..}
+    = PredefinedLoadMetricSpecificationProperty
+        {resourceLabel = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/PredefinedLoadMetricSpecificationProperty.hs-boot b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/PredefinedLoadMetricSpecificationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/PredefinedLoadMetricSpecificationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.PredefinedLoadMetricSpecificationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredefinedLoadMetricSpecificationProperty :: Prelude.Type
+instance ToResourceProperties PredefinedLoadMetricSpecificationProperty
+instance Prelude.Eq PredefinedLoadMetricSpecificationProperty
+instance Prelude.Show PredefinedLoadMetricSpecificationProperty
+instance JSON.ToJSON PredefinedLoadMetricSpecificationProperty
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/PredefinedScalingMetricSpecificationProperty.hs b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/PredefinedScalingMetricSpecificationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/PredefinedScalingMetricSpecificationProperty.hs
@@ -0,0 +1,54 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.PredefinedScalingMetricSpecificationProperty (
+        PredefinedScalingMetricSpecificationProperty(..),
+        mkPredefinedScalingMetricSpecificationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredefinedScalingMetricSpecificationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-predefinedscalingmetricspecification.html>
+    PredefinedScalingMetricSpecificationProperty {haddock_workaround_ :: (),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-predefinedscalingmetricspecification.html#cfn-autoscalingplans-scalingplan-predefinedscalingmetricspecification-predefinedscalingmetrictype>
+                                                  predefinedScalingMetricType :: (Value Prelude.Text),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-predefinedscalingmetricspecification.html#cfn-autoscalingplans-scalingplan-predefinedscalingmetricspecification-resourcelabel>
+                                                  resourceLabel :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredefinedScalingMetricSpecificationProperty ::
+  Value Prelude.Text -> PredefinedScalingMetricSpecificationProperty
+mkPredefinedScalingMetricSpecificationProperty
+  predefinedScalingMetricType
+  = PredefinedScalingMetricSpecificationProperty
+      {haddock_workaround_ = (),
+       predefinedScalingMetricType = predefinedScalingMetricType,
+       resourceLabel = Prelude.Nothing}
+instance ToResourceProperties PredefinedScalingMetricSpecificationProperty where
+  toResourceProperties
+    PredefinedScalingMetricSpecificationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScalingPlans::ScalingPlan.PredefinedScalingMetricSpecification",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["PredefinedScalingMetricType" JSON..= predefinedScalingMetricType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel]))}
+instance JSON.ToJSON PredefinedScalingMetricSpecificationProperty where
+  toJSON PredefinedScalingMetricSpecificationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["PredefinedScalingMetricType" JSON..= predefinedScalingMetricType]
+              (Prelude.catMaybes
+                 [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel])))
+instance Property "PredefinedScalingMetricType" PredefinedScalingMetricSpecificationProperty where
+  type PropertyType "PredefinedScalingMetricType" PredefinedScalingMetricSpecificationProperty = Value Prelude.Text
+  set newValue PredefinedScalingMetricSpecificationProperty {..}
+    = PredefinedScalingMetricSpecificationProperty
+        {predefinedScalingMetricType = newValue, ..}
+instance Property "ResourceLabel" PredefinedScalingMetricSpecificationProperty where
+  type PropertyType "ResourceLabel" PredefinedScalingMetricSpecificationProperty = Value Prelude.Text
+  set newValue PredefinedScalingMetricSpecificationProperty {..}
+    = PredefinedScalingMetricSpecificationProperty
+        {resourceLabel = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/PredefinedScalingMetricSpecificationProperty.hs-boot b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/PredefinedScalingMetricSpecificationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/PredefinedScalingMetricSpecificationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.PredefinedScalingMetricSpecificationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredefinedScalingMetricSpecificationProperty :: Prelude.Type
+instance ToResourceProperties PredefinedScalingMetricSpecificationProperty
+instance Prelude.Eq PredefinedScalingMetricSpecificationProperty
+instance Prelude.Show PredefinedScalingMetricSpecificationProperty
+instance JSON.ToJSON PredefinedScalingMetricSpecificationProperty
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/ScalingInstructionProperty.hs b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/ScalingInstructionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/ScalingInstructionProperty.hs
@@ -0,0 +1,196 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.ScalingInstructionProperty (
+        module Exports, ScalingInstructionProperty(..),
+        mkScalingInstructionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.CustomizedLoadMetricSpecificationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.PredefinedLoadMetricSpecificationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.TargetTrackingConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ScalingInstructionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html>
+    ScalingInstructionProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-customizedloadmetricspecification>
+                                customizedLoadMetricSpecification :: (Prelude.Maybe CustomizedLoadMetricSpecificationProperty),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-disabledynamicscaling>
+                                disableDynamicScaling :: (Prelude.Maybe (Value Prelude.Bool)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-maxcapacity>
+                                maxCapacity :: (Value Prelude.Integer),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-mincapacity>
+                                minCapacity :: (Value Prelude.Integer),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-predefinedloadmetricspecification>
+                                predefinedLoadMetricSpecification :: (Prelude.Maybe PredefinedLoadMetricSpecificationProperty),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-predictivescalingmaxcapacitybehavior>
+                                predictiveScalingMaxCapacityBehavior :: (Prelude.Maybe (Value Prelude.Text)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-predictivescalingmaxcapacitybuffer>
+                                predictiveScalingMaxCapacityBuffer :: (Prelude.Maybe (Value Prelude.Integer)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-predictivescalingmode>
+                                predictiveScalingMode :: (Prelude.Maybe (Value Prelude.Text)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-resourceid>
+                                resourceId :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-scalabledimension>
+                                scalableDimension :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-scalingpolicyupdatebehavior>
+                                scalingPolicyUpdateBehavior :: (Prelude.Maybe (Value Prelude.Text)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-scheduledactionbuffertime>
+                                scheduledActionBufferTime :: (Prelude.Maybe (Value Prelude.Integer)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-servicenamespace>
+                                serviceNamespace :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-targettrackingconfigurations>
+                                targetTrackingConfigurations :: [TargetTrackingConfigurationProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScalingInstructionProperty ::
+  Value Prelude.Integer
+  -> Value Prelude.Integer
+     -> Value Prelude.Text
+        -> Value Prelude.Text
+           -> Value Prelude.Text
+              -> [TargetTrackingConfigurationProperty]
+                 -> ScalingInstructionProperty
+mkScalingInstructionProperty
+  maxCapacity
+  minCapacity
+  resourceId
+  scalableDimension
+  serviceNamespace
+  targetTrackingConfigurations
+  = ScalingInstructionProperty
+      {haddock_workaround_ = (), maxCapacity = maxCapacity,
+       minCapacity = minCapacity, resourceId = resourceId,
+       scalableDimension = scalableDimension,
+       serviceNamespace = serviceNamespace,
+       targetTrackingConfigurations = targetTrackingConfigurations,
+       customizedLoadMetricSpecification = Prelude.Nothing,
+       disableDynamicScaling = Prelude.Nothing,
+       predefinedLoadMetricSpecification = Prelude.Nothing,
+       predictiveScalingMaxCapacityBehavior = Prelude.Nothing,
+       predictiveScalingMaxCapacityBuffer = Prelude.Nothing,
+       predictiveScalingMode = Prelude.Nothing,
+       scalingPolicyUpdateBehavior = Prelude.Nothing,
+       scheduledActionBufferTime = Prelude.Nothing}
+instance ToResourceProperties ScalingInstructionProperty where
+  toResourceProperties ScalingInstructionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScalingPlans::ScalingPlan.ScalingInstruction",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["MaxCapacity" JSON..= maxCapacity,
+                            "MinCapacity" JSON..= minCapacity, "ResourceId" JSON..= resourceId,
+                            "ScalableDimension" JSON..= scalableDimension,
+                            "ServiceNamespace" JSON..= serviceNamespace,
+                            "TargetTrackingConfigurations"
+                              JSON..= targetTrackingConfigurations]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CustomizedLoadMetricSpecification"
+                                 Prelude.<$> customizedLoadMetricSpecification,
+                               (JSON..=) "DisableDynamicScaling"
+                                 Prelude.<$> disableDynamicScaling,
+                               (JSON..=) "PredefinedLoadMetricSpecification"
+                                 Prelude.<$> predefinedLoadMetricSpecification,
+                               (JSON..=) "PredictiveScalingMaxCapacityBehavior"
+                                 Prelude.<$> predictiveScalingMaxCapacityBehavior,
+                               (JSON..=) "PredictiveScalingMaxCapacityBuffer"
+                                 Prelude.<$> predictiveScalingMaxCapacityBuffer,
+                               (JSON..=) "PredictiveScalingMode"
+                                 Prelude.<$> predictiveScalingMode,
+                               (JSON..=) "ScalingPolicyUpdateBehavior"
+                                 Prelude.<$> scalingPolicyUpdateBehavior,
+                               (JSON..=) "ScheduledActionBufferTime"
+                                 Prelude.<$> scheduledActionBufferTime]))}
+instance JSON.ToJSON ScalingInstructionProperty where
+  toJSON ScalingInstructionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["MaxCapacity" JSON..= maxCapacity,
+               "MinCapacity" JSON..= minCapacity, "ResourceId" JSON..= resourceId,
+               "ScalableDimension" JSON..= scalableDimension,
+               "ServiceNamespace" JSON..= serviceNamespace,
+               "TargetTrackingConfigurations"
+                 JSON..= targetTrackingConfigurations]
+              (Prelude.catMaybes
+                 [(JSON..=) "CustomizedLoadMetricSpecification"
+                    Prelude.<$> customizedLoadMetricSpecification,
+                  (JSON..=) "DisableDynamicScaling"
+                    Prelude.<$> disableDynamicScaling,
+                  (JSON..=) "PredefinedLoadMetricSpecification"
+                    Prelude.<$> predefinedLoadMetricSpecification,
+                  (JSON..=) "PredictiveScalingMaxCapacityBehavior"
+                    Prelude.<$> predictiveScalingMaxCapacityBehavior,
+                  (JSON..=) "PredictiveScalingMaxCapacityBuffer"
+                    Prelude.<$> predictiveScalingMaxCapacityBuffer,
+                  (JSON..=) "PredictiveScalingMode"
+                    Prelude.<$> predictiveScalingMode,
+                  (JSON..=) "ScalingPolicyUpdateBehavior"
+                    Prelude.<$> scalingPolicyUpdateBehavior,
+                  (JSON..=) "ScheduledActionBufferTime"
+                    Prelude.<$> scheduledActionBufferTime])))
+instance Property "CustomizedLoadMetricSpecification" ScalingInstructionProperty where
+  type PropertyType "CustomizedLoadMetricSpecification" ScalingInstructionProperty = CustomizedLoadMetricSpecificationProperty
+  set newValue ScalingInstructionProperty {..}
+    = ScalingInstructionProperty
+        {customizedLoadMetricSpecification = Prelude.pure newValue, ..}
+instance Property "DisableDynamicScaling" ScalingInstructionProperty where
+  type PropertyType "DisableDynamicScaling" ScalingInstructionProperty = Value Prelude.Bool
+  set newValue ScalingInstructionProperty {..}
+    = ScalingInstructionProperty
+        {disableDynamicScaling = Prelude.pure newValue, ..}
+instance Property "MaxCapacity" ScalingInstructionProperty where
+  type PropertyType "MaxCapacity" ScalingInstructionProperty = Value Prelude.Integer
+  set newValue ScalingInstructionProperty {..}
+    = ScalingInstructionProperty {maxCapacity = newValue, ..}
+instance Property "MinCapacity" ScalingInstructionProperty where
+  type PropertyType "MinCapacity" ScalingInstructionProperty = Value Prelude.Integer
+  set newValue ScalingInstructionProperty {..}
+    = ScalingInstructionProperty {minCapacity = newValue, ..}
+instance Property "PredefinedLoadMetricSpecification" ScalingInstructionProperty where
+  type PropertyType "PredefinedLoadMetricSpecification" ScalingInstructionProperty = PredefinedLoadMetricSpecificationProperty
+  set newValue ScalingInstructionProperty {..}
+    = ScalingInstructionProperty
+        {predefinedLoadMetricSpecification = Prelude.pure newValue, ..}
+instance Property "PredictiveScalingMaxCapacityBehavior" ScalingInstructionProperty where
+  type PropertyType "PredictiveScalingMaxCapacityBehavior" ScalingInstructionProperty = Value Prelude.Text
+  set newValue ScalingInstructionProperty {..}
+    = ScalingInstructionProperty
+        {predictiveScalingMaxCapacityBehavior = Prelude.pure newValue, ..}
+instance Property "PredictiveScalingMaxCapacityBuffer" ScalingInstructionProperty where
+  type PropertyType "PredictiveScalingMaxCapacityBuffer" ScalingInstructionProperty = Value Prelude.Integer
+  set newValue ScalingInstructionProperty {..}
+    = ScalingInstructionProperty
+        {predictiveScalingMaxCapacityBuffer = Prelude.pure newValue, ..}
+instance Property "PredictiveScalingMode" ScalingInstructionProperty where
+  type PropertyType "PredictiveScalingMode" ScalingInstructionProperty = Value Prelude.Text
+  set newValue ScalingInstructionProperty {..}
+    = ScalingInstructionProperty
+        {predictiveScalingMode = Prelude.pure newValue, ..}
+instance Property "ResourceId" ScalingInstructionProperty where
+  type PropertyType "ResourceId" ScalingInstructionProperty = Value Prelude.Text
+  set newValue ScalingInstructionProperty {..}
+    = ScalingInstructionProperty {resourceId = newValue, ..}
+instance Property "ScalableDimension" ScalingInstructionProperty where
+  type PropertyType "ScalableDimension" ScalingInstructionProperty = Value Prelude.Text
+  set newValue ScalingInstructionProperty {..}
+    = ScalingInstructionProperty {scalableDimension = newValue, ..}
+instance Property "ScalingPolicyUpdateBehavior" ScalingInstructionProperty where
+  type PropertyType "ScalingPolicyUpdateBehavior" ScalingInstructionProperty = Value Prelude.Text
+  set newValue ScalingInstructionProperty {..}
+    = ScalingInstructionProperty
+        {scalingPolicyUpdateBehavior = Prelude.pure newValue, ..}
+instance Property "ScheduledActionBufferTime" ScalingInstructionProperty where
+  type PropertyType "ScheduledActionBufferTime" ScalingInstructionProperty = Value Prelude.Integer
+  set newValue ScalingInstructionProperty {..}
+    = ScalingInstructionProperty
+        {scheduledActionBufferTime = Prelude.pure newValue, ..}
+instance Property "ServiceNamespace" ScalingInstructionProperty where
+  type PropertyType "ServiceNamespace" ScalingInstructionProperty = Value Prelude.Text
+  set newValue ScalingInstructionProperty {..}
+    = ScalingInstructionProperty {serviceNamespace = newValue, ..}
+instance Property "TargetTrackingConfigurations" ScalingInstructionProperty where
+  type PropertyType "TargetTrackingConfigurations" ScalingInstructionProperty = [TargetTrackingConfigurationProperty]
+  set newValue ScalingInstructionProperty {..}
+    = ScalingInstructionProperty
+        {targetTrackingConfigurations = newValue, ..}
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/ScalingInstructionProperty.hs-boot b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/ScalingInstructionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/ScalingInstructionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.ScalingInstructionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ScalingInstructionProperty :: Prelude.Type
+instance ToResourceProperties ScalingInstructionProperty
+instance Prelude.Eq ScalingInstructionProperty
+instance Prelude.Show ScalingInstructionProperty
+instance JSON.ToJSON ScalingInstructionProperty
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/TagFilterProperty.hs b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/TagFilterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/TagFilterProperty.hs
@@ -0,0 +1,44 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.TagFilterProperty (
+        TagFilterProperty(..), mkTagFilterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TagFilterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-tagfilter.html>
+    TagFilterProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-tagfilter.html#cfn-autoscalingplans-scalingplan-tagfilter-key>
+                       key :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-tagfilter.html#cfn-autoscalingplans-scalingplan-tagfilter-values>
+                       values :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTagFilterProperty :: Value Prelude.Text -> TagFilterProperty
+mkTagFilterProperty key
+  = TagFilterProperty
+      {haddock_workaround_ = (), key = key, values = Prelude.Nothing}
+instance ToResourceProperties TagFilterProperty where
+  toResourceProperties TagFilterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScalingPlans::ScalingPlan.TagFilter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Key" JSON..= key]
+                           (Prelude.catMaybes [(JSON..=) "Values" Prelude.<$> values]))}
+instance JSON.ToJSON TagFilterProperty where
+  toJSON TagFilterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Key" JSON..= key]
+              (Prelude.catMaybes [(JSON..=) "Values" Prelude.<$> values])))
+instance Property "Key" TagFilterProperty where
+  type PropertyType "Key" TagFilterProperty = Value Prelude.Text
+  set newValue TagFilterProperty {..}
+    = TagFilterProperty {key = newValue, ..}
+instance Property "Values" TagFilterProperty where
+  type PropertyType "Values" TagFilterProperty = ValueList Prelude.Text
+  set newValue TagFilterProperty {..}
+    = TagFilterProperty {values = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/TagFilterProperty.hs-boot b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/TagFilterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/TagFilterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.TagFilterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TagFilterProperty :: Prelude.Type
+instance ToResourceProperties TagFilterProperty
+instance Prelude.Eq TagFilterProperty
+instance Prelude.Show TagFilterProperty
+instance JSON.ToJSON TagFilterProperty
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/TargetTrackingConfigurationProperty.hs b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/TargetTrackingConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/TargetTrackingConfigurationProperty.hs
@@ -0,0 +1,108 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.TargetTrackingConfigurationProperty (
+        module Exports, TargetTrackingConfigurationProperty(..),
+        mkTargetTrackingConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.CustomizedScalingMetricSpecificationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.PredefinedScalingMetricSpecificationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TargetTrackingConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html>
+    TargetTrackingConfigurationProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html#cfn-autoscalingplans-scalingplan-targettrackingconfiguration-customizedscalingmetricspecification>
+                                         customizedScalingMetricSpecification :: (Prelude.Maybe CustomizedScalingMetricSpecificationProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html#cfn-autoscalingplans-scalingplan-targettrackingconfiguration-disablescalein>
+                                         disableScaleIn :: (Prelude.Maybe (Value Prelude.Bool)),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html#cfn-autoscalingplans-scalingplan-targettrackingconfiguration-estimatedinstancewarmup>
+                                         estimatedInstanceWarmup :: (Prelude.Maybe (Value Prelude.Integer)),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html#cfn-autoscalingplans-scalingplan-targettrackingconfiguration-predefinedscalingmetricspecification>
+                                         predefinedScalingMetricSpecification :: (Prelude.Maybe PredefinedScalingMetricSpecificationProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html#cfn-autoscalingplans-scalingplan-targettrackingconfiguration-scaleincooldown>
+                                         scaleInCooldown :: (Prelude.Maybe (Value Prelude.Integer)),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html#cfn-autoscalingplans-scalingplan-targettrackingconfiguration-scaleoutcooldown>
+                                         scaleOutCooldown :: (Prelude.Maybe (Value Prelude.Integer)),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html#cfn-autoscalingplans-scalingplan-targettrackingconfiguration-targetvalue>
+                                         targetValue :: (Value Prelude.Double)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTargetTrackingConfigurationProperty ::
+  Value Prelude.Double -> TargetTrackingConfigurationProperty
+mkTargetTrackingConfigurationProperty targetValue
+  = TargetTrackingConfigurationProperty
+      {haddock_workaround_ = (), targetValue = targetValue,
+       customizedScalingMetricSpecification = Prelude.Nothing,
+       disableScaleIn = Prelude.Nothing,
+       estimatedInstanceWarmup = Prelude.Nothing,
+       predefinedScalingMetricSpecification = Prelude.Nothing,
+       scaleInCooldown = Prelude.Nothing,
+       scaleOutCooldown = Prelude.Nothing}
+instance ToResourceProperties TargetTrackingConfigurationProperty where
+  toResourceProperties TargetTrackingConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScalingPlans::ScalingPlan.TargetTrackingConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["TargetValue" JSON..= targetValue]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CustomizedScalingMetricSpecification"
+                                 Prelude.<$> customizedScalingMetricSpecification,
+                               (JSON..=) "DisableScaleIn" Prelude.<$> disableScaleIn,
+                               (JSON..=) "EstimatedInstanceWarmup"
+                                 Prelude.<$> estimatedInstanceWarmup,
+                               (JSON..=) "PredefinedScalingMetricSpecification"
+                                 Prelude.<$> predefinedScalingMetricSpecification,
+                               (JSON..=) "ScaleInCooldown" Prelude.<$> scaleInCooldown,
+                               (JSON..=) "ScaleOutCooldown" Prelude.<$> scaleOutCooldown]))}
+instance JSON.ToJSON TargetTrackingConfigurationProperty where
+  toJSON TargetTrackingConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["TargetValue" JSON..= targetValue]
+              (Prelude.catMaybes
+                 [(JSON..=) "CustomizedScalingMetricSpecification"
+                    Prelude.<$> customizedScalingMetricSpecification,
+                  (JSON..=) "DisableScaleIn" Prelude.<$> disableScaleIn,
+                  (JSON..=) "EstimatedInstanceWarmup"
+                    Prelude.<$> estimatedInstanceWarmup,
+                  (JSON..=) "PredefinedScalingMetricSpecification"
+                    Prelude.<$> predefinedScalingMetricSpecification,
+                  (JSON..=) "ScaleInCooldown" Prelude.<$> scaleInCooldown,
+                  (JSON..=) "ScaleOutCooldown" Prelude.<$> scaleOutCooldown])))
+instance Property "CustomizedScalingMetricSpecification" TargetTrackingConfigurationProperty where
+  type PropertyType "CustomizedScalingMetricSpecification" TargetTrackingConfigurationProperty = CustomizedScalingMetricSpecificationProperty
+  set newValue TargetTrackingConfigurationProperty {..}
+    = TargetTrackingConfigurationProperty
+        {customizedScalingMetricSpecification = Prelude.pure newValue, ..}
+instance Property "DisableScaleIn" TargetTrackingConfigurationProperty where
+  type PropertyType "DisableScaleIn" TargetTrackingConfigurationProperty = Value Prelude.Bool
+  set newValue TargetTrackingConfigurationProperty {..}
+    = TargetTrackingConfigurationProperty
+        {disableScaleIn = Prelude.pure newValue, ..}
+instance Property "EstimatedInstanceWarmup" TargetTrackingConfigurationProperty where
+  type PropertyType "EstimatedInstanceWarmup" TargetTrackingConfigurationProperty = Value Prelude.Integer
+  set newValue TargetTrackingConfigurationProperty {..}
+    = TargetTrackingConfigurationProperty
+        {estimatedInstanceWarmup = Prelude.pure newValue, ..}
+instance Property "PredefinedScalingMetricSpecification" TargetTrackingConfigurationProperty where
+  type PropertyType "PredefinedScalingMetricSpecification" TargetTrackingConfigurationProperty = PredefinedScalingMetricSpecificationProperty
+  set newValue TargetTrackingConfigurationProperty {..}
+    = TargetTrackingConfigurationProperty
+        {predefinedScalingMetricSpecification = Prelude.pure newValue, ..}
+instance Property "ScaleInCooldown" TargetTrackingConfigurationProperty where
+  type PropertyType "ScaleInCooldown" TargetTrackingConfigurationProperty = Value Prelude.Integer
+  set newValue TargetTrackingConfigurationProperty {..}
+    = TargetTrackingConfigurationProperty
+        {scaleInCooldown = Prelude.pure newValue, ..}
+instance Property "ScaleOutCooldown" TargetTrackingConfigurationProperty where
+  type PropertyType "ScaleOutCooldown" TargetTrackingConfigurationProperty = Value Prelude.Integer
+  set newValue TargetTrackingConfigurationProperty {..}
+    = TargetTrackingConfigurationProperty
+        {scaleOutCooldown = Prelude.pure newValue, ..}
+instance Property "TargetValue" TargetTrackingConfigurationProperty where
+  type PropertyType "TargetValue" TargetTrackingConfigurationProperty = Value Prelude.Double
+  set newValue TargetTrackingConfigurationProperty {..}
+    = TargetTrackingConfigurationProperty {targetValue = newValue, ..}
diff --git a/gen/Stratosphere/AutoScalingPlans/ScalingPlan/TargetTrackingConfigurationProperty.hs-boot b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/TargetTrackingConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScalingPlans/ScalingPlan/TargetTrackingConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScalingPlans.ScalingPlan.TargetTrackingConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TargetTrackingConfigurationProperty :: Prelude.Type
+instance ToResourceProperties TargetTrackingConfigurationProperty
+instance Prelude.Eq TargetTrackingConfigurationProperty
+instance Prelude.Show TargetTrackingConfigurationProperty
+instance JSON.ToJSON TargetTrackingConfigurationProperty
diff --git a/stratosphere-autoscalingplans.cabal b/stratosphere-autoscalingplans.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-autoscalingplans.cabal
@@ -0,0 +1,82 @@
+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-autoscalingplans
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS AutoScalingPlans.
+description:    Integration into stratosphere to generate resources and properties for AWS AutoScalingPlans
+category:       AWS, Cloud, AutoScalingPlans
+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.AutoScalingPlans.ScalingPlan
+      Stratosphere.AutoScalingPlans.ScalingPlan.ApplicationSourceProperty
+      Stratosphere.AutoScalingPlans.ScalingPlan.CustomizedLoadMetricSpecificationProperty
+      Stratosphere.AutoScalingPlans.ScalingPlan.CustomizedScalingMetricSpecificationProperty
+      Stratosphere.AutoScalingPlans.ScalingPlan.MetricDimensionProperty
+      Stratosphere.AutoScalingPlans.ScalingPlan.PredefinedLoadMetricSpecificationProperty
+      Stratosphere.AutoScalingPlans.ScalingPlan.PredefinedScalingMetricSpecificationProperty
+      Stratosphere.AutoScalingPlans.ScalingPlan.ScalingInstructionProperty
+      Stratosphere.AutoScalingPlans.ScalingPlan.TagFilterProperty
+      Stratosphere.AutoScalingPlans.ScalingPlan.TargetTrackingConfigurationProperty
+  other-modules:
+      Paths_stratosphere_autoscalingplans
+  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
