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/ARCRegionSwitch/Plan.hs b/gen/Stratosphere/ARCRegionSwitch/Plan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan.hs
@@ -0,0 +1,123 @@
+module Stratosphere.ARCRegionSwitch.Plan (
+        module Exports, Plan(..), mkPlan
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.AssociatedAlarmProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.TriggerProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.WorkflowProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Plan
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arcregionswitch-plan.html>
+    Plan {haddock_workaround_ :: (),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arcregionswitch-plan.html#cfn-arcregionswitch-plan-associatedalarms>
+          associatedAlarms :: (Prelude.Maybe (Prelude.Map Prelude.Text AssociatedAlarmProperty)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arcregionswitch-plan.html#cfn-arcregionswitch-plan-description>
+          description :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arcregionswitch-plan.html#cfn-arcregionswitch-plan-executionrole>
+          executionRole :: (Value Prelude.Text),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arcregionswitch-plan.html#cfn-arcregionswitch-plan-name>
+          name :: (Value Prelude.Text),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arcregionswitch-plan.html#cfn-arcregionswitch-plan-primaryregion>
+          primaryRegion :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arcregionswitch-plan.html#cfn-arcregionswitch-plan-recoveryapproach>
+          recoveryApproach :: (Value Prelude.Text),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arcregionswitch-plan.html#cfn-arcregionswitch-plan-recoverytimeobjectiveminutes>
+          recoveryTimeObjectiveMinutes :: (Prelude.Maybe (Value Prelude.Double)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arcregionswitch-plan.html#cfn-arcregionswitch-plan-regions>
+          regions :: (ValueList Prelude.Text),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arcregionswitch-plan.html#cfn-arcregionswitch-plan-tags>
+          tags :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arcregionswitch-plan.html#cfn-arcregionswitch-plan-triggers>
+          triggers :: (Prelude.Maybe [TriggerProperty]),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arcregionswitch-plan.html#cfn-arcregionswitch-plan-workflows>
+          workflows :: [WorkflowProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPlan ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text
+        -> ValueList Prelude.Text -> [WorkflowProperty] -> Plan
+mkPlan executionRole name recoveryApproach regions workflows
+  = Plan
+      {haddock_workaround_ = (), executionRole = executionRole,
+       name = name, recoveryApproach = recoveryApproach,
+       regions = regions, workflows = workflows,
+       associatedAlarms = Prelude.Nothing, description = Prelude.Nothing,
+       primaryRegion = Prelude.Nothing,
+       recoveryTimeObjectiveMinutes = Prelude.Nothing,
+       tags = Prelude.Nothing, triggers = Prelude.Nothing}
+instance ToResourceProperties Plan where
+  toResourceProperties Plan {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ExecutionRole" JSON..= executionRole, "Name" JSON..= name,
+                            "RecoveryApproach" JSON..= recoveryApproach,
+                            "Regions" JSON..= regions, "Workflows" JSON..= workflows]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AssociatedAlarms" Prelude.<$> associatedAlarms,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "PrimaryRegion" Prelude.<$> primaryRegion,
+                               (JSON..=) "RecoveryTimeObjectiveMinutes"
+                                 Prelude.<$> recoveryTimeObjectiveMinutes,
+                               (JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "Triggers" Prelude.<$> triggers]))}
+instance JSON.ToJSON Plan where
+  toJSON Plan {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ExecutionRole" JSON..= executionRole, "Name" JSON..= name,
+               "RecoveryApproach" JSON..= recoveryApproach,
+               "Regions" JSON..= regions, "Workflows" JSON..= workflows]
+              (Prelude.catMaybes
+                 [(JSON..=) "AssociatedAlarms" Prelude.<$> associatedAlarms,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "PrimaryRegion" Prelude.<$> primaryRegion,
+                  (JSON..=) "RecoveryTimeObjectiveMinutes"
+                    Prelude.<$> recoveryTimeObjectiveMinutes,
+                  (JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "Triggers" Prelude.<$> triggers])))
+instance Property "AssociatedAlarms" Plan where
+  type PropertyType "AssociatedAlarms" Plan = Prelude.Map Prelude.Text AssociatedAlarmProperty
+  set newValue Plan {..}
+    = Plan {associatedAlarms = Prelude.pure newValue, ..}
+instance Property "Description" Plan where
+  type PropertyType "Description" Plan = Value Prelude.Text
+  set newValue Plan {..}
+    = Plan {description = Prelude.pure newValue, ..}
+instance Property "ExecutionRole" Plan where
+  type PropertyType "ExecutionRole" Plan = Value Prelude.Text
+  set newValue Plan {..} = Plan {executionRole = newValue, ..}
+instance Property "Name" Plan where
+  type PropertyType "Name" Plan = Value Prelude.Text
+  set newValue Plan {..} = Plan {name = newValue, ..}
+instance Property "PrimaryRegion" Plan where
+  type PropertyType "PrimaryRegion" Plan = Value Prelude.Text
+  set newValue Plan {..}
+    = Plan {primaryRegion = Prelude.pure newValue, ..}
+instance Property "RecoveryApproach" Plan where
+  type PropertyType "RecoveryApproach" Plan = Value Prelude.Text
+  set newValue Plan {..} = Plan {recoveryApproach = newValue, ..}
+instance Property "RecoveryTimeObjectiveMinutes" Plan where
+  type PropertyType "RecoveryTimeObjectiveMinutes" Plan = Value Prelude.Double
+  set newValue Plan {..}
+    = Plan {recoveryTimeObjectiveMinutes = Prelude.pure newValue, ..}
+instance Property "Regions" Plan where
+  type PropertyType "Regions" Plan = ValueList Prelude.Text
+  set newValue Plan {..} = Plan {regions = newValue, ..}
+instance Property "Tags" Plan where
+  type PropertyType "Tags" Plan = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue Plan {..} = Plan {tags = Prelude.pure newValue, ..}
+instance Property "Triggers" Plan where
+  type PropertyType "Triggers" Plan = [TriggerProperty]
+  set newValue Plan {..}
+    = Plan {triggers = Prelude.pure newValue, ..}
+instance Property "Workflows" Plan where
+  type PropertyType "Workflows" Plan = [WorkflowProperty]
+  set newValue Plan {..} = Plan {workflows = newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/ArcRoutingControlConfigurationProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/ArcRoutingControlConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/ArcRoutingControlConfigurationProperty.hs
@@ -0,0 +1,71 @@
+module Stratosphere.ARCRegionSwitch.Plan.ArcRoutingControlConfigurationProperty (
+        ArcRoutingControlConfigurationProperty(..),
+        mkArcRoutingControlConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ArcRoutingControlConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-arcroutingcontrolconfiguration.html>
+    ArcRoutingControlConfigurationProperty {haddock_workaround_ :: (),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-arcroutingcontrolconfiguration.html#cfn-arcregionswitch-plan-arcroutingcontrolconfiguration-crossaccountrole>
+                                            crossAccountRole :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-arcroutingcontrolconfiguration.html#cfn-arcregionswitch-plan-arcroutingcontrolconfiguration-externalid>
+                                            externalId :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-arcroutingcontrolconfiguration.html#cfn-arcregionswitch-plan-arcroutingcontrolconfiguration-regionandroutingcontrols>
+                                            regionAndRoutingControls :: JSON.Object,
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-arcroutingcontrolconfiguration.html#cfn-arcregionswitch-plan-arcroutingcontrolconfiguration-timeoutminutes>
+                                            timeoutMinutes :: (Prelude.Maybe (Value Prelude.Double))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkArcRoutingControlConfigurationProperty ::
+  JSON.Object -> ArcRoutingControlConfigurationProperty
+mkArcRoutingControlConfigurationProperty regionAndRoutingControls
+  = ArcRoutingControlConfigurationProperty
+      {haddock_workaround_ = (),
+       regionAndRoutingControls = regionAndRoutingControls,
+       crossAccountRole = Prelude.Nothing, externalId = Prelude.Nothing,
+       timeoutMinutes = Prelude.Nothing}
+instance ToResourceProperties ArcRoutingControlConfigurationProperty where
+  toResourceProperties ArcRoutingControlConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.ArcRoutingControlConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["RegionAndRoutingControls" JSON..= regionAndRoutingControls]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                               (JSON..=) "ExternalId" Prelude.<$> externalId,
+                               (JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes]))}
+instance JSON.ToJSON ArcRoutingControlConfigurationProperty where
+  toJSON ArcRoutingControlConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["RegionAndRoutingControls" JSON..= regionAndRoutingControls]
+              (Prelude.catMaybes
+                 [(JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                  (JSON..=) "ExternalId" Prelude.<$> externalId,
+                  (JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes])))
+instance Property "CrossAccountRole" ArcRoutingControlConfigurationProperty where
+  type PropertyType "CrossAccountRole" ArcRoutingControlConfigurationProperty = Value Prelude.Text
+  set newValue ArcRoutingControlConfigurationProperty {..}
+    = ArcRoutingControlConfigurationProperty
+        {crossAccountRole = Prelude.pure newValue, ..}
+instance Property "ExternalId" ArcRoutingControlConfigurationProperty where
+  type PropertyType "ExternalId" ArcRoutingControlConfigurationProperty = Value Prelude.Text
+  set newValue ArcRoutingControlConfigurationProperty {..}
+    = ArcRoutingControlConfigurationProperty
+        {externalId = Prelude.pure newValue, ..}
+instance Property "RegionAndRoutingControls" ArcRoutingControlConfigurationProperty where
+  type PropertyType "RegionAndRoutingControls" ArcRoutingControlConfigurationProperty = JSON.Object
+  set newValue ArcRoutingControlConfigurationProperty {..}
+    = ArcRoutingControlConfigurationProperty
+        {regionAndRoutingControls = newValue, ..}
+instance Property "TimeoutMinutes" ArcRoutingControlConfigurationProperty where
+  type PropertyType "TimeoutMinutes" ArcRoutingControlConfigurationProperty = Value Prelude.Double
+  set newValue ArcRoutingControlConfigurationProperty {..}
+    = ArcRoutingControlConfigurationProperty
+        {timeoutMinutes = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/ArcRoutingControlConfigurationProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/ArcRoutingControlConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/ArcRoutingControlConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.ArcRoutingControlConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ArcRoutingControlConfigurationProperty :: Prelude.Type
+instance ToResourceProperties ArcRoutingControlConfigurationProperty
+instance Prelude.Eq ArcRoutingControlConfigurationProperty
+instance Prelude.Show ArcRoutingControlConfigurationProperty
+instance JSON.ToJSON ArcRoutingControlConfigurationProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/AsgProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/AsgProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/AsgProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.ARCRegionSwitch.Plan.AsgProperty (
+        AsgProperty(..), mkAsgProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AsgProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-asg.html>
+    AsgProperty {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-asg.html#cfn-arcregionswitch-plan-asg-arn>
+                 arn :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-asg.html#cfn-arcregionswitch-plan-asg-crossaccountrole>
+                 crossAccountRole :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-asg.html#cfn-arcregionswitch-plan-asg-externalid>
+                 externalId :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAsgProperty :: AsgProperty
+mkAsgProperty
+  = AsgProperty
+      {haddock_workaround_ = (), arn = Prelude.Nothing,
+       crossAccountRole = Prelude.Nothing, externalId = Prelude.Nothing}
+instance ToResourceProperties AsgProperty where
+  toResourceProperties AsgProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.Asg",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Arn" Prelude.<$> arn,
+                            (JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                            (JSON..=) "ExternalId" Prelude.<$> externalId])}
+instance JSON.ToJSON AsgProperty where
+  toJSON AsgProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Arn" Prelude.<$> arn,
+               (JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+               (JSON..=) "ExternalId" Prelude.<$> externalId]))
+instance Property "Arn" AsgProperty where
+  type PropertyType "Arn" AsgProperty = Value Prelude.Text
+  set newValue AsgProperty {..}
+    = AsgProperty {arn = Prelude.pure newValue, ..}
+instance Property "CrossAccountRole" AsgProperty where
+  type PropertyType "CrossAccountRole" AsgProperty = Value Prelude.Text
+  set newValue AsgProperty {..}
+    = AsgProperty {crossAccountRole = Prelude.pure newValue, ..}
+instance Property "ExternalId" AsgProperty where
+  type PropertyType "ExternalId" AsgProperty = Value Prelude.Text
+  set newValue AsgProperty {..}
+    = AsgProperty {externalId = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/AsgProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/AsgProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/AsgProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.AsgProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AsgProperty :: Prelude.Type
+instance ToResourceProperties AsgProperty
+instance Prelude.Eq AsgProperty
+instance Prelude.Show AsgProperty
+instance JSON.ToJSON AsgProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/AssociatedAlarmProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/AssociatedAlarmProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/AssociatedAlarmProperty.hs
@@ -0,0 +1,66 @@
+module Stratosphere.ARCRegionSwitch.Plan.AssociatedAlarmProperty (
+        AssociatedAlarmProperty(..), mkAssociatedAlarmProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AssociatedAlarmProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-associatedalarm.html>
+    AssociatedAlarmProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-associatedalarm.html#cfn-arcregionswitch-plan-associatedalarm-alarmtype>
+                             alarmType :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-associatedalarm.html#cfn-arcregionswitch-plan-associatedalarm-crossaccountrole>
+                             crossAccountRole :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-associatedalarm.html#cfn-arcregionswitch-plan-associatedalarm-externalid>
+                             externalId :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-associatedalarm.html#cfn-arcregionswitch-plan-associatedalarm-resourceidentifier>
+                             resourceIdentifier :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAssociatedAlarmProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> AssociatedAlarmProperty
+mkAssociatedAlarmProperty alarmType resourceIdentifier
+  = AssociatedAlarmProperty
+      {haddock_workaround_ = (), alarmType = alarmType,
+       resourceIdentifier = resourceIdentifier,
+       crossAccountRole = Prelude.Nothing, externalId = Prelude.Nothing}
+instance ToResourceProperties AssociatedAlarmProperty where
+  toResourceProperties AssociatedAlarmProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.AssociatedAlarm",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AlarmType" JSON..= alarmType,
+                            "ResourceIdentifier" JSON..= resourceIdentifier]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                               (JSON..=) "ExternalId" Prelude.<$> externalId]))}
+instance JSON.ToJSON AssociatedAlarmProperty where
+  toJSON AssociatedAlarmProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AlarmType" JSON..= alarmType,
+               "ResourceIdentifier" JSON..= resourceIdentifier]
+              (Prelude.catMaybes
+                 [(JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                  (JSON..=) "ExternalId" Prelude.<$> externalId])))
+instance Property "AlarmType" AssociatedAlarmProperty where
+  type PropertyType "AlarmType" AssociatedAlarmProperty = Value Prelude.Text
+  set newValue AssociatedAlarmProperty {..}
+    = AssociatedAlarmProperty {alarmType = newValue, ..}
+instance Property "CrossAccountRole" AssociatedAlarmProperty where
+  type PropertyType "CrossAccountRole" AssociatedAlarmProperty = Value Prelude.Text
+  set newValue AssociatedAlarmProperty {..}
+    = AssociatedAlarmProperty
+        {crossAccountRole = Prelude.pure newValue, ..}
+instance Property "ExternalId" AssociatedAlarmProperty where
+  type PropertyType "ExternalId" AssociatedAlarmProperty = Value Prelude.Text
+  set newValue AssociatedAlarmProperty {..}
+    = AssociatedAlarmProperty {externalId = Prelude.pure newValue, ..}
+instance Property "ResourceIdentifier" AssociatedAlarmProperty where
+  type PropertyType "ResourceIdentifier" AssociatedAlarmProperty = Value Prelude.Text
+  set newValue AssociatedAlarmProperty {..}
+    = AssociatedAlarmProperty {resourceIdentifier = newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/AssociatedAlarmProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/AssociatedAlarmProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/AssociatedAlarmProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.AssociatedAlarmProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AssociatedAlarmProperty :: Prelude.Type
+instance ToResourceProperties AssociatedAlarmProperty
+instance Prelude.Eq AssociatedAlarmProperty
+instance Prelude.Show AssociatedAlarmProperty
+instance JSON.ToJSON AssociatedAlarmProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/CustomActionLambdaConfigurationProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/CustomActionLambdaConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/CustomActionLambdaConfigurationProperty.hs
@@ -0,0 +1,84 @@
+module Stratosphere.ARCRegionSwitch.Plan.CustomActionLambdaConfigurationProperty (
+        module Exports, CustomActionLambdaConfigurationProperty(..),
+        mkCustomActionLambdaConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.LambdaUngracefulProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.LambdasProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CustomActionLambdaConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-customactionlambdaconfiguration.html>
+    CustomActionLambdaConfigurationProperty {haddock_workaround_ :: (),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-customactionlambdaconfiguration.html#cfn-arcregionswitch-plan-customactionlambdaconfiguration-lambdas>
+                                             lambdas :: [LambdasProperty],
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-customactionlambdaconfiguration.html#cfn-arcregionswitch-plan-customactionlambdaconfiguration-regiontorun>
+                                             regionToRun :: (Value Prelude.Text),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-customactionlambdaconfiguration.html#cfn-arcregionswitch-plan-customactionlambdaconfiguration-retryintervalminutes>
+                                             retryIntervalMinutes :: (Value Prelude.Double),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-customactionlambdaconfiguration.html#cfn-arcregionswitch-plan-customactionlambdaconfiguration-timeoutminutes>
+                                             timeoutMinutes :: (Prelude.Maybe (Value Prelude.Double)),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-customactionlambdaconfiguration.html#cfn-arcregionswitch-plan-customactionlambdaconfiguration-ungraceful>
+                                             ungraceful :: (Prelude.Maybe LambdaUngracefulProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCustomActionLambdaConfigurationProperty ::
+  [LambdasProperty]
+  -> Value Prelude.Text
+     -> Value Prelude.Double -> CustomActionLambdaConfigurationProperty
+mkCustomActionLambdaConfigurationProperty
+  lambdas
+  regionToRun
+  retryIntervalMinutes
+  = CustomActionLambdaConfigurationProperty
+      {haddock_workaround_ = (), lambdas = lambdas,
+       regionToRun = regionToRun,
+       retryIntervalMinutes = retryIntervalMinutes,
+       timeoutMinutes = Prelude.Nothing, ungraceful = Prelude.Nothing}
+instance ToResourceProperties CustomActionLambdaConfigurationProperty where
+  toResourceProperties CustomActionLambdaConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.CustomActionLambdaConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Lambdas" JSON..= lambdas, "RegionToRun" JSON..= regionToRun,
+                            "RetryIntervalMinutes" JSON..= retryIntervalMinutes]
+                           (Prelude.catMaybes
+                              [(JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes,
+                               (JSON..=) "Ungraceful" Prelude.<$> ungraceful]))}
+instance JSON.ToJSON CustomActionLambdaConfigurationProperty where
+  toJSON CustomActionLambdaConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Lambdas" JSON..= lambdas, "RegionToRun" JSON..= regionToRun,
+               "RetryIntervalMinutes" JSON..= retryIntervalMinutes]
+              (Prelude.catMaybes
+                 [(JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes,
+                  (JSON..=) "Ungraceful" Prelude.<$> ungraceful])))
+instance Property "Lambdas" CustomActionLambdaConfigurationProperty where
+  type PropertyType "Lambdas" CustomActionLambdaConfigurationProperty = [LambdasProperty]
+  set newValue CustomActionLambdaConfigurationProperty {..}
+    = CustomActionLambdaConfigurationProperty {lambdas = newValue, ..}
+instance Property "RegionToRun" CustomActionLambdaConfigurationProperty where
+  type PropertyType "RegionToRun" CustomActionLambdaConfigurationProperty = Value Prelude.Text
+  set newValue CustomActionLambdaConfigurationProperty {..}
+    = CustomActionLambdaConfigurationProperty
+        {regionToRun = newValue, ..}
+instance Property "RetryIntervalMinutes" CustomActionLambdaConfigurationProperty where
+  type PropertyType "RetryIntervalMinutes" CustomActionLambdaConfigurationProperty = Value Prelude.Double
+  set newValue CustomActionLambdaConfigurationProperty {..}
+    = CustomActionLambdaConfigurationProperty
+        {retryIntervalMinutes = newValue, ..}
+instance Property "TimeoutMinutes" CustomActionLambdaConfigurationProperty where
+  type PropertyType "TimeoutMinutes" CustomActionLambdaConfigurationProperty = Value Prelude.Double
+  set newValue CustomActionLambdaConfigurationProperty {..}
+    = CustomActionLambdaConfigurationProperty
+        {timeoutMinutes = Prelude.pure newValue, ..}
+instance Property "Ungraceful" CustomActionLambdaConfigurationProperty where
+  type PropertyType "Ungraceful" CustomActionLambdaConfigurationProperty = LambdaUngracefulProperty
+  set newValue CustomActionLambdaConfigurationProperty {..}
+    = CustomActionLambdaConfigurationProperty
+        {ungraceful = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/CustomActionLambdaConfigurationProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/CustomActionLambdaConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/CustomActionLambdaConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.CustomActionLambdaConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CustomActionLambdaConfigurationProperty :: Prelude.Type
+instance ToResourceProperties CustomActionLambdaConfigurationProperty
+instance Prelude.Eq CustomActionLambdaConfigurationProperty
+instance Prelude.Show CustomActionLambdaConfigurationProperty
+instance JSON.ToJSON CustomActionLambdaConfigurationProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/Ec2AsgCapacityIncreaseConfigurationProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/Ec2AsgCapacityIncreaseConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/Ec2AsgCapacityIncreaseConfigurationProperty.hs
@@ -0,0 +1,84 @@
+module Stratosphere.ARCRegionSwitch.Plan.Ec2AsgCapacityIncreaseConfigurationProperty (
+        module Exports, Ec2AsgCapacityIncreaseConfigurationProperty(..),
+        mkEc2AsgCapacityIncreaseConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.AsgProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.Ec2UngracefulProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Ec2AsgCapacityIncreaseConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ec2asgcapacityincreaseconfiguration.html>
+    Ec2AsgCapacityIncreaseConfigurationProperty {haddock_workaround_ :: (),
+                                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ec2asgcapacityincreaseconfiguration.html#cfn-arcregionswitch-plan-ec2asgcapacityincreaseconfiguration-asgs>
+                                                 asgs :: [AsgProperty],
+                                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ec2asgcapacityincreaseconfiguration.html#cfn-arcregionswitch-plan-ec2asgcapacityincreaseconfiguration-capacitymonitoringapproach>
+                                                 capacityMonitoringApproach :: (Prelude.Maybe JSON.Object),
+                                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ec2asgcapacityincreaseconfiguration.html#cfn-arcregionswitch-plan-ec2asgcapacityincreaseconfiguration-targetpercent>
+                                                 targetPercent :: (Prelude.Maybe (Value Prelude.Double)),
+                                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ec2asgcapacityincreaseconfiguration.html#cfn-arcregionswitch-plan-ec2asgcapacityincreaseconfiguration-timeoutminutes>
+                                                 timeoutMinutes :: (Prelude.Maybe (Value Prelude.Double)),
+                                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ec2asgcapacityincreaseconfiguration.html#cfn-arcregionswitch-plan-ec2asgcapacityincreaseconfiguration-ungraceful>
+                                                 ungraceful :: (Prelude.Maybe Ec2UngracefulProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEc2AsgCapacityIncreaseConfigurationProperty ::
+  [AsgProperty] -> Ec2AsgCapacityIncreaseConfigurationProperty
+mkEc2AsgCapacityIncreaseConfigurationProperty asgs
+  = Ec2AsgCapacityIncreaseConfigurationProperty
+      {haddock_workaround_ = (), asgs = asgs,
+       capacityMonitoringApproach = Prelude.Nothing,
+       targetPercent = Prelude.Nothing, timeoutMinutes = Prelude.Nothing,
+       ungraceful = Prelude.Nothing}
+instance ToResourceProperties Ec2AsgCapacityIncreaseConfigurationProperty where
+  toResourceProperties
+    Ec2AsgCapacityIncreaseConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.Ec2AsgCapacityIncreaseConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Asgs" JSON..= asgs]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CapacityMonitoringApproach"
+                                 Prelude.<$> capacityMonitoringApproach,
+                               (JSON..=) "TargetPercent" Prelude.<$> targetPercent,
+                               (JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes,
+                               (JSON..=) "Ungraceful" Prelude.<$> ungraceful]))}
+instance JSON.ToJSON Ec2AsgCapacityIncreaseConfigurationProperty where
+  toJSON Ec2AsgCapacityIncreaseConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Asgs" JSON..= asgs]
+              (Prelude.catMaybes
+                 [(JSON..=) "CapacityMonitoringApproach"
+                    Prelude.<$> capacityMonitoringApproach,
+                  (JSON..=) "TargetPercent" Prelude.<$> targetPercent,
+                  (JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes,
+                  (JSON..=) "Ungraceful" Prelude.<$> ungraceful])))
+instance Property "Asgs" Ec2AsgCapacityIncreaseConfigurationProperty where
+  type PropertyType "Asgs" Ec2AsgCapacityIncreaseConfigurationProperty = [AsgProperty]
+  set newValue Ec2AsgCapacityIncreaseConfigurationProperty {..}
+    = Ec2AsgCapacityIncreaseConfigurationProperty {asgs = newValue, ..}
+instance Property "CapacityMonitoringApproach" Ec2AsgCapacityIncreaseConfigurationProperty where
+  type PropertyType "CapacityMonitoringApproach" Ec2AsgCapacityIncreaseConfigurationProperty = JSON.Object
+  set newValue Ec2AsgCapacityIncreaseConfigurationProperty {..}
+    = Ec2AsgCapacityIncreaseConfigurationProperty
+        {capacityMonitoringApproach = Prelude.pure newValue, ..}
+instance Property "TargetPercent" Ec2AsgCapacityIncreaseConfigurationProperty where
+  type PropertyType "TargetPercent" Ec2AsgCapacityIncreaseConfigurationProperty = Value Prelude.Double
+  set newValue Ec2AsgCapacityIncreaseConfigurationProperty {..}
+    = Ec2AsgCapacityIncreaseConfigurationProperty
+        {targetPercent = Prelude.pure newValue, ..}
+instance Property "TimeoutMinutes" Ec2AsgCapacityIncreaseConfigurationProperty where
+  type PropertyType "TimeoutMinutes" Ec2AsgCapacityIncreaseConfigurationProperty = Value Prelude.Double
+  set newValue Ec2AsgCapacityIncreaseConfigurationProperty {..}
+    = Ec2AsgCapacityIncreaseConfigurationProperty
+        {timeoutMinutes = Prelude.pure newValue, ..}
+instance Property "Ungraceful" Ec2AsgCapacityIncreaseConfigurationProperty where
+  type PropertyType "Ungraceful" Ec2AsgCapacityIncreaseConfigurationProperty = Ec2UngracefulProperty
+  set newValue Ec2AsgCapacityIncreaseConfigurationProperty {..}
+    = Ec2AsgCapacityIncreaseConfigurationProperty
+        {ungraceful = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/Ec2AsgCapacityIncreaseConfigurationProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/Ec2AsgCapacityIncreaseConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/Ec2AsgCapacityIncreaseConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.Ec2AsgCapacityIncreaseConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data Ec2AsgCapacityIncreaseConfigurationProperty :: Prelude.Type
+instance ToResourceProperties Ec2AsgCapacityIncreaseConfigurationProperty
+instance Prelude.Eq Ec2AsgCapacityIncreaseConfigurationProperty
+instance Prelude.Show Ec2AsgCapacityIncreaseConfigurationProperty
+instance JSON.ToJSON Ec2AsgCapacityIncreaseConfigurationProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/Ec2UngracefulProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/Ec2UngracefulProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/Ec2UngracefulProperty.hs
@@ -0,0 +1,35 @@
+module Stratosphere.ARCRegionSwitch.Plan.Ec2UngracefulProperty (
+        Ec2UngracefulProperty(..), mkEc2UngracefulProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Ec2UngracefulProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ec2ungraceful.html>
+    Ec2UngracefulProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ec2ungraceful.html#cfn-arcregionswitch-plan-ec2ungraceful-minimumsuccesspercentage>
+                           minimumSuccessPercentage :: (Value Prelude.Double)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEc2UngracefulProperty ::
+  Value Prelude.Double -> Ec2UngracefulProperty
+mkEc2UngracefulProperty minimumSuccessPercentage
+  = Ec2UngracefulProperty
+      {haddock_workaround_ = (),
+       minimumSuccessPercentage = minimumSuccessPercentage}
+instance ToResourceProperties Ec2UngracefulProperty where
+  toResourceProperties Ec2UngracefulProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.Ec2Ungraceful",
+         supportsTags = Prelude.False,
+         properties = ["MinimumSuccessPercentage"
+                         JSON..= minimumSuccessPercentage]}
+instance JSON.ToJSON Ec2UngracefulProperty where
+  toJSON Ec2UngracefulProperty {..}
+    = JSON.object
+        ["MinimumSuccessPercentage" JSON..= minimumSuccessPercentage]
+instance Property "MinimumSuccessPercentage" Ec2UngracefulProperty where
+  type PropertyType "MinimumSuccessPercentage" Ec2UngracefulProperty = Value Prelude.Double
+  set newValue Ec2UngracefulProperty {..}
+    = Ec2UngracefulProperty {minimumSuccessPercentage = newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/Ec2UngracefulProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/Ec2UngracefulProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/Ec2UngracefulProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.Ec2UngracefulProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data Ec2UngracefulProperty :: Prelude.Type
+instance ToResourceProperties Ec2UngracefulProperty
+instance Prelude.Eq Ec2UngracefulProperty
+instance Prelude.Show Ec2UngracefulProperty
+instance JSON.ToJSON Ec2UngracefulProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/EcsCapacityIncreaseConfigurationProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/EcsCapacityIncreaseConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/EcsCapacityIncreaseConfigurationProperty.hs
@@ -0,0 +1,84 @@
+module Stratosphere.ARCRegionSwitch.Plan.EcsCapacityIncreaseConfigurationProperty (
+        module Exports, EcsCapacityIncreaseConfigurationProperty(..),
+        mkEcsCapacityIncreaseConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.EcsUngracefulProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.ServiceProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EcsCapacityIncreaseConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ecscapacityincreaseconfiguration.html>
+    EcsCapacityIncreaseConfigurationProperty {haddock_workaround_ :: (),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ecscapacityincreaseconfiguration.html#cfn-arcregionswitch-plan-ecscapacityincreaseconfiguration-capacitymonitoringapproach>
+                                              capacityMonitoringApproach :: (Prelude.Maybe JSON.Object),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ecscapacityincreaseconfiguration.html#cfn-arcregionswitch-plan-ecscapacityincreaseconfiguration-services>
+                                              services :: [ServiceProperty],
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ecscapacityincreaseconfiguration.html#cfn-arcregionswitch-plan-ecscapacityincreaseconfiguration-targetpercent>
+                                              targetPercent :: (Prelude.Maybe (Value Prelude.Double)),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ecscapacityincreaseconfiguration.html#cfn-arcregionswitch-plan-ecscapacityincreaseconfiguration-timeoutminutes>
+                                              timeoutMinutes :: (Prelude.Maybe (Value Prelude.Double)),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ecscapacityincreaseconfiguration.html#cfn-arcregionswitch-plan-ecscapacityincreaseconfiguration-ungraceful>
+                                              ungraceful :: (Prelude.Maybe EcsUngracefulProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEcsCapacityIncreaseConfigurationProperty ::
+  [ServiceProperty] -> EcsCapacityIncreaseConfigurationProperty
+mkEcsCapacityIncreaseConfigurationProperty services
+  = EcsCapacityIncreaseConfigurationProperty
+      {haddock_workaround_ = (), services = services,
+       capacityMonitoringApproach = Prelude.Nothing,
+       targetPercent = Prelude.Nothing, timeoutMinutes = Prelude.Nothing,
+       ungraceful = Prelude.Nothing}
+instance ToResourceProperties EcsCapacityIncreaseConfigurationProperty where
+  toResourceProperties EcsCapacityIncreaseConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.EcsCapacityIncreaseConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Services" JSON..= services]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CapacityMonitoringApproach"
+                                 Prelude.<$> capacityMonitoringApproach,
+                               (JSON..=) "TargetPercent" Prelude.<$> targetPercent,
+                               (JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes,
+                               (JSON..=) "Ungraceful" Prelude.<$> ungraceful]))}
+instance JSON.ToJSON EcsCapacityIncreaseConfigurationProperty where
+  toJSON EcsCapacityIncreaseConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Services" JSON..= services]
+              (Prelude.catMaybes
+                 [(JSON..=) "CapacityMonitoringApproach"
+                    Prelude.<$> capacityMonitoringApproach,
+                  (JSON..=) "TargetPercent" Prelude.<$> targetPercent,
+                  (JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes,
+                  (JSON..=) "Ungraceful" Prelude.<$> ungraceful])))
+instance Property "CapacityMonitoringApproach" EcsCapacityIncreaseConfigurationProperty where
+  type PropertyType "CapacityMonitoringApproach" EcsCapacityIncreaseConfigurationProperty = JSON.Object
+  set newValue EcsCapacityIncreaseConfigurationProperty {..}
+    = EcsCapacityIncreaseConfigurationProperty
+        {capacityMonitoringApproach = Prelude.pure newValue, ..}
+instance Property "Services" EcsCapacityIncreaseConfigurationProperty where
+  type PropertyType "Services" EcsCapacityIncreaseConfigurationProperty = [ServiceProperty]
+  set newValue EcsCapacityIncreaseConfigurationProperty {..}
+    = EcsCapacityIncreaseConfigurationProperty
+        {services = newValue, ..}
+instance Property "TargetPercent" EcsCapacityIncreaseConfigurationProperty where
+  type PropertyType "TargetPercent" EcsCapacityIncreaseConfigurationProperty = Value Prelude.Double
+  set newValue EcsCapacityIncreaseConfigurationProperty {..}
+    = EcsCapacityIncreaseConfigurationProperty
+        {targetPercent = Prelude.pure newValue, ..}
+instance Property "TimeoutMinutes" EcsCapacityIncreaseConfigurationProperty where
+  type PropertyType "TimeoutMinutes" EcsCapacityIncreaseConfigurationProperty = Value Prelude.Double
+  set newValue EcsCapacityIncreaseConfigurationProperty {..}
+    = EcsCapacityIncreaseConfigurationProperty
+        {timeoutMinutes = Prelude.pure newValue, ..}
+instance Property "Ungraceful" EcsCapacityIncreaseConfigurationProperty where
+  type PropertyType "Ungraceful" EcsCapacityIncreaseConfigurationProperty = EcsUngracefulProperty
+  set newValue EcsCapacityIncreaseConfigurationProperty {..}
+    = EcsCapacityIncreaseConfigurationProperty
+        {ungraceful = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/EcsCapacityIncreaseConfigurationProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/EcsCapacityIncreaseConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/EcsCapacityIncreaseConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.EcsCapacityIncreaseConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EcsCapacityIncreaseConfigurationProperty :: Prelude.Type
+instance ToResourceProperties EcsCapacityIncreaseConfigurationProperty
+instance Prelude.Eq EcsCapacityIncreaseConfigurationProperty
+instance Prelude.Show EcsCapacityIncreaseConfigurationProperty
+instance JSON.ToJSON EcsCapacityIncreaseConfigurationProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/EcsUngracefulProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/EcsUngracefulProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/EcsUngracefulProperty.hs
@@ -0,0 +1,35 @@
+module Stratosphere.ARCRegionSwitch.Plan.EcsUngracefulProperty (
+        EcsUngracefulProperty(..), mkEcsUngracefulProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EcsUngracefulProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ecsungraceful.html>
+    EcsUngracefulProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ecsungraceful.html#cfn-arcregionswitch-plan-ecsungraceful-minimumsuccesspercentage>
+                           minimumSuccessPercentage :: (Value Prelude.Double)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEcsUngracefulProperty ::
+  Value Prelude.Double -> EcsUngracefulProperty
+mkEcsUngracefulProperty minimumSuccessPercentage
+  = EcsUngracefulProperty
+      {haddock_workaround_ = (),
+       minimumSuccessPercentage = minimumSuccessPercentage}
+instance ToResourceProperties EcsUngracefulProperty where
+  toResourceProperties EcsUngracefulProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.EcsUngraceful",
+         supportsTags = Prelude.False,
+         properties = ["MinimumSuccessPercentage"
+                         JSON..= minimumSuccessPercentage]}
+instance JSON.ToJSON EcsUngracefulProperty where
+  toJSON EcsUngracefulProperty {..}
+    = JSON.object
+        ["MinimumSuccessPercentage" JSON..= minimumSuccessPercentage]
+instance Property "MinimumSuccessPercentage" EcsUngracefulProperty where
+  type PropertyType "MinimumSuccessPercentage" EcsUngracefulProperty = Value Prelude.Double
+  set newValue EcsUngracefulProperty {..}
+    = EcsUngracefulProperty {minimumSuccessPercentage = newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/EcsUngracefulProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/EcsUngracefulProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/EcsUngracefulProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.EcsUngracefulProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EcsUngracefulProperty :: Prelude.Type
+instance ToResourceProperties EcsUngracefulProperty
+instance Prelude.Eq EcsUngracefulProperty
+instance Prelude.Show EcsUngracefulProperty
+instance JSON.ToJSON EcsUngracefulProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/EksClusterProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/EksClusterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/EksClusterProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.ARCRegionSwitch.Plan.EksClusterProperty (
+        EksClusterProperty(..), mkEksClusterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EksClusterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ekscluster.html>
+    EksClusterProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ekscluster.html#cfn-arcregionswitch-plan-ekscluster-clusterarn>
+                        clusterArn :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ekscluster.html#cfn-arcregionswitch-plan-ekscluster-crossaccountrole>
+                        crossAccountRole :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-ekscluster.html#cfn-arcregionswitch-plan-ekscluster-externalid>
+                        externalId :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEksClusterProperty :: Value Prelude.Text -> EksClusterProperty
+mkEksClusterProperty clusterArn
+  = EksClusterProperty
+      {haddock_workaround_ = (), clusterArn = clusterArn,
+       crossAccountRole = Prelude.Nothing, externalId = Prelude.Nothing}
+instance ToResourceProperties EksClusterProperty where
+  toResourceProperties EksClusterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.EksCluster",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ClusterArn" JSON..= clusterArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                               (JSON..=) "ExternalId" Prelude.<$> externalId]))}
+instance JSON.ToJSON EksClusterProperty where
+  toJSON EksClusterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ClusterArn" JSON..= clusterArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                  (JSON..=) "ExternalId" Prelude.<$> externalId])))
+instance Property "ClusterArn" EksClusterProperty where
+  type PropertyType "ClusterArn" EksClusterProperty = Value Prelude.Text
+  set newValue EksClusterProperty {..}
+    = EksClusterProperty {clusterArn = newValue, ..}
+instance Property "CrossAccountRole" EksClusterProperty where
+  type PropertyType "CrossAccountRole" EksClusterProperty = Value Prelude.Text
+  set newValue EksClusterProperty {..}
+    = EksClusterProperty {crossAccountRole = Prelude.pure newValue, ..}
+instance Property "ExternalId" EksClusterProperty where
+  type PropertyType "ExternalId" EksClusterProperty = Value Prelude.Text
+  set newValue EksClusterProperty {..}
+    = EksClusterProperty {externalId = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/EksClusterProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/EksClusterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/EksClusterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.EksClusterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EksClusterProperty :: Prelude.Type
+instance ToResourceProperties EksClusterProperty
+instance Prelude.Eq EksClusterProperty
+instance Prelude.Show EksClusterProperty
+instance JSON.ToJSON EksClusterProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/EksResourceScalingConfigurationProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/EksResourceScalingConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/EksResourceScalingConfigurationProperty.hs
@@ -0,0 +1,106 @@
+module Stratosphere.ARCRegionSwitch.Plan.EksResourceScalingConfigurationProperty (
+        module Exports, EksResourceScalingConfigurationProperty(..),
+        mkEksResourceScalingConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.EksClusterProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.EksResourceScalingUngracefulProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.KubernetesResourceTypeProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EksResourceScalingConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-eksresourcescalingconfiguration.html>
+    EksResourceScalingConfigurationProperty {haddock_workaround_ :: (),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-eksresourcescalingconfiguration.html#cfn-arcregionswitch-plan-eksresourcescalingconfiguration-capacitymonitoringapproach>
+                                             capacityMonitoringApproach :: (Prelude.Maybe JSON.Object),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-eksresourcescalingconfiguration.html#cfn-arcregionswitch-plan-eksresourcescalingconfiguration-eksclusters>
+                                             eksClusters :: (Prelude.Maybe [EksClusterProperty]),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-eksresourcescalingconfiguration.html#cfn-arcregionswitch-plan-eksresourcescalingconfiguration-kubernetesresourcetype>
+                                             kubernetesResourceType :: KubernetesResourceTypeProperty,
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-eksresourcescalingconfiguration.html#cfn-arcregionswitch-plan-eksresourcescalingconfiguration-scalingresources>
+                                             scalingResources :: (Prelude.Maybe JSON.Object),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-eksresourcescalingconfiguration.html#cfn-arcregionswitch-plan-eksresourcescalingconfiguration-targetpercent>
+                                             targetPercent :: (Prelude.Maybe (Value Prelude.Double)),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-eksresourcescalingconfiguration.html#cfn-arcregionswitch-plan-eksresourcescalingconfiguration-timeoutminutes>
+                                             timeoutMinutes :: (Prelude.Maybe (Value Prelude.Double)),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-eksresourcescalingconfiguration.html#cfn-arcregionswitch-plan-eksresourcescalingconfiguration-ungraceful>
+                                             ungraceful :: (Prelude.Maybe EksResourceScalingUngracefulProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEksResourceScalingConfigurationProperty ::
+  KubernetesResourceTypeProperty
+  -> EksResourceScalingConfigurationProperty
+mkEksResourceScalingConfigurationProperty kubernetesResourceType
+  = EksResourceScalingConfigurationProperty
+      {haddock_workaround_ = (),
+       kubernetesResourceType = kubernetesResourceType,
+       capacityMonitoringApproach = Prelude.Nothing,
+       eksClusters = Prelude.Nothing, scalingResources = Prelude.Nothing,
+       targetPercent = Prelude.Nothing, timeoutMinutes = Prelude.Nothing,
+       ungraceful = Prelude.Nothing}
+instance ToResourceProperties EksResourceScalingConfigurationProperty where
+  toResourceProperties EksResourceScalingConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.EksResourceScalingConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["KubernetesResourceType" JSON..= kubernetesResourceType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CapacityMonitoringApproach"
+                                 Prelude.<$> capacityMonitoringApproach,
+                               (JSON..=) "EksClusters" Prelude.<$> eksClusters,
+                               (JSON..=) "ScalingResources" Prelude.<$> scalingResources,
+                               (JSON..=) "TargetPercent" Prelude.<$> targetPercent,
+                               (JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes,
+                               (JSON..=) "Ungraceful" Prelude.<$> ungraceful]))}
+instance JSON.ToJSON EksResourceScalingConfigurationProperty where
+  toJSON EksResourceScalingConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["KubernetesResourceType" JSON..= kubernetesResourceType]
+              (Prelude.catMaybes
+                 [(JSON..=) "CapacityMonitoringApproach"
+                    Prelude.<$> capacityMonitoringApproach,
+                  (JSON..=) "EksClusters" Prelude.<$> eksClusters,
+                  (JSON..=) "ScalingResources" Prelude.<$> scalingResources,
+                  (JSON..=) "TargetPercent" Prelude.<$> targetPercent,
+                  (JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes,
+                  (JSON..=) "Ungraceful" Prelude.<$> ungraceful])))
+instance Property "CapacityMonitoringApproach" EksResourceScalingConfigurationProperty where
+  type PropertyType "CapacityMonitoringApproach" EksResourceScalingConfigurationProperty = JSON.Object
+  set newValue EksResourceScalingConfigurationProperty {..}
+    = EksResourceScalingConfigurationProperty
+        {capacityMonitoringApproach = Prelude.pure newValue, ..}
+instance Property "EksClusters" EksResourceScalingConfigurationProperty where
+  type PropertyType "EksClusters" EksResourceScalingConfigurationProperty = [EksClusterProperty]
+  set newValue EksResourceScalingConfigurationProperty {..}
+    = EksResourceScalingConfigurationProperty
+        {eksClusters = Prelude.pure newValue, ..}
+instance Property "KubernetesResourceType" EksResourceScalingConfigurationProperty where
+  type PropertyType "KubernetesResourceType" EksResourceScalingConfigurationProperty = KubernetesResourceTypeProperty
+  set newValue EksResourceScalingConfigurationProperty {..}
+    = EksResourceScalingConfigurationProperty
+        {kubernetesResourceType = newValue, ..}
+instance Property "ScalingResources" EksResourceScalingConfigurationProperty where
+  type PropertyType "ScalingResources" EksResourceScalingConfigurationProperty = JSON.Object
+  set newValue EksResourceScalingConfigurationProperty {..}
+    = EksResourceScalingConfigurationProperty
+        {scalingResources = Prelude.pure newValue, ..}
+instance Property "TargetPercent" EksResourceScalingConfigurationProperty where
+  type PropertyType "TargetPercent" EksResourceScalingConfigurationProperty = Value Prelude.Double
+  set newValue EksResourceScalingConfigurationProperty {..}
+    = EksResourceScalingConfigurationProperty
+        {targetPercent = Prelude.pure newValue, ..}
+instance Property "TimeoutMinutes" EksResourceScalingConfigurationProperty where
+  type PropertyType "TimeoutMinutes" EksResourceScalingConfigurationProperty = Value Prelude.Double
+  set newValue EksResourceScalingConfigurationProperty {..}
+    = EksResourceScalingConfigurationProperty
+        {timeoutMinutes = Prelude.pure newValue, ..}
+instance Property "Ungraceful" EksResourceScalingConfigurationProperty where
+  type PropertyType "Ungraceful" EksResourceScalingConfigurationProperty = EksResourceScalingUngracefulProperty
+  set newValue EksResourceScalingConfigurationProperty {..}
+    = EksResourceScalingConfigurationProperty
+        {ungraceful = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/EksResourceScalingConfigurationProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/EksResourceScalingConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/EksResourceScalingConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.EksResourceScalingConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EksResourceScalingConfigurationProperty :: Prelude.Type
+instance ToResourceProperties EksResourceScalingConfigurationProperty
+instance Prelude.Eq EksResourceScalingConfigurationProperty
+instance Prelude.Show EksResourceScalingConfigurationProperty
+instance JSON.ToJSON EksResourceScalingConfigurationProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/EksResourceScalingUngracefulProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/EksResourceScalingUngracefulProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/EksResourceScalingUngracefulProperty.hs
@@ -0,0 +1,37 @@
+module Stratosphere.ARCRegionSwitch.Plan.EksResourceScalingUngracefulProperty (
+        EksResourceScalingUngracefulProperty(..),
+        mkEksResourceScalingUngracefulProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EksResourceScalingUngracefulProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-eksresourcescalingungraceful.html>
+    EksResourceScalingUngracefulProperty {haddock_workaround_ :: (),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-eksresourcescalingungraceful.html#cfn-arcregionswitch-plan-eksresourcescalingungraceful-minimumsuccesspercentage>
+                                          minimumSuccessPercentage :: (Value Prelude.Double)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEksResourceScalingUngracefulProperty ::
+  Value Prelude.Double -> EksResourceScalingUngracefulProperty
+mkEksResourceScalingUngracefulProperty minimumSuccessPercentage
+  = EksResourceScalingUngracefulProperty
+      {haddock_workaround_ = (),
+       minimumSuccessPercentage = minimumSuccessPercentage}
+instance ToResourceProperties EksResourceScalingUngracefulProperty where
+  toResourceProperties EksResourceScalingUngracefulProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.EksResourceScalingUngraceful",
+         supportsTags = Prelude.False,
+         properties = ["MinimumSuccessPercentage"
+                         JSON..= minimumSuccessPercentage]}
+instance JSON.ToJSON EksResourceScalingUngracefulProperty where
+  toJSON EksResourceScalingUngracefulProperty {..}
+    = JSON.object
+        ["MinimumSuccessPercentage" JSON..= minimumSuccessPercentage]
+instance Property "MinimumSuccessPercentage" EksResourceScalingUngracefulProperty where
+  type PropertyType "MinimumSuccessPercentage" EksResourceScalingUngracefulProperty = Value Prelude.Double
+  set newValue EksResourceScalingUngracefulProperty {..}
+    = EksResourceScalingUngracefulProperty
+        {minimumSuccessPercentage = newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/EksResourceScalingUngracefulProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/EksResourceScalingUngracefulProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/EksResourceScalingUngracefulProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.EksResourceScalingUngracefulProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EksResourceScalingUngracefulProperty :: Prelude.Type
+instance ToResourceProperties EksResourceScalingUngracefulProperty
+instance Prelude.Eq EksResourceScalingUngracefulProperty
+instance Prelude.Show EksResourceScalingUngracefulProperty
+instance JSON.ToJSON EksResourceScalingUngracefulProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/ExecutionApprovalConfigurationProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/ExecutionApprovalConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/ExecutionApprovalConfigurationProperty.hs
@@ -0,0 +1,51 @@
+module Stratosphere.ARCRegionSwitch.Plan.ExecutionApprovalConfigurationProperty (
+        ExecutionApprovalConfigurationProperty(..),
+        mkExecutionApprovalConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ExecutionApprovalConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-executionapprovalconfiguration.html>
+    ExecutionApprovalConfigurationProperty {haddock_workaround_ :: (),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-executionapprovalconfiguration.html#cfn-arcregionswitch-plan-executionapprovalconfiguration-approvalrole>
+                                            approvalRole :: (Value Prelude.Text),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-executionapprovalconfiguration.html#cfn-arcregionswitch-plan-executionapprovalconfiguration-timeoutminutes>
+                                            timeoutMinutes :: (Prelude.Maybe (Value Prelude.Double))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkExecutionApprovalConfigurationProperty ::
+  Value Prelude.Text -> ExecutionApprovalConfigurationProperty
+mkExecutionApprovalConfigurationProperty approvalRole
+  = ExecutionApprovalConfigurationProperty
+      {haddock_workaround_ = (), approvalRole = approvalRole,
+       timeoutMinutes = Prelude.Nothing}
+instance ToResourceProperties ExecutionApprovalConfigurationProperty where
+  toResourceProperties ExecutionApprovalConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.ExecutionApprovalConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApprovalRole" JSON..= approvalRole]
+                           (Prelude.catMaybes
+                              [(JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes]))}
+instance JSON.ToJSON ExecutionApprovalConfigurationProperty where
+  toJSON ExecutionApprovalConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApprovalRole" JSON..= approvalRole]
+              (Prelude.catMaybes
+                 [(JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes])))
+instance Property "ApprovalRole" ExecutionApprovalConfigurationProperty where
+  type PropertyType "ApprovalRole" ExecutionApprovalConfigurationProperty = Value Prelude.Text
+  set newValue ExecutionApprovalConfigurationProperty {..}
+    = ExecutionApprovalConfigurationProperty
+        {approvalRole = newValue, ..}
+instance Property "TimeoutMinutes" ExecutionApprovalConfigurationProperty where
+  type PropertyType "TimeoutMinutes" ExecutionApprovalConfigurationProperty = Value Prelude.Double
+  set newValue ExecutionApprovalConfigurationProperty {..}
+    = ExecutionApprovalConfigurationProperty
+        {timeoutMinutes = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/ExecutionApprovalConfigurationProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/ExecutionApprovalConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/ExecutionApprovalConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.ExecutionApprovalConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ExecutionApprovalConfigurationProperty :: Prelude.Type
+instance ToResourceProperties ExecutionApprovalConfigurationProperty
+instance Prelude.Eq ExecutionApprovalConfigurationProperty
+instance Prelude.Show ExecutionApprovalConfigurationProperty
+instance JSON.ToJSON ExecutionApprovalConfigurationProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/ExecutionBlockConfigurationProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/ExecutionBlockConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/ExecutionBlockConfigurationProperty.hs
@@ -0,0 +1,155 @@
+module Stratosphere.ARCRegionSwitch.Plan.ExecutionBlockConfigurationProperty (
+        module Exports, ExecutionBlockConfigurationProperty(..),
+        mkExecutionBlockConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.ArcRoutingControlConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.CustomActionLambdaConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.Ec2AsgCapacityIncreaseConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.EcsCapacityIncreaseConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.EksResourceScalingConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.ExecutionApprovalConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.GlobalAuroraConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.ParallelExecutionBlockConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.RegionSwitchPlanConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.Route53HealthCheckConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+data ExecutionBlockConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-executionblockconfiguration.html>
+    ExecutionBlockConfigurationProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-executionblockconfiguration.html#cfn-arcregionswitch-plan-executionblockconfiguration-arcroutingcontrolconfig>
+                                         arcRoutingControlConfig :: (Prelude.Maybe ArcRoutingControlConfigurationProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-executionblockconfiguration.html#cfn-arcregionswitch-plan-executionblockconfiguration-customactionlambdaconfig>
+                                         customActionLambdaConfig :: (Prelude.Maybe CustomActionLambdaConfigurationProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-executionblockconfiguration.html#cfn-arcregionswitch-plan-executionblockconfiguration-ec2asgcapacityincreaseconfig>
+                                         ec2AsgCapacityIncreaseConfig :: (Prelude.Maybe Ec2AsgCapacityIncreaseConfigurationProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-executionblockconfiguration.html#cfn-arcregionswitch-plan-executionblockconfiguration-ecscapacityincreaseconfig>
+                                         ecsCapacityIncreaseConfig :: (Prelude.Maybe EcsCapacityIncreaseConfigurationProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-executionblockconfiguration.html#cfn-arcregionswitch-plan-executionblockconfiguration-eksresourcescalingconfig>
+                                         eksResourceScalingConfig :: (Prelude.Maybe EksResourceScalingConfigurationProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-executionblockconfiguration.html#cfn-arcregionswitch-plan-executionblockconfiguration-executionapprovalconfig>
+                                         executionApprovalConfig :: (Prelude.Maybe ExecutionApprovalConfigurationProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-executionblockconfiguration.html#cfn-arcregionswitch-plan-executionblockconfiguration-globalauroraconfig>
+                                         globalAuroraConfig :: (Prelude.Maybe GlobalAuroraConfigurationProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-executionblockconfiguration.html#cfn-arcregionswitch-plan-executionblockconfiguration-parallelconfig>
+                                         parallelConfig :: (Prelude.Maybe ParallelExecutionBlockConfigurationProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-executionblockconfiguration.html#cfn-arcregionswitch-plan-executionblockconfiguration-regionswitchplanconfig>
+                                         regionSwitchPlanConfig :: (Prelude.Maybe RegionSwitchPlanConfigurationProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-executionblockconfiguration.html#cfn-arcregionswitch-plan-executionblockconfiguration-route53healthcheckconfig>
+                                         route53HealthCheckConfig :: (Prelude.Maybe Route53HealthCheckConfigurationProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkExecutionBlockConfigurationProperty ::
+  ExecutionBlockConfigurationProperty
+mkExecutionBlockConfigurationProperty
+  = ExecutionBlockConfigurationProperty
+      {haddock_workaround_ = (),
+       arcRoutingControlConfig = Prelude.Nothing,
+       customActionLambdaConfig = Prelude.Nothing,
+       ec2AsgCapacityIncreaseConfig = Prelude.Nothing,
+       ecsCapacityIncreaseConfig = Prelude.Nothing,
+       eksResourceScalingConfig = Prelude.Nothing,
+       executionApprovalConfig = Prelude.Nothing,
+       globalAuroraConfig = Prelude.Nothing,
+       parallelConfig = Prelude.Nothing,
+       regionSwitchPlanConfig = Prelude.Nothing,
+       route53HealthCheckConfig = Prelude.Nothing}
+instance ToResourceProperties ExecutionBlockConfigurationProperty where
+  toResourceProperties ExecutionBlockConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.ExecutionBlockConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ArcRoutingControlConfig"
+                              Prelude.<$> arcRoutingControlConfig,
+                            (JSON..=) "CustomActionLambdaConfig"
+                              Prelude.<$> customActionLambdaConfig,
+                            (JSON..=) "Ec2AsgCapacityIncreaseConfig"
+                              Prelude.<$> ec2AsgCapacityIncreaseConfig,
+                            (JSON..=) "EcsCapacityIncreaseConfig"
+                              Prelude.<$> ecsCapacityIncreaseConfig,
+                            (JSON..=) "EksResourceScalingConfig"
+                              Prelude.<$> eksResourceScalingConfig,
+                            (JSON..=) "ExecutionApprovalConfig"
+                              Prelude.<$> executionApprovalConfig,
+                            (JSON..=) "GlobalAuroraConfig" Prelude.<$> globalAuroraConfig,
+                            (JSON..=) "ParallelConfig" Prelude.<$> parallelConfig,
+                            (JSON..=) "RegionSwitchPlanConfig"
+                              Prelude.<$> regionSwitchPlanConfig,
+                            (JSON..=) "Route53HealthCheckConfig"
+                              Prelude.<$> route53HealthCheckConfig])}
+instance JSON.ToJSON ExecutionBlockConfigurationProperty where
+  toJSON ExecutionBlockConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ArcRoutingControlConfig"
+                 Prelude.<$> arcRoutingControlConfig,
+               (JSON..=) "CustomActionLambdaConfig"
+                 Prelude.<$> customActionLambdaConfig,
+               (JSON..=) "Ec2AsgCapacityIncreaseConfig"
+                 Prelude.<$> ec2AsgCapacityIncreaseConfig,
+               (JSON..=) "EcsCapacityIncreaseConfig"
+                 Prelude.<$> ecsCapacityIncreaseConfig,
+               (JSON..=) "EksResourceScalingConfig"
+                 Prelude.<$> eksResourceScalingConfig,
+               (JSON..=) "ExecutionApprovalConfig"
+                 Prelude.<$> executionApprovalConfig,
+               (JSON..=) "GlobalAuroraConfig" Prelude.<$> globalAuroraConfig,
+               (JSON..=) "ParallelConfig" Prelude.<$> parallelConfig,
+               (JSON..=) "RegionSwitchPlanConfig"
+                 Prelude.<$> regionSwitchPlanConfig,
+               (JSON..=) "Route53HealthCheckConfig"
+                 Prelude.<$> route53HealthCheckConfig]))
+instance Property "ArcRoutingControlConfig" ExecutionBlockConfigurationProperty where
+  type PropertyType "ArcRoutingControlConfig" ExecutionBlockConfigurationProperty = ArcRoutingControlConfigurationProperty
+  set newValue ExecutionBlockConfigurationProperty {..}
+    = ExecutionBlockConfigurationProperty
+        {arcRoutingControlConfig = Prelude.pure newValue, ..}
+instance Property "CustomActionLambdaConfig" ExecutionBlockConfigurationProperty where
+  type PropertyType "CustomActionLambdaConfig" ExecutionBlockConfigurationProperty = CustomActionLambdaConfigurationProperty
+  set newValue ExecutionBlockConfigurationProperty {..}
+    = ExecutionBlockConfigurationProperty
+        {customActionLambdaConfig = Prelude.pure newValue, ..}
+instance Property "Ec2AsgCapacityIncreaseConfig" ExecutionBlockConfigurationProperty where
+  type PropertyType "Ec2AsgCapacityIncreaseConfig" ExecutionBlockConfigurationProperty = Ec2AsgCapacityIncreaseConfigurationProperty
+  set newValue ExecutionBlockConfigurationProperty {..}
+    = ExecutionBlockConfigurationProperty
+        {ec2AsgCapacityIncreaseConfig = Prelude.pure newValue, ..}
+instance Property "EcsCapacityIncreaseConfig" ExecutionBlockConfigurationProperty where
+  type PropertyType "EcsCapacityIncreaseConfig" ExecutionBlockConfigurationProperty = EcsCapacityIncreaseConfigurationProperty
+  set newValue ExecutionBlockConfigurationProperty {..}
+    = ExecutionBlockConfigurationProperty
+        {ecsCapacityIncreaseConfig = Prelude.pure newValue, ..}
+instance Property "EksResourceScalingConfig" ExecutionBlockConfigurationProperty where
+  type PropertyType "EksResourceScalingConfig" ExecutionBlockConfigurationProperty = EksResourceScalingConfigurationProperty
+  set newValue ExecutionBlockConfigurationProperty {..}
+    = ExecutionBlockConfigurationProperty
+        {eksResourceScalingConfig = Prelude.pure newValue, ..}
+instance Property "ExecutionApprovalConfig" ExecutionBlockConfigurationProperty where
+  type PropertyType "ExecutionApprovalConfig" ExecutionBlockConfigurationProperty = ExecutionApprovalConfigurationProperty
+  set newValue ExecutionBlockConfigurationProperty {..}
+    = ExecutionBlockConfigurationProperty
+        {executionApprovalConfig = Prelude.pure newValue, ..}
+instance Property "GlobalAuroraConfig" ExecutionBlockConfigurationProperty where
+  type PropertyType "GlobalAuroraConfig" ExecutionBlockConfigurationProperty = GlobalAuroraConfigurationProperty
+  set newValue ExecutionBlockConfigurationProperty {..}
+    = ExecutionBlockConfigurationProperty
+        {globalAuroraConfig = Prelude.pure newValue, ..}
+instance Property "ParallelConfig" ExecutionBlockConfigurationProperty where
+  type PropertyType "ParallelConfig" ExecutionBlockConfigurationProperty = ParallelExecutionBlockConfigurationProperty
+  set newValue ExecutionBlockConfigurationProperty {..}
+    = ExecutionBlockConfigurationProperty
+        {parallelConfig = Prelude.pure newValue, ..}
+instance Property "RegionSwitchPlanConfig" ExecutionBlockConfigurationProperty where
+  type PropertyType "RegionSwitchPlanConfig" ExecutionBlockConfigurationProperty = RegionSwitchPlanConfigurationProperty
+  set newValue ExecutionBlockConfigurationProperty {..}
+    = ExecutionBlockConfigurationProperty
+        {regionSwitchPlanConfig = Prelude.pure newValue, ..}
+instance Property "Route53HealthCheckConfig" ExecutionBlockConfigurationProperty where
+  type PropertyType "Route53HealthCheckConfig" ExecutionBlockConfigurationProperty = Route53HealthCheckConfigurationProperty
+  set newValue ExecutionBlockConfigurationProperty {..}
+    = ExecutionBlockConfigurationProperty
+        {route53HealthCheckConfig = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/ExecutionBlockConfigurationProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/ExecutionBlockConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/ExecutionBlockConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.ExecutionBlockConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ExecutionBlockConfigurationProperty :: Prelude.Type
+instance ToResourceProperties ExecutionBlockConfigurationProperty
+instance Prelude.Eq ExecutionBlockConfigurationProperty
+instance Prelude.Show ExecutionBlockConfigurationProperty
+instance JSON.ToJSON ExecutionBlockConfigurationProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/GlobalAuroraConfigurationProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/GlobalAuroraConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/GlobalAuroraConfigurationProperty.hs
@@ -0,0 +1,104 @@
+module Stratosphere.ARCRegionSwitch.Plan.GlobalAuroraConfigurationProperty (
+        module Exports, GlobalAuroraConfigurationProperty(..),
+        mkGlobalAuroraConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.GlobalAuroraUngracefulProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GlobalAuroraConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-globalauroraconfiguration.html>
+    GlobalAuroraConfigurationProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-globalauroraconfiguration.html#cfn-arcregionswitch-plan-globalauroraconfiguration-behavior>
+                                       behavior :: JSON.Object,
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-globalauroraconfiguration.html#cfn-arcregionswitch-plan-globalauroraconfiguration-crossaccountrole>
+                                       crossAccountRole :: (Prelude.Maybe (Value Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-globalauroraconfiguration.html#cfn-arcregionswitch-plan-globalauroraconfiguration-databaseclusterarns>
+                                       databaseClusterArns :: (ValueList Prelude.Text),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-globalauroraconfiguration.html#cfn-arcregionswitch-plan-globalauroraconfiguration-externalid>
+                                       externalId :: (Prelude.Maybe (Value Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-globalauroraconfiguration.html#cfn-arcregionswitch-plan-globalauroraconfiguration-globalclusteridentifier>
+                                       globalClusterIdentifier :: (Value Prelude.Text),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-globalauroraconfiguration.html#cfn-arcregionswitch-plan-globalauroraconfiguration-timeoutminutes>
+                                       timeoutMinutes :: (Prelude.Maybe (Value Prelude.Double)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-globalauroraconfiguration.html#cfn-arcregionswitch-plan-globalauroraconfiguration-ungraceful>
+                                       ungraceful :: (Prelude.Maybe GlobalAuroraUngracefulProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGlobalAuroraConfigurationProperty ::
+  JSON.Object
+  -> ValueList Prelude.Text
+     -> Value Prelude.Text -> GlobalAuroraConfigurationProperty
+mkGlobalAuroraConfigurationProperty
+  behavior
+  databaseClusterArns
+  globalClusterIdentifier
+  = GlobalAuroraConfigurationProperty
+      {haddock_workaround_ = (), behavior = behavior,
+       databaseClusterArns = databaseClusterArns,
+       globalClusterIdentifier = globalClusterIdentifier,
+       crossAccountRole = Prelude.Nothing, externalId = Prelude.Nothing,
+       timeoutMinutes = Prelude.Nothing, ungraceful = Prelude.Nothing}
+instance ToResourceProperties GlobalAuroraConfigurationProperty where
+  toResourceProperties GlobalAuroraConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.GlobalAuroraConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Behavior" JSON..= behavior,
+                            "DatabaseClusterArns" JSON..= databaseClusterArns,
+                            "GlobalClusterIdentifier" JSON..= globalClusterIdentifier]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                               (JSON..=) "ExternalId" Prelude.<$> externalId,
+                               (JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes,
+                               (JSON..=) "Ungraceful" Prelude.<$> ungraceful]))}
+instance JSON.ToJSON GlobalAuroraConfigurationProperty where
+  toJSON GlobalAuroraConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Behavior" JSON..= behavior,
+               "DatabaseClusterArns" JSON..= databaseClusterArns,
+               "GlobalClusterIdentifier" JSON..= globalClusterIdentifier]
+              (Prelude.catMaybes
+                 [(JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                  (JSON..=) "ExternalId" Prelude.<$> externalId,
+                  (JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes,
+                  (JSON..=) "Ungraceful" Prelude.<$> ungraceful])))
+instance Property "Behavior" GlobalAuroraConfigurationProperty where
+  type PropertyType "Behavior" GlobalAuroraConfigurationProperty = JSON.Object
+  set newValue GlobalAuroraConfigurationProperty {..}
+    = GlobalAuroraConfigurationProperty {behavior = newValue, ..}
+instance Property "CrossAccountRole" GlobalAuroraConfigurationProperty where
+  type PropertyType "CrossAccountRole" GlobalAuroraConfigurationProperty = Value Prelude.Text
+  set newValue GlobalAuroraConfigurationProperty {..}
+    = GlobalAuroraConfigurationProperty
+        {crossAccountRole = Prelude.pure newValue, ..}
+instance Property "DatabaseClusterArns" GlobalAuroraConfigurationProperty where
+  type PropertyType "DatabaseClusterArns" GlobalAuroraConfigurationProperty = ValueList Prelude.Text
+  set newValue GlobalAuroraConfigurationProperty {..}
+    = GlobalAuroraConfigurationProperty
+        {databaseClusterArns = newValue, ..}
+instance Property "ExternalId" GlobalAuroraConfigurationProperty where
+  type PropertyType "ExternalId" GlobalAuroraConfigurationProperty = Value Prelude.Text
+  set newValue GlobalAuroraConfigurationProperty {..}
+    = GlobalAuroraConfigurationProperty
+        {externalId = Prelude.pure newValue, ..}
+instance Property "GlobalClusterIdentifier" GlobalAuroraConfigurationProperty where
+  type PropertyType "GlobalClusterIdentifier" GlobalAuroraConfigurationProperty = Value Prelude.Text
+  set newValue GlobalAuroraConfigurationProperty {..}
+    = GlobalAuroraConfigurationProperty
+        {globalClusterIdentifier = newValue, ..}
+instance Property "TimeoutMinutes" GlobalAuroraConfigurationProperty where
+  type PropertyType "TimeoutMinutes" GlobalAuroraConfigurationProperty = Value Prelude.Double
+  set newValue GlobalAuroraConfigurationProperty {..}
+    = GlobalAuroraConfigurationProperty
+        {timeoutMinutes = Prelude.pure newValue, ..}
+instance Property "Ungraceful" GlobalAuroraConfigurationProperty where
+  type PropertyType "Ungraceful" GlobalAuroraConfigurationProperty = GlobalAuroraUngracefulProperty
+  set newValue GlobalAuroraConfigurationProperty {..}
+    = GlobalAuroraConfigurationProperty
+        {ungraceful = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/GlobalAuroraConfigurationProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/GlobalAuroraConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/GlobalAuroraConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.GlobalAuroraConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GlobalAuroraConfigurationProperty :: Prelude.Type
+instance ToResourceProperties GlobalAuroraConfigurationProperty
+instance Prelude.Eq GlobalAuroraConfigurationProperty
+instance Prelude.Show GlobalAuroraConfigurationProperty
+instance JSON.ToJSON GlobalAuroraConfigurationProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/GlobalAuroraUngracefulProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/GlobalAuroraUngracefulProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/GlobalAuroraUngracefulProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.ARCRegionSwitch.Plan.GlobalAuroraUngracefulProperty (
+        GlobalAuroraUngracefulProperty(..),
+        mkGlobalAuroraUngracefulProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GlobalAuroraUngracefulProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-globalauroraungraceful.html>
+    GlobalAuroraUngracefulProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-globalauroraungraceful.html#cfn-arcregionswitch-plan-globalauroraungraceful-ungraceful>
+                                    ungraceful :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGlobalAuroraUngracefulProperty :: GlobalAuroraUngracefulProperty
+mkGlobalAuroraUngracefulProperty
+  = GlobalAuroraUngracefulProperty
+      {haddock_workaround_ = (), ungraceful = Prelude.Nothing}
+instance ToResourceProperties GlobalAuroraUngracefulProperty where
+  toResourceProperties GlobalAuroraUngracefulProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.GlobalAuroraUngraceful",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Ungraceful" Prelude.<$> ungraceful])}
+instance JSON.ToJSON GlobalAuroraUngracefulProperty where
+  toJSON GlobalAuroraUngracefulProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Ungraceful" Prelude.<$> ungraceful]))
+instance Property "Ungraceful" GlobalAuroraUngracefulProperty where
+  type PropertyType "Ungraceful" GlobalAuroraUngracefulProperty = Value Prelude.Text
+  set newValue GlobalAuroraUngracefulProperty {..}
+    = GlobalAuroraUngracefulProperty
+        {ungraceful = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/GlobalAuroraUngracefulProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/GlobalAuroraUngracefulProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/GlobalAuroraUngracefulProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.GlobalAuroraUngracefulProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GlobalAuroraUngracefulProperty :: Prelude.Type
+instance ToResourceProperties GlobalAuroraUngracefulProperty
+instance Prelude.Eq GlobalAuroraUngracefulProperty
+instance Prelude.Show GlobalAuroraUngracefulProperty
+instance JSON.ToJSON GlobalAuroraUngracefulProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/KubernetesResourceTypeProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/KubernetesResourceTypeProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/KubernetesResourceTypeProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.ARCRegionSwitch.Plan.KubernetesResourceTypeProperty (
+        KubernetesResourceTypeProperty(..),
+        mkKubernetesResourceTypeProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data KubernetesResourceTypeProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-kubernetesresourcetype.html>
+    KubernetesResourceTypeProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-kubernetesresourcetype.html#cfn-arcregionswitch-plan-kubernetesresourcetype-apiversion>
+                                    apiVersion :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-kubernetesresourcetype.html#cfn-arcregionswitch-plan-kubernetesresourcetype-kind>
+                                    kind :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkKubernetesResourceTypeProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> KubernetesResourceTypeProperty
+mkKubernetesResourceTypeProperty apiVersion kind
+  = KubernetesResourceTypeProperty
+      {haddock_workaround_ = (), apiVersion = apiVersion, kind = kind}
+instance ToResourceProperties KubernetesResourceTypeProperty where
+  toResourceProperties KubernetesResourceTypeProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.KubernetesResourceType",
+         supportsTags = Prelude.False,
+         properties = ["ApiVersion" JSON..= apiVersion,
+                       "Kind" JSON..= kind]}
+instance JSON.ToJSON KubernetesResourceTypeProperty where
+  toJSON KubernetesResourceTypeProperty {..}
+    = JSON.object
+        ["ApiVersion" JSON..= apiVersion, "Kind" JSON..= kind]
+instance Property "ApiVersion" KubernetesResourceTypeProperty where
+  type PropertyType "ApiVersion" KubernetesResourceTypeProperty = Value Prelude.Text
+  set newValue KubernetesResourceTypeProperty {..}
+    = KubernetesResourceTypeProperty {apiVersion = newValue, ..}
+instance Property "Kind" KubernetesResourceTypeProperty where
+  type PropertyType "Kind" KubernetesResourceTypeProperty = Value Prelude.Text
+  set newValue KubernetesResourceTypeProperty {..}
+    = KubernetesResourceTypeProperty {kind = newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/KubernetesResourceTypeProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/KubernetesResourceTypeProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/KubernetesResourceTypeProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.KubernetesResourceTypeProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data KubernetesResourceTypeProperty :: Prelude.Type
+instance ToResourceProperties KubernetesResourceTypeProperty
+instance Prelude.Eq KubernetesResourceTypeProperty
+instance Prelude.Show KubernetesResourceTypeProperty
+instance JSON.ToJSON KubernetesResourceTypeProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/LambdaUngracefulProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/LambdaUngracefulProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/LambdaUngracefulProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.ARCRegionSwitch.Plan.LambdaUngracefulProperty (
+        LambdaUngracefulProperty(..), mkLambdaUngracefulProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+data LambdaUngracefulProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-lambdaungraceful.html>
+    LambdaUngracefulProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-lambdaungraceful.html#cfn-arcregionswitch-plan-lambdaungraceful-behavior>
+                              behavior :: (Prelude.Maybe JSON.Object)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLambdaUngracefulProperty :: LambdaUngracefulProperty
+mkLambdaUngracefulProperty
+  = LambdaUngracefulProperty
+      {haddock_workaround_ = (), behavior = Prelude.Nothing}
+instance ToResourceProperties LambdaUngracefulProperty where
+  toResourceProperties LambdaUngracefulProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.LambdaUngraceful",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Behavior" Prelude.<$> behavior])}
+instance JSON.ToJSON LambdaUngracefulProperty where
+  toJSON LambdaUngracefulProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Behavior" Prelude.<$> behavior]))
+instance Property "Behavior" LambdaUngracefulProperty where
+  type PropertyType "Behavior" LambdaUngracefulProperty = JSON.Object
+  set newValue LambdaUngracefulProperty {..}
+    = LambdaUngracefulProperty {behavior = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/LambdaUngracefulProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/LambdaUngracefulProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/LambdaUngracefulProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.LambdaUngracefulProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LambdaUngracefulProperty :: Prelude.Type
+instance ToResourceProperties LambdaUngracefulProperty
+instance Prelude.Eq LambdaUngracefulProperty
+instance Prelude.Show LambdaUngracefulProperty
+instance JSON.ToJSON LambdaUngracefulProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/LambdasProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/LambdasProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/LambdasProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.ARCRegionSwitch.Plan.LambdasProperty (
+        LambdasProperty(..), mkLambdasProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LambdasProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-lambdas.html>
+    LambdasProperty {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-lambdas.html#cfn-arcregionswitch-plan-lambdas-arn>
+                     arn :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-lambdas.html#cfn-arcregionswitch-plan-lambdas-crossaccountrole>
+                     crossAccountRole :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-lambdas.html#cfn-arcregionswitch-plan-lambdas-externalid>
+                     externalId :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLambdasProperty :: LambdasProperty
+mkLambdasProperty
+  = LambdasProperty
+      {haddock_workaround_ = (), arn = Prelude.Nothing,
+       crossAccountRole = Prelude.Nothing, externalId = Prelude.Nothing}
+instance ToResourceProperties LambdasProperty where
+  toResourceProperties LambdasProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.Lambdas",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Arn" Prelude.<$> arn,
+                            (JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                            (JSON..=) "ExternalId" Prelude.<$> externalId])}
+instance JSON.ToJSON LambdasProperty where
+  toJSON LambdasProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Arn" Prelude.<$> arn,
+               (JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+               (JSON..=) "ExternalId" Prelude.<$> externalId]))
+instance Property "Arn" LambdasProperty where
+  type PropertyType "Arn" LambdasProperty = Value Prelude.Text
+  set newValue LambdasProperty {..}
+    = LambdasProperty {arn = Prelude.pure newValue, ..}
+instance Property "CrossAccountRole" LambdasProperty where
+  type PropertyType "CrossAccountRole" LambdasProperty = Value Prelude.Text
+  set newValue LambdasProperty {..}
+    = LambdasProperty {crossAccountRole = Prelude.pure newValue, ..}
+instance Property "ExternalId" LambdasProperty where
+  type PropertyType "ExternalId" LambdasProperty = Value Prelude.Text
+  set newValue LambdasProperty {..}
+    = LambdasProperty {externalId = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/LambdasProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/LambdasProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/LambdasProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.LambdasProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LambdasProperty :: Prelude.Type
+instance ToResourceProperties LambdasProperty
+instance Prelude.Eq LambdasProperty
+instance Prelude.Show LambdasProperty
+instance JSON.ToJSON LambdasProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/ParallelExecutionBlockConfigurationProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/ParallelExecutionBlockConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/ParallelExecutionBlockConfigurationProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.ARCRegionSwitch.Plan.ParallelExecutionBlockConfigurationProperty (
+        module Exports, ParallelExecutionBlockConfigurationProperty(..),
+        mkParallelExecutionBlockConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.StepProperty as Exports
+import Stratosphere.ResourceProperties
+data ParallelExecutionBlockConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-parallelexecutionblockconfiguration.html>
+    ParallelExecutionBlockConfigurationProperty {haddock_workaround_ :: (),
+                                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-parallelexecutionblockconfiguration.html#cfn-arcregionswitch-plan-parallelexecutionblockconfiguration-steps>
+                                                 steps :: [StepProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkParallelExecutionBlockConfigurationProperty ::
+  [StepProperty] -> ParallelExecutionBlockConfigurationProperty
+mkParallelExecutionBlockConfigurationProperty steps
+  = ParallelExecutionBlockConfigurationProperty
+      {haddock_workaround_ = (), steps = steps}
+instance ToResourceProperties ParallelExecutionBlockConfigurationProperty where
+  toResourceProperties
+    ParallelExecutionBlockConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.ParallelExecutionBlockConfiguration",
+         supportsTags = Prelude.False, properties = ["Steps" JSON..= steps]}
+instance JSON.ToJSON ParallelExecutionBlockConfigurationProperty where
+  toJSON ParallelExecutionBlockConfigurationProperty {..}
+    = JSON.object ["Steps" JSON..= steps]
+instance Property "Steps" ParallelExecutionBlockConfigurationProperty where
+  type PropertyType "Steps" ParallelExecutionBlockConfigurationProperty = [StepProperty]
+  set newValue ParallelExecutionBlockConfigurationProperty {..}
+    = ParallelExecutionBlockConfigurationProperty
+        {steps = newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/ParallelExecutionBlockConfigurationProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/ParallelExecutionBlockConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/ParallelExecutionBlockConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.ParallelExecutionBlockConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ParallelExecutionBlockConfigurationProperty :: Prelude.Type
+instance ToResourceProperties ParallelExecutionBlockConfigurationProperty
+instance Prelude.Eq ParallelExecutionBlockConfigurationProperty
+instance Prelude.Show ParallelExecutionBlockConfigurationProperty
+instance JSON.ToJSON ParallelExecutionBlockConfigurationProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/RegionSwitchPlanConfigurationProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/RegionSwitchPlanConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/RegionSwitchPlanConfigurationProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.ARCRegionSwitch.Plan.RegionSwitchPlanConfigurationProperty (
+        RegionSwitchPlanConfigurationProperty(..),
+        mkRegionSwitchPlanConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RegionSwitchPlanConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-regionswitchplanconfiguration.html>
+    RegionSwitchPlanConfigurationProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-regionswitchplanconfiguration.html#cfn-arcregionswitch-plan-regionswitchplanconfiguration-arn>
+                                           arn :: (Value Prelude.Text),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-regionswitchplanconfiguration.html#cfn-arcregionswitch-plan-regionswitchplanconfiguration-crossaccountrole>
+                                           crossAccountRole :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-regionswitchplanconfiguration.html#cfn-arcregionswitch-plan-regionswitchplanconfiguration-externalid>
+                                           externalId :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRegionSwitchPlanConfigurationProperty ::
+  Value Prelude.Text -> RegionSwitchPlanConfigurationProperty
+mkRegionSwitchPlanConfigurationProperty arn
+  = RegionSwitchPlanConfigurationProperty
+      {haddock_workaround_ = (), arn = arn,
+       crossAccountRole = Prelude.Nothing, externalId = Prelude.Nothing}
+instance ToResourceProperties RegionSwitchPlanConfigurationProperty where
+  toResourceProperties RegionSwitchPlanConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.RegionSwitchPlanConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Arn" JSON..= arn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                               (JSON..=) "ExternalId" Prelude.<$> externalId]))}
+instance JSON.ToJSON RegionSwitchPlanConfigurationProperty where
+  toJSON RegionSwitchPlanConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Arn" JSON..= arn]
+              (Prelude.catMaybes
+                 [(JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                  (JSON..=) "ExternalId" Prelude.<$> externalId])))
+instance Property "Arn" RegionSwitchPlanConfigurationProperty where
+  type PropertyType "Arn" RegionSwitchPlanConfigurationProperty = Value Prelude.Text
+  set newValue RegionSwitchPlanConfigurationProperty {..}
+    = RegionSwitchPlanConfigurationProperty {arn = newValue, ..}
+instance Property "CrossAccountRole" RegionSwitchPlanConfigurationProperty where
+  type PropertyType "CrossAccountRole" RegionSwitchPlanConfigurationProperty = Value Prelude.Text
+  set newValue RegionSwitchPlanConfigurationProperty {..}
+    = RegionSwitchPlanConfigurationProperty
+        {crossAccountRole = Prelude.pure newValue, ..}
+instance Property "ExternalId" RegionSwitchPlanConfigurationProperty where
+  type PropertyType "ExternalId" RegionSwitchPlanConfigurationProperty = Value Prelude.Text
+  set newValue RegionSwitchPlanConfigurationProperty {..}
+    = RegionSwitchPlanConfigurationProperty
+        {externalId = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/RegionSwitchPlanConfigurationProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/RegionSwitchPlanConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/RegionSwitchPlanConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.RegionSwitchPlanConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RegionSwitchPlanConfigurationProperty :: Prelude.Type
+instance ToResourceProperties RegionSwitchPlanConfigurationProperty
+instance Prelude.Eq RegionSwitchPlanConfigurationProperty
+instance Prelude.Show RegionSwitchPlanConfigurationProperty
+instance JSON.ToJSON RegionSwitchPlanConfigurationProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/Route53HealthCheckConfigurationProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/Route53HealthCheckConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/Route53HealthCheckConfigurationProperty.hs
@@ -0,0 +1,91 @@
+module Stratosphere.ARCRegionSwitch.Plan.Route53HealthCheckConfigurationProperty (
+        module Exports, Route53HealthCheckConfigurationProperty(..),
+        mkRoute53HealthCheckConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.Route53ResourceRecordSetProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Route53HealthCheckConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-route53healthcheckconfiguration.html>
+    Route53HealthCheckConfigurationProperty {haddock_workaround_ :: (),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-route53healthcheckconfiguration.html#cfn-arcregionswitch-plan-route53healthcheckconfiguration-crossaccountrole>
+                                             crossAccountRole :: (Prelude.Maybe (Value Prelude.Text)),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-route53healthcheckconfiguration.html#cfn-arcregionswitch-plan-route53healthcheckconfiguration-externalid>
+                                             externalId :: (Prelude.Maybe (Value Prelude.Text)),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-route53healthcheckconfiguration.html#cfn-arcregionswitch-plan-route53healthcheckconfiguration-hostedzoneid>
+                                             hostedZoneId :: (Value Prelude.Text),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-route53healthcheckconfiguration.html#cfn-arcregionswitch-plan-route53healthcheckconfiguration-recordname>
+                                             recordName :: (Value Prelude.Text),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-route53healthcheckconfiguration.html#cfn-arcregionswitch-plan-route53healthcheckconfiguration-recordsets>
+                                             recordSets :: (Prelude.Maybe [Route53ResourceRecordSetProperty]),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-route53healthcheckconfiguration.html#cfn-arcregionswitch-plan-route53healthcheckconfiguration-timeoutminutes>
+                                             timeoutMinutes :: (Prelude.Maybe (Value Prelude.Double))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRoute53HealthCheckConfigurationProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Route53HealthCheckConfigurationProperty
+mkRoute53HealthCheckConfigurationProperty hostedZoneId recordName
+  = Route53HealthCheckConfigurationProperty
+      {haddock_workaround_ = (), hostedZoneId = hostedZoneId,
+       recordName = recordName, crossAccountRole = Prelude.Nothing,
+       externalId = Prelude.Nothing, recordSets = Prelude.Nothing,
+       timeoutMinutes = Prelude.Nothing}
+instance ToResourceProperties Route53HealthCheckConfigurationProperty where
+  toResourceProperties Route53HealthCheckConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.Route53HealthCheckConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["HostedZoneId" JSON..= hostedZoneId,
+                            "RecordName" JSON..= recordName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                               (JSON..=) "ExternalId" Prelude.<$> externalId,
+                               (JSON..=) "RecordSets" Prelude.<$> recordSets,
+                               (JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes]))}
+instance JSON.ToJSON Route53HealthCheckConfigurationProperty where
+  toJSON Route53HealthCheckConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["HostedZoneId" JSON..= hostedZoneId,
+               "RecordName" JSON..= recordName]
+              (Prelude.catMaybes
+                 [(JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                  (JSON..=) "ExternalId" Prelude.<$> externalId,
+                  (JSON..=) "RecordSets" Prelude.<$> recordSets,
+                  (JSON..=) "TimeoutMinutes" Prelude.<$> timeoutMinutes])))
+instance Property "CrossAccountRole" Route53HealthCheckConfigurationProperty where
+  type PropertyType "CrossAccountRole" Route53HealthCheckConfigurationProperty = Value Prelude.Text
+  set newValue Route53HealthCheckConfigurationProperty {..}
+    = Route53HealthCheckConfigurationProperty
+        {crossAccountRole = Prelude.pure newValue, ..}
+instance Property "ExternalId" Route53HealthCheckConfigurationProperty where
+  type PropertyType "ExternalId" Route53HealthCheckConfigurationProperty = Value Prelude.Text
+  set newValue Route53HealthCheckConfigurationProperty {..}
+    = Route53HealthCheckConfigurationProperty
+        {externalId = Prelude.pure newValue, ..}
+instance Property "HostedZoneId" Route53HealthCheckConfigurationProperty where
+  type PropertyType "HostedZoneId" Route53HealthCheckConfigurationProperty = Value Prelude.Text
+  set newValue Route53HealthCheckConfigurationProperty {..}
+    = Route53HealthCheckConfigurationProperty
+        {hostedZoneId = newValue, ..}
+instance Property "RecordName" Route53HealthCheckConfigurationProperty where
+  type PropertyType "RecordName" Route53HealthCheckConfigurationProperty = Value Prelude.Text
+  set newValue Route53HealthCheckConfigurationProperty {..}
+    = Route53HealthCheckConfigurationProperty
+        {recordName = newValue, ..}
+instance Property "RecordSets" Route53HealthCheckConfigurationProperty where
+  type PropertyType "RecordSets" Route53HealthCheckConfigurationProperty = [Route53ResourceRecordSetProperty]
+  set newValue Route53HealthCheckConfigurationProperty {..}
+    = Route53HealthCheckConfigurationProperty
+        {recordSets = Prelude.pure newValue, ..}
+instance Property "TimeoutMinutes" Route53HealthCheckConfigurationProperty where
+  type PropertyType "TimeoutMinutes" Route53HealthCheckConfigurationProperty = Value Prelude.Double
+  set newValue Route53HealthCheckConfigurationProperty {..}
+    = Route53HealthCheckConfigurationProperty
+        {timeoutMinutes = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/Route53HealthCheckConfigurationProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/Route53HealthCheckConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/Route53HealthCheckConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.Route53HealthCheckConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data Route53HealthCheckConfigurationProperty :: Prelude.Type
+instance ToResourceProperties Route53HealthCheckConfigurationProperty
+instance Prelude.Eq Route53HealthCheckConfigurationProperty
+instance Prelude.Show Route53HealthCheckConfigurationProperty
+instance JSON.ToJSON Route53HealthCheckConfigurationProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/Route53ResourceRecordSetProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/Route53ResourceRecordSetProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/Route53ResourceRecordSetProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.ARCRegionSwitch.Plan.Route53ResourceRecordSetProperty (
+        Route53ResourceRecordSetProperty(..),
+        mkRoute53ResourceRecordSetProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Route53ResourceRecordSetProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-route53resourcerecordset.html>
+    Route53ResourceRecordSetProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-route53resourcerecordset.html#cfn-arcregionswitch-plan-route53resourcerecordset-recordsetidentifier>
+                                      recordSetIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-route53resourcerecordset.html#cfn-arcregionswitch-plan-route53resourcerecordset-region>
+                                      region :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRoute53ResourceRecordSetProperty ::
+  Route53ResourceRecordSetProperty
+mkRoute53ResourceRecordSetProperty
+  = Route53ResourceRecordSetProperty
+      {haddock_workaround_ = (), recordSetIdentifier = Prelude.Nothing,
+       region = Prelude.Nothing}
+instance ToResourceProperties Route53ResourceRecordSetProperty where
+  toResourceProperties Route53ResourceRecordSetProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.Route53ResourceRecordSet",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "RecordSetIdentifier" Prelude.<$> recordSetIdentifier,
+                            (JSON..=) "Region" Prelude.<$> region])}
+instance JSON.ToJSON Route53ResourceRecordSetProperty where
+  toJSON Route53ResourceRecordSetProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "RecordSetIdentifier" Prelude.<$> recordSetIdentifier,
+               (JSON..=) "Region" Prelude.<$> region]))
+instance Property "RecordSetIdentifier" Route53ResourceRecordSetProperty where
+  type PropertyType "RecordSetIdentifier" Route53ResourceRecordSetProperty = Value Prelude.Text
+  set newValue Route53ResourceRecordSetProperty {..}
+    = Route53ResourceRecordSetProperty
+        {recordSetIdentifier = Prelude.pure newValue, ..}
+instance Property "Region" Route53ResourceRecordSetProperty where
+  type PropertyType "Region" Route53ResourceRecordSetProperty = Value Prelude.Text
+  set newValue Route53ResourceRecordSetProperty {..}
+    = Route53ResourceRecordSetProperty
+        {region = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/Route53ResourceRecordSetProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/Route53ResourceRecordSetProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/Route53ResourceRecordSetProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.Route53ResourceRecordSetProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data Route53ResourceRecordSetProperty :: Prelude.Type
+instance ToResourceProperties Route53ResourceRecordSetProperty
+instance Prelude.Eq Route53ResourceRecordSetProperty
+instance Prelude.Show Route53ResourceRecordSetProperty
+instance JSON.ToJSON Route53ResourceRecordSetProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/ServiceProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/ServiceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/ServiceProperty.hs
@@ -0,0 +1,62 @@
+module Stratosphere.ARCRegionSwitch.Plan.ServiceProperty (
+        ServiceProperty(..), mkServiceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ServiceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-service.html>
+    ServiceProperty {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-service.html#cfn-arcregionswitch-plan-service-clusterarn>
+                     clusterArn :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-service.html#cfn-arcregionswitch-plan-service-crossaccountrole>
+                     crossAccountRole :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-service.html#cfn-arcregionswitch-plan-service-externalid>
+                     externalId :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-service.html#cfn-arcregionswitch-plan-service-servicearn>
+                     serviceArn :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkServiceProperty :: ServiceProperty
+mkServiceProperty
+  = ServiceProperty
+      {haddock_workaround_ = (), clusterArn = Prelude.Nothing,
+       crossAccountRole = Prelude.Nothing, externalId = Prelude.Nothing,
+       serviceArn = Prelude.Nothing}
+instance ToResourceProperties ServiceProperty where
+  toResourceProperties ServiceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.Service",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ClusterArn" Prelude.<$> clusterArn,
+                            (JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+                            (JSON..=) "ExternalId" Prelude.<$> externalId,
+                            (JSON..=) "ServiceArn" Prelude.<$> serviceArn])}
+instance JSON.ToJSON ServiceProperty where
+  toJSON ServiceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ClusterArn" Prelude.<$> clusterArn,
+               (JSON..=) "CrossAccountRole" Prelude.<$> crossAccountRole,
+               (JSON..=) "ExternalId" Prelude.<$> externalId,
+               (JSON..=) "ServiceArn" Prelude.<$> serviceArn]))
+instance Property "ClusterArn" ServiceProperty where
+  type PropertyType "ClusterArn" ServiceProperty = Value Prelude.Text
+  set newValue ServiceProperty {..}
+    = ServiceProperty {clusterArn = Prelude.pure newValue, ..}
+instance Property "CrossAccountRole" ServiceProperty where
+  type PropertyType "CrossAccountRole" ServiceProperty = Value Prelude.Text
+  set newValue ServiceProperty {..}
+    = ServiceProperty {crossAccountRole = Prelude.pure newValue, ..}
+instance Property "ExternalId" ServiceProperty where
+  type PropertyType "ExternalId" ServiceProperty = Value Prelude.Text
+  set newValue ServiceProperty {..}
+    = ServiceProperty {externalId = Prelude.pure newValue, ..}
+instance Property "ServiceArn" ServiceProperty where
+  type PropertyType "ServiceArn" ServiceProperty = Value Prelude.Text
+  set newValue ServiceProperty {..}
+    = ServiceProperty {serviceArn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/ServiceProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/ServiceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/ServiceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.ServiceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ServiceProperty :: Prelude.Type
+instance ToResourceProperties ServiceProperty
+instance Prelude.Eq ServiceProperty
+instance Prelude.Show ServiceProperty
+instance JSON.ToJSON ServiceProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/StepProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/StepProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/StepProperty.hs
@@ -0,0 +1,67 @@
+module Stratosphere.ARCRegionSwitch.Plan.StepProperty (
+        module Exports, StepProperty(..), mkStepProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.ExecutionBlockConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data StepProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-step.html>
+    StepProperty {haddock_workaround_ :: (),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-step.html#cfn-arcregionswitch-plan-step-description>
+                  description :: (Prelude.Maybe (Value Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-step.html#cfn-arcregionswitch-plan-step-executionblockconfiguration>
+                  executionBlockConfiguration :: ExecutionBlockConfigurationProperty,
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-step.html#cfn-arcregionswitch-plan-step-executionblocktype>
+                  executionBlockType :: (Value Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-step.html#cfn-arcregionswitch-plan-step-name>
+                  name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkStepProperty ::
+  ExecutionBlockConfigurationProperty
+  -> Value Prelude.Text -> Value Prelude.Text -> StepProperty
+mkStepProperty executionBlockConfiguration executionBlockType name
+  = StepProperty
+      {haddock_workaround_ = (),
+       executionBlockConfiguration = executionBlockConfiguration,
+       executionBlockType = executionBlockType, name = name,
+       description = Prelude.Nothing}
+instance ToResourceProperties StepProperty where
+  toResourceProperties StepProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.Step",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ExecutionBlockConfiguration" JSON..= executionBlockConfiguration,
+                            "ExecutionBlockType" JSON..= executionBlockType,
+                            "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description]))}
+instance JSON.ToJSON StepProperty where
+  toJSON StepProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ExecutionBlockConfiguration" JSON..= executionBlockConfiguration,
+               "ExecutionBlockType" JSON..= executionBlockType,
+               "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description])))
+instance Property "Description" StepProperty where
+  type PropertyType "Description" StepProperty = Value Prelude.Text
+  set newValue StepProperty {..}
+    = StepProperty {description = Prelude.pure newValue, ..}
+instance Property "ExecutionBlockConfiguration" StepProperty where
+  type PropertyType "ExecutionBlockConfiguration" StepProperty = ExecutionBlockConfigurationProperty
+  set newValue StepProperty {..}
+    = StepProperty {executionBlockConfiguration = newValue, ..}
+instance Property "ExecutionBlockType" StepProperty where
+  type PropertyType "ExecutionBlockType" StepProperty = Value Prelude.Text
+  set newValue StepProperty {..}
+    = StepProperty {executionBlockType = newValue, ..}
+instance Property "Name" StepProperty where
+  type PropertyType "Name" StepProperty = Value Prelude.Text
+  set newValue StepProperty {..} = StepProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/StepProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/StepProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/StepProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.StepProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data StepProperty :: Prelude.Type
+instance ToResourceProperties StepProperty
+instance Prelude.Eq StepProperty
+instance Prelude.Show StepProperty
+instance JSON.ToJSON StepProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/TriggerConditionProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/TriggerConditionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/TriggerConditionProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.ARCRegionSwitch.Plan.TriggerConditionProperty (
+        TriggerConditionProperty(..), mkTriggerConditionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TriggerConditionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-triggercondition.html>
+    TriggerConditionProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-triggercondition.html#cfn-arcregionswitch-plan-triggercondition-associatedalarmname>
+                              associatedAlarmName :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-triggercondition.html#cfn-arcregionswitch-plan-triggercondition-condition>
+                              condition :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTriggerConditionProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> TriggerConditionProperty
+mkTriggerConditionProperty associatedAlarmName condition
+  = TriggerConditionProperty
+      {haddock_workaround_ = (),
+       associatedAlarmName = associatedAlarmName, condition = condition}
+instance ToResourceProperties TriggerConditionProperty where
+  toResourceProperties TriggerConditionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.TriggerCondition",
+         supportsTags = Prelude.False,
+         properties = ["AssociatedAlarmName" JSON..= associatedAlarmName,
+                       "Condition" JSON..= condition]}
+instance JSON.ToJSON TriggerConditionProperty where
+  toJSON TriggerConditionProperty {..}
+    = JSON.object
+        ["AssociatedAlarmName" JSON..= associatedAlarmName,
+         "Condition" JSON..= condition]
+instance Property "AssociatedAlarmName" TriggerConditionProperty where
+  type PropertyType "AssociatedAlarmName" TriggerConditionProperty = Value Prelude.Text
+  set newValue TriggerConditionProperty {..}
+    = TriggerConditionProperty {associatedAlarmName = newValue, ..}
+instance Property "Condition" TriggerConditionProperty where
+  type PropertyType "Condition" TriggerConditionProperty = Value Prelude.Text
+  set newValue TriggerConditionProperty {..}
+    = TriggerConditionProperty {condition = newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/TriggerConditionProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/TriggerConditionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/TriggerConditionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.TriggerConditionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TriggerConditionProperty :: Prelude.Type
+instance ToResourceProperties TriggerConditionProperty
+instance Prelude.Eq TriggerConditionProperty
+instance Prelude.Show TriggerConditionProperty
+instance JSON.ToJSON TriggerConditionProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/TriggerProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/TriggerProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/TriggerProperty.hs
@@ -0,0 +1,81 @@
+module Stratosphere.ARCRegionSwitch.Plan.TriggerProperty (
+        module Exports, TriggerProperty(..), mkTriggerProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.TriggerConditionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TriggerProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-trigger.html>
+    TriggerProperty {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-trigger.html#cfn-arcregionswitch-plan-trigger-action>
+                     action :: (Value Prelude.Text),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-trigger.html#cfn-arcregionswitch-plan-trigger-conditions>
+                     conditions :: [TriggerConditionProperty],
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-trigger.html#cfn-arcregionswitch-plan-trigger-description>
+                     description :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-trigger.html#cfn-arcregionswitch-plan-trigger-mindelayminutesbetweenexecutions>
+                     minDelayMinutesBetweenExecutions :: (Value Prelude.Double),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-trigger.html#cfn-arcregionswitch-plan-trigger-targetregion>
+                     targetRegion :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTriggerProperty ::
+  Value Prelude.Text
+  -> [TriggerConditionProperty]
+     -> Value Prelude.Double -> Value Prelude.Text -> TriggerProperty
+mkTriggerProperty
+  action
+  conditions
+  minDelayMinutesBetweenExecutions
+  targetRegion
+  = TriggerProperty
+      {haddock_workaround_ = (), action = action,
+       conditions = conditions,
+       minDelayMinutesBetweenExecutions = minDelayMinutesBetweenExecutions,
+       targetRegion = targetRegion, description = Prelude.Nothing}
+instance ToResourceProperties TriggerProperty where
+  toResourceProperties TriggerProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.Trigger",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Action" JSON..= action, "Conditions" JSON..= conditions,
+                            "MinDelayMinutesBetweenExecutions"
+                              JSON..= minDelayMinutesBetweenExecutions,
+                            "TargetRegion" JSON..= targetRegion]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description]))}
+instance JSON.ToJSON TriggerProperty where
+  toJSON TriggerProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Action" JSON..= action, "Conditions" JSON..= conditions,
+               "MinDelayMinutesBetweenExecutions"
+                 JSON..= minDelayMinutesBetweenExecutions,
+               "TargetRegion" JSON..= targetRegion]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description])))
+instance Property "Action" TriggerProperty where
+  type PropertyType "Action" TriggerProperty = Value Prelude.Text
+  set newValue TriggerProperty {..}
+    = TriggerProperty {action = newValue, ..}
+instance Property "Conditions" TriggerProperty where
+  type PropertyType "Conditions" TriggerProperty = [TriggerConditionProperty]
+  set newValue TriggerProperty {..}
+    = TriggerProperty {conditions = newValue, ..}
+instance Property "Description" TriggerProperty where
+  type PropertyType "Description" TriggerProperty = Value Prelude.Text
+  set newValue TriggerProperty {..}
+    = TriggerProperty {description = Prelude.pure newValue, ..}
+instance Property "MinDelayMinutesBetweenExecutions" TriggerProperty where
+  type PropertyType "MinDelayMinutesBetweenExecutions" TriggerProperty = Value Prelude.Double
+  set newValue TriggerProperty {..}
+    = TriggerProperty {minDelayMinutesBetweenExecutions = newValue, ..}
+instance Property "TargetRegion" TriggerProperty where
+  type PropertyType "TargetRegion" TriggerProperty = Value Prelude.Text
+  set newValue TriggerProperty {..}
+    = TriggerProperty {targetRegion = newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/TriggerProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/TriggerProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/TriggerProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.TriggerProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TriggerProperty :: Prelude.Type
+instance ToResourceProperties TriggerProperty
+instance Prelude.Eq TriggerProperty
+instance Prelude.Show TriggerProperty
+instance JSON.ToJSON TriggerProperty
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/WorkflowProperty.hs b/gen/Stratosphere/ARCRegionSwitch/Plan/WorkflowProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/WorkflowProperty.hs
@@ -0,0 +1,70 @@
+module Stratosphere.ARCRegionSwitch.Plan.WorkflowProperty (
+        module Exports, WorkflowProperty(..), mkWorkflowProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ARCRegionSwitch.Plan.StepProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data WorkflowProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-workflow.html>
+    WorkflowProperty {haddock_workaround_ :: (),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-workflow.html#cfn-arcregionswitch-plan-workflow-steps>
+                      steps :: (Prelude.Maybe [StepProperty]),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-workflow.html#cfn-arcregionswitch-plan-workflow-workflowdescription>
+                      workflowDescription :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-workflow.html#cfn-arcregionswitch-plan-workflow-workflowtargetaction>
+                      workflowTargetAction :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arcregionswitch-plan-workflow.html#cfn-arcregionswitch-plan-workflow-workflowtargetregion>
+                      workflowTargetRegion :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkWorkflowProperty :: Value Prelude.Text -> WorkflowProperty
+mkWorkflowProperty workflowTargetAction
+  = WorkflowProperty
+      {haddock_workaround_ = (),
+       workflowTargetAction = workflowTargetAction,
+       steps = Prelude.Nothing, workflowDescription = Prelude.Nothing,
+       workflowTargetRegion = Prelude.Nothing}
+instance ToResourceProperties WorkflowProperty where
+  toResourceProperties WorkflowProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCRegionSwitch::Plan.Workflow",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["WorkflowTargetAction" JSON..= workflowTargetAction]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Steps" Prelude.<$> steps,
+                               (JSON..=) "WorkflowDescription" Prelude.<$> workflowDescription,
+                               (JSON..=) "WorkflowTargetRegion"
+                                 Prelude.<$> workflowTargetRegion]))}
+instance JSON.ToJSON WorkflowProperty where
+  toJSON WorkflowProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["WorkflowTargetAction" JSON..= workflowTargetAction]
+              (Prelude.catMaybes
+                 [(JSON..=) "Steps" Prelude.<$> steps,
+                  (JSON..=) "WorkflowDescription" Prelude.<$> workflowDescription,
+                  (JSON..=) "WorkflowTargetRegion"
+                    Prelude.<$> workflowTargetRegion])))
+instance Property "Steps" WorkflowProperty where
+  type PropertyType "Steps" WorkflowProperty = [StepProperty]
+  set newValue WorkflowProperty {..}
+    = WorkflowProperty {steps = Prelude.pure newValue, ..}
+instance Property "WorkflowDescription" WorkflowProperty where
+  type PropertyType "WorkflowDescription" WorkflowProperty = Value Prelude.Text
+  set newValue WorkflowProperty {..}
+    = WorkflowProperty
+        {workflowDescription = Prelude.pure newValue, ..}
+instance Property "WorkflowTargetAction" WorkflowProperty where
+  type PropertyType "WorkflowTargetAction" WorkflowProperty = Value Prelude.Text
+  set newValue WorkflowProperty {..}
+    = WorkflowProperty {workflowTargetAction = newValue, ..}
+instance Property "WorkflowTargetRegion" WorkflowProperty where
+  type PropertyType "WorkflowTargetRegion" WorkflowProperty = Value Prelude.Text
+  set newValue WorkflowProperty {..}
+    = WorkflowProperty
+        {workflowTargetRegion = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCRegionSwitch/Plan/WorkflowProperty.hs-boot b/gen/Stratosphere/ARCRegionSwitch/Plan/WorkflowProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCRegionSwitch/Plan/WorkflowProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCRegionSwitch.Plan.WorkflowProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data WorkflowProperty :: Prelude.Type
+instance ToResourceProperties WorkflowProperty
+instance Prelude.Eq WorkflowProperty
+instance Prelude.Show WorkflowProperty
+instance JSON.ToJSON WorkflowProperty
diff --git a/stratosphere-arcregionswitch.cabal b/stratosphere-arcregionswitch.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-arcregionswitch.cabal
@@ -0,0 +1,100 @@
+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-arcregionswitch
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS ARCRegionSwitch.
+description:    Integration into stratosphere to generate resources and properties for AWS ARCRegionSwitch
+category:       AWS, Cloud, ARCRegionSwitch
+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.ARCRegionSwitch.Plan
+      Stratosphere.ARCRegionSwitch.Plan.ArcRoutingControlConfigurationProperty
+      Stratosphere.ARCRegionSwitch.Plan.AsgProperty
+      Stratosphere.ARCRegionSwitch.Plan.AssociatedAlarmProperty
+      Stratosphere.ARCRegionSwitch.Plan.CustomActionLambdaConfigurationProperty
+      Stratosphere.ARCRegionSwitch.Plan.Ec2AsgCapacityIncreaseConfigurationProperty
+      Stratosphere.ARCRegionSwitch.Plan.Ec2UngracefulProperty
+      Stratosphere.ARCRegionSwitch.Plan.EcsCapacityIncreaseConfigurationProperty
+      Stratosphere.ARCRegionSwitch.Plan.EcsUngracefulProperty
+      Stratosphere.ARCRegionSwitch.Plan.EksClusterProperty
+      Stratosphere.ARCRegionSwitch.Plan.EksResourceScalingConfigurationProperty
+      Stratosphere.ARCRegionSwitch.Plan.EksResourceScalingUngracefulProperty
+      Stratosphere.ARCRegionSwitch.Plan.ExecutionApprovalConfigurationProperty
+      Stratosphere.ARCRegionSwitch.Plan.ExecutionBlockConfigurationProperty
+      Stratosphere.ARCRegionSwitch.Plan.GlobalAuroraConfigurationProperty
+      Stratosphere.ARCRegionSwitch.Plan.GlobalAuroraUngracefulProperty
+      Stratosphere.ARCRegionSwitch.Plan.KubernetesResourceTypeProperty
+      Stratosphere.ARCRegionSwitch.Plan.LambdasProperty
+      Stratosphere.ARCRegionSwitch.Plan.LambdaUngracefulProperty
+      Stratosphere.ARCRegionSwitch.Plan.ParallelExecutionBlockConfigurationProperty
+      Stratosphere.ARCRegionSwitch.Plan.RegionSwitchPlanConfigurationProperty
+      Stratosphere.ARCRegionSwitch.Plan.Route53HealthCheckConfigurationProperty
+      Stratosphere.ARCRegionSwitch.Plan.Route53ResourceRecordSetProperty
+      Stratosphere.ARCRegionSwitch.Plan.ServiceProperty
+      Stratosphere.ARCRegionSwitch.Plan.StepProperty
+      Stratosphere.ARCRegionSwitch.Plan.TriggerConditionProperty
+      Stratosphere.ARCRegionSwitch.Plan.TriggerProperty
+      Stratosphere.ARCRegionSwitch.Plan.WorkflowProperty
+  other-modules:
+      Paths_stratosphere_arcregionswitch
+  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
