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/ApplicationAutoScaling/ScalableTarget.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget.hs
@@ -0,0 +1,108 @@
+module Stratosphere.ApplicationAutoScaling.ScalableTarget (
+        module Exports, ScalableTarget(..), mkScalableTarget
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalableTarget.ScheduledActionProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalableTarget.SuspendedStateProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ScalableTarget
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html>
+    ScalableTarget {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-maxcapacity>
+                    maxCapacity :: (Value Prelude.Integer),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-mincapacity>
+                    minCapacity :: (Value Prelude.Integer),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-resourceid>
+                    resourceId :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-rolearn>
+                    roleARN :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-scalabledimension>
+                    scalableDimension :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-scheduledactions>
+                    scheduledActions :: (Prelude.Maybe [ScheduledActionProperty]),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-servicenamespace>
+                    serviceNamespace :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-suspendedstate>
+                    suspendedState :: (Prelude.Maybe SuspendedStateProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScalableTarget ::
+  Value Prelude.Integer
+  -> Value Prelude.Integer
+     -> Value Prelude.Text
+        -> Value Prelude.Text -> Value Prelude.Text -> ScalableTarget
+mkScalableTarget
+  maxCapacity
+  minCapacity
+  resourceId
+  scalableDimension
+  serviceNamespace
+  = ScalableTarget
+      {haddock_workaround_ = (), maxCapacity = maxCapacity,
+       minCapacity = minCapacity, resourceId = resourceId,
+       scalableDimension = scalableDimension,
+       serviceNamespace = serviceNamespace, roleARN = Prelude.Nothing,
+       scheduledActions = Prelude.Nothing,
+       suspendedState = Prelude.Nothing}
+instance ToResourceProperties ScalableTarget where
+  toResourceProperties ScalableTarget {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalableTarget",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["MaxCapacity" JSON..= maxCapacity,
+                            "MinCapacity" JSON..= minCapacity, "ResourceId" JSON..= resourceId,
+                            "ScalableDimension" JSON..= scalableDimension,
+                            "ServiceNamespace" JSON..= serviceNamespace]
+                           (Prelude.catMaybes
+                              [(JSON..=) "RoleARN" Prelude.<$> roleARN,
+                               (JSON..=) "ScheduledActions" Prelude.<$> scheduledActions,
+                               (JSON..=) "SuspendedState" Prelude.<$> suspendedState]))}
+instance JSON.ToJSON ScalableTarget where
+  toJSON ScalableTarget {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["MaxCapacity" JSON..= maxCapacity,
+               "MinCapacity" JSON..= minCapacity, "ResourceId" JSON..= resourceId,
+               "ScalableDimension" JSON..= scalableDimension,
+               "ServiceNamespace" JSON..= serviceNamespace]
+              (Prelude.catMaybes
+                 [(JSON..=) "RoleARN" Prelude.<$> roleARN,
+                  (JSON..=) "ScheduledActions" Prelude.<$> scheduledActions,
+                  (JSON..=) "SuspendedState" Prelude.<$> suspendedState])))
+instance Property "MaxCapacity" ScalableTarget where
+  type PropertyType "MaxCapacity" ScalableTarget = Value Prelude.Integer
+  set newValue ScalableTarget {..}
+    = ScalableTarget {maxCapacity = newValue, ..}
+instance Property "MinCapacity" ScalableTarget where
+  type PropertyType "MinCapacity" ScalableTarget = Value Prelude.Integer
+  set newValue ScalableTarget {..}
+    = ScalableTarget {minCapacity = newValue, ..}
+instance Property "ResourceId" ScalableTarget where
+  type PropertyType "ResourceId" ScalableTarget = Value Prelude.Text
+  set newValue ScalableTarget {..}
+    = ScalableTarget {resourceId = newValue, ..}
+instance Property "RoleARN" ScalableTarget where
+  type PropertyType "RoleARN" ScalableTarget = Value Prelude.Text
+  set newValue ScalableTarget {..}
+    = ScalableTarget {roleARN = Prelude.pure newValue, ..}
+instance Property "ScalableDimension" ScalableTarget where
+  type PropertyType "ScalableDimension" ScalableTarget = Value Prelude.Text
+  set newValue ScalableTarget {..}
+    = ScalableTarget {scalableDimension = newValue, ..}
+instance Property "ScheduledActions" ScalableTarget where
+  type PropertyType "ScheduledActions" ScalableTarget = [ScheduledActionProperty]
+  set newValue ScalableTarget {..}
+    = ScalableTarget {scheduledActions = Prelude.pure newValue, ..}
+instance Property "ServiceNamespace" ScalableTarget where
+  type PropertyType "ServiceNamespace" ScalableTarget = Value Prelude.Text
+  set newValue ScalableTarget {..}
+    = ScalableTarget {serviceNamespace = newValue, ..}
+instance Property "SuspendedState" ScalableTarget where
+  type PropertyType "SuspendedState" ScalableTarget = SuspendedStateProperty
+  set newValue ScalableTarget {..}
+    = ScalableTarget {suspendedState = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/ScalableTargetActionProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/ScalableTargetActionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/ScalableTargetActionProperty.hs
@@ -0,0 +1,47 @@
+module Stratosphere.ApplicationAutoScaling.ScalableTarget.ScalableTargetActionProperty (
+        ScalableTargetActionProperty(..), mkScalableTargetActionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ScalableTargetActionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scalabletargetaction.html>
+    ScalableTargetActionProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scalabletargetaction.html#cfn-applicationautoscaling-scalabletarget-scalabletargetaction-maxcapacity>
+                                  maxCapacity :: (Prelude.Maybe (Value Prelude.Integer)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scalabletargetaction.html#cfn-applicationautoscaling-scalabletarget-scalabletargetaction-mincapacity>
+                                  minCapacity :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScalableTargetActionProperty :: ScalableTargetActionProperty
+mkScalableTargetActionProperty
+  = ScalableTargetActionProperty
+      {haddock_workaround_ = (), maxCapacity = Prelude.Nothing,
+       minCapacity = Prelude.Nothing}
+instance ToResourceProperties ScalableTargetActionProperty where
+  toResourceProperties ScalableTargetActionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalableTarget.ScalableTargetAction",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "MaxCapacity" Prelude.<$> maxCapacity,
+                            (JSON..=) "MinCapacity" Prelude.<$> minCapacity])}
+instance JSON.ToJSON ScalableTargetActionProperty where
+  toJSON ScalableTargetActionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "MaxCapacity" Prelude.<$> maxCapacity,
+               (JSON..=) "MinCapacity" Prelude.<$> minCapacity]))
+instance Property "MaxCapacity" ScalableTargetActionProperty where
+  type PropertyType "MaxCapacity" ScalableTargetActionProperty = Value Prelude.Integer
+  set newValue ScalableTargetActionProperty {..}
+    = ScalableTargetActionProperty
+        {maxCapacity = Prelude.pure newValue, ..}
+instance Property "MinCapacity" ScalableTargetActionProperty where
+  type PropertyType "MinCapacity" ScalableTargetActionProperty = Value Prelude.Integer
+  set newValue ScalableTargetActionProperty {..}
+    = ScalableTargetActionProperty
+        {minCapacity = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/ScalableTargetActionProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/ScalableTargetActionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/ScalableTargetActionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalableTarget.ScalableTargetActionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ScalableTargetActionProperty :: Prelude.Type
+instance ToResourceProperties ScalableTargetActionProperty
+instance Prelude.Eq ScalableTargetActionProperty
+instance Prelude.Show ScalableTargetActionProperty
+instance JSON.ToJSON ScalableTargetActionProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/ScheduledActionProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/ScheduledActionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/ScheduledActionProperty.hs
@@ -0,0 +1,85 @@
+module Stratosphere.ApplicationAutoScaling.ScalableTarget.ScheduledActionProperty (
+        module Exports, ScheduledActionProperty(..),
+        mkScheduledActionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalableTarget.ScalableTargetActionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ScheduledActionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html>
+    ScheduledActionProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html#cfn-applicationautoscaling-scalabletarget-scheduledaction-endtime>
+                             endTime :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html#cfn-applicationautoscaling-scalabletarget-scheduledaction-scalabletargetaction>
+                             scalableTargetAction :: (Prelude.Maybe ScalableTargetActionProperty),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html#cfn-applicationautoscaling-scalabletarget-scheduledaction-schedule>
+                             schedule :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html#cfn-applicationautoscaling-scalabletarget-scheduledaction-scheduledactionname>
+                             scheduledActionName :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html#cfn-applicationautoscaling-scalabletarget-scheduledaction-starttime>
+                             startTime :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html#cfn-applicationautoscaling-scalabletarget-scheduledaction-timezone>
+                             timezone :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScheduledActionProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> ScheduledActionProperty
+mkScheduledActionProperty schedule scheduledActionName
+  = ScheduledActionProperty
+      {haddock_workaround_ = (), schedule = schedule,
+       scheduledActionName = scheduledActionName,
+       endTime = Prelude.Nothing, scalableTargetAction = Prelude.Nothing,
+       startTime = Prelude.Nothing, timezone = Prelude.Nothing}
+instance ToResourceProperties ScheduledActionProperty where
+  toResourceProperties ScheduledActionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalableTarget.ScheduledAction",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Schedule" JSON..= schedule,
+                            "ScheduledActionName" JSON..= scheduledActionName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "EndTime" Prelude.<$> endTime,
+                               (JSON..=) "ScalableTargetAction" Prelude.<$> scalableTargetAction,
+                               (JSON..=) "StartTime" Prelude.<$> startTime,
+                               (JSON..=) "Timezone" Prelude.<$> timezone]))}
+instance JSON.ToJSON ScheduledActionProperty where
+  toJSON ScheduledActionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Schedule" JSON..= schedule,
+               "ScheduledActionName" JSON..= scheduledActionName]
+              (Prelude.catMaybes
+                 [(JSON..=) "EndTime" Prelude.<$> endTime,
+                  (JSON..=) "ScalableTargetAction" Prelude.<$> scalableTargetAction,
+                  (JSON..=) "StartTime" Prelude.<$> startTime,
+                  (JSON..=) "Timezone" Prelude.<$> timezone])))
+instance Property "EndTime" ScheduledActionProperty where
+  type PropertyType "EndTime" ScheduledActionProperty = Value Prelude.Text
+  set newValue ScheduledActionProperty {..}
+    = ScheduledActionProperty {endTime = Prelude.pure newValue, ..}
+instance Property "ScalableTargetAction" ScheduledActionProperty where
+  type PropertyType "ScalableTargetAction" ScheduledActionProperty = ScalableTargetActionProperty
+  set newValue ScheduledActionProperty {..}
+    = ScheduledActionProperty
+        {scalableTargetAction = Prelude.pure newValue, ..}
+instance Property "Schedule" ScheduledActionProperty where
+  type PropertyType "Schedule" ScheduledActionProperty = Value Prelude.Text
+  set newValue ScheduledActionProperty {..}
+    = ScheduledActionProperty {schedule = newValue, ..}
+instance Property "ScheduledActionName" ScheduledActionProperty where
+  type PropertyType "ScheduledActionName" ScheduledActionProperty = Value Prelude.Text
+  set newValue ScheduledActionProperty {..}
+    = ScheduledActionProperty {scheduledActionName = newValue, ..}
+instance Property "StartTime" ScheduledActionProperty where
+  type PropertyType "StartTime" ScheduledActionProperty = Value Prelude.Text
+  set newValue ScheduledActionProperty {..}
+    = ScheduledActionProperty {startTime = Prelude.pure newValue, ..}
+instance Property "Timezone" ScheduledActionProperty where
+  type PropertyType "Timezone" ScheduledActionProperty = Value Prelude.Text
+  set newValue ScheduledActionProperty {..}
+    = ScheduledActionProperty {timezone = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/ScheduledActionProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/ScheduledActionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/ScheduledActionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalableTarget.ScheduledActionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ScheduledActionProperty :: Prelude.Type
+instance ToResourceProperties ScheduledActionProperty
+instance Prelude.Eq ScheduledActionProperty
+instance Prelude.Show ScheduledActionProperty
+instance JSON.ToJSON ScheduledActionProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/SuspendedStateProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/SuspendedStateProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/SuspendedStateProperty.hs
@@ -0,0 +1,64 @@
+module Stratosphere.ApplicationAutoScaling.ScalableTarget.SuspendedStateProperty (
+        SuspendedStateProperty(..), mkSuspendedStateProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SuspendedStateProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-suspendedstate.html>
+    SuspendedStateProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-suspendedstate.html#cfn-applicationautoscaling-scalabletarget-suspendedstate-dynamicscalinginsuspended>
+                            dynamicScalingInSuspended :: (Prelude.Maybe (Value Prelude.Bool)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-suspendedstate.html#cfn-applicationautoscaling-scalabletarget-suspendedstate-dynamicscalingoutsuspended>
+                            dynamicScalingOutSuspended :: (Prelude.Maybe (Value Prelude.Bool)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-suspendedstate.html#cfn-applicationautoscaling-scalabletarget-suspendedstate-scheduledscalingsuspended>
+                            scheduledScalingSuspended :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSuspendedStateProperty :: SuspendedStateProperty
+mkSuspendedStateProperty
+  = SuspendedStateProperty
+      {haddock_workaround_ = (),
+       dynamicScalingInSuspended = Prelude.Nothing,
+       dynamicScalingOutSuspended = Prelude.Nothing,
+       scheduledScalingSuspended = Prelude.Nothing}
+instance ToResourceProperties SuspendedStateProperty where
+  toResourceProperties SuspendedStateProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalableTarget.SuspendedState",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DynamicScalingInSuspended"
+                              Prelude.<$> dynamicScalingInSuspended,
+                            (JSON..=) "DynamicScalingOutSuspended"
+                              Prelude.<$> dynamicScalingOutSuspended,
+                            (JSON..=) "ScheduledScalingSuspended"
+                              Prelude.<$> scheduledScalingSuspended])}
+instance JSON.ToJSON SuspendedStateProperty where
+  toJSON SuspendedStateProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DynamicScalingInSuspended"
+                 Prelude.<$> dynamicScalingInSuspended,
+               (JSON..=) "DynamicScalingOutSuspended"
+                 Prelude.<$> dynamicScalingOutSuspended,
+               (JSON..=) "ScheduledScalingSuspended"
+                 Prelude.<$> scheduledScalingSuspended]))
+instance Property "DynamicScalingInSuspended" SuspendedStateProperty where
+  type PropertyType "DynamicScalingInSuspended" SuspendedStateProperty = Value Prelude.Bool
+  set newValue SuspendedStateProperty {..}
+    = SuspendedStateProperty
+        {dynamicScalingInSuspended = Prelude.pure newValue, ..}
+instance Property "DynamicScalingOutSuspended" SuspendedStateProperty where
+  type PropertyType "DynamicScalingOutSuspended" SuspendedStateProperty = Value Prelude.Bool
+  set newValue SuspendedStateProperty {..}
+    = SuspendedStateProperty
+        {dynamicScalingOutSuspended = Prelude.pure newValue, ..}
+instance Property "ScheduledScalingSuspended" SuspendedStateProperty where
+  type PropertyType "ScheduledScalingSuspended" SuspendedStateProperty = Value Prelude.Bool
+  set newValue SuspendedStateProperty {..}
+    = SuspendedStateProperty
+        {scheduledScalingSuspended = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/SuspendedStateProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/SuspendedStateProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalableTarget/SuspendedStateProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalableTarget.SuspendedStateProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SuspendedStateProperty :: Prelude.Type
+instance ToResourceProperties SuspendedStateProperty
+instance Prelude.Eq SuspendedStateProperty
+instance Prelude.Show SuspendedStateProperty
+instance JSON.ToJSON SuspendedStateProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy.hs
@@ -0,0 +1,121 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy (
+        module Exports, ScalingPolicy(..), mkScalingPolicy
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPolicyConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.StepScalingPolicyConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingScalingPolicyConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ScalingPolicy
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html>
+    ScalingPolicy {haddock_workaround_ :: (),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-policyname>
+                   policyName :: (Value Prelude.Text),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-policytype>
+                   policyType :: (Value Prelude.Text),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingpolicyconfiguration>
+                   predictiveScalingPolicyConfiguration :: (Prelude.Maybe PredictiveScalingPolicyConfigurationProperty),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-resourceid>
+                   resourceId :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-scalabledimension>
+                   scalableDimension :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-scalingtargetid>
+                   scalingTargetId :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-servicenamespace>
+                   serviceNamespace :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration>
+                   stepScalingPolicyConfiguration :: (Prelude.Maybe StepScalingPolicyConfigurationProperty),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration>
+                   targetTrackingScalingPolicyConfiguration :: (Prelude.Maybe TargetTrackingScalingPolicyConfigurationProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScalingPolicy ::
+  Value Prelude.Text -> Value Prelude.Text -> ScalingPolicy
+mkScalingPolicy policyName policyType
+  = ScalingPolicy
+      {haddock_workaround_ = (), policyName = policyName,
+       policyType = policyType,
+       predictiveScalingPolicyConfiguration = Prelude.Nothing,
+       resourceId = Prelude.Nothing, scalableDimension = Prelude.Nothing,
+       scalingTargetId = Prelude.Nothing,
+       serviceNamespace = Prelude.Nothing,
+       stepScalingPolicyConfiguration = Prelude.Nothing,
+       targetTrackingScalingPolicyConfiguration = Prelude.Nothing}
+instance ToResourceProperties ScalingPolicy where
+  toResourceProperties ScalingPolicy {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["PolicyName" JSON..= policyName, "PolicyType" JSON..= policyType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "PredictiveScalingPolicyConfiguration"
+                                 Prelude.<$> predictiveScalingPolicyConfiguration,
+                               (JSON..=) "ResourceId" Prelude.<$> resourceId,
+                               (JSON..=) "ScalableDimension" Prelude.<$> scalableDimension,
+                               (JSON..=) "ScalingTargetId" Prelude.<$> scalingTargetId,
+                               (JSON..=) "ServiceNamespace" Prelude.<$> serviceNamespace,
+                               (JSON..=) "StepScalingPolicyConfiguration"
+                                 Prelude.<$> stepScalingPolicyConfiguration,
+                               (JSON..=) "TargetTrackingScalingPolicyConfiguration"
+                                 Prelude.<$> targetTrackingScalingPolicyConfiguration]))}
+instance JSON.ToJSON ScalingPolicy where
+  toJSON ScalingPolicy {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["PolicyName" JSON..= policyName, "PolicyType" JSON..= policyType]
+              (Prelude.catMaybes
+                 [(JSON..=) "PredictiveScalingPolicyConfiguration"
+                    Prelude.<$> predictiveScalingPolicyConfiguration,
+                  (JSON..=) "ResourceId" Prelude.<$> resourceId,
+                  (JSON..=) "ScalableDimension" Prelude.<$> scalableDimension,
+                  (JSON..=) "ScalingTargetId" Prelude.<$> scalingTargetId,
+                  (JSON..=) "ServiceNamespace" Prelude.<$> serviceNamespace,
+                  (JSON..=) "StepScalingPolicyConfiguration"
+                    Prelude.<$> stepScalingPolicyConfiguration,
+                  (JSON..=) "TargetTrackingScalingPolicyConfiguration"
+                    Prelude.<$> targetTrackingScalingPolicyConfiguration])))
+instance Property "PolicyName" ScalingPolicy where
+  type PropertyType "PolicyName" ScalingPolicy = Value Prelude.Text
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy {policyName = newValue, ..}
+instance Property "PolicyType" ScalingPolicy where
+  type PropertyType "PolicyType" ScalingPolicy = Value Prelude.Text
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy {policyType = newValue, ..}
+instance Property "PredictiveScalingPolicyConfiguration" ScalingPolicy where
+  type PropertyType "PredictiveScalingPolicyConfiguration" ScalingPolicy = PredictiveScalingPolicyConfigurationProperty
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy
+        {predictiveScalingPolicyConfiguration = Prelude.pure newValue, ..}
+instance Property "ResourceId" ScalingPolicy where
+  type PropertyType "ResourceId" ScalingPolicy = Value Prelude.Text
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy {resourceId = Prelude.pure newValue, ..}
+instance Property "ScalableDimension" ScalingPolicy where
+  type PropertyType "ScalableDimension" ScalingPolicy = Value Prelude.Text
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy {scalableDimension = Prelude.pure newValue, ..}
+instance Property "ScalingTargetId" ScalingPolicy where
+  type PropertyType "ScalingTargetId" ScalingPolicy = Value Prelude.Text
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy {scalingTargetId = Prelude.pure newValue, ..}
+instance Property "ServiceNamespace" ScalingPolicy where
+  type PropertyType "ServiceNamespace" ScalingPolicy = Value Prelude.Text
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy {serviceNamespace = Prelude.pure newValue, ..}
+instance Property "StepScalingPolicyConfiguration" ScalingPolicy where
+  type PropertyType "StepScalingPolicyConfiguration" ScalingPolicy = StepScalingPolicyConfigurationProperty
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy
+        {stepScalingPolicyConfiguration = Prelude.pure newValue, ..}
+instance Property "TargetTrackingScalingPolicyConfiguration" ScalingPolicy where
+  type PropertyType "TargetTrackingScalingPolicyConfiguration" ScalingPolicy = TargetTrackingScalingPolicyConfigurationProperty
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy
+        {targetTrackingScalingPolicyConfiguration = Prelude.pure newValue,
+         ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/CustomizedMetricSpecificationProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/CustomizedMetricSpecificationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/CustomizedMetricSpecificationProperty.hs
@@ -0,0 +1,89 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.CustomizedMetricSpecificationProperty (
+        module Exports, CustomizedMetricSpecificationProperty(..),
+        mkCustomizedMetricSpecificationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.MetricDimensionProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricDataQueryProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CustomizedMetricSpecificationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html>
+    CustomizedMetricSpecificationProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-customizedmetricspecification-dimensions>
+                                           dimensions :: (Prelude.Maybe [MetricDimensionProperty]),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-customizedmetricspecification-metricname>
+                                           metricName :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-customizedmetricspecification-metrics>
+                                           metrics :: (Prelude.Maybe [TargetTrackingMetricDataQueryProperty]),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-customizedmetricspecification-namespace>
+                                           namespace :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-customizedmetricspecification-statistic>
+                                           statistic :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-customizedmetricspecification-unit>
+                                           unit :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCustomizedMetricSpecificationProperty ::
+  CustomizedMetricSpecificationProperty
+mkCustomizedMetricSpecificationProperty
+  = CustomizedMetricSpecificationProperty
+      {haddock_workaround_ = (), dimensions = Prelude.Nothing,
+       metricName = Prelude.Nothing, metrics = Prelude.Nothing,
+       namespace = Prelude.Nothing, statistic = Prelude.Nothing,
+       unit = Prelude.Nothing}
+instance ToResourceProperties CustomizedMetricSpecificationProperty where
+  toResourceProperties CustomizedMetricSpecificationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.CustomizedMetricSpecification",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Dimensions" Prelude.<$> dimensions,
+                            (JSON..=) "MetricName" Prelude.<$> metricName,
+                            (JSON..=) "Metrics" Prelude.<$> metrics,
+                            (JSON..=) "Namespace" Prelude.<$> namespace,
+                            (JSON..=) "Statistic" Prelude.<$> statistic,
+                            (JSON..=) "Unit" Prelude.<$> unit])}
+instance JSON.ToJSON CustomizedMetricSpecificationProperty where
+  toJSON CustomizedMetricSpecificationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Dimensions" Prelude.<$> dimensions,
+               (JSON..=) "MetricName" Prelude.<$> metricName,
+               (JSON..=) "Metrics" Prelude.<$> metrics,
+               (JSON..=) "Namespace" Prelude.<$> namespace,
+               (JSON..=) "Statistic" Prelude.<$> statistic,
+               (JSON..=) "Unit" Prelude.<$> unit]))
+instance Property "Dimensions" CustomizedMetricSpecificationProperty where
+  type PropertyType "Dimensions" CustomizedMetricSpecificationProperty = [MetricDimensionProperty]
+  set newValue CustomizedMetricSpecificationProperty {..}
+    = CustomizedMetricSpecificationProperty
+        {dimensions = Prelude.pure newValue, ..}
+instance Property "MetricName" CustomizedMetricSpecificationProperty where
+  type PropertyType "MetricName" CustomizedMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedMetricSpecificationProperty {..}
+    = CustomizedMetricSpecificationProperty
+        {metricName = Prelude.pure newValue, ..}
+instance Property "Metrics" CustomizedMetricSpecificationProperty where
+  type PropertyType "Metrics" CustomizedMetricSpecificationProperty = [TargetTrackingMetricDataQueryProperty]
+  set newValue CustomizedMetricSpecificationProperty {..}
+    = CustomizedMetricSpecificationProperty
+        {metrics = Prelude.pure newValue, ..}
+instance Property "Namespace" CustomizedMetricSpecificationProperty where
+  type PropertyType "Namespace" CustomizedMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedMetricSpecificationProperty {..}
+    = CustomizedMetricSpecificationProperty
+        {namespace = Prelude.pure newValue, ..}
+instance Property "Statistic" CustomizedMetricSpecificationProperty where
+  type PropertyType "Statistic" CustomizedMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedMetricSpecificationProperty {..}
+    = CustomizedMetricSpecificationProperty
+        {statistic = Prelude.pure newValue, ..}
+instance Property "Unit" CustomizedMetricSpecificationProperty where
+  type PropertyType "Unit" CustomizedMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedMetricSpecificationProperty {..}
+    = CustomizedMetricSpecificationProperty
+        {unit = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/CustomizedMetricSpecificationProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/CustomizedMetricSpecificationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/CustomizedMetricSpecificationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.CustomizedMetricSpecificationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CustomizedMetricSpecificationProperty :: Prelude.Type
+instance ToResourceProperties CustomizedMetricSpecificationProperty
+instance Prelude.Eq CustomizedMetricSpecificationProperty
+instance Prelude.Show CustomizedMetricSpecificationProperty
+instance JSON.ToJSON CustomizedMetricSpecificationProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/MetricDimensionProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/MetricDimensionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/MetricDimensionProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.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-applicationautoscaling-scalingpolicy-metricdimension.html>
+    MetricDimensionProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-metricdimension.html#cfn-applicationautoscaling-scalingpolicy-metricdimension-name>
+                             name :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-metricdimension.html#cfn-applicationautoscaling-scalingpolicy-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::ApplicationAutoScaling::ScalingPolicy.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/ApplicationAutoScaling/ScalingPolicy/MetricDimensionProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/MetricDimensionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/MetricDimensionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.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/ApplicationAutoScaling/ScalingPolicy/PredefinedMetricSpecificationProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredefinedMetricSpecificationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredefinedMetricSpecificationProperty.hs
@@ -0,0 +1,52 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredefinedMetricSpecificationProperty (
+        PredefinedMetricSpecificationProperty(..),
+        mkPredefinedMetricSpecificationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredefinedMetricSpecificationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predefinedmetricspecification.html>
+    PredefinedMetricSpecificationProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predefinedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-predefinedmetricspecification-predefinedmetrictype>
+                                           predefinedMetricType :: (Value Prelude.Text),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predefinedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-predefinedmetricspecification-resourcelabel>
+                                           resourceLabel :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredefinedMetricSpecificationProperty ::
+  Value Prelude.Text -> PredefinedMetricSpecificationProperty
+mkPredefinedMetricSpecificationProperty predefinedMetricType
+  = PredefinedMetricSpecificationProperty
+      {haddock_workaround_ = (),
+       predefinedMetricType = predefinedMetricType,
+       resourceLabel = Prelude.Nothing}
+instance ToResourceProperties PredefinedMetricSpecificationProperty where
+  toResourceProperties PredefinedMetricSpecificationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.PredefinedMetricSpecification",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["PredefinedMetricType" JSON..= predefinedMetricType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel]))}
+instance JSON.ToJSON PredefinedMetricSpecificationProperty where
+  toJSON PredefinedMetricSpecificationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["PredefinedMetricType" JSON..= predefinedMetricType]
+              (Prelude.catMaybes
+                 [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel])))
+instance Property "PredefinedMetricType" PredefinedMetricSpecificationProperty where
+  type PropertyType "PredefinedMetricType" PredefinedMetricSpecificationProperty = Value Prelude.Text
+  set newValue PredefinedMetricSpecificationProperty {..}
+    = PredefinedMetricSpecificationProperty
+        {predefinedMetricType = newValue, ..}
+instance Property "ResourceLabel" PredefinedMetricSpecificationProperty where
+  type PropertyType "ResourceLabel" PredefinedMetricSpecificationProperty = Value Prelude.Text
+  set newValue PredefinedMetricSpecificationProperty {..}
+    = PredefinedMetricSpecificationProperty
+        {resourceLabel = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredefinedMetricSpecificationProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredefinedMetricSpecificationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredefinedMetricSpecificationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredefinedMetricSpecificationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredefinedMetricSpecificationProperty :: Prelude.Type
+instance ToResourceProperties PredefinedMetricSpecificationProperty
+instance Prelude.Eq PredefinedMetricSpecificationProperty
+instance Prelude.Show PredefinedMetricSpecificationProperty
+instance JSON.ToJSON PredefinedMetricSpecificationProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedCapacityMetricProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedCapacityMetricProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedCapacityMetricProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingCustomizedCapacityMetricProperty (
+        module Exports,
+        PredictiveScalingCustomizedCapacityMetricProperty(..),
+        mkPredictiveScalingCustomizedCapacityMetricProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricDataQueryProperty as Exports
+import Stratosphere.ResourceProperties
+data PredictiveScalingCustomizedCapacityMetricProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingcustomizedcapacitymetric.html>
+    PredictiveScalingCustomizedCapacityMetricProperty {haddock_workaround_ :: (),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingcustomizedcapacitymetric.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingcustomizedcapacitymetric-metricdataqueries>
+                                                       metricDataQueries :: [PredictiveScalingMetricDataQueryProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingCustomizedCapacityMetricProperty ::
+  [PredictiveScalingMetricDataQueryProperty]
+  -> PredictiveScalingCustomizedCapacityMetricProperty
+mkPredictiveScalingCustomizedCapacityMetricProperty
+  metricDataQueries
+  = PredictiveScalingCustomizedCapacityMetricProperty
+      {haddock_workaround_ = (), metricDataQueries = metricDataQueries}
+instance ToResourceProperties PredictiveScalingCustomizedCapacityMetricProperty where
+  toResourceProperties
+    PredictiveScalingCustomizedCapacityMetricProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.PredictiveScalingCustomizedCapacityMetric",
+         supportsTags = Prelude.False,
+         properties = ["MetricDataQueries" JSON..= metricDataQueries]}
+instance JSON.ToJSON PredictiveScalingCustomizedCapacityMetricProperty where
+  toJSON PredictiveScalingCustomizedCapacityMetricProperty {..}
+    = JSON.object ["MetricDataQueries" JSON..= metricDataQueries]
+instance Property "MetricDataQueries" PredictiveScalingCustomizedCapacityMetricProperty where
+  type PropertyType "MetricDataQueries" PredictiveScalingCustomizedCapacityMetricProperty = [PredictiveScalingMetricDataQueryProperty]
+  set newValue PredictiveScalingCustomizedCapacityMetricProperty {..}
+    = PredictiveScalingCustomizedCapacityMetricProperty
+        {metricDataQueries = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedCapacityMetricProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedCapacityMetricProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedCapacityMetricProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingCustomizedCapacityMetricProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingCustomizedCapacityMetricProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingCustomizedCapacityMetricProperty
+instance Prelude.Eq PredictiveScalingCustomizedCapacityMetricProperty
+instance Prelude.Show PredictiveScalingCustomizedCapacityMetricProperty
+instance JSON.ToJSON PredictiveScalingCustomizedCapacityMetricProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedLoadMetricProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedLoadMetricProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedLoadMetricProperty.hs
@@ -0,0 +1,36 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingCustomizedLoadMetricProperty (
+        module Exports, PredictiveScalingCustomizedLoadMetricProperty(..),
+        mkPredictiveScalingCustomizedLoadMetricProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricDataQueryProperty as Exports
+import Stratosphere.ResourceProperties
+data PredictiveScalingCustomizedLoadMetricProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingcustomizedloadmetric.html>
+    PredictiveScalingCustomizedLoadMetricProperty {haddock_workaround_ :: (),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingcustomizedloadmetric.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingcustomizedloadmetric-metricdataqueries>
+                                                   metricDataQueries :: [PredictiveScalingMetricDataQueryProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingCustomizedLoadMetricProperty ::
+  [PredictiveScalingMetricDataQueryProperty]
+  -> PredictiveScalingCustomizedLoadMetricProperty
+mkPredictiveScalingCustomizedLoadMetricProperty metricDataQueries
+  = PredictiveScalingCustomizedLoadMetricProperty
+      {haddock_workaround_ = (), metricDataQueries = metricDataQueries}
+instance ToResourceProperties PredictiveScalingCustomizedLoadMetricProperty where
+  toResourceProperties
+    PredictiveScalingCustomizedLoadMetricProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.PredictiveScalingCustomizedLoadMetric",
+         supportsTags = Prelude.False,
+         properties = ["MetricDataQueries" JSON..= metricDataQueries]}
+instance JSON.ToJSON PredictiveScalingCustomizedLoadMetricProperty where
+  toJSON PredictiveScalingCustomizedLoadMetricProperty {..}
+    = JSON.object ["MetricDataQueries" JSON..= metricDataQueries]
+instance Property "MetricDataQueries" PredictiveScalingCustomizedLoadMetricProperty where
+  type PropertyType "MetricDataQueries" PredictiveScalingCustomizedLoadMetricProperty = [PredictiveScalingMetricDataQueryProperty]
+  set newValue PredictiveScalingCustomizedLoadMetricProperty {..}
+    = PredictiveScalingCustomizedLoadMetricProperty
+        {metricDataQueries = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedLoadMetricProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedLoadMetricProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedLoadMetricProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingCustomizedLoadMetricProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingCustomizedLoadMetricProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingCustomizedLoadMetricProperty
+instance Prelude.Eq PredictiveScalingCustomizedLoadMetricProperty
+instance Prelude.Show PredictiveScalingCustomizedLoadMetricProperty
+instance JSON.ToJSON PredictiveScalingCustomizedLoadMetricProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedScalingMetricProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedScalingMetricProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedScalingMetricProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingCustomizedScalingMetricProperty (
+        module Exports,
+        PredictiveScalingCustomizedScalingMetricProperty(..),
+        mkPredictiveScalingCustomizedScalingMetricProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricDataQueryProperty as Exports
+import Stratosphere.ResourceProperties
+data PredictiveScalingCustomizedScalingMetricProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingcustomizedscalingmetric.html>
+    PredictiveScalingCustomizedScalingMetricProperty {haddock_workaround_ :: (),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingcustomizedscalingmetric.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingcustomizedscalingmetric-metricdataqueries>
+                                                      metricDataQueries :: [PredictiveScalingMetricDataQueryProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingCustomizedScalingMetricProperty ::
+  [PredictiveScalingMetricDataQueryProperty]
+  -> PredictiveScalingCustomizedScalingMetricProperty
+mkPredictiveScalingCustomizedScalingMetricProperty
+  metricDataQueries
+  = PredictiveScalingCustomizedScalingMetricProperty
+      {haddock_workaround_ = (), metricDataQueries = metricDataQueries}
+instance ToResourceProperties PredictiveScalingCustomizedScalingMetricProperty where
+  toResourceProperties
+    PredictiveScalingCustomizedScalingMetricProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.PredictiveScalingCustomizedScalingMetric",
+         supportsTags = Prelude.False,
+         properties = ["MetricDataQueries" JSON..= metricDataQueries]}
+instance JSON.ToJSON PredictiveScalingCustomizedScalingMetricProperty where
+  toJSON PredictiveScalingCustomizedScalingMetricProperty {..}
+    = JSON.object ["MetricDataQueries" JSON..= metricDataQueries]
+instance Property "MetricDataQueries" PredictiveScalingCustomizedScalingMetricProperty where
+  type PropertyType "MetricDataQueries" PredictiveScalingCustomizedScalingMetricProperty = [PredictiveScalingMetricDataQueryProperty]
+  set newValue PredictiveScalingCustomizedScalingMetricProperty {..}
+    = PredictiveScalingCustomizedScalingMetricProperty
+        {metricDataQueries = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedScalingMetricProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedScalingMetricProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingCustomizedScalingMetricProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingCustomizedScalingMetricProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingCustomizedScalingMetricProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingCustomizedScalingMetricProperty
+instance Prelude.Eq PredictiveScalingCustomizedScalingMetricProperty
+instance Prelude.Show PredictiveScalingCustomizedScalingMetricProperty
+instance JSON.ToJSON PredictiveScalingCustomizedScalingMetricProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricDataQueryProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricDataQueryProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricDataQueryProperty.hs
@@ -0,0 +1,76 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricDataQueryProperty (
+        module Exports, PredictiveScalingMetricDataQueryProperty(..),
+        mkPredictiveScalingMetricDataQueryProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricStatProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredictiveScalingMetricDataQueryProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricdataquery.html>
+    PredictiveScalingMetricDataQueryProperty {haddock_workaround_ :: (),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricdataquery.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricdataquery-expression>
+                                              expression :: (Prelude.Maybe (Value Prelude.Text)),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricdataquery.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricdataquery-id>
+                                              id :: (Prelude.Maybe (Value Prelude.Text)),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricdataquery.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricdataquery-label>
+                                              label :: (Prelude.Maybe (Value Prelude.Text)),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricdataquery.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricdataquery-metricstat>
+                                              metricStat :: (Prelude.Maybe PredictiveScalingMetricStatProperty),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricdataquery.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricdataquery-returndata>
+                                              returnData :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingMetricDataQueryProperty ::
+  PredictiveScalingMetricDataQueryProperty
+mkPredictiveScalingMetricDataQueryProperty
+  = PredictiveScalingMetricDataQueryProperty
+      {haddock_workaround_ = (), expression = Prelude.Nothing,
+       id = Prelude.Nothing, label = Prelude.Nothing,
+       metricStat = Prelude.Nothing, returnData = Prelude.Nothing}
+instance ToResourceProperties PredictiveScalingMetricDataQueryProperty where
+  toResourceProperties PredictiveScalingMetricDataQueryProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.PredictiveScalingMetricDataQuery",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Expression" Prelude.<$> expression,
+                            (JSON..=) "Id" Prelude.<$> id, (JSON..=) "Label" Prelude.<$> label,
+                            (JSON..=) "MetricStat" Prelude.<$> metricStat,
+                            (JSON..=) "ReturnData" Prelude.<$> returnData])}
+instance JSON.ToJSON PredictiveScalingMetricDataQueryProperty where
+  toJSON PredictiveScalingMetricDataQueryProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Expression" Prelude.<$> expression,
+               (JSON..=) "Id" Prelude.<$> id, (JSON..=) "Label" Prelude.<$> label,
+               (JSON..=) "MetricStat" Prelude.<$> metricStat,
+               (JSON..=) "ReturnData" Prelude.<$> returnData]))
+instance Property "Expression" PredictiveScalingMetricDataQueryProperty where
+  type PropertyType "Expression" PredictiveScalingMetricDataQueryProperty = Value Prelude.Text
+  set newValue PredictiveScalingMetricDataQueryProperty {..}
+    = PredictiveScalingMetricDataQueryProperty
+        {expression = Prelude.pure newValue, ..}
+instance Property "Id" PredictiveScalingMetricDataQueryProperty where
+  type PropertyType "Id" PredictiveScalingMetricDataQueryProperty = Value Prelude.Text
+  set newValue PredictiveScalingMetricDataQueryProperty {..}
+    = PredictiveScalingMetricDataQueryProperty
+        {id = Prelude.pure newValue, ..}
+instance Property "Label" PredictiveScalingMetricDataQueryProperty where
+  type PropertyType "Label" PredictiveScalingMetricDataQueryProperty = Value Prelude.Text
+  set newValue PredictiveScalingMetricDataQueryProperty {..}
+    = PredictiveScalingMetricDataQueryProperty
+        {label = Prelude.pure newValue, ..}
+instance Property "MetricStat" PredictiveScalingMetricDataQueryProperty where
+  type PropertyType "MetricStat" PredictiveScalingMetricDataQueryProperty = PredictiveScalingMetricStatProperty
+  set newValue PredictiveScalingMetricDataQueryProperty {..}
+    = PredictiveScalingMetricDataQueryProperty
+        {metricStat = Prelude.pure newValue, ..}
+instance Property "ReturnData" PredictiveScalingMetricDataQueryProperty where
+  type PropertyType "ReturnData" PredictiveScalingMetricDataQueryProperty = Value Prelude.Bool
+  set newValue PredictiveScalingMetricDataQueryProperty {..}
+    = PredictiveScalingMetricDataQueryProperty
+        {returnData = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricDataQueryProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricDataQueryProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricDataQueryProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricDataQueryProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingMetricDataQueryProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingMetricDataQueryProperty
+instance Prelude.Eq PredictiveScalingMetricDataQueryProperty
+instance Prelude.Show PredictiveScalingMetricDataQueryProperty
+instance JSON.ToJSON PredictiveScalingMetricDataQueryProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricDimensionProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricDimensionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricDimensionProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricDimensionProperty (
+        PredictiveScalingMetricDimensionProperty(..),
+        mkPredictiveScalingMetricDimensionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredictiveScalingMetricDimensionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricdimension.html>
+    PredictiveScalingMetricDimensionProperty {haddock_workaround_ :: (),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricdimension.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricdimension-name>
+                                              name :: (Prelude.Maybe (Value Prelude.Text)),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricdimension.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricdimension-value>
+                                              value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingMetricDimensionProperty ::
+  PredictiveScalingMetricDimensionProperty
+mkPredictiveScalingMetricDimensionProperty
+  = PredictiveScalingMetricDimensionProperty
+      {haddock_workaround_ = (), name = Prelude.Nothing,
+       value = Prelude.Nothing}
+instance ToResourceProperties PredictiveScalingMetricDimensionProperty where
+  toResourceProperties PredictiveScalingMetricDimensionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.PredictiveScalingMetricDimension",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON PredictiveScalingMetricDimensionProperty where
+  toJSON PredictiveScalingMetricDimensionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "Name" PredictiveScalingMetricDimensionProperty where
+  type PropertyType "Name" PredictiveScalingMetricDimensionProperty = Value Prelude.Text
+  set newValue PredictiveScalingMetricDimensionProperty {..}
+    = PredictiveScalingMetricDimensionProperty
+        {name = Prelude.pure newValue, ..}
+instance Property "Value" PredictiveScalingMetricDimensionProperty where
+  type PropertyType "Value" PredictiveScalingMetricDimensionProperty = Value Prelude.Text
+  set newValue PredictiveScalingMetricDimensionProperty {..}
+    = PredictiveScalingMetricDimensionProperty
+        {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricDimensionProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricDimensionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricDimensionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricDimensionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingMetricDimensionProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingMetricDimensionProperty
+instance Prelude.Eq PredictiveScalingMetricDimensionProperty
+instance Prelude.Show PredictiveScalingMetricDimensionProperty
+instance JSON.ToJSON PredictiveScalingMetricDimensionProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricProperty (
+        module Exports, PredictiveScalingMetricProperty(..),
+        mkPredictiveScalingMetricProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricDimensionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredictiveScalingMetricProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetric.html>
+    PredictiveScalingMetricProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetric.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetric-dimensions>
+                                     dimensions :: (Prelude.Maybe [PredictiveScalingMetricDimensionProperty]),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetric.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetric-metricname>
+                                     metricName :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetric.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetric-namespace>
+                                     namespace :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingMetricProperty ::
+  PredictiveScalingMetricProperty
+mkPredictiveScalingMetricProperty
+  = PredictiveScalingMetricProperty
+      {haddock_workaround_ = (), dimensions = Prelude.Nothing,
+       metricName = Prelude.Nothing, namespace = Prelude.Nothing}
+instance ToResourceProperties PredictiveScalingMetricProperty where
+  toResourceProperties PredictiveScalingMetricProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.PredictiveScalingMetric",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Dimensions" Prelude.<$> dimensions,
+                            (JSON..=) "MetricName" Prelude.<$> metricName,
+                            (JSON..=) "Namespace" Prelude.<$> namespace])}
+instance JSON.ToJSON PredictiveScalingMetricProperty where
+  toJSON PredictiveScalingMetricProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Dimensions" Prelude.<$> dimensions,
+               (JSON..=) "MetricName" Prelude.<$> metricName,
+               (JSON..=) "Namespace" Prelude.<$> namespace]))
+instance Property "Dimensions" PredictiveScalingMetricProperty where
+  type PropertyType "Dimensions" PredictiveScalingMetricProperty = [PredictiveScalingMetricDimensionProperty]
+  set newValue PredictiveScalingMetricProperty {..}
+    = PredictiveScalingMetricProperty
+        {dimensions = Prelude.pure newValue, ..}
+instance Property "MetricName" PredictiveScalingMetricProperty where
+  type PropertyType "MetricName" PredictiveScalingMetricProperty = Value Prelude.Text
+  set newValue PredictiveScalingMetricProperty {..}
+    = PredictiveScalingMetricProperty
+        {metricName = Prelude.pure newValue, ..}
+instance Property "Namespace" PredictiveScalingMetricProperty where
+  type PropertyType "Namespace" PredictiveScalingMetricProperty = Value Prelude.Text
+  set newValue PredictiveScalingMetricProperty {..}
+    = PredictiveScalingMetricProperty
+        {namespace = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingMetricProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingMetricProperty
+instance Prelude.Eq PredictiveScalingMetricProperty
+instance Prelude.Show PredictiveScalingMetricProperty
+instance JSON.ToJSON PredictiveScalingMetricProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricSpecificationProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricSpecificationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricSpecificationProperty.hs
@@ -0,0 +1,121 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricSpecificationProperty (
+        module Exports, PredictiveScalingMetricSpecificationProperty(..),
+        mkPredictiveScalingMetricSpecificationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingCustomizedCapacityMetricProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingCustomizedLoadMetricProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingCustomizedScalingMetricProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPredefinedLoadMetricProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPredefinedMetricPairProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPredefinedScalingMetricProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredictiveScalingMetricSpecificationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification.html>
+    PredictiveScalingMetricSpecificationProperty {haddock_workaround_ :: (),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification-customizedcapacitymetricspecification>
+                                                  customizedCapacityMetricSpecification :: (Prelude.Maybe PredictiveScalingCustomizedCapacityMetricProperty),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification-customizedloadmetricspecification>
+                                                  customizedLoadMetricSpecification :: (Prelude.Maybe PredictiveScalingCustomizedLoadMetricProperty),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification-customizedscalingmetricspecification>
+                                                  customizedScalingMetricSpecification :: (Prelude.Maybe PredictiveScalingCustomizedScalingMetricProperty),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification-predefinedloadmetricspecification>
+                                                  predefinedLoadMetricSpecification :: (Prelude.Maybe PredictiveScalingPredefinedLoadMetricProperty),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification-predefinedmetricpairspecification>
+                                                  predefinedMetricPairSpecification :: (Prelude.Maybe PredictiveScalingPredefinedMetricPairProperty),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification-predefinedscalingmetricspecification>
+                                                  predefinedScalingMetricSpecification :: (Prelude.Maybe PredictiveScalingPredefinedScalingMetricProperty),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification-targetvalue>
+                                                  targetValue :: (Value Prelude.Double)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingMetricSpecificationProperty ::
+  Value Prelude.Double
+  -> PredictiveScalingMetricSpecificationProperty
+mkPredictiveScalingMetricSpecificationProperty targetValue
+  = PredictiveScalingMetricSpecificationProperty
+      {haddock_workaround_ = (), targetValue = targetValue,
+       customizedCapacityMetricSpecification = Prelude.Nothing,
+       customizedLoadMetricSpecification = Prelude.Nothing,
+       customizedScalingMetricSpecification = Prelude.Nothing,
+       predefinedLoadMetricSpecification = Prelude.Nothing,
+       predefinedMetricPairSpecification = Prelude.Nothing,
+       predefinedScalingMetricSpecification = Prelude.Nothing}
+instance ToResourceProperties PredictiveScalingMetricSpecificationProperty where
+  toResourceProperties
+    PredictiveScalingMetricSpecificationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.PredictiveScalingMetricSpecification",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["TargetValue" JSON..= targetValue]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CustomizedCapacityMetricSpecification"
+                                 Prelude.<$> customizedCapacityMetricSpecification,
+                               (JSON..=) "CustomizedLoadMetricSpecification"
+                                 Prelude.<$> customizedLoadMetricSpecification,
+                               (JSON..=) "CustomizedScalingMetricSpecification"
+                                 Prelude.<$> customizedScalingMetricSpecification,
+                               (JSON..=) "PredefinedLoadMetricSpecification"
+                                 Prelude.<$> predefinedLoadMetricSpecification,
+                               (JSON..=) "PredefinedMetricPairSpecification"
+                                 Prelude.<$> predefinedMetricPairSpecification,
+                               (JSON..=) "PredefinedScalingMetricSpecification"
+                                 Prelude.<$> predefinedScalingMetricSpecification]))}
+instance JSON.ToJSON PredictiveScalingMetricSpecificationProperty where
+  toJSON PredictiveScalingMetricSpecificationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["TargetValue" JSON..= targetValue]
+              (Prelude.catMaybes
+                 [(JSON..=) "CustomizedCapacityMetricSpecification"
+                    Prelude.<$> customizedCapacityMetricSpecification,
+                  (JSON..=) "CustomizedLoadMetricSpecification"
+                    Prelude.<$> customizedLoadMetricSpecification,
+                  (JSON..=) "CustomizedScalingMetricSpecification"
+                    Prelude.<$> customizedScalingMetricSpecification,
+                  (JSON..=) "PredefinedLoadMetricSpecification"
+                    Prelude.<$> predefinedLoadMetricSpecification,
+                  (JSON..=) "PredefinedMetricPairSpecification"
+                    Prelude.<$> predefinedMetricPairSpecification,
+                  (JSON..=) "PredefinedScalingMetricSpecification"
+                    Prelude.<$> predefinedScalingMetricSpecification])))
+instance Property "CustomizedCapacityMetricSpecification" PredictiveScalingMetricSpecificationProperty where
+  type PropertyType "CustomizedCapacityMetricSpecification" PredictiveScalingMetricSpecificationProperty = PredictiveScalingCustomizedCapacityMetricProperty
+  set newValue PredictiveScalingMetricSpecificationProperty {..}
+    = PredictiveScalingMetricSpecificationProperty
+        {customizedCapacityMetricSpecification = Prelude.pure newValue, ..}
+instance Property "CustomizedLoadMetricSpecification" PredictiveScalingMetricSpecificationProperty where
+  type PropertyType "CustomizedLoadMetricSpecification" PredictiveScalingMetricSpecificationProperty = PredictiveScalingCustomizedLoadMetricProperty
+  set newValue PredictiveScalingMetricSpecificationProperty {..}
+    = PredictiveScalingMetricSpecificationProperty
+        {customizedLoadMetricSpecification = Prelude.pure newValue, ..}
+instance Property "CustomizedScalingMetricSpecification" PredictiveScalingMetricSpecificationProperty where
+  type PropertyType "CustomizedScalingMetricSpecification" PredictiveScalingMetricSpecificationProperty = PredictiveScalingCustomizedScalingMetricProperty
+  set newValue PredictiveScalingMetricSpecificationProperty {..}
+    = PredictiveScalingMetricSpecificationProperty
+        {customizedScalingMetricSpecification = Prelude.pure newValue, ..}
+instance Property "PredefinedLoadMetricSpecification" PredictiveScalingMetricSpecificationProperty where
+  type PropertyType "PredefinedLoadMetricSpecification" PredictiveScalingMetricSpecificationProperty = PredictiveScalingPredefinedLoadMetricProperty
+  set newValue PredictiveScalingMetricSpecificationProperty {..}
+    = PredictiveScalingMetricSpecificationProperty
+        {predefinedLoadMetricSpecification = Prelude.pure newValue, ..}
+instance Property "PredefinedMetricPairSpecification" PredictiveScalingMetricSpecificationProperty where
+  type PropertyType "PredefinedMetricPairSpecification" PredictiveScalingMetricSpecificationProperty = PredictiveScalingPredefinedMetricPairProperty
+  set newValue PredictiveScalingMetricSpecificationProperty {..}
+    = PredictiveScalingMetricSpecificationProperty
+        {predefinedMetricPairSpecification = Prelude.pure newValue, ..}
+instance Property "PredefinedScalingMetricSpecification" PredictiveScalingMetricSpecificationProperty where
+  type PropertyType "PredefinedScalingMetricSpecification" PredictiveScalingMetricSpecificationProperty = PredictiveScalingPredefinedScalingMetricProperty
+  set newValue PredictiveScalingMetricSpecificationProperty {..}
+    = PredictiveScalingMetricSpecificationProperty
+        {predefinedScalingMetricSpecification = Prelude.pure newValue, ..}
+instance Property "TargetValue" PredictiveScalingMetricSpecificationProperty where
+  type PropertyType "TargetValue" PredictiveScalingMetricSpecificationProperty = Value Prelude.Double
+  set newValue PredictiveScalingMetricSpecificationProperty {..}
+    = PredictiveScalingMetricSpecificationProperty
+        {targetValue = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricSpecificationProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricSpecificationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricSpecificationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricSpecificationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingMetricSpecificationProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingMetricSpecificationProperty
+instance Prelude.Eq PredictiveScalingMetricSpecificationProperty
+instance Prelude.Show PredictiveScalingMetricSpecificationProperty
+instance JSON.ToJSON PredictiveScalingMetricSpecificationProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricStatProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricStatProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricStatProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricStatProperty (
+        module Exports, PredictiveScalingMetricStatProperty(..),
+        mkPredictiveScalingMetricStatProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredictiveScalingMetricStatProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricstat.html>
+    PredictiveScalingMetricStatProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricstat.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricstat-metric>
+                                         metric :: (Prelude.Maybe PredictiveScalingMetricProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricstat.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricstat-stat>
+                                         stat :: (Prelude.Maybe (Value Prelude.Text)),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricstat.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingmetricstat-unit>
+                                         unit :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingMetricStatProperty ::
+  PredictiveScalingMetricStatProperty
+mkPredictiveScalingMetricStatProperty
+  = PredictiveScalingMetricStatProperty
+      {haddock_workaround_ = (), metric = Prelude.Nothing,
+       stat = Prelude.Nothing, unit = Prelude.Nothing}
+instance ToResourceProperties PredictiveScalingMetricStatProperty where
+  toResourceProperties PredictiveScalingMetricStatProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.PredictiveScalingMetricStat",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Metric" Prelude.<$> metric,
+                            (JSON..=) "Stat" Prelude.<$> stat,
+                            (JSON..=) "Unit" Prelude.<$> unit])}
+instance JSON.ToJSON PredictiveScalingMetricStatProperty where
+  toJSON PredictiveScalingMetricStatProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Metric" Prelude.<$> metric,
+               (JSON..=) "Stat" Prelude.<$> stat,
+               (JSON..=) "Unit" Prelude.<$> unit]))
+instance Property "Metric" PredictiveScalingMetricStatProperty where
+  type PropertyType "Metric" PredictiveScalingMetricStatProperty = PredictiveScalingMetricProperty
+  set newValue PredictiveScalingMetricStatProperty {..}
+    = PredictiveScalingMetricStatProperty
+        {metric = Prelude.pure newValue, ..}
+instance Property "Stat" PredictiveScalingMetricStatProperty where
+  type PropertyType "Stat" PredictiveScalingMetricStatProperty = Value Prelude.Text
+  set newValue PredictiveScalingMetricStatProperty {..}
+    = PredictiveScalingMetricStatProperty
+        {stat = Prelude.pure newValue, ..}
+instance Property "Unit" PredictiveScalingMetricStatProperty where
+  type PropertyType "Unit" PredictiveScalingMetricStatProperty = Value Prelude.Text
+  set newValue PredictiveScalingMetricStatProperty {..}
+    = PredictiveScalingMetricStatProperty
+        {unit = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricStatProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricStatProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingMetricStatProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricStatProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingMetricStatProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingMetricStatProperty
+instance Prelude.Eq PredictiveScalingMetricStatProperty
+instance Prelude.Show PredictiveScalingMetricStatProperty
+instance JSON.ToJSON PredictiveScalingMetricStatProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPolicyConfigurationProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPolicyConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPolicyConfigurationProperty.hs
@@ -0,0 +1,88 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPolicyConfigurationProperty (
+        module Exports, PredictiveScalingPolicyConfigurationProperty(..),
+        mkPredictiveScalingPolicyConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricSpecificationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredictiveScalingPolicyConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpolicyconfiguration.html>
+    PredictiveScalingPolicyConfigurationProperty {haddock_workaround_ :: (),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingpolicyconfiguration-maxcapacitybreachbehavior>
+                                                  maxCapacityBreachBehavior :: (Prelude.Maybe (Value Prelude.Text)),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingpolicyconfiguration-maxcapacitybuffer>
+                                                  maxCapacityBuffer :: (Prelude.Maybe (Value Prelude.Integer)),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingpolicyconfiguration-metricspecifications>
+                                                  metricSpecifications :: [PredictiveScalingMetricSpecificationProperty],
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingpolicyconfiguration-mode>
+                                                  mode :: (Prelude.Maybe (Value Prelude.Text)),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingpolicyconfiguration-schedulingbuffertime>
+                                                  schedulingBufferTime :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingPolicyConfigurationProperty ::
+  [PredictiveScalingMetricSpecificationProperty]
+  -> PredictiveScalingPolicyConfigurationProperty
+mkPredictiveScalingPolicyConfigurationProperty metricSpecifications
+  = PredictiveScalingPolicyConfigurationProperty
+      {haddock_workaround_ = (),
+       metricSpecifications = metricSpecifications,
+       maxCapacityBreachBehavior = Prelude.Nothing,
+       maxCapacityBuffer = Prelude.Nothing, mode = Prelude.Nothing,
+       schedulingBufferTime = Prelude.Nothing}
+instance ToResourceProperties PredictiveScalingPolicyConfigurationProperty where
+  toResourceProperties
+    PredictiveScalingPolicyConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.PredictiveScalingPolicyConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["MetricSpecifications" JSON..= metricSpecifications]
+                           (Prelude.catMaybes
+                              [(JSON..=) "MaxCapacityBreachBehavior"
+                                 Prelude.<$> maxCapacityBreachBehavior,
+                               (JSON..=) "MaxCapacityBuffer" Prelude.<$> maxCapacityBuffer,
+                               (JSON..=) "Mode" Prelude.<$> mode,
+                               (JSON..=) "SchedulingBufferTime"
+                                 Prelude.<$> schedulingBufferTime]))}
+instance JSON.ToJSON PredictiveScalingPolicyConfigurationProperty where
+  toJSON PredictiveScalingPolicyConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["MetricSpecifications" JSON..= metricSpecifications]
+              (Prelude.catMaybes
+                 [(JSON..=) "MaxCapacityBreachBehavior"
+                    Prelude.<$> maxCapacityBreachBehavior,
+                  (JSON..=) "MaxCapacityBuffer" Prelude.<$> maxCapacityBuffer,
+                  (JSON..=) "Mode" Prelude.<$> mode,
+                  (JSON..=) "SchedulingBufferTime"
+                    Prelude.<$> schedulingBufferTime])))
+instance Property "MaxCapacityBreachBehavior" PredictiveScalingPolicyConfigurationProperty where
+  type PropertyType "MaxCapacityBreachBehavior" PredictiveScalingPolicyConfigurationProperty = Value Prelude.Text
+  set newValue PredictiveScalingPolicyConfigurationProperty {..}
+    = PredictiveScalingPolicyConfigurationProperty
+        {maxCapacityBreachBehavior = Prelude.pure newValue, ..}
+instance Property "MaxCapacityBuffer" PredictiveScalingPolicyConfigurationProperty where
+  type PropertyType "MaxCapacityBuffer" PredictiveScalingPolicyConfigurationProperty = Value Prelude.Integer
+  set newValue PredictiveScalingPolicyConfigurationProperty {..}
+    = PredictiveScalingPolicyConfigurationProperty
+        {maxCapacityBuffer = Prelude.pure newValue, ..}
+instance Property "MetricSpecifications" PredictiveScalingPolicyConfigurationProperty where
+  type PropertyType "MetricSpecifications" PredictiveScalingPolicyConfigurationProperty = [PredictiveScalingMetricSpecificationProperty]
+  set newValue PredictiveScalingPolicyConfigurationProperty {..}
+    = PredictiveScalingPolicyConfigurationProperty
+        {metricSpecifications = newValue, ..}
+instance Property "Mode" PredictiveScalingPolicyConfigurationProperty where
+  type PropertyType "Mode" PredictiveScalingPolicyConfigurationProperty = Value Prelude.Text
+  set newValue PredictiveScalingPolicyConfigurationProperty {..}
+    = PredictiveScalingPolicyConfigurationProperty
+        {mode = Prelude.pure newValue, ..}
+instance Property "SchedulingBufferTime" PredictiveScalingPolicyConfigurationProperty where
+  type PropertyType "SchedulingBufferTime" PredictiveScalingPolicyConfigurationProperty = Value Prelude.Integer
+  set newValue PredictiveScalingPolicyConfigurationProperty {..}
+    = PredictiveScalingPolicyConfigurationProperty
+        {schedulingBufferTime = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPolicyConfigurationProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPolicyConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPolicyConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPolicyConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingPolicyConfigurationProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingPolicyConfigurationProperty
+instance Prelude.Eq PredictiveScalingPolicyConfigurationProperty
+instance Prelude.Show PredictiveScalingPolicyConfigurationProperty
+instance JSON.ToJSON PredictiveScalingPolicyConfigurationProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedLoadMetricProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedLoadMetricProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedLoadMetricProperty.hs
@@ -0,0 +1,54 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPredefinedLoadMetricProperty (
+        PredictiveScalingPredefinedLoadMetricProperty(..),
+        mkPredictiveScalingPredefinedLoadMetricProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredictiveScalingPredefinedLoadMetricProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpredefinedloadmetric.html>
+    PredictiveScalingPredefinedLoadMetricProperty {haddock_workaround_ :: (),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpredefinedloadmetric.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingpredefinedloadmetric-predefinedmetrictype>
+                                                   predefinedMetricType :: (Value Prelude.Text),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpredefinedloadmetric.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingpredefinedloadmetric-resourcelabel>
+                                                   resourceLabel :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingPredefinedLoadMetricProperty ::
+  Value Prelude.Text -> PredictiveScalingPredefinedLoadMetricProperty
+mkPredictiveScalingPredefinedLoadMetricProperty
+  predefinedMetricType
+  = PredictiveScalingPredefinedLoadMetricProperty
+      {haddock_workaround_ = (),
+       predefinedMetricType = predefinedMetricType,
+       resourceLabel = Prelude.Nothing}
+instance ToResourceProperties PredictiveScalingPredefinedLoadMetricProperty where
+  toResourceProperties
+    PredictiveScalingPredefinedLoadMetricProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.PredictiveScalingPredefinedLoadMetric",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["PredefinedMetricType" JSON..= predefinedMetricType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel]))}
+instance JSON.ToJSON PredictiveScalingPredefinedLoadMetricProperty where
+  toJSON PredictiveScalingPredefinedLoadMetricProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["PredefinedMetricType" JSON..= predefinedMetricType]
+              (Prelude.catMaybes
+                 [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel])))
+instance Property "PredefinedMetricType" PredictiveScalingPredefinedLoadMetricProperty where
+  type PropertyType "PredefinedMetricType" PredictiveScalingPredefinedLoadMetricProperty = Value Prelude.Text
+  set newValue PredictiveScalingPredefinedLoadMetricProperty {..}
+    = PredictiveScalingPredefinedLoadMetricProperty
+        {predefinedMetricType = newValue, ..}
+instance Property "ResourceLabel" PredictiveScalingPredefinedLoadMetricProperty where
+  type PropertyType "ResourceLabel" PredictiveScalingPredefinedLoadMetricProperty = Value Prelude.Text
+  set newValue PredictiveScalingPredefinedLoadMetricProperty {..}
+    = PredictiveScalingPredefinedLoadMetricProperty
+        {resourceLabel = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedLoadMetricProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedLoadMetricProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedLoadMetricProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPredefinedLoadMetricProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingPredefinedLoadMetricProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingPredefinedLoadMetricProperty
+instance Prelude.Eq PredictiveScalingPredefinedLoadMetricProperty
+instance Prelude.Show PredictiveScalingPredefinedLoadMetricProperty
+instance JSON.ToJSON PredictiveScalingPredefinedLoadMetricProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedMetricPairProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedMetricPairProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedMetricPairProperty.hs
@@ -0,0 +1,54 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPredefinedMetricPairProperty (
+        PredictiveScalingPredefinedMetricPairProperty(..),
+        mkPredictiveScalingPredefinedMetricPairProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredictiveScalingPredefinedMetricPairProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpredefinedmetricpair.html>
+    PredictiveScalingPredefinedMetricPairProperty {haddock_workaround_ :: (),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpredefinedmetricpair.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingpredefinedmetricpair-predefinedmetrictype>
+                                                   predefinedMetricType :: (Value Prelude.Text),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpredefinedmetricpair.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingpredefinedmetricpair-resourcelabel>
+                                                   resourceLabel :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingPredefinedMetricPairProperty ::
+  Value Prelude.Text -> PredictiveScalingPredefinedMetricPairProperty
+mkPredictiveScalingPredefinedMetricPairProperty
+  predefinedMetricType
+  = PredictiveScalingPredefinedMetricPairProperty
+      {haddock_workaround_ = (),
+       predefinedMetricType = predefinedMetricType,
+       resourceLabel = Prelude.Nothing}
+instance ToResourceProperties PredictiveScalingPredefinedMetricPairProperty where
+  toResourceProperties
+    PredictiveScalingPredefinedMetricPairProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.PredictiveScalingPredefinedMetricPair",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["PredefinedMetricType" JSON..= predefinedMetricType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel]))}
+instance JSON.ToJSON PredictiveScalingPredefinedMetricPairProperty where
+  toJSON PredictiveScalingPredefinedMetricPairProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["PredefinedMetricType" JSON..= predefinedMetricType]
+              (Prelude.catMaybes
+                 [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel])))
+instance Property "PredefinedMetricType" PredictiveScalingPredefinedMetricPairProperty where
+  type PropertyType "PredefinedMetricType" PredictiveScalingPredefinedMetricPairProperty = Value Prelude.Text
+  set newValue PredictiveScalingPredefinedMetricPairProperty {..}
+    = PredictiveScalingPredefinedMetricPairProperty
+        {predefinedMetricType = newValue, ..}
+instance Property "ResourceLabel" PredictiveScalingPredefinedMetricPairProperty where
+  type PropertyType "ResourceLabel" PredictiveScalingPredefinedMetricPairProperty = Value Prelude.Text
+  set newValue PredictiveScalingPredefinedMetricPairProperty {..}
+    = PredictiveScalingPredefinedMetricPairProperty
+        {resourceLabel = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedMetricPairProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedMetricPairProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedMetricPairProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPredefinedMetricPairProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingPredefinedMetricPairProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingPredefinedMetricPairProperty
+instance Prelude.Eq PredictiveScalingPredefinedMetricPairProperty
+instance Prelude.Show PredictiveScalingPredefinedMetricPairProperty
+instance JSON.ToJSON PredictiveScalingPredefinedMetricPairProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedScalingMetricProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedScalingMetricProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedScalingMetricProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPredefinedScalingMetricProperty (
+        PredictiveScalingPredefinedScalingMetricProperty(..),
+        mkPredictiveScalingPredefinedScalingMetricProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredictiveScalingPredefinedScalingMetricProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpredefinedscalingmetric.html>
+    PredictiveScalingPredefinedScalingMetricProperty {haddock_workaround_ :: (),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpredefinedscalingmetric.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingpredefinedscalingmetric-predefinedmetrictype>
+                                                      predefinedMetricType :: (Value Prelude.Text),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpredefinedscalingmetric.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingpredefinedscalingmetric-resourcelabel>
+                                                      resourceLabel :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingPredefinedScalingMetricProperty ::
+  Value Prelude.Text
+  -> PredictiveScalingPredefinedScalingMetricProperty
+mkPredictiveScalingPredefinedScalingMetricProperty
+  predefinedMetricType
+  = PredictiveScalingPredefinedScalingMetricProperty
+      {haddock_workaround_ = (),
+       predefinedMetricType = predefinedMetricType,
+       resourceLabel = Prelude.Nothing}
+instance ToResourceProperties PredictiveScalingPredefinedScalingMetricProperty where
+  toResourceProperties
+    PredictiveScalingPredefinedScalingMetricProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.PredictiveScalingPredefinedScalingMetric",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["PredefinedMetricType" JSON..= predefinedMetricType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel]))}
+instance JSON.ToJSON PredictiveScalingPredefinedScalingMetricProperty where
+  toJSON PredictiveScalingPredefinedScalingMetricProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["PredefinedMetricType" JSON..= predefinedMetricType]
+              (Prelude.catMaybes
+                 [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel])))
+instance Property "PredefinedMetricType" PredictiveScalingPredefinedScalingMetricProperty where
+  type PropertyType "PredefinedMetricType" PredictiveScalingPredefinedScalingMetricProperty = Value Prelude.Text
+  set newValue PredictiveScalingPredefinedScalingMetricProperty {..}
+    = PredictiveScalingPredefinedScalingMetricProperty
+        {predefinedMetricType = newValue, ..}
+instance Property "ResourceLabel" PredictiveScalingPredefinedScalingMetricProperty where
+  type PropertyType "ResourceLabel" PredictiveScalingPredefinedScalingMetricProperty = Value Prelude.Text
+  set newValue PredictiveScalingPredefinedScalingMetricProperty {..}
+    = PredictiveScalingPredefinedScalingMetricProperty
+        {resourceLabel = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedScalingMetricProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedScalingMetricProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/PredictiveScalingPredefinedScalingMetricProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPredefinedScalingMetricProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingPredefinedScalingMetricProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingPredefinedScalingMetricProperty
+instance Prelude.Eq PredictiveScalingPredefinedScalingMetricProperty
+instance Prelude.Show PredictiveScalingPredefinedScalingMetricProperty
+instance JSON.ToJSON PredictiveScalingPredefinedScalingMetricProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/StepAdjustmentProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/StepAdjustmentProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/StepAdjustmentProperty.hs
@@ -0,0 +1,63 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.StepAdjustmentProperty (
+        StepAdjustmentProperty(..), mkStepAdjustmentProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data StepAdjustmentProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepadjustment.html>
+    StepAdjustmentProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepadjustment.html#cfn-applicationautoscaling-scalingpolicy-stepadjustment-metricintervallowerbound>
+                            metricIntervalLowerBound :: (Prelude.Maybe (Value Prelude.Double)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepadjustment.html#cfn-applicationautoscaling-scalingpolicy-stepadjustment-metricintervalupperbound>
+                            metricIntervalUpperBound :: (Prelude.Maybe (Value Prelude.Double)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepadjustment.html#cfn-applicationautoscaling-scalingpolicy-stepadjustment-scalingadjustment>
+                            scalingAdjustment :: (Value Prelude.Integer)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkStepAdjustmentProperty ::
+  Value Prelude.Integer -> StepAdjustmentProperty
+mkStepAdjustmentProperty scalingAdjustment
+  = StepAdjustmentProperty
+      {haddock_workaround_ = (), scalingAdjustment = scalingAdjustment,
+       metricIntervalLowerBound = Prelude.Nothing,
+       metricIntervalUpperBound = Prelude.Nothing}
+instance ToResourceProperties StepAdjustmentProperty where
+  toResourceProperties StepAdjustmentProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.StepAdjustment",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ScalingAdjustment" JSON..= scalingAdjustment]
+                           (Prelude.catMaybes
+                              [(JSON..=) "MetricIntervalLowerBound"
+                                 Prelude.<$> metricIntervalLowerBound,
+                               (JSON..=) "MetricIntervalUpperBound"
+                                 Prelude.<$> metricIntervalUpperBound]))}
+instance JSON.ToJSON StepAdjustmentProperty where
+  toJSON StepAdjustmentProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ScalingAdjustment" JSON..= scalingAdjustment]
+              (Prelude.catMaybes
+                 [(JSON..=) "MetricIntervalLowerBound"
+                    Prelude.<$> metricIntervalLowerBound,
+                  (JSON..=) "MetricIntervalUpperBound"
+                    Prelude.<$> metricIntervalUpperBound])))
+instance Property "MetricIntervalLowerBound" StepAdjustmentProperty where
+  type PropertyType "MetricIntervalLowerBound" StepAdjustmentProperty = Value Prelude.Double
+  set newValue StepAdjustmentProperty {..}
+    = StepAdjustmentProperty
+        {metricIntervalLowerBound = Prelude.pure newValue, ..}
+instance Property "MetricIntervalUpperBound" StepAdjustmentProperty where
+  type PropertyType "MetricIntervalUpperBound" StepAdjustmentProperty = Value Prelude.Double
+  set newValue StepAdjustmentProperty {..}
+    = StepAdjustmentProperty
+        {metricIntervalUpperBound = Prelude.pure newValue, ..}
+instance Property "ScalingAdjustment" StepAdjustmentProperty where
+  type PropertyType "ScalingAdjustment" StepAdjustmentProperty = Value Prelude.Integer
+  set newValue StepAdjustmentProperty {..}
+    = StepAdjustmentProperty {scalingAdjustment = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/StepAdjustmentProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/StepAdjustmentProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/StepAdjustmentProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.StepAdjustmentProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data StepAdjustmentProperty :: Prelude.Type
+instance ToResourceProperties StepAdjustmentProperty
+instance Prelude.Eq StepAdjustmentProperty
+instance Prelude.Show StepAdjustmentProperty
+instance JSON.ToJSON StepAdjustmentProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/StepScalingPolicyConfigurationProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/StepScalingPolicyConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/StepScalingPolicyConfigurationProperty.hs
@@ -0,0 +1,84 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.StepScalingPolicyConfigurationProperty (
+        module Exports, StepScalingPolicyConfigurationProperty(..),
+        mkStepScalingPolicyConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.StepAdjustmentProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data StepScalingPolicyConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html>
+    StepScalingPolicyConfigurationProperty {haddock_workaround_ :: (),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-adjustmenttype>
+                                            adjustmentType :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-cooldown>
+                                            cooldown :: (Prelude.Maybe (Value Prelude.Integer)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-metricaggregationtype>
+                                            metricAggregationType :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-minadjustmentmagnitude>
+                                            minAdjustmentMagnitude :: (Prelude.Maybe (Value Prelude.Integer)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustments>
+                                            stepAdjustments :: (Prelude.Maybe [StepAdjustmentProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkStepScalingPolicyConfigurationProperty ::
+  StepScalingPolicyConfigurationProperty
+mkStepScalingPolicyConfigurationProperty
+  = StepScalingPolicyConfigurationProperty
+      {haddock_workaround_ = (), adjustmentType = Prelude.Nothing,
+       cooldown = Prelude.Nothing,
+       metricAggregationType = Prelude.Nothing,
+       minAdjustmentMagnitude = Prelude.Nothing,
+       stepAdjustments = Prelude.Nothing}
+instance ToResourceProperties StepScalingPolicyConfigurationProperty where
+  toResourceProperties StepScalingPolicyConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.StepScalingPolicyConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AdjustmentType" Prelude.<$> adjustmentType,
+                            (JSON..=) "Cooldown" Prelude.<$> cooldown,
+                            (JSON..=) "MetricAggregationType"
+                              Prelude.<$> metricAggregationType,
+                            (JSON..=) "MinAdjustmentMagnitude"
+                              Prelude.<$> minAdjustmentMagnitude,
+                            (JSON..=) "StepAdjustments" Prelude.<$> stepAdjustments])}
+instance JSON.ToJSON StepScalingPolicyConfigurationProperty where
+  toJSON StepScalingPolicyConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AdjustmentType" Prelude.<$> adjustmentType,
+               (JSON..=) "Cooldown" Prelude.<$> cooldown,
+               (JSON..=) "MetricAggregationType"
+                 Prelude.<$> metricAggregationType,
+               (JSON..=) "MinAdjustmentMagnitude"
+                 Prelude.<$> minAdjustmentMagnitude,
+               (JSON..=) "StepAdjustments" Prelude.<$> stepAdjustments]))
+instance Property "AdjustmentType" StepScalingPolicyConfigurationProperty where
+  type PropertyType "AdjustmentType" StepScalingPolicyConfigurationProperty = Value Prelude.Text
+  set newValue StepScalingPolicyConfigurationProperty {..}
+    = StepScalingPolicyConfigurationProperty
+        {adjustmentType = Prelude.pure newValue, ..}
+instance Property "Cooldown" StepScalingPolicyConfigurationProperty where
+  type PropertyType "Cooldown" StepScalingPolicyConfigurationProperty = Value Prelude.Integer
+  set newValue StepScalingPolicyConfigurationProperty {..}
+    = StepScalingPolicyConfigurationProperty
+        {cooldown = Prelude.pure newValue, ..}
+instance Property "MetricAggregationType" StepScalingPolicyConfigurationProperty where
+  type PropertyType "MetricAggregationType" StepScalingPolicyConfigurationProperty = Value Prelude.Text
+  set newValue StepScalingPolicyConfigurationProperty {..}
+    = StepScalingPolicyConfigurationProperty
+        {metricAggregationType = Prelude.pure newValue, ..}
+instance Property "MinAdjustmentMagnitude" StepScalingPolicyConfigurationProperty where
+  type PropertyType "MinAdjustmentMagnitude" StepScalingPolicyConfigurationProperty = Value Prelude.Integer
+  set newValue StepScalingPolicyConfigurationProperty {..}
+    = StepScalingPolicyConfigurationProperty
+        {minAdjustmentMagnitude = Prelude.pure newValue, ..}
+instance Property "StepAdjustments" StepScalingPolicyConfigurationProperty where
+  type PropertyType "StepAdjustments" StepScalingPolicyConfigurationProperty = [StepAdjustmentProperty]
+  set newValue StepScalingPolicyConfigurationProperty {..}
+    = StepScalingPolicyConfigurationProperty
+        {stepAdjustments = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/StepScalingPolicyConfigurationProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/StepScalingPolicyConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/StepScalingPolicyConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.StepScalingPolicyConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data StepScalingPolicyConfigurationProperty :: Prelude.Type
+instance ToResourceProperties StepScalingPolicyConfigurationProperty
+instance Prelude.Eq StepScalingPolicyConfigurationProperty
+instance Prelude.Show StepScalingPolicyConfigurationProperty
+instance JSON.ToJSON StepScalingPolicyConfigurationProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricDataQueryProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricDataQueryProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricDataQueryProperty.hs
@@ -0,0 +1,76 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricDataQueryProperty (
+        module Exports, TargetTrackingMetricDataQueryProperty(..),
+        mkTargetTrackingMetricDataQueryProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricStatProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TargetTrackingMetricDataQueryProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery.html>
+    TargetTrackingMetricDataQueryProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery.html#cfn-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery-expression>
+                                           expression :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery.html#cfn-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery-id>
+                                           id :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery.html#cfn-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery-label>
+                                           label :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery.html#cfn-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery-metricstat>
+                                           metricStat :: (Prelude.Maybe TargetTrackingMetricStatProperty),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery.html#cfn-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery-returndata>
+                                           returnData :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTargetTrackingMetricDataQueryProperty ::
+  TargetTrackingMetricDataQueryProperty
+mkTargetTrackingMetricDataQueryProperty
+  = TargetTrackingMetricDataQueryProperty
+      {haddock_workaround_ = (), expression = Prelude.Nothing,
+       id = Prelude.Nothing, label = Prelude.Nothing,
+       metricStat = Prelude.Nothing, returnData = Prelude.Nothing}
+instance ToResourceProperties TargetTrackingMetricDataQueryProperty where
+  toResourceProperties TargetTrackingMetricDataQueryProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.TargetTrackingMetricDataQuery",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Expression" Prelude.<$> expression,
+                            (JSON..=) "Id" Prelude.<$> id, (JSON..=) "Label" Prelude.<$> label,
+                            (JSON..=) "MetricStat" Prelude.<$> metricStat,
+                            (JSON..=) "ReturnData" Prelude.<$> returnData])}
+instance JSON.ToJSON TargetTrackingMetricDataQueryProperty where
+  toJSON TargetTrackingMetricDataQueryProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Expression" Prelude.<$> expression,
+               (JSON..=) "Id" Prelude.<$> id, (JSON..=) "Label" Prelude.<$> label,
+               (JSON..=) "MetricStat" Prelude.<$> metricStat,
+               (JSON..=) "ReturnData" Prelude.<$> returnData]))
+instance Property "Expression" TargetTrackingMetricDataQueryProperty where
+  type PropertyType "Expression" TargetTrackingMetricDataQueryProperty = Value Prelude.Text
+  set newValue TargetTrackingMetricDataQueryProperty {..}
+    = TargetTrackingMetricDataQueryProperty
+        {expression = Prelude.pure newValue, ..}
+instance Property "Id" TargetTrackingMetricDataQueryProperty where
+  type PropertyType "Id" TargetTrackingMetricDataQueryProperty = Value Prelude.Text
+  set newValue TargetTrackingMetricDataQueryProperty {..}
+    = TargetTrackingMetricDataQueryProperty
+        {id = Prelude.pure newValue, ..}
+instance Property "Label" TargetTrackingMetricDataQueryProperty where
+  type PropertyType "Label" TargetTrackingMetricDataQueryProperty = Value Prelude.Text
+  set newValue TargetTrackingMetricDataQueryProperty {..}
+    = TargetTrackingMetricDataQueryProperty
+        {label = Prelude.pure newValue, ..}
+instance Property "MetricStat" TargetTrackingMetricDataQueryProperty where
+  type PropertyType "MetricStat" TargetTrackingMetricDataQueryProperty = TargetTrackingMetricStatProperty
+  set newValue TargetTrackingMetricDataQueryProperty {..}
+    = TargetTrackingMetricDataQueryProperty
+        {metricStat = Prelude.pure newValue, ..}
+instance Property "ReturnData" TargetTrackingMetricDataQueryProperty where
+  type PropertyType "ReturnData" TargetTrackingMetricDataQueryProperty = Value Prelude.Bool
+  set newValue TargetTrackingMetricDataQueryProperty {..}
+    = TargetTrackingMetricDataQueryProperty
+        {returnData = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricDataQueryProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricDataQueryProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricDataQueryProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricDataQueryProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TargetTrackingMetricDataQueryProperty :: Prelude.Type
+instance ToResourceProperties TargetTrackingMetricDataQueryProperty
+instance Prelude.Eq TargetTrackingMetricDataQueryProperty
+instance Prelude.Show TargetTrackingMetricDataQueryProperty
+instance JSON.ToJSON TargetTrackingMetricDataQueryProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricDimensionProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricDimensionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricDimensionProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricDimensionProperty (
+        TargetTrackingMetricDimensionProperty(..),
+        mkTargetTrackingMetricDimensionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TargetTrackingMetricDimensionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdimension.html>
+    TargetTrackingMetricDimensionProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdimension.html#cfn-applicationautoscaling-scalingpolicy-targettrackingmetricdimension-name>
+                                           name :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdimension.html#cfn-applicationautoscaling-scalingpolicy-targettrackingmetricdimension-value>
+                                           value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTargetTrackingMetricDimensionProperty ::
+  TargetTrackingMetricDimensionProperty
+mkTargetTrackingMetricDimensionProperty
+  = TargetTrackingMetricDimensionProperty
+      {haddock_workaround_ = (), name = Prelude.Nothing,
+       value = Prelude.Nothing}
+instance ToResourceProperties TargetTrackingMetricDimensionProperty where
+  toResourceProperties TargetTrackingMetricDimensionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.TargetTrackingMetricDimension",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON TargetTrackingMetricDimensionProperty where
+  toJSON TargetTrackingMetricDimensionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "Name" TargetTrackingMetricDimensionProperty where
+  type PropertyType "Name" TargetTrackingMetricDimensionProperty = Value Prelude.Text
+  set newValue TargetTrackingMetricDimensionProperty {..}
+    = TargetTrackingMetricDimensionProperty
+        {name = Prelude.pure newValue, ..}
+instance Property "Value" TargetTrackingMetricDimensionProperty where
+  type PropertyType "Value" TargetTrackingMetricDimensionProperty = Value Prelude.Text
+  set newValue TargetTrackingMetricDimensionProperty {..}
+    = TargetTrackingMetricDimensionProperty
+        {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricDimensionProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricDimensionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricDimensionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricDimensionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TargetTrackingMetricDimensionProperty :: Prelude.Type
+instance ToResourceProperties TargetTrackingMetricDimensionProperty
+instance Prelude.Eq TargetTrackingMetricDimensionProperty
+instance Prelude.Show TargetTrackingMetricDimensionProperty
+instance JSON.ToJSON TargetTrackingMetricDimensionProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricProperty (
+        module Exports, TargetTrackingMetricProperty(..),
+        mkTargetTrackingMetricProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricDimensionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TargetTrackingMetricProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetric.html>
+    TargetTrackingMetricProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetric.html#cfn-applicationautoscaling-scalingpolicy-targettrackingmetric-dimensions>
+                                  dimensions :: (Prelude.Maybe [TargetTrackingMetricDimensionProperty]),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetric.html#cfn-applicationautoscaling-scalingpolicy-targettrackingmetric-metricname>
+                                  metricName :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetric.html#cfn-applicationautoscaling-scalingpolicy-targettrackingmetric-namespace>
+                                  namespace :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTargetTrackingMetricProperty :: TargetTrackingMetricProperty
+mkTargetTrackingMetricProperty
+  = TargetTrackingMetricProperty
+      {haddock_workaround_ = (), dimensions = Prelude.Nothing,
+       metricName = Prelude.Nothing, namespace = Prelude.Nothing}
+instance ToResourceProperties TargetTrackingMetricProperty where
+  toResourceProperties TargetTrackingMetricProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.TargetTrackingMetric",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Dimensions" Prelude.<$> dimensions,
+                            (JSON..=) "MetricName" Prelude.<$> metricName,
+                            (JSON..=) "Namespace" Prelude.<$> namespace])}
+instance JSON.ToJSON TargetTrackingMetricProperty where
+  toJSON TargetTrackingMetricProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Dimensions" Prelude.<$> dimensions,
+               (JSON..=) "MetricName" Prelude.<$> metricName,
+               (JSON..=) "Namespace" Prelude.<$> namespace]))
+instance Property "Dimensions" TargetTrackingMetricProperty where
+  type PropertyType "Dimensions" TargetTrackingMetricProperty = [TargetTrackingMetricDimensionProperty]
+  set newValue TargetTrackingMetricProperty {..}
+    = TargetTrackingMetricProperty
+        {dimensions = Prelude.pure newValue, ..}
+instance Property "MetricName" TargetTrackingMetricProperty where
+  type PropertyType "MetricName" TargetTrackingMetricProperty = Value Prelude.Text
+  set newValue TargetTrackingMetricProperty {..}
+    = TargetTrackingMetricProperty
+        {metricName = Prelude.pure newValue, ..}
+instance Property "Namespace" TargetTrackingMetricProperty where
+  type PropertyType "Namespace" TargetTrackingMetricProperty = Value Prelude.Text
+  set newValue TargetTrackingMetricProperty {..}
+    = TargetTrackingMetricProperty
+        {namespace = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TargetTrackingMetricProperty :: Prelude.Type
+instance ToResourceProperties TargetTrackingMetricProperty
+instance Prelude.Eq TargetTrackingMetricProperty
+instance Prelude.Show TargetTrackingMetricProperty
+instance JSON.ToJSON TargetTrackingMetricProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricStatProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricStatProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricStatProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricStatProperty (
+        module Exports, TargetTrackingMetricStatProperty(..),
+        mkTargetTrackingMetricStatProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TargetTrackingMetricStatProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricstat.html>
+    TargetTrackingMetricStatProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricstat.html#cfn-applicationautoscaling-scalingpolicy-targettrackingmetricstat-metric>
+                                      metric :: (Prelude.Maybe TargetTrackingMetricProperty),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricstat.html#cfn-applicationautoscaling-scalingpolicy-targettrackingmetricstat-stat>
+                                      stat :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricstat.html#cfn-applicationautoscaling-scalingpolicy-targettrackingmetricstat-unit>
+                                      unit :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTargetTrackingMetricStatProperty ::
+  TargetTrackingMetricStatProperty
+mkTargetTrackingMetricStatProperty
+  = TargetTrackingMetricStatProperty
+      {haddock_workaround_ = (), metric = Prelude.Nothing,
+       stat = Prelude.Nothing, unit = Prelude.Nothing}
+instance ToResourceProperties TargetTrackingMetricStatProperty where
+  toResourceProperties TargetTrackingMetricStatProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.TargetTrackingMetricStat",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Metric" Prelude.<$> metric,
+                            (JSON..=) "Stat" Prelude.<$> stat,
+                            (JSON..=) "Unit" Prelude.<$> unit])}
+instance JSON.ToJSON TargetTrackingMetricStatProperty where
+  toJSON TargetTrackingMetricStatProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Metric" Prelude.<$> metric,
+               (JSON..=) "Stat" Prelude.<$> stat,
+               (JSON..=) "Unit" Prelude.<$> unit]))
+instance Property "Metric" TargetTrackingMetricStatProperty where
+  type PropertyType "Metric" TargetTrackingMetricStatProperty = TargetTrackingMetricProperty
+  set newValue TargetTrackingMetricStatProperty {..}
+    = TargetTrackingMetricStatProperty
+        {metric = Prelude.pure newValue, ..}
+instance Property "Stat" TargetTrackingMetricStatProperty where
+  type PropertyType "Stat" TargetTrackingMetricStatProperty = Value Prelude.Text
+  set newValue TargetTrackingMetricStatProperty {..}
+    = TargetTrackingMetricStatProperty
+        {stat = Prelude.pure newValue, ..}
+instance Property "Unit" TargetTrackingMetricStatProperty where
+  type PropertyType "Unit" TargetTrackingMetricStatProperty = Value Prelude.Text
+  set newValue TargetTrackingMetricStatProperty {..}
+    = TargetTrackingMetricStatProperty
+        {unit = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricStatProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricStatProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingMetricStatProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricStatProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TargetTrackingMetricStatProperty :: Prelude.Type
+instance ToResourceProperties TargetTrackingMetricStatProperty
+instance Prelude.Eq TargetTrackingMetricStatProperty
+instance Prelude.Show TargetTrackingMetricStatProperty
+instance JSON.ToJSON TargetTrackingMetricStatProperty
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingScalingPolicyConfigurationProperty.hs b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingScalingPolicyConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingScalingPolicyConfigurationProperty.hs
@@ -0,0 +1,100 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingScalingPolicyConfigurationProperty (
+        module Exports,
+        TargetTrackingScalingPolicyConfigurationProperty(..),
+        mkTargetTrackingScalingPolicyConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.CustomizedMetricSpecificationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredefinedMetricSpecificationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TargetTrackingScalingPolicyConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html>
+    TargetTrackingScalingPolicyConfigurationProperty {haddock_workaround_ :: (),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration-customizedmetricspecification>
+                                                      customizedMetricSpecification :: (Prelude.Maybe CustomizedMetricSpecificationProperty),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration-disablescalein>
+                                                      disableScaleIn :: (Prelude.Maybe (Value Prelude.Bool)),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration-predefinedmetricspecification>
+                                                      predefinedMetricSpecification :: (Prelude.Maybe PredefinedMetricSpecificationProperty),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration-scaleincooldown>
+                                                      scaleInCooldown :: (Prelude.Maybe (Value Prelude.Integer)),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration-scaleoutcooldown>
+                                                      scaleOutCooldown :: (Prelude.Maybe (Value Prelude.Integer)),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration-targetvalue>
+                                                      targetValue :: (Value Prelude.Double)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTargetTrackingScalingPolicyConfigurationProperty ::
+  Value Prelude.Double
+  -> TargetTrackingScalingPolicyConfigurationProperty
+mkTargetTrackingScalingPolicyConfigurationProperty targetValue
+  = TargetTrackingScalingPolicyConfigurationProperty
+      {haddock_workaround_ = (), targetValue = targetValue,
+       customizedMetricSpecification = Prelude.Nothing,
+       disableScaleIn = Prelude.Nothing,
+       predefinedMetricSpecification = Prelude.Nothing,
+       scaleInCooldown = Prelude.Nothing,
+       scaleOutCooldown = Prelude.Nothing}
+instance ToResourceProperties TargetTrackingScalingPolicyConfigurationProperty where
+  toResourceProperties
+    TargetTrackingScalingPolicyConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy.TargetTrackingScalingPolicyConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["TargetValue" JSON..= targetValue]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CustomizedMetricSpecification"
+                                 Prelude.<$> customizedMetricSpecification,
+                               (JSON..=) "DisableScaleIn" Prelude.<$> disableScaleIn,
+                               (JSON..=) "PredefinedMetricSpecification"
+                                 Prelude.<$> predefinedMetricSpecification,
+                               (JSON..=) "ScaleInCooldown" Prelude.<$> scaleInCooldown,
+                               (JSON..=) "ScaleOutCooldown" Prelude.<$> scaleOutCooldown]))}
+instance JSON.ToJSON TargetTrackingScalingPolicyConfigurationProperty where
+  toJSON TargetTrackingScalingPolicyConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["TargetValue" JSON..= targetValue]
+              (Prelude.catMaybes
+                 [(JSON..=) "CustomizedMetricSpecification"
+                    Prelude.<$> customizedMetricSpecification,
+                  (JSON..=) "DisableScaleIn" Prelude.<$> disableScaleIn,
+                  (JSON..=) "PredefinedMetricSpecification"
+                    Prelude.<$> predefinedMetricSpecification,
+                  (JSON..=) "ScaleInCooldown" Prelude.<$> scaleInCooldown,
+                  (JSON..=) "ScaleOutCooldown" Prelude.<$> scaleOutCooldown])))
+instance Property "CustomizedMetricSpecification" TargetTrackingScalingPolicyConfigurationProperty where
+  type PropertyType "CustomizedMetricSpecification" TargetTrackingScalingPolicyConfigurationProperty = CustomizedMetricSpecificationProperty
+  set newValue TargetTrackingScalingPolicyConfigurationProperty {..}
+    = TargetTrackingScalingPolicyConfigurationProperty
+        {customizedMetricSpecification = Prelude.pure newValue, ..}
+instance Property "DisableScaleIn" TargetTrackingScalingPolicyConfigurationProperty where
+  type PropertyType "DisableScaleIn" TargetTrackingScalingPolicyConfigurationProperty = Value Prelude.Bool
+  set newValue TargetTrackingScalingPolicyConfigurationProperty {..}
+    = TargetTrackingScalingPolicyConfigurationProperty
+        {disableScaleIn = Prelude.pure newValue, ..}
+instance Property "PredefinedMetricSpecification" TargetTrackingScalingPolicyConfigurationProperty where
+  type PropertyType "PredefinedMetricSpecification" TargetTrackingScalingPolicyConfigurationProperty = PredefinedMetricSpecificationProperty
+  set newValue TargetTrackingScalingPolicyConfigurationProperty {..}
+    = TargetTrackingScalingPolicyConfigurationProperty
+        {predefinedMetricSpecification = Prelude.pure newValue, ..}
+instance Property "ScaleInCooldown" TargetTrackingScalingPolicyConfigurationProperty where
+  type PropertyType "ScaleInCooldown" TargetTrackingScalingPolicyConfigurationProperty = Value Prelude.Integer
+  set newValue TargetTrackingScalingPolicyConfigurationProperty {..}
+    = TargetTrackingScalingPolicyConfigurationProperty
+        {scaleInCooldown = Prelude.pure newValue, ..}
+instance Property "ScaleOutCooldown" TargetTrackingScalingPolicyConfigurationProperty where
+  type PropertyType "ScaleOutCooldown" TargetTrackingScalingPolicyConfigurationProperty = Value Prelude.Integer
+  set newValue TargetTrackingScalingPolicyConfigurationProperty {..}
+    = TargetTrackingScalingPolicyConfigurationProperty
+        {scaleOutCooldown = Prelude.pure newValue, ..}
+instance Property "TargetValue" TargetTrackingScalingPolicyConfigurationProperty where
+  type PropertyType "TargetValue" TargetTrackingScalingPolicyConfigurationProperty = Value Prelude.Double
+  set newValue TargetTrackingScalingPolicyConfigurationProperty {..}
+    = TargetTrackingScalingPolicyConfigurationProperty
+        {targetValue = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingScalingPolicyConfigurationProperty.hs-boot b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingScalingPolicyConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy/TargetTrackingScalingPolicyConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingScalingPolicyConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TargetTrackingScalingPolicyConfigurationProperty :: Prelude.Type
+instance ToResourceProperties TargetTrackingScalingPolicyConfigurationProperty
+instance Prelude.Eq TargetTrackingScalingPolicyConfigurationProperty
+instance Prelude.Show TargetTrackingScalingPolicyConfigurationProperty
+instance JSON.ToJSON TargetTrackingScalingPolicyConfigurationProperty
diff --git a/stratosphere-applicationautoscaling.cabal b/stratosphere-applicationautoscaling.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-applicationautoscaling.cabal
@@ -0,0 +1,99 @@
+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-applicationautoscaling
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS ApplicationAutoScaling.
+description:    Integration into stratosphere to generate resources and properties for AWS ApplicationAutoScaling
+category:       AWS, Cloud, ApplicationAutoScaling
+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.ApplicationAutoScaling.ScalableTarget
+      Stratosphere.ApplicationAutoScaling.ScalableTarget.ScalableTargetActionProperty
+      Stratosphere.ApplicationAutoScaling.ScalableTarget.ScheduledActionProperty
+      Stratosphere.ApplicationAutoScaling.ScalableTarget.SuspendedStateProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.CustomizedMetricSpecificationProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.MetricDimensionProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredefinedMetricSpecificationProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingCustomizedCapacityMetricProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingCustomizedLoadMetricProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingCustomizedScalingMetricProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricDataQueryProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricDimensionProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricSpecificationProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingMetricStatProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPolicyConfigurationProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPredefinedLoadMetricProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPredefinedMetricPairProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPredefinedScalingMetricProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.StepAdjustmentProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.StepScalingPolicyConfigurationProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricDataQueryProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricDimensionProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingMetricStatProperty
+      Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingScalingPolicyConfigurationProperty
+  other-modules:
+      Paths_stratosphere_applicationautoscaling
+  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
