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/ARCZonalShift/AutoshiftObserverNotificationStatus.hs b/gen/Stratosphere/ARCZonalShift/AutoshiftObserverNotificationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCZonalShift/AutoshiftObserverNotificationStatus.hs
@@ -0,0 +1,33 @@
+module Stratosphere.ARCZonalShift.AutoshiftObserverNotificationStatus (
+        AutoshiftObserverNotificationStatus(..),
+        mkAutoshiftObserverNotificationStatus
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AutoshiftObserverNotificationStatus
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arczonalshift-autoshiftobservernotificationstatus.html>
+    AutoshiftObserverNotificationStatus {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arczonalshift-autoshiftobservernotificationstatus.html#cfn-arczonalshift-autoshiftobservernotificationstatus-status>
+                                         status :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAutoshiftObserverNotificationStatus ::
+  Value Prelude.Text -> AutoshiftObserverNotificationStatus
+mkAutoshiftObserverNotificationStatus status
+  = AutoshiftObserverNotificationStatus
+      {haddock_workaround_ = (), status = status}
+instance ToResourceProperties AutoshiftObserverNotificationStatus where
+  toResourceProperties AutoshiftObserverNotificationStatus {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCZonalShift::AutoshiftObserverNotificationStatus",
+         supportsTags = Prelude.False,
+         properties = ["Status" JSON..= status]}
+instance JSON.ToJSON AutoshiftObserverNotificationStatus where
+  toJSON AutoshiftObserverNotificationStatus {..}
+    = JSON.object ["Status" JSON..= status]
+instance Property "Status" AutoshiftObserverNotificationStatus where
+  type PropertyType "Status" AutoshiftObserverNotificationStatus = Value Prelude.Text
+  set newValue AutoshiftObserverNotificationStatus {..}
+    = AutoshiftObserverNotificationStatus {status = newValue, ..}
diff --git a/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration.hs b/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration.hs
@@ -0,0 +1,65 @@
+module Stratosphere.ARCZonalShift.ZonalAutoshiftConfiguration (
+        module Exports, ZonalAutoshiftConfiguration(..),
+        mkZonalAutoshiftConfiguration
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ARCZonalShift.ZonalAutoshiftConfiguration.PracticeRunConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ZonalAutoshiftConfiguration
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arczonalshift-zonalautoshiftconfiguration.html>
+    ZonalAutoshiftConfiguration {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arczonalshift-zonalautoshiftconfiguration.html#cfn-arczonalshift-zonalautoshiftconfiguration-practicerunconfiguration>
+                                 practiceRunConfiguration :: (Prelude.Maybe PracticeRunConfigurationProperty),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arczonalshift-zonalautoshiftconfiguration.html#cfn-arczonalshift-zonalautoshiftconfiguration-resourceidentifier>
+                                 resourceIdentifier :: (Value Prelude.Text),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-arczonalshift-zonalautoshiftconfiguration.html#cfn-arczonalshift-zonalautoshiftconfiguration-zonalautoshiftstatus>
+                                 zonalAutoshiftStatus :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkZonalAutoshiftConfiguration ::
+  Value Prelude.Text -> ZonalAutoshiftConfiguration
+mkZonalAutoshiftConfiguration resourceIdentifier
+  = ZonalAutoshiftConfiguration
+      {haddock_workaround_ = (), resourceIdentifier = resourceIdentifier,
+       practiceRunConfiguration = Prelude.Nothing,
+       zonalAutoshiftStatus = Prelude.Nothing}
+instance ToResourceProperties ZonalAutoshiftConfiguration where
+  toResourceProperties ZonalAutoshiftConfiguration {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCZonalShift::ZonalAutoshiftConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ResourceIdentifier" JSON..= resourceIdentifier]
+                           (Prelude.catMaybes
+                              [(JSON..=) "PracticeRunConfiguration"
+                                 Prelude.<$> practiceRunConfiguration,
+                               (JSON..=) "ZonalAutoshiftStatus"
+                                 Prelude.<$> zonalAutoshiftStatus]))}
+instance JSON.ToJSON ZonalAutoshiftConfiguration where
+  toJSON ZonalAutoshiftConfiguration {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ResourceIdentifier" JSON..= resourceIdentifier]
+              (Prelude.catMaybes
+                 [(JSON..=) "PracticeRunConfiguration"
+                    Prelude.<$> practiceRunConfiguration,
+                  (JSON..=) "ZonalAutoshiftStatus"
+                    Prelude.<$> zonalAutoshiftStatus])))
+instance Property "PracticeRunConfiguration" ZonalAutoshiftConfiguration where
+  type PropertyType "PracticeRunConfiguration" ZonalAutoshiftConfiguration = PracticeRunConfigurationProperty
+  set newValue ZonalAutoshiftConfiguration {..}
+    = ZonalAutoshiftConfiguration
+        {practiceRunConfiguration = Prelude.pure newValue, ..}
+instance Property "ResourceIdentifier" ZonalAutoshiftConfiguration where
+  type PropertyType "ResourceIdentifier" ZonalAutoshiftConfiguration = Value Prelude.Text
+  set newValue ZonalAutoshiftConfiguration {..}
+    = ZonalAutoshiftConfiguration {resourceIdentifier = newValue, ..}
+instance Property "ZonalAutoshiftStatus" ZonalAutoshiftConfiguration where
+  type PropertyType "ZonalAutoshiftStatus" ZonalAutoshiftConfiguration = Value Prelude.Text
+  set newValue ZonalAutoshiftConfiguration {..}
+    = ZonalAutoshiftConfiguration
+        {zonalAutoshiftStatus = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration/ControlConditionProperty.hs b/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration/ControlConditionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration/ControlConditionProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.ARCZonalShift.ZonalAutoshiftConfiguration.ControlConditionProperty (
+        ControlConditionProperty(..), mkControlConditionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ControlConditionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arczonalshift-zonalautoshiftconfiguration-controlcondition.html>
+    ControlConditionProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arczonalshift-zonalautoshiftconfiguration-controlcondition.html#cfn-arczonalshift-zonalautoshiftconfiguration-controlcondition-alarmidentifier>
+                              alarmIdentifier :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arczonalshift-zonalautoshiftconfiguration-controlcondition.html#cfn-arczonalshift-zonalautoshiftconfiguration-controlcondition-type>
+                              type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkControlConditionProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> ControlConditionProperty
+mkControlConditionProperty alarmIdentifier type'
+  = ControlConditionProperty
+      {haddock_workaround_ = (), alarmIdentifier = alarmIdentifier,
+       type' = type'}
+instance ToResourceProperties ControlConditionProperty where
+  toResourceProperties ControlConditionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCZonalShift::ZonalAutoshiftConfiguration.ControlCondition",
+         supportsTags = Prelude.False,
+         properties = ["AlarmIdentifier" JSON..= alarmIdentifier,
+                       "Type" JSON..= type']}
+instance JSON.ToJSON ControlConditionProperty where
+  toJSON ControlConditionProperty {..}
+    = JSON.object
+        ["AlarmIdentifier" JSON..= alarmIdentifier, "Type" JSON..= type']
+instance Property "AlarmIdentifier" ControlConditionProperty where
+  type PropertyType "AlarmIdentifier" ControlConditionProperty = Value Prelude.Text
+  set newValue ControlConditionProperty {..}
+    = ControlConditionProperty {alarmIdentifier = newValue, ..}
+instance Property "Type" ControlConditionProperty where
+  type PropertyType "Type" ControlConditionProperty = Value Prelude.Text
+  set newValue ControlConditionProperty {..}
+    = ControlConditionProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration/ControlConditionProperty.hs-boot b/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration/ControlConditionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration/ControlConditionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCZonalShift.ZonalAutoshiftConfiguration.ControlConditionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ControlConditionProperty :: Prelude.Type
+instance ToResourceProperties ControlConditionProperty
+instance Prelude.Eq ControlConditionProperty
+instance Prelude.Show ControlConditionProperty
+instance JSON.ToJSON ControlConditionProperty
diff --git a/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration/PracticeRunConfigurationProperty.hs b/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration/PracticeRunConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration/PracticeRunConfigurationProperty.hs
@@ -0,0 +1,70 @@
+module Stratosphere.ARCZonalShift.ZonalAutoshiftConfiguration.PracticeRunConfigurationProperty (
+        module Exports, PracticeRunConfigurationProperty(..),
+        mkPracticeRunConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ARCZonalShift.ZonalAutoshiftConfiguration.ControlConditionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PracticeRunConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arczonalshift-zonalautoshiftconfiguration-practicerunconfiguration.html>
+    PracticeRunConfigurationProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arczonalshift-zonalautoshiftconfiguration-practicerunconfiguration.html#cfn-arczonalshift-zonalautoshiftconfiguration-practicerunconfiguration-blockeddates>
+                                      blockedDates :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arczonalshift-zonalautoshiftconfiguration-practicerunconfiguration.html#cfn-arczonalshift-zonalautoshiftconfiguration-practicerunconfiguration-blockedwindows>
+                                      blockedWindows :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arczonalshift-zonalautoshiftconfiguration-practicerunconfiguration.html#cfn-arczonalshift-zonalautoshiftconfiguration-practicerunconfiguration-blockingalarms>
+                                      blockingAlarms :: (Prelude.Maybe [ControlConditionProperty]),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-arczonalshift-zonalautoshiftconfiguration-practicerunconfiguration.html#cfn-arczonalshift-zonalautoshiftconfiguration-practicerunconfiguration-outcomealarms>
+                                      outcomeAlarms :: [ControlConditionProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPracticeRunConfigurationProperty ::
+  [ControlConditionProperty] -> PracticeRunConfigurationProperty
+mkPracticeRunConfigurationProperty outcomeAlarms
+  = PracticeRunConfigurationProperty
+      {haddock_workaround_ = (), outcomeAlarms = outcomeAlarms,
+       blockedDates = Prelude.Nothing, blockedWindows = Prelude.Nothing,
+       blockingAlarms = Prelude.Nothing}
+instance ToResourceProperties PracticeRunConfigurationProperty where
+  toResourceProperties PracticeRunConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ARCZonalShift::ZonalAutoshiftConfiguration.PracticeRunConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["OutcomeAlarms" JSON..= outcomeAlarms]
+                           (Prelude.catMaybes
+                              [(JSON..=) "BlockedDates" Prelude.<$> blockedDates,
+                               (JSON..=) "BlockedWindows" Prelude.<$> blockedWindows,
+                               (JSON..=) "BlockingAlarms" Prelude.<$> blockingAlarms]))}
+instance JSON.ToJSON PracticeRunConfigurationProperty where
+  toJSON PracticeRunConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["OutcomeAlarms" JSON..= outcomeAlarms]
+              (Prelude.catMaybes
+                 [(JSON..=) "BlockedDates" Prelude.<$> blockedDates,
+                  (JSON..=) "BlockedWindows" Prelude.<$> blockedWindows,
+                  (JSON..=) "BlockingAlarms" Prelude.<$> blockingAlarms])))
+instance Property "BlockedDates" PracticeRunConfigurationProperty where
+  type PropertyType "BlockedDates" PracticeRunConfigurationProperty = ValueList Prelude.Text
+  set newValue PracticeRunConfigurationProperty {..}
+    = PracticeRunConfigurationProperty
+        {blockedDates = Prelude.pure newValue, ..}
+instance Property "BlockedWindows" PracticeRunConfigurationProperty where
+  type PropertyType "BlockedWindows" PracticeRunConfigurationProperty = ValueList Prelude.Text
+  set newValue PracticeRunConfigurationProperty {..}
+    = PracticeRunConfigurationProperty
+        {blockedWindows = Prelude.pure newValue, ..}
+instance Property "BlockingAlarms" PracticeRunConfigurationProperty where
+  type PropertyType "BlockingAlarms" PracticeRunConfigurationProperty = [ControlConditionProperty]
+  set newValue PracticeRunConfigurationProperty {..}
+    = PracticeRunConfigurationProperty
+        {blockingAlarms = Prelude.pure newValue, ..}
+instance Property "OutcomeAlarms" PracticeRunConfigurationProperty where
+  type PropertyType "OutcomeAlarms" PracticeRunConfigurationProperty = [ControlConditionProperty]
+  set newValue PracticeRunConfigurationProperty {..}
+    = PracticeRunConfigurationProperty {outcomeAlarms = newValue, ..}
diff --git a/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration/PracticeRunConfigurationProperty.hs-boot b/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration/PracticeRunConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ARCZonalShift/ZonalAutoshiftConfiguration/PracticeRunConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ARCZonalShift.ZonalAutoshiftConfiguration.PracticeRunConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PracticeRunConfigurationProperty :: Prelude.Type
+instance ToResourceProperties PracticeRunConfigurationProperty
+instance Prelude.Eq PracticeRunConfigurationProperty
+instance Prelude.Show PracticeRunConfigurationProperty
+instance JSON.ToJSON PracticeRunConfigurationProperty
diff --git a/stratosphere-arczonalshift.cabal b/stratosphere-arczonalshift.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-arczonalshift.cabal
@@ -0,0 +1,76 @@
+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-arczonalshift
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS ARCZonalShift.
+description:    Integration into stratosphere to generate resources and properties for AWS ARCZonalShift
+category:       AWS, Cloud, ARCZonalShift
+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.ARCZonalShift.AutoshiftObserverNotificationStatus
+      Stratosphere.ARCZonalShift.ZonalAutoshiftConfiguration
+      Stratosphere.ARCZonalShift.ZonalAutoshiftConfiguration.ControlConditionProperty
+      Stratosphere.ARCZonalShift.ZonalAutoshiftConfiguration.PracticeRunConfigurationProperty
+  other-modules:
+      Paths_stratosphere_arczonalshift
+  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
